mta-design-system 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../mcp/src/index.ts","../../../mcp/src/server.ts","../../../shared/registry.ts","../../../mcp/src/resources/components.ts","../../../mcp/src/resources/themes.ts","../../../mcp/src/resources/examples.ts"],"sourcesContent":["#!/usr/bin/env node\n\n/**\n * MTA Design System MCP Server Entry Point\n * Run with: npx mta-mcp\n */\n\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport { server } from './server.js';\n\nasync function main() {\n const transport = new StdioServerTransport();\n await server.connect(transport);\n console.error('MTA Design System MCP Server running on stdio');\n}\n\nmain().catch((error) => {\n console.error('Fatal error in main():', error);\n process.exit(1);\n});\n","/**\n * MTA Design System MCP Server\n * Provides component documentation, themes, and code generation for AI agents\n */\n\nimport { Server } from '@modelcontextprotocol/sdk/server/index.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport {\n CallToolRequestSchema,\n ListResourcesRequestSchema,\n ListToolsRequestSchema,\n ReadResourceRequestSchema,\n} from '@modelcontextprotocol/sdk/types.js';\n\nimport { componentsResource, getComponentResource, searchComponentsResource, getComponentsByCategoryResource } from './resources/components.js';\nimport { themesResource, getThemeResource, getThemeVariablesCss } from './resources/themes.js';\nimport { examplesResource, getExamplesResource, generateCodeSnippet, generateFullComponentCode } from './resources/examples.js';\nimport { componentRegistry, getComponentByName, searchComponents } from '../../shared/registry.js';\n\n// Create server instance\nconst server = new Server(\n {\n name: 'mta-design-system',\n version: '0.1.0',\n },\n {\n capabilities: {\n resources: {},\n tools: {},\n },\n }\n);\n\n// List available resources\nserver.setRequestHandler(ListResourcesRequestSchema, async () => {\n return {\n resources: [\n // Main resources\n {\n uri: 'mta://components',\n name: 'MTA Design System Components',\n description: 'Complete list of all components',\n mimeType: 'application/json',\n },\n {\n uri: 'mta://themes',\n name: 'MTA Design System Themes',\n description: 'All available brand themes',\n mimeType: 'application/json',\n },\n {\n uri: 'mta://examples',\n name: 'MTA Design System Examples',\n description: 'Usage examples for all components',\n mimeType: 'application/json',\n },\n // Individual themes\n ...['Default', 'Owlexa', 'BPJS'].map(name => ({\n uri: `mta://themes/${name.toLowerCase()}`,\n name: `${name} Theme`,\n description: `${name} brand theme tokens`,\n mimeType: 'application/json',\n })),\n ],\n };\n});\n\n// Read specific resource\nserver.setRequestHandler(ReadResourceRequestSchema, async (request) => {\n const { uri } = request.params;\n\n // Components resource\n if (uri === 'mta://components') {\n return { contents: [componentsResource] };\n }\n\n // Individual component\n if (uri.startsWith('mta://components/')) {\n const name = uri.replace('mta://components/', '');\n const resource = getComponentResource(name);\n if (!resource) {\n throw new Error(`Component not found: ${name}`);\n }\n return { contents: [resource] };\n }\n\n // Themes resource\n if (uri === 'mta://themes') {\n return { contents: [themesResource] };\n }\n\n // Individual theme\n if (uri.startsWith('mta://themes/')) {\n const name = uri.replace('mta://themes/', '');\n const resource = getThemeResource(name);\n if (!resource) {\n throw new Error(`Theme not found: ${name}`);\n }\n return { contents: [resource] };\n }\n\n // Examples resource\n if (uri === 'mta://examples') {\n return { contents: [examplesResource] };\n }\n\n // Individual component examples\n if (uri.startsWith('mta://examples/')) {\n const name = uri.replace('mta://examples/', '');\n const resource = getExamplesResource(name);\n if (!resource) {\n throw new Error(`Examples not found for: ${name}`);\n }\n return { contents: [resource] };\n }\n\n throw new Error(`Unknown resource: ${uri}`);\n});\n\n// List available tools\nserver.setRequestHandler(ListToolsRequestSchema, async () => {\n return {\n tools: [\n {\n name: 'search-components',\n description: 'Search for components by name, description, or props',\n inputSchema: {\n type: 'object',\n properties: {\n query: {\n type: 'string',\n description: 'Search query (component name, description, or prop name)',\n },\n },\n required: ['query'],\n },\n },\n {\n name: 'get-component-props',\n description: 'Get the TypeScript props interface for a component',\n inputSchema: {\n type: 'object',\n properties: {\n componentName: {\n type: 'string',\n description: 'Name of the component (e.g., \"Button\", \"ClaimMindButton\")',\n },\n },\n required: ['componentName'],\n },\n },\n {\n name: 'generate-code',\n description: 'Generate usage code snippet for a component',\n inputSchema: {\n type: 'object',\n properties: {\n componentName: {\n type: 'string',\n description: 'Name of the component',\n },\n theme: {\n type: 'string',\n enum: ['Default', 'Owlexa', 'BPJS'],\n description: 'Theme to use (for themed components)',\n },\n props: {\n type: 'object',\n description: 'Props to include in the generated code',\n },\n includeState: {\n type: 'boolean',\n description: 'Include React state hooks if applicable',\n },\n },\n required: ['componentName'],\n },\n },\n {\n name: 'get-theme-variables',\n description: 'Get CSS custom properties for a theme',\n inputSchema: {\n type: 'object',\n properties: {\n theme: {\n type: 'string',\n enum: ['Default', 'Owlexa', 'BPJS'],\n description: 'Theme name (leave empty for all themes)',\n },\n },\n },\n },\n ],\n };\n});\n\n// Handle tool calls\nserver.setRequestHandler(CallToolRequestSchema, async (request) => {\n const { name, arguments: args } = request.params;\n\n switch (name) {\n case 'search-components': {\n const { query } = args as { query: string };\n const results = searchComponents(query);\n\n return {\n content: [\n {\n type: 'text',\n text: JSON.stringify({\n query,\n total: results.length,\n components: results.map(c => ({\n name: c.name,\n category: c.category,\n description: c.description,\n themable: c.themable,\n })),\n }, null, 2),\n },\n ],\n };\n }\n\n case 'get-component-props': {\n const { componentName } = args as { componentName: string };\n const component = getComponentByName(componentName);\n\n if (!component) {\n return {\n content: [\n {\n type: 'text',\n text: `Component \"${componentName}\" not found. Available components: ${componentRegistry.map(c => c.name).join(', ')}`,\n },\n ],\n isError: true,\n };\n }\n\n // Generate TypeScript interface\n const propsInterface = component.props.map(p => {\n const required = p.required ? '' : '?';\n const defaultComment = p.default ? ` // default: ${p.default}` : '';\n return ` ${p.name}${required}: ${p.type};${defaultComment}`;\n }).join('\\n');\n\n return {\n content: [\n {\n type: 'text',\n text: `interface ${component.name}Props {\\n${propsInterface}\\n}\\n\\n// ${component.description}`,\n },\n ],\n };\n }\n\n case 'generate-code': {\n const { componentName, theme, props, includeState } = args as {\n componentName: string;\n theme?: string;\n props?: Record<string, unknown>;\n includeState?: boolean;\n };\n\n const component = getComponentByName(componentName);\n\n if (!component) {\n return {\n content: [\n {\n type: 'text',\n text: `Component \"${componentName}\" not found.`,\n },\n ],\n isError: true,\n };\n }\n\n const code = generateFullComponentCode(componentName, {\n theme,\n props,\n includeState,\n });\n\n return {\n content: [\n {\n type: 'text',\n text: code,\n },\n ],\n };\n }\n\n case 'get-theme-variables': {\n const { theme } = args as { theme?: string };\n const css = getThemeVariablesCss(theme);\n\n return {\n content: [\n {\n type: 'text',\n text: css || 'Theme not found.',\n },\n ],\n };\n }\n\n default:\n throw new Error(`Unknown tool: ${name}`);\n }\n});\n\nexport { server };\n","/**\n * Component Registry for MTA Design System\n * Contains metadata, props, and examples for all components\n */\n\nexport interface ComponentProp {\n name: string;\n type: string;\n required: boolean;\n default?: string;\n description: string;\n}\n\nexport interface ComponentExample {\n title: string;\n code: string;\n description?: string;\n}\n\nexport interface ComponentInfo {\n name: string;\n category: 'ui' | 'claimmind' | 'molecules' | 'pages';\n description: string;\n sourcePath: string;\n props: ComponentProp[];\n examples: ComponentExample[];\n dependencies?: string[];\n themable?: boolean;\n}\n\nexport const componentRegistry: ComponentInfo[] = [\n // ==================== BASE UI COMPONENTS ====================\n {\n name: 'Button',\n category: 'ui',\n description: 'A versatile button component with multiple variants and sizes.',\n sourcePath: 'src/components/ui/button.tsx',\n props: [\n { name: 'variant', type: \"'default' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link'\", required: false, default: \"'default'\", description: 'Button visual style' },\n { name: 'size', type: \"'default' | 'sm' | 'lg' | 'icon' | 'icon-sm' | 'icon-lg'\", required: false, default: \"'default'\", description: 'Button size' },\n { name: 'asChild', type: 'boolean', required: false, default: 'false', description: 'Render as child element' },\n { name: 'className', type: 'string', required: false, description: 'Additional CSS classes' },\n { name: 'disabled', type: 'boolean', required: false, description: 'Disable the button' },\n ],\n examples: [\n {\n title: 'Basic Button',\n code: `import { Button } from 'mta-design-system';\n\n<Button>Click me</Button>`,\n },\n {\n title: 'Button Variants',\n code: `<Button variant=\"default\">Default</Button>\n<Button variant=\"destructive\">Destructive</Button>\n<Button variant=\"outline\">Outline</Button>\n<Button variant=\"secondary\">Secondary</Button>\n<Button variant=\"ghost\">Ghost</Button>\n<Button variant=\"link\">Link</Button>`,\n },\n {\n title: 'Button Sizes',\n code: `<Button size=\"sm\">Small</Button>\n<Button size=\"default\">Default</Button>\n<Button size=\"lg\">Large</Button>`,\n },\n ],\n dependencies: ['@radix-ui/react-slot', 'class-variance-authority'],\n themable: false,\n },\n {\n name: 'Alert',\n category: 'ui',\n description: 'Displays a callout for user attention.',\n sourcePath: 'src/components/ui/alert.tsx',\n props: [\n { name: 'variant', type: \"'default' | 'destructive'\", required: false, default: \"'default'\", description: 'Alert visual style' },\n { name: 'className', type: 'string', required: false, description: 'Additional CSS classes' },\n ],\n examples: [\n {\n title: 'Basic Alert',\n code: `import { Alert, AlertTitle, AlertDescription } from 'mta-design-system';\n\n<Alert>\n <AlertTitle>Heads up!</AlertTitle>\n <AlertDescription>You can add components to your app using the cli.</AlertDescription>\n</Alert>`,\n },\n {\n title: 'Destructive Alert',\n code: `<Alert variant=\"destructive\">\n <AlertTitle>Error</AlertTitle>\n <AlertDescription>Your session has expired. Please log in again.</AlertDescription>\n</Alert>`,\n },\n ],\n dependencies: ['class-variance-authority'],\n themable: false,\n },\n {\n name: 'Card',\n category: 'ui',\n description: 'Displays a card with header, content, and footer sections.',\n sourcePath: 'src/components/ui/card.tsx',\n props: [\n { name: 'className', type: 'string', required: false, description: 'Additional CSS classes' },\n ],\n examples: [\n {\n title: 'Basic Card',\n code: `import { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter } from 'mta-design-system';\n\n<Card>\n <CardHeader>\n <CardTitle>Card Title</CardTitle>\n <CardDescription>Card Description</CardDescription>\n </CardHeader>\n <CardContent>\n <p>Card Content</p>\n </CardContent>\n <CardFooter>\n <p>Card Footer</p>\n </CardFooter>\n</Card>`,\n },\n ],\n dependencies: [],\n themable: false,\n },\n {\n name: 'Input',\n category: 'ui',\n description: 'A text input component for forms.',\n sourcePath: 'src/components/ui/input.tsx',\n props: [\n { name: 'type', type: 'string', required: false, default: \"'text'\", description: 'Input type' },\n { name: 'placeholder', type: 'string', required: false, description: 'Placeholder text' },\n { name: 'className', type: 'string', required: false, description: 'Additional CSS classes' },\n { name: 'disabled', type: 'boolean', required: false, description: 'Disable the input' },\n ],\n examples: [\n {\n title: 'Basic Input',\n code: `import { Input } from 'mta-design-system';\n\n<Input placeholder=\"Enter your name\" />`,\n },\n ],\n dependencies: [],\n themable: false,\n },\n {\n name: 'Label',\n category: 'ui',\n description: 'A label component for form fields.',\n sourcePath: 'src/components/ui/label.tsx',\n props: [\n { name: 'htmlFor', type: 'string', required: false, description: 'ID of the associated form element' },\n { name: 'className', type: 'string', required: false, description: 'Additional CSS classes' },\n ],\n examples: [\n {\n title: 'Basic Label',\n code: `import { Label } from 'mta-design-system';\n\n<Label htmlFor=\"email\">Email</Label>`,\n },\n ],\n dependencies: ['@radix-ui/react-label'],\n themable: false,\n },\n {\n name: 'Dialog',\n category: 'ui',\n description: 'A modal dialog component.',\n sourcePath: 'src/components/ui/dialog.tsx',\n props: [\n { name: 'open', type: 'boolean', required: false, description: 'Controlled open state' },\n { name: 'onOpenChange', type: '(open: boolean) => void', required: false, description: 'Callback when open state changes' },\n ],\n examples: [\n {\n title: 'Basic Dialog',\n code: `import { Dialog, DialogTrigger, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter } from 'mta-design-system';\n\n<Dialog>\n <DialogTrigger>Open Dialog</DialogTrigger>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Are you sure?</DialogTitle>\n <DialogDescription>This action cannot be undone.</DialogDescription>\n </DialogHeader>\n <DialogFooter>\n <Button>Confirm</Button>\n </DialogFooter>\n </DialogContent>\n</Dialog>`,\n },\n ],\n dependencies: ['@radix-ui/react-dialog'],\n themable: false,\n },\n {\n name: 'Select',\n category: 'ui',\n description: 'A dropdown select component.',\n sourcePath: 'src/components/ui/select.tsx',\n props: [\n { name: 'value', type: 'string', required: false, description: 'Selected value' },\n { name: 'onValueChange', type: '(value: string) => void', required: false, description: 'Callback when value changes' },\n { name: 'disabled', type: 'boolean', required: false, description: 'Disable the select' },\n ],\n examples: [\n {\n title: 'Basic Select',\n code: `import { Select, SelectTrigger, SelectValue, SelectContent, SelectItem } from 'mta-design-system';\n\n<Select>\n <SelectTrigger>\n <SelectValue placeholder=\"Select an option\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"option1\">Option 1</SelectItem>\n <SelectItem value=\"option2\">Option 2</SelectItem>\n </SelectContent>\n</Select>`,\n },\n ],\n dependencies: ['@radix-ui/react-select'],\n themable: false,\n },\n {\n name: 'Switch',\n category: 'ui',\n description: 'A toggle switch component.',\n sourcePath: 'src/components/ui/switch.tsx',\n props: [\n { name: 'checked', type: 'boolean', required: false, description: 'Controlled checked state' },\n { name: 'onCheckedChange', type: '(checked: boolean) => void', required: false, description: 'Callback when checked state changes' },\n { name: 'disabled', type: 'boolean', required: false, description: 'Disable the switch' },\n ],\n examples: [\n {\n title: 'Basic Switch',\n code: `import { Switch } from 'mta-design-system';\n\n<Switch />`,\n },\n ],\n dependencies: ['@radix-ui/react-switch'],\n themable: false,\n },\n {\n name: 'Tooltip',\n category: 'ui',\n description: 'A tooltip component for displaying additional information.',\n sourcePath: 'src/components/ui/tooltip.tsx',\n props: [\n { name: 'content', type: 'ReactNode', required: false, description: 'Tooltip content' },\n { name: 'delayDuration', type: 'number', required: false, default: '400', description: 'Delay before showing tooltip' },\n ],\n examples: [\n {\n title: 'Basic Tooltip',\n code: `import { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider } from 'mta-design-system';\n\n<TooltipProvider>\n <Tooltip>\n <TooltipTrigger>Hover me</TooltipTrigger>\n <TooltipContent>Tooltip content</TooltipContent>\n </Tooltip>\n</TooltipProvider>`,\n },\n ],\n dependencies: ['@radix-ui/react-tooltip'],\n themable: false,\n },\n {\n name: 'Table',\n category: 'ui',\n description: 'A table component for displaying data.',\n sourcePath: 'src/components/ui/table.tsx',\n props: [\n { name: 'className', type: 'string', required: false, description: 'Additional CSS classes' },\n ],\n examples: [\n {\n title: 'Basic Table',\n code: `import { Table, TableHeader, TableHead, TableBody, TableRow, TableCell } from 'mta-design-system';\n\n<Table>\n <TableHeader>\n <TableRow>\n <TableHead>Name</TableHead>\n <TableHead>Email</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n <TableRow>\n <TableCell>John Doe</TableCell>\n <TableCell>john@example.com</TableCell>\n </TableRow>\n </TableBody>\n</Table>`,\n },\n ],\n dependencies: [],\n themable: false,\n },\n {\n name: 'Progress',\n category: 'ui',\n description: 'A progress bar component.',\n sourcePath: 'src/components/ui/progress.tsx',\n props: [\n { name: 'value', type: 'number', required: false, description: 'Progress value (0-100)' },\n { name: 'max', type: 'number', required: false, default: '100', description: 'Maximum value' },\n ],\n examples: [\n {\n title: 'Basic Progress',\n code: `import { Progress } from 'mta-design-system';\n\n<Progress value={60} />`,\n },\n ],\n dependencies: ['@radix-ui/react-progress'],\n themable: false,\n },\n {\n name: 'Spinner',\n category: 'ui',\n description: 'A loading spinner component.',\n sourcePath: 'src/components/ui/spinner.tsx',\n props: [\n { name: 'size', type: \"'sm' | 'default' | 'lg'\", required: false, default: \"'default'\", description: 'Spinner size' },\n { name: 'className', type: 'string', required: false, description: 'Additional CSS classes' },\n ],\n examples: [\n {\n title: 'Basic Spinner',\n code: `import { Spinner } from 'mta-design-system';\n\n<Spinner />`,\n },\n ],\n dependencies: [],\n themable: false,\n },\n {\n name: 'Calendar',\n category: 'ui',\n description: 'A calendar component for date selection.',\n sourcePath: 'src/components/ui/calendar.tsx',\n props: [\n { name: 'selected', type: 'Date', required: false, description: 'Selected date' },\n { name: 'onSelect', type: '(date: Date | undefined) => void', required: false, description: 'Callback when date is selected' },\n { name: 'mode', type: \"'single' | 'multiple' | 'range'\", required: false, default: \"'single'\", description: 'Selection mode' },\n ],\n examples: [\n {\n title: 'Basic Calendar',\n code: `import { Calendar } from 'mta-design-system';\nimport 'mta-design-system/styles.css';\n\n<Calendar />`,\n },\n ],\n dependencies: ['react-day-picker', 'date-fns'],\n themable: false,\n },\n {\n name: 'Popover',\n category: 'ui',\n description: 'A popover component for displaying floating content.',\n sourcePath: 'src/components/ui/popover.tsx',\n props: [\n { name: 'open', type: 'boolean', required: false, description: 'Controlled open state' },\n { name: 'onOpenChange', type: '(open: boolean) => void', required: false, description: 'Callback when open state changes' },\n ],\n examples: [\n {\n title: 'Basic Popover',\n code: `import { Popover, PopoverTrigger, PopoverContent } from 'mta-design-system';\n\n<Popover>\n <PopoverTrigger>Open</PopoverTrigger>\n <PopoverContent>Popover content</PopoverContent>\n</Popover>`,\n },\n ],\n dependencies: ['@radix-ui/react-popover'],\n themable: false,\n },\n {\n name: 'Command',\n category: 'ui',\n description: 'A command menu component for search and actions.',\n sourcePath: 'src/components/ui/command.tsx',\n props: [\n { name: 'value', type: 'string', required: false, description: 'Selected value' },\n { name: 'onValueChange', type: '(value: string) => void', required: false, description: 'Callback when value changes' },\n { name: 'placeholder', type: 'string', required: false, description: 'Search placeholder' },\n ],\n examples: [\n {\n title: 'Basic Command',\n code: `import { Command, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem } from 'mta-design-system';\n\n<Command>\n <CommandInput placeholder=\"Search...\" />\n <CommandList>\n <CommandEmpty>No results found.</CommandEmpty>\n <CommandGroup heading=\"Suggestions\">\n <CommandItem>Option 1</CommandItem>\n <CommandItem>Option 2</CommandItem>\n </CommandGroup>\n </CommandList>\n</Command>`,\n },\n ],\n dependencies: ['cmdk'],\n themable: false,\n },\n\n // ==================== CLAIMMIND THEMED COMPONENTS ====================\n {\n name: 'ClaimMindButton',\n category: 'claimmind',\n description: 'A themed button component with brand colors (Default, Owlexa, BPJS themes).',\n sourcePath: 'src/stories/claimmind/Button.tsx',\n props: [\n { name: 'theme', type: \"'Default' | 'Owlexa' | 'BPJS'\", required: false, default: \"'Default'\", description: 'Brand theme' },\n { name: 'variant', type: \"'default' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link'\", required: false, default: \"'default'\", description: 'Button visual style' },\n { name: 'size', type: \"'default' | 'sm' | 'lg' | 'icon'\", required: false, default: \"'default'\", description: 'Button size' },\n { name: 'label', type: 'string', required: false, description: 'Button label text' },\n { name: 'loading', type: 'boolean', required: false, default: 'false', description: 'Show loading spinner' },\n { name: 'leftIconName', type: 'LucideIconName', required: false, description: 'Icon name for left side' },\n { name: 'rightIconName', type: 'LucideIconName', required: false, description: 'Icon name for right side' },\n ],\n examples: [\n {\n title: 'Basic ClaimMindButton',\n code: `import { ClaimMindButton } from 'mta-design-system';\nimport 'mta-design-system/styles.css';\n\n<ClaimMindButton theme=\"Default\">Click me</ClaimMindButton>`,\n },\n {\n title: 'Themed Buttons',\n code: `<ClaimMindButton theme=\"Default\">ClaimMind</ClaimMindButton>\n<ClaimMindButton theme=\"Owlexa\">Owlexa</ClaimMindButton>\n<ClaimMindButton theme=\"BPJS\">BPJS</ClaimMindButton>`,\n },\n {\n title: 'Loading State',\n code: `<ClaimMindButton loading>Processing...</ClaimMindButton>`,\n },\n {\n title: 'With Icons',\n code: `import { ClaimMindButton } from 'mta-design-system';\n\n<ClaimMindButton leftIconName=\"Mail\">Send Email</ClaimMindButton>\n<ClaimMindButton rightIconName=\"ChevronRight\">Continue</ClaimMindButton>`,\n },\n ],\n dependencies: ['lucide-react'],\n themable: true,\n },\n {\n name: 'ClaimMindInput',\n category: 'claimmind',\n description: 'A themed input component with brand colors.',\n sourcePath: 'src/stories/claimmind/Input.tsx',\n props: [\n { name: 'theme', type: \"'Default' | 'Owlexa' | 'BPJS'\", required: false, default: \"'Default'\", description: 'Brand theme' },\n { name: 'type', type: 'string', required: false, default: \"'text'\", description: 'Input type' },\n { name: 'placeholder', type: 'string', required: false, description: 'Placeholder text' },\n { name: 'className', type: 'string', required: false, description: 'Additional CSS classes' },\n ],\n examples: [\n {\n title: 'Basic ClaimMindInput',\n code: `import { ClaimMindInput } from 'mta-design-system';\nimport 'mta-design-system/styles.css';\n\n<ClaimMindInput theme=\"Default\" placeholder=\"Enter text...\" />`,\n },\n ],\n dependencies: [],\n themable: true,\n },\n {\n name: 'ClaimMindCard',\n category: 'claimmind',\n description: 'A themed card component with optional top border accent.',\n sourcePath: 'src/stories/claimmind/Card.tsx',\n props: [\n { name: 'theme', type: \"'Default' | 'Owlexa' | 'BPJS'\", required: false, default: \"'Default'\", description: 'Brand theme' },\n { name: 'showTopBorder', type: 'boolean', required: false, default: 'false', description: 'Show colored top border' },\n { name: 'className', type: 'string', required: false, description: 'Additional CSS classes' },\n ],\n examples: [\n {\n title: 'Basic ClaimMindCard',\n code: `import { ClaimMindCard, CardHeader, CardTitle, CardContent } from 'mta-design-system';\nimport 'mta-design-system/styles.css';\n\n<ClaimMindCard theme=\"Owlexa\" showTopBorder>\n <CardHeader>\n <CardTitle>Card Title</CardTitle>\n </CardHeader>\n <CardContent>\n <p>Card content goes here</p>\n </CardContent>\n</ClaimMindCard>`,\n },\n ],\n dependencies: [],\n themable: true,\n },\n {\n name: 'ClaimMindAlert',\n category: 'claimmind',\n description: 'A themed alert component with brand colors.',\n sourcePath: 'src/stories/claimmind/Alert.tsx',\n props: [\n { name: 'theme', type: \"'Default' | 'Owlexa' | 'BPJS'\", required: false, default: \"'Default'\", description: 'Brand theme' },\n { name: 'variant', type: \"'info' | 'success' | 'warning' | 'error'\", required: false, default: \"'info'\", description: 'Alert type' },\n { name: 'title', type: 'string', required: false, description: 'Alert title' },\n { name: 'description', type: 'string', required: false, description: 'Alert description' },\n ],\n examples: [\n {\n title: 'ClaimMindAlert Variants',\n code: `import { ClaimMindAlert } from 'mta-design-system';\nimport 'mta-design-system/styles.css';\n\n<ClaimMindAlert theme=\"Default\" variant=\"success\" title=\"Success!\" description=\"Operation completed.\" />\n<ClaimMindAlert theme=\"Owlexa\" variant=\"error\" title=\"Error\" description=\"Something went wrong.\" />`,\n },\n ],\n dependencies: ['lucide-react'],\n themable: true,\n },\n {\n name: 'ClaimMindSpinner',\n category: 'claimmind',\n description: 'A themed loading spinner component.',\n sourcePath: 'src/stories/claimmind/Spinner.tsx',\n props: [\n { name: 'theme', type: \"'Default' | 'Owlexa' | 'BPJS'\", required: false, default: \"'Default'\", description: 'Brand theme' },\n { name: 'size', type: \"'sm' | 'default' | 'lg'\", required: false, default: \"'default'\", description: 'Spinner size' },\n { name: 'className', type: 'string', required: false, description: 'Additional CSS classes' },\n ],\n examples: [\n {\n title: 'ClaimMindSpinner',\n code: `import { ClaimMindSpinner } from 'mta-design-system';\nimport 'mta-design-system/styles.css';\n\n<ClaimMindSpinner theme=\"BPJS\" size=\"lg\" />`,\n },\n ],\n dependencies: [],\n themable: true,\n },\n {\n name: 'ClaimMindSelect',\n category: 'claimmind',\n description: 'A themed select dropdown component.',\n sourcePath: 'src/stories/claimmind/Select.tsx',\n props: [\n { name: 'theme', type: \"'Default' | 'Owlexa' | 'BPJS'\", required: false, default: \"'Default'\", description: 'Brand theme' },\n { name: 'placeholder', type: 'string', required: false, description: 'Placeholder text' },\n { name: 'options', type: 'Array<{ value: string; label: string }>', required: true, description: 'Select options' },\n { name: 'value', type: 'string', required: false, description: 'Selected value' },\n { name: 'onValueChange', type: '(value: string) => void', required: false, description: 'Value change callback' },\n ],\n examples: [\n {\n title: 'ClaimMindSelect',\n code: `import { ClaimMindSelect } from 'mta-design-system';\nimport 'mta-design-system/styles.css';\n\nconst options = [\n { value: 'option1', label: 'Option 1' },\n { value: 'option2', label: 'Option 2' },\n];\n\n<ClaimMindSelect\n theme=\"Default\"\n options={options}\n placeholder=\"Select an option\"\n/>`,\n },\n ],\n dependencies: ['@radix-ui/react-select'],\n themable: true,\n },\n {\n name: 'ClaimMindCombobox',\n category: 'claimmind',\n description: 'A themed combobox component with search functionality.',\n sourcePath: 'src/stories/claimmind/Combobox.tsx',\n props: [\n { name: 'theme', type: \"'Default' | 'Owlexa' | 'BPJS'\", required: false, default: \"'Default'\", description: 'Brand theme' },\n { name: 'placeholder', type: 'string', required: false, description: 'Search placeholder' },\n { name: 'options', type: 'Array<{ value: string; label: string }>', required: true, description: 'Combobox options' },\n { name: 'value', type: 'string', required: false, description: 'Selected value' },\n { name: 'onValueChange', type: '(value: string) => void', required: false, description: 'Value change callback' },\n ],\n examples: [\n {\n title: 'ClaimMindCombobox',\n code: `import { ClaimMindCombobox } from 'mta-design-system';\nimport 'mta-design-system/styles.css';\n\nconst options = [\n { value: 'apple', label: 'Apple' },\n { value: 'banana', label: 'Banana' },\n];\n\n<ClaimMindCombobox\n theme=\"Owlexa\"\n options={options}\n placeholder=\"Search fruits...\"\n/>`,\n },\n ],\n dependencies: ['cmdk', '@radix-ui/react-popover'],\n themable: true,\n },\n {\n name: 'ClaimMindDatePicker',\n category: 'claimmind',\n description: 'A themed date picker component.',\n sourcePath: 'src/stories/claimmind/DatePicker.tsx',\n props: [\n { name: 'theme', type: \"'Default' | 'Owlexa' | 'BPJS'\", required: false, default: \"'Default'\", description: 'Brand theme' },\n { name: 'placeholder', type: 'string', required: false, description: 'Placeholder text' },\n { name: 'value', type: 'Date', required: false, description: 'Selected date' },\n { name: 'onChange', type: '(date: Date | undefined) => void', required: false, description: 'Date change callback' },\n ],\n examples: [\n {\n title: 'ClaimMindDatePicker',\n code: `import { ClaimMindDatePicker } from 'mta-design-system';\nimport 'mta-design-system/styles.css';\n\n<ClaimMindDatePicker theme=\"Default\" placeholder=\"Pick a date\" />`,\n },\n ],\n dependencies: ['react-day-picker', 'date-fns', '@radix-ui/react-popover'],\n themable: true,\n },\n {\n name: 'ClaimMindTable',\n category: 'claimmind',\n description: 'A themed table component for data display.',\n sourcePath: 'src/stories/claimmind/Table.tsx',\n props: [\n { name: 'theme', type: \"'Default' | 'Owlexa' | 'BPJS'\", required: false, default: \"'Default'\", description: 'Brand theme' },\n { name: 'className', type: 'string', required: false, description: 'Additional CSS classes' },\n ],\n examples: [\n {\n title: 'ClaimMindTable',\n code: `import { ClaimMindTable, TableHeader, TableHead, TableBody, TableRow, TableCell } from 'mta-design-system';\nimport 'mta-design-system/styles.css';\n\n<ClaimMindTable theme=\"BPJS\">\n <TableHeader>\n <TableRow>\n <TableHead>Name</TableHead>\n <TableHead>Status</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n <TableRow>\n <TableCell>John Doe</TableCell>\n <TableCell>Active</TableCell>\n </TableRow>\n </TableBody>\n</ClaimMindTable>`,\n },\n ],\n dependencies: [],\n themable: true,\n },\n\n // ==================== MOLECULES ====================\n {\n name: 'Chat',\n category: 'molecules',\n description: 'A floating chat widget component with theme support.',\n sourcePath: 'src/stories/claimmind/molecules/Chat.tsx',\n props: [\n { name: 'theme', type: \"'Default' | 'Owlexa' | 'BPJS'\", required: false, default: \"'Default'\", description: 'Brand theme' },\n { name: 'variant', type: \"'float' | 'bottom-side'\", required: false, default: \"'float'\", description: 'Chat widget position' },\n { name: 'title', type: 'string', required: false, default: \"'Chat Support'\", description: 'Chat window title' },\n { name: 'messages', type: 'ChatMessage[]', required: false, description: 'Chat messages array' },\n { name: 'onSendMessage', type: '(message: string) => void', required: false, description: 'Send message callback' },\n { name: 'isOpen', type: 'boolean', required: false, description: 'Control open state' },\n { name: 'onToggle', type: '() => void', required: false, description: 'Toggle callback' },\n { name: 'placeholder', type: 'string', required: false, description: 'Input placeholder' },\n ],\n examples: [\n {\n title: 'Chat Widget',\n code: `import { Chat } from 'mta-design-system';\nimport 'mta-design-system/styles.css';\n\nconst messages = [\n { id: '1', text: 'Hello!', sender: 'bot' as const, timestamp: new Date() },\n { id: '2', text: 'Hi there!', sender: 'user' as const, timestamp: new Date() },\n];\n\nfunction App() {\n const [isOpen, setIsOpen] = useState(false);\n\n return (\n <Chat\n theme=\"Owlexa\"\n variant=\"float\"\n messages={messages}\n isOpen={isOpen}\n onToggle={() => setIsOpen(!isOpen)}\n onSendMessage={(msg) => console.log(msg)}\n />\n );\n}`,\n },\n ],\n dependencies: ['lucide-react'],\n themable: true,\n },\n {\n name: 'DashboardCard',\n category: 'molecules',\n description: 'A themed dashboard card for displaying metrics.',\n sourcePath: 'src/stories/claimmind/molecules/DashboardCard.tsx',\n props: [\n { name: 'label', type: 'string', required: true, description: 'Card label (e.g., \"Total Claims\")' },\n { name: 'value', type: 'string | number', required: true, description: 'Value to display' },\n { name: 'iconName', type: 'LucideIconName', required: false, description: 'Icon name from lucide-react' },\n { name: 'icon', type: 'ReactNode', required: false, description: 'Custom icon element' },\n { name: 'theme', type: \"'Default' | 'Owlexa' | 'BPJS'\", required: false, default: \"'Default'\", description: 'Brand theme' },\n { name: 'colorVariant', type: \"'primary' | 'secondary' | 'tertiary' | 'success' | 'danger'\", required: false, default: \"'primary'\", description: 'Icon color variant' },\n ],\n examples: [\n {\n title: 'DashboardCard',\n code: `import { DashboardCard } from 'mta-design-system';\nimport 'mta-design-system/styles.css';\n\n<DashboardCard\n label=\"Total Claims\"\n value=\"1,234\"\n iconName=\"FileText\"\n theme=\"Default\"\n colorVariant=\"primary\"\n/>`,\n },\n ],\n dependencies: ['lucide-react'],\n themable: true,\n },\n {\n name: 'Title',\n category: 'molecules',\n description: 'A themed title component with underline accent.',\n sourcePath: 'src/stories/claimmind/molecules/Title.tsx',\n props: [\n { name: 'children', type: 'ReactNode', required: true, description: 'Title content' },\n { name: 'theme', type: \"'Default' | 'Owlexa' | 'BPJS'\", required: false, default: \"'Default'\", description: 'Brand theme' },\n { name: 'as', type: \"'h1' | 'h2' | 'h3' | 'h4'\", required: false, default: \"'h2'\", description: 'HTML heading tag' },\n { name: 'underline', type: 'boolean', required: false, default: 'true', description: 'Show underline accent' },\n { name: 'className', type: 'string', required: false, description: 'Additional CSS classes' },\n ],\n examples: [\n {\n title: 'Title Component',\n code: `import { Title } from 'mta-design-system';\nimport 'mta-design-system/styles.css';\n\n<Title theme=\"Owlexa\" as=\"h1\" underline>\n Welcome to ClaimMind\n</Title>`,\n },\n ],\n dependencies: [],\n themable: true,\n },\n {\n name: 'SyncProgress',\n category: 'molecules',\n description: 'A themed sync progress card showing synchronization status.',\n sourcePath: 'src/stories/claimmind/molecules/SyncProgress.tsx',\n props: [\n { name: 'progress', type: 'number', required: true, description: 'Progress percentage (0-100)' },\n { name: 'status', type: \"'syncing' | 'completed' | 'failed'\", required: false, default: \"'syncing'\", description: 'Sync status' },\n { name: 'theme', type: \"'Default' | 'Owlexa' | 'BPJS'\", required: false, default: \"'Default'\", description: 'Brand theme' },\n { name: 'message', type: 'string', required: false, description: 'Status message' },\n { name: 'onCancel', type: '() => void', required: false, description: 'Cancel callback' },\n ],\n examples: [\n {\n title: 'SyncProgress Card',\n code: `import { SyncProgress } from 'mta-design-system';\nimport 'mta-design-system/styles.css';\n\n<SyncProgress\n progress={65}\n status=\"syncing\"\n theme=\"BPJS\"\n message=\"Syncing data from server...\"\n onCancel={() => console.log('Cancelled')}\n/>`,\n },\n ],\n dependencies: ['lucide-react'],\n themable: true,\n },\n\n // ==================== PAGES ====================\n {\n name: 'LoginPage',\n category: 'pages',\n description: 'A complete login page template with theme support.',\n sourcePath: 'src/stories/claimmind/pages/LoginPage.tsx',\n props: [\n { name: 'theme', type: \"'Default' | 'Owlexa' | 'BPJS'\", required: false, default: \"'Default'\", description: 'Brand theme' },\n { name: 'title', type: 'string', required: false, default: \"'Login ke ClaimMind'\", description: 'Page title' },\n { name: 'description', type: 'string', required: false, description: 'Page description' },\n ],\n examples: [\n {\n title: 'LoginPage',\n code: `import { LoginPage } from 'mta-design-system';\nimport 'mta-design-system/styles.css';\n\n// In your Next.js app\nexport default function Login() {\n return (\n <LoginPage\n theme=\"Owlexa\"\n title=\"Welcome to Owlexa\"\n description=\"Enter your credentials to access your account.\"\n />\n );\n}`,\n },\n ],\n dependencies: ['lucide-react'],\n themable: true,\n },\n];\n\n// Helper functions\nexport function getComponentByName(name: string): ComponentInfo | undefined {\n return componentRegistry.find(\n (c) => c.name.toLowerCase() === name.toLowerCase() ||\n c.name.toLowerCase().replace('claimmind', '') === name.toLowerCase()\n );\n}\n\nexport function getComponentsByCategory(category: ComponentInfo['category']): ComponentInfo[] {\n return componentRegistry.filter((c) => c.category === category);\n}\n\nexport function searchComponents(query: string): ComponentInfo[] {\n const lowerQuery = query.toLowerCase();\n return componentRegistry.filter(\n (c) =>\n c.name.toLowerCase().includes(lowerQuery) ||\n c.description.toLowerCase().includes(lowerQuery) ||\n c.props.some((p) => p.name.toLowerCase().includes(lowerQuery))\n );\n}\n\nexport function getAllComponentNames(): string[] {\n return componentRegistry.map((c) => c.name);\n}\n\nexport function getCategories(): ComponentInfo['category'][] {\n return ['ui', 'claimmind', 'molecules', 'pages'];\n}\n","/**\n * MCP Resource: Components\n * Provides comprehensive component documentation for AI agents\n */\n\nimport { componentRegistry, getComponentByName, searchComponents, getComponentsByCategory, type ComponentInfo } from '../../../shared/registry.js';\n\nexport const componentsResource = {\n uri: 'mta://components',\n name: 'MTA Design System Components',\n description: 'Complete list of all components in the MTA Design System',\n mimeType: 'application/json',\n content: JSON.stringify({\n components: componentRegistry.map(c => ({\n name: c.name,\n category: c.category,\n description: c.description,\n themable: c.themable,\n dependencies: c.dependencies,\n })),\n total: componentRegistry.length,\n }, null, 2),\n};\n\nexport function getComponentResource(name: string) {\n const component = getComponentByName(name);\n\n if (!component) {\n return null;\n }\n\n return {\n uri: `mta://components/${name.toLowerCase()}`,\n name: `${component.name} Component`,\n description: component.description,\n mimeType: 'application/json',\n content: JSON.stringify(component, null, 2),\n };\n}\n\nexport function searchComponentsResource(query: string) {\n const results = searchComponents(query);\n\n return {\n uri: `mta://components?search=${encodeURIComponent(query)}`,\n name: `Search Results for \"${query}\"`,\n description: `Found ${results.length} components matching \"${query}\"`,\n mimeType: 'application/json',\n content: JSON.stringify({\n query,\n results: results.map(c => ({\n name: c.name,\n category: c.category,\n description: c.description,\n })),\n total: results.length,\n }, null, 2),\n };\n}\n\nexport function getComponentsByCategoryResource(category: ComponentInfo['category']) {\n const components = getComponentsByCategory(category);\n\n return {\n uri: `mta://components?category=${category}`,\n name: `${category.charAt(0).toUpperCase() + category.slice(1)} Components`,\n description: `All ${category} components in the MTA Design System`,\n mimeType: 'application/json',\n content: JSON.stringify({\n category,\n components,\n total: components.length,\n }, null, 2),\n };\n}\n","/**\n * MCP Resource: Themes\n * Provides theme tokens and CSS custom properties\n */\n\nexport interface ThemeTokens {\n name: string;\n primary: string;\n secondary: string;\n tertiary: string;\n success: string;\n danger: string;\n background: string;\n cssVariables: Record<string, string>;\n}\n\nexport const themes: ThemeTokens[] = [\n {\n name: 'Default',\n primary: '#0284c7',\n secondary: '#0ea5e9',\n tertiary: 'hsl(203, 97%, 77%)',\n success: '#22c55e',\n danger: '#ef4444',\n background: '#f0f9ff',\n cssVariables: {\n '--claimmind-primary': '#0284c7',\n '--claimmind-secondary': '#0ea5e9',\n '--claimmind-tertiary': 'hsl(203, 97%, 77%)',\n '--claimmind-success': '#22c55e',\n '--claimmind-danger': '#ef4444',\n '--claimmind-background': '#f0f9ff',\n },\n },\n {\n name: 'Owlexa',\n primary: '#0ea5e9',\n secondary: '#38bdf8',\n tertiary: '#7dd3fc',\n success: '#10b981',\n danger: '#f43f5e',\n background: '#f0f9ff',\n cssVariables: {\n '--owlexa-primary': '#0ea5e9',\n '--owlexa-secondary': '#38bdf8',\n '--owlexa-tertiary': '#7dd3fc',\n '--owlexa-success': '#10b981',\n '--owlexa-danger': '#f43f5e',\n '--owlexa-background': '#f0f9ff',\n },\n },\n {\n name: 'BPJS',\n primary: '#059669',\n secondary: '#10b981',\n tertiary: '#34d399',\n success: '#16a34a',\n danger: '#dc2626',\n background: '#ecfdf5',\n cssVariables: {\n '--bpjs-primary': '#059669',\n '--bpjs-secondary': '#10b981',\n '--bpjs-tertiary': '#34d399',\n '--bpjs-success': '#16a34a',\n '--bpjs-danger': '#dc2626',\n '--bpjs-background': '#ecfdf5',\n },\n },\n];\n\nexport const themesResource = {\n uri: 'mta://themes',\n name: 'MTA Design System Themes',\n description: 'All available brand themes in the MTA Design System',\n mimeType: 'application/json',\n content: JSON.stringify({\n themes: themes.map(t => ({\n name: t.name,\n primary: t.primary,\n secondary: t.secondary,\n tertiary: t.tertiary,\n success: t.success,\n danger: t.danger,\n background: t.background,\n })),\n total: themes.length,\n }, null, 2),\n};\n\nexport function getThemeResource(name: string) {\n const theme = themes.find(t => t.name.toLowerCase() === name.toLowerCase());\n\n if (!theme) {\n return null;\n }\n\n return {\n uri: `mta://themes/${name.toLowerCase()}`,\n name: `${theme.name} Theme`,\n description: `${theme.name} brand theme tokens and CSS variables`,\n mimeType: 'application/json',\n content: JSON.stringify(theme, null, 2),\n };\n}\n\nexport function getThemeVariablesCss(themeName?: string): string {\n if (themeName) {\n const theme = themes.find(t => t.name.toLowerCase() === themeName.toLowerCase());\n if (!theme) return '';\n\n return `:root {\n${Object.entries(theme.cssVariables).map(([key, value]) => ` ${key}: ${value};`).join('\\n')}\n}`;\n }\n\n // Return all themes\n return themes.map(theme => `/* ${theme.name} Theme */\n:root {\n${Object.entries(theme.cssVariables).map(([key, value]) => ` ${key}: ${value};`).join('\\n')}\n}`).join('\\n\\n');\n}\n","/**\n * MCP Resource: Examples\n * Provides usage examples for all components\n */\n\nimport { componentRegistry, getComponentByName, type ComponentInfo } from '../../../shared/registry.js';\n\nexport const examplesResource = {\n uri: 'mta://examples',\n name: 'MTA Design System Examples',\n description: 'Usage examples for all components',\n mimeType: 'application/json',\n content: JSON.stringify({\n examples: componentRegistry.map(c => ({\n name: c.name,\n category: c.category,\n examples: c.examples,\n })),\n total: componentRegistry.length,\n }, null, 2),\n};\n\nexport function getExamplesResource(componentName: string) {\n const component = getComponentByName(componentName);\n\n if (!component) {\n return null;\n }\n\n return {\n uri: `mta://examples/${componentName.toLowerCase()}`,\n name: `${component.name} Examples`,\n description: `Usage examples for ${component.name}`,\n mimeType: 'application/json',\n content: JSON.stringify({\n component: component.name,\n examples: component.examples,\n }, null, 2),\n };\n}\n\nexport function generateCodeSnippet(\n componentName: string,\n options: {\n theme?: string;\n props?: Record<string, unknown>;\n } = {}\n): string {\n const component = getComponentByName(componentName);\n\n if (!component) {\n return `// Component \"${componentName}\" not found`;\n }\n\n // Build props string\n const propsArray: string[] = [];\n\n if (component.themable && options.theme) {\n propsArray.push(`theme=\"${options.theme}\"`);\n }\n\n if (options.props) {\n for (const [key, value] of Object.entries(options.props)) {\n if (typeof value === 'string') {\n propsArray.push(`${key}=\"${value}\"`);\n } else if (typeof value === 'boolean') {\n if (value) propsArray.push(key);\n } else if (typeof value === 'number') {\n propsArray.push(`${key}={${value}}`);\n } else {\n propsArray.push(`${key}={${JSON.stringify(value)}}`);\n }\n }\n }\n\n const propsString = propsArray.length > 0 ? ' ' + propsArray.join(' ') : '';\n\n // Determine if it's a self-closing tag or has children\n const hasChildren = !['Input', 'Spinner', 'Progress', 'Switch'].includes(componentName);\n\n // Generate import\n const importStatement = `import { ${component.name} } from 'mta-design-system';\nimport 'mta-design-system/styles.css';`;\n\n // Generate component usage\n let usage: string;\n if (hasChildren) {\n usage = `<${component.name}${propsString}>\n Content here\n</${component.name}>`;\n } else {\n usage = `<${component.name}${propsString} />`;\n }\n\n return `${importStatement}\n\n// Usage\n${usage}`;\n}\n\nexport function generateFullComponentCode(\n componentName: string,\n options: {\n theme?: string;\n props?: Record<string, unknown>;\n includeState?: boolean;\n } = {}\n): string {\n const component = getComponentByName(componentName);\n\n if (!component) {\n return `// Component \"${componentName}\" not found`;\n }\n\n const snippet = generateCodeSnippet(componentName, options);\n\n // Add state hooks if needed\n if (options.includeState) {\n const stateHooks: string[] = [];\n\n if (['Select', 'ClaimMindSelect', 'Combobox', 'ClaimMindCombobox'].includes(componentName)) {\n stateHooks.push(`const [value, setValue] = useState<string>('');`);\n }\n if (['Switch', 'ClaimMindSwitch'].includes(componentName)) {\n stateHooks.push(`const [checked, setChecked] = useState<boolean>(false);`);\n }\n if (['Dialog', 'ClaimMindDialog'].includes(componentName)) {\n stateHooks.push(`const [open, setOpen] = useState<boolean>(false);`);\n }\n if (componentName === 'Chat') {\n stateHooks.push(`const [isOpen, setIsOpen] = useState<boolean>(false);`);\n stateHooks.push(`const [messages, setMessages] = useState<ChatMessage[]>([]);`);\n }\n\n if (stateHooks.length > 0) {\n const hooksSection = stateHooks.join('\\n ');\n return `import { useState } from 'react';\n${snippet.replace('// Usage', `// State\n ${hooksSection}\n\n // Usage`)}`;\n }\n }\n\n return snippet;\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,171 @@
1
+ /**
2
+ * MTA Design System - Styles
3
+ *
4
+ * Import this CSS file to get all design tokens and theme variables.
5
+ *
6
+ * Usage:
7
+ * import 'mta-design-system/styles.css';
8
+ */
9
+
10
+ @import "tailwindcss";
11
+ @import "tw-animate-css";
12
+
13
+ @custom-variant dark (&:is(.dark *));
14
+
15
+ @theme inline {
16
+ --color-background: var(--background);
17
+ --color-foreground: var(--foreground);
18
+ --font-sans: var(--font-geist-sans);
19
+ --font-mono: var(--font-geist-mono);
20
+ --color-sidebar-ring: var(--sidebar-ring);
21
+ --color-sidebar-border: var(--sidebar-border);
22
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
23
+ --color-sidebar-accent: var(--sidebar-accent);
24
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
25
+ --color-sidebar-primary: var(--sidebar-primary);
26
+ --color-sidebar-foreground: var(--sidebar-foreground);
27
+ --color-sidebar: var(--sidebar);
28
+ --color-chart-5: var(--chart-5);
29
+ --color-chart-4: var(--chart-4);
30
+ --color-chart-3: var(--chart-3);
31
+ --color-chart-2: var(--chart-2);
32
+ --color-chart-1: var(--chart-1);
33
+ --color-ring: var(--ring);
34
+ --color-input: var(--input);
35
+ --color-border: var(--border);
36
+ --color-destructive: var(--destructive);
37
+ --color-accent-foreground: var(--accent-foreground);
38
+ --color-accent: var(--accent);
39
+ --color-muted-foreground: var(--muted-foreground);
40
+ --color-muted: var(--muted);
41
+ --color-secondary-foreground: var(--secondary-foreground);
42
+ --color-secondary: var(--secondary);
43
+ --color-primary-foreground: var(--primary-foreground);
44
+ --color-primary: var(--mta-primary);
45
+ --color-mta-blue: #2167a3;
46
+ --color-mta-sky: #0ea5e9;
47
+ --color-mta-sky-dark: #0284c7;
48
+ --color-claimmind-primary: #0284c7;
49
+ --color-claimmind-secondary: #0ea5e9;
50
+ --color-claimmind-tertiary: hsl(203, 97%, 77%);
51
+ --color-claimmind-success: #22c55e;
52
+ --color-claimmind-danger: #ef4444;
53
+ --color-claimmind-background: #f0f9ff;
54
+ --font-open-sans: "Open Sans", sans-serif;
55
+ --font-openSans: var(--font-open-sans);
56
+ --color-popover-foreground: var(--popover-foreground);
57
+ --color-popover: var(--popover);
58
+ --color-card-foreground: var(--card-foreground);
59
+ --color-card: var(--card);
60
+ --radius-sm: calc(var(--radius) - 4px);
61
+ --radius-md: calc(var(--radius) - 2px);
62
+ --radius-lg: var(--radius);
63
+ --radius-xl: calc(var(--radius) + 4px);
64
+ }
65
+
66
+ :root {
67
+ --radius: 0.625rem;
68
+ --background: oklch(1 0 0);
69
+ --foreground: oklch(0.145 0 0);
70
+ --card: oklch(1 0 0);
71
+ --card-foreground: oklch(0.145 0 0);
72
+ --popover: oklch(1 0 0);
73
+ --popover-foreground: oklch(0.145 0 0);
74
+ --primary: oklch(0.205 0 0);
75
+ --primary-foreground: oklch(0.985 0 0);
76
+ --secondary: oklch(0.97 0 0);
77
+ --secondary-foreground: oklch(0.205 0 0);
78
+ --muted: oklch(0.97 0 0);
79
+ --muted-foreground: oklch(0.556 0 0);
80
+ --accent: oklch(0.97 0 0);
81
+ --accent-foreground: oklch(0.205 0 0);
82
+ --destructive: oklch(0.577 0.245 27.325);
83
+ --border: oklch(0.922 0 0);
84
+ --input: oklch(0.922 0 0);
85
+ --ring: oklch(0.708 0 0);
86
+ --chart-1: oklch(0.646 0.222 41.116);
87
+ --chart-2: oklch(0.6 0.118 184.704);
88
+ --chart-3: oklch(0.398 0.07 227.392);
89
+ --chart-4: oklch(0.828 0.189 84.429);
90
+ --chart-5: oklch(0.769 0.188 70.08);
91
+ --sidebar: oklch(0.985 0 0);
92
+ --sidebar-foreground: oklch(0.145 0 0);
93
+ --sidebar-primary: oklch(0.205 0 0);
94
+ --sidebar-primary-foreground: oklch(0.985 0 0);
95
+ --sidebar-accent: oklch(0.97 0 0);
96
+ --sidebar-accent-foreground: oklch(0.205 0 0);
97
+ --sidebar-border: oklch(0.922 0 0);
98
+ --sidebar-ring: oklch(0.708 0 0);
99
+
100
+ /* MTA Brand Colors */
101
+ --mta-primary: #2167a3;
102
+ --mta-sky: #0ea5e9;
103
+ --mta-sky-dark: #0284c7;
104
+
105
+ /* ClaimMind Theme (Default) */
106
+ --claimmind-primary: #0284c7;
107
+ --claimmind-secondary: #0ea5e9;
108
+ --claimmind-tertiary: hsl(203, 97%, 77%);
109
+ --claimmind-success: #22c55e;
110
+ --claimmind-danger: #ef4444;
111
+ --claimmind-background: #f0f9ff;
112
+
113
+ /* Owlexa Theme */
114
+ --owlexa-primary: #0ea5e9;
115
+ --owlexa-secondary: #38bdf8;
116
+ --owlexa-tertiary: #7dd3fc;
117
+ --owlexa-success: #10b981;
118
+ --owlexa-danger: #f43f5e;
119
+ --owlexa-background: #f0f9ff;
120
+
121
+ /* BPJS Theme */
122
+ --bpjs-primary: #059669;
123
+ --bpjs-secondary: #10b981;
124
+ --bpjs-tertiary: #34d399;
125
+ --bpjs-success: #16a34a;
126
+ --bpjs-danger: #dc2626;
127
+ --bpjs-background: #ecfdf5;
128
+ }
129
+
130
+ .dark {
131
+ --background: oklch(0.145 0 0);
132
+ --foreground: oklch(0.985 0 0);
133
+ --card: oklch(0.205 0 0);
134
+ --card-foreground: oklch(0.985 0 0);
135
+ --popover: oklch(0.205 0 0);
136
+ --popover-foreground: oklch(0.985 0 0);
137
+ --primary: oklch(0.922 0 0);
138
+ --primary-foreground: oklch(0.205 0 0);
139
+ --secondary: oklch(0.269 0 0);
140
+ --secondary-foreground: oklch(0.985 0 0);
141
+ --muted: oklch(0.269 0 0);
142
+ --muted-foreground: oklch(0.708 0 0);
143
+ --accent: oklch(0.269 0 0);
144
+ --accent-foreground: oklch(0.985 0 0);
145
+ --destructive: oklch(0.704 0.191 22.216);
146
+ --border: oklch(1 0 0 / 10%);
147
+ --input: oklch(1 0 0 / 15%);
148
+ --ring: oklch(0.556 0 0);
149
+ --chart-1: oklch(0.488 0.243 264.376);
150
+ --chart-2: oklch(0.696 0.17 162.48);
151
+ --chart-3: oklch(0.769 0.188 70.08);
152
+ --chart-4: oklch(0.627 0.265 303.9);
153
+ --chart-5: oklch(0.645 0.246 16.439);
154
+ --sidebar: oklch(0.205 0 0);
155
+ --sidebar-foreground: oklch(0.985 0 0);
156
+ --sidebar-primary: oklch(0.488 0.243 264.376);
157
+ --sidebar-primary-foreground: oklch(0.985 0 0);
158
+ --sidebar-accent: oklch(0.269 0 0);
159
+ --sidebar-accent-foreground: oklch(0.985 0 0);
160
+ --sidebar-border: oklch(1 0 0 / 10%);
161
+ --sidebar-ring: oklch(0.556 0 0);
162
+ }
163
+
164
+ @layer base {
165
+ * {
166
+ @apply border-border outline-ring/50;
167
+ }
168
+ body {
169
+ @apply bg-background text-foreground;
170
+ }
171
+ }
package/package.json ADDED
@@ -0,0 +1,120 @@
1
+ {
2
+ "name": "mta-design-system",
3
+ "version": "0.1.0",
4
+ "private": false,
5
+ "description": "A comprehensive React component library with multiple brand themes (ClaimMind, Owlexa, BPJS)",
6
+ "keywords": [
7
+ "react",
8
+ "components",
9
+ "design-system",
10
+ "ui",
11
+ "shadcn",
12
+ "tailwindcss",
13
+ "claimmind",
14
+ "owlexa",
15
+ "bpjs",
16
+ "mta"
17
+ ],
18
+ "author": "MTA",
19
+ "license": "MIT",
20
+ "repository": {
21
+ "type": "git",
22
+ "url": "https://github.com/mta-tech/mta-design-system.git"
23
+ },
24
+ "bugs": {
25
+ "url": "https://github.com/mta-tech/mta-design-system/issues"
26
+ },
27
+ "homepage": "https://github.com/mta-tech/mta-design-system#readme",
28
+ "type": "module",
29
+ "main": "./dist/index.js",
30
+ "module": "./dist/index.mjs",
31
+ "types": "./dist/index.d.ts",
32
+ "exports": {
33
+ ".": {
34
+ "import": {
35
+ "types": "./dist/index.d.ts",
36
+ "default": "./dist/index.mjs"
37
+ },
38
+ "require": {
39
+ "types": "./dist/index.d.ts",
40
+ "default": "./dist/index.js"
41
+ }
42
+ },
43
+ "./styles.css": "./dist/styles.css"
44
+ },
45
+ "bin": {
46
+ "mta-design-system": "./dist/cli/src/index.cjs",
47
+ "mta-ds": "./dist/cli/src/index.cjs",
48
+ "mta-mcp": "./dist/mcp/src/index.cjs"
49
+ },
50
+ "files": [
51
+ "dist",
52
+ "README.md"
53
+ ],
54
+ "scripts": {
55
+ "dev": "next dev",
56
+ "build": "next build",
57
+ "start": "next start",
58
+ "storybook": "storybook dev -p 6006",
59
+ "build-storybook": "storybook build",
60
+ "build:lib": "tsup && node scripts/build.cjs",
61
+ "build:lib:watch": "tsup --watch",
62
+ "prepublishOnly": "npm run build:lib"
63
+ },
64
+ "peerDependencies": {
65
+ "next": ">=14.0.0",
66
+ "react": ">=18.0.0",
67
+ "react-dom": ">=18.0.0"
68
+ },
69
+ "dependencies": {
70
+ "@modelcontextprotocol/sdk": "^1.0.0",
71
+ "chalk": "^4.1.2",
72
+ "commander": "^12.0.0",
73
+ "fs-extra": "^11.2.0",
74
+ "glob": "^10.3.0",
75
+ "inquirer": "^9.2.0",
76
+ "zod": "^3.22.0"
77
+ },
78
+ "devDependencies": {
79
+ "@chromatic-com/storybook": "^4.1.2",
80
+ "@radix-ui/react-dialog": "^1.1.15",
81
+ "@radix-ui/react-label": "^2.1.8",
82
+ "@radix-ui/react-popover": "^1.1.15",
83
+ "@radix-ui/react-progress": "^1.1.8",
84
+ "@radix-ui/react-select": "^2.2.6",
85
+ "@radix-ui/react-slot": "^1.2.4",
86
+ "@radix-ui/react-switch": "^1.2.6",
87
+ "@radix-ui/react-tooltip": "^1.2.8",
88
+ "@storybook/addon-a11y": "^10.0.2",
89
+ "@storybook/addon-docs": "^10.0.2",
90
+ "@storybook/addon-onboarding": "^10.0.2",
91
+ "@storybook/addon-vitest": "^10.0.2",
92
+ "@storybook/nextjs-vite": "^10.0.2",
93
+ "@tailwindcss/postcss": "^4",
94
+ "@types/fs-extra": "^11.0.4",
95
+ "@types/inquirer": "^9.0.7",
96
+ "@types/node": "^20",
97
+ "@types/react": "^19",
98
+ "@types/react-dom": "^19",
99
+ "@vitest/browser-playwright": "^4.0.6",
100
+ "@vitest/coverage-v8": "^4.0.6",
101
+ "babel-plugin-react-compiler": "1.0.0",
102
+ "class-variance-authority": "^0.7.1",
103
+ "clsx": "^2.1.1",
104
+ "cmdk": "^1.1.1",
105
+ "date-fns": "^4.1.0",
106
+ "lucide-react": "^0.552.0",
107
+ "next": "16.0.1",
108
+ "playwright": "^1.56.1",
109
+ "react": "19.2.0",
110
+ "react-day-picker": "^9.13.0",
111
+ "react-dom": "19.2.0",
112
+ "storybook": "^10.0.2",
113
+ "tailwind-merge": "^3.3.1",
114
+ "tailwindcss": "^4",
115
+ "tsup": "^8.0.0",
116
+ "tw-animate-css": "^1.4.0",
117
+ "typescript": "^5",
118
+ "vitest": "^4.0.6"
119
+ }
120
+ }