{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "icon-button",
  "title": "Icon button",
  "description": "Square icon-only action with a required accessible name.",
  "dependencies": [
    "lucide-react@^1.33.0"
  ],
  "registryDependencies": [
    "https://components.exe.xyz/r/button.json",
    "https://components.exe.xyz/r/utils.json"
  ],
  "files": [
    {
      "path": "src/components/ui/icon-button.tsx",
      "content": "import * as React from \"react\"\nimport type { LucideIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\n\ntype IconButtonProps = Omit<\n  React.ComponentProps<typeof Button>,\n  \"children\" | \"size\" | \"variant\" | \"asChild\"\n> & {\n  icon: LucideIcon\n  size?: \"medium\" | \"small\"\n  variant?: \"secondary\" | \"ghost\"\n  \"aria-label\": string\n}\n\nfunction IconButton({\n  icon: Icon,\n  size = \"medium\",\n  variant = \"secondary\",\n  className,\n  \"aria-label\": ariaLabel,\n  ...props\n}: IconButtonProps) {\n  return (\n    <Button\n      type=\"button\"\n      variant={variant}\n      size={size === \"small\" ? \"icon\" : \"icon-lg\"}\n      aria-label={ariaLabel}\n      data-slot=\"icon-button\"\n      data-size={size}\n      className={cn(\n        \"rounded-[2px]\",\n        size === \"medium\"\n          ? \"size-9 [&_svg:not([class*='size-'])]:size-5\"\n          : \"size-8 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      <Icon />\n    </Button>\n  )\n}\n\nexport { IconButton }\nexport type { IconButtonProps }\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}