{"version":3,"file":"shadcn-components.cjs","sources":["../../../../../src/lib/shadcn-components.ts"],"sourcesContent":["/**\r\n * shadcn-ui Component Registration\r\n * \r\n * Registers all shadcn-ui base components with the ComponentRegistry.\r\n * Each component includes a propsSchema for validation.\r\n * \r\n * Requirements: 6.1, 6.3\r\n */\r\n\r\nimport React from 'react';\r\nimport { ComponentRegistry, defaultRegistry } from './component-registry';\r\nimport type { PropSchema } from './component-registry';\r\n\r\n// Import shadcn-ui components\r\nimport { Button } from '../components/ui/button';\r\nimport { Input } from '../components/ui/input';\r\nimport {\r\n  Card,\r\n  CardHeader,\r\n  CardTitle,\r\n  CardDescription,\r\n  CardContent,\r\n  CardFooter,\r\n} from '../components/ui/card';\r\nimport {\r\n  Table,\r\n  TableHeader,\r\n  TableBody,\r\n  TableFooter,\r\n  TableHead,\r\n  TableRow,\r\n  TableCell,\r\n  TableCaption,\r\n} from '../components/ui/table';\r\nimport { Label } from '../components/ui/label';\r\n\r\n/**\r\n * Common prop schemas used across multiple components\r\n */\r\nconst commonProps: Record<string, PropSchema> = {\r\n  className: {\r\n    type: 'string',\r\n    required: false,\r\n    description: 'Additional CSS class names',\r\n  },\r\n  children: {\r\n    type: 'object',\r\n    required: false,\r\n    description: 'Child elements',\r\n  },\r\n};\r\n\r\n/**\r\n * Register all shadcn-ui components to a registry\r\n */\r\nexport function registerShadcnComponents(registry: ComponentRegistry = defaultRegistry): void {\r\n  // Button component\r\n  registry.register({\r\n    name: 'Button',\r\n    component: Button,\r\n    category: 'input',\r\n    description: 'A clickable button component with multiple variants',\r\n    propsSchema: {\r\n      ...commonProps,\r\n      variant: {\r\n        type: 'string',\r\n        required: false,\r\n        description: 'Button style variant',\r\n        enum: ['default', 'destructive', 'outline', 'secondary', 'ghost', 'link'],\r\n      },\r\n      size: {\r\n        type: 'string',\r\n        required: false,\r\n        description: 'Button size',\r\n        enum: ['default', 'sm', 'lg', 'icon'],\r\n      },\r\n      disabled: {\r\n        type: 'boolean',\r\n        required: false,\r\n        description: 'Whether the button is disabled',\r\n      },\r\n      asChild: {\r\n        type: 'boolean',\r\n        required: false,\r\n        description: 'Render as child element',\r\n      },\r\n      onClick: {\r\n        type: 'function',\r\n        required: false,\r\n        description: 'Click event handler',\r\n      },\r\n    },\r\n  });\r\n\r\n  // Input component\r\n  registry.register({\r\n    name: 'Input',\r\n    component: Input,\r\n    category: 'input',\r\n    description: 'A text input field component',\r\n    propsSchema: {\r\n      ...commonProps,\r\n      type: {\r\n        type: 'string',\r\n        required: false,\r\n        description: 'Input type',\r\n        enum: ['text', 'password', 'email', 'number', 'tel', 'url', 'search'],\r\n      },\r\n      placeholder: {\r\n        type: 'string',\r\n        required: false,\r\n        description: 'Placeholder text',\r\n      },\r\n      value: {\r\n        type: 'string',\r\n        required: false,\r\n        description: 'Input value',\r\n      },\r\n      disabled: {\r\n        type: 'boolean',\r\n        required: false,\r\n        description: 'Whether the input is disabled',\r\n      },\r\n      onChange: {\r\n        type: 'function',\r\n        required: false,\r\n        description: 'Change event handler',\r\n      },\r\n    },\r\n  });\r\n\r\n  // Card components\r\n  registry.register({\r\n    name: 'Card',\r\n    component: Card,\r\n    category: 'layout',\r\n    description: 'A card container component',\r\n    propsSchema: commonProps,\r\n  });\r\n\r\n  registry.register({\r\n    name: 'CardHeader',\r\n    component: CardHeader,\r\n    category: 'layout',\r\n    description: 'Card header section',\r\n    propsSchema: commonProps,\r\n  });\r\n\r\n  registry.register({\r\n    name: 'CardTitle',\r\n    component: CardTitle,\r\n    category: 'layout',\r\n    description: 'Card title element',\r\n    propsSchema: commonProps,\r\n  });\r\n\r\n  registry.register({\r\n    name: 'CardDescription',\r\n    component: CardDescription,\r\n    category: 'layout',\r\n    description: 'Card description text',\r\n    propsSchema: commonProps,\r\n  });\r\n\r\n  registry.register({\r\n    name: 'CardContent',\r\n    component: CardContent,\r\n    category: 'layout',\r\n    description: 'Card content section',\r\n    propsSchema: commonProps,\r\n  });\r\n\r\n  registry.register({\r\n    name: 'CardFooter',\r\n    component: CardFooter,\r\n    category: 'layout',\r\n    description: 'Card footer section',\r\n    propsSchema: commonProps,\r\n  });\r\n\r\n  // Table components\r\n  registry.register({\r\n    name: 'Table',\r\n    component: Table,\r\n    category: 'display',\r\n    description: 'A table component for displaying tabular data',\r\n    propsSchema: commonProps,\r\n  });\r\n\r\n  registry.register({\r\n    name: 'TableHeader',\r\n    component: TableHeader,\r\n    category: 'display',\r\n    description: 'Table header section',\r\n    propsSchema: commonProps,\r\n  });\r\n\r\n  registry.register({\r\n    name: 'TableBody',\r\n    component: TableBody,\r\n    category: 'display',\r\n    description: 'Table body section',\r\n    propsSchema: commonProps,\r\n  });\r\n\r\n  registry.register({\r\n    name: 'TableFooter',\r\n    component: TableFooter,\r\n    category: 'display',\r\n    description: 'Table footer section',\r\n    propsSchema: commonProps,\r\n  });\r\n\r\n  registry.register({\r\n    name: 'TableHead',\r\n    component: TableHead,\r\n    category: 'display',\r\n    description: 'Table header cell',\r\n    propsSchema: commonProps,\r\n  });\r\n\r\n  registry.register({\r\n    name: 'TableRow',\r\n    component: TableRow,\r\n    category: 'display',\r\n    description: 'Table row element',\r\n    propsSchema: commonProps,\r\n  });\r\n\r\n  registry.register({\r\n    name: 'TableCell',\r\n    component: TableCell,\r\n    category: 'display',\r\n    description: 'Table data cell',\r\n    propsSchema: commonProps,\r\n  });\r\n\r\n  registry.register({\r\n    name: 'TableCaption',\r\n    component: TableCaption,\r\n    category: 'display',\r\n    description: 'Table caption element',\r\n    propsSchema: commonProps,\r\n  });\r\n\r\n  // Label component\r\n  registry.register({\r\n    name: 'Label',\r\n    component: Label,\r\n    category: 'input',\r\n    description: 'A label component for form elements',\r\n    propsSchema: {\r\n      ...commonProps,\r\n      htmlFor: {\r\n        type: 'string',\r\n        required: false,\r\n        description: 'ID of the associated form element',\r\n      },\r\n    },\r\n  });\r\n\r\n  // Text component (simple span wrapper)\r\n  registry.register({\r\n    name: 'Text',\r\n    component: (props: Record<string, unknown>) => {\r\n      const { children, className, ...rest } = props;\r\n      return React.createElement('span', { className, ...rest }, children as React.ReactNode);\r\n    },\r\n    category: 'display',\r\n    description: 'A simple text display component',\r\n    propsSchema: commonProps,\r\n  });\r\n\r\n  // Container component (simple div wrapper)\r\n  registry.register({\r\n    name: 'Container',\r\n    component: (props: Record<string, unknown>) => {\r\n      const { children, className, ...rest } = props;\r\n      return React.createElement('div', { className, ...rest }, children as React.ReactNode);\r\n    },\r\n    category: 'layout',\r\n    description: 'A container component for layout purposes',\r\n    propsSchema: commonProps,\r\n  });\r\n}\r\n\r\n/**\r\n * Initialize the default registry with shadcn-ui components\r\n */\r\nexport function initializeDefaultRegistry(): ComponentRegistry {\r\n  registerShadcnComponents(defaultRegistry);\r\n  return defaultRegistry;\r\n}\r\n\r\n/**\r\n * Get a list of all registered component names\r\n */\r\nexport function getRegisteredComponentNames(registry: ComponentRegistry = defaultRegistry): string[] {\r\n  return registry.getAll().map(def => def.name);\r\n}\r\n"],"names":["commonProps","registerShadcnComponents","registry","defaultRegistry","Button","Input","Card","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","Table","TableHeader","TableBody","TableFooter","TableHead","TableRow","TableCell","TableCaption","Label","props","children","className","rest","React","initializeDefaultRegistry"],"mappings":"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"}