{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "vadivam-icon",
  "type": "registry:component",
  "title": "VadivamIcon",
  "description": "Shared base component for Vadivam icons: size, color, strokeWidth, absoluteStrokeWidth, and title props on a 24px outline SVG.",
  "author": "Praveen Juge <https://vadivam.praveenjuge.com>",
  "docs": "Props and usage: https://vadivam.praveenjuge.com/docs/shadcn",
  "files": [
    {
      "path": "registry/icons/vadivam-icon.tsx",
      "content": "import type * as React from \"react\";\n\nexport type VadivamIconProps = React.ComponentProps<\"svg\"> & {\n  size?: number | string;\n  color?: string;\n  strokeWidth?: number | string;\n  absoluteStrokeWidth?: boolean;\n  title?: string;\n};\n\nexport function VadivamIcon({\n  name,\n  size = 24,\n  color = \"currentColor\",\n  strokeWidth = 2,\n  absoluteStrokeWidth = false,\n  title,\n  className,\n  children,\n  ...props\n}: VadivamIconProps & { name: string }) {\n  const numericSize = Number(size);\n  const stroke =\n    absoluteStrokeWidth && numericSize > 0\n      ? (Number(strokeWidth) * 24) / numericSize\n      : strokeWidth;\n  const labelled =\n    Boolean(title) ||\n    Object.keys(props).some((key) => key.startsWith(\"aria-\") || key === \"role\");\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width={size}\n      height={size}\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      stroke={color}\n      strokeWidth={stroke}\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      className={[\"vadivam\", `vadivam-${name}`, className].filter(Boolean).join(\" \")}\n      aria-hidden={labelled ? undefined : true}\n      role={title ? \"img\" : undefined}\n      {...props}\n    >\n      {title ? <title>{title}</title> : null}\n      {children}\n    </svg>\n  );\n}\n",
      "type": "registry:component",
      "target": "@components/icons/vadivam-icon.tsx"
    }
  ]
}
