{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "icon-box",
  "title": "Icon Box",
  "type": "registry:ui",
  "files": [
    {
      "path": "packages/registry-react/components/icon-box/icon-box.tsx",
      "content": "import * as React from 'react'\nimport type { LucideIcon } from 'lucide-react'\nimport { cn } from '@/lib/utils'\n\nexport interface IconBoxProps extends React.HTMLAttributes<HTMLDivElement> {\n  /** Lucide icon component rendered inside the box. */\n  icon: LucideIcon\n  variant?: 'primary' | 'muted' | 'custom'\n  shape?: 'rounded' | 'circle'\n  size?: 'sm' | 'md' | 'lg'\n  iconClassName?: string\n}\n\nconst variantClasses: Record<string, string> = {\n  primary: 'bg-primary/10 text-primary',\n  muted: 'bg-muted text-muted-foreground',\n  custom: '',\n}\n\nconst shapeClasses: Record<string, string> = {\n  rounded: 'rounded-lg',\n  circle: 'rounded-full',\n}\n\nconst sizeClasses: Record<string, string> = {\n  sm: 'p-1.5',\n  md: 'p-2',\n  lg: 'p-3',\n}\n\nconst iconSizes: Record<string, string> = {\n  sm: 'size-3.5',\n  md: 'size-4',\n  lg: 'size-6',\n}\n\nconst IconBox = React.forwardRef<HTMLDivElement, IconBoxProps>(\n  ({ className, icon: Icon, variant = 'primary', shape = 'rounded', size = 'md', iconClassName, ...props }, ref) => (\n    <div\n      ref={ref}\n      className={cn('shrink-0', variantClasses[variant], shapeClasses[shape], sizeClasses[size], className)}\n      {...props}\n    >\n      <Icon className={cn(iconSizes[size], iconClassName)} />\n    </div>\n  ),\n)\nIconBox.displayName = 'IconBox'\n\nexport { IconBox }\n",
      "type": "registry:ui",
      "target": "~/components/ui/icon-box/icon-box.tsx"
    },
    {
      "path": "packages/registry-react/components/icon-box/index.ts",
      "content": "export { IconBox, type IconBoxProps } from './icon-box'\n",
      "type": "registry:ui",
      "target": "~/components/ui/icon-box/index.ts"
    }
  ],
  "dependencies": [
    "lucide-react"
  ],
  "devDependencies": [],
  "registryDependencies": [],
  "description": "Small framed icon used inside cards, list items, and stat tiles. Three variants (`primary`, `muted`, `custom`), two shapes (`rounded`, `circle`), and three sizes. Drop a Lucide icon in, get a polished badge.",
  "categories": [
    "data-display"
  ]
}