{
  "$schema": "https://shadcn-vue.com/schema/registry-item.json",
  "name": "icon-box",
  "title": "Icon Box",
  "type": "registry:ui",
  "files": [
    {
      "path": "packages/registry-vue/components/icon-box/IconBox.vue",
      "content": "<script setup lang=\"ts\">\nimport type { Component } from 'vue'\nimport { cn } from '@/lib/utils'\n\nconst props = withDefaults(\n  defineProps<{\n    icon: Component\n    variant?: 'primary' | 'muted' | 'custom'\n    shape?: 'rounded' | 'circle'\n    size?: 'sm' | 'md' | 'lg'\n    class?: string\n    iconClass?: string\n  }>(),\n  {\n    variant: 'primary',\n    shape: 'rounded',\n    size: 'md',\n  },\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</script>\n\n<template>\n  <div :class=\"cn('shrink-0', variantClasses[variant], shapeClasses[shape], sizeClasses[size], props.class)\">\n    <component :is=\"icon\" :class=\"cn(iconSizes[size], props.iconClass)\" />\n  </div>\n</template>\n",
      "type": "registry:ui",
      "target": "~/app/components/ui/icon-box/IconBox.vue"
    },
    {
      "path": "packages/registry-vue/components/icon-box/index.ts",
      "content": "export { default as IconBox } from './IconBox.vue'\n",
      "type": "registry:ui",
      "target": "~/app/components/ui/icon-box/index.ts"
    }
  ],
  "dependencies": [],
  "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"
  ]
}