@classic-homes/theme-mcp 0.1.10 → 0.1.12
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.
- package/dist/cli.js +48 -7
- package/dist/cli.js.map +1 -1
- package/dist/index.js +48 -7
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/server.ts","../src/resources/components.ts","../src/data/component-catalog.json","../src/data/token-definitions.json","../src/resources/tokens.ts","../src/resources/layouts.ts","../src/data/pattern-library.json","../src/data/schema-catalog.json","../src/resources/schemas.ts","../src/resources/auth.ts","../src/data/auth-catalog.json","../src/resources/index.ts","../src/tools/searchComponents.ts","../src/tools/getComponentProps.ts","../src/tools/suggestPattern.ts","../src/tools/validateUsage.ts","../src/tools/index.ts","../src/prompts/buildForm.ts","../src/prompts/layoutPage.ts","../src/prompts/componentUsage.ts","../src/prompts/index.ts"],"sourcesContent":["/**\n * Classic Theme MCP Server\n *\n * Provides AI models with comprehensive design system knowledge including\n * components, design tokens, layout patterns, and validation schemas.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { registerResources } from './resources/index.js';\nimport { registerTools } from './tools/index.js';\nimport { registerPrompts } from './prompts/index.js';\n\n/**\n * Creates and configures the MCP server\n */\nexport function createServer(): McpServer {\n const server = new McpServer({\n name: 'classic-theme',\n version: '0.1.0',\n });\n\n // Register all MCP primitives\n registerResources(server);\n registerTools(server);\n registerPrompts(server);\n\n return server;\n}\n","/**\n * Component Resources\n *\n * Provides access to component catalog data.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport componentCatalog from '../data/component-catalog.json' with { type: 'json' };\nimport type { ComponentCatalog } from '../types.js';\n\nconst catalog = componentCatalog as ComponentCatalog;\n\n/**\n * Register component-related resources\n */\nexport function registerComponentResources(server: McpServer): void {\n // Full component catalog\n server.resource('Component Catalog', 'components://catalog', async (uri) => ({\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(catalog, null, 2),\n },\n ],\n }));\n\n // Component list (names only, for quick lookup)\n server.resource('Component List', 'components://list', async (uri) => ({\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(\n catalog.components.map((c) => ({\n name: c.name,\n category: c.category,\n description: c.description,\n })),\n null,\n 2\n ),\n },\n ],\n }));\n\n // Individual component resources via template\n server.resource(\n 'Component Details',\n new ResourceTemplate('components://{name}', { list: undefined }),\n async (uri, params) => {\n const name = params.name as string;\n const component = catalog.components.find((c) => c.name.toLowerCase() === name.toLowerCase());\n\n if (!component) {\n return {\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify({ error: `Component \"${name}\" not found` }),\n },\n ],\n };\n }\n\n return {\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(component, null, 2),\n },\n ],\n };\n }\n );\n\n // Components by category\n server.resource(\n 'Components by Category',\n new ResourceTemplate('components://category/{category}', { list: undefined }),\n async (uri, params) => {\n const category = params.category as string;\n const components = catalog.components.filter(\n (c) => c.category.toLowerCase() === category.toLowerCase()\n );\n\n return {\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(components, null, 2),\n },\n ],\n };\n }\n );\n}\n","{\n \"version\": \"0.1.0\",\n \"components\": [\n {\n \"name\": \"Alert\",\n \"description\": \"Contextual feedback messages for user actions and system status\",\n \"category\": \"feedback\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"variant\",\n \"type\": \"'default' | 'destructive' | 'error' | 'success' | 'warning' | 'info'\",\n \"default\": \"'default'\",\n \"required\": false,\n \"description\": \"Alert style variant\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"variant\",\n \"values\": [\n \"default\",\n \"destructive\",\n \"error\",\n \"success\",\n \"warning\",\n \"info\"\n ],\n \"default\": \"default\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Alert>\\n <AlertTitle>Heads up!</AlertTitle>\\n <AlertDescription>This is a default alert message.</AlertDescription>\\n</Alert>\"\n },\n {\n \"title\": \"Default\",\n \"description\": \"Neutral information message:\",\n \"code\": \"<Alert variant=\\\"default\\\">\\n <AlertTitle>Note</AlertTitle>\\n <AlertDescription>This is a neutral informational message.</AlertDescription>\\n</Alert>\"\n },\n {\n \"title\": \"Success\",\n \"description\": \"Positive feedback for completed actions:\",\n \"code\": \"<Alert variant=\\\"success\\\">\\n <AlertTitle>Success!</AlertTitle>\\n <AlertDescription>Your changes have been saved successfully.</AlertDescription>\\n</Alert>\"\n },\n {\n \"title\": \"Warning\",\n \"description\": \"Caution about potential issues:\",\n \"code\": \"<Alert variant=\\\"warning\\\">\\n <AlertTitle>Warning</AlertTitle>\\n <AlertDescription>Your session will expire in 5 minutes.</AlertDescription>\\n</Alert>\"\n },\n {\n \"title\": \"Error / Destructive\",\n \"description\": \"Error messages and critical alerts:\",\n \"code\": \"<Alert variant=\\\"error\\\">\\n <AlertTitle>Error</AlertTitle>\\n <AlertDescription>There was a problem processing your request.</AlertDescription>\\n</Alert>\"\n },\n {\n \"title\": \"Info\",\n \"description\": \"Helpful information or tips:\",\n \"code\": \"<Alert variant=\\\"info\\\">\\n <AlertTitle>Did you know?</AlertTitle>\\n <AlertDescription>You can use keyboard shortcuts for faster navigation.</AlertDescription>\\n</Alert>\"\n },\n {\n \"title\": \"Form Validation Error\",\n \"code\": \"{#if formErrors.length > 0}\\n <Alert variant=\\\"error\\\">\\n <AlertTitle>Please fix the following errors:</AlertTitle>\\n <AlertDescription>\\n <ul class=\\\"list-disc pl-4 mt-2\\\">\\n {#each formErrors as error}\\n <li>{error}</li>\\n {/each}\\n </ul>\\n </AlertDescription>\\n </Alert>\\n{/if}\"\n },\n {\n \"title\": \"Dismissible Alert\",\n \"code\": \"<script>\\n let showAlert = $state(true);\\n</script>\\n\\n{#if showAlert}\\n <Alert variant=\\\"info\\\" class=\\\"relative\\\">\\n <AlertTitle>New Feature</AlertTitle>\\n <AlertDescription>Check out our new dashboard!</AlertDescription>\\n <button\\n class=\\\"absolute top-4 right-4 text-muted-foreground hover:text-foreground\\\"\\n onclick={() => (showAlert = false)}\\n aria-label=\\\"Dismiss\\\"\\n >\\n <svg class=\\\"h-4 w-4\\\" fill=\\\"none\\\" viewBox=\\\"0 0 24 24\\\" stroke=\\\"currentColor\\\">\\n <path\\n stroke-linecap=\\\"round\\\"\\n stroke-linejoin=\\\"round\\\"\\n stroke-width=\\\"2\\\"\\n d=\\\"M6 18L18 6M6 6l12 12\\\"\\n />\\n </svg>\\n </button>\\n </Alert>\\n{/if}\"\n },\n {\n \"title\": \"System Status\",\n \"code\": \"<Alert variant=\\\"warning\\\">\\n <svg class=\\\"h-4 w-4\\\" fill=\\\"none\\\" viewBox=\\\"0 0 24 24\\\" stroke=\\\"currentColor\\\">\\n <path\\n stroke-linecap=\\\"round\\\"\\n stroke-linejoin=\\\"round\\\"\\n stroke-width=\\\"2\\\"\\n d=\\\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\\\"\\n />\\n </svg>\\n <AlertTitle>Maintenance Scheduled</AlertTitle>\\n <AlertDescription>\\n The system will be unavailable on Sunday from 2:00 AM to 4:00 AM EST.\\n </AlertDescription>\\n</Alert>\"\n },\n {\n \"title\": \"Success with Action\",\n \"code\": \"<Alert variant=\\\"success\\\">\\n <AlertTitle>Order Confirmed</AlertTitle>\\n <AlertDescription>\\n <p>Your order #12345 has been placed successfully.</p>\\n <a href=\\\"/orders/12345\\\" class=\\\"underline font-medium mt-2 inline-block\\\"> View order details </a>\\n </AlertDescription>\\n</Alert>\"\n },\n {\n \"title\": \"Compact Alert (Title Only)\",\n \"code\": \"<Alert variant=\\\"info\\\">\\n <AlertDescription>Pro tip: Press Ctrl+K to open the command palette.</AlertDescription>\\n</Alert>\"\n }\n ],\n \"relatedComponents\": [\n \"Toast\",\n \"Badge\",\n \"Card\"\n ]\n },\n {\n \"name\": \"AlertDescription\",\n \"description\": \"Main content text component for Alert messages\",\n \"category\": \"feedback\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Alert>\\n <AlertTitle>Notice</AlertTitle>\\n <AlertDescription>This is the alert message content.</AlertDescription>\\n</Alert>\"\n },\n {\n \"title\": \"Simple Message\",\n \"code\": \"<AlertDescription>Your session will expire in 5 minutes.</AlertDescription>\"\n },\n {\n \"title\": \"With Link\",\n \"code\": \"<AlertDescription>\\n Your account needs verification.\\n <a href=\\\"/verify\\\" class=\\\"underline font-medium\\\">Verify now</a>\\n</AlertDescription>\"\n },\n {\n \"title\": \"Error List\",\n \"code\": \"<AlertDescription>\\n <ul class=\\\"list-disc pl-4 mt-2\\\">\\n <li>Email is required</li>\\n <li>Password must be at least 8 characters</li>\\n </ul>\\n</AlertDescription>\"\n },\n {\n \"title\": \"Rich Content\",\n \"code\": \"<AlertDescription>\\n <p>Your order #12345 has been placed successfully.</p>\\n <a href=\\\"/orders/12345\\\" class=\\\"underline font-medium mt-2 inline-block\\\"> View order details </a>\\n</AlertDescription>\"\n },\n {\n \"title\": \"Without Title\",\n \"code\": \"<Alert variant=\\\"info\\\">\\n <AlertDescription>Pro tip: Press Ctrl+K to open the command palette.</AlertDescription>\\n</Alert>\"\n }\n ],\n \"relatedComponents\": [\n \"Alert\",\n \"AlertTitle\"\n ]\n },\n {\n \"name\": \"AlertDialog\",\n \"description\": \"Modal dialog for confirmations and important actions\",\n \"category\": \"overlay\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"open\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Open state (bindable)\"\n },\n {\n \"name\": \"onOpenChange\",\n \"type\": \"(open: boolean) => void\",\n \"required\": false,\n \"description\": \"Open change callback\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Dialog title\"\n },\n {\n \"name\": \"description\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Description text\"\n },\n {\n \"name\": \"cancelText\",\n \"type\": \"string\",\n \"default\": \"'Cancel'\",\n \"required\": false,\n \"description\": \"Cancel button text\"\n },\n {\n \"name\": \"confirmText\",\n \"type\": \"string\",\n \"default\": \"'Continue'\",\n \"required\": false,\n \"description\": \"Confirm button text\"\n },\n {\n \"name\": \"confirmVariant\",\n \"type\": \"'default' | 'destructive' | 'outline' | 'ghost'\",\n \"default\": \"'default'\",\n \"required\": false,\n \"description\": \"Confirm button style\"\n },\n {\n \"name\": \"onConfirm\",\n \"type\": \"() => void\",\n \"required\": false,\n \"description\": \"Confirm callback\"\n },\n {\n \"name\": \"onCancel\",\n \"type\": \"() => void\",\n \"required\": false,\n \"description\": \"Cancel callback\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional classes\"\n },\n {\n \"name\": \"trigger\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Optional trigger element\"\n },\n {\n \"name\": \"children\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Custom content\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"confirmVariant\",\n \"values\": [\n \"default\",\n \"destructive\",\n \"outline\",\n \"ghost\"\n ],\n \"default\": \"default\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n let showDialog = $state(false);\\n</script>\\n\\n<Button onclick={() => (showDialog = true)}>Delete Item</Button>\\n\\n<AlertDialog\\n open={showDialog}\\n onOpenChange={(open) => (showDialog = open)}\\n title=\\\"Delete Item?\\\"\\n description=\\\"This action cannot be undone. This will permanently delete the item.\\\"\\n confirmText=\\\"Delete\\\"\\n confirmVariant=\\\"destructive\\\"\\n onConfirm={() => deleteItem()}\\n/>\"\n },\n {\n \"title\": \"Delete Confirmation\",\n \"code\": \"<AlertDialog\\n title=\\\"Delete Project\\\"\\n description={`Are you sure you want to delete \\\"${project.name}\\\"? All project data including files, tasks, and comments will be permanently removed.`}\\n confirmText=\\\"Delete Project\\\"\\n confirmVariant=\\\"destructive\\\"\\n onConfirm={() => deleteProject(project.id)}\\n>\\n {#snippet trigger()}\\n <Button variant=\\\"destructive\\\" size=\\\"sm\\\">\\n <TrashIcon class=\\\"mr-2 h-4 w-4\\\" />\\n Delete\\n </Button>\\n {/snippet}\\n</AlertDialog>\"\n },\n {\n \"title\": \"Unsaved Changes\",\n \"code\": \"<AlertDialog\\n title=\\\"Unsaved Changes\\\"\\n description=\\\"You have unsaved changes. Do you want to leave without saving?\\\"\\n cancelText=\\\"Stay\\\"\\n confirmText=\\\"Leave\\\"\\n confirmVariant=\\\"destructive\\\"\\n onConfirm={navigateAway}\\n>\\n {#snippet trigger()}\\n <Button variant=\\\"outline\\\">Cancel</Button>\\n {/snippet}\\n</AlertDialog>\"\n },\n {\n \"title\": \"Subscription Cancellation\",\n \"code\": \"<AlertDialog\\n title=\\\"Cancel Subscription\\\"\\n description=\\\"Your subscription will remain active until the end of the current billing period. You can resubscribe at any time.\\\"\\n cancelText=\\\"Keep Subscription\\\"\\n confirmText=\\\"Cancel Subscription\\\"\\n onConfirm={cancelSubscription}\\n>\\n {#snippet trigger()}\\n <Button variant=\\\"ghost\\\" class=\\\"text-destructive\\\">Cancel Subscription</Button>\\n {/snippet}\\n</AlertDialog>\"\n },\n {\n \"title\": \"Bulk Action\",\n \"code\": \"<AlertDialog\\n title={`Delete ${selectedItems.length} items?`}\\n description=\\\"This will permanently delete all selected items. This action cannot be undone.\\\"\\n confirmText={`Delete ${selectedItems.length} items`}\\n confirmVariant=\\\"destructive\\\"\\n onConfirm={deleteSelectedItems}\\n>\\n {#snippet trigger()}\\n <Button variant=\\\"destructive\\\" disabled={selectedItems.length === 0}>Delete Selected</Button>\\n {/snippet}\\n</AlertDialog>\"\n }\n ],\n \"relatedComponents\": [\n \"Dialog\",\n \"Button\",\n \"DropdownMenu\"\n ]\n },\n {\n \"name\": \"AlertTitle\",\n \"description\": \"Bold heading component for Alert messages\",\n \"category\": \"feedback\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Alert>\\n <AlertTitle>Heads up!</AlertTitle>\\n <AlertDescription>This is an important message.</AlertDescription>\\n</Alert>\"\n },\n {\n \"title\": \"Success Alert\",\n \"code\": \"<Alert variant=\\\"success\\\">\\n <AlertTitle>Success!</AlertTitle>\\n <AlertDescription>Your changes have been saved.</AlertDescription>\\n</Alert>\"\n },\n {\n \"title\": \"Error Alert\",\n \"code\": \"<Alert variant=\\\"error\\\">\\n <AlertTitle>Error</AlertTitle>\\n <AlertDescription>Something went wrong. Please try again.</AlertDescription>\\n</Alert>\"\n },\n {\n \"title\": \"With Icon\",\n \"code\": \"<Alert variant=\\\"info\\\">\\n <Icon name=\\\"info\\\" class=\\\"h-4 w-4\\\" />\\n <AlertTitle>Did you know?</AlertTitle>\\n <AlertDescription>You can use keyboard shortcuts.</AlertDescription>\\n</Alert>\"\n },\n {\n \"title\": \"Custom Styling\",\n \"code\": \"<AlertTitle class=\\\"text-lg\\\">Important Notice</AlertTitle>\"\n }\n ],\n \"relatedComponents\": [\n \"Alert\",\n \"AlertDescription\"\n ]\n },\n {\n \"name\": \"AppShell\",\n \"description\": \"Base wrapper component for applications with accessibility features\",\n \"category\": \"layout\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"skipToId\",\n \"type\": \"string\",\n \"default\": \"'main-content'\",\n \"required\": false,\n \"description\": \"Target ID for skip link\"\n },\n {\n \"name\": \"skipToText\",\n \"type\": \"string\",\n \"default\": \"'Skip to main content'\",\n \"required\": false,\n \"description\": \"Skip link text\"\n },\n {\n \"name\": \"toastPosition\",\n \"type\": \"'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top-center' | 'bottom-center'\",\n \"default\": \"'bottom-right'\",\n \"required\": false,\n \"description\": \"Toast container position\"\n },\n {\n \"name\": \"children\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Main content\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"toastPosition\",\n \"values\": [\n \"top-right\",\n \"top-left\",\n \"bottom-right\",\n \"bottom-left\",\n \"top-center\",\n \"bottom-center\"\n ],\n \"default\": \"bottom-right\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<AppShell>\\n <main>Your application content</main>\\n</AppShell>\"\n }\n ],\n \"relatedComponents\": [\n \"DashboardLayout\",\n \"PublicLayout\",\n \"Toast\"\n ]\n },\n {\n \"name\": \"AreaChart\",\n \"description\": \"Line chart with gradient fill and stacking support\",\n \"category\": \"chart\",\n \"importPath\": \"@classic-homes/charts-svelte\",\n \"props\": [\n {\n \"name\": \"data\",\n \"type\": \"AreaChartData\",\n \"required\": true,\n \"description\": \"Chart data with categories and series\"\n },\n {\n \"name\": \"smooth\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Use smooth curved lines\"\n },\n {\n \"name\": \"stacked\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Stack areas to show total composition\"\n },\n {\n \"name\": \"gradient\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Apply gradient fill to areas\"\n },\n {\n \"name\": \"onClick\",\n \"type\": \"(params: DataPointEventParams) => void\",\n \"required\": false,\n \"description\": \"Callback when clicked\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": true,\n \"description\": \"Chart title for accessibility\"\n },\n {\n \"name\": \"height\",\n \"type\": \"number | string\",\n \"default\": \"400\",\n \"required\": false,\n \"description\": \"Chart height\"\n },\n {\n \"name\": \"theme\",\n \"type\": \"'light' | 'dark' | 'auto'\",\n \"default\": \"'auto'\",\n \"required\": false,\n \"description\": \"Theme preference\"\n },\n {\n \"name\": \"showLegend\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show chart legend\"\n },\n {\n \"name\": \"showTooltip\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show tooltip on hover\"\n },\n {\n \"name\": \"showGrid\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show grid lines\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"theme\",\n \"values\": [\n \"light\",\n \"dark\",\n \"auto\"\n ],\n \"default\": \"auto\"\n }\n ],\n \"slots\": [],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { AreaChart } from '@classic-homes/charts-svelte';\\n\\n const data = {\\n categories: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],\\n series: [\\n { name: 'Email', data: [120, 132, 101, 134, 90, 230, 210] },\\n { name: 'Ads', data: [220, 182, 191, 234, 290, 330, 310] },\\n { name: 'Video', data: [150, 232, 201, 154, 190, 330, 410] },\\n ],\\n };\\n</script>\\n\\n<AreaChart title=\\\"Weekly Traffic\\\" {data} stacked smooth gradient height={400} />\"\n },\n {\n \"title\": \"Stacked Area with Gradient\",\n \"code\": \"<AreaChart title=\\\"Traffic Sources\\\" {data} stacked smooth gradient height={400} />\"\n },\n {\n \"title\": \"Simple Area Chart\",\n \"code\": \"<AreaChart\\n title=\\\"Single Series\\\"\\n data={{\\n categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May'],\\n series: [{ name: 'Revenue', data: [100, 150, 120, 180, 200] }],\\n }}\\n smooth\\n/>\"\n }\n ],\n \"relatedComponents\": [\n \"LineChart\",\n \"BarChart\"\n ]\n },\n {\n \"name\": \"AuthLayout\",\n \"description\": \"Centered card layout for authentication pages\",\n \"category\": \"layout\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"logo\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Custom logo\"\n },\n {\n \"name\": \"logoSubtitle\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Subtitle for default logo\"\n },\n {\n \"name\": \"logoEnvironment\",\n \"type\": \"'local' | 'dev' | 'demo'\",\n \"required\": false,\n \"description\": \"Environment indicator\"\n },\n {\n \"name\": \"footerLinks\",\n \"type\": \"FooterLink[]\",\n \"default\": \"[]\",\n \"required\": false,\n \"description\": \"Footer links\"\n },\n {\n \"name\": \"footer\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Custom footer content\"\n },\n {\n \"name\": \"showBackground\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Show decorative background\"\n },\n {\n \"name\": \"backgroundVariant\",\n \"type\": \"'default' | 'gradient' | 'pattern'\",\n \"default\": \"'default'\",\n \"required\": false,\n \"description\": \"Background style\"\n },\n {\n \"name\": \"maxWidth\",\n \"type\": \"'sm' | 'md' | 'lg'\",\n \"default\": \"'sm'\",\n \"required\": false,\n \"description\": \"Maximum card width\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional classes\"\n },\n {\n \"name\": \"children\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Form content\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"logoEnvironment\",\n \"values\": [\n \"local\",\n \"dev\",\n \"demo\"\n ]\n },\n {\n \"name\": \"backgroundVariant\",\n \"values\": [\n \"default\",\n \"gradient\",\n \"pattern\"\n ],\n \"default\": \"default\"\n },\n {\n \"name\": \"maxWidth\",\n \"values\": [\n \"sm\",\n \"md\",\n \"lg\"\n ],\n \"default\": \"sm\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<AuthLayout>\\n <h2 class=\\\"text-2xl font-bold mb-4\\\">Sign In</h2>\\n <form>\\n <Input label=\\\"Email\\\" type=\\\"email\\\" />\\n <Input label=\\\"Password\\\" type=\\\"password\\\" class=\\\"mt-4\\\" />\\n <Button class=\\\"mt-6 w-full\\\">Sign In</Button>\\n </form>\\n</AuthLayout>\"\n },\n {\n \"title\": \"Gradient Background\",\n \"code\": \"<AuthLayout showBackground backgroundVariant=\\\"gradient\\\">\\n <h2>Create Account</h2>\\n <!-- Form content -->\\n</AuthLayout>\"\n },\n {\n \"title\": \"Pattern Background\",\n \"code\": \"<AuthLayout showBackground backgroundVariant=\\\"pattern\\\">\\n <h2>Reset Password</h2>\\n <!-- Form content -->\\n</AuthLayout>\"\n },\n {\n \"title\": \"Login Page\",\n \"code\": \"<script>\\n let email = $state('');\\n let password = $state('');\\n let loading = $state(false);\\n\\n async function handleSubmit() {\\n loading = true;\\n // Handle login\\n }\\n</script>\\n\\n<AuthLayout\\n logoSubtitle=\\\"Sign in to continue\\\"\\n footerLinks={[\\n { label: 'Privacy', href: '/privacy' },\\n { label: 'Terms', href: '/terms' },\\n ]}\\n>\\n <form onsubmit={handleSubmit} class=\\\"space-y-4\\\">\\n <Input label=\\\"Email\\\" type=\\\"email\\\" bind:value={email} required />\\n <Input label=\\\"Password\\\" type=\\\"password\\\" bind:value={password} required />\\n <div class=\\\"flex items-center justify-between\\\">\\n <Checkbox label=\\\"Remember me\\\" />\\n <a href=\\\"/forgot-password\\\" class=\\\"text-sm text-primary\\\"> Forgot password? </a>\\n </div>\\n <Button type=\\\"submit\\\" class=\\\"w-full\\\" disabled={loading}>\\n {loading ? 'Signing in...' : 'Sign In'}\\n </Button>\\n </form>\\n\\n <p class=\\\"mt-6 text-center text-sm text-muted-foreground\\\">\\n Don't have an account? <a href=\\\"/signup\\\" class=\\\"text-primary\\\">Sign up</a>\\n </p>\\n</AuthLayout>\"\n },\n {\n \"title\": \"Registration Page\",\n \"code\": \"<AuthLayout maxWidth=\\\"md\\\" showBackground backgroundVariant=\\\"gradient\\\">\\n <h2 class=\\\"text-2xl font-bold mb-6\\\">Create your account</h2>\\n\\n <form class=\\\"space-y-4\\\">\\n <div class=\\\"grid grid-cols-2 gap-4\\\">\\n <Input label=\\\"First Name\\\" required />\\n <Input label=\\\"Last Name\\\" required />\\n </div>\\n <Input label=\\\"Email\\\" type=\\\"email\\\" required />\\n <Input label=\\\"Password\\\" type=\\\"password\\\" required />\\n <Input label=\\\"Confirm Password\\\" type=\\\"password\\\" required />\\n\\n <Checkbox>\\n I agree to the <a href=\\\"/terms\\\">Terms of Service</a>\\n </Checkbox>\\n\\n <Button type=\\\"submit\\\" class=\\\"w-full\\\">Create Account</Button>\\n </form>\\n</AuthLayout>\"\n },\n {\n \"title\": \"Two-Factor Authentication\",\n \"code\": \"<AuthLayout logoSubtitle=\\\"Verify your identity\\\">\\n <div class=\\\"text-center mb-6\\\">\\n <p class=\\\"text-muted-foreground\\\">Enter the 6-digit code from your authenticator app</p>\\n </div>\\n\\n <OTPInput bind:value={code} autoFocus onComplete={verifyCode} />\\n\\n <p class=\\\"mt-6 text-center text-sm text-muted-foreground\\\">\\n Can't access your authenticator? <a href=\\\"/recovery\\\" class=\\\"text-primary\\\">Use recovery code</a>\\n </p>\\n</AuthLayout>\"\n }\n ],\n \"relatedComponents\": [\n \"Input\",\n \"Button\",\n \"OTPInput\",\n \"ErrorLayout\"\n ]\n },\n {\n \"name\": \"Avatar\",\n \"description\": \"User profile image with fallback support\",\n \"category\": \"core\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"size\",\n \"type\": \"'xs' | 'sm' | 'md' | 'lg' | 'xl'\",\n \"default\": \"'md'\",\n \"required\": false,\n \"description\": \"Size of the avatar\"\n },\n {\n \"name\": \"delayMs\",\n \"type\": \"number\",\n \"required\": false,\n \"description\": \"Delay before showing fallback\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"size\",\n \"values\": [\n \"xs\",\n \"sm\",\n \"md\",\n \"lg\",\n \"xl\"\n ],\n \"default\": \"md\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Avatar>\\n <AvatarImage src=\\\"/avatar.jpg\\\" alt=\\\"John Doe\\\" />\\n <AvatarFallback>JD</AvatarFallback>\\n</Avatar>\"\n },\n {\n \"title\": \"Fallback with Delay\",\n \"description\": \"Prevent flash of fallback for slow-loading images:\",\n \"code\": \"<Avatar delayMs={500}>\\n <AvatarImage src=\\\"/slow-image.jpg\\\" alt=\\\"User\\\" />\\n <AvatarFallback>AB</AvatarFallback>\\n</Avatar>\"\n },\n {\n \"title\": \"User Profile\",\n \"code\": \"<div class=\\\"flex items-center gap-3\\\">\\n <Avatar size=\\\"lg\\\">\\n <AvatarImage src={user.avatar} alt={user.name} />\\n <AvatarFallback>{getInitials(user.name)}</AvatarFallback>\\n </Avatar>\\n <div>\\n <p class=\\\"font-medium\\\">{user.name}</p>\\n <p class=\\\"text-sm text-muted-foreground\\\">{user.email}</p>\\n </div>\\n</div>\"\n },\n {\n \"title\": \"Avatar Stack\",\n \"code\": \"<div class=\\\"flex -space-x-2\\\">\\n {#each users as user}\\n <Avatar size=\\\"sm\\\" class=\\\"border-2 border-background\\\">\\n <AvatarImage src={user.avatar} alt={user.name} />\\n <AvatarFallback>{getInitials(user.name)}</AvatarFallback>\\n </Avatar>\\n {/each}\\n {#if moreCount > 0}\\n <Avatar size=\\\"sm\\\" class=\\\"border-2 border-background\\\">\\n <AvatarFallback>+{moreCount}</AvatarFallback>\\n </Avatar>\\n {/if}\\n</div>\"\n },\n {\n \"title\": \"Comment Avatar\",\n \"code\": \"<div class=\\\"flex gap-3\\\">\\n <Avatar size=\\\"sm\\\">\\n <AvatarImage src={comment.author.avatar} alt={comment.author.name} />\\n <AvatarFallback>{getInitials(comment.author.name)}</AvatarFallback>\\n </Avatar>\\n <div class=\\\"flex-1\\\">\\n <p class=\\\"font-medium text-sm\\\">{comment.author.name}</p>\\n <p class=\\\"text-sm\\\">{comment.text}</p>\\n </div>\\n</div>\"\n },\n {\n \"title\": \"Navigation Avatar\",\n \"code\": \"<button class=\\\"flex items-center gap-2\\\">\\n <Avatar size=\\\"sm\\\">\\n <AvatarImage src={currentUser.avatar} alt={currentUser.name} />\\n <AvatarFallback>{getInitials(currentUser.name)}</AvatarFallback>\\n </Avatar>\\n <span class=\\\"text-sm\\\">{currentUser.name}</span>\\n</button>\"\n },\n {\n \"title\": \"Colored Fallbacks\",\n \"code\": \"<script>\\n function getColorFromName(name: string): string {\\n const colors = ['bg-red-500', 'bg-blue-500', 'bg-green-500', 'bg-yellow-500', 'bg-purple-500'];\\n const index = name.charCodeAt(0) % colors.length;\\n return colors[index];\\n }\\n</script>\\n\\n<Avatar>\\n <AvatarImage src={user.avatar} alt={user.name} />\\n <AvatarFallback class={getColorFromName(user.name)}>\\n {getInitials(user.name)}\\n </AvatarFallback>\\n</Avatar>\"\n }\n ],\n \"relatedComponents\": [\n \"Badge\",\n \"Card\"\n ]\n },\n {\n \"name\": \"AvatarFallback\",\n \"description\": \"Fallback content displayed when Avatar image is unavailable\",\n \"category\": \"core\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Avatar>\\n <AvatarImage src=\\\"/user.jpg\\\" alt=\\\"John Doe\\\" />\\n <AvatarFallback>JD</AvatarFallback>\\n</Avatar>\"\n },\n {\n \"title\": \"Initials\",\n \"code\": \"<Avatar>\\n <AvatarFallback>AB</AvatarFallback>\\n</Avatar>\"\n },\n {\n \"title\": \"Single Letter\",\n \"code\": \"<Avatar>\\n <AvatarFallback>J</AvatarFallback>\\n</Avatar>\"\n },\n {\n \"title\": \"With Icon\",\n \"code\": \"<Avatar>\\n <AvatarFallback>\\n <Icon name=\\\"user\\\" class=\\\"h-4 w-4\\\" />\\n </AvatarFallback>\\n</Avatar>\"\n },\n {\n \"title\": \"Custom Styling\",\n \"code\": \"<Avatar>\\n <AvatarFallback class=\\\"bg-primary text-primary-foreground\\\">AD</AvatarFallback>\\n</Avatar>\"\n },\n {\n \"title\": \"As Placeholder\",\n \"description\": \"When no image is available:\",\n \"code\": \"<Avatar>\\n <AvatarFallback>?</AvatarFallback>\\n</Avatar>\"\n }\n ],\n \"relatedComponents\": [\n \"Avatar\",\n \"AvatarImage\"\n ]\n },\n {\n \"name\": \"AvatarImage\",\n \"description\": \"Image component for displaying user profile pictures in Avatars\",\n \"category\": \"core\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"src\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Image source URL (required)\"\n },\n {\n \"name\": \"alt\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Alt text for accessibility\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Avatar>\\n <AvatarImage src=\\\"/user-photo.jpg\\\" alt=\\\"John Doe\\\" />\\n <AvatarFallback>JD</AvatarFallback>\\n</Avatar>\"\n },\n {\n \"title\": \"With Fallback\",\n \"code\": \"<Avatar>\\n <AvatarImage src=\\\"/avatar.jpg\\\" alt=\\\"Jane Smith\\\" />\\n <AvatarFallback>JS</AvatarFallback>\\n</Avatar>\"\n },\n {\n \"title\": \"Different Sizes\",\n \"code\": \"<Avatar size=\\\"sm\\\">\\n <AvatarImage src=\\\"/small.jpg\\\" alt=\\\"Small avatar\\\" />\\n</Avatar>\\n\\n<Avatar size=\\\"lg\\\">\\n <AvatarImage src=\\\"/large.jpg\\\" alt=\\\"Large avatar\\\" />\\n</Avatar>\"\n },\n {\n \"title\": \"External Image\",\n \"code\": \"<Avatar>\\n <AvatarImage src=\\\"https://avatars.githubusercontent.com/u/123\\\" alt=\\\"GitHub user\\\" />\\n <AvatarFallback>GH</AvatarFallback>\\n</Avatar>\"\n }\n ],\n \"relatedComponents\": [\n \"Avatar\",\n \"AvatarFallback\"\n ]\n },\n {\n \"name\": \"Badge\",\n \"description\": \"Small label component for status indicators and categorization\",\n \"category\": \"core\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"variant\",\n \"type\": \"'default' | 'secondary' | 'destructive' | 'outline' | 'success' | 'warning' | 'info'\",\n \"default\": \"'default'\",\n \"required\": false,\n \"description\": \"Visual style variant\"\n },\n {\n \"name\": \"size\",\n \"type\": \"'default' | 'sm' | 'dot'\",\n \"default\": \"'default'\",\n \"required\": false,\n \"description\": \"Size of the badge\"\n },\n {\n \"name\": \"clickable\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Enables hover effects for clickable badges\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"variant\",\n \"values\": [\n \"default\",\n \"secondary\",\n \"destructive\",\n \"outline\",\n \"success\",\n \"warning\",\n \"info\"\n ],\n \"default\": \"default\"\n },\n {\n \"name\": \"size\",\n \"values\": [\n \"default\",\n \"sm\",\n \"dot\"\n ],\n \"default\": \"default\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Badge>Default</Badge>\"\n },\n {\n \"title\": \"Default\",\n \"code\": \"<Badge variant=\\\"default\\\">Default</Badge>\"\n },\n {\n \"title\": \"Secondary\",\n \"code\": \"<Badge variant=\\\"secondary\\\">Secondary</Badge>\"\n },\n {\n \"title\": \"Destructive\",\n \"code\": \"<Badge variant=\\\"destructive\\\">Destructive</Badge>\"\n },\n {\n \"title\": \"Outline\",\n \"code\": \"<Badge variant=\\\"outline\\\">Outline</Badge>\"\n },\n {\n \"title\": \"Success\",\n \"code\": \"<Badge variant=\\\"success\\\">Success</Badge>\"\n },\n {\n \"title\": \"Warning\",\n \"code\": \"<Badge variant=\\\"warning\\\">Warning</Badge>\"\n },\n {\n \"title\": \"Info\",\n \"code\": \"<Badge variant=\\\"info\\\">Info</Badge>\"\n },\n {\n \"title\": \"Status Indicators\",\n \"code\": \"<Badge variant=\\\"success\\\">Active</Badge>\\n<Badge variant=\\\"warning\\\">Pending</Badge>\\n<Badge variant=\\\"destructive\\\">Expired</Badge>\"\n },\n {\n \"title\": \"Notification Counts\",\n \"code\": \"<Badge size=\\\"dot\\\" variant=\\\"destructive\\\">3</Badge>\"\n },\n {\n \"title\": \"Category Tags\",\n \"code\": \"<div class=\\\"flex gap-2\\\">\\n <Badge variant=\\\"secondary\\\">React</Badge>\\n <Badge variant=\\\"secondary\\\">Svelte</Badge>\\n <Badge variant=\\\"secondary\\\">TypeScript</Badge>\\n</div>\"\n },\n {\n \"title\": \"With Icons\",\n \"code\": \"<Badge>\\n <svg class=\\\"h-3 w-3\\\" fill=\\\"currentColor\\\" viewBox=\\\"0 0 20 20\\\">\\n <circle cx=\\\"10\\\" cy=\\\"10\\\" r=\\\"5\\\" />\\n </svg>\\n Online\\n</Badge>\"\n },\n {\n \"title\": \"Table Status Column\",\n \"code\": \"<td>\\n {#if user.status === 'active'}\\n <Badge variant=\\\"success\\\">Active</Badge>\\n {:else if user.status === 'pending'}\\n <Badge variant=\\\"warning\\\">Pending</Badge>\\n {:else}\\n <Badge variant=\\\"destructive\\\">Inactive</Badge>\\n {/if}\\n</td>\"\n },\n {\n \"title\": \"Article Tags\",\n \"code\": \"<article>\\n <h2>Article Title</h2>\\n <div class=\\\"flex gap-1 mt-2\\\">\\n {#each article.tags as tag}\\n <Badge variant=\\\"outline\\\" size=\\\"sm\\\">{tag}</Badge>\\n {/each}\\n </div>\\n</article>\"\n },\n {\n \"title\": \"Version Badge\",\n \"code\": \"<Badge variant=\\\"info\\\">v2.0.0</Badge>\"\n },\n {\n \"title\": \"New Feature Badge\",\n \"code\": \"<h3>\\n Feature Name\\n <Badge variant=\\\"default\\\" size=\\\"sm\\\" class=\\\"ml-2\\\">New</Badge>\\n</h3>\"\n }\n ],\n \"relatedComponents\": [\n \"Alert\",\n \"Button\"\n ]\n },\n {\n \"name\": \"BarChart\",\n \"description\": \"Compare categories with vertical or horizontal bars\",\n \"category\": \"chart\",\n \"importPath\": \"@classic-homes/charts-svelte\",\n \"props\": [\n {\n \"name\": \"data\",\n \"type\": \"BarChartData\",\n \"required\": true,\n \"description\": \"Chart data with categories and series\"\n },\n {\n \"name\": \"orientation\",\n \"type\": \"'vertical' | 'horizontal'\",\n \"default\": \"'vertical'\",\n \"required\": false,\n \"description\": \"Bar orientation\"\n },\n {\n \"name\": \"stacked\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Stack bars to show composition\"\n },\n {\n \"name\": \"showValues\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Show value labels on bars\"\n },\n {\n \"name\": \"onClick\",\n \"type\": \"(params: DataPointEventParams) => void\",\n \"required\": false,\n \"description\": \"Callback when a bar is clicked\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": true,\n \"description\": \"Chart title for accessibility\"\n },\n {\n \"name\": \"description\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Description for screen readers\"\n },\n {\n \"name\": \"height\",\n \"type\": \"number | string\",\n \"default\": \"400\",\n \"required\": false,\n \"description\": \"Chart height\"\n },\n {\n \"name\": \"theme\",\n \"type\": \"'light' | 'dark' | 'auto'\",\n \"default\": \"'auto'\",\n \"required\": false,\n \"description\": \"Theme preference\"\n },\n {\n \"name\": \"showLegend\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show chart legend\"\n },\n {\n \"name\": \"showTooltip\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show tooltip on hover\"\n },\n {\n \"name\": \"showGrid\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show grid lines\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"orientation\",\n \"values\": [\n \"vertical\",\n \"horizontal\"\n ],\n \"default\": \"vertical\"\n },\n {\n \"name\": \"theme\",\n \"values\": [\n \"light\",\n \"dark\",\n \"auto\"\n ],\n \"default\": \"auto\"\n }\n ],\n \"slots\": [],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { BarChart } from '@classic-homes/charts-svelte';\\n\\n const data = {\\n categories: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'],\\n series: [\\n { name: 'Sales', data: [320, 332, 301, 334, 390] },\\n { name: 'Returns', data: [120, 132, 101, 134, 90] },\\n ],\\n };\\n</script>\\n\\n<BarChart title=\\\"Weekly Sales\\\" {data} height={400} />\"\n },\n {\n \"title\": \"Horizontal Bar Chart\",\n \"code\": \"<BarChart title=\\\"Sales by Region\\\" {data} orientation=\\\"horizontal\\\" height={400} />\"\n },\n {\n \"title\": \"Stacked Bar Chart\",\n \"code\": \"<BarChart title=\\\"Revenue Breakdown\\\" {data} stacked height={400} />\"\n },\n {\n \"title\": \"With Value Labels\",\n \"code\": \"<BarChart title=\\\"Monthly Performance\\\" {data} showValues height={400} />\"\n }\n ],\n \"relatedComponents\": [\n \"LineChart\",\n \"FunnelChart\"\n ]\n },\n {\n \"name\": \"Button\",\n \"description\": \"Clickable button component with multiple variants, sizes, and loading states\",\n \"category\": \"form\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"variant\",\n \"type\": \"'default' | 'secondary' | 'destructive' | 'outline' | 'ghost' | 'link'\",\n \"default\": \"'default'\",\n \"required\": false,\n \"description\": \"Visual style variant\"\n },\n {\n \"name\": \"size\",\n \"type\": \"'default' | 'sm' | 'lg' | 'icon'\",\n \"default\": \"'default'\",\n \"required\": false,\n \"description\": \"Size of the button\"\n },\n {\n \"name\": \"type\",\n \"type\": \"'button' | 'submit' | 'reset'\",\n \"default\": \"'button'\",\n \"required\": false,\n \"description\": \"HTML button type\"\n },\n {\n \"name\": \"href\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"If provided, renders as an anchor link\"\n },\n {\n \"name\": \"disabled\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Disables the button\"\n },\n {\n \"name\": \"loading\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Shows loading spinner\"\n },\n {\n \"name\": \"loadingText\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Text to show during loading (replaces children)\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n },\n {\n \"name\": \"onclick\",\n \"type\": \"(e: MouseEvent) => void\",\n \"required\": false,\n \"description\": \"Click handler\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"variant\",\n \"values\": [\n \"default\",\n \"secondary\",\n \"destructive\",\n \"outline\",\n \"ghost\",\n \"link\"\n ],\n \"default\": \"default\"\n },\n {\n \"name\": \"size\",\n \"values\": [\n \"default\",\n \"sm\",\n \"lg\",\n \"icon\"\n ],\n \"default\": \"default\"\n },\n {\n \"name\": \"type\",\n \"values\": [\n \"button\",\n \"submit\",\n \"reset\"\n ],\n \"default\": \"button\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Button>Click Me</Button>\"\n },\n {\n \"title\": \"Default\",\n \"description\": \"The primary action button with solid background.\",\n \"code\": \"<Button variant=\\\"default\\\">Default Button</Button>\"\n },\n {\n \"title\": \"Secondary\",\n \"description\": \"For secondary actions that need less visual emphasis.\",\n \"code\": \"<Button variant=\\\"secondary\\\">Secondary Button</Button>\"\n },\n {\n \"title\": \"Destructive\",\n \"description\": \"For dangerous or irreversible actions like delete.\",\n \"code\": \"<Button variant=\\\"destructive\\\">Delete</Button>\"\n },\n {\n \"title\": \"Outline\",\n \"description\": \"Bordered button with transparent background.\",\n \"code\": \"<Button variant=\\\"outline\\\">Outline Button</Button>\"\n },\n {\n \"title\": \"Ghost\",\n \"description\": \"Minimal button with no background until hovered.\",\n \"code\": \"<Button variant=\\\"ghost\\\">Ghost Button</Button>\"\n },\n {\n \"title\": \"Link\",\n \"description\": \"Styled as an inline text link.\",\n \"code\": \"<Button variant=\\\"link\\\">Link Button</Button>\"\n },\n {\n \"title\": \"Disabled\",\n \"code\": \"<Button disabled>Disabled</Button>\"\n },\n {\n \"title\": \"Loading\",\n \"description\": \"Shows a spinner and optionally replaces the text:\",\n \"code\": \"<Button loading>Submit</Button>\\n<Button loading loadingText=\\\"Saving...\\\">Save</Button>\"\n },\n {\n \"title\": \"Button Group\",\n \"code\": \"<div class=\\\"flex gap-2\\\">\\n <Button variant=\\\"outline\\\">Cancel</Button>\\n <Button>Save Changes</Button>\\n</div>\"\n },\n {\n \"title\": \"Full Width Button\",\n \"code\": \"<Button class=\\\"w-full\\\">Full Width Button</Button>\"\n },\n {\n \"title\": \"Async Action\",\n \"code\": \"<script>\\n let loading = $state(false);\\n\\n async function handleSave() {\\n loading = true;\\n try {\\n await saveData();\\n } finally {\\n loading = false;\\n }\\n }\\n</script>\\n\\n<Button {loading} loadingText=\\\"Saving...\\\" onclick={handleSave}>Save</Button>\"\n }\n ],\n \"relatedComponents\": [\n \"Input\",\n \"FormField\",\n \"Dialog\"\n ]\n },\n {\n \"name\": \"CandlestickChart\",\n \"description\": \"Financial OHLC data with volume bars\",\n \"category\": \"chart\",\n \"importPath\": \"@classic-homes/charts-svelte\",\n \"props\": [\n {\n \"name\": \"data\",\n \"type\": \"CandlestickData\",\n \"required\": true,\n \"description\": \"OHLC data with optional volume\"\n },\n {\n \"name\": \"showVolume\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Display volume bars below chart\"\n },\n {\n \"name\": \"onClick\",\n \"type\": \"(params: CandlestickEventParams) => void\",\n \"required\": false,\n \"description\": \"Callback when clicked\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": true,\n \"description\": \"Chart title for accessibility\"\n },\n {\n \"name\": \"height\",\n \"type\": \"number | string\",\n \"default\": \"400\",\n \"required\": false,\n \"description\": \"Chart height\"\n },\n {\n \"name\": \"theme\",\n \"type\": \"'light' | 'dark' | 'auto'\",\n \"default\": \"'auto'\",\n \"required\": false,\n \"description\": \"Theme preference\"\n },\n {\n \"name\": \"showTooltip\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show tooltip on hover\"\n },\n {\n \"name\": \"showGrid\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show grid lines\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"theme\",\n \"values\": [\n \"light\",\n \"dark\",\n \"auto\"\n ],\n \"default\": \"auto\"\n }\n ],\n \"slots\": [],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { CandlestickChart } from '@classic-homes/charts-svelte';\\n\\n const data = {\\n dates: ['2024-01', '2024-02', '2024-03', '2024-04'],\\n data: [\\n { open: 20, close: 34, low: 10, high: 38 },\\n { open: 40, close: 35, low: 30, high: 50 },\\n { open: 31, close: 38, low: 28, high: 48 },\\n { open: 38, close: 30, low: 25, high: 44 },\\n ],\\n volume: [100, 120, 90, 140],\\n };\\n</script>\\n\\n<CandlestickChart title=\\\"Stock Price\\\" {data} showVolume height={400} />\"\n },\n {\n \"title\": \"With Volume\",\n \"code\": \"<CandlestickChart title=\\\"AAPL Stock\\\" {data} showVolume height={500} />\"\n },\n {\n \"title\": \"Without Volume\",\n \"code\": \"<CandlestickChart\\n title=\\\"Price History\\\"\\n data={{\\n dates: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'],\\n data: [\\n { open: 100, close: 110, low: 95, high: 115 },\\n { open: 110, close: 105, low: 100, high: 120 },\\n { open: 105, close: 115, low: 102, high: 118 },\\n { open: 115, close: 108, low: 105, high: 120 },\\n { open: 108, close: 125, low: 105, high: 128 },\\n ],\\n }}\\n/>\"\n }\n ],\n \"relatedComponents\": [\n \"LineChart\",\n \"BarChart\"\n ]\n },\n {\n \"name\": \"Card\",\n \"description\": \"Container component for grouping related content\",\n \"category\": \"layout\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Card>\\n <CardHeader>\\n <CardTitle>Card Title</CardTitle>\\n <CardDescription>Card description text</CardDescription>\\n </CardHeader>\\n <CardContent>\\n <p>Card content goes here.</p>\\n </CardContent>\\n <CardFooter>\\n <Button>Action</Button>\\n </CardFooter>\\n</Card>\"\n },\n {\n \"title\": \"Default\",\n \"description\": \"Standard card with 1px border:\",\n \"code\": \"<Card variant=\\\"default\\\">\\n <CardContent>Default card</CardContent>\\n</Card>\"\n },\n {\n \"title\": \"Featured\",\n \"description\": \"Emphasized card with 2px border:\",\n \"code\": \"<Card variant=\\\"featured\\\">\\n <CardContent>Featured card with thicker border</CardContent>\\n</Card>\"\n },\n {\n \"title\": \"Highlight\",\n \"description\": \"Positive/info callout with teal border:\",\n \"code\": \"<Card variant=\\\"highlight\\\">\\n <CardContent>Highlight card for important info</CardContent>\\n</Card>\"\n },\n {\n \"title\": \"Warning\",\n \"description\": \"Alert card with red border:\",\n \"code\": \"<Card variant=\\\"warning\\\">\\n <CardContent>Warning card for alerts</CardContent>\\n</Card>\"\n },\n {\n \"title\": \"Profile Card\",\n \"code\": \"<Card class=\\\"max-w-sm\\\">\\n <CardHeader>\\n <div class=\\\"flex items-center gap-4\\\">\\n <Avatar>\\n <AvatarImage src=\\\"/avatar.jpg\\\" alt=\\\"User\\\" />\\n <AvatarFallback>JD</AvatarFallback>\\n </Avatar>\\n <div>\\n <CardTitle>Jane Doe</CardTitle>\\n <CardDescription>Product Designer</CardDescription>\\n </div>\\n </div>\\n </CardHeader>\\n <CardContent>\\n <p class=\\\"text-sm\\\">Building beautiful interfaces at Acme Corp.</p>\\n </CardContent>\\n <CardFooter class=\\\"gap-2\\\">\\n <Button variant=\\\"outline\\\" size=\\\"sm\\\">Message</Button>\\n <Button size=\\\"sm\\\">Follow</Button>\\n </CardFooter>\\n</Card>\"\n },\n {\n \"title\": \"Pricing Card\",\n \"code\": \"<Card variant=\\\"featured\\\" class=\\\"max-w-sm text-center\\\">\\n <CardHeader>\\n <CardTitle>Pro Plan</CardTitle>\\n <CardDescription>For growing teams</CardDescription>\\n </CardHeader>\\n <CardContent>\\n <div class=\\\"text-4xl font-bold\\\">$29</div>\\n <p class=\\\"text-muted-foreground\\\">/month</p>\\n <ul class=\\\"mt-4 space-y-2 text-left\\\">\\n <li>Unlimited projects</li>\\n <li>Priority support</li>\\n <li>Advanced analytics</li>\\n </ul>\\n </CardContent>\\n <CardFooter>\\n <Button class=\\\"w-full\\\">Get Started</Button>\\n </CardFooter>\\n</Card>\"\n },\n {\n \"title\": \"Stats Card\",\n \"code\": \"<Card>\\n <CardHeader class=\\\"flex-row items-center justify-between pb-2\\\">\\n <CardTitle class=\\\"text-sm font-medium\\\">Total Revenue</CardTitle>\\n <svg class=\\\"h-4 w-4 text-muted-foreground\\\"><!-- icon --></svg>\\n </CardHeader>\\n <CardContent>\\n <div class=\\\"text-2xl font-bold\\\">$45,231.89</div>\\n <p class=\\\"text-xs text-muted-foreground\\\">+20.1% from last month</p>\\n </CardContent>\\n</Card>\"\n },\n {\n \"title\": \"Card Grid\",\n \"code\": \"<div class=\\\"grid gap-4 md:grid-cols-2 lg:grid-cols-3\\\">\\n {#each items as item}\\n <Card interactive>\\n <CardHeader>\\n <CardTitle>{item.title}</CardTitle>\\n </CardHeader>\\n <CardContent>\\n <p>{item.description}</p>\\n </CardContent>\\n </Card>\\n {/each}\\n</div>\"\n },\n {\n \"title\": \"Simple Content Card\",\n \"code\": \"<Card>\\n <CardContent class=\\\"pt-6\\\">\\n <p>Simple card with just content, no header or footer.</p>\\n </CardContent>\\n</Card>\"\n }\n ],\n \"relatedComponents\": [\n \"Alert\",\n \"Dialog\"\n ]\n },\n {\n \"name\": \"CardContent\",\n \"description\": \"Main content area container for Card components\",\n \"category\": \"layout\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Card>\\n <CardContent>\\n <p>This is the main content of the card.</p>\\n </CardContent>\\n</Card>\"\n },\n {\n \"title\": \"With Header\",\n \"code\": \"<Card>\\n <CardHeader>\\n <CardTitle>Settings</CardTitle>\\n </CardHeader>\\n <CardContent>\\n <p>Adjust your preferences below.</p>\\n </CardContent>\\n</Card>\"\n },\n {\n \"title\": \"Standalone Content\",\n \"description\": \"When using without a header, add top padding:\",\n \"code\": \"<Card>\\n <CardContent class=\\\"pt-6\\\">\\n <p>Simple card with just content.</p>\\n </CardContent>\\n</Card>\"\n },\n {\n \"title\": \"With Form Elements\",\n \"code\": \"<CardContent>\\n <div class=\\\"space-y-4\\\">\\n <FormField label=\\\"Email\\\" name=\\\"email\\\" />\\n <FormField label=\\\"Password\\\" name=\\\"password\\\" type=\\\"password\\\" />\\n </div>\\n</CardContent>\"\n },\n {\n \"title\": \"Rich Content\",\n \"code\": \"<CardContent>\\n <div class=\\\"flex items-center gap-4\\\">\\n <Avatar>\\n <AvatarImage src=\\\"/user.jpg\\\" alt=\\\"User\\\" />\\n <AvatarFallback>JD</AvatarFallback>\\n </Avatar>\\n <div>\\n <p class=\\\"font-medium\\\">John Doe</p>\\n <p class=\\\"text-sm text-muted-foreground\\\">Developer</p>\\n </div>\\n </div>\\n</CardContent>\"\n }\n ],\n \"relatedComponents\": [\n \"Card\",\n \"CardHeader\",\n \"CardFooter\"\n ]\n },\n {\n \"name\": \"CardDescription\",\n \"description\": \"Secondary text component for Card headers\",\n \"category\": \"layout\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Card>\\n <CardHeader>\\n <CardTitle>Card Title</CardTitle>\\n <CardDescription>This is a description of the card content.</CardDescription>\\n </CardHeader>\\n</Card>\"\n },\n {\n \"title\": \"Descriptive Text\",\n \"code\": \"<CardDescription>\\n Configure your notification preferences and choose how you want to be contacted.\\n</CardDescription>\"\n },\n {\n \"title\": \"With Custom Styling\",\n \"code\": \"<CardDescription class=\\\"text-xs\\\">Last updated 2 hours ago</CardDescription>\"\n },\n {\n \"title\": \"Multiple Lines\",\n \"code\": \"<CardDescription>\\n Your subscription includes unlimited access to all premium features. Upgrade anytime to unlock\\n more.\\n</CardDescription>\"\n }\n ],\n \"relatedComponents\": [\n \"Card\",\n \"CardHeader\",\n \"CardTitle\"\n ]\n },\n {\n \"name\": \"CardFooter\",\n \"description\": \"Footer section container for Card action buttons\",\n \"category\": \"layout\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Card>\\n <CardContent>\\n <p>Card content here.</p>\\n </CardContent>\\n <CardFooter>\\n <Button>Save Changes</Button>\\n </CardFooter>\\n</Card>\"\n },\n {\n \"title\": \"Multiple Actions\",\n \"code\": \"<CardFooter class=\\\"gap-2\\\">\\n <Button variant=\\\"outline\\\">Cancel</Button>\\n <Button>Save</Button>\\n</CardFooter>\"\n },\n {\n \"title\": \"Right-Aligned Actions\",\n \"code\": \"<CardFooter class=\\\"justify-end gap-2\\\">\\n <Button variant=\\\"ghost\\\">Skip</Button>\\n <Button>Continue</Button>\\n</CardFooter>\"\n },\n {\n \"title\": \"Space Between\",\n \"code\": \"<CardFooter class=\\\"justify-between\\\">\\n <Button variant=\\\"ghost\\\">Back</Button>\\n <Button>Next</Button>\\n</CardFooter>\"\n },\n {\n \"title\": \"Full-Width Button\",\n \"code\": \"<CardFooter>\\n <Button class=\\\"w-full\\\">Get Started</Button>\\n</CardFooter>\"\n },\n {\n \"title\": \"With Summary Text\",\n \"code\": \"<CardFooter class=\\\"justify-between\\\">\\n <span class=\\\"text-sm text-muted-foreground\\\">2 items selected</span>\\n <Button size=\\\"sm\\\">Delete Selected</Button>\\n</CardFooter>\"\n }\n ],\n \"relatedComponents\": [\n \"Card\",\n \"CardContent\",\n \"Button\"\n ]\n },\n {\n \"name\": \"CardHeader\",\n \"description\": \"Header section container for Card components with title and description\",\n \"category\": \"layout\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"variant\",\n \"type\": \"'default' | 'compact' | 'bordered' | 'shaded'\",\n \"default\": \"'default'\",\n \"required\": false,\n \"description\": \"Header style variant\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"variant\",\n \"values\": [\n \"default\",\n \"compact\",\n \"bordered\",\n \"shaded\"\n ],\n \"default\": \"default\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Card>\\n <CardHeader>\\n <CardTitle>Card Title</CardTitle>\\n <CardDescription>Card description text</CardDescription>\\n </CardHeader>\\n</Card>\"\n },\n {\n \"title\": \"Default\",\n \"description\": \"Standard padding (p-6):\",\n \"code\": \"<CardHeader variant=\\\"default\\\">\\n <CardTitle>Default Header</CardTitle>\\n</CardHeader>\"\n },\n {\n \"title\": \"Compact\",\n \"description\": \"Reduced padding (p-4):\",\n \"code\": \"<CardHeader variant=\\\"compact\\\">\\n <CardTitle>Compact Header</CardTitle>\\n</CardHeader>\"\n },\n {\n \"title\": \"Bordered\",\n \"description\": \"Header with bottom border:\",\n \"code\": \"<CardHeader variant=\\\"bordered\\\">\\n <CardTitle>Bordered Header</CardTitle>\\n</CardHeader>\"\n },\n {\n \"title\": \"Shaded\",\n \"description\": \"Header with muted background:\",\n \"code\": \"<CardHeader variant=\\\"shaded\\\">\\n <CardTitle>Shaded Header</CardTitle>\\n</CardHeader>\"\n }\n ],\n \"relatedComponents\": [\n \"Card\",\n \"CardTitle\",\n \"CardDescription\"\n ]\n },\n {\n \"name\": \"CardTitle\",\n \"description\": \"Title heading component for Card headers\",\n \"category\": \"layout\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Card>\\n <CardHeader>\\n <CardTitle>Card Title</CardTitle>\\n </CardHeader>\\n</Card>\"\n },\n {\n \"title\": \"With Description\",\n \"code\": \"<CardHeader>\\n <CardTitle>Account Settings</CardTitle>\\n <CardDescription>Manage your account preferences</CardDescription>\\n</CardHeader>\"\n },\n {\n \"title\": \"Custom Styling\",\n \"code\": \"<CardTitle class=\\\"text-primary\\\">Featured Title</CardTitle>\"\n },\n {\n \"title\": \"In Stats Card\",\n \"code\": \"<CardHeader class=\\\"flex-row items-center justify-between pb-2\\\">\\n <CardTitle class=\\\"text-sm font-medium\\\">Total Revenue</CardTitle>\\n <Icon name=\\\"dollar\\\" class=\\\"h-4 w-4 text-muted-foreground\\\" />\\n</CardHeader>\"\n }\n ],\n \"relatedComponents\": [\n \"Card\",\n \"CardHeader\",\n \"CardDescription\"\n ]\n },\n {\n \"name\": \"ChartContainer\",\n \"description\": \"Base wrapper component for charts with loading, error, and empty states\",\n \"category\": \"chart\",\n \"importPath\": \"@classic-homes/charts-svelte\",\n \"props\": [\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": true,\n \"description\": \"Chart title for accessibility (aria-label)\"\n },\n {\n \"name\": \"description\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Chart description for screen readers\"\n },\n {\n \"name\": \"height\",\n \"type\": \"number | string\",\n \"default\": \"400\",\n \"required\": false,\n \"description\": \"Chart container height\"\n },\n {\n \"name\": \"loading\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Show loading skeleton\"\n },\n {\n \"name\": \"error\",\n \"type\": \"string | null\",\n \"required\": false,\n \"description\": \"Error message to display\"\n },\n {\n \"name\": \"empty\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Show empty state\"\n },\n {\n \"name\": \"emptyMessage\",\n \"type\": \"string\",\n \"default\": \"'No data available'\",\n \"required\": false,\n \"description\": \"Custom empty state message\"\n },\n {\n \"name\": \"onRetry\",\n \"type\": \"() => void\",\n \"required\": false,\n \"description\": \"Callback for retry button in error state\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes for chart area\"\n },\n {\n \"name\": \"wrapperClass\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes for outer wrapper\"\n }\n ],\n \"variants\": [],\n \"slots\": [],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { ChartContainer } from '@classic-homes/charts-svelte';\\n</script>\\n\\n<ChartContainer title=\\\"Sales Overview\\\" height={400}>\\n <!-- Your chart content here -->\\n</ChartContainer>\"\n },\n {\n \"title\": \"With Loading State\",\n \"code\": \"<script>\\n import { ChartContainer, LineChart } from '@classic-homes/charts-svelte';\\n\\n let loading = $state(true);\\n let data = $state(null);\\n</script>\\n\\n<ChartContainer title=\\\"Revenue\\\" {loading}>\\n {#if data}\\n <LineChart {data} title=\\\"Revenue\\\" />\\n {/if}\\n</ChartContainer>\"\n },\n {\n \"title\": \"With Error State\",\n \"code\": \"<script>\\n import { ChartContainer, BarChart } from '@classic-homes/charts-svelte';\\n\\n let error = $state(null);\\n\\n async function fetchData() {\\n try {\\n // fetch data\\n } catch (e) {\\n error = e.message;\\n }\\n }\\n</script>\\n\\n<ChartContainer title=\\\"Analytics\\\" {error} onRetry={fetchData}>\\n <BarChart {data} title=\\\"Analytics\\\" />\\n</ChartContainer>\"\n },\n {\n \"title\": \"With Empty State\",\n \"code\": \"<script>\\n import { ChartContainer, AreaChart } from '@classic-homes/charts-svelte';\\n\\n let data = $state([]);\\n</script>\\n\\n<ChartContainer\\n title=\\\"User Activity\\\"\\n empty={data.length === 0}\\n emptyMessage=\\\"No activity recorded yet\\\"\\n>\\n <AreaChart {data} title=\\\"User Activity\\\" />\\n</ChartContainer>\"\n },\n {\n \"title\": \"Custom Styling\",\n \"code\": \"<ChartContainer title=\\\"Dashboard Chart\\\" wrapperClass=\\\"shadow-lg\\\" class=\\\"p-4\\\">\\n <PieChart {data} title=\\\"Distribution\\\" />\\n</ChartContainer>\"\n }\n ],\n \"relatedComponents\": [\n \"ChartSkeleton\",\n \"ChartError\",\n \"ChartEmpty\"\n ]\n },\n {\n \"name\": \"ChartEmpty\",\n \"description\": \"Empty state component displayed when chart has no data\",\n \"category\": \"chart\",\n \"importPath\": \"@classic-homes/charts-svelte\",\n \"props\": [\n {\n \"name\": \"message\",\n \"type\": \"string\",\n \"default\": \"'No data available'\",\n \"required\": false,\n \"description\": \"Empty state message\"\n },\n {\n \"name\": \"height\",\n \"type\": \"number | string\",\n \"default\": \"400\",\n \"required\": false,\n \"description\": \"Component height\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { ChartEmpty } from '@classic-homes/charts-svelte';\\n</script>\\n\\n<ChartEmpty />\"\n },\n {\n \"title\": \"Custom Message\",\n \"code\": \"<ChartEmpty message=\\\"No sales data for this period\\\" />\"\n },\n {\n \"title\": \"Custom Height\",\n \"code\": \"<ChartEmpty height={300} message=\\\"Start adding data to see your chart\\\" />\"\n },\n {\n \"title\": \"Conditional Rendering\",\n \"code\": \"<script>\\n import { ChartEmpty, LineChart } from '@classic-homes/charts-svelte';\\n\\n let data = $state([]);\\n</script>\\n\\n{#if data.length === 0}\\n <ChartEmpty message=\\\"No activity recorded\\\" />\\n{:else}\\n <LineChart {data} title=\\\"Activity\\\" />\\n{/if}\"\n },\n {\n \"title\": \"With Custom Styling\",\n \"code\": \"<ChartEmpty message=\\\"No results found\\\" class=\\\"rounded-xl bg-muted/30\\\" height={250} />\"\n }\n ],\n \"relatedComponents\": [\n \"ChartContainer\",\n \"ChartError\",\n \"ChartSkeleton\"\n ]\n },\n {\n \"name\": \"ChartError\",\n \"description\": \"Error state component for charts with optional retry functionality\",\n \"category\": \"chart\",\n \"importPath\": \"@classic-homes/charts-svelte\",\n \"props\": [\n {\n \"name\": \"message\",\n \"type\": \"string\",\n \"required\": true,\n \"description\": \"Error message to display\"\n },\n {\n \"name\": \"height\",\n \"type\": \"number | string\",\n \"default\": \"400\",\n \"required\": false,\n \"description\": \"Component height\"\n },\n {\n \"name\": \"onRetry\",\n \"type\": \"() => void\",\n \"required\": false,\n \"description\": \"Callback when retry button is clicked\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { ChartError } from '@classic-homes/charts-svelte';\\n</script>\\n\\n<ChartError message=\\\"Failed to load chart data\\\" />\"\n },\n {\n \"title\": \"With Retry Button\",\n \"code\": \"<script>\\n import { ChartError } from '@classic-homes/charts-svelte';\\n\\n async function fetchData() {\\n // Retry logic\\n }\\n</script>\\n\\n<ChartError message=\\\"Network error occurred\\\" onRetry={fetchData} />\"\n },\n {\n \"title\": \"Custom Height\",\n \"code\": \"<ChartError message=\\\"Unable to process data\\\" height={300} onRetry={handleRetry} />\"\n },\n {\n \"title\": \"Conditional Error Handling\",\n \"code\": \"<script>\\n import { ChartError, BarChart } from '@classic-homes/charts-svelte';\\n\\n let error = $state(null);\\n let data = $state(null);\\n\\n async function loadData() {\\n try {\\n error = null;\\n data = await fetchChartData();\\n } catch (e) {\\n error = e.message;\\n }\\n }\\n</script>\\n\\n{#if error}\\n <ChartError message={error} onRetry={loadData} />\\n{:else if data}\\n <BarChart {data} title=\\\"Sales\\\" />\\n{/if}\"\n },\n {\n \"title\": \"With Custom Styling\",\n \"code\": \"<ChartError\\n message=\\\"Service temporarily unavailable\\\"\\n class=\\\"rounded-xl\\\"\\n onRetry={() => location.reload()}\\n/>\"\n }\n ],\n \"relatedComponents\": [\n \"ChartContainer\",\n \"ChartEmpty\",\n \"ChartSkeleton\"\n ]\n },\n {\n \"name\": \"ChartSkeleton\",\n \"description\": \"Loading skeleton placeholder for charts with animated bars\",\n \"category\": \"chart\",\n \"importPath\": \"@classic-homes/charts-svelte\",\n \"props\": [\n {\n \"name\": \"height\",\n \"type\": \"number | string\",\n \"default\": \"400\",\n \"required\": false,\n \"description\": \"Skeleton height\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { ChartSkeleton } from '@classic-homes/charts-svelte';\\n</script>\\n\\n<ChartSkeleton />\"\n },\n {\n \"title\": \"Custom Height\",\n \"code\": \"<ChartSkeleton height={300} />\"\n },\n {\n \"title\": \"With Custom Class\",\n \"code\": \"<ChartSkeleton class=\\\"rounded-xl shadow-md\\\" />\"\n },\n {\n \"title\": \"Conditional Loading\",\n \"code\": \"<script>\\n import { ChartSkeleton, LineChart } from '@classic-homes/charts-svelte';\\n\\n let loading = $state(true);\\n let data = $state(null);\\n\\n async function loadData() {\\n loading = true;\\n data = await fetchChartData();\\n loading = false;\\n }\\n</script>\\n\\n{#if loading}\\n <ChartSkeleton height={400} />\\n{:else}\\n <LineChart {data} title=\\\"Revenue\\\" />\\n{/if}\"\n },\n {\n \"title\": \"In Card\",\n \"code\": \"<script>\\n import { ChartSkeleton, AreaChart } from '@classic-homes/charts-svelte';\\n import { Card, CardHeader, CardTitle, CardContent } from '@classic-homes/theme-svelte';\\n</script>\\n\\n<Card>\\n <CardHeader>\\n <CardTitle>Analytics</CardTitle>\\n </CardHeader>\\n <CardContent>\\n {#if loading}\\n <ChartSkeleton height={300} />\\n {:else}\\n <AreaChart {data} title=\\\"Monthly Users\\\" />\\n {/if}\\n </CardContent>\\n</Card>\"\n },\n {\n \"title\": \"Multiple Skeletons\",\n \"code\": \"<div class=\\\"grid grid-cols-2 gap-4\\\">\\n <ChartSkeleton height={250} />\\n <ChartSkeleton height={250} />\\n</div>\"\n }\n ],\n \"relatedComponents\": [\n \"ChartContainer\",\n \"ChartError\",\n \"ChartEmpty\",\n \"Skeleton\"\n ]\n },\n {\n \"name\": \"Checkbox\",\n \"description\": \"Checkbox input for boolean selections and multiple choice options\",\n \"category\": \"form\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"checked\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Whether the checkbox is checked (bindable)\"\n },\n {\n \"name\": \"disabled\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Disables the checkbox\"\n },\n {\n \"name\": \"required\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Marks as required\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Name attribute for forms\"\n },\n {\n \"name\": \"value\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Value attribute for forms\"\n },\n {\n \"name\": \"id\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Element ID for label association\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n },\n {\n \"name\": \"onCheckedChange\",\n \"type\": \"(checked: boolean) => void\",\n \"required\": false,\n \"description\": \"Callback when checked state changes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n let checked = $state(false);\\n</script>\\n\\n<Checkbox bind:checked />\"\n },\n {\n \"title\": \"Checked\",\n \"code\": \"<Checkbox checked />\"\n },\n {\n \"title\": \"Disabled\",\n \"code\": \"<Checkbox disabled />\\n<Checkbox disabled checked />\"\n },\n {\n \"title\": \"Required\",\n \"code\": \"<Checkbox required id=\\\"required-checkbox\\\" />\"\n },\n {\n \"title\": \"Terms Agreement\",\n \"code\": \"<script>\\n let agreed = $state(false);\\n</script>\\n\\n<div class=\\\"flex items-start gap-2\\\">\\n <Checkbox id=\\\"agree\\\" bind:checked={agreed} class=\\\"mt-1\\\" />\\n <Label for=\\\"agree\\\" class=\\\"leading-normal\\\">\\n I agree to the <a href=\\\"/terms\\\" class=\\\"text-primary underline\\\">Terms of Service</a>\\n and <a href=\\\"/privacy\\\" class=\\\"text-primary underline\\\">Privacy Policy</a>\\n </Label>\\n</div>\\n\\n<Button disabled={!agreed}>Continue</Button>\"\n },\n {\n \"title\": \"Feature Selection\",\n \"code\": \"<script>\\n let features = $state(['basic']);\\n\\n function toggleFeature(feature: string) {\\n if (features.includes(feature)) {\\n features = features.filter((f) => f !== feature);\\n } else {\\n features = [...features, feature];\\n }\\n }\\n</script>\\n\\n<div class=\\\"space-y-2\\\">\\n <div class=\\\"flex items-center gap-2\\\">\\n <Checkbox\\n id=\\\"basic\\\"\\n checked={features.includes('basic')}\\n onCheckedChange={() => toggleFeature('basic')}\\n />\\n <Label for=\\\"basic\\\">Basic features</Label>\\n </div>\\n <div class=\\\"flex items-center gap-2\\\">\\n <Checkbox\\n id=\\\"advanced\\\"\\n checked={features.includes('advanced')}\\n onCheckedChange={() => toggleFeature('advanced')}\\n />\\n <Label for=\\\"advanced\\\">Advanced features</Label>\\n </div>\\n <div class=\\\"flex items-center gap-2\\\">\\n <Checkbox\\n id=\\\"premium\\\"\\n checked={features.includes('premium')}\\n onCheckedChange={() => toggleFeature('premium')}\\n />\\n <Label for=\\\"premium\\\">Premium features</Label>\\n </div>\\n</div>\"\n },\n {\n \"title\": \"Form Submission\",\n \"code\": \"<form onsubmit={handleSubmit}>\\n <Checkbox name=\\\"newsletter\\\" value=\\\"subscribed\\\" />\\n <button type=\\\"submit\\\">Submit</button>\\n</form>\"\n }\n ],\n \"relatedComponents\": [\n \"Switch\",\n \"RadioGroup\",\n \"Label\"\n ]\n },\n {\n \"name\": \"Combobox\",\n \"description\": \"Searchable select with async loading support\",\n \"category\": \"form\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"value\",\n \"type\": \"string\",\n \"default\": \"''\",\n \"required\": false,\n \"description\": \"Current selected value (bindable)\"\n },\n {\n \"name\": \"options\",\n \"type\": \"ComboboxOption[]\",\n \"default\": \"Required\",\n \"required\": false,\n \"description\": \"Array of options\"\n },\n {\n \"name\": \"placeholder\",\n \"type\": \"string\",\n \"default\": \"'Select an option...'\",\n \"required\": false,\n \"description\": \"Placeholder text\"\n },\n {\n \"name\": \"emptyMessage\",\n \"type\": \"string\",\n \"default\": \"'No results found.'\",\n \"required\": false,\n \"description\": \"Message when no options match\"\n },\n {\n \"name\": \"disabled\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Disables the combobox\"\n },\n {\n \"name\": \"required\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Marks as required\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Name attribute for forms\"\n },\n {\n \"name\": \"id\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Element ID (auto-generated if empty)\"\n },\n {\n \"name\": \"label\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Label text\"\n },\n {\n \"name\": \"hint\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Hint text below the input\"\n },\n {\n \"name\": \"error\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Error message\"\n },\n {\n \"name\": \"loading\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Shows loading state\"\n },\n {\n \"name\": \"debounceMs\",\n \"type\": \"number\",\n \"default\": \"300\",\n \"required\": false,\n \"description\": \"Debounce time for search\"\n },\n {\n \"name\": \"onValueChange\",\n \"type\": \"(value: string) => void\",\n \"required\": false,\n \"description\": \"Callback when value changes\"\n },\n {\n \"name\": \"onSearch\",\n \"type\": \"(query: string) => void\",\n \"required\": false,\n \"description\": \"Callback for search queries\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n let value = $state('');\\n\\n const options = [\\n { value: 'apple', label: 'Apple' },\\n { value: 'banana', label: 'Banana' },\\n { value: 'orange', label: 'Orange' },\\n ];\\n</script>\\n\\n<Combobox {options} bind:value placeholder=\\\"Select a fruit...\\\" />\"\n },\n {\n \"title\": \"User Search\",\n \"code\": \"<script>\\n let selectedUser = $state('');\\n let users = $state([]);\\n let loading = $state(false);\\n\\n async function searchUsers(query: string) {\\n if (!query) {\\n users = [];\\n return;\\n }\\n loading = true;\\n const response = await fetch(`/api/users?search=${query}`);\\n users = await response.json();\\n loading = false;\\n }\\n</script>\\n\\n<Combobox\\n label=\\\"User\\\"\\n options={users}\\n bind:value={selectedUser}\\n onSearch={searchUsers}\\n {loading}\\n placeholder=\\\"Search users...\\\"\\n emptyMessage=\\\"No users found\\\"\\n/>\"\n },\n {\n \"title\": \"Location Autocomplete\",\n \"code\": \"<Combobox\\n label=\\\"Location\\\"\\n hint=\\\"Enter a city name or zip code\\\"\\n options={locations}\\n bind:value\\n onSearch={searchLocations}\\n placeholder=\\\"Enter city or zip code...\\\"\\n emptyMessage=\\\"No locations found\\\"\\n/>\"\n }\n ],\n \"relatedComponents\": [\n \"Select\",\n \"MultiSelect\"\n ]\n },\n {\n \"name\": \"DashboardLayout\",\n \"description\": \"Complete dashboard layout with responsive sidebar and header\",\n \"category\": \"layout\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"navigation\",\n \"type\": \"NavSection[]\",\n \"required\": false,\n \"description\": \"Navigation sections for sidebar\"\n },\n {\n \"name\": \"user\",\n \"type\": \"User\",\n \"required\": false,\n \"description\": \"Current user data\"\n },\n {\n \"name\": \"appName\",\n \"type\": \"string\",\n \"default\": \"'Dashboard'\",\n \"required\": false,\n \"description\": \"Application name\"\n },\n {\n \"name\": \"pageTitle\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Page title in header\"\n },\n {\n \"name\": \"backLink\",\n \"type\": \"BackLink\",\n \"required\": false,\n \"description\": \"Back link at top of navigation\"\n },\n {\n \"name\": \"sidebarVariant\",\n \"type\": \"'light' | 'dark'\",\n \"default\": \"'light'\",\n \"required\": false,\n \"description\": \"Sidebar visual variant\"\n },\n {\n \"name\": \"sidebarCollapsed\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Initial collapsed state\"\n },\n {\n \"name\": \"showHeader\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Whether to show header\"\n },\n {\n \"name\": \"logo\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Custom logo\"\n },\n {\n \"name\": \"icon\",\n \"type\": \"Snippet<[NavItem]>\",\n \"required\": false,\n \"description\": \"Custom icon renderer\"\n },\n {\n \"name\": \"quickLinks\",\n \"type\": \"QuickLink[]\",\n \"required\": false,\n \"description\": \"Quick links at bottom\"\n },\n {\n \"name\": \"quickLinksDisplay\",\n \"type\": \"'list' | 'icons'\",\n \"default\": \"'list'\",\n \"required\": false,\n \"description\": \"Quick links display mode\"\n },\n {\n \"name\": \"onNavigate\",\n \"type\": \"(item: NavItem) => void\",\n \"required\": false,\n \"description\": \"Navigation callback\"\n },\n {\n \"name\": \"headerStart\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Content after toggle button\"\n },\n {\n \"name\": \"headerEnd\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Content at end of header\"\n },\n {\n \"name\": \"userMenu\",\n \"type\": \"Snippet<[User]>\",\n \"required\": false,\n \"description\": \"Custom user menu\"\n },\n {\n \"name\": \"sidebarFooter\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Sidebar footer content\"\n },\n {\n \"name\": \"expandedWidth\",\n \"type\": \"number\",\n \"default\": \"256\",\n \"required\": false,\n \"description\": \"Expanded sidebar width (px)\"\n },\n {\n \"name\": \"collapsedWidth\",\n \"type\": \"number\",\n \"default\": \"64\",\n \"required\": false,\n \"description\": \"Collapsed sidebar width (px)\"\n },\n {\n \"name\": \"searchable\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Enable navigation search\"\n },\n {\n \"name\": \"searchPlaceholder\",\n \"type\": \"string\",\n \"default\": \"'Search...'\",\n \"required\": false,\n \"description\": \"Search input placeholder\"\n },\n {\n \"name\": \"headerSearch\",\n \"type\": \"HeaderSearchConfig\",\n \"required\": false,\n \"description\": \"Header search configuration\"\n },\n {\n \"name\": \"mobileBreakpoint\",\n \"type\": \"'sm' | 'md' | 'lg'\",\n \"default\": \"'lg'\",\n \"required\": false,\n \"description\": \"Mobile/desktop breakpoint\"\n },\n {\n \"name\": \"children\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Main content\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"sidebarVariant\",\n \"values\": [\n \"light\",\n \"dark\"\n ],\n \"default\": \"light\"\n },\n {\n \"name\": \"quickLinksDisplay\",\n \"values\": [\n \"list\",\n \"icons\"\n ],\n \"default\": \"list\"\n },\n {\n \"name\": \"mobileBreakpoint\",\n \"values\": [\n \"sm\",\n \"md\",\n \"lg\"\n ],\n \"default\": \"lg\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n const navigation = [\\n {\\n id: 'main',\\n title: 'Main',\\n items: [\\n { id: 'dashboard', name: 'Dashboard', href: '/dashboard', icon: 'home' },\\n { id: 'projects', name: 'Projects', href: '/projects', icon: 'folder' },\\n ],\\n },\\n ];\\n</script>\\n\\n<DashboardLayout {navigation}>\\n <h1>Dashboard Content</h1>\\n</DashboardLayout>\"\n }\n ],\n \"relatedComponents\": [\n \"Sidebar\",\n \"Header\",\n \"AppShell\"\n ]\n },\n {\n \"name\": \"DataTable\",\n \"description\": \"Powerful data table with TanStack Table - sorting, filtering, pagination, virtualization, and inline editing\",\n \"category\": \"data\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"data\",\n \"type\": \"T[]\",\n \"required\": false,\n \"description\": \"Array of data rows\"\n },\n {\n \"name\": \"columns\",\n \"type\": \"DataTableColumn<T>[]\",\n \"required\": false,\n \"description\": \"Column definitions\"\n },\n {\n \"name\": \"loading\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Show loading state\"\n },\n {\n \"name\": \"loadingRows\",\n \"type\": \"number\",\n \"default\": \"5\",\n \"required\": false,\n \"description\": \"Number of skeleton rows\"\n },\n {\n \"name\": \"emptyMessage\",\n \"type\": \"string\",\n \"default\": \"'No data available'\",\n \"required\": false,\n \"description\": \"Empty state message\"\n },\n {\n \"name\": \"sortColumn\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Current sort column ID (bindable)\"\n },\n {\n \"name\": \"sortDirection\",\n \"type\": \"'asc' | 'desc'\",\n \"default\": \"'asc'\",\n \"required\": false,\n \"description\": \"Sort direction (bindable)\"\n },\n {\n \"name\": \"onSort\",\n \"type\": \"(column: string, direction: 'asc' | 'desc') => void\",\n \"required\": false,\n \"description\": \"Sort callback\"\n },\n {\n \"name\": \"onRowClick\",\n \"type\": \"(row: T) => void\",\n \"required\": false,\n \"description\": \"Row click callback\"\n },\n {\n \"name\": \"caption\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Accessible caption\"\n },\n {\n \"name\": \"row\",\n \"type\": \"Snippet<[T, number]>\",\n \"required\": false,\n \"description\": \"Custom row renderer\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional classes\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"sortDirection\",\n \"values\": [\n \"asc\",\n \"desc\"\n ],\n \"default\": \"asc\"\n },\n {\n \"name\": \"onSort\",\n \"values\": [\n \"asc\",\n \"desc\"\n ]\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Creating a TanStack Table\",\n \"code\": \"<script lang=\\\"ts\\\">\\n import {\\n createDataTable,\\n type ColumnDef,\\n type SortingState,\\n type RowSelectionState,\\n } from '@classic-homes/theme-svelte';\\n\\n interface User {\\n id: number;\\n name: string;\\n email: string;\\n }\\n\\n // State\\n let sorting = $state<SortingState>([]);\\n let rowSelection = $state<RowSelectionState>({});\\n\\n // Column definitions (TanStack Table format)\\n const columns: ColumnDef<User>[] = [\\n { accessorKey: 'id', header: 'ID' },\\n { accessorKey: 'name', header: 'Name' },\\n { accessorKey: 'email', header: 'Email' },\\n ];\\n\\n // Create table instance\\n const tableApi = createDataTable<User>(() => ({\\n data: users,\\n columns,\\n state: { sorting, rowSelection },\\n onSortingChange: (updater) => {\\n sorting = typeof updater === 'function' ? updater(sorting) : updater;\\n },\\n onRowSelectionChange: (updater) => {\\n rowSelection = typeof updater === 'function' ? updater(rowSelection) : updater;\\n },\\n enableRowSelection: true,\\n enableSorting: true,\\n }));\\n\\n const table = $derived(tableApi.instance);\\n</script>\"\n },\n {\n \"title\": \"Row Selection\",\n \"description\": \"Enable checkbox selection for rows:\",\n \"code\": \"<script>\\n let rowSelection = $state<RowSelectionState>({});\\n\\n const tableApi = createDataTable<User>(() => ({\\n data: users,\\n columns,\\n state: { rowSelection },\\n onRowSelectionChange: (updater) => {\\n rowSelection = typeof updater === 'function' ? updater(rowSelection) : updater;\\n },\\n enableRowSelection: true,\\n enableMultiRowSelection: true, // Allow multiple selections\\n }));\\n</script>\\n\\n<!-- Render checkbox in header -->\\n<th>\\n <Checkbox\\n checked={table.getIsAllRowsSelected()}\\n indeterminate={table.getIsSomeRowsSelected()}\\n onCheckedChange={(checked) => table.toggleAllRowsSelected(!!checked)}\\n />\\n</th>\\n\\n<!-- Render checkbox in each row -->\\n{#each table.getRowModel().rows as row}\\n <td>\\n <Checkbox\\n checked={row.getIsSelected()}\\n onCheckedChange={(checked) => row.toggleSelected(!!checked)}\\n />\\n </td>\\n{/each}\"\n },\n {\n \"title\": \"Column Visibility\",\n \"description\": \"Allow users to toggle column visibility:\",\n \"code\": \"<script>\\n let columnVisibility = $state<VisibilityState>({});\\n\\n const tableApi = createDataTable<User>(() => ({\\n data: users,\\n columns,\\n state: { columnVisibility },\\n onColumnVisibilityChange: (updater) => {\\n columnVisibility = typeof updater === 'function' ? updater(columnVisibility) : updater;\\n },\\n enableHiding: true,\\n }));\\n</script>\\n\\n<!-- Use DataTableToolbar for built-in column visibility dropdown -->\\n<DataTableToolbar {table} visibilityState={columnVisibility} />\"\n },\n {\n \"title\": \"Global Search\",\n \"description\": \"Filter across all columns:\",\n \"code\": \"<script>\\n let globalFilter = $state('');\\n\\n const tableApi = createDataTable<User>(() => ({\\n data: users,\\n columns,\\n state: { globalFilter },\\n onGlobalFilterChange: (updater) => {\\n globalFilter = typeof updater === 'function' ? updater(globalFilter) : updater;\\n },\\n enableGlobalFilter: true,\\n }));\\n</script>\\n\\n<!-- DataTableToolbar includes a search input -->\\n<DataTableToolbar {table} />\"\n },\n {\n \"title\": \"Column Filters\",\n \"description\": \"Filter individual columns with faceted filtering:\",\n \"code\": \"<script>\\n let columnFilters = $state<ColumnFiltersState>([]);\\n\\n const columns: ColumnDef<User>[] = [\\n {\\n accessorKey: 'role',\\n header: 'Role',\\n meta: {\\n filterOptions: [\\n { value: 'Admin', label: 'Admin' },\\n { value: 'Editor', label: 'Editor' },\\n { value: 'Viewer', label: 'Viewer' },\\n ],\\n },\\n },\\n ];\\n\\n const tableApi = createDataTable<User>(() => ({\\n data: users,\\n columns,\\n state: { columnFilters },\\n onColumnFiltersChange: (updater) => {\\n columnFilters = typeof updater === 'function' ? updater(columnFilters) : updater;\\n },\\n enableColumnFilters: true,\\n }));\\n</script>\\n\\n<!-- DataTableToolbar renders filter badges for columns with filterOptions -->\\n<DataTableToolbar {table} />\"\n },\n {\n \"title\": \"Pagination\",\n \"description\": \"Add pagination controls:\",\n \"code\": \"<script>\\n const tableApi = createDataTable<User>(() => ({\\n data: users,\\n columns,\\n // Pagination is enabled by default\\n }));\\n</script>\\n\\n<!-- Table content -->\\n<table>...</table>\\n\\n<!-- Pagination controls -->\\n<DataTablePagination {table} />\"\n },\n {\n \"title\": \"Virtualization\",\n \"description\": \"Render thousands of rows efficiently:\",\n \"code\": \"<script>\\n const tableApi = createDataTable<User>(() => ({\\n data: largeDataset, // 10,000+ rows\\n columns,\\n manualPagination: true, // Disable pagination for virtualization\\n }));\\n</script>\\n\\n<DataTableVirtual\\n table={tableApi.instance}\\n rowHeight={48}\\n overscan={10}\\n height=\\\"500px\\\"\\n onRowClick={(row) => console.log(row)}\\n/>\"\n },\n {\n \"title\": \"Inline Editing\",\n \"description\": \"Enable double-click cell editing:\",\n \"code\": \"<script>\\n function handleCellEdit(rowId: string, columnId: string, value: unknown, row: User) {\\n // Update your data source\\n const index = users.findIndex((u) => u.id === row.id);\\n if (index !== -1) {\\n users[index] = { ...users[index], [columnId]: value };\\n }\\n }\\n</script>\\n\\n{#each table.getRowModel().rows as row}\\n <tr>\\n {#each row.getVisibleCells() as cell}\\n <td>\\n <DataTableEditableCell {cell} row={row.original} onSave={handleCellEdit} />\\n </td>\\n {/each}\\n </tr>\\n{/each}\"\n },\n {\n \"title\": \"User Management Table\",\n \"code\": \"<script>\\n const columns = [\\n { id: 'name', header: 'Name', accessor: 'name', sortable: true },\\n { id: 'email', header: 'Email', accessor: 'email', sortable: true },\\n { id: 'role', header: 'Role', accessor: 'role' },\\n {\\n id: 'joined',\\n header: 'Joined',\\n accessor: 'createdAt',\\n sortable: true,\\n format: (v) => new Date(v).toLocaleDateString(),\\n },\\n ];\\n</script>\\n\\n<DataTable\\n data={users}\\n {columns}\\n caption=\\\"User management table\\\"\\n onRowClick={(user) => goto(`/users/${user.id}`)}\\n/>\"\n },\n {\n \"title\": \"Product Inventory\",\n \"code\": \"<script>\\n const columns = [\\n { id: 'sku', header: 'SKU', accessor: 'sku', width: '120px' },\\n { id: 'name', header: 'Product', accessor: 'name', sortable: true },\\n {\\n id: 'stock',\\n header: 'Stock',\\n accessor: 'quantity',\\n align: 'right',\\n sortable: true,\\n },\\n {\\n id: 'price',\\n header: 'Price',\\n accessor: 'price',\\n align: 'right',\\n format: (v) => `$${v.toFixed(2)}`,\\n },\\n ];\\n</script>\\n\\n<DataTable data={products} {columns} emptyMessage=\\\"No products found\\\" />\"\n }\n ],\n \"relatedComponents\": [\n \"Skeleton\",\n \"Badge\",\n \"Button\",\n \"Checkbox\"\n ]\n },\n {\n \"name\": \"DataTableColumnFilter\",\n \"description\": \"Per-column text filter input for filtering individual columns in data tables\",\n \"category\": \"data\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"column\",\n \"type\": \"Column<T, unknown>\",\n \"default\": \"**required**\",\n \"required\": false,\n \"description\": \"The TanStack Table column to filter\"\n },\n {\n \"name\": \"placeholder\",\n \"type\": \"string\",\n \"default\": \"'Filter {columnName}...'\",\n \"required\": false,\n \"description\": \"Placeholder text for the input\"\n },\n {\n \"name\": \"debounceMs\",\n \"type\": \"number\",\n \"default\": \"300\",\n \"required\": false,\n \"description\": \"Debounce delay in milliseconds\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { createDataTable, DataTableColumnFilter } from '@classic-homes/theme-svelte';\\n\\n let columnFilters = $state([]);\\n\\n const tableApi = createDataTable(() => ({\\n data: users,\\n columns,\\n state: { columnFilters },\\n onColumnFiltersChange: (updater) => {\\n columnFilters = typeof updater === 'function' ? updater(columnFilters) : updater;\\n },\\n enableColumnFilters: true,\\n }));\\n\\n const table = $derived(tableApi.instance);\\n</script>\\n\\n<!-- Filter for the name column -->\\n{#each table.getAllColumns() as column}\\n {#if column.getCanFilter()}\\n <DataTableColumnFilter {column} />\\n {/if}\\n{/each}\"\n },\n {\n \"title\": \"Custom Placeholder\",\n \"code\": \"<DataTableColumnFilter {column} placeholder=\\\"Search names...\\\" />\"\n },\n {\n \"title\": \"Faster Debounce\",\n \"code\": \"<DataTableColumnFilter {column} debounceMs={150} />\"\n },\n {\n \"title\": \"In Table Header\",\n \"code\": \"<thead>\\n <tr>\\n {#each table.getHeaderGroups()[0].headers as header}\\n <th>\\n {header.column.columnDef.header}\\n {#if header.column.getCanFilter()}\\n <DataTableColumnFilter column={header.column} class=\\\"mt-1\\\" />\\n {/if}\\n </th>\\n {/each}\\n </tr>\\n</thead>\"\n },\n {\n \"title\": \"Multiple Column Filters\",\n \"code\": \"<div class=\\\"flex gap-2\\\">\\n {#each table.getAllColumns().filter((c) => c.getCanFilter()) as column}\\n <DataTableColumnFilter {column} class=\\\"w-40\\\" />\\n {/each}\\n</div>\"\n }\n ],\n \"relatedComponents\": [\n \"DataTable\",\n \"DataTableSearch\",\n \"DataTableFacetedFilter\"\n ]\n },\n {\n \"name\": \"DataTableColumnVisibility\",\n \"description\": \"Dropdown component for toggling column visibility in data tables\",\n \"category\": \"data\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"table\",\n \"type\": \"Table<T>\",\n \"default\": \"**required**\",\n \"required\": false,\n \"description\": \"The TanStack Table instance\"\n },\n {\n \"name\": \"visibilityState\",\n \"type\": \"VisibilityState\",\n \"required\": false,\n \"description\": \"Optional visibility state for reactivity\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { createDataTable, DataTableColumnVisibility } from '@classic-homes/theme-svelte';\\n\\n let columnVisibility = $state({});\\n\\n const tableApi = createDataTable(() => ({\\n data: users,\\n columns,\\n state: { columnVisibility },\\n onColumnVisibilityChange: (updater) => {\\n columnVisibility = typeof updater === 'function' ? updater(columnVisibility) : updater;\\n },\\n enableHiding: true,\\n }));\\n\\n const table = $derived(tableApi.instance);\\n</script>\\n\\n<DataTableColumnVisibility {table} />\"\n },\n {\n \"title\": \"With Controlled State\",\n \"description\": \"Pass the visibility state for full reactivity:\",\n \"code\": \"<script>\\n let columnVisibility = $state({\\n email: false, // Hide email column by default\\n phone: false, // Hide phone column by default\\n });\\n</script>\\n\\n<DataTableColumnVisibility {table} visibilityState={columnVisibility} />\"\n },\n {\n \"title\": \"In Toolbar\",\n \"code\": \"<div class=\\\"flex items-center gap-2\\\">\\n <DataTableSearch {table} />\\n <DataTableColumnVisibility {table} />\\n</div>\"\n },\n {\n \"title\": \"Hide Specific Columns Initially\",\n \"code\": \"<script>\\n // Some columns hidden by default\\n let columnVisibility = $state({\\n createdAt: false,\\n updatedAt: false,\\n internalId: false,\\n });\\n\\n const tableApi = createDataTable(() => ({\\n data,\\n columns,\\n state: { columnVisibility },\\n onColumnVisibilityChange: (updater) => {\\n columnVisibility = typeof updater === 'function' ? updater(columnVisibility) : updater;\\n },\\n enableHiding: true,\\n }));\\n</script>\\n\\n<DataTableColumnVisibility {table} visibilityState={columnVisibility} />\"\n }\n ],\n \"relatedComponents\": [\n \"DataTable\",\n \"DataTableToolbar\",\n \"DropdownMenu\"\n ]\n },\n {\n \"name\": \"DataTableEditableCell\",\n \"description\": \"Inline editable cell component for data tables with double-click editing\",\n \"category\": \"data\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"cell\",\n \"type\": \"Cell<T, unknown>\",\n \"default\": \"**required**\",\n \"required\": false,\n \"description\": \"The TanStack Table cell to render\"\n },\n {\n \"name\": \"row\",\n \"type\": \"T\",\n \"default\": \"**required**\",\n \"required\": false,\n \"description\": \"The row data object\"\n },\n {\n \"name\": \"onSave\",\n \"type\": \"(rowId: string, columnId: string, value: unknown, row: T) => void\",\n \"default\": \"**required**\",\n \"required\": false,\n \"description\": \"Callback when cell value is saved\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { createDataTable, DataTableEditableCell } from '@classic-homes/theme-svelte';\\n\\n function handleCellEdit(rowId, columnId, value, row) {\\n // Update your data source\\n const index = users.findIndex((u) => u.id === row.id);\\n if (index !== -1) {\\n users[index] = { ...users[index], [columnId]: value };\\n }\\n }\\n\\n const columns = [\\n {\\n accessorKey: 'name',\\n header: 'Name',\\n meta: { enableEditing: true },\\n },\\n {\\n accessorKey: 'email',\\n header: 'Email',\\n meta: { enableEditing: true },\\n },\\n ];\\n\\n const tableApi = createDataTable(() => ({ data: users, columns }));\\n const table = $derived(tableApi.instance);\\n</script>\\n\\n{#each table.getRowModel().rows as row}\\n <tr>\\n {#each row.getVisibleCells() as cell}\\n <td>\\n <DataTableEditableCell {cell} row={row.original} onSave={handleCellEdit} />\\n </td>\\n {/each}\\n </tr>\\n{/each}\"\n },\n {\n \"title\": \"With Custom Formatting\",\n \"description\": \"Cells can have custom display formatting while editing the raw value:\",\n \"code\": \"<script>\\n const columns = [\\n {\\n accessorKey: 'price',\\n header: 'Price',\\n meta: {\\n enableEditing: true,\\n format: (value) => `$${Number(value).toFixed(2)}`,\\n },\\n },\\n ];\\n</script>\"\n },\n {\n \"title\": \"Async Save Handler\",\n \"code\": \"<script>\\n async function handleCellEdit(rowId, columnId, value, row) {\\n try {\\n await api.updateUser(row.id, { [columnId]: value });\\n // Update local state after successful save\\n users = users.map((u) => (u.id === row.id ? { ...u, [columnId]: value } : u));\\n } catch (error) {\\n console.error('Failed to save:', error);\\n // Optionally show error toast\\n }\\n }\\n</script>\"\n }\n ],\n \"relatedComponents\": [\n \"DataTable\",\n \"FlexRender\"\n ]\n },\n {\n \"name\": \"DataTableFacetedFilter\",\n \"description\": \"Multi-select dropdown filter for categorical columns in data tables\",\n \"category\": \"data\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"column\",\n \"type\": \"Column<T, unknown>\",\n \"default\": \"**required**\",\n \"required\": false,\n \"description\": \"The TanStack Table column to filter\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"default\": \"**required**\",\n \"required\": false,\n \"description\": \"Title displayed on the filter button\"\n },\n {\n \"name\": \"options\",\n \"type\": \"FilterOption[]\",\n \"default\": \"**required**\",\n \"required\": false,\n \"description\": \"Available filter options\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { createDataTable, DataTableFacetedFilter } from '@classic-homes/theme-svelte';\\n\\n let columnFilters = $state([]);\\n\\n const tableApi = createDataTable(() => ({\\n data: users,\\n columns,\\n state: { columnFilters },\\n onColumnFiltersChange: (updater) => {\\n columnFilters = typeof updater === 'function' ? updater(columnFilters) : updater;\\n },\\n enableColumnFilters: true,\\n }));\\n\\n const table = $derived(tableApi.instance);\\n const statusColumn = $derived(table.getColumn('status'));\\n</script>\\n\\n<DataTableFacetedFilter\\n column={statusColumn}\\n title=\\\"Status\\\"\\n options={[\\n { value: 'active', label: 'Active' },\\n { value: 'inactive', label: 'Inactive' },\\n { value: 'pending', label: 'Pending' },\\n ]}\\n/>\"\n },\n {\n \"title\": \"With Counts\",\n \"description\": \"Display the count of items for each option:\",\n \"code\": \"<script>\\n // Calculate counts from your data\\n const statusCounts = $derived.by(() => {\\n const counts = { active: 0, inactive: 0, pending: 0 };\\n users.forEach((u) => counts[u.status]++);\\n return counts;\\n });\\n\\n const statusOptions = $derived([\\n { value: 'active', label: 'Active', count: statusCounts.active },\\n { value: 'inactive', label: 'Inactive', count: statusCounts.inactive },\\n { value: 'pending', label: 'Pending', count: statusCounts.pending },\\n ]);\\n</script>\\n\\n<DataTableFacetedFilter column={statusColumn} title=\\\"Status\\\" options={statusOptions} />\"\n },\n {\n \"title\": \"Multiple Filters\",\n \"code\": \"<div class=\\\"flex gap-2\\\">\\n <DataTableFacetedFilter\\n column={table.getColumn('status')}\\n title=\\\"Status\\\"\\n options={statusOptions}\\n />\\n <DataTableFacetedFilter column={table.getColumn('role')} title=\\\"Role\\\" options={roleOptions} />\\n <DataTableFacetedFilter\\n column={table.getColumn('department')}\\n title=\\\"Department\\\"\\n options={departmentOptions}\\n />\\n</div>\"\n },\n {\n \"title\": \"In DataTableToolbar\",\n \"code\": \"<DataTableToolbar {table}>\\n {#snippet filters()}\\n <DataTableFacetedFilter\\n column={table.getColumn('status')}\\n title=\\\"Status\\\"\\n options={statusOptions}\\n />\\n <DataTableFacetedFilter\\n column={table.getColumn('priority')}\\n title=\\\"Priority\\\"\\n options={priorityOptions}\\n />\\n {/snippet}\\n</DataTableToolbar>\"\n },\n {\n \"title\": \"Dynamic Options from Data\",\n \"code\": \"<script>\\n // Extract unique values from data\\n const uniqueStatuses = $derived(\\n [...new Set(users.map((u) => u.status))].map((status) => ({\\n value: status,\\n label: status.charAt(0).toUpperCase() + status.slice(1),\\n count: users.filter((u) => u.status === status).length,\\n }))\\n );\\n</script>\\n\\n<DataTableFacetedFilter\\n column={table.getColumn('status')}\\n title=\\\"Status\\\"\\n options={uniqueStatuses}\\n/>\"\n }\n ],\n \"relatedComponents\": [\n \"DataTable\",\n \"DataTableToolbar\",\n \"DataTableColumnFilter\"\n ]\n },\n {\n \"name\": \"DataTablePagination\",\n \"description\": \"Pagination controls for TanStack Table with page navigation and rows per page selector\",\n \"category\": \"data\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"table\",\n \"type\": \"Table<T>\",\n \"default\": \"**required**\",\n \"required\": false,\n \"description\": \"The TanStack Table instance\"\n },\n {\n \"name\": \"pageSizeOptions\",\n \"type\": \"number[]\",\n \"default\": \"[10, 25, 50, 100]\",\n \"required\": false,\n \"description\": \"Available page size options\"\n },\n {\n \"name\": \"showSelectedCount\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show selected row count when rows are selected\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { createDataTable, DataTablePagination } from '@classic-homes/theme-svelte';\\n\\n const tableApi = createDataTable(() => ({\\n data: users,\\n columns,\\n }));\\n\\n const table = $derived(tableApi.instance);\\n</script>\\n\\n<table>...</table>\\n<DataTablePagination {table} />\"\n },\n {\n \"title\": \"Custom Page Sizes\",\n \"code\": \"<DataTablePagination {table} pageSizeOptions={[5, 10, 20, 50]} />\"\n },\n {\n \"title\": \"Hide Selected Count\",\n \"code\": \"<DataTablePagination {table} showSelectedCount={false} />\"\n },\n {\n \"title\": \"With Custom Styling\",\n \"code\": \"<DataTablePagination {table} class=\\\"border-t pt-4\\\" />\"\n }\n ],\n \"relatedComponents\": [\n \"DataTable\",\n \"DataTableToolbar\"\n ]\n },\n {\n \"name\": \"DataTableSearch\",\n \"description\": \"Global search input component for filtering all columns in a data table\",\n \"category\": \"data\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"table\",\n \"type\": \"Table<T>\",\n \"default\": \"**required**\",\n \"required\": false,\n \"description\": \"The TanStack Table instance\"\n },\n {\n \"name\": \"placeholder\",\n \"type\": \"string\",\n \"default\": \"'Search...'\",\n \"required\": false,\n \"description\": \"Placeholder text for the input\"\n },\n {\n \"name\": \"debounceMs\",\n \"type\": \"number\",\n \"default\": \"300\",\n \"required\": false,\n \"description\": \"Debounce delay in milliseconds\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { createDataTable, DataTableSearch } from '@classic-homes/theme-svelte';\\n\\n let globalFilter = $state('');\\n\\n const tableApi = createDataTable(() => ({\\n data: users,\\n columns,\\n state: { globalFilter },\\n onGlobalFilterChange: (updater) => {\\n globalFilter = typeof updater === 'function' ? updater(globalFilter) : updater;\\n },\\n enableGlobalFilter: true,\\n }));\\n\\n const table = $derived(tableApi.instance);\\n</script>\\n\\n<DataTableSearch {table} /><table>...</table>\"\n },\n {\n \"title\": \"Custom Placeholder\",\n \"code\": \"<DataTableSearch {table} placeholder=\\\"Search users by name or email...\\\" />\"\n },\n {\n \"title\": \"Faster Debounce\",\n \"description\": \"For more responsive filtering:\",\n \"code\": \"<DataTableSearch {table} debounceMs={150} />\"\n },\n {\n \"title\": \"No Debounce\",\n \"description\": \"For immediate filtering (smaller datasets):\",\n \"code\": \"<DataTableSearch {table} debounceMs={0} />\"\n },\n {\n \"title\": \"Custom Width\",\n \"code\": \"<DataTableSearch {table} class=\\\"w-[300px]\\\" />\"\n },\n {\n \"title\": \"In Custom Layout\",\n \"code\": \"<div class=\\\"flex items-center gap-4\\\">\\n <DataTableSearch {table} class=\\\"flex-1\\\" />\\n <Button>Add User</Button>\\n</div>\"\n }\n ],\n \"relatedComponents\": [\n \"DataTable\",\n \"DataTableToolbar\",\n \"DataTableColumnFilter\"\n ]\n },\n {\n \"name\": \"DataTableToolbar\",\n \"description\": \"Combined toolbar component with search, filters, and column visibility controls\",\n \"category\": \"data\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"table\",\n \"type\": \"Table<T>\",\n \"default\": \"**required**\",\n \"required\": false,\n \"description\": \"The TanStack Table instance\"\n },\n {\n \"name\": \"showSearch\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show global search input\"\n },\n {\n \"name\": \"showColumnVisibility\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show column visibility dropdown\"\n },\n {\n \"name\": \"searchPlaceholder\",\n \"type\": \"string\",\n \"default\": \"'Search...'\",\n \"required\": false,\n \"description\": \"Placeholder text for search input\"\n },\n {\n \"name\": \"visibilityState\",\n \"type\": \"VisibilityState\",\n \"required\": false,\n \"description\": \"Optional visibility state for reactivity\"\n },\n {\n \"name\": \"filters\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Custom filters slot\"\n },\n {\n \"name\": \"actions\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Custom actions slot\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { createDataTable, DataTableToolbar } from '@classic-homes/theme-svelte';\\n\\n const tableApi = createDataTable(() => ({\\n data: users,\\n columns,\\n enableGlobalFilter: true,\\n }));\\n\\n const table = $derived(tableApi.instance);\\n</script>\\n\\n<DataTableToolbar {table} /><table>...</table>\"\n },\n {\n \"title\": \"Search Only\",\n \"code\": \"<DataTableToolbar {table} showColumnVisibility={false} />\"\n },\n {\n \"title\": \"Custom Placeholder\",\n \"code\": \"<DataTableToolbar {table} searchPlaceholder=\\\"Search users...\\\" />\"\n },\n {\n \"title\": \"With Custom Filters\",\n \"code\": \"<DataTableToolbar {table}>\\n {#snippet filters()}\\n <DataTableFacetedFilter\\n {table}\\n columnId=\\\"status\\\"\\n title=\\\"Status\\\"\\n options={[\\n { value: 'active', label: 'Active' },\\n { value: 'inactive', label: 'Inactive' },\\n ]}\\n />\\n {/snippet}\\n</DataTableToolbar>\"\n },\n {\n \"title\": \"With Custom Actions\",\n \"code\": \"<DataTableToolbar {table}>\\n {#snippet actions()}\\n <Button variant=\\\"outline\\\" size=\\\"sm\\\">Export</Button>\\n {/snippet}\\n</DataTableToolbar>\"\n },\n {\n \"title\": \"Full Customization\",\n \"code\": \"<DataTableToolbar {table} showSearch={true} showColumnVisibility={true}>\\n {#snippet filters()}\\n <DataTableFacetedFilter {table} columnId=\\\"role\\\" title=\\\"Role\\\" options={roleOptions} />\\n <DataTableFacetedFilter {table} columnId=\\\"status\\\" title=\\\"Status\\\" options={statusOptions} />\\n {/snippet}\\n {#snippet actions()}\\n <Button onclick={handleExport}>Export CSV</Button>\\n <Button onclick={handleDelete} variant=\\\"destructive\\\">Delete Selected</Button>\\n {/snippet}\\n</DataTableToolbar>\"\n }\n ],\n \"relatedComponents\": [\n \"DataTable\",\n \"DataTableSearch\",\n \"DataTableColumnVisibility\",\n \"DataTableFacetedFilter\"\n ]\n },\n {\n \"name\": \"DataTableVirtual\",\n \"description\": \"Virtualized table component for efficiently rendering large datasets with 10,000+ rows\",\n \"category\": \"data\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"table\",\n \"type\": \"Table<T>\",\n \"default\": \"**required**\",\n \"required\": false,\n \"description\": \"The TanStack Table instance\"\n },\n {\n \"name\": \"rowHeight\",\n \"type\": \"number\",\n \"default\": \"48\",\n \"required\": false,\n \"description\": \"Height of each row in pixels (must be fixed)\"\n },\n {\n \"name\": \"overscan\",\n \"type\": \"number\",\n \"default\": \"5\",\n \"required\": false,\n \"description\": \"Number of rows to render outside visible area\"\n },\n {\n \"name\": \"height\",\n \"type\": \"string\",\n \"default\": \"'500px'\",\n \"required\": false,\n \"description\": \"Height of the container (CSS value)\"\n },\n {\n \"name\": \"onRowClick\",\n \"type\": \"(row: T) => void\",\n \"required\": false,\n \"description\": \"Callback when row is clicked\"\n },\n {\n \"name\": \"enableRowSelection\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Enable row selection checkboxes\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { createDataTable, DataTableVirtual } from '@classic-homes/theme-svelte';\\n\\n const tableApi = createDataTable(() => ({\\n data: largeDataset, // 10,000+ rows\\n columns,\\n manualPagination: true, // Disable pagination for virtualization\\n }));\\n\\n const table = $derived(tableApi.instance);\\n</script>\\n\\n<DataTableVirtual {table} height=\\\"600px\\\" />\"\n },\n {\n \"title\": \"Custom Row Height\",\n \"code\": \"<DataTableVirtual {table} rowHeight={64} height=\\\"600px\\\" />\"\n },\n {\n \"title\": \"With More Overscan\",\n \"description\": \"For smoother scrolling, increase the overscan:\",\n \"code\": \"<DataTableVirtual {table} overscan={10} height=\\\"600px\\\" />\"\n },\n {\n \"title\": \"With Row Click Handler\",\n \"code\": \"<DataTableVirtual {table} height=\\\"600px\\\" onRowClick={(row) => goto(`/users/${row.id}`)} />\"\n },\n {\n \"title\": \"With Row Selection\",\n \"code\": \"<script>\\n let rowSelection = $state({});\\n\\n const tableApi = createDataTable(() => ({\\n data: largeDataset,\\n columns,\\n state: { rowSelection },\\n onRowSelectionChange: (updater) => {\\n rowSelection = typeof updater === 'function' ? updater(rowSelection) : updater;\\n },\\n enableRowSelection: true,\\n manualPagination: true,\\n }));\\n</script>\\n\\n<DataTableVirtual {table} enableRowSelection height=\\\"600px\\\" />\"\n },\n {\n \"title\": \"Full Height Container\",\n \"code\": \"<div class=\\\"flex-1 min-h-0\\\">\\n <DataTableVirtual {table} height=\\\"100%\\\" />\\n</div>\"\n }\n ],\n \"relatedComponents\": [\n \"DataTable\",\n \"DataTablePagination\"\n ]\n },\n {\n \"name\": \"DateTimePicker\",\n \"description\": \"Calendar-based date and time selection\",\n \"category\": \"form\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"value\",\n \"type\": \"Date | null\",\n \"default\": \"null\",\n \"required\": false,\n \"description\": \"Selected date (bindable)\"\n },\n {\n \"name\": \"placeholder\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Placeholder text\"\n },\n {\n \"name\": \"disabled\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Disables the picker\"\n },\n {\n \"name\": \"required\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Marks as required\"\n },\n {\n \"name\": \"minDate\",\n \"type\": \"Date\",\n \"required\": false,\n \"description\": \"Earliest selectable date\"\n },\n {\n \"name\": \"maxDate\",\n \"type\": \"Date\",\n \"required\": false,\n \"description\": \"Latest selectable date\"\n },\n {\n \"name\": \"includeTime\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Include time selection\"\n },\n {\n \"name\": \"label\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Label text\"\n },\n {\n \"name\": \"hint\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Hint text below the picker\"\n },\n {\n \"name\": \"error\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Error message\"\n },\n {\n \"name\": \"onValueChange\",\n \"type\": \"(value: Date | null) => void\",\n \"required\": false,\n \"description\": \"Callback when value changes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n let date = $state(null);\\n</script>\\n\\n<DateTimePicker bind:value={date} />\"\n },\n {\n \"title\": \"Event Scheduler\",\n \"code\": \"<DateTimePicker\\n label=\\\"Event date and time\\\"\\n bind:value={eventDate}\\n includeTime\\n minDate={new Date()}\\n/>\"\n },\n {\n \"title\": \"Birth Date\",\n \"code\": \"<DateTimePicker\\n label=\\\"Date of birth\\\"\\n bind:value={birthDate}\\n maxDate={new Date()}\\n placeholder=\\\"Select your birth date\\\"\\n/>\"\n },\n {\n \"title\": \"Booking Window\",\n \"code\": \"<script>\\n const today = new Date();\\n const maxDate = new Date();\\n maxDate.setMonth(maxDate.getMonth() + 3);\\n</script>\\n\\n<DateTimePicker label=\\\"Reservation date\\\" bind:value={reservationDate} minDate={today} {maxDate} />\"\n }\n ],\n \"relatedComponents\": [\n \"Input\",\n \"FormField\"\n ]\n },\n {\n \"name\": \"Dialog\",\n \"description\": \"Modal window for focused interactions and confirmations\",\n \"category\": \"overlay\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"open\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Whether the dialog is open (bindable)\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Dialog title displayed in header\"\n },\n {\n \"name\": \"description\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Description text below title\"\n },\n {\n \"name\": \"showClose\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Whether to show the close button\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes for content\"\n },\n {\n \"name\": \"onOpenChange\",\n \"type\": \"(open: boolean) => void\",\n \"required\": false,\n \"description\": \"Callback when open state changes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n let open = $state(false);\\n</script>\\n\\n<Button onclick={() => (open = true)}>Open Dialog</Button>\\n\\n<Dialog bind:open title=\\\"Dialog Title\\\" description=\\\"Dialog description text\\\">\\n <p>Dialog content goes here.</p>\\n</Dialog>\"\n },\n {\n \"title\": \"Confirmation Dialog\",\n \"code\": \"<script>\\n let deleteDialogOpen = $state(false);\\n\\n async function handleDelete() {\\n await deleteItem();\\n deleteDialogOpen = false;\\n }\\n</script>\\n\\n<Button variant=\\\"destructive\\\" onclick={() => (deleteDialogOpen = true)}>Delete</Button>\\n\\n<Dialog\\n bind:open={deleteDialogOpen}\\n title=\\\"Delete Item\\\"\\n description=\\\"This action cannot be undone.\\\"\\n>\\n <p>Are you sure you want to delete this item permanently?</p>\\n\\n {#snippet footer()}\\n <Button variant=\\\"outline\\\" onclick={() => (deleteDialogOpen = false)}>Cancel</Button>\\n <Button variant=\\\"destructive\\\" onclick={handleDelete}>Delete</Button>\\n {/snippet}\\n</Dialog>\"\n },\n {\n \"title\": \"Form Dialog\",\n \"code\": \"<Dialog bind:open title=\\\"Edit Profile\\\">\\n <form onsubmit|preventDefault={handleSubmit} class=\\\"space-y-4\\\">\\n <FormField label=\\\"Name\\\" id=\\\"name\\\" bind:value={name} required />\\n <FormField label=\\\"Email\\\" id=\\\"email\\\" type=\\\"email\\\" bind:value={email} required />\\n </form>\\n\\n {#snippet footer()}\\n <Button variant=\\\"outline\\\" onclick={() => (open = false)}>Cancel</Button>\\n <Button onclick={handleSubmit}>Save Changes</Button>\\n {/snippet}\\n</Dialog>\"\n },\n {\n \"title\": \"Info Dialog\",\n \"code\": \"<Dialog title=\\\"Keyboard Shortcuts\\\">\\n <dl class=\\\"space-y-2\\\">\\n <div class=\\\"flex justify-between\\\">\\n <dt class=\\\"font-medium\\\">Save</dt>\\n <dd><kbd class=\\\"px-2 py-1 bg-muted rounded text-sm\\\">Ctrl+S</kbd></dd>\\n </div>\\n <div class=\\\"flex justify-between\\\">\\n <dt class=\\\"font-medium\\\">Search</dt>\\n <dd><kbd class=\\\"px-2 py-1 bg-muted rounded text-sm\\\">Ctrl+K</kbd></dd>\\n </div>\\n </dl>\\n\\n {#snippet trigger()}\\n <Button variant=\\\"ghost\\\" size=\\\"icon\\\">\\n <HelpIcon class=\\\"h-4 w-4\\\" />\\n </Button>\\n {/snippet}\\n</Dialog>\"\n },\n {\n \"title\": \"Wide Dialog\",\n \"code\": \"<Dialog bind:open title=\\\"Preview\\\" class=\\\"max-w-4xl\\\">\\n <img src={previewUrl} alt=\\\"Preview\\\" class=\\\"w-full\\\" />\\n</Dialog>\"\n }\n ],\n \"relatedComponents\": [\n \"AlertDialog\",\n \"Tooltip\",\n \"DropdownMenu\"\n ]\n },\n {\n \"name\": \"DonutChart\",\n \"description\": \"Pie chart variant with center labels for key metrics\",\n \"category\": \"chart\",\n \"importPath\": \"@classic-homes/charts-svelte\",\n \"props\": [\n {\n \"name\": \"data\",\n \"type\": \"PieSliceData[]\",\n \"required\": true,\n \"description\": \"Array of slice data\"\n },\n {\n \"name\": \"showLabels\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Show labels on slices\"\n },\n {\n \"name\": \"labelPosition\",\n \"type\": \"'inside' | 'outside'\",\n \"default\": \"'outside'\",\n \"required\": false,\n \"description\": \"Position of labels\"\n },\n {\n \"name\": \"innerRadius\",\n \"type\": \"number | string\",\n \"default\": \"'50%'\",\n \"required\": false,\n \"description\": \"Inner radius for donut hole\"\n },\n {\n \"name\": \"centerLabel\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Text label in the center\"\n },\n {\n \"name\": \"centerValue\",\n \"type\": \"string | number\",\n \"required\": false,\n \"description\": \"Value displayed in the center\"\n },\n {\n \"name\": \"onClick\",\n \"type\": \"(params: SliceEventParams) => void\",\n \"required\": false,\n \"description\": \"Callback when clicked\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": true,\n \"description\": \"Chart title for accessibility\"\n },\n {\n \"name\": \"height\",\n \"type\": \"number | string\",\n \"default\": \"400\",\n \"required\": false,\n \"description\": \"Chart height\"\n },\n {\n \"name\": \"theme\",\n \"type\": \"'light' | 'dark' | 'auto'\",\n \"default\": \"'auto'\",\n \"required\": false,\n \"description\": \"Theme preference\"\n },\n {\n \"name\": \"showLegend\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show chart legend\"\n },\n {\n \"name\": \"showTooltip\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show tooltip on hover\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"labelPosition\",\n \"values\": [\n \"inside\",\n \"outside\"\n ],\n \"default\": \"outside\"\n },\n {\n \"name\": \"theme\",\n \"values\": [\n \"light\",\n \"dark\",\n \"auto\"\n ],\n \"default\": \"auto\"\n }\n ],\n \"slots\": [],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { DonutChart } from '@classic-homes/charts-svelte';\\n\\n const data = [\\n { name: 'Completed', value: 65 },\\n { name: 'In Progress', value: 25 },\\n { name: 'Pending', value: 10 },\\n ];\\n</script>\\n\\n<DonutChart title=\\\"Task Status\\\" {data} centerLabel=\\\"Total\\\" centerValue=\\\"100\\\" height={400} />\"\n },\n {\n \"title\": \"Dashboard KPI\",\n \"code\": \"<DonutChart title=\\\"Budget Usage\\\" {data} centerLabel=\\\"Spent\\\" centerValue=\\\"$45,000\\\" height={300} />\"\n },\n {\n \"title\": \"With Labels\",\n \"code\": \"<DonutChart title=\\\"Category Distribution\\\" {data} showLabels centerLabel=\\\"Items\\\" centerValue=\\\"156\\\" />\"\n },\n {\n \"title\": \"Custom Inner Radius\",\n \"code\": \"<DonutChart title=\\\"Thin Donut\\\" {data} innerRadius=\\\"70%\\\" />\"\n }\n ],\n \"relatedComponents\": [\n \"PieChart\",\n \"GaugeChart\"\n ]\n },\n {\n \"name\": \"DropdownMenu\",\n \"description\": \"Contextual menu with items, groups, and keyboard navigation\",\n \"category\": \"overlay\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"items\",\n \"type\": \"(DropdownMenuItem | DropdownMenuGroup)[]\",\n \"required\": false,\n \"description\": \"Menu items\"\n },\n {\n \"name\": \"trigger\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Trigger element\"\n },\n {\n \"name\": \"side\",\n \"type\": \"'top' | 'right' | 'bottom' | 'left'\",\n \"default\": \"'bottom'\",\n \"required\": false,\n \"description\": \"Menu position\"\n },\n {\n \"name\": \"align\",\n \"type\": \"'start' | 'center' | 'end'\",\n \"default\": \"'start'\",\n \"required\": false,\n \"description\": \"Menu alignment\"\n },\n {\n \"name\": \"open\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Controlled open state (bindable)\"\n },\n {\n \"name\": \"onOpenChange\",\n \"type\": \"(open: boolean) => void\",\n \"required\": false,\n \"description\": \"Open change callback\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional classes\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"side\",\n \"values\": [\n \"top\",\n \"right\",\n \"bottom\",\n \"left\"\n ],\n \"default\": \"bottom\"\n },\n {\n \"name\": \"align\",\n \"values\": [\n \"start\",\n \"center\",\n \"end\"\n ],\n \"default\": \"start\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n const items = [\\n { label: 'Profile', onSelect: () => goto('/profile') },\\n { label: 'Settings', onSelect: () => goto('/settings') },\\n { type: 'separator' },\\n { label: 'Log out', onSelect: logout, destructive: true },\\n ];\\n</script>\\n\\n<DropdownMenu {items}>\\n {#snippet trigger()}\\n <Button variant=\\\"outline\\\">Menu</Button>\\n {/snippet}\\n</DropdownMenu>\"\n },\n {\n \"title\": \"Regular Items\",\n \"code\": \"<script>\\n const items = [\\n { label: 'Edit', onSelect: handleEdit },\\n { label: 'Duplicate', onSelect: handleDuplicate },\\n { label: 'Delete', onSelect: handleDelete, destructive: true },\\n ];\\n</script>\"\n },\n {\n \"title\": \"With Separators\",\n \"code\": \"<script>\\n const items = [\\n { label: 'Cut', shortcut: '⌘X' },\\n { label: 'Copy', shortcut: '⌘C' },\\n { label: 'Paste', shortcut: '⌘V' },\\n { type: 'separator' },\\n { label: 'Select All', shortcut: '⌘A' },\\n ];\\n</script>\"\n },\n {\n \"title\": \"Labels\",\n \"code\": \"<script>\\n const items = [{ type: 'label', label: 'Actions' }, { label: 'Edit' }, { label: 'Delete' }];\\n</script>\"\n },\n {\n \"title\": \"Disabled Items\",\n \"code\": \"<script>\\n const items = [\\n { label: 'Save', disabled: !hasChanges },\\n { label: 'Publish', disabled: !canPublish },\\n ];\\n</script>\"\n },\n {\n \"title\": \"Side\",\n \"code\": \"<!-- Below trigger (default) -->\\n<DropdownMenu {items} side=\\\"bottom\\\">...</DropdownMenu>\\n\\n<!-- Above trigger -->\\n<DropdownMenu {items} side=\\\"top\\\">...</DropdownMenu>\\n\\n<!-- To the right -->\\n<DropdownMenu {items} side=\\\"right\\\">...</DropdownMenu>\\n\\n<!-- To the left -->\\n<DropdownMenu {items} side=\\\"left\\\">...</DropdownMenu>\"\n },\n {\n \"title\": \"Alignment\",\n \"code\": \"<!-- Align to start (default) -->\\n<DropdownMenu {items} align=\\\"start\\\">...</DropdownMenu>\\n\\n<!-- Center aligned -->\\n<DropdownMenu {items} align=\\\"center\\\">...</DropdownMenu>\\n\\n<!-- Align to end -->\\n<DropdownMenu {items} align=\\\"end\\\">...</DropdownMenu>\"\n },\n {\n \"title\": \"User Menu\",\n \"code\": \"<script>\\n const items = [\\n { type: 'label', label: user.email },\\n { type: 'separator' },\\n { label: 'Profile', onSelect: () => goto('/profile') },\\n { label: 'Settings', onSelect: () => goto('/settings') },\\n { label: 'Billing', onSelect: () => goto('/billing') },\\n { type: 'separator' },\\n { label: 'Help', onSelect: openHelp },\\n { type: 'separator' },\\n { label: 'Log out', onSelect: logout, destructive: true },\\n ];\\n</script>\\n\\n<DropdownMenu {items} align=\\\"end\\\">\\n {#snippet trigger()}\\n <Avatar>{user.initials}</Avatar>\\n {/snippet}\\n</DropdownMenu>\"\n },\n {\n \"title\": \"Context Actions\",\n \"code\": \"<script>\\n const items = [\\n { label: 'Open', onSelect: openItem },\\n { label: 'Open in new tab', onSelect: openInNewTab },\\n { type: 'separator' },\\n { label: 'Rename', shortcut: 'F2', onSelect: rename },\\n { label: 'Duplicate', shortcut: '⌘D', onSelect: duplicate },\\n { label: 'Move to...', onSelect: moveTo },\\n { type: 'separator' },\\n { label: 'Delete', destructive: true, onSelect: deleteItem },\\n ];\\n</script>\\n\\n<DropdownMenu {items}>\\n {#snippet trigger()}\\n <Button variant=\\\"ghost\\\" size=\\\"icon\\\">\\n <MoreHorizontalIcon />\\n </Button>\\n {/snippet}\\n</DropdownMenu>\"\n },\n {\n \"title\": \"Table Row Actions\",\n \"code\": \"{#each rows as row}\\n <tr>\\n <td>{row.name}</td>\\n <td>\\n <DropdownMenu items={getRowActions(row)}>\\n {#snippet trigger()}\\n <Button variant=\\\"ghost\\\" size=\\\"sm\\\">Actions</Button>\\n {/snippet}\\n </DropdownMenu>\\n </td>\\n </tr>\\n{/each}\"\n }\n ],\n \"relatedComponents\": [\n \"Button\",\n \"AlertDialog\",\n \"Tooltip\"\n ]\n },\n {\n \"name\": \"ErrorLayout\",\n \"description\": \"Layout for error pages with status codes and messaging\",\n \"category\": \"layout\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"statusCode\",\n \"type\": \"number\",\n \"required\": false,\n \"description\": \"HTTP status code (404, 500, etc.)\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Custom title (overrides default)\"\n },\n {\n \"name\": \"description\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Error description\"\n },\n {\n \"name\": \"showLogo\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show logo at top\"\n },\n {\n \"name\": \"logo\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Custom logo\"\n },\n {\n \"name\": \"showHomeButton\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show \\\"Go Home\\\" button\"\n },\n {\n \"name\": \"homeUrl\",\n \"type\": \"string\",\n \"default\": \"'/'\",\n \"required\": false,\n \"description\": \"Home button URL\"\n },\n {\n \"name\": \"homeText\",\n \"type\": \"string\",\n \"default\": \"'Go Home'\",\n \"required\": false,\n \"description\": \"Home button text\"\n },\n {\n \"name\": \"showBackButton\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show \\\"Go Back\\\" button\"\n },\n {\n \"name\": \"backText\",\n \"type\": \"string\",\n \"default\": \"'Go Back'\",\n \"required\": false,\n \"description\": \"Back button text\"\n },\n {\n \"name\": \"illustration\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Custom illustration\"\n },\n {\n \"name\": \"actions\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Additional actions\"\n },\n {\n \"name\": \"footer\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Footer content\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional classes\"\n },\n {\n \"name\": \"children\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Custom content\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<ErrorLayout statusCode={404} />\"\n },\n {\n \"title\": \"SvelteKit Error Page\",\n \"code\": \"<!-- src/routes/+error.svelte -->\\n<script>\\n import { page } from '$app/stores';\\n import { ErrorLayout } from '@classic-homes/theme-svelte';\\n</script>\\n\\n<ErrorLayout statusCode={$page.status} description={$page.error?.message} />\"\n },\n {\n \"title\": \"Access Denied\",\n \"code\": \"<ErrorLayout\\n statusCode={403}\\n title=\\\"Access Denied\\\"\\n description=\\\"You need additional permissions to view this page.\\\"\\n showBackButton={false}\\n>\\n {#snippet actions()}\\n <Button href=\\\"/request-access\\\">Request Access</Button>\\n <Button variant=\\\"outline\\\" href=\\\"/dashboard\\\">Back to Dashboard</Button>\\n {/snippet}\\n</ErrorLayout>\"\n },\n {\n \"title\": \"Session Expired\",\n \"code\": \"<ErrorLayout\\n statusCode={401}\\n title=\\\"Session Expired\\\"\\n description=\\\"Your session has expired. Please sign in again to continue.\\\"\\n showBackButton={false}\\n showHomeButton={false}\\n>\\n {#snippet actions()}\\n <Button href=\\\"/login\\\">Sign In Again</Button>\\n {/snippet}\\n</ErrorLayout>\"\n },\n {\n \"title\": \"Maintenance Mode\",\n \"code\": \"<ErrorLayout\\n title=\\\"Scheduled Maintenance\\\"\\n description=\\\"We're currently performing system upgrades. Expected completion: 2:00 PM EST\\\"\\n showBackButton={false}\\n>\\n {#snippet illustration()}\\n <svg class=\\\"w-32 h-32 text-muted-foreground\\\">\\n <!-- Maintenance icon -->\\n </svg>\\n {/snippet}\\n</ErrorLayout>\"\n }\n ],\n \"relatedComponents\": [\n \"AuthLayout\",\n \"Button\",\n \"AppShell\"\n ]\n },\n {\n \"name\": \"FileUpload\",\n \"description\": \"File upload component with drag-and-drop support\",\n \"category\": \"form\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"files\",\n \"type\": \"FileMetadata[]\",\n \"default\": \"[]\",\n \"required\": false,\n \"description\": \"Uploaded files (bindable)\"\n },\n {\n \"name\": \"accept\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Accepted file types\"\n },\n {\n \"name\": \"multiple\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Allow multiple files\"\n },\n {\n \"name\": \"maxSize\",\n \"type\": \"number\",\n \"required\": false,\n \"description\": \"Max file size in bytes\"\n },\n {\n \"name\": \"maxFiles\",\n \"type\": \"number\",\n \"required\": false,\n \"description\": \"Max number of files\"\n },\n {\n \"name\": \"disabled\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Disables upload\"\n },\n {\n \"name\": \"error\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Error message\"\n },\n {\n \"name\": \"onUpload\",\n \"type\": \"(file: File) => Promise<FileMetadata>\",\n \"required\": false,\n \"description\": \"Upload handler\"\n },\n {\n \"name\": \"onRemove\",\n \"type\": \"(file: FileMetadata) => void\",\n \"required\": false,\n \"description\": \"Remove handler\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n let files = $state([]);\\n</script>\\n\\n<FileUpload bind:files />\"\n },\n {\n \"title\": \"Profile Picture\",\n \"code\": \"<FileUpload\\n accept=\\\"image/*\\\"\\n maxSize={2 * 1024 * 1024}\\n bind:files={avatar}\\n onUpload={uploadAvatar}\\n/>\"\n },\n {\n \"title\": \"Document Upload\",\n \"code\": \"<FileUpload\\n accept=\\\".pdf,.doc,.docx\\\"\\n multiple\\n maxFiles={10}\\n maxSize={10 * 1024 * 1024}\\n bind:files={documents}\\n onUpload={uploadDocument}\\n/>\"\n },\n {\n \"title\": \"With Progress\",\n \"description\": \"Files show upload progress:\",\n \"code\": \"<FileUpload\\n bind:files\\n onUpload={async (file) => {\\n // Upload with progress tracking\\n return await uploadWithProgress(file, (progress) => {\\n // Progress updates automatically\\n });\\n }}\\n/>\"\n }\n ],\n \"relatedComponents\": [\n \"Input\",\n \"Button\"\n ]\n },\n {\n \"name\": \"FlexRender\",\n \"description\": \"Dynamic content renderer for TanStack Table cells and headers\",\n \"category\": \"data\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"content\",\n \"type\": \"unknown\",\n \"default\": \"**required**\",\n \"required\": false,\n \"description\": \"Content to render (string, component, or function)\"\n },\n {\n \"name\": \"props\",\n \"type\": \"TProps\",\n \"default\": \"**required**\",\n \"required\": false,\n \"description\": \"Props to pass to component or function\"\n },\n {\n \"name\": \"asComponent\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Explicitly mark content as a Svelte component\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { createDataTable, FlexRender } from '@classic-homes/theme-svelte';\\n\\n const tableApi = createDataTable(() => ({ data: users, columns }));\\n const table = $derived(tableApi.instance);\\n</script>\\n\\n<table>\\n <thead>\\n {#each table.getHeaderGroups() as headerGroup}\\n <tr>\\n {#each headerGroup.headers as header}\\n <th>\\n <FlexRender content={header.column.columnDef.header} props={header.getContext()} />\\n </th>\\n {/each}\\n </tr>\\n {/each}\\n </thead>\\n <tbody>\\n {#each table.getRowModel().rows as row}\\n <tr>\\n {#each row.getVisibleCells() as cell}\\n <td>\\n <FlexRender content={cell.column.columnDef.cell} props={cell.getContext()} />\\n </td>\\n {/each}\\n </tr>\\n {/each}\\n </tbody>\\n</table>\"\n },\n {\n \"title\": \"With Custom Cell Component\",\n \"code\": \"<!-- StatusBadge.svelte -->\\n<script lang=\\\"ts\\\">\\n import type { CellContext } from '@classic-homes/theme-svelte';\\n import Badge from './Badge.svelte';\\n\\n let { getValue }: CellContext<User, string> = $props();\\n const status = $derived(getValue());\\n</script>\\n\\n<Badge variant={status === 'active' ? 'success' : 'secondary'}>\\n {status}\\n</Badge>\"\n }\n ],\n \"relatedComponents\": [\n \"DataTable\",\n \"DataTableEditableCell\"\n ]\n },\n {\n \"name\": \"Footer\",\n \"description\": \"Site footer with link sections and branding\",\n \"category\": \"layout\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"links\",\n \"type\": \"NavSection[]\",\n \"default\": \"[]\",\n \"required\": false,\n \"description\": \"Link sections\"\n },\n {\n \"name\": \"copyright\",\n \"type\": \"string\",\n \"default\": \"Auto-generated\",\n \"required\": false,\n \"description\": \"Copyright text\"\n },\n {\n \"name\": \"showLogo\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show logo\"\n },\n {\n \"name\": \"strongBorder\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"10px accent border\"\n },\n {\n \"name\": \"variant\",\n \"type\": \"'default' | 'dark'\",\n \"default\": \"'default'\",\n \"required\": false,\n \"description\": \"Visual variant\"\n },\n {\n \"name\": \"children\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Custom content\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional classes\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"variant\",\n \"values\": [\n \"default\",\n \"dark\"\n ],\n \"default\": \"default\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Footer />\"\n },\n {\n \"title\": \"Marketing Site Footer\",\n \"code\": \"<script>\\n const links = [\\n {\\n id: 'product',\\n title: 'Product',\\n items: [\\n { id: 'features', name: 'Features', href: '/features' },\\n { id: 'pricing', name: 'Pricing', href: '/pricing' },\\n { id: 'integrations', name: 'Integrations', href: '/integrations' },\\n { id: 'changelog', name: 'Changelog', href: '/changelog' },\\n ],\\n },\\n {\\n id: 'company',\\n title: 'Company',\\n items: [\\n { id: 'about', name: 'About Us', href: '/about' },\\n { id: 'blog', name: 'Blog', href: '/blog' },\\n { id: 'careers', name: 'Careers', href: '/careers' },\\n { id: 'press', name: 'Press Kit', href: '/press' },\\n ],\\n },\\n {\\n id: 'support',\\n title: 'Support',\\n items: [\\n { id: 'help', name: 'Help Center', href: '/help' },\\n { id: 'contact', name: 'Contact Us', href: '/contact' },\\n { id: 'status', name: 'System Status', href: 'https://status.example.com', external: true },\\n ],\\n },\\n {\\n id: 'legal',\\n title: 'Legal',\\n items: [\\n { id: 'privacy', name: 'Privacy', href: '/privacy' },\\n { id: 'terms', name: 'Terms', href: '/terms' },\\n { id: 'security', name: 'Security', href: '/security' },\\n ],\\n },\\n ];\\n</script>\\n\\n<Footer {links} copyright=\\\"2024 Example Inc. All rights reserved.\\\" />\"\n },\n {\n \"title\": \"Minimal Footer\",\n \"code\": \"<Footer copyright=\\\"2024 Company Name\\\" showLogo={false} />\"\n },\n {\n \"title\": \"Branded Dark Footer\",\n \"code\": \"<Footer\\n {links}\\n variant=\\\"dark\\\"\\n strongBorder\\n copyright=\\\"2024 Classic Homes. Building quality since 1985.\\\"\\n>\\n <div class=\\\"grid grid-cols-3 gap-4 text-center\\\">\\n <div>\\n <p class=\\\"text-2xl font-bold\\\">500+</p>\\n <p class=\\\"text-sm text-gray-400\\\">Homes Built</p>\\n </div>\\n <div>\\n <p class=\\\"text-2xl font-bold\\\">25+</p>\\n <p class=\\\"text-sm text-gray-400\\\">Years Experience</p>\\n </div>\\n <div>\\n <p class=\\\"text-2xl font-bold\\\">98%</p>\\n <p class=\\\"text-sm text-gray-400\\\">Satisfaction</p>\\n </div>\\n </div>\\n</Footer>\"\n }\n ],\n \"relatedComponents\": [\n \"Header\",\n \"PublicLayout\",\n \"Separator\"\n ]\n },\n {\n \"name\": \"FormField\",\n \"description\": \"Complete form field component with label, input, and validation\",\n \"category\": \"form\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"label\",\n \"type\": \"string\",\n \"default\": \"Required\",\n \"required\": false,\n \"description\": \"Label text\"\n },\n {\n \"name\": \"id\",\n \"type\": \"string\",\n \"default\": \"Required\",\n \"required\": false,\n \"description\": \"Input ID for accessibility\"\n },\n {\n \"name\": \"type\",\n \"type\": \"'text' | 'email' | 'password' | 'tel' | 'url' | 'number' | 'date' | 'textarea'\",\n \"default\": \"'text'\",\n \"required\": false,\n \"description\": \"Input type\"\n },\n {\n \"name\": \"value\",\n \"type\": \"string\",\n \"default\": \"''\",\n \"required\": false,\n \"description\": \"Field value (bindable)\"\n },\n {\n \"name\": \"error\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Error message to display\"\n },\n {\n \"name\": \"hint\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Help text shown below input\"\n },\n {\n \"name\": \"disabled\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Disables the field\"\n },\n {\n \"name\": \"required\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Marks as required\"\n },\n {\n \"name\": \"placeholder\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Placeholder text\"\n },\n {\n \"name\": \"autocomplete\",\n \"type\": \"AutoFill\",\n \"required\": false,\n \"description\": \"Browser autocomplete hint\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Name attribute for forms\"\n },\n {\n \"name\": \"rows\",\n \"type\": \"number\",\n \"default\": \"3\",\n \"required\": false,\n \"description\": \"Rows for textarea type\"\n },\n {\n \"name\": \"readonly\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Makes field read-only\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n },\n {\n \"name\": \"onValueChange\",\n \"type\": \"(value: string) => void\",\n \"required\": false,\n \"description\": \"Callback when value changes\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"type\",\n \"values\": [\n \"text\",\n \"email\",\n \"password\",\n \"tel\",\n \"url\",\n \"number\",\n \"date\",\n \"textarea\"\n ],\n \"default\": \"text\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n let email = $state('');\\n</script>\\n\\n<FormField label=\\\"Email\\\" id=\\\"email\\\" type=\\\"email\\\" bind:value={email} placeholder=\\\"your@email.com\\\" />\"\n },\n {\n \"title\": \"Text (Default)\",\n \"code\": \"<FormField label=\\\"Name\\\" id=\\\"name\\\" bind:value={name} />\"\n },\n {\n \"title\": \"Email\",\n \"code\": \"<FormField label=\\\"Email\\\" id=\\\"email\\\" type=\\\"email\\\" autocomplete=\\\"email\\\" bind:value={email} />\"\n },\n {\n \"title\": \"Password\",\n \"code\": \"<FormField\\n label=\\\"Password\\\"\\n id=\\\"password\\\"\\n type=\\\"password\\\"\\n autocomplete=\\\"new-password\\\"\\n bind:value={password}\\n/>\"\n },\n {\n \"title\": \"Tel (Phone)\",\n \"code\": \"<FormField label=\\\"Phone\\\" id=\\\"phone\\\" type=\\\"tel\\\" autocomplete=\\\"tel\\\" bind:value={phone} />\"\n },\n {\n \"title\": \"Number\",\n \"code\": \"<FormField label=\\\"Age\\\" id=\\\"age\\\" type=\\\"number\\\" bind:value={age} />\"\n },\n {\n \"title\": \"Date\",\n \"code\": \"<FormField label=\\\"Birth Date\\\" id=\\\"birthdate\\\" type=\\\"date\\\" bind:value={birthdate} />\"\n },\n {\n \"title\": \"URL\",\n \"code\": \"<FormField label=\\\"Website\\\" id=\\\"website\\\" type=\\\"url\\\" placeholder=\\\"https://\\\" bind:value={website} />\"\n },\n {\n \"title\": \"Textarea\",\n \"code\": \"<FormField label=\\\"Description\\\" id=\\\"description\\\" type=\\\"textarea\\\" rows={5} bind:value={description} />\"\n },\n {\n \"title\": \"Error State\",\n \"description\": \"Display validation errors:\",\n \"code\": \"<FormField label=\\\"Email\\\" id=\\\"email\\\" type=\\\"email\\\" bind:value={email} error={emailError} />\"\n },\n {\n \"title\": \"With Hint\",\n \"description\": \"Provide helpful guidance:\",\n \"code\": \"<FormField\\n label=\\\"Password\\\"\\n id=\\\"password\\\"\\n type=\\\"password\\\"\\n bind:value={password}\\n hint=\\\"Must be at least 8 characters\\\"\\n/>\"\n },\n {\n \"title\": \"Disabled\",\n \"code\": \"<FormField label=\\\"Username\\\" id=\\\"username\\\" disabled value=\\\"johndoe\\\" />\"\n },\n {\n \"title\": \"Read-only\",\n \"code\": \"<FormField label=\\\"ID\\\" id=\\\"user-id\\\" readonly value=\\\"USR-12345\\\" />\"\n },\n {\n \"title\": \"Login Form\",\n \"code\": \"<script>\\n let email = $state('');\\n let password = $state('');\\n let errors = $state({ email: '', password: '' });\\n\\n function validate() {\\n errors = { email: '', password: '' };\\n\\n if (!email) errors.email = 'Email is required';\\n else if (!email.includes('@')) errors.email = 'Invalid email address';\\n\\n if (!password) errors.password = 'Password is required';\\n else if (password.length < 8) errors.password = 'Password must be at least 8 characters';\\n\\n return !errors.email && !errors.password;\\n }\\n</script>\\n\\n<form onsubmit|preventDefault={() => validate() && login()}>\\n <div class=\\\"space-y-4\\\">\\n <FormField\\n label=\\\"Email\\\"\\n id=\\\"email\\\"\\n type=\\\"email\\\"\\n required\\n autocomplete=\\\"email\\\"\\n bind:value={email}\\n error={errors.email}\\n />\\n <FormField\\n label=\\\"Password\\\"\\n id=\\\"password\\\"\\n type=\\\"password\\\"\\n required\\n autocomplete=\\\"current-password\\\"\\n bind:value={password}\\n error={errors.password}\\n />\\n <Button type=\\\"submit\\\" class=\\\"w-full\\\">Sign In</Button>\\n </div>\\n</form>\"\n },\n {\n \"title\": \"Contact Form\",\n \"code\": \"<form class=\\\"space-y-4\\\">\\n <FormField label=\\\"Full Name\\\" id=\\\"name\\\" required autocomplete=\\\"name\\\" bind:value={name} />\\n <FormField\\n label=\\\"Email\\\"\\n id=\\\"email\\\"\\n type=\\\"email\\\"\\n required\\n autocomplete=\\\"email\\\"\\n bind:value={email}\\n />\\n <FormField\\n label=\\\"Phone\\\"\\n id=\\\"phone\\\"\\n type=\\\"tel\\\"\\n autocomplete=\\\"tel\\\"\\n bind:value={phone}\\n hint=\\\"Optional\\\"\\n />\\n <FormField\\n label=\\\"Message\\\"\\n id=\\\"message\\\"\\n type=\\\"textarea\\\"\\n rows={5}\\n required\\n bind:value={message}\\n hint=\\\"Please describe your inquiry in detail\\\"\\n />\\n <Button type=\\\"submit\\\">Send Message</Button>\\n</form>\"\n },\n {\n \"title\": \"Controlled Field\",\n \"code\": \"<script>\\n let value = $state('');\\n\\n function handleChange(newValue: string) {\\n // Normalize phone number\\n value = newValue.replace(/\\\\D/g, '').slice(0, 10);\\n }\\n</script>\\n\\n<FormField\\n label=\\\"Phone\\\"\\n id=\\\"phone\\\"\\n type=\\\"tel\\\"\\n {value}\\n onValueChange={handleChange}\\n hint=\\\"10 digits only\\\"\\n/>\"\n }\n ],\n \"relatedComponents\": [\n \"Input\",\n \"Label\",\n \"Textarea\"\n ]\n },\n {\n \"name\": \"FormPageLayout\",\n \"description\": \"Specialized layout for form pages with optional sidebar\",\n \"category\": \"layout\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Page title (h1)\"\n },\n {\n \"name\": \"description\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Page description text\"\n },\n {\n \"name\": \"helpText\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Footer help text (supports HTML)\"\n },\n {\n \"name\": \"showNotices\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show notices section\"\n },\n {\n \"name\": \"sageBackground\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Use sage green background\"\n },\n {\n \"name\": \"children\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Main form content\"\n },\n {\n \"name\": \"notices\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Notices content\"\n },\n {\n \"name\": \"sidebar\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Sidebar content\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<FormPageLayout\\n title=\\\"Contact Us\\\"\\n description=\\\"Fill out the form below and we'll get back to you within 24 hours.\\\"\\n>\\n <form class=\\\"space-y-4\\\">\\n <Input label=\\\"Name\\\" required />\\n <Input label=\\\"Email\\\" type=\\\"email\\\" required />\\n <Textarea label=\\\"Message\\\" required />\\n <Button type=\\\"submit\\\">Send Message</Button>\\n </form>\\n</FormPageLayout>\"\n },\n {\n \"title\": \"Contact Form\",\n \"code\": \"<FormPageLayout\\n title=\\\"Get in Touch\\\"\\n description=\\\"We'd love to hear from you. Send us a message and we'll respond as soon as possible.\\\"\\n helpText=\\\"By submitting this form, you agree to our <a href='/privacy'>Privacy Policy</a>.\\\"\\n>\\n {#snippet sidebar()}\\n <div class=\\\"space-y-6\\\">\\n <Card>\\n <Card.Header>\\n <Card.Title>Contact Info</Card.Title>\\n </Card.Header>\\n <Card.Content class=\\\"space-y-3\\\">\\n <p class=\\\"text-sm\\\">\\n <strong>Email:</strong><br />\\n support@example.com\\n </p>\\n <p class=\\\"text-sm\\\">\\n <strong>Phone:</strong><br />\\n (555) 123-4567\\n </p>\\n </Card.Content>\\n </Card>\\n </div>\\n {/snippet}\\n\\n <Card>\\n <Card.Content class=\\\"pt-6\\\">\\n <form class=\\\"space-y-4\\\">\\n <div class=\\\"grid grid-cols-2 gap-4\\\">\\n <Input label=\\\"First Name\\\" required />\\n <Input label=\\\"Last Name\\\" required />\\n </div>\\n <Input label=\\\"Email\\\" type=\\\"email\\\" required />\\n <Input label=\\\"Phone\\\" type=\\\"tel\\\" />\\n <Select label=\\\"Subject\\\" required>\\n <option value=\\\"\\\">Select a topic...</option>\\n <option value=\\\"sales\\\">Sales Inquiry</option>\\n <option value=\\\"support\\\">Technical Support</option>\\n <option value=\\\"other\\\">Other</option>\\n </Select>\\n <Textarea label=\\\"Message\\\" rows={5} required />\\n <Button type=\\\"submit\\\" class=\\\"w-full\\\">Send Message</Button>\\n </form>\\n </Card.Content>\\n </Card>\\n</FormPageLayout>\"\n },\n {\n \"title\": \"Application Form\",\n \"code\": \"<FormPageLayout\\n title=\\\"Apply Now\\\"\\n description=\\\"Complete your application in just a few minutes.\\\"\\n sageBackground\\n>\\n {#snippet notices()}\\n <Alert variant=\\\"info\\\" class=\\\"mb-0\\\">\\n <strong>Save your progress:</strong> Your application will be saved automatically.\\n </Alert>\\n {/snippet}\\n\\n {#snippet sidebar()}\\n <div class=\\\"space-y-4\\\">\\n <Card>\\n <Card.Header>\\n <Card.Title>Progress</Card.Title>\\n </Card.Header>\\n <Card.Content>\\n <div class=\\\"space-y-2\\\">\\n <div class=\\\"flex justify-between text-sm\\\">\\n <span>Personal Info</span>\\n <Badge variant=\\\"success\\\">Complete</Badge>\\n </div>\\n <div class=\\\"flex justify-between text-sm\\\">\\n <span>Employment</span>\\n <Badge variant=\\\"warning\\\">In Progress</Badge>\\n </div>\\n <div class=\\\"flex justify-between text-sm\\\">\\n <span>Documents</span>\\n <Badge variant=\\\"outline\\\">Not Started</Badge>\\n </div>\\n </div>\\n </Card.Content>\\n </Card>\\n\\n <Card>\\n <Card.Header>\\n <Card.Title>Need Help?</Card.Title>\\n </Card.Header>\\n <Card.Content>\\n <p class=\\\"text-sm text-muted-foreground mb-4\\\">\\n Our team is here to assist you with your application.\\n </p>\\n <Button variant=\\\"outline\\\" class=\\\"w-full\\\">Chat with Us</Button>\\n </Card.Content>\\n </Card>\\n </div>\\n {/snippet}\\n\\n <Card>\\n <Card.Content class=\\\"pt-6\\\">\\n <!-- Multi-step form content -->\\n </Card.Content>\\n </Card>\\n</FormPageLayout>\"\n }\n ],\n \"relatedComponents\": [\n \"Card\",\n \"Alert\",\n \"Input\",\n \"PageHeader\"\n ]\n },\n {\n \"name\": \"FunnelChart\",\n \"description\": \"Visualize conversion rates and process flows\",\n \"category\": \"chart\",\n \"importPath\": \"@classic-homes/charts-svelte\",\n \"props\": [\n {\n \"name\": \"data\",\n \"type\": \"FunnelSliceData[]\",\n \"required\": true,\n \"description\": \"Array of funnel stages\"\n },\n {\n \"name\": \"sort\",\n \"type\": \"'ascending' | 'descending' | 'none'\",\n \"default\": \"'descending'\",\n \"required\": false,\n \"description\": \"Sort order\"\n },\n {\n \"name\": \"orientation\",\n \"type\": \"'vertical' | 'horizontal'\",\n \"default\": \"'vertical'\",\n \"required\": false,\n \"description\": \"Funnel orientation\"\n },\n {\n \"name\": \"showLabels\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show value labels\"\n },\n {\n \"name\": \"onClick\",\n \"type\": \"(params: SliceEventParams) => void\",\n \"required\": false,\n \"description\": \"Callback when clicked\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": true,\n \"description\": \"Chart title for accessibility\"\n },\n {\n \"name\": \"height\",\n \"type\": \"number | string\",\n \"default\": \"400\",\n \"required\": false,\n \"description\": \"Chart height\"\n },\n {\n \"name\": \"theme\",\n \"type\": \"'light' | 'dark' | 'auto'\",\n \"default\": \"'auto'\",\n \"required\": false,\n \"description\": \"Theme preference\"\n },\n {\n \"name\": \"showLegend\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show chart legend\"\n },\n {\n \"name\": \"showTooltip\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show tooltip on hover\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"sort\",\n \"values\": [\n \"ascending\",\n \"descending\",\n \"none\"\n ],\n \"default\": \"descending\"\n },\n {\n \"name\": \"orientation\",\n \"values\": [\n \"vertical\",\n \"horizontal\"\n ],\n \"default\": \"vertical\"\n },\n {\n \"name\": \"theme\",\n \"values\": [\n \"light\",\n \"dark\",\n \"auto\"\n ],\n \"default\": \"auto\"\n }\n ],\n \"slots\": [],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { FunnelChart } from '@classic-homes/charts-svelte';\\n\\n const data = [\\n { name: 'Visited', value: 100 },\\n { name: 'Inquired', value: 80 },\\n { name: 'Ordered', value: 60 },\\n { name: 'Paid', value: 40 },\\n { name: 'Completed', value: 20 },\\n ];\\n</script>\\n\\n<FunnelChart title=\\\"Conversion Funnel\\\" {data} sort=\\\"descending\\\" showLabels height={400} />\"\n },\n {\n \"title\": \"Sales Pipeline\",\n \"code\": \"<FunnelChart\\n title=\\\"Sales Pipeline\\\"\\n data={[\\n { name: 'Leads', value: 500 },\\n { name: 'Qualified', value: 350 },\\n { name: 'Proposal', value: 200 },\\n { name: 'Negotiation', value: 100 },\\n { name: 'Closed', value: 50 },\\n ]}\\n sort=\\\"descending\\\"\\n/>\"\n },\n {\n \"title\": \"Ascending Funnel\",\n \"code\": \"<FunnelChart title=\\\"Growth Funnel\\\" {data} sort=\\\"ascending\\\" />\"\n }\n ],\n \"relatedComponents\": [\n \"BarChart\",\n \"SankeyChart\"\n ]\n },\n {\n \"name\": \"GaugeChart\",\n \"description\": \"Display single value metrics with progress indicator\",\n \"category\": \"chart\",\n \"importPath\": \"@classic-homes/charts-svelte\",\n \"props\": [\n {\n \"name\": \"value\",\n \"type\": \"number\",\n \"required\": true,\n \"description\": \"Current value to display\"\n },\n {\n \"name\": \"min\",\n \"type\": \"number\",\n \"default\": \"0\",\n \"required\": false,\n \"description\": \"Minimum value of the gauge\"\n },\n {\n \"name\": \"max\",\n \"type\": \"number\",\n \"default\": \"100\",\n \"required\": false,\n \"description\": \"Maximum value of the gauge\"\n },\n {\n \"name\": \"splitNumber\",\n \"type\": \"number\",\n \"default\": \"10\",\n \"required\": false,\n \"description\": \"Number of tick divisions\"\n },\n {\n \"name\": \"showProgress\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Show colored progress arc\"\n },\n {\n \"name\": \"formatValue\",\n \"type\": \"(value: number) => string\",\n \"required\": false,\n \"description\": \"Custom value formatter\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": true,\n \"description\": \"Chart title for accessibility\"\n },\n {\n \"name\": \"height\",\n \"type\": \"number | string\",\n \"default\": \"400\",\n \"required\": false,\n \"description\": \"Chart height\"\n },\n {\n \"name\": \"theme\",\n \"type\": \"'light' | 'dark' | 'auto'\",\n \"default\": \"'auto'\",\n \"required\": false,\n \"description\": \"Theme preference\"\n },\n {\n \"name\": \"animation\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Enable/disable animations\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"theme\",\n \"values\": [\n \"light\",\n \"dark\",\n \"auto\"\n ],\n \"default\": \"auto\"\n }\n ],\n \"slots\": [],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { GaugeChart } from '@classic-homes/charts-svelte';\\n</script>\\n\\n<GaugeChart title=\\\"Performance Score\\\" value={72} min={0} max={100} showProgress height={400} />\"\n },\n {\n \"title\": \"Performance Score\",\n \"code\": \"<GaugeChart title=\\\"Performance Score\\\" value={85} min={0} max={100} showProgress />\"\n },\n {\n \"title\": \"With Custom Formatter\",\n \"code\": \"<GaugeChart title=\\\"Completion Rate\\\" value={72} formatValue={(v) => `${v}%`} showProgress />\"\n },\n {\n \"title\": \"Temperature Gauge\",\n \"code\": \"<GaugeChart\\n title=\\\"CPU Temperature\\\"\\n value={65}\\n min={0}\\n max={100}\\n formatValue={(v) => `${v}°C`}\\n showProgress\\n/>\"\n },\n {\n \"title\": \"Revenue KPI\",\n \"code\": \"<GaugeChart\\n title=\\\"Monthly Target\\\"\\n value={85000}\\n min={0}\\n max={100000}\\n formatValue={(v) => `$${(v / 1000).toFixed(0)}K`}\\n showProgress\\n/>\"\n }\n ],\n \"relatedComponents\": [\n \"DonutChart\",\n \"RadarChart\"\n ]\n },\n {\n \"name\": \"Header\",\n \"description\": \"Flexible application header with navigation support\",\n \"category\": \"layout\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"showMenuButton\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Show hamburger menu button\"\n },\n {\n \"name\": \"menuOpen\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Mobile menu state\"\n },\n {\n \"name\": \"onMenuClick\",\n \"type\": \"() => void\",\n \"required\": false,\n \"description\": \"Menu button callback\"\n },\n {\n \"name\": \"showCollapseButton\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Show sidebar collapse button\"\n },\n {\n \"name\": \"sidebarCollapsed\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Sidebar collapsed state\"\n },\n {\n \"name\": \"onCollapseClick\",\n \"type\": \"() => void\",\n \"required\": false,\n \"description\": \"Collapse button callback\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Page title\"\n },\n {\n \"name\": \"start\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Content after buttons\"\n },\n {\n \"name\": \"nav\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Navigation content\"\n },\n {\n \"name\": \"end\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Right side content\"\n },\n {\n \"name\": \"mobileNav\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Mobile navigation drawer\"\n },\n {\n \"name\": \"mobileBreakpoint\",\n \"type\": \"'sm' | 'md' | 'lg'\",\n \"default\": \"'lg'\",\n \"required\": false,\n \"description\": \"Responsive breakpoint\"\n },\n {\n \"name\": \"strongBorder\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Thicker bottom border\"\n },\n {\n \"name\": \"backdropBlur\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Blur effect\"\n },\n {\n \"name\": \"elevated\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Higher z-index\"\n },\n {\n \"name\": \"maxWidth\",\n \"type\": \"'none' | 'sm' | ... | '7xl'\",\n \"default\": \"'none'\",\n \"required\": false,\n \"description\": \"Content max-width\"\n },\n {\n \"name\": \"search\",\n \"type\": \"HeaderSearchConfig\",\n \"required\": false,\n \"description\": \"Search configuration\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional classes\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"mobileBreakpoint\",\n \"values\": [\n \"sm\",\n \"md\",\n \"lg\"\n ],\n \"default\": \"lg\"\n },\n {\n \"name\": \"maxWidth\",\n \"values\": [\n \"none\",\n \"sm\",\n \"7xl\"\n ],\n \"default\": \"none\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Header title=\\\"Dashboard\\\" />\"\n },\n {\n \"title\": \"E-commerce Header\",\n \"code\": \"<Header backdropBlur elevated maxWidth=\\\"7xl\\\">\\n {#snippet start()}\\n <a href=\\\"/\\\" class=\\\"font-bold text-xl\\\">Store</a>\\n {/snippet}\\n\\n {#snippet nav()}\\n <a href=\\\"/products\\\">Products</a>\\n <a href=\\\"/categories\\\">Categories</a>\\n <a href=\\\"/deals\\\">Deals</a>\\n {/snippet}\\n\\n {#snippet end()}\\n <Button variant=\\\"ghost\\\" size=\\\"icon\\\">\\n <SearchIcon />\\n </Button>\\n <Button variant=\\\"ghost\\\" size=\\\"icon\\\">\\n <CartIcon />\\n <Badge class=\\\"absolute -top-1 -right-1\\\">3</Badge>\\n </Button>\\n <Button variant=\\\"ghost\\\" size=\\\"icon\\\">\\n <UserIcon />\\n </Button>\\n {/snippet}\\n</Header>\"\n },\n {\n \"title\": \"Admin Header\",\n \"code\": \"<Header\\n showCollapseButton\\n sidebarCollapsed={!sidebarOpen}\\n onCollapseClick={() => (sidebarOpen = !sidebarOpen)}\\n title=\\\"Admin Panel\\\"\\n>\\n {#snippet end()}\\n <div class=\\\"flex items-center gap-4\\\">\\n <Badge variant=\\\"outline\\\">v2.1.0</Badge>\\n <Button variant=\\\"ghost\\\" size=\\\"icon\\\">\\n <SettingsIcon />\\n </Button>\\n <DropdownMenu>\\n <DropdownMenu.Trigger>\\n <Avatar>AD</Avatar>\\n </DropdownMenu.Trigger>\\n <DropdownMenu.Content>\\n <DropdownMenu.Item>Profile</DropdownMenu.Item>\\n <DropdownMenu.Item>Settings</DropdownMenu.Item>\\n <DropdownMenu.Separator />\\n <DropdownMenu.Item>Log out</DropdownMenu.Item>\\n </DropdownMenu.Content>\\n </DropdownMenu>\\n </div>\\n {/snippet}\\n</Header>\"\n }\n ],\n \"relatedComponents\": [\n \"Sidebar\",\n \"DashboardLayout\",\n \"PublicLayout\"\n ]\n },\n {\n \"name\": \"HeaderSearch\",\n \"description\": \"Docusaurus-style search component with modal dialog and keyboard navigation\",\n \"category\": \"navigation\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"enabled\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Whether search is visible\"\n },\n {\n \"name\": \"placeholder\",\n \"type\": \"string\",\n \"default\": \"'Search...'\",\n \"required\": false,\n \"description\": \"Placeholder text\"\n },\n {\n \"name\": \"onSearch\",\n \"type\": \"(query: string) => void\",\n \"required\": false,\n \"description\": \"Search callback (debounced 200ms)\"\n },\n {\n \"name\": \"onSelect\",\n \"type\": \"(item: SearchResultItem) => void\",\n \"required\": false,\n \"description\": \"Selection callback\"\n },\n {\n \"name\": \"onOpenChange\",\n \"type\": \"(open: boolean) => void\",\n \"required\": false,\n \"description\": \"Dialog open/close callback\"\n },\n {\n \"name\": \"results\",\n \"type\": \"SearchResultItem[] | SearchResultGroup[]\",\n \"default\": \"[]\",\n \"required\": false,\n \"description\": \"Search results to display\"\n },\n {\n \"name\": \"loading\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Loading state\"\n },\n {\n \"name\": \"emptyMessage\",\n \"type\": \"string\",\n \"default\": \"'No results found.'\",\n \"required\": false,\n \"description\": \"Empty state message\"\n },\n {\n \"name\": \"enableShortcut\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Enable Cmd/Ctrl+K shortcut\"\n },\n {\n \"name\": \"shortcutKey\",\n \"type\": \"string\",\n \"default\": \"'k'\",\n \"required\": false,\n \"description\": \"Custom shortcut key\"\n },\n {\n \"name\": \"variant\",\n \"type\": \"'default' | 'icon'\",\n \"default\": \"'default'\",\n \"required\": false,\n \"description\": \"Trigger button style\"\n },\n {\n \"name\": \"size\",\n \"type\": \"'sm' | 'md'\",\n \"default\": \"'md'\",\n \"required\": false,\n \"description\": \"Trigger button size\"\n },\n {\n \"name\": \"renderResult\",\n \"type\": \"Snippet<[item, isSelected]>\",\n \"required\": false,\n \"description\": \"Custom result renderer\"\n },\n {\n \"name\": \"renderEmpty\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Custom empty state renderer\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional classes for trigger\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"variant\",\n \"values\": [\n \"default\",\n \"icon\"\n ],\n \"default\": \"default\"\n },\n {\n \"name\": \"size\",\n \"values\": [\n \"sm\",\n \"md\"\n ],\n \"default\": \"md\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n let results: SearchResultItem[] = $state([]);\\n let loading = $state(false);\\n\\n async function handleSearch(query: string) {\\n loading = true;\\n results = await fetchSearchResults(query);\\n loading = false;\\n }\\n\\n function handleSelect(item: SearchResultItem) {\\n goto(item.href);\\n }\\n</script>\\n\\n<HeaderSearch\\n enabled={true}\\n placeholder=\\\"Search...\\\"\\n onSearch={handleSearch}\\n onSelect={handleSelect}\\n {results}\\n {loading}\\n/>\"\n },\n {\n \"title\": \"Default\",\n \"description\": \"Full search box with placeholder and keyboard shortcut hint:\",\n \"code\": \"<HeaderSearch variant=\\\"default\\\" />\"\n },\n {\n \"title\": \"Icon\",\n \"description\": \"Compact icon-only button:\",\n \"code\": \"<HeaderSearch variant=\\\"icon\\\" />\"\n },\n {\n \"title\": \"In Header\",\n \"code\": \"<Header>\\n <div slot=\\\"actions\\\">\\n <HeaderSearch onSearch={handleSearch} onSelect={handleSelect} {results} />\\n </div>\\n</Header>\"\n },\n {\n \"title\": \"Grouped Results\",\n \"code\": \"<script>\\n const groupedResults = [\\n {\\n title: 'Components',\\n items: [\\n { id: '1', title: 'Button', href: '/docs/button' },\\n { id: '2', title: 'Card', href: '/docs/card' },\\n ],\\n },\\n {\\n title: 'Guides',\\n items: [{ id: '3', title: 'Getting Started', href: '/guides/start' }],\\n },\\n ];\\n</script>\\n\\n<HeaderSearch results={groupedResults} />\"\n },\n {\n \"title\": \"Custom Result Rendering\",\n \"code\": \"<HeaderSearch {results}>\\n {#snippet renderResult(item, isSelected)}\\n <div class=\\\"flex items-center gap-2\\\">\\n <Icon name={item.icon} />\\n <span>{item.title}</span>\\n {#if item.badge}\\n <Badge>{item.badge}</Badge>\\n {/if}\\n </div>\\n {/snippet}\\n</HeaderSearch>\"\n },\n {\n \"title\": \"Custom Empty State\",\n \"code\": \"<HeaderSearch {results}>\\n {#snippet renderEmpty()}\\n <div class=\\\"text-center py-8\\\">\\n <Icon name=\\\"search\\\" class=\\\"h-8 w-8 mx-auto mb-2 text-muted-foreground\\\" />\\n <p>No results found</p>\\n <a href=\\\"/help\\\" class=\\\"text-primary\\\">Need help?</a>\\n </div>\\n {/snippet}\\n</HeaderSearch>\"\n }\n ],\n \"relatedComponents\": [\n \"Header\",\n \"Dialog\"\n ]\n },\n {\n \"name\": \"HeatmapChart\",\n \"description\": \"Matrix data visualization with color intensity\",\n \"category\": \"chart\",\n \"importPath\": \"@classic-homes/charts-svelte\",\n \"props\": [\n {\n \"name\": \"data\",\n \"type\": \"HeatmapData\",\n \"required\": true,\n \"description\": \"Matrix data with coordinates and values\"\n },\n {\n \"name\": \"xAxis\",\n \"type\": \"string[]\",\n \"required\": true,\n \"description\": \"X-axis labels\"\n },\n {\n \"name\": \"yAxis\",\n \"type\": \"string[]\",\n \"required\": true,\n \"description\": \"Y-axis labels\"\n },\n {\n \"name\": \"showValues\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Display values in cells\"\n },\n {\n \"name\": \"onClick\",\n \"type\": \"(params: HeatmapEventParams) => void\",\n \"required\": false,\n \"description\": \"Callback when clicked\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": true,\n \"description\": \"Chart title for accessibility\"\n },\n {\n \"name\": \"height\",\n \"type\": \"number | string\",\n \"default\": \"400\",\n \"required\": false,\n \"description\": \"Chart height\"\n },\n {\n \"name\": \"theme\",\n \"type\": \"'light' | 'dark' | 'auto'\",\n \"default\": \"'auto'\",\n \"required\": false,\n \"description\": \"Theme preference\"\n },\n {\n \"name\": \"showTooltip\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show tooltip on hover\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"theme\",\n \"values\": [\n \"light\",\n \"dark\",\n \"auto\"\n ],\n \"default\": \"auto\"\n }\n ],\n \"slots\": [],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { HeatmapChart } from '@classic-homes/charts-svelte';\\n\\n const xAxis = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];\\n const yAxis = ['12a', '6a', '12p', '6p'];\\n\\n const data = {\\n data: [\\n [0, 0, 5],\\n [0, 1, 1],\\n [0, 2, 0],\\n [0, 3, 2],\\n [1, 0, 1],\\n [1, 1, 0],\\n [1, 2, 3],\\n [1, 3, 4],\\n // ... more data points\\n ],\\n min: 0,\\n max: 5,\\n };\\n</script>\\n\\n<HeatmapChart title=\\\"Activity Heatmap\\\" {data} {xAxis} {yAxis} showValues height={400} />\"\n },\n {\n \"title\": \"GitHub-style Activity\",\n \"code\": \"<HeatmapChart\\n title=\\\"Commit Activity\\\"\\n {data}\\n xAxis={['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']}\\n yAxis={['12a', '4a', '8a', '12p', '4p', '8p']}\\n/>\"\n },\n {\n \"title\": \"Correlation Matrix\",\n \"code\": \"<HeatmapChart\\n title=\\\"Feature Correlation\\\"\\n {data}\\n xAxis={['Price', 'Size', 'Age', 'Rooms']}\\n yAxis={['Price', 'Size', 'Age', 'Rooms']}\\n showValues\\n/>\"\n }\n ],\n \"relatedComponents\": [\n \"ScatterChart\",\n \"TreemapChart\"\n ]\n },\n {\n \"name\": \"Icon\",\n \"description\": \"A unified icon component with 50+ commonly used icons\",\n \"category\": \"core\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"name\",\n \"type\": \"IconName\",\n \"required\": false,\n \"description\": \"Name of the icon to display (required)\"\n },\n {\n \"name\": \"size\",\n \"type\": \"number\",\n \"default\": \"24\",\n \"required\": false,\n \"description\": \"Size of the icon in pixels\"\n },\n {\n \"name\": \"strokeWidth\",\n \"type\": \"number\",\n \"default\": \"2\",\n \"required\": false,\n \"description\": \"Stroke width for stroke-based icons\"\n },\n {\n \"name\": \"label\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Accessible label (renders as visually hidden text)\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Icon name=\\\"check\\\" />\\n<Icon name=\\\"close\\\" />\\n<Icon name=\\\"edit\\\" />\"\n },\n {\n \"title\": \"Navigation & Actions\",\n \"code\": \"<Icon name=\\\"close\\\" />\\n<!-- X mark -->\\n<Icon name=\\\"check\\\" />\\n<!-- Checkmark -->\\n<Icon name=\\\"plus\\\" />\\n<!-- Plus sign -->\\n<Icon name=\\\"minus\\\" />\\n<!-- Minus sign -->\\n<Icon name=\\\"menu\\\" />\\n<!-- Hamburger menu -->\\n<Icon name=\\\"search\\\" />\\n<!-- Magnifying glass -->\\n<Icon name=\\\"home\\\" />\\n<!-- House -->\\n<Icon name=\\\"settings\\\" />\\n<!-- Gear -->\\n<Icon name=\\\"refresh\\\" />\\n<!-- Refresh arrows -->\"\n },\n {\n \"title\": \"Arrows & Chevrons\",\n \"code\": \"<Icon name=\\\"chevron-down\\\" />\\n<Icon name=\\\"chevron-up\\\" />\\n<Icon name=\\\"chevron-left\\\" />\\n<Icon name=\\\"chevron-right\\\" />\\n<Icon name=\\\"arrow-left\\\" />\\n<Icon name=\\\"arrow-right\\\" />\\n<Icon name=\\\"external-link\\\" />\"\n },\n {\n \"title\": \"Editing & Files\",\n \"code\": \"<Icon name=\\\"edit\\\" />\\n<!-- Pencil -->\\n<Icon name=\\\"trash\\\" />\\n<!-- Trash can -->\\n<Icon name=\\\"copy\\\" />\\n<!-- Copy documents -->\\n<Icon name=\\\"download\\\" />\\n<!-- Download arrow -->\\n<Icon name=\\\"upload\\\" />\\n<!-- Upload arrow -->\\n<Icon name=\\\"file\\\" />\\n<!-- Document -->\\n<Icon name=\\\"folder\\\" />\\n<!-- Folder -->\\n<Icon name=\\\"image\\\" />\\n<!-- Image placeholder -->\"\n },\n {\n \"title\": \"Feedback & Status\",\n \"code\": \"<Icon name=\\\"info\\\" />\\n<!-- Info circle -->\\n<Icon name=\\\"alert-circle\\\" />\\n<!-- Alert circle -->\\n<Icon name=\\\"alert-triangle\\\" />\\n<!-- Warning triangle -->\\n<Icon name=\\\"loading\\\" />\\n<!-- Animated spinner -->\"\n },\n {\n \"title\": \"Communication\",\n \"code\": \"<Icon name=\\\"message\\\" />\\n<!-- Speech bubble -->\\n<Icon name=\\\"chat\\\" />\\n<!-- Simple chat bubble -->\\n<Icon name=\\\"mail\\\" />\\n<!-- Envelope -->\\n<Icon name=\\\"phone\\\" />\\n<!-- Phone -->\\n<Icon name=\\\"send\\\" />\\n<!-- Paper plane -->\"\n },\n {\n \"title\": \"User & Security\",\n \"code\": \"<Icon name=\\\"user\\\" />\\n<!-- User silhouette -->\\n<Icon name=\\\"lock\\\" />\\n<!-- Locked padlock -->\\n<Icon name=\\\"unlock\\\" />\\n<!-- Unlocked padlock -->\\n<Icon name=\\\"eye\\\" />\\n<!-- Visible eye -->\\n<Icon name=\\\"eye-off\\\" />\\n<!-- Hidden eye -->\"\n },\n {\n \"title\": \"UI & Interaction\",\n \"code\": \"<Icon name=\\\"more\\\" />\\n<!-- Vertical dots -->\\n<Icon name=\\\"more-horizontal\\\" />\\n<!-- Horizontal dots -->\\n<Icon name=\\\"grip\\\" />\\n<!-- Drag handle (6 dots) -->\\n<Icon name=\\\"filter\\\" />\\n<!-- Filter funnel -->\\n<Icon name=\\\"sort\\\" />\\n<!-- Sort arrows -->\\n<Icon name=\\\"link\\\" />\\n<!-- Chain link -->\"\n },\n {\n \"title\": \"Time & Date\",\n \"code\": \"<Icon name=\\\"calendar\\\" />\\n<!-- Calendar -->\\n<Icon name=\\\"clock\\\" />\\n<!-- Clock face -->\\n<Icon name=\\\"history\\\" />\\n<!-- Clock with history -->\"\n },\n {\n \"title\": \"Social & Favorites\",\n \"code\": \"<Icon name=\\\"star\\\" />\\n<!-- Star -->\\n<Icon name=\\\"heart\\\" />\\n<!-- Heart -->\\n<Icon name=\\\"bookmark\\\" />\\n<!-- Bookmark -->\"\n },\n {\n \"title\": \"Icon Buttons\",\n \"code\": \"<button class=\\\"p-2 rounded-md hover:bg-muted\\\">\\n <Icon name=\\\"close\\\" size={20} label=\\\"Close dialog\\\" />\\n</button>\\n\\n<button class=\\\"p-2 rounded-md hover:bg-muted\\\">\\n <Icon name=\\\"settings\\\" size={20} label=\\\"Open settings\\\" />\\n</button>\"\n },\n {\n \"title\": \"Button with Icon\",\n \"code\": \"<Button>\\n <Icon name=\\\"plus\\\" size={18} class=\\\"mr-2\\\" />\\n Add Item\\n</Button>\\n\\n<Button variant=\\\"destructive\\\">\\n <Icon name=\\\"trash\\\" size={18} class=\\\"mr-2\\\" />\\n Delete\\n</Button>\"\n },\n {\n \"title\": \"Status Indicators\",\n \"code\": \"<div class=\\\"flex items-center gap-2\\\">\\n <Icon name=\\\"check\\\" class=\\\"text-green-500\\\" size={20} />\\n <span>Completed</span>\\n</div>\\n\\n<div class=\\\"flex items-center gap-2\\\">\\n <Icon name=\\\"alert-circle\\\" class=\\\"text-yellow-500\\\" size={20} />\\n <span>Pending review</span>\\n</div>\\n\\n<div class=\\\"flex items-center gap-2\\\">\\n <Icon name=\\\"close\\\" class=\\\"text-red-500\\\" size={20} />\\n <span>Failed</span>\\n</div>\"\n },\n {\n \"title\": \"Loading State\",\n \"code\": \"<Button disabled>\\n <Icon name=\\\"loading\\\" size={18} class=\\\"mr-2\\\" />\\n Saving...\\n</Button>\"\n },\n {\n \"title\": \"Navigation Menu\",\n \"code\": \"<nav class=\\\"space-y-1\\\">\\n <a href=\\\"/\\\" class=\\\"flex items-center gap-3 px-3 py-2 rounded-md hover:bg-muted\\\">\\n <Icon name=\\\"home\\\" size={20} />\\n Home\\n </a>\\n <a href=\\\"/settings\\\" class=\\\"flex items-center gap-3 px-3 py-2 rounded-md hover:bg-muted\\\">\\n <Icon name=\\\"settings\\\" size={20} />\\n Settings\\n </a>\\n <a href=\\\"/profile\\\" class=\\\"flex items-center gap-3 px-3 py-2 rounded-md hover:bg-muted\\\">\\n <Icon name=\\\"user\\\" size={20} />\\n Profile\\n </a>\\n</nav>\"\n },\n {\n \"title\": \"Input with Icon\",\n \"code\": \"<div class=\\\"relative\\\">\\n <Icon\\n name=\\\"search\\\"\\n size={18}\\n class=\\\"absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground\\\"\\n />\\n <Input class=\\\"pl-10\\\" placeholder=\\\"Search...\\\" />\\n</div>\"\n },\n {\n \"title\": \"Password Toggle\",\n \"code\": \"<script>\\n let showPassword = $state(false);\\n</script>\\n\\n<div class=\\\"relative\\\">\\n <Input type={showPassword ? 'text' : 'password'} />\\n <button\\n type=\\\"button\\\"\\n class=\\\"absolute right-3 top-1/2 -translate-y-1/2\\\"\\n onclick={() => (showPassword = !showPassword)}\\n >\\n <Icon\\n name={showPassword ? 'eye-off' : 'eye'}\\n size={18}\\n label={showPassword ? 'Hide password' : 'Show password'}\\n />\\n </button>\\n</div>\"\n }\n ],\n \"relatedComponents\": [\n \"Button\",\n \"Spinner\"\n ]\n },\n {\n \"name\": \"Input\",\n \"description\": \"Text input field for single-line data entry with various input modes\",\n \"category\": \"form\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"type\",\n \"type\": \"string\",\n \"default\": \"'text'\",\n \"required\": false,\n \"description\": \"HTML input type\"\n },\n {\n \"name\": \"value\",\n \"type\": \"string | number\",\n \"default\": \"''\",\n \"required\": false,\n \"description\": \"Input value (bindable)\"\n },\n {\n \"name\": \"placeholder\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Placeholder text\"\n },\n {\n \"name\": \"disabled\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Disables the input\"\n },\n {\n \"name\": \"readonly\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Makes the input read-only\"\n },\n {\n \"name\": \"required\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Marks as required\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Input name for forms\"\n },\n {\n \"name\": \"id\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Input ID for label association\"\n },\n {\n \"name\": \"autocomplete\",\n \"type\": \"AutoFill\",\n \"required\": false,\n \"description\": \"Browser autocomplete hint\"\n },\n {\n \"name\": \"inputmode\",\n \"type\": \"'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search'\",\n \"required\": false,\n \"description\": \"Mobile keyboard hint\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n },\n {\n \"name\": \"onValueChange\",\n \"type\": \"(value: string) => void\",\n \"required\": false,\n \"description\": \"Callback when value changes\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"inputmode\",\n \"values\": [\n \"none\",\n \"text\",\n \"tel\",\n \"url\",\n \"email\",\n \"numeric\",\n \"decimal\",\n \"search\"\n ]\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Input placeholder=\\\"Enter text...\\\" />\"\n },\n {\n \"title\": \"Text (Default)\",\n \"code\": \"<Input type=\\\"text\\\" placeholder=\\\"Enter name\\\" />\"\n },\n {\n \"title\": \"Email\",\n \"code\": \"<Input type=\\\"email\\\" placeholder=\\\"your@email.com\\\" autocomplete=\\\"email\\\" />\"\n },\n {\n \"title\": \"Password\",\n \"code\": \"<Input type=\\\"password\\\" placeholder=\\\"Enter password\\\" autocomplete=\\\"current-password\\\" />\"\n },\n {\n \"title\": \"Number\",\n \"code\": \"<Input type=\\\"number\\\" placeholder=\\\"0\\\" />\"\n },\n {\n \"title\": \"Search\",\n \"code\": \"<Input type=\\\"search\\\" placeholder=\\\"Search...\\\" />\"\n },\n {\n \"title\": \"Tel (Phone)\",\n \"code\": \"<Input type=\\\"tel\\\" placeholder=\\\"(555) 123-4567\\\" autocomplete=\\\"tel\\\" inputmode=\\\"tel\\\" />\"\n },\n {\n \"title\": \"URL\",\n \"code\": \"<Input type=\\\"url\\\" placeholder=\\\"https://example.com\\\" inputmode=\\\"url\\\" />\"\n },\n {\n \"title\": \"Disabled\",\n \"code\": \"<Input disabled value=\\\"Cannot edit\\\" />\"\n },\n {\n \"title\": \"Read-only\",\n \"code\": \"<Input readonly value=\\\"Read only value\\\" />\"\n },\n {\n \"title\": \"Required\",\n \"code\": \"<Input required placeholder=\\\"Required field\\\" />\"\n },\n {\n \"title\": \"Search Input\",\n \"code\": \"<div class=\\\"relative\\\">\\n <svg\\n class=\\\"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground\\\"\\n fill=\\\"none\\\"\\n viewBox=\\\"0 0 24 24\\\"\\n stroke=\\\"currentColor\\\"\\n >\\n <path\\n stroke-linecap=\\\"round\\\"\\n stroke-linejoin=\\\"round\\\"\\n stroke-width=\\\"2\\\"\\n d=\\\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\\\"\\n />\\n </svg>\\n <Input type=\\\"search\\\" placeholder=\\\"Search...\\\" class=\\\"pl-10\\\" />\\n</div>\"\n },\n {\n \"title\": \"Input with Button\",\n \"code\": \"<div class=\\\"flex gap-2\\\">\\n <Input placeholder=\\\"Enter email\\\" class=\\\"flex-1\\\" />\\n <Button>Subscribe</Button>\\n</div>\"\n },\n {\n \"title\": \"Custom Width\",\n \"code\": \"<Input class=\\\"w-64\\\" placeholder=\\\"Fixed width\\\" />\\n<Input class=\\\"max-w-sm\\\" placeholder=\\\"Max width\\\" />\"\n }\n ],\n \"relatedComponents\": [\n \"Label\",\n \"FormField\",\n \"Textarea\"\n ]\n },\n {\n \"name\": \"Label\",\n \"description\": \"Accessible label component for form inputs\",\n \"category\": \"form\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"for\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"ID of the associated input element\"\n },\n {\n \"name\": \"disabled\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Applies disabled styling\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Label for=\\\"email\\\">Email Address</Label>\"\n },\n {\n \"title\": \"Disabled\",\n \"description\": \"When the associated input is disabled, apply matching styles to the label:\",\n \"code\": \"<div class=\\\"space-y-2\\\">\\n <Label for=\\\"disabled-input\\\" disabled>Disabled Field</Label>\\n <Input id=\\\"disabled-input\\\" disabled value=\\\"Cannot edit\\\" />\\n</div>\"\n },\n {\n \"title\": \"With Peer Styling\",\n \"description\": \"Labels automatically style differently when their peer input is disabled:\",\n \"code\": \"<div class=\\\"grid gap-2\\\">\\n <Input id=\\\"peer-demo\\\" disabled class=\\\"peer\\\" />\\n <Label for=\\\"peer-demo\\\">This label fades when input is disabled</Label>\\n</div>\"\n },\n {\n \"title\": \"Visually Hidden Label\",\n \"description\": \"For inputs where a visible label is not desired (like search), use screen-reader-only styling:\",\n \"code\": \"<Label for=\\\"search\\\" class=\\\"sr-only\\\">Search</Label>\\n<Input id=\\\"search\\\" type=\\\"search\\\" placeholder=\\\"Search...\\\" />\"\n },\n {\n \"title\": \"Form Field Group\",\n \"code\": \"<div class=\\\"space-y-4\\\">\\n <div class=\\\"space-y-2\\\">\\n <Label for=\\\"first-name\\\">First Name</Label>\\n <Input id=\\\"first-name\\\" />\\n </div>\\n <div class=\\\"space-y-2\\\">\\n <Label for=\\\"last-name\\\">Last Name</Label>\\n <Input id=\\\"last-name\\\" />\\n </div>\\n</div>\"\n },\n {\n \"title\": \"Horizontal Layout\",\n \"code\": \"<div class=\\\"flex items-center gap-4\\\">\\n <Label for=\\\"inline-input\\\" class=\\\"shrink-0 w-24\\\">Name</Label>\\n <Input id=\\\"inline-input\\\" class=\\\"flex-1\\\" />\\n</div>\"\n },\n {\n \"title\": \"With Checkbox\",\n \"code\": \"<script>\\n import { Label, Checkbox } from '@classic-homes/theme-svelte';\\n</script>\\n\\n<div class=\\\"flex items-center gap-2\\\">\\n <Checkbox id=\\\"terms\\\" />\\n <Label for=\\\"terms\\\">I agree to the terms and conditions</Label>\\n</div>\"\n }\n ],\n \"relatedComponents\": [\n \"Input\",\n \"Checkbox\",\n \"FormField\"\n ]\n },\n {\n \"name\": \"LineChart\",\n \"description\": \"Display trends over time with smooth curves and area fill options\",\n \"category\": \"chart\",\n \"importPath\": \"@classic-homes/charts-svelte\",\n \"props\": [\n {\n \"name\": \"data\",\n \"type\": \"LineChartData\",\n \"required\": true,\n \"description\": \"Chart data with categories and series\"\n },\n {\n \"name\": \"smooth\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Use smooth curved lines instead of straight segments\"\n },\n {\n \"name\": \"areaFilled\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Fill the area under the line\"\n },\n {\n \"name\": \"showDataPoints\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Show data point markers on the line\"\n },\n {\n \"name\": \"stacked\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Stack multiple series on top of each other\"\n },\n {\n \"name\": \"onClick\",\n \"type\": \"(params: DataPointEventParams) => void\",\n \"required\": false,\n \"description\": \"Callback when a data point is clicked\"\n },\n {\n \"name\": \"onHover\",\n \"type\": \"(params: DataPointEventParams) => void\",\n \"required\": false,\n \"description\": \"Callback when hovering over a data point\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": true,\n \"description\": \"Chart title for accessibility (aria-label)\"\n },\n {\n \"name\": \"description\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Optional description for screen readers\"\n },\n {\n \"name\": \"height\",\n \"type\": \"number | string\",\n \"default\": \"400\",\n \"required\": false,\n \"description\": \"Chart height in pixels or CSS value\"\n },\n {\n \"name\": \"loading\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Show loading skeleton\"\n },\n {\n \"name\": \"error\",\n \"type\": \"string | null\",\n \"required\": false,\n \"description\": \"Error message to display\"\n },\n {\n \"name\": \"theme\",\n \"type\": \"'light' | 'dark' | 'auto'\",\n \"default\": \"'auto'\",\n \"required\": false,\n \"description\": \"Theme preference\"\n },\n {\n \"name\": \"animation\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Enable/disable animations\"\n },\n {\n \"name\": \"showLegend\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show chart legend\"\n },\n {\n \"name\": \"showTooltip\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show tooltip on hover\"\n },\n {\n \"name\": \"showGrid\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show grid lines\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Custom CSS class\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"theme\",\n \"values\": [\n \"light\",\n \"dark\",\n \"auto\"\n ],\n \"default\": \"auto\"\n }\n ],\n \"slots\": [],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { LineChart } from '@classic-homes/charts-svelte';\\n\\n const data = {\\n categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'],\\n series: [\\n { name: '2024', data: [120, 132, 101, 134, 90, 230] },\\n { name: '2025', data: [220, 182, 191, 234, 290, 330] },\\n ],\\n };\\n</script>\\n\\n<LineChart title=\\\"Monthly Revenue\\\" {data} smooth height={400} />\"\n },\n {\n \"title\": \"Smooth Line Chart\",\n \"code\": \"<LineChart title=\\\"Monthly Sales\\\" {data} smooth height={400} />\"\n },\n {\n \"title\": \"With Data Points\",\n \"code\": \"<LineChart title=\\\"Monthly Sales\\\" {data} smooth showDataPoints height={400} />\"\n },\n {\n \"title\": \"Stacked Lines\",\n \"code\": \"<LineChart title=\\\"Stacked Revenue\\\" {data} stacked smooth height={400} />\"\n },\n {\n \"title\": \"With Area Fill\",\n \"code\": \"<LineChart title=\\\"Revenue Trend\\\" {data} areaFilled smooth height={400} />\"\n },\n {\n \"title\": \"Handling Click Events\",\n \"code\": \"<script>\\n function handleClick(params) {\\n console.log('Clicked:', params.seriesName, params.name, params.value);\\n }\\n</script>\\n\\n<LineChart title=\\\"Interactive Chart\\\" {data} onClick={handleClick} />\"\n }\n ],\n \"relatedComponents\": [\n \"AreaChart\",\n \"BarChart\"\n ]\n },\n {\n \"name\": \"LoadingLogo\",\n \"description\": \"Animated brand logo for loading states\",\n \"category\": \"branding\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"width\",\n \"type\": \"number\",\n \"default\": \"40\",\n \"required\": false,\n \"description\": \"Width in pixels\"\n },\n {\n \"name\": \"height\",\n \"type\": \"number\",\n \"default\": \"40\",\n \"required\": false,\n \"description\": \"Height in pixels\"\n },\n {\n \"name\": \"loading\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Enable loading animation\"\n },\n {\n \"name\": \"variant\",\n \"type\": \"'light' | 'dark'\",\n \"default\": \"'dark'\",\n \"required\": false,\n \"description\": \"Color variant\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional classes\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"variant\",\n \"values\": [\n \"light\",\n \"dark\"\n ],\n \"default\": \"dark\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<LoadingLogo loading />\"\n },\n {\n \"title\": \"Dark (Default)\",\n \"description\": \"For light backgrounds:\",\n \"code\": \"<LoadingLogo variant=\\\"dark\\\" loading />\"\n },\n {\n \"title\": \"Light\",\n \"description\": \"For dark backgrounds:\",\n \"code\": \"<div class=\\\"bg-gray-900 p-8\\\">\\n <LoadingLogo variant=\\\"light\\\" loading />\\n</div>\"\n },\n {\n \"title\": \"Splash Screen\",\n \"code\": \"{#if loading}\\n <div class=\\\"fixed inset-0 flex items-center justify-center bg-background\\\">\\n <div class=\\\"flex flex-col items-center gap-4\\\">\\n <LoadingLogo width={64} height={64} loading />\\n <p class=\\\"text-sm text-muted-foreground\\\">Loading...</p>\\n </div>\\n </div>\\n{/if}\"\n },\n {\n \"title\": \"Page Loading\",\n \"code\": \"{#if pageLoading}\\n <div class=\\\"flex items-center justify-center min-h-[400px]\\\">\\n <LoadingLogo loading />\\n </div>\\n{:else}\\n <main>{pageContent}</main>\\n{/if}\"\n },\n {\n \"title\": \"Dark Background Splash\",\n \"code\": \"<div class=\\\"fixed inset-0 flex items-center justify-center bg-gray-900\\\">\\n <LoadingLogo variant=\\\"light\\\" width={80} height={80} loading />\\n</div>\"\n },\n {\n \"title\": \"Button Loading State\",\n \"code\": \"<Button disabled={submitting}>\\n {#if submitting}\\n <LoadingLogo width={20} height={20} loading class=\\\"mr-2\\\" />\\n Saving...\\n {:else}\\n Save\\n {/if}\\n</Button>\"\n },\n {\n \"title\": \"Initial App Load\",\n \"code\": \"<!-- +layout.svelte -->\\n<script>\\n let appReady = $state(false);\\n\\n onMount(() => {\\n // Initialize app\\n setTimeout(() => (appReady = true), 1500);\\n });\\n</script>\\n\\n{#if !appReady}\\n <div class=\\\"fixed inset-0 z-50 flex items-center justify-center bg-background\\\">\\n <LoadingLogo width={64} height={64} loading />\\n </div>\\n{/if}\\n\\n<div class={appReady ? '' : 'hidden'}>\\n <slot />\\n</div>\"\n }\n ],\n \"relatedComponents\": [\n \"LogoMain\",\n \"Spinner\",\n \"Skeleton\"\n ]\n },\n {\n \"name\": \"LogoMain\",\n \"description\": \"Brand logo component with multiple layouts and variants\",\n \"category\": \"branding\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"variant\",\n \"type\": \"'horizontal' | 'stacked' | 'icon'\",\n \"default\": \"'horizontal'\",\n \"required\": false,\n \"description\": \"Layout variant\"\n },\n {\n \"name\": \"color\",\n \"type\": \"'dark' | 'light' | 'mono-dark' | 'mono-light'\",\n \"default\": \"'dark'\",\n \"required\": false,\n \"description\": \"Color scheme\"\n },\n {\n \"name\": \"subtitle\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Optional subtitle text\"\n },\n {\n \"name\": \"environment\",\n \"type\": \"'local' | 'dev' | 'demo'\",\n \"required\": false,\n \"description\": \"Environment indicator\"\n },\n {\n \"name\": \"size\",\n \"type\": \"'sm' | 'md' | 'lg'\",\n \"default\": \"'md'\",\n \"required\": false,\n \"description\": \"Size preset\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional classes\"\n },\n {\n \"name\": \"ariaLabel\",\n \"type\": \"string\",\n \"default\": \"'Classic Homes'\",\n \"required\": false,\n \"description\": \"Accessible label\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"variant\",\n \"values\": [\n \"horizontal\",\n \"stacked\",\n \"icon\"\n ],\n \"default\": \"horizontal\"\n },\n {\n \"name\": \"color\",\n \"values\": [\n \"dark\",\n \"light\",\n \"mono-dark\",\n \"mono-light\"\n ],\n \"default\": \"dark\"\n },\n {\n \"name\": \"environment\",\n \"values\": [\n \"local\",\n \"dev\",\n \"demo\"\n ]\n },\n {\n \"name\": \"size\",\n \"values\": [\n \"sm\",\n \"md\",\n \"lg\"\n ],\n \"default\": \"md\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<LogoMain />\"\n },\n {\n \"title\": \"Horizontal (Default)\",\n \"description\": \"Logo icon and text side by side:\",\n \"code\": \"<LogoMain variant=\\\"horizontal\\\" />\"\n },\n {\n \"title\": \"Stacked\",\n \"description\": \"Logo icon above text:\",\n \"code\": \"<LogoMain variant=\\\"stacked\\\" />\"\n },\n {\n \"title\": \"Icon Only\",\n \"description\": \"Just the logo icon:\",\n \"code\": \"<LogoMain variant=\\\"icon\\\" />\"\n },\n {\n \"title\": \"Dark (Default)\",\n \"description\": \"For light backgrounds:\",\n \"code\": \"<div class=\\\"bg-white p-4\\\">\\n <LogoMain color=\\\"dark\\\" />\\n</div>\"\n },\n {\n \"title\": \"Light\",\n \"description\": \"For dark backgrounds:\",\n \"code\": \"<div class=\\\"bg-gray-900 p-4\\\">\\n <LogoMain color=\\\"light\\\" />\\n</div>\"\n },\n {\n \"title\": \"Mono Dark\",\n \"description\": \"Navy monochrome for light backgrounds:\",\n \"code\": \"<LogoMain color=\\\"mono-dark\\\" />\"\n },\n {\n \"title\": \"Mono Light\",\n \"description\": \"White monochrome for dark backgrounds:\",\n \"code\": \"<div class=\\\"bg-primary p-4\\\">\\n <LogoMain color=\\\"mono-light\\\" />\\n</div>\"\n },\n {\n \"title\": \"Header Logo\",\n \"code\": \"<header class=\\\"flex items-center h-16 px-4 border-b\\\">\\n <a href=\\\"/\\\">\\n <LogoMain variant=\\\"horizontal\\\" size=\\\"md\\\" ariaLabel=\\\"\\\" />\\n </a>\\n</header>\"\n },\n {\n \"title\": \"Footer Logo\",\n \"code\": \"<footer class=\\\"bg-gray-900 py-8\\\">\\n <LogoMain color=\\\"light\\\" size=\\\"sm\\\" />\\n</footer>\"\n },\n {\n \"title\": \"Login Page Logo\",\n \"code\": \"<div class=\\\"flex flex-col items-center py-8\\\">\\n <LogoMain variant=\\\"stacked\\\" size=\\\"lg\\\" subtitle=\\\"MY HOME\\\" />\\n <h1 class=\\\"mt-4 text-2xl font-bold\\\">Sign In</h1>\\n</div>\"\n },\n {\n \"title\": \"Sidebar Collapsed Logo\",\n \"code\": \"<LogoMain variant={sidebarCollapsed ? 'icon' : 'horizontal'} size=\\\"md\\\" />\"\n },\n {\n \"title\": \"Development Environment\",\n \"code\": \"<LogoMain environment={import.meta.env.MODE === 'production' ? undefined : 'dev'} />\"\n }\n ],\n \"relatedComponents\": [\n \"LoadingLogo\",\n \"Header\",\n \"Sidebar\"\n ]\n },\n {\n \"name\": \"MultiSelect\",\n \"description\": \"Select multiple options from a dropdown list\",\n \"category\": \"form\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"value\",\n \"type\": \"string[]\",\n \"default\": \"[]\",\n \"required\": false,\n \"description\": \"Selected values (bindable)\"\n },\n {\n \"name\": \"options\",\n \"type\": \"MultiSelectOption[]\",\n \"default\": \"Required\",\n \"required\": false,\n \"description\": \"Array of options\"\n },\n {\n \"name\": \"placeholder\",\n \"type\": \"string\",\n \"default\": \"'Select options...'\",\n \"required\": false,\n \"description\": \"Placeholder text\"\n },\n {\n \"name\": \"emptyMessage\",\n \"type\": \"string\",\n \"default\": \"'No results found.'\",\n \"required\": false,\n \"description\": \"Message when no options match\"\n },\n {\n \"name\": \"disabled\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Disables the select\"\n },\n {\n \"name\": \"required\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Marks as required\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Name attribute for forms\"\n },\n {\n \"name\": \"id\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Element ID (auto-generated if empty)\"\n },\n {\n \"name\": \"label\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Label text\"\n },\n {\n \"name\": \"hint\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Hint text below the input\"\n },\n {\n \"name\": \"error\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Error message\"\n },\n {\n \"name\": \"max\",\n \"type\": \"number\",\n \"required\": false,\n \"description\": \"Maximum selections allowed\"\n },\n {\n \"name\": \"loading\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Shows loading state\"\n },\n {\n \"name\": \"debounceMs\",\n \"type\": \"number\",\n \"default\": \"300\",\n \"required\": false,\n \"description\": \"Debounce time for search\"\n },\n {\n \"name\": \"onValueChange\",\n \"type\": \"(value: string[]) => void\",\n \"required\": false,\n \"description\": \"Callback when value changes\"\n },\n {\n \"name\": \"onSearch\",\n \"type\": \"(query: string) => void\",\n \"required\": false,\n \"description\": \"Callback for search queries\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n let selected = $state([]);\\n\\n const options = [\\n { value: 'react', label: 'React' },\\n { value: 'svelte', label: 'Svelte' },\\n { value: 'vue', label: 'Vue' },\\n { value: 'angular', label: 'Angular' },\\n ];\\n</script>\\n\\n<MultiSelect {options} bind:value={selected} placeholder=\\\"Select frameworks...\\\" />\"\n },\n {\n \"title\": \"Tag Selector\",\n \"code\": \"<script>\\n let tags = $state([]);\\n const tagOptions = [\\n { value: 'urgent', label: 'Urgent' },\\n { value: 'bug', label: 'Bug' },\\n { value: 'feature', label: 'Feature' },\\n { value: 'docs', label: 'Documentation' },\\n ];\\n</script>\\n\\n<MultiSelect\\n label=\\\"Tags\\\"\\n hint=\\\"Add relevant tags\\\"\\n options={tagOptions}\\n bind:value={tags}\\n placeholder=\\\"Add tags...\\\"\\n/>\"\n },\n {\n \"title\": \"Team Members\",\n \"code\": \"<MultiSelect\\n label=\\\"Assign to\\\"\\n hint=\\\"Select team members to assign this task\\\"\\n options={teamMembers}\\n bind:value={assignees}\\n max={5}\\n placeholder=\\\"Select team members...\\\"\\n/>\"\n }\n ],\n \"relatedComponents\": [\n \"Select\",\n \"Combobox\",\n \"Checkbox\"\n ]\n },\n {\n \"name\": \"NoticeBanner\",\n \"description\": \"Banner component for displaying scheduled, dismissible announcements\",\n \"category\": \"feedback\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Maintenance Notice\",\n \"code\": \"<script>\\n const notices = [\\n {\\n id: 'maintenance',\\n title: 'Scheduled Maintenance',\\n message: 'The system will be unavailable on Sunday 2-4 AM EST.',\\n variant: 'warning',\\n location: 'banner',\\n dismissible: true,\\n startDate: '2025-01-15',\\n endDate: '2025-01-20',\\n },\\n ];\\n\\n initializeNotices(notices);\\n</script>\\n\\n<NoticeBanner />\"\n },\n {\n \"title\": \"With Link\",\n \"code\": \"<script>\\n const notices = [\\n {\\n id: 'new-feature',\\n message: 'Check out our new dashboard features!',\\n variant: 'info',\\n location: 'banner',\\n link: {\\n text: 'Learn more',\\n href: '/whats-new',\\n },\\n },\\n ];\\n</script>\\n\\n<NoticeBanner />\"\n },\n {\n \"title\": \"Page-Specific Notice\",\n \"code\": \"<script>\\n const notices = [\\n {\\n id: 'billing-update',\\n message: 'Your payment method will expire soon.',\\n variant: 'warning',\\n location: 'banner',\\n pages: ['/settings', '/billing'],\\n },\\n ];\\n\\n initializeNotices(notices);\\n setCurrentPath('/billing'); // Notice will show\\n</script>\\n\\n<NoticeBanner />\"\n },\n {\n \"title\": \"In Layout\",\n \"code\": \"<!-- +layout.svelte -->\\n<NoticeBanner />\\n\\n<main>\\n <slot />\\n</main>\"\n }\n ],\n \"relatedComponents\": [\n \"NoticeCard\",\n \"Alert\"\n ]\n },\n {\n \"name\": \"NoticeCard\",\n \"description\": \"Card-style component for displaying inline scheduled announcements\",\n \"category\": \"feedback\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { NoticeCard, initializeNotices, setCurrentPath } from '@classic-homes/theme-svelte';\\n\\n const notices = [\\n {\\n id: 'welcome',\\n title: 'Welcome!',\\n message: 'Thanks for signing up. Complete your profile to get started.',\\n variant: 'info',\\n location: 'card',\\n dismissible: true,\\n },\\n ];\\n\\n initializeNotices(notices);\\n setCurrentPath('/dashboard');\\n</script>\\n\\n<NoticeCard />\"\n },\n {\n \"title\": \"Welcome Message\",\n \"code\": \"<script>\\n const notices = [\\n {\\n id: 'onboarding',\\n title: 'Complete Your Profile',\\n message: 'Add a photo and bio to help others recognize you.',\\n variant: 'info',\\n location: 'card',\\n link: {\\n text: 'Edit profile',\\n href: '/settings/profile',\\n },\\n },\\n ];\\n</script>\\n\\n<NoticeCard />\"\n },\n {\n \"title\": \"Feature Announcement\",\n \"code\": \"<script>\\n const notices = [\\n {\\n id: 'new-charts',\\n title: 'New Charts Available',\\n message: \\\"We've added 5 new chart types to your dashboard.\\\",\\n variant: 'success',\\n location: 'card',\\n startDate: '2025-01-01',\\n endDate: '2025-01-31',\\n },\\n ];\\n</script>\\n\\n<NoticeCard />\"\n },\n {\n \"title\": \"Warning Notice\",\n \"code\": \"<script>\\n const notices = [\\n {\\n id: 'storage-limit',\\n message: \\\"You're approaching your storage limit. Upgrade to continue uploading.\\\",\\n variant: 'warning',\\n location: 'card',\\n pages: ['/dashboard', '/files'],\\n link: {\\n text: 'Upgrade plan',\\n href: '/billing/upgrade',\\n },\\n },\\n ];\\n</script>\\n\\n<NoticeCard />\"\n },\n {\n \"title\": \"In Page Content\",\n \"code\": \"<div class=\\\"space-y-4\\\">\\n <NoticeCard />\\n\\n <Card>\\n <CardHeader>\\n <CardTitle>Dashboard</CardTitle>\\n </CardHeader>\\n <CardContent>\\n <!-- Main content -->\\n </CardContent>\\n </Card>\\n</div>\"\n },\n {\n \"title\": \"Custom Styling\",\n \"code\": \"<NoticeCard class=\\\"mb-6\\\" />\"\n }\n ],\n \"relatedComponents\": [\n \"NoticeBanner\",\n \"Alert\"\n ]\n },\n {\n \"name\": \"NumberInput\",\n \"description\": \"Numeric input with increment/decrement controls\",\n \"category\": \"form\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"value\",\n \"type\": \"number | null\",\n \"default\": \"null\",\n \"required\": false,\n \"description\": \"Current value (bindable)\"\n },\n {\n \"name\": \"min\",\n \"type\": \"number\",\n \"required\": false,\n \"description\": \"Minimum allowed value\"\n },\n {\n \"name\": \"max\",\n \"type\": \"number\",\n \"required\": false,\n \"description\": \"Maximum allowed value\"\n },\n {\n \"name\": \"step\",\n \"type\": \"number\",\n \"default\": \"1\",\n \"required\": false,\n \"description\": \"Increment/decrement step\"\n },\n {\n \"name\": \"disabled\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Disables the input\"\n },\n {\n \"name\": \"readonly\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Makes input read-only\"\n },\n {\n \"name\": \"required\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Marks field as required\"\n },\n {\n \"name\": \"placeholder\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Placeholder text\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Name attribute for form submission\"\n },\n {\n \"name\": \"id\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Element ID (auto-generated if empty)\"\n },\n {\n \"name\": \"showStepper\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show +/- stepper buttons\"\n },\n {\n \"name\": \"label\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Label text\"\n },\n {\n \"name\": \"hint\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Hint text below the input\"\n },\n {\n \"name\": \"error\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Error message\"\n },\n {\n \"name\": \"onValueChange\",\n \"type\": \"(value: number | null) => void\",\n \"required\": false,\n \"description\": \"Callback when value changes\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n let quantity = $state(1);\\n</script>\\n\\n<NumberInput bind:value={quantity} />\"\n },\n {\n \"title\": \"Quantity Selector\",\n \"code\": \"<NumberInput label=\\\"Quantity\\\" bind:value={quantity} min={1} max={10} />\"\n },\n {\n \"title\": \"Price Input\",\n \"code\": \"<NumberInput label=\\\"Price\\\" bind:value={price} min={0} step={0.01} />\"\n },\n {\n \"title\": \"Age Input\",\n \"code\": \"<NumberInput label=\\\"Age\\\" bind:value={age} min={0} max={150} />\"\n }\n ],\n \"relatedComponents\": [\n \"Slider\",\n \"Input\"\n ]\n },\n {\n \"name\": \"OTPInput\",\n \"description\": \"One-time password input for verification codes\",\n \"category\": \"form\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"value\",\n \"type\": \"string\",\n \"default\": \"''\",\n \"required\": false,\n \"description\": \"Current value (bindable)\"\n },\n {\n \"name\": \"length\",\n \"type\": \"number\",\n \"default\": \"6\",\n \"required\": false,\n \"description\": \"Number of digits\"\n },\n {\n \"name\": \"disabled\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Disables the input\"\n },\n {\n \"name\": \"required\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Marks field as required\"\n },\n {\n \"name\": \"type\",\n \"type\": \"'numeric' | 'alphanumeric'\",\n \"default\": \"'numeric'\",\n \"required\": false,\n \"description\": \"Input type\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Name attribute for form submission\"\n },\n {\n \"name\": \"id\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Element ID (auto-generated if empty)\"\n },\n {\n \"name\": \"label\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Label text\"\n },\n {\n \"name\": \"hint\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Hint text below the input\"\n },\n {\n \"name\": \"error\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Error message\"\n },\n {\n \"name\": \"onComplete\",\n \"type\": \"(value: string) => void\",\n \"required\": false,\n \"description\": \"Callback when all digits entered\"\n },\n {\n \"name\": \"onValueChange\",\n \"type\": \"(value: string) => void\",\n \"required\": false,\n \"description\": \"Callback when value changes\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"type\",\n \"values\": [\n \"numeric\",\n \"alphanumeric\"\n ],\n \"default\": \"numeric\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n let code = $state('');\\n</script>\\n\\n<OTPInput bind:value={code} />\"\n },\n {\n \"title\": \"Verification Flow\",\n \"code\": \"<script>\\n let code = $state('');\\n let error = $state('');\\n let verifying = $state(false);\\n\\n async function handleComplete(value: string) {\\n verifying = true;\\n error = '';\\n\\n try {\\n await verifyOTP(value);\\n // Success - redirect\\n } catch {\\n error = 'Invalid verification code';\\n code = '';\\n } finally {\\n verifying = false;\\n }\\n }\\n</script>\\n\\n<div class=\\\"text-center space-y-4\\\">\\n <OTPInput\\n label=\\\"Verification Code\\\"\\n hint=\\\"Enter the 6-digit code sent to your email\\\"\\n bind:value={code}\\n {error}\\n onComplete={handleComplete}\\n />\\n {#if verifying}\\n <Spinner label=\\\"Verifying...\\\" />\\n {/if}\\n</div>\"\n },\n {\n \"title\": \"Two-Factor Authentication\",\n \"code\": \"<OTPInput\\n label=\\\"Authentication Code\\\"\\n hint=\\\"Enter code from your authenticator app\\\"\\n bind:value={twoFactorCode}\\n length={6}\\n onComplete={verify2FA}\\n/>\"\n }\n ],\n \"relatedComponents\": [\n \"Input\",\n \"FormField\"\n ]\n },\n {\n \"name\": \"PageHeader\",\n \"description\": \"Hero and page title component with multiple variants\",\n \"category\": \"layout\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Main title text\"\n },\n {\n \"name\": \"subtitle\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Optional subtitle\"\n },\n {\n \"name\": \"variant\",\n \"type\": \"'default' | 'hero' | 'centered' | 'form'\",\n \"default\": \"'default'\",\n \"required\": false,\n \"description\": \"Visual variant\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional classes\"\n },\n {\n \"name\": \"actions\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Action buttons\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"variant\",\n \"values\": [\n \"default\",\n \"hero\",\n \"centered\",\n \"form\"\n ],\n \"default\": \"default\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<PageHeader title=\\\"Welcome\\\" subtitle=\\\"Get started with our platform\\\" />\"\n },\n {\n \"title\": \"Default\",\n \"description\": \"Standard page header:\",\n \"code\": \"<PageHeader title=\\\"Dashboard\\\" subtitle=\\\"Welcome back, John\\\" />\"\n },\n {\n \"title\": \"Hero\",\n \"description\": \"Bold, uppercase styling for landing pages:\",\n \"code\": \"<PageHeader\\n title=\\\"Build Something Great\\\"\\n subtitle=\\\"The modern way to create applications\\\"\\n variant=\\\"hero\\\"\\n/>\"\n },\n {\n \"title\": \"Centered\",\n \"description\": \"Centered text for content pages:\",\n \"code\": \"<PageHeader\\n title=\\\"About Us\\\"\\n subtitle=\\\"Learn more about our mission and values\\\"\\n variant=\\\"centered\\\"\\n/>\"\n },\n {\n \"title\": \"Form\",\n \"description\": \"Light, centered styling for form pages:\",\n \"code\": \"<PageHeader title=\\\"Create Account\\\" subtitle=\\\"Join thousands of users today\\\" variant=\\\"form\\\" />\"\n },\n {\n \"title\": \"Landing Page Hero\",\n \"code\": \"<section class=\\\"py-24 bg-gradient-to-b from-primary/5 to-background\\\">\\n <div class=\\\"container mx-auto px-4\\\">\\n <PageHeader\\n title=\\\"Ship Faster\\\"\\n subtitle=\\\"The complete toolkit for modern web development\\\"\\n variant=\\\"hero\\\"\\n >\\n {#snippet actions()}\\n <Button size=\\\"lg\\\">Get Started Free</Button>\\n <Button size=\\\"lg\\\" variant=\\\"outline\\\">View Demo</Button>\\n {/snippet}\\n </PageHeader>\\n </div>\\n</section>\"\n },\n {\n \"title\": \"Dashboard Page\",\n \"code\": \"<PageHeader title=\\\"Analytics\\\" subtitle=\\\"Track your performance metrics\\\">\\n {#snippet actions()}\\n <Button variant=\\\"outline\\\">Export</Button>\\n <Button>Add Widget</Button>\\n {/snippet}\\n</PageHeader>\"\n },\n {\n \"title\": \"Content Page\",\n \"code\": \"<div class=\\\"py-16\\\">\\n <PageHeader\\n title=\\\"Documentation\\\"\\n subtitle=\\\"Everything you need to build amazing applications with our component library.\\\"\\n variant=\\\"centered\\\"\\n >\\n {#snippet actions()}\\n <Button>Get Started</Button>\\n <Button variant=\\\"outline\\\">Browse Components</Button>\\n {/snippet}\\n </PageHeader>\\n</div>\"\n },\n {\n \"title\": \"Form Page\",\n \"code\": \"<PageHeader\\n title=\\\"Contact Us\\\"\\n subtitle=\\\"Fill out the form below and we'll get back to you within 24 hours.\\\"\\n variant=\\\"form\\\"\\n/>\\n\\n<form class=\\\"max-w-md mx-auto mt-8\\\">\\n <!-- Form fields -->\\n</form>\"\n },\n {\n \"title\": \"Settings Page\",\n \"code\": \"<PageHeader\\n title=\\\"Account Settings\\\"\\n subtitle=\\\"Manage your account preferences and security settings\\\"\\n>\\n {#snippet actions()}\\n <Button variant=\\\"outline\\\">Cancel</Button>\\n <Button>Save Changes</Button>\\n {/snippet}\\n</PageHeader>\\n\\n<Separator class=\\\"my-6\\\" />\\n\\n<div class=\\\"space-y-6\\\">\\n <Section title=\\\"Profile\\\">...</Section>\\n <Section title=\\\"Security\\\">...</Section>\\n</div>\"\n },\n {\n \"title\": \"Blog Post\",\n \"code\": \"<article>\\n <PageHeader\\n title=\\\"Getting Started with Svelte 5\\\"\\n subtitle=\\\"Learn the fundamentals of Svelte's new runes system\\\"\\n variant=\\\"centered\\\"\\n />\\n\\n <div class=\\\"prose mx-auto mt-8\\\">\\n <!-- Article content -->\\n </div>\\n</article>\"\n }\n ],\n \"relatedComponents\": [\n \"Section\",\n \"Button\",\n \"Separator\"\n ]\n },\n {\n \"name\": \"PieChart\",\n \"description\": \"Show proportional data with interactive labels\",\n \"category\": \"chart\",\n \"importPath\": \"@classic-homes/charts-svelte\",\n \"props\": [\n {\n \"name\": \"data\",\n \"type\": \"PieSliceData[]\",\n \"required\": true,\n \"description\": \"Array of slice data with name and value\"\n },\n {\n \"name\": \"showLabels\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Show labels on slices\"\n },\n {\n \"name\": \"labelPosition\",\n \"type\": \"'inside' | 'outside'\",\n \"default\": \"'outside'\",\n \"required\": false,\n \"description\": \"Position of slice labels\"\n },\n {\n \"name\": \"innerRadius\",\n \"type\": \"number | string\",\n \"default\": \"0\",\n \"required\": false,\n \"description\": \"Inner radius (0 for solid pie)\"\n },\n {\n \"name\": \"onClick\",\n \"type\": \"(params: SliceEventParams) => void\",\n \"required\": false,\n \"description\": \"Callback when a slice is clicked\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": true,\n \"description\": \"Chart title for accessibility\"\n },\n {\n \"name\": \"height\",\n \"type\": \"number | string\",\n \"default\": \"400\",\n \"required\": false,\n \"description\": \"Chart height\"\n },\n {\n \"name\": \"theme\",\n \"type\": \"'light' | 'dark' | 'auto'\",\n \"default\": \"'auto'\",\n \"required\": false,\n \"description\": \"Theme preference\"\n },\n {\n \"name\": \"showLegend\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show chart legend\"\n },\n {\n \"name\": \"showTooltip\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show tooltip on hover\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"labelPosition\",\n \"values\": [\n \"inside\",\n \"outside\"\n ],\n \"default\": \"outside\"\n },\n {\n \"name\": \"theme\",\n \"values\": [\n \"light\",\n \"dark\",\n \"auto\"\n ],\n \"default\": \"auto\"\n }\n ],\n \"slots\": [],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { PieChart } from '@classic-homes/charts-svelte';\\n\\n const data = [\\n { name: 'Search Engine', value: 1048 },\\n { name: 'Direct', value: 735 },\\n { name: 'Email', value: 580 },\\n { name: 'Social Media', value: 484 },\\n ];\\n</script>\\n\\n<PieChart title=\\\"Traffic Sources\\\" {data} showLabels height={400} />\"\n },\n {\n \"title\": \"With Outside Labels\",\n \"code\": \"<PieChart title=\\\"Market Share\\\" {data} showLabels labelPosition=\\\"outside\\\" height={400} />\"\n },\n {\n \"title\": \"With Inside Labels\",\n \"code\": \"<PieChart title=\\\"Market Share\\\" {data} showLabels labelPosition=\\\"inside\\\" height={400} />\"\n },\n {\n \"title\": \"Handling Click Events\",\n \"code\": \"<script>\\n function handleClick(params) {\\n console.log('Clicked slice:', params.name, params.value);\\n }\\n</script>\\n\\n<PieChart title=\\\"Interactive Pie\\\" {data} onClick={handleClick} />\"\n }\n ],\n \"relatedComponents\": [\n \"DonutChart\",\n \"FunnelChart\"\n ]\n },\n {\n \"name\": \"PublicLayout\",\n \"description\": \"Layout for public-facing marketing and content pages\",\n \"category\": \"layout\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"navigation\",\n \"type\": \"NavItem[]\",\n \"default\": \"[]\",\n \"required\": false,\n \"description\": \"Header navigation items\"\n },\n {\n \"name\": \"showFooter\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Whether to show footer\"\n },\n {\n \"name\": \"footerLinks\",\n \"type\": \"NavSection[]\",\n \"default\": \"[]\",\n \"required\": false,\n \"description\": \"Footer link sections\"\n },\n {\n \"name\": \"copyright\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Footer copyright text\"\n },\n {\n \"name\": \"logo\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Custom logo\"\n },\n {\n \"name\": \"logoSubtitle\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Subtitle for default logo\"\n },\n {\n \"name\": \"logoEnvironment\",\n \"type\": \"'local' | 'dev' | 'demo'\",\n \"required\": false,\n \"description\": \"Environment indicator\"\n },\n {\n \"name\": \"headerEnd\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Content at end of header\"\n },\n {\n \"name\": \"strongFooterBorder\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Strong accent border on footer\"\n },\n {\n \"name\": \"darkFooter\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Dark footer variant\"\n },\n {\n \"name\": \"headerSearch\",\n \"type\": \"HeaderSearchConfig\",\n \"required\": false,\n \"description\": \"Header search config\"\n },\n {\n \"name\": \"children\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Main content\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"logoEnvironment\",\n \"values\": [\n \"local\",\n \"dev\",\n \"demo\"\n ]\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n const navigation = [\\n { id: 'home', name: 'Home', href: '/', active: true },\\n { id: 'about', name: 'About', href: '/about' },\\n { id: 'contact', name: 'Contact', href: '/contact' },\\n ];\\n</script>\\n\\n<PublicLayout {navigation}>\\n <section class=\\\"py-20\\\">\\n <h1>Welcome</h1>\\n </section>\\n</PublicLayout>\"\n },\n {\n \"title\": \"Landing Page\",\n \"code\": \"<PublicLayout {navigation} {footerLinks}>\\n <section class=\\\"py-24 text-center\\\">\\n <h1 class=\\\"text-5xl font-bold\\\">Build Better Products</h1>\\n <p class=\\\"mt-4 text-xl text-muted-foreground\\\">The modern way to build applications.</p>\\n <div class=\\\"mt-8 flex justify-center gap-4\\\">\\n <Button size=\\\"lg\\\">Get Started</Button>\\n <Button size=\\\"lg\\\" variant=\\\"outline\\\">Learn More</Button>\\n </div>\\n </section>\\n</PublicLayout>\"\n },\n {\n \"title\": \"Documentation Site\",\n \"code\": \"<PublicLayout\\n {navigation}\\n showFooter={false}\\n headerSearch={{ enabled: true, placeholder: 'Search docs...' }}\\n>\\n <div class=\\\"flex\\\">\\n <aside class=\\\"w-64\\\">Sidebar</aside>\\n <main class=\\\"flex-1\\\">Documentation content</main>\\n </div>\\n</PublicLayout>\"\n }\n ],\n \"relatedComponents\": [\n \"Header\",\n \"Footer\",\n \"DashboardLayout\"\n ]\n },\n {\n \"name\": \"QuickLinks\",\n \"description\": \"Quick navigation links component for sidebars\",\n \"category\": \"navigation\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"links\",\n \"type\": \"QuickLink[]\",\n \"required\": false,\n \"description\": \"Array of quick link items (required)\"\n },\n {\n \"name\": \"display\",\n \"type\": \"'list' | 'icons'\",\n \"default\": \"'list'\",\n \"required\": false,\n \"description\": \"Display mode\"\n },\n {\n \"name\": \"variant\",\n \"type\": \"'light' | 'dark'\",\n \"default\": \"'light'\",\n \"required\": false,\n \"description\": \"Visual variant\"\n },\n {\n \"name\": \"icon\",\n \"type\": \"Snippet<[QuickLink]>\",\n \"required\": false,\n \"description\": \"Custom icon renderer\"\n },\n {\n \"name\": \"ariaLabel\",\n \"type\": \"string\",\n \"default\": \"'Quick links'\",\n \"required\": false,\n \"description\": \"Accessible navigation label\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"display\",\n \"values\": [\n \"list\",\n \"icons\"\n ],\n \"default\": \"list\"\n },\n {\n \"name\": \"variant\",\n \"values\": [\n \"light\",\n \"dark\"\n ],\n \"default\": \"light\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n const links: QuickLink[] = [\\n { id: 'docs', label: 'Documentation', href: '/docs', icon: 'book' },\\n { id: 'support', label: 'Support', href: '/support', icon: 'help' },\\n { id: 'github', label: 'GitHub', href: 'https://github.com', icon: 'github', external: true },\\n ];\\n</script>\\n\\n<QuickLinks {links} />\"\n },\n {\n \"title\": \"List Mode (Default)\",\n \"description\": \"Shows icons with labels stacked vertically:\",\n \"code\": \"<QuickLinks {links} display=\\\"list\\\" />\"\n },\n {\n \"title\": \"Icons Mode\",\n \"description\": \"Shows only icons, centered:\",\n \"code\": \"<QuickLinks {links} display=\\\"icons\\\" />\"\n },\n {\n \"title\": \"Light (Default)\",\n \"description\": \"For light backgrounds:\",\n \"code\": \"<QuickLinks {links} variant=\\\"light\\\" />\"\n },\n {\n \"title\": \"Dark\",\n \"description\": \"For dark sidebars:\",\n \"code\": \"<QuickLinks {links} variant=\\\"dark\\\" />\"\n },\n {\n \"title\": \"With Badges\",\n \"code\": \"<script>\\n const links = [\\n { id: 'inbox', label: 'Inbox', href: '/inbox', icon: 'mail', badge: 5 },\\n { id: 'tasks', label: 'Tasks', href: '/tasks', icon: 'check', badge: '3 new' },\\n ];\\n</script>\\n\\n<QuickLinks {links} />\"\n },\n {\n \"title\": \"External Links\",\n \"code\": \"<script>\\n const links = [{ id: 'docs', label: 'Docs', href: 'https://docs.example.com', external: true }];\\n</script>\\n\\n<QuickLinks {links} />\"\n },\n {\n \"title\": \"Custom Icons\",\n \"code\": \"<QuickLinks {links}>\\n {#snippet icon(link)}\\n <Icon name={link.icon} class=\\\"h-5 w-5\\\" />\\n {/snippet}\\n</QuickLinks>\"\n },\n {\n \"title\": \"In Sidebar\",\n \"code\": \"<Sidebar>\\n <!-- Main navigation -->\\n <div slot=\\\"footer\\\">\\n <QuickLinks {links} display=\\\"icons\\\" variant=\\\"dark\\\" />\\n </div>\\n</Sidebar>\"\n }\n ],\n \"relatedComponents\": [\n \"Sidebar\",\n \"DashboardLayout\"\n ]\n },\n {\n \"name\": \"RadarChart\",\n \"description\": \"Multi-dimensional comparison across categories\",\n \"category\": \"chart\",\n \"importPath\": \"@classic-homes/charts-svelte\",\n \"props\": [\n {\n \"name\": \"data\",\n \"type\": \"RadarChartData\",\n \"required\": true,\n \"description\": \"Chart data with series values\"\n },\n {\n \"name\": \"indicators\",\n \"type\": \"RadarIndicator[]\",\n \"required\": true,\n \"description\": \"Dimension definitions\"\n },\n {\n \"name\": \"shape\",\n \"type\": \"'polygon' | 'circle'\",\n \"default\": \"'polygon'\",\n \"required\": false,\n \"description\": \"Shape of the radar grid\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": true,\n \"description\": \"Chart title for accessibility\"\n },\n {\n \"name\": \"height\",\n \"type\": \"number | string\",\n \"default\": \"400\",\n \"required\": false,\n \"description\": \"Chart height\"\n },\n {\n \"name\": \"theme\",\n \"type\": \"'light' | 'dark' | 'auto'\",\n \"default\": \"'auto'\",\n \"required\": false,\n \"description\": \"Theme preference\"\n },\n {\n \"name\": \"showLegend\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show chart legend\"\n },\n {\n \"name\": \"showTooltip\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show tooltip on hover\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"shape\",\n \"values\": [\n \"polygon\",\n \"circle\"\n ],\n \"default\": \"polygon\"\n },\n {\n \"name\": \"theme\",\n \"values\": [\n \"light\",\n \"dark\",\n \"auto\"\n ],\n \"default\": \"auto\"\n }\n ],\n \"slots\": [],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { RadarChart } from '@classic-homes/charts-svelte';\\n\\n const indicators = [\\n { name: 'Sales', max: 6500 },\\n { name: 'Administration', max: 16000 },\\n { name: 'IT', max: 30000 },\\n { name: 'Support', max: 38000 },\\n { name: 'Development', max: 52000 },\\n ];\\n\\n const data = {\\n series: [\\n { name: 'Budget', data: [4200, 3000, 20000, 35000, 50000] },\\n { name: 'Actual', data: [5000, 14000, 28000, 26000, 42000] },\\n ],\\n };\\n</script>\\n\\n<RadarChart title=\\\"Budget vs Actual\\\" {data} {indicators} shape=\\\"polygon\\\" height={400} />\"\n },\n {\n \"title\": \"Circle Shape\",\n \"code\": \"<RadarChart title=\\\"Skill Assessment\\\" {data} {indicators} shape=\\\"circle\\\" />\"\n },\n {\n \"title\": \"Single Series\",\n \"code\": \"<RadarChart\\n title=\\\"Performance Metrics\\\"\\n data={{\\n series: [{ name: 'Score', data: [80, 90, 70, 85, 95] }],\\n }}\\n indicators={[\\n { name: 'Speed', max: 100 },\\n { name: 'Quality', max: 100 },\\n { name: 'Teamwork', max: 100 },\\n { name: 'Innovation', max: 100 },\\n { name: 'Communication', max: 100 },\\n ]}\\n/>\"\n }\n ],\n \"relatedComponents\": [\n \"BarChart\",\n \"GaugeChart\"\n ]\n },\n {\n \"name\": \"RadioGroup\",\n \"description\": \"Radio button group for single selection from multiple options\",\n \"category\": \"form\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"value\",\n \"type\": \"string\",\n \"default\": \"''\",\n \"required\": false,\n \"description\": \"Current selected value (bindable)\"\n },\n {\n \"name\": \"options\",\n \"type\": \"RadioOption[]\",\n \"default\": \"Required\",\n \"required\": false,\n \"description\": \"Array of radio options\"\n },\n {\n \"name\": \"label\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Group label\"\n },\n {\n \"name\": \"hint\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Hint text below the radio group\"\n },\n {\n \"name\": \"orientation\",\n \"type\": \"'horizontal' | 'vertical'\",\n \"default\": \"'vertical'\",\n \"required\": false,\n \"description\": \"Layout direction\"\n },\n {\n \"name\": \"disabled\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Disables all options\"\n },\n {\n \"name\": \"required\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Marks as required\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Name attribute for forms (auto-generated if empty)\"\n },\n {\n \"name\": \"error\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Error message to display\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n },\n {\n \"name\": \"onValueChange\",\n \"type\": \"(value: string) => void\",\n \"required\": false,\n \"description\": \"Callback when value changes\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"orientation\",\n \"values\": [\n \"horizontal\",\n \"vertical\"\n ],\n \"default\": \"vertical\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n let value = $state('');\\n\\n const options = [\\n { value: 'option1', label: 'Option 1' },\\n { value: 'option2', label: 'Option 2' },\\n { value: 'option3', label: 'Option 3' },\\n ];\\n</script>\\n\\n<RadioGroup {options} bind:value />\"\n },\n {\n \"title\": \"Vertical (Default)\",\n \"code\": \"<RadioGroup {options} bind:value orientation=\\\"vertical\\\" />\"\n },\n {\n \"title\": \"Horizontal\",\n \"code\": \"<RadioGroup {options} bind:value orientation=\\\"horizontal\\\" />\"\n },\n {\n \"title\": \"Shipping Method\",\n \"code\": \"<script>\\n let shipping = $state('');\\n\\n const shippingOptions = [\\n {\\n value: 'standard',\\n label: 'Standard',\\n description: '5-7 business days - Free',\\n },\\n {\\n value: 'express',\\n label: 'Express',\\n description: '2-3 business days - $9.99',\\n },\\n {\\n value: 'overnight',\\n label: 'Overnight',\\n description: 'Next business day - $24.99',\\n },\\n ];\\n</script>\\n\\n<RadioGroup\\n label=\\\"Shipping Method\\\"\\n hint=\\\"Free shipping on orders over $50\\\"\\n name=\\\"shipping\\\"\\n options={shippingOptions}\\n bind:value={shipping}\\n required\\n/>\"\n },\n {\n \"title\": \"Payment Method\",\n \"code\": \"<RadioGroup\\n label=\\\"Payment Method\\\"\\n name=\\\"payment\\\"\\n options={[\\n { value: 'card', label: 'Credit Card' },\\n { value: 'paypal', label: 'PayPal' },\\n { value: 'bank', label: 'Bank Transfer' },\\n ]}\\n bind:value={payment}\\n orientation=\\\"horizontal\\\"\\n/>\"\n },\n {\n \"title\": \"Yes/No Question\",\n \"code\": \"<RadioGroup\\n label=\\\"Would you recommend this product?\\\"\\n name=\\\"recommend\\\"\\n options={[\\n { value: 'yes', label: 'Yes' },\\n { value: 'no', label: 'No' },\\n ]}\\n bind:value={recommend}\\n orientation=\\\"horizontal\\\"\\n/>\"\n },\n {\n \"title\": \"Survey Scale\",\n \"code\": \"<RadioGroup\\n label=\\\"How satisfied are you?\\\"\\n hint=\\\"1 = Very Dissatisfied, 5 = Very Satisfied\\\"\\n name=\\\"satisfaction\\\"\\n options={[\\n { value: '1', label: 'Very Dissatisfied' },\\n { value: '2', label: 'Dissatisfied' },\\n { value: '3', label: 'Neutral' },\\n { value: '4', label: 'Satisfied' },\\n { value: '5', label: 'Very Satisfied' },\\n ]}\\n bind:value={satisfaction}\\n/>\"\n }\n ],\n \"relatedComponents\": [\n \"Checkbox\",\n \"Select\",\n \"Switch\"\n ]\n },\n {\n \"name\": \"SankeyChart\",\n \"description\": \"Flow relationships between entities\",\n \"category\": \"chart\",\n \"importPath\": \"@classic-homes/charts-svelte\",\n \"props\": [\n {\n \"name\": \"data\",\n \"type\": \"SankeyData\",\n \"required\": true,\n \"description\": \"Nodes and links defining the flow\"\n },\n {\n \"name\": \"orient\",\n \"type\": \"'horizontal' | 'vertical'\",\n \"default\": \"'horizontal'\",\n \"required\": false,\n \"description\": \"Flow direction\"\n },\n {\n \"name\": \"onClick\",\n \"type\": \"(params: SankeyEventParams) => void\",\n \"required\": false,\n \"description\": \"Callback when clicked\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": true,\n \"description\": \"Chart title for accessibility\"\n },\n {\n \"name\": \"height\",\n \"type\": \"number | string\",\n \"default\": \"400\",\n \"required\": false,\n \"description\": \"Chart height\"\n },\n {\n \"name\": \"theme\",\n \"type\": \"'light' | 'dark' | 'auto'\",\n \"default\": \"'auto'\",\n \"required\": false,\n \"description\": \"Theme preference\"\n },\n {\n \"name\": \"showTooltip\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show tooltip on hover\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"orient\",\n \"values\": [\n \"horizontal\",\n \"vertical\"\n ],\n \"default\": \"horizontal\"\n },\n {\n \"name\": \"theme\",\n \"values\": [\n \"light\",\n \"dark\",\n \"auto\"\n ],\n \"default\": \"auto\"\n }\n ],\n \"slots\": [],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { SankeyChart } from '@classic-homes/charts-svelte';\\n\\n const data = {\\n nodes: [{ name: 'Source A' }, { name: 'Source B' }, { name: 'Process' }, { name: 'Output' }],\\n links: [\\n { source: 'Source A', target: 'Process', value: 50 },\\n { source: 'Source B', target: 'Process', value: 30 },\\n { source: 'Process', target: 'Output', value: 80 },\\n ],\\n };\\n</script>\\n\\n<SankeyChart title=\\\"Energy Flow\\\" {data} orient=\\\"horizontal\\\" height={400} />\"\n },\n {\n \"title\": \"Website User Flow\",\n \"code\": \"<SankeyChart\\n title=\\\"User Journey\\\"\\n data={{\\n nodes: [\\n { name: 'Homepage' },\\n { name: 'Products' },\\n { name: 'Cart' },\\n { name: 'Checkout' },\\n { name: 'Purchase' },\\n { name: 'Exit' },\\n ],\\n links: [\\n { source: 'Homepage', target: 'Products', value: 1000 },\\n { source: 'Homepage', target: 'Exit', value: 300 },\\n { source: 'Products', target: 'Cart', value: 500 },\\n { source: 'Products', target: 'Exit', value: 200 },\\n { source: 'Cart', target: 'Checkout', value: 400 },\\n { source: 'Cart', target: 'Exit', value: 100 },\\n { source: 'Checkout', target: 'Purchase', value: 350 },\\n { source: 'Checkout', target: 'Exit', value: 50 },\\n ],\\n }}\\n/>\"\n },\n {\n \"title\": \"Budget Allocation\",\n \"code\": \"<SankeyChart\\n title=\\\"Budget Distribution\\\"\\n data={{\\n nodes: [\\n { name: 'Revenue' },\\n { name: 'Operations' },\\n { name: 'Marketing' },\\n { name: 'R&D' },\\n { name: 'Profit' },\\n ],\\n links: [\\n { source: 'Revenue', target: 'Operations', value: 40 },\\n { source: 'Revenue', target: 'Marketing', value: 25 },\\n { source: 'Revenue', target: 'R&D', value: 20 },\\n { source: 'Revenue', target: 'Profit', value: 15 },\\n ],\\n }}\\n/>\"\n },\n {\n \"title\": \"Vertical Orientation\",\n \"code\": \"<SankeyChart title=\\\"Process Flow\\\" {data} orient=\\\"vertical\\\" />\"\n }\n ],\n \"relatedComponents\": [\n \"FunnelChart\",\n \"TreemapChart\"\n ]\n },\n {\n \"name\": \"ScatterChart\",\n \"description\": \"Visualize X/Y relationships with optional trend lines\",\n \"category\": \"chart\",\n \"importPath\": \"@classic-homes/charts-svelte\",\n \"props\": [\n {\n \"name\": \"data\",\n \"type\": \"ScatterChartData\",\n \"required\": true,\n \"description\": \"Chart data with coordinate pairs\"\n },\n {\n \"name\": \"showTrendLine\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Display regression/trend line\"\n },\n {\n \"name\": \"symbolSize\",\n \"type\": \"number | ((value: number[]) => number)\",\n \"default\": \"10\",\n \"required\": false,\n \"description\": \"Point size (fixed or dynamic)\"\n },\n {\n \"name\": \"onClick\",\n \"type\": \"(params: DataPointEventParams) => void\",\n \"required\": false,\n \"description\": \"Callback when clicked\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": true,\n \"description\": \"Chart title for accessibility\"\n },\n {\n \"name\": \"height\",\n \"type\": \"number | string\",\n \"default\": \"400\",\n \"required\": false,\n \"description\": \"Chart height\"\n },\n {\n \"name\": \"theme\",\n \"type\": \"'light' | 'dark' | 'auto'\",\n \"default\": \"'auto'\",\n \"required\": false,\n \"description\": \"Theme preference\"\n },\n {\n \"name\": \"showLegend\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show chart legend\"\n },\n {\n \"name\": \"showTooltip\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show tooltip on hover\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"theme\",\n \"values\": [\n \"light\",\n \"dark\",\n \"auto\"\n ],\n \"default\": \"auto\"\n }\n ],\n \"slots\": [],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { ScatterChart } from '@classic-homes/charts-svelte';\\n\\n const data = {\\n series: [\\n {\\n name: 'Dataset A',\\n data: [\\n [10.0, 8.04],\\n [8.07, 6.95],\\n [13.0, 7.58],\\n [9.05, 8.81],\\n [11.0, 8.33],\\n [14.0, 7.66],\\n ],\\n },\\n {\\n name: 'Dataset B',\\n data: [\\n [8.0, 9.04],\\n [6.07, 7.95],\\n [11.0, 8.58],\\n [7.05, 9.81],\\n [9.0, 9.33],\\n [12.0, 8.66],\\n ],\\n },\\n ],\\n };\\n</script>\\n\\n<ScatterChart title=\\\"Data Correlation\\\" {data} showTrendLine height={400} />\"\n },\n {\n \"title\": \"With Trend Line\",\n \"code\": \"<ScatterChart title=\\\"Correlation Analysis\\\" {data} showTrendLine height={400} />\"\n },\n {\n \"title\": \"Dynamic Point Size\",\n \"code\": \"<ScatterChart title=\\\"Sized Points\\\" {data} symbolSize={(value) => Math.sqrt(value[1]) * 3} />\"\n }\n ],\n \"relatedComponents\": [\n \"LineChart\",\n \"HeatmapChart\"\n ]\n },\n {\n \"name\": \"Section\",\n \"description\": \"Content section container for page organization\",\n \"category\": \"layout\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Section title (h2)\"\n },\n {\n \"name\": \"description\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Description text\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional classes\"\n },\n {\n \"name\": \"children\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Section content\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Section>\\n <p>Your content here</p>\\n</Section>\"\n },\n {\n \"title\": \"Settings Page\",\n \"code\": \"<div class=\\\"max-w-2xl mx-auto space-y-6\\\">\\n <Section title=\\\"Personal Information\\\" description=\\\"Update your personal details.\\\">\\n <form class=\\\"space-y-4\\\">\\n <div class=\\\"grid grid-cols-2 gap-4\\\">\\n <Input label=\\\"First Name\\\" value=\\\"John\\\" />\\n <Input label=\\\"Last Name\\\" value=\\\"Doe\\\" />\\n </div>\\n <Input label=\\\"Email\\\" type=\\\"email\\\" value=\\\"john@example.com\\\" />\\n <Input label=\\\"Phone\\\" type=\\\"tel\\\" />\\n <Button>Save Changes</Button>\\n </form>\\n </Section>\\n\\n <Section title=\\\"Password\\\" description=\\\"Update your password regularly for security.\\\">\\n <form class=\\\"space-y-4\\\">\\n <Input label=\\\"Current Password\\\" type=\\\"password\\\" />\\n <Input label=\\\"New Password\\\" type=\\\"password\\\" />\\n <Input label=\\\"Confirm Password\\\" type=\\\"password\\\" />\\n <Button>Update Password</Button>\\n </form>\\n </Section>\\n\\n <Section title=\\\"Preferences\\\">\\n <div class=\\\"space-y-4\\\">\\n <Select label=\\\"Language\\\">\\n <option value=\\\"en\\\">English</option>\\n <option value=\\\"es\\\">Spanish</option>\\n <option value=\\\"fr\\\">French</option>\\n </Select>\\n <Select label=\\\"Timezone\\\">\\n <option value=\\\"utc\\\">UTC</option>\\n <option value=\\\"est\\\">Eastern Time</option>\\n <option value=\\\"pst\\\">Pacific Time</option>\\n </Select>\\n </div>\\n </Section>\\n</div>\"\n },\n {\n \"title\": \"Dashboard Sections\",\n \"code\": \"<div class=\\\"space-y-6\\\">\\n <Section title=\\\"Quick Actions\\\">\\n <div class=\\\"flex gap-4\\\">\\n <Button>New Project</Button>\\n <Button variant=\\\"outline\\\">Import Data</Button>\\n <Button variant=\\\"outline\\\">Generate Report</Button>\\n </div>\\n </Section>\\n\\n <Section title=\\\"Recent Projects\\\" description=\\\"Your most recently accessed projects.\\\">\\n <DataTable data={recentProjects} columns={projectColumns} />\\n </Section>\\n\\n <Section title=\\\"Team Activity\\\">\\n <div class=\\\"space-y-3\\\">\\n {#each activities as activity}\\n <div class=\\\"flex items-center gap-3 p-3 rounded-lg bg-muted/50\\\">\\n <Avatar size=\\\"sm\\\">{activity.user.initials}</Avatar>\\n <div>\\n <p class=\\\"text-sm font-medium\\\">{activity.user.name}</p>\\n <p class=\\\"text-xs text-muted-foreground\\\">{activity.action}</p>\\n </div>\\n <span class=\\\"ml-auto text-xs text-muted-foreground\\\">\\n {activity.time}\\n </span>\\n </div>\\n {/each}\\n </div>\\n </Section>\\n</div>\"\n }\n ],\n \"relatedComponents\": [\n \"Card\",\n \"PageHeader\",\n \"Separator\"\n ]\n },\n {\n \"name\": \"Select\",\n \"description\": \"Dropdown for selecting from a list of options with grouping support\",\n \"category\": \"form\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"value\",\n \"type\": \"string\",\n \"default\": \"''\",\n \"required\": false,\n \"description\": \"Current selected value (bindable)\"\n },\n {\n \"name\": \"options\",\n \"type\": \"(SelectOption | SelectGroup)[]\",\n \"default\": \"Required\",\n \"required\": false,\n \"description\": \"Array of options or grouped options\"\n },\n {\n \"name\": \"placeholder\",\n \"type\": \"string\",\n \"default\": \"'Select an option...'\",\n \"required\": false,\n \"description\": \"Placeholder text\"\n },\n {\n \"name\": \"disabled\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Disables the select\"\n },\n {\n \"name\": \"required\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Marks as required\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Name attribute for forms\"\n },\n {\n \"name\": \"id\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Element ID (auto-generated if empty)\"\n },\n {\n \"name\": \"label\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Label text\"\n },\n {\n \"name\": \"hint\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Hint text below the select\"\n },\n {\n \"name\": \"error\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Error message to display\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n },\n {\n \"name\": \"onValueChange\",\n \"type\": \"(value: string) => void\",\n \"required\": false,\n \"description\": \"Callback when value changes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n let value = $state('');\\n\\n const options = [\\n { value: 'apple', label: 'Apple' },\\n { value: 'banana', label: 'Banana' },\\n { value: 'orange', label: 'Orange' },\\n ];\\n</script>\\n\\n<Select {options} bind:value placeholder=\\\"Select a fruit\\\" />\"\n },\n {\n \"title\": \"Disabled\",\n \"code\": \"<Select {options} disabled value=\\\"apple\\\" />\"\n },\n {\n \"title\": \"Required\",\n \"code\": \"<Select {options} bind:value label=\\\"Required Field\\\" required />\"\n },\n {\n \"title\": \"With Error\",\n \"code\": \"<Select {options} bind:value label=\\\"Category\\\" error=\\\"Please select a category\\\" />\"\n },\n {\n \"title\": \"Form Example\",\n \"code\": \"<script>\\n let department = $state('');\\n let departmentError = $state('');\\n\\n const departments = [\\n { value: 'sales', label: 'Sales' },\\n { value: 'marketing', label: 'Marketing' },\\n { value: 'engineering', label: 'Engineering' },\\n { value: 'support', label: 'Support' },\\n ];\\n\\n function validate() {\\n if (!department) {\\n departmentError = 'Please select a department';\\n return false;\\n }\\n departmentError = '';\\n return true;\\n }\\n</script>\\n\\n<Select\\n label=\\\"Department\\\"\\n options={departments}\\n bind:value={department}\\n error={departmentError}\\n required\\n/>\"\n },\n {\n \"title\": \"Controlled Select\",\n \"code\": \"<script>\\n let value = $state('');\\n\\n function handleChange(newValue: string) {\\n console.log('Selected:', newValue);\\n value = newValue;\\n }\\n</script>\\n\\n<Select {options} {value} onValueChange={handleChange} />\"\n },\n {\n \"title\": \"Country Selector\",\n \"code\": \"<script>\\n const countries = [\\n {\\n label: 'North America',\\n options: [\\n { value: 'us', label: 'United States' },\\n { value: 'ca', label: 'Canada' },\\n { value: 'mx', label: 'Mexico' },\\n ],\\n },\\n {\\n label: 'Europe',\\n options: [\\n { value: 'gb', label: 'United Kingdom' },\\n { value: 'de', label: 'Germany' },\\n { value: 'fr', label: 'France' },\\n ],\\n },\\n ];\\n</script>\\n\\n<Select label=\\\"Country\\\" options={countries} bind:value placeholder=\\\"Select your country\\\" />\"\n }\n ],\n \"relatedComponents\": [\n \"Combobox\",\n \"MultiSelect\",\n \"RadioGroup\"\n ]\n },\n {\n \"name\": \"Separator\",\n \"description\": \"Visual divider for separating content\",\n \"category\": \"layout\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"orientation\",\n \"type\": \"'horizontal' | 'vertical'\",\n \"default\": \"'horizontal'\",\n \"required\": false,\n \"description\": \"Line direction\"\n },\n {\n \"name\": \"decorative\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"If decorative (no semantic meaning)\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional classes\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"orientation\",\n \"values\": [\n \"horizontal\",\n \"vertical\"\n ],\n \"default\": \"horizontal\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<div>Content above</div>\\n<Separator />\\n<div>Content below</div>\"\n },\n {\n \"title\": \"Form Sections\",\n \"code\": \"<form class=\\\"space-y-6\\\">\\n <div class=\\\"space-y-4\\\">\\n <h3 class=\\\"font-medium\\\">Personal Information</h3>\\n <Input label=\\\"Name\\\" />\\n <Input label=\\\"Email\\\" type=\\\"email\\\" />\\n </div>\\n\\n <Separator />\\n\\n <div class=\\\"space-y-4\\\">\\n <h3 class=\\\"font-medium\\\">Address</h3>\\n <Input label=\\\"Street\\\" />\\n <Input label=\\\"City\\\" />\\n </div>\\n\\n <Separator />\\n\\n <Button type=\\\"submit\\\">Submit</Button>\\n</form>\"\n },\n {\n \"title\": \"Dropdown Menu\",\n \"code\": \"<DropdownMenu>\\n <DropdownMenu.Item>Profile</DropdownMenu.Item>\\n <DropdownMenu.Item>Settings</DropdownMenu.Item>\\n <Separator class=\\\"my-1\\\" />\\n <DropdownMenu.Item>Help</DropdownMenu.Item>\\n <DropdownMenu.Item>Feedback</DropdownMenu.Item>\\n <Separator class=\\\"my-1\\\" />\\n <DropdownMenu.Item>Log out</DropdownMenu.Item>\\n</DropdownMenu>\"\n },\n {\n \"title\": \"Login Divider\",\n \"code\": \"<div class=\\\"space-y-4\\\">\\n <Button class=\\\"w-full\\\">\\n <GoogleIcon class=\\\"mr-2\\\" />\\n Continue with Google\\n </Button>\\n\\n <div class=\\\"flex items-center gap-4\\\">\\n <Separator class=\\\"flex-1\\\" />\\n <span class=\\\"text-xs text-muted-foreground uppercase\\\">or continue with email</span>\\n <Separator class=\\\"flex-1\\\" />\\n </div>\\n\\n <form class=\\\"space-y-4\\\">\\n <Input label=\\\"Email\\\" type=\\\"email\\\" />\\n <Input label=\\\"Password\\\" type=\\\"password\\\" />\\n <Button type=\\\"submit\\\" class=\\\"w-full\\\">Sign In</Button>\\n </form>\\n</div>\"\n },\n {\n \"title\": \"Toolbar\",\n \"code\": \"<div class=\\\"flex items-center gap-2 p-2 border rounded-lg\\\">\\n <Button variant=\\\"ghost\\\" size=\\\"icon\\\"><BoldIcon /></Button>\\n <Button variant=\\\"ghost\\\" size=\\\"icon\\\"><ItalicIcon /></Button>\\n <Button variant=\\\"ghost\\\" size=\\\"icon\\\"><UnderlineIcon /></Button>\\n\\n <Separator orientation=\\\"vertical\\\" class=\\\"h-6\\\" />\\n\\n <Button variant=\\\"ghost\\\" size=\\\"icon\\\"><AlignLeftIcon /></Button>\\n <Button variant=\\\"ghost\\\" size=\\\"icon\\\"><AlignCenterIcon /></Button>\\n <Button variant=\\\"ghost\\\" size=\\\"icon\\\"><AlignRightIcon /></Button>\\n\\n <Separator orientation=\\\"vertical\\\" class=\\\"h-6\\\" />\\n\\n <Button variant=\\\"ghost\\\" size=\\\"icon\\\"><LinkIcon /></Button>\\n <Button variant=\\\"ghost\\\" size=\\\"icon\\\"><ImageIcon /></Button>\\n</div>\"\n },\n {\n \"title\": \"Card Footer\",\n \"code\": \"<Card>\\n <Card.Header>\\n <Card.Title>Subscription</Card.Title>\\n </Card.Header>\\n <Card.Content>\\n <p>You are currently on the Pro plan.</p>\\n </Card.Content>\\n <Separator />\\n <Card.Footer>\\n <Button variant=\\\"outline\\\">Change Plan</Button>\\n <Button variant=\\\"ghost\\\" class=\\\"text-destructive\\\">Cancel</Button>\\n </Card.Footer>\\n</Card>\"\n }\n ],\n \"relatedComponents\": [\n \"Card\",\n \"Section\",\n \"DropdownMenu\"\n ]\n },\n {\n \"name\": \"Sidebar\",\n \"description\": \"Responsive sidebar navigation with collapsible sections\",\n \"category\": \"layout\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"navigation\",\n \"type\": \"NavSection[]\",\n \"required\": false,\n \"description\": \"Navigation sections\"\n },\n {\n \"name\": \"userRoles\",\n \"type\": \"string[]\",\n \"required\": false,\n \"description\": \"User roles for filtering\"\n },\n {\n \"name\": \"collapsed\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Desktop collapsed state\"\n },\n {\n \"name\": \"isMobile\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Mobile mode\"\n },\n {\n \"name\": \"mobileOpen\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Mobile drawer open\"\n },\n {\n \"name\": \"onClose\",\n \"type\": \"() => void\",\n \"required\": false,\n \"description\": \"Mobile close callback\"\n },\n {\n \"name\": \"onNavigate\",\n \"type\": \"(item: NavItem) => void\",\n \"required\": false,\n \"description\": \"Navigation callback\"\n },\n {\n \"name\": \"logo\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Custom logo\"\n },\n {\n \"name\": \"icon\",\n \"type\": \"Snippet<[NavItem]>\",\n \"required\": false,\n \"description\": \"Custom icon renderer\"\n },\n {\n \"name\": \"quickLinks\",\n \"type\": \"QuickLink[]\",\n \"required\": false,\n \"description\": \"Quick links at bottom\"\n },\n {\n \"name\": \"quickLinksDisplay\",\n \"type\": \"'list' | 'icons'\",\n \"default\": \"'list'\",\n \"required\": false,\n \"description\": \"Quick links display\"\n },\n {\n \"name\": \"quickLinkIcon\",\n \"type\": \"Snippet<[QuickLink]>\",\n \"required\": false,\n \"description\": \"Quick link icon renderer\"\n },\n {\n \"name\": \"footer\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Footer content\"\n },\n {\n \"name\": \"variant\",\n \"type\": \"'light' | 'dark'\",\n \"default\": \"'light'\",\n \"required\": false,\n \"description\": \"Visual variant\"\n },\n {\n \"name\": \"strongBorder\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Thicker border\"\n },\n {\n \"name\": \"expandedWidth\",\n \"type\": \"number\",\n \"default\": \"256\",\n \"required\": false,\n \"description\": \"Expanded width (px)\"\n },\n {\n \"name\": \"collapsedWidth\",\n \"type\": \"number\",\n \"default\": \"64\",\n \"required\": false,\n \"description\": \"Collapsed width (px)\"\n },\n {\n \"name\": \"searchable\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Enable search\"\n },\n {\n \"name\": \"searchPlaceholder\",\n \"type\": \"string\",\n \"default\": \"'Search...'\",\n \"required\": false,\n \"description\": \"Search placeholder\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional classes\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"quickLinksDisplay\",\n \"values\": [\n \"list\",\n \"icons\"\n ],\n \"default\": \"list\"\n },\n {\n \"name\": \"variant\",\n \"values\": [\n \"light\",\n \"dark\"\n ],\n \"default\": \"light\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n const navigation = [\\n {\\n id: 'main',\\n title: 'Main',\\n items: [\\n { id: 'home', name: 'Home', href: '/', icon: 'home' },\\n { id: 'projects', name: 'Projects', href: '/projects', icon: 'folder' },\\n ],\\n },\\n ];\\n</script>\\n\\n<Sidebar {navigation} />\"\n },\n {\n \"title\": \"Sections with Titles\",\n \"code\": \"<script>\\n const navigation = [\\n {\\n id: 'main',\\n title: 'Main',\\n items: [\\n { id: 'dashboard', name: 'Dashboard', href: '/dashboard' },\\n { id: 'projects', name: 'Projects', href: '/projects' },\\n ],\\n },\\n {\\n id: 'settings',\\n title: 'Settings',\\n collapsible: true,\\n items: [\\n { id: 'profile', name: 'Profile', href: '/profile' },\\n { id: 'account', name: 'Account', href: '/account' },\\n ],\\n },\\n ];\\n</script>\"\n },\n {\n \"title\": \"Nested Navigation\",\n \"code\": \"<script>\\n const navigation = [\\n {\\n id: 'docs',\\n items: [\\n {\\n id: 'components',\\n name: 'Components',\\n children: [\\n { id: 'button', name: 'Button', href: '/components/button' },\\n { id: 'input', name: 'Input', href: '/components/input' },\\n { id: 'card', name: 'Card', href: '/components/card' },\\n ],\\n },\\n ],\\n },\\n ];\\n</script>\"\n },\n {\n \"title\": \"Dashboard Sidebar\",\n \"code\": \"<script>\\n import { page } from '$app/stores';\\n\\n const navigation = [\\n {\\n id: 'overview',\\n items: [\\n { id: 'dashboard', name: 'Dashboard', href: '/dashboard', icon: 'home' },\\n { id: 'analytics', name: 'Analytics', href: '/analytics', icon: 'chart' },\\n ],\\n },\\n {\\n id: 'content',\\n title: 'Content',\\n items: [\\n { id: 'posts', name: 'Posts', href: '/posts', icon: 'file' },\\n { id: 'media', name: 'Media', href: '/media', icon: 'image' },\\n { id: 'pages', name: 'Pages', href: '/pages', icon: 'document' },\\n ],\\n },\\n {\\n id: 'settings',\\n title: 'Settings',\\n collapsible: true,\\n expanded: false,\\n items: [\\n { id: 'general', name: 'General', href: '/settings' },\\n { id: 'team', name: 'Team', href: '/settings/team' },\\n { id: 'billing', name: 'Billing', href: '/settings/billing' },\\n ],\\n },\\n ];\\n</script>\\n\\n<Sidebar\\n {navigation}\\n variant=\\\"dark\\\"\\n searchable\\n quickLinks={[{ id: 'help', name: 'Help Center', href: '/help', icon: 'help' }]}\\n/>\"\n }\n ],\n \"relatedComponents\": [\n \"Header\",\n \"DashboardLayout\",\n \"AppShell\"\n ]\n },\n {\n \"name\": \"Signature\",\n \"description\": \"Digital signature capture with draw and type modes\",\n \"category\": \"form\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"value\",\n \"type\": \"SignatureData | null\",\n \"default\": \"null\",\n \"required\": false,\n \"description\": \"Signature data (bindable)\"\n },\n {\n \"name\": \"mode\",\n \"type\": \"'draw' | 'type'\",\n \"default\": \"'draw'\",\n \"required\": false,\n \"description\": \"Capture mode\"\n },\n {\n \"name\": \"disabled\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Disables capture\"\n },\n {\n \"name\": \"required\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Marks as required\"\n },\n {\n \"name\": \"label\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Label text\"\n },\n {\n \"name\": \"error\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Error message\"\n },\n {\n \"name\": \"strokeColor\",\n \"type\": \"string\",\n \"default\": \"'#000000'\",\n \"required\": false,\n \"description\": \"Drawing stroke color\"\n },\n {\n \"name\": \"strokeWidth\",\n \"type\": \"number\",\n \"default\": \"2\",\n \"required\": false,\n \"description\": \"Drawing stroke width\"\n },\n {\n \"name\": \"fonts\",\n \"type\": \"SignatureFont[]\",\n \"required\": false,\n \"description\": \"Available fonts for type mode\"\n },\n {\n \"name\": \"onValidate\",\n \"type\": \"(data: SignatureData) => SignatureValidationResult\",\n \"required\": false,\n \"description\": \"Validation handler\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"mode\",\n \"values\": [\n \"draw\",\n \"type\"\n ],\n \"default\": \"draw\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n let signature = $state(null);\\n</script>\\n\\n<Signature bind:value={signature} />\"\n },\n {\n \"title\": \"Agreement Form\",\n \"code\": \"<script>\\n let signature = $state(null);\\n\\n function handleSubmit() {\\n if (!signature) {\\n // Handle missing signature\\n return;\\n }\\n // Submit form with signature\\n }\\n</script>\\n\\n<div class=\\\"space-y-4\\\">\\n <p class=\\\"text-sm text-muted-foreground\\\">\\n By signing below, you agree to the terms and conditions.\\n </p>\\n <Signature label=\\\"Your Signature\\\" bind:value={signature} required />\\n <Button onclick={handleSubmit} disabled={!signature}>Submit Agreement</Button>\\n</div>\"\n },\n {\n \"title\": \"Clear and Retry\",\n \"code\": \"<div class=\\\"space-y-4\\\">\\n <Signature bind:value={signature} />\\n <Button variant=\\\"outline\\\" onclick={() => (signature = null)} disabled={!signature}>\\n Clear Signature\\n </Button>\\n</div>\"\n }\n ],\n \"relatedComponents\": [\n \"Input\",\n \"Button\"\n ]\n },\n {\n \"name\": \"Skeleton\",\n \"description\": \"Placeholder loading component that mimics content shape\",\n \"category\": \"feedback\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"variant\",\n \"type\": \"'default' | 'text' | 'avatar' | 'card' | 'button' | 'title'\",\n \"default\": \"'default'\",\n \"required\": false,\n \"description\": \"Predefined shape variant\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"variant\",\n \"values\": [\n \"default\",\n \"text\",\n \"avatar\",\n \"card\",\n \"button\",\n \"title\"\n ],\n \"default\": \"default\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Skeleton class=\\\"h-4 w-full\\\" />\"\n },\n {\n \"title\": \"Default\",\n \"description\": \"Custom sizing with classes:\",\n \"code\": \"<Skeleton class=\\\"h-4 w-full\\\" />\\n<Skeleton class=\\\"h-8 w-64\\\" />\"\n },\n {\n \"title\": \"Text\",\n \"description\": \"Single line of text:\",\n \"code\": \"<Skeleton variant=\\\"text\\\" /> <!-- h-4 w-full -->\"\n },\n {\n \"title\": \"Title\",\n \"description\": \"Larger heading text:\",\n \"code\": \"<Skeleton variant=\\\"title\\\" /> <!-- h-6 w-3/4 -->\"\n },\n {\n \"title\": \"Avatar\",\n \"description\": \"Circular avatar placeholder:\",\n \"code\": \"<Skeleton variant=\\\"avatar\\\" /> <!-- h-12 w-12 rounded-full -->\"\n },\n {\n \"title\": \"Card\",\n \"description\": \"Card-sized placeholder:\",\n \"code\": \"<Skeleton variant=\\\"card\\\" /> <!-- h-32 w-full -->\"\n },\n {\n \"title\": \"Button\",\n \"description\": \"Button-sized placeholder:\",\n \"code\": \"<Skeleton variant=\\\"button\\\" /> <!-- h-10 w-24 -->\"\n },\n {\n \"title\": \"Text Content Loading\",\n \"code\": \"<div class=\\\"space-y-2\\\">\\n <Skeleton variant=\\\"title\\\" />\\n <Skeleton variant=\\\"text\\\" />\\n <Skeleton variant=\\\"text\\\" />\\n <Skeleton class=\\\"h-4 w-2/3\\\" />\\n</div>\"\n },\n {\n \"title\": \"User Card Loading\",\n \"code\": \"<div class=\\\"flex items-center gap-4\\\">\\n <Skeleton variant=\\\"avatar\\\" />\\n <div class=\\\"space-y-2 flex-1\\\">\\n <Skeleton class=\\\"h-4 w-32\\\" />\\n <Skeleton class=\\\"h-3 w-24\\\" />\\n </div>\\n</div>\"\n },\n {\n \"title\": \"Card Loading\",\n \"code\": \"<Card>\\n <CardHeader>\\n <Skeleton variant=\\\"title\\\" />\\n <Skeleton variant=\\\"text\\\" class=\\\"mt-2\\\" />\\n </CardHeader>\\n <CardContent>\\n <Skeleton variant=\\\"card\\\" />\\n </CardContent>\\n <CardFooter>\\n <Skeleton variant=\\\"button\\\" />\\n </CardFooter>\\n</Card>\"\n },\n {\n \"title\": \"Table Row Loading\",\n \"code\": \"<tr>\\n <td><Skeleton class=\\\"h-4 w-8\\\" /></td>\\n <td><Skeleton class=\\\"h-4 w-32\\\" /></td>\\n <td><Skeleton class=\\\"h-4 w-48\\\" /></td>\\n <td><Skeleton class=\\\"h-4 w-24\\\" /></td>\\n</tr>\"\n },\n {\n \"title\": \"Grid Loading\",\n \"code\": \"<div class=\\\"grid grid-cols-3 gap-4\\\">\\n {#each Array(6) as _}\\n <div class=\\\"space-y-2\\\">\\n <Skeleton class=\\\"h-32 w-full\\\" />\\n <Skeleton variant=\\\"title\\\" />\\n <Skeleton variant=\\\"text\\\" />\\n </div>\\n {/each}\\n</div>\"\n },\n {\n \"title\": \"Profile Page Loading\",\n \"code\": \"<div class=\\\"space-y-6\\\">\\n <!-- Header -->\\n <div class=\\\"flex items-center gap-6\\\">\\n <Skeleton class=\\\"h-24 w-24 rounded-full\\\" />\\n <div class=\\\"space-y-2\\\">\\n <Skeleton class=\\\"h-8 w-48\\\" />\\n <Skeleton class=\\\"h-4 w-32\\\" />\\n </div>\\n </div>\\n\\n <!-- Stats -->\\n <div class=\\\"grid grid-cols-3 gap-4\\\">\\n {#each Array(3) as _}\\n <Skeleton class=\\\"h-20\\\" />\\n {/each}\\n </div>\\n\\n <!-- Content -->\\n <div class=\\\"space-y-2\\\">\\n <Skeleton variant=\\\"text\\\" />\\n <Skeleton variant=\\\"text\\\" />\\n <Skeleton class=\\\"h-4 w-3/4\\\" />\\n </div>\\n</div>\"\n },\n {\n \"title\": \"Conditional Loading\",\n \"code\": \"{#if loading}\\n <div class=\\\"space-y-2\\\">\\n <Skeleton variant=\\\"title\\\" />\\n <Skeleton variant=\\\"text\\\" />\\n <Skeleton variant=\\\"text\\\" />\\n </div>\\n{:else}\\n <div>\\n <h2>{title}</h2>\\n <p>{content}</p>\\n </div>\\n{/if}\"\n },\n {\n \"title\": \"Image Loading\",\n \"code\": \"<div class=\\\"relative\\\">\\n {#if imageLoading}\\n <Skeleton class=\\\"h-64 w-full\\\" />\\n {/if}\\n <img\\n src={imageUrl}\\n onload={() => (imageLoading = false)}\\n class={imageLoading ? 'invisible absolute' : ''}\\n />\\n</div>\"\n }\n ],\n \"relatedComponents\": [\n \"Spinner\",\n \"Card\"\n ]\n },\n {\n \"name\": \"Slider\",\n \"description\": \"Range slider for selecting numeric values\",\n \"category\": \"form\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"value\",\n \"type\": \"number[]\",\n \"default\": \"[50]\",\n \"required\": false,\n \"description\": \"Current value(s) (bindable)\"\n },\n {\n \"name\": \"min\",\n \"type\": \"number\",\n \"default\": \"0\",\n \"required\": false,\n \"description\": \"Minimum value\"\n },\n {\n \"name\": \"max\",\n \"type\": \"number\",\n \"default\": \"100\",\n \"required\": false,\n \"description\": \"Maximum value\"\n },\n {\n \"name\": \"step\",\n \"type\": \"number\",\n \"default\": \"1\",\n \"required\": false,\n \"description\": \"Step increment\"\n },\n {\n \"name\": \"disabled\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Disables the slider\"\n },\n {\n \"name\": \"orientation\",\n \"type\": \"'horizontal' | 'vertical'\",\n \"default\": \"'horizontal'\",\n \"required\": false,\n \"description\": \"Slider direction\"\n },\n {\n \"name\": \"size\",\n \"type\": \"'sm' | 'md' | 'lg'\",\n \"default\": \"'md'\",\n \"required\": false,\n \"description\": \"Size variant\"\n },\n {\n \"name\": \"label\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Label text\"\n },\n {\n \"name\": \"hint\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Hint text below the slider\"\n },\n {\n \"name\": \"error\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Error message\"\n },\n {\n \"name\": \"showValue\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Shows current value\"\n },\n {\n \"name\": \"formatValue\",\n \"type\": \"(value: number) => string\",\n \"required\": false,\n \"description\": \"Value formatter\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n },\n {\n \"name\": \"onValueChange\",\n \"type\": \"(value: number[]) => void\",\n \"required\": false,\n \"description\": \"Callback during drag\"\n },\n {\n \"name\": \"onValueCommit\",\n \"type\": \"(value: number[]) => void\",\n \"required\": false,\n \"description\": \"Callback when drag ends\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"orientation\",\n \"values\": [\n \"horizontal\",\n \"vertical\"\n ],\n \"default\": \"horizontal\"\n },\n {\n \"name\": \"size\",\n \"values\": [\n \"sm\",\n \"md\",\n \"lg\"\n ],\n \"default\": \"md\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n let value = $state([50]);\\n</script>\\n\\n<Slider bind:value />\"\n },\n {\n \"title\": \"Volume Control\",\n \"code\": \"<script>\\n let volume = $state([70]);\\n</script>\\n\\n<Slider\\n label=\\\"Volume\\\"\\n hint=\\\"Adjust speaker volume\\\"\\n bind:value={volume}\\n min={0}\\n max={100}\\n showValue\\n formatValue={(v) => `${v}%`}\\n/>\"\n },\n {\n \"title\": \"Price Filter\",\n \"code\": \"<script>\\n let priceRange = $state([0, 500]);\\n</script>\\n\\n<Slider\\n label=\\\"Price Range\\\"\\n hint=\\\"Filter products by price\\\"\\n bind:value={priceRange}\\n min={0}\\n max={1000}\\n step={10}\\n showValue\\n formatValue={(v) => `$${v}`}\\n/>\"\n },\n {\n \"title\": \"Temperature\",\n \"code\": \"<script>\\n let temp = $state([72]);\\n</script>\\n\\n<Slider\\n label=\\\"Temperature\\\"\\n hint=\\\"Set thermostat temperature\\\"\\n bind:value={temp}\\n min={60}\\n max={85}\\n showValue\\n formatValue={(v) => `${v}°F`}\\n/>\"\n },\n {\n \"title\": \"Opacity Control\",\n \"code\": \"<script>\\n let opacity = $state([100]);\\n</script>\\n\\n<Slider\\n label=\\\"Opacity\\\"\\n bind:value={opacity}\\n min={0}\\n max={100}\\n showValue\\n formatValue={(v) => `${v}%`}\\n onValueChange={(val) => {\\n element.style.opacity = val[0] / 100;\\n }}\\n/>\"\n },\n {\n \"title\": \"Discrete Steps\",\n \"code\": \"<script>\\n let rating = $state([3]);\\n const labels = ['Poor', 'Fair', 'Good', 'Very Good', 'Excellent'];\\n</script>\\n\\n<Slider\\n label=\\\"Rating\\\"\\n hint=\\\"Rate your experience\\\"\\n bind:value={rating}\\n min={1}\\n max={5}\\n step={1}\\n showValue\\n formatValue={(v) => labels[v - 1]}\\n/>\"\n },\n {\n \"title\": \"Commit on Release\",\n \"description\": \"Trigger action only when user finishes dragging:\",\n \"code\": \"<Slider\\n bind:value\\n onValueCommit={(val) => {\\n savePreference(val[0]);\\n }}\\n/>\"\n }\n ],\n \"relatedComponents\": [\n \"NumberInput\",\n \"Input\"\n ]\n },\n {\n \"name\": \"Spinner\",\n \"description\": \"Loading indicator for async operations\",\n \"category\": \"feedback\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"size\",\n \"type\": \"'sm' | 'md' | 'lg' | 'xl'\",\n \"default\": \"'md'\",\n \"required\": false,\n \"description\": \"Size of the spinner\"\n },\n {\n \"name\": \"label\",\n \"type\": \"string\",\n \"default\": \"'Loading...'\",\n \"required\": false,\n \"description\": \"Accessible label for screen readers\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"size\",\n \"values\": [\n \"sm\",\n \"md\",\n \"lg\",\n \"xl\"\n ],\n \"default\": \"md\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Spinner />\"\n },\n {\n \"title\": \"Button Loading State\",\n \"code\": \"<Button disabled={loading}>\\n {#if loading}\\n <Spinner size=\\\"sm\\\" label=\\\"Submitting...\\\" class=\\\"mr-2\\\" />\\n Submitting...\\n {:else}\\n Submit\\n {/if}\\n</Button>\"\n },\n {\n \"title\": \"Centered Loading\",\n \"code\": \"<div class=\\\"flex items-center justify-center h-64\\\">\\n <Spinner size=\\\"lg\\\" label=\\\"Loading content...\\\" />\\n</div>\"\n },\n {\n \"title\": \"Full Page Loading\",\n \"code\": \"<div class=\\\"fixed inset-0 flex items-center justify-center bg-background/80 z-50\\\">\\n <div class=\\\"text-center\\\">\\n <Spinner size=\\\"xl\\\" label=\\\"Loading application...\\\" />\\n <p class=\\\"mt-4 text-muted-foreground\\\">Loading...</p>\\n </div>\\n</div>\"\n },\n {\n \"title\": \"Inline Loading\",\n \"code\": \"<p>\\n Checking availability\\n <Spinner size=\\\"sm\\\" class=\\\"inline ml-2\\\" label=\\\"Checking...\\\" />\\n</p>\"\n },\n {\n \"title\": \"Card Loading State\",\n \"code\": \"<Card>\\n <CardContent class=\\\"flex items-center justify-center h-32\\\">\\n {#if loading}\\n <Spinner label=\\\"Loading data...\\\" />\\n {:else}\\n <p>{data}</p>\\n {/if}\\n </CardContent>\\n</Card>\"\n },\n {\n \"title\": \"With Loading Text\",\n \"code\": \"<div class=\\\"flex items-center gap-3\\\">\\n <Spinner size=\\\"md\\\" />\\n <span class=\\\"text-muted-foreground\\\">Loading your dashboard...</span>\\n</div>\"\n },\n {\n \"title\": \"Table Loading\",\n \"code\": \"<table>\\n <tbody>\\n {#if loading}\\n <tr>\\n <td colspan=\\\"4\\\" class=\\\"text-center py-8\\\">\\n <Spinner label=\\\"Loading data...\\\" />\\n </td>\\n </tr>\\n {:else}\\n {#each rows as row}\\n <tr><!-- row content --></tr>\\n {/each}\\n {/if}\\n </tbody>\\n</table>\"\n }\n ],\n \"relatedComponents\": [\n \"Skeleton\",\n \"Button\"\n ]\n },\n {\n \"name\": \"Switch\",\n \"description\": \"Toggle switch for binary on/off settings\",\n \"category\": \"form\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"checked\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Whether the switch is on (bindable)\"\n },\n {\n \"name\": \"disabled\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Disables the switch\"\n },\n {\n \"name\": \"required\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Marks as required\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Name attribute for forms\"\n },\n {\n \"name\": \"value\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Value attribute for forms\"\n },\n {\n \"name\": \"id\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Element ID for label association\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n },\n {\n \"name\": \"onchange\",\n \"type\": \"(checked: boolean) => void\",\n \"required\": false,\n \"description\": \"Callback when checked state changes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n let enabled = $state(false);\\n</script>\\n\\n<Switch bind:checked={enabled} />\"\n },\n {\n \"title\": \"On (Checked)\",\n \"code\": \"<Switch checked />\"\n },\n {\n \"title\": \"Off (Unchecked)\",\n \"code\": \"<Switch />\"\n },\n {\n \"title\": \"Disabled\",\n \"code\": \"<Switch disabled />\\n<Switch disabled checked />\"\n },\n {\n \"title\": \"Feature Toggle\",\n \"code\": \"<script>\\n let betaFeatures = $state(false);\\n</script>\\n\\n<div class=\\\"p-4 border rounded-lg\\\">\\n <div class=\\\"flex items-center justify-between\\\">\\n <div>\\n <h3 class=\\\"font-medium\\\">Beta Features</h3>\\n <p class=\\\"text-sm text-muted-foreground\\\">Enable experimental features</p>\\n </div>\\n <Switch bind:checked={betaFeatures} />\\n </div>\\n\\n {#if betaFeatures}\\n <p class=\\\"mt-3 text-sm text-warning\\\">Beta features may be unstable.</p>\\n {/if}\\n</div>\"\n },\n {\n \"title\": \"Privacy Controls\",\n \"code\": \"<script>\\n let privacy = $state({\\n analytics: true,\\n personalization: false,\\n thirdParty: false,\\n });\\n</script>\\n\\n<div class=\\\"space-y-4\\\">\\n <h2 class=\\\"text-lg font-semibold\\\">Privacy Settings</h2>\\n\\n <div class=\\\"space-y-3\\\">\\n <div class=\\\"flex items-center justify-between\\\">\\n <Label for=\\\"analytics\\\">Analytics cookies</Label>\\n <Switch id=\\\"analytics\\\" bind:checked={privacy.analytics} />\\n </div>\\n\\n <div class=\\\"flex items-center justify-between\\\">\\n <Label for=\\\"personalization\\\">Personalization</Label>\\n <Switch id=\\\"personalization\\\" bind:checked={privacy.personalization} />\\n </div>\\n\\n <div class=\\\"flex items-center justify-between\\\">\\n <Label for=\\\"third-party\\\">Third-party cookies</Label>\\n <Switch id=\\\"third-party\\\" bind:checked={privacy.thirdParty} />\\n </div>\\n </div>\\n</div>\"\n },\n {\n \"title\": \"Inline Switch\",\n \"code\": \"<p class=\\\"text-sm\\\">\\n Show completed tasks\\n <Switch bind:checked={showCompleted} class=\\\"ml-2 align-middle\\\" />\\n</p>\"\n }\n ],\n \"relatedComponents\": [\n \"Checkbox\",\n \"RadioGroup\",\n \"Label\"\n ]\n },\n {\n \"name\": \"TabPanel\",\n \"description\": \"Content panel component for Tabs navigation\",\n \"category\": \"layout\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"value\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Tab ID this panel belongs to (required)\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n const tabs = [\\n { id: 'account', label: 'Account' },\\n { id: 'password', label: 'Password' },\\n { id: 'notifications', label: 'Notifications' },\\n ];\\n</script>\\n\\n<Tabs {tabs} defaultValue=\\\"account\\\">\\n <TabPanel value=\\\"account\\\">\\n <p>Account settings content here.</p>\\n </TabPanel>\\n <TabPanel value=\\\"password\\\">\\n <p>Password settings content here.</p>\\n </TabPanel>\\n <TabPanel value=\\\"notifications\\\">\\n <p>Notification settings content here.</p>\\n </TabPanel>\\n</Tabs>\"\n },\n {\n \"title\": \"With Forms\",\n \"code\": \"<TabPanel value=\\\"profile\\\">\\n <form class=\\\"space-y-4\\\">\\n <FormField label=\\\"Name\\\" name=\\\"name\\\" />\\n <FormField label=\\\"Email\\\" name=\\\"email\\\" type=\\\"email\\\" />\\n <Button type=\\\"submit\\\">Save Changes</Button>\\n </form>\\n</TabPanel>\"\n },\n {\n \"title\": \"With Cards\",\n \"code\": \"<TabPanel value=\\\"billing\\\">\\n <div class=\\\"grid gap-4 md:grid-cols-2\\\">\\n <Card>\\n <CardHeader>\\n <CardTitle>Current Plan</CardTitle>\\n </CardHeader>\\n <CardContent>Pro - $29/month</CardContent>\\n </Card>\\n <Card>\\n <CardHeader>\\n <CardTitle>Payment Method</CardTitle>\\n </CardHeader>\\n <CardContent>Visa ending in 4242</CardContent>\\n </Card>\\n </div>\\n</TabPanel>\"\n },\n {\n \"title\": \"Custom Styling\",\n \"code\": \"<TabPanel value=\\\"settings\\\" class=\\\"p-6 bg-muted rounded-lg\\\">\\n <h3 class=\\\"font-semibold mb-4\\\">Advanced Settings</h3>\\n <!-- Content -->\\n</TabPanel>\"\n }\n ],\n \"relatedComponents\": [\n \"Tabs\"\n ]\n },\n {\n \"name\": \"Tabs\",\n \"description\": \"Tabbed interface for organizing content\",\n \"category\": \"layout\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"tabs\",\n \"type\": \"Tab[]\",\n \"required\": false,\n \"description\": \"Array of tab definitions\"\n },\n {\n \"name\": \"value\",\n \"type\": \"string\",\n \"default\": \"First tab ID\",\n \"required\": false,\n \"description\": \"Active tab ID (bindable)\"\n },\n {\n \"name\": \"id\",\n \"type\": \"string\",\n \"default\": \"Auto-generated\",\n \"required\": false,\n \"description\": \"Unique ID for ARIA\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional classes\"\n },\n {\n \"name\": \"children\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Tab panel content\"\n },\n {\n \"name\": \"onValueChange\",\n \"type\": \"(value: string) => void\",\n \"required\": false,\n \"description\": \"Change callback\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n const tabs = [\\n { id: 'account', label: 'Account' },\\n { id: 'security', label: 'Security' },\\n { id: 'notifications', label: 'Notifications' },\\n ];\\n</script>\\n\\n<Tabs {tabs}>\\n <TabPanel id=\\\"account\\\">\\n <p>Account settings content</p>\\n </TabPanel>\\n <TabPanel id=\\\"security\\\">\\n <p>Security settings content</p>\\n </TabPanel>\\n <TabPanel id=\\\"notifications\\\">\\n <p>Notification preferences</p>\\n </TabPanel>\\n</Tabs>\"\n },\n {\n \"title\": \"Settings Page\",\n \"code\": \"<script>\\n const tabs = [\\n { id: 'profile', label: 'Profile' },\\n { id: 'account', label: 'Account' },\\n { id: 'security', label: 'Security' },\\n { id: 'billing', label: 'Billing' },\\n ];\\n</script>\\n\\n<Tabs {tabs}>\\n <TabPanel id=\\\"profile\\\">\\n <Section title=\\\"Personal Information\\\">\\n <form class=\\\"space-y-4\\\">\\n <Input label=\\\"Display Name\\\" />\\n <Textarea label=\\\"Bio\\\" />\\n <Button>Save Changes</Button>\\n </form>\\n </Section>\\n </TabPanel>\\n\\n <TabPanel id=\\\"account\\\">\\n <Section title=\\\"Email Settings\\\">\\n <Input label=\\\"Email Address\\\" type=\\\"email\\\" />\\n <Button>Update Email</Button>\\n </Section>\\n </TabPanel>\\n\\n <TabPanel id=\\\"security\\\">\\n <Section title=\\\"Password\\\">\\n <form class=\\\"space-y-4\\\">\\n <Input label=\\\"Current Password\\\" type=\\\"password\\\" />\\n <Input label=\\\"New Password\\\" type=\\\"password\\\" />\\n <Button>Change Password</Button>\\n </form>\\n </Section>\\n </TabPanel>\\n\\n <TabPanel id=\\\"billing\\\">\\n <Section title=\\\"Payment Methods\\\">\\n <p>Your payment methods will appear here.</p>\\n </Section>\\n </TabPanel>\\n</Tabs>\"\n },\n {\n \"title\": \"Product Details\",\n \"code\": \"<script>\\n const tabs = [\\n { id: 'description', label: 'Description' },\\n { id: 'specs', label: 'Specifications' },\\n { id: 'reviews', label: 'Reviews' },\\n ];\\n</script>\\n\\n<Tabs {tabs}>\\n <TabPanel id=\\\"description\\\">\\n <div class=\\\"prose\\\">\\n <p>{product.description}</p>\\n </div>\\n </TabPanel>\\n\\n <TabPanel id=\\\"specs\\\">\\n <DataTable data={product.specs} columns={specColumns} />\\n </TabPanel>\\n\\n <TabPanel id=\\\"reviews\\\">\\n {#each reviews as review}\\n <Card class=\\\"mb-4\\\">\\n <Card.Header>\\n <div class=\\\"flex items-center gap-2\\\">\\n <Avatar size=\\\"sm\\\">{review.author[0]}</Avatar>\\n <span>{review.author}</span>\\n </div>\\n </Card.Header>\\n <Card.Content>\\n <p>{review.content}</p>\\n </Card.Content>\\n </Card>\\n {/each}\\n </TabPanel>\\n</Tabs>\"\n },\n {\n \"title\": \"Code Examples\",\n \"code\": \"<script>\\n const tabs = [\\n { id: 'svelte', label: 'Svelte' },\\n { id: 'react', label: 'React' },\\n { id: 'vue', label: 'Vue' },\\n ];\\n</script>\\n\\n<Tabs {tabs}>\\n <TabPanel id=\\\"svelte\\\">\\n <pre><code>{svelteCode}</code></pre>\\n </TabPanel>\\n <TabPanel id=\\\"react\\\">\\n <pre><code>{reactCode}</code></pre>\\n </TabPanel>\\n <TabPanel id=\\\"vue\\\">\\n <pre><code>{vueCode}</code></pre>\\n </TabPanel>\\n</Tabs>\"\n }\n ],\n \"relatedComponents\": [\n \"Card\",\n \"Section\",\n \"Separator\"\n ]\n },\n {\n \"name\": \"Textarea\",\n \"description\": \"Multi-line text input for longer content like messages and descriptions\",\n \"category\": \"form\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"value\",\n \"type\": \"string\",\n \"default\": \"''\",\n \"required\": false,\n \"description\": \"Textarea value (bindable)\"\n },\n {\n \"name\": \"placeholder\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Placeholder text\"\n },\n {\n \"name\": \"disabled\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Disables the textarea\"\n },\n {\n \"name\": \"readonly\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Makes the textarea read-only\"\n },\n {\n \"name\": \"required\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Marks as required\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Textarea name for forms\"\n },\n {\n \"name\": \"id\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Textarea ID for label association\"\n },\n {\n \"name\": \"rows\",\n \"type\": \"number\",\n \"default\": \"3\",\n \"required\": false,\n \"description\": \"Number of visible text rows\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n },\n {\n \"name\": \"onValueChange\",\n \"type\": \"(value: string) => void\",\n \"required\": false,\n \"description\": \"Callback when value changes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Textarea placeholder=\\\"Enter your message...\\\" />\"\n },\n {\n \"title\": \"Disabled\",\n \"code\": \"<Textarea disabled value=\\\"Cannot edit this content\\\" />\"\n },\n {\n \"title\": \"Read-only\",\n \"code\": \"<Textarea readonly value=\\\"This content is read-only\\\" />\"\n },\n {\n \"title\": \"Required\",\n \"code\": \"<Textarea required placeholder=\\\"Required field\\\" />\"\n },\n {\n \"title\": \"Character Counter\",\n \"code\": \"<script>\\n import { Textarea, Label } from '@classic-homes/theme-svelte';\\n\\n let bio = $state('');\\n const maxLength = 280;\\n</script>\\n\\n<div class=\\\"space-y-2\\\">\\n <Label for=\\\"bio\\\">Bio</Label>\\n <Textarea id=\\\"bio\\\" bind:value={bio} rows={4} placeholder=\\\"Tell us about yourself...\\\" />\\n <p class=\\\"text-sm text-muted-foreground text-right\\\">\\n {bio.length}/{maxLength}\\n </p>\\n</div>\"\n },\n {\n \"title\": \"With Help Text\",\n \"code\": \"<div class=\\\"space-y-2\\\">\\n <Label for=\\\"description\\\">Description</Label>\\n <Textarea id=\\\"description\\\" rows={4} placeholder=\\\"Describe your item...\\\" />\\n <p class=\\\"text-sm text-muted-foreground\\\">\\n Include key details to help buyers understand your item.\\n </p>\\n</div>\"\n },\n {\n \"title\": \"Fixed Height\",\n \"code\": \"<Textarea class=\\\"resize-none h-32\\\" placeholder=\\\"Fixed height textarea\\\" />\"\n },\n {\n \"title\": \"Full Width in Container\",\n \"code\": \"<div class=\\\"max-w-md\\\">\\n <Textarea placeholder=\\\"Constrained to container width\\\" />\\n</div>\"\n }\n ],\n \"relatedComponents\": [\n \"Input\",\n \"Label\",\n \"FormField\"\n ]\n },\n {\n \"name\": \"Toast\",\n \"description\": \"Brief notification messages for user feedback\",\n \"category\": \"feedback\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Success\",\n \"description\": \"For successful operations:\",\n \"code\": \"toastStore.success('Changes saved successfully!');\"\n },\n {\n \"title\": \"Error\",\n \"description\": \"For errors and failures:\",\n \"code\": \"toastStore.error('Failed to save changes. Please try again.');\"\n },\n {\n \"title\": \"Warning\",\n \"description\": \"For warnings and cautions:\",\n \"code\": \"toastStore.warning('Your session will expire in 5 minutes.');\"\n },\n {\n \"title\": \"Info\",\n \"description\": \"For informational messages:\",\n \"code\": \"toastStore.info('New version available. Refresh to update.');\"\n },\n {\n \"title\": \"Custom\",\n \"description\": \"For custom styled toasts:\",\n \"code\": \"toastStore.show({\\n message: 'Custom message',\\n type: 'success',\\n duration: 5000,\\n});\"\n },\n {\n \"title\": \"Form Submission\",\n \"code\": \"<script>\\n async function handleSubmit() {\\n try {\\n await saveForm();\\n toastStore.success('Form submitted successfully!');\\n } catch (error) {\\n toastStore.error('Failed to submit form. Please try again.');\\n }\\n }\\n</script>\"\n },\n {\n \"title\": \"Action with Undo\",\n \"code\": \"<script>\\n function handleDelete(item) {\\n deleteItem(item.id);\\n toastStore.show({\\n message: `\\\"${item.name}\\\" deleted`,\\n type: 'info',\\n action: {\\n label: 'Undo',\\n onClick: () => restoreItem(item),\\n },\\n });\\n }\\n</script>\"\n },\n {\n \"title\": \"Network Status\",\n \"code\": \"<script>\\n $effect(() => {\\n if (!navigator.onLine) {\\n toastStore.warning('You are offline. Changes will sync when connected.');\\n } else {\\n toastStore.success('Back online!');\\n }\\n });\\n</script>\"\n },\n {\n \"title\": \"Async Operation\",\n \"code\": \"<script>\\n async function handleExport() {\\n toastStore.info('Starting export...');\\n try {\\n await exportData();\\n toastStore.success('Export completed! Check your downloads.');\\n } catch {\\n toastStore.error('Export failed. Please try again.');\\n }\\n }\\n</script>\"\n },\n {\n \"title\": \"Copy to Clipboard\",\n \"code\": \"<script>\\n async function copyLink() {\\n await navigator.clipboard.writeText(shareUrl);\\n toastStore.success('Link copied to clipboard!');\\n }\\n</script>\\n\\n<Button onclick={copyLink}>Copy Link</Button>\"\n },\n {\n \"title\": \"Multiple Toasts\",\n \"description\": \"Multiple toasts stack and are dismissed independently:\",\n \"code\": \"<Button\\n onclick={() => {\\n toastStore.success('First message');\\n toastStore.info('Second message');\\n toastStore.warning('Third message');\\n }}\\n>\\n Show Multiple\\n</Button>\"\n }\n ],\n \"relatedComponents\": [\n \"Alert\",\n \"Dialog\"\n ]\n },\n {\n \"name\": \"ToastContainer\",\n \"description\": \"Container component for displaying toast notifications\",\n \"category\": \"feedback\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"position\",\n \"type\": \"'top-left' | 'top-right' | 'top-center' | 'bottom-left' | 'bottom-right' | 'bottom-center'\",\n \"default\": \"'bottom-right'\",\n \"required\": false,\n \"description\": \"Position on screen\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"position\",\n \"values\": [\n \"top-left\",\n \"top-right\",\n \"top-center\",\n \"bottom-left\",\n \"bottom-right\",\n \"bottom-center\"\n ],\n \"default\": \"bottom-right\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Bottom Right (Default)\",\n \"code\": \"<ToastContainer position=\\\"bottom-right\\\" />\"\n },\n {\n \"title\": \"Top Right\",\n \"code\": \"<ToastContainer position=\\\"top-right\\\" />\"\n },\n {\n \"title\": \"Top Center\",\n \"code\": \"<ToastContainer position=\\\"top-center\\\" />\"\n },\n {\n \"title\": \"Bottom Center\",\n \"code\": \"<ToastContainer position=\\\"bottom-center\\\" />\"\n },\n {\n \"title\": \"Custom Position\",\n \"code\": \"<ToastContainer position=\\\"top-center\\\" class=\\\"mt-16\\\" />\"\n }\n ],\n \"relatedComponents\": [\n \"Toast\",\n \"AppShell\"\n ]\n },\n {\n \"name\": \"Tooltip\",\n \"description\": \"Contextual information displayed on hover\",\n \"category\": \"overlay\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"content\",\n \"type\": \"string\",\n \"default\": \"Required\",\n \"required\": false,\n \"description\": \"Text content of the tooltip\"\n },\n {\n \"name\": \"side\",\n \"type\": \"'top' | 'right' | 'bottom' | 'left'\",\n \"default\": \"'top'\",\n \"required\": false,\n \"description\": \"Preferred side for placement\"\n },\n {\n \"name\": \"align\",\n \"type\": \"'start' | 'center' | 'end'\",\n \"default\": \"'center'\",\n \"required\": false,\n \"description\": \"Alignment along the side\"\n },\n {\n \"name\": \"delayDuration\",\n \"type\": \"number\",\n \"required\": false,\n \"description\": \"Delay before showing (ms)\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"side\",\n \"values\": [\n \"top\",\n \"right\",\n \"bottom\",\n \"left\"\n ],\n \"default\": \"top\"\n },\n {\n \"name\": \"align\",\n \"values\": [\n \"start\",\n \"center\",\n \"end\"\n ],\n \"default\": \"center\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Tooltip content=\\\"This is a tooltip\\\">\\n {#snippet children()}\\n <Button>Hover me</Button>\\n {/snippet}\\n</Tooltip>\"\n },\n {\n \"title\": \"Side\",\n \"description\": \"Control which side the tooltip appears on:\",\n \"code\": \"<Tooltip content=\\\"Top tooltip\\\" side=\\\"top\\\">\\n {#snippet children()}<Button>Top</Button>{/snippet}\\n</Tooltip>\\n\\n<Tooltip content=\\\"Right tooltip\\\" side=\\\"right\\\">\\n {#snippet children()}<Button>Right</Button>{/snippet}\\n</Tooltip>\\n\\n<Tooltip content=\\\"Bottom tooltip\\\" side=\\\"bottom\\\">\\n {#snippet children()}<Button>Bottom</Button>{/snippet}\\n</Tooltip>\\n\\n<Tooltip content=\\\"Left tooltip\\\" side=\\\"left\\\">\\n {#snippet children()}<Button>Left</Button>{/snippet}\\n</Tooltip>\"\n },\n {\n \"title\": \"Alignment\",\n \"description\": \"Adjust alignment along the side:\",\n \"code\": \"<Tooltip content=\\\"Aligned to start\\\" side=\\\"top\\\" align=\\\"start\\\">\\n {#snippet children()}<Button>Start</Button>{/snippet}\\n</Tooltip>\\n\\n<Tooltip content=\\\"Aligned to center\\\" side=\\\"top\\\" align=\\\"center\\\">\\n {#snippet children()}<Button>Center</Button>{/snippet}\\n</Tooltip>\\n\\n<Tooltip content=\\\"Aligned to end\\\" side=\\\"top\\\" align=\\\"end\\\">\\n {#snippet children()}<Button>End</Button>{/snippet}\\n</Tooltip>\"\n },\n {\n \"title\": \"Icon Button with Tooltip\",\n \"code\": \"<Tooltip content=\\\"Edit item\\\">\\n {#snippet children()}\\n <Button variant=\\\"ghost\\\" size=\\\"icon\\\" aria-label=\\\"Edit\\\">\\n <svg class=\\\"h-4 w-4\\\"><!-- edit icon --></svg>\\n </Button>\\n {/snippet}\\n</Tooltip>\"\n },\n {\n \"title\": \"Form Field Help\",\n \"code\": \"<div class=\\\"flex items-center gap-2\\\">\\n <Label for=\\\"password\\\">Password</Label>\\n <Tooltip content=\\\"Password must be at least 8 characters with one uppercase letter\\\">\\n {#snippet children()}\\n <svg class=\\\"h-4 w-4 text-muted-foreground cursor-help\\\">\\n <circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"2\\\" fill=\\\"none\\\" />\\n <path d=\\\"M12 16v-4M12 8h.01\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"2\\\" />\\n </svg>\\n {/snippet}\\n </Tooltip>\\n</div>\"\n },\n {\n \"title\": \"Truncated Text\",\n \"code\": \"<Tooltip content={fullText}>\\n {#snippet children()}\\n <span class=\\\"truncate max-w-xs block\\\">{fullText}</span>\\n {/snippet}\\n</Tooltip>\"\n },\n {\n \"title\": \"Disabled Button Explanation\",\n \"code\": \"<Tooltip content=\\\"You need admin permissions to perform this action\\\">\\n {#snippet children()}\\n <span>\\n <Button disabled>Delete</Button>\\n </span>\\n {/snippet}\\n</Tooltip>\"\n },\n {\n \"title\": \"Status Indicator\",\n \"code\": \"<Tooltip content=\\\"Online - Last seen 2 minutes ago\\\" side=\\\"right\\\">\\n {#snippet children()}\\n <span class=\\\"inline-flex h-2 w-2 rounded-full bg-green-500\\\"></span>\\n {/snippet}\\n</Tooltip>\"\n },\n {\n \"title\": \"Keyboard Shortcut\",\n \"code\": \"<Tooltip content=\\\"Save (Ctrl+S)\\\">\\n {#snippet children()}\\n <Button>Save</Button>\\n {/snippet}\\n</Tooltip>\"\n },\n {\n \"title\": \"Multiple Tooltips\",\n \"code\": \"<div class=\\\"flex gap-2\\\">\\n <Tooltip content=\\\"Bold\\\">\\n {#snippet children()}<Button variant=\\\"ghost\\\" size=\\\"icon\\\">B</Button>{/snippet}\\n </Tooltip>\\n <Tooltip content=\\\"Italic\\\">\\n {#snippet children()}<Button variant=\\\"ghost\\\" size=\\\"icon\\\">I</Button>{/snippet}\\n </Tooltip>\\n <Tooltip content=\\\"Underline\\\">\\n {#snippet children()}<Button variant=\\\"ghost\\\" size=\\\"icon\\\">U</Button>{/snippet}\\n </Tooltip>\\n</div>\"\n }\n ],\n \"relatedComponents\": [\n \"Dialog\",\n \"DropdownMenu\"\n ]\n },\n {\n \"name\": \"TreemapChart\",\n \"description\": \"Hierarchical data as nested rectangles\",\n \"category\": \"chart\",\n \"importPath\": \"@classic-homes/charts-svelte\",\n \"props\": [\n {\n \"name\": \"data\",\n \"type\": \"TreemapNode[]\",\n \"required\": true,\n \"description\": \"Hierarchical tree data\"\n },\n {\n \"name\": \"levels\",\n \"type\": \"TreemapLevel[]\",\n \"required\": false,\n \"description\": \"Visual configuration for each level\"\n },\n {\n \"name\": \"onClick\",\n \"type\": \"(params: TreemapEventParams) => void\",\n \"required\": false,\n \"description\": \"Callback when clicked\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": true,\n \"description\": \"Chart title for accessibility\"\n },\n {\n \"name\": \"height\",\n \"type\": \"number | string\",\n \"default\": \"400\",\n \"required\": false,\n \"description\": \"Chart height\"\n },\n {\n \"name\": \"theme\",\n \"type\": \"'light' | 'dark' | 'auto'\",\n \"default\": \"'auto'\",\n \"required\": false,\n \"description\": \"Theme preference\"\n },\n {\n \"name\": \"showTooltip\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show tooltip on hover\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"theme\",\n \"values\": [\n \"light\",\n \"dark\",\n \"auto\"\n ],\n \"default\": \"auto\"\n }\n ],\n \"slots\": [],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { TreemapChart } from '@classic-homes/charts-svelte';\\n\\n const data = [\\n {\\n name: 'Frontend',\\n children: [\\n { name: 'React', value: 40 },\\n { name: 'Vue', value: 30 },\\n { name: 'Svelte', value: 20 },\\n ],\\n },\\n {\\n name: 'Backend',\\n children: [\\n { name: 'Node.js', value: 35 },\\n { name: 'Python', value: 25 },\\n ],\\n },\\n ];\\n</script>\\n\\n<TreemapChart title=\\\"Tech Stack\\\" {data} height={400} />\"\n },\n {\n \"title\": \"File System\",\n \"code\": \"<TreemapChart\\n title=\\\"Disk Usage\\\"\\n data={[\\n {\\n name: 'Documents',\\n children: [\\n { name: 'PDFs', value: 500 },\\n { name: 'Images', value: 300 },\\n { name: 'Videos', value: 2000 },\\n ],\\n },\\n {\\n name: 'Applications',\\n children: [\\n { name: 'Development', value: 1500 },\\n { name: 'Productivity', value: 800 },\\n ],\\n },\\n ]}\\n/>\"\n },\n {\n \"title\": \"Budget Breakdown\",\n \"code\": \"<TreemapChart\\n title=\\\"Department Budget\\\"\\n data={[\\n {\\n name: 'Engineering',\\n children: [\\n { name: 'Salaries', value: 500000 },\\n { name: 'Equipment', value: 100000 },\\n { name: 'Training', value: 50000 },\\n ],\\n },\\n {\\n name: 'Marketing',\\n children: [\\n { name: 'Advertising', value: 200000 },\\n { name: 'Events', value: 75000 },\\n ],\\n },\\n ]}\\n/>\"\n }\n ],\n \"relatedComponents\": [\n \"PieChart\",\n \"SankeyChart\"\n ]\n }\n ]\n}","{\n \"version\": \"0.1.0\",\n \"colors\": {\n \"brand\": [\n {\n \"name\": \"gray\",\n \"description\": \"Neutral gray scale\",\n \"shades\": {\n \"50\": \"#f9fafb\",\n \"100\": \"#f3f4f6\",\n \"200\": \"#e5e7eb\",\n \"300\": \"#d1d5db\",\n \"400\": \"#9ca3af\",\n \"500\": \"#7a7a7a\",\n \"600\": \"#4f4f4f\",\n \"700\": \"#3d3d3d\",\n \"800\": \"#2a2a2a\",\n \"900\": \"#1a1a1a\",\n \"950\": \"#0a0a0a\"\n }\n },\n {\n \"name\": \"red\",\n \"description\": \"Brand red for logo and accents\",\n \"shades\": {\n \"50\": \"#fef2f2\",\n \"100\": \"#fee2e2\",\n \"200\": \"#fecaca\",\n \"300\": \"#fca5a5\",\n \"400\": \"#f87171\",\n \"500\": \"#e02726\",\n \"600\": \"#c81f1e\",\n \"700\": \"#a91c22\",\n \"800\": \"#7f1d1d\",\n \"900\": \"#5c1010\",\n \"950\": \"#3d0a0a\"\n }\n },\n {\n \"name\": \"teal\",\n \"description\": \"Core 1 - Primary brand accent\",\n \"shades\": {\n \"50\": \"#f0fafa\",\n \"100\": \"#d9f2f3\",\n \"200\": \"#b3e6e7\",\n \"300\": \"#8dd9db\",\n \"400\": \"#67cccf\",\n \"500\": \"#3ba4a7\",\n \"600\": \"#2f8386\",\n \"700\": \"#236265\",\n \"800\": \"#184144\",\n \"900\": \"#0c2123\",\n \"950\": \"#061012\"\n }\n },\n {\n \"name\": \"navy\",\n \"description\": \"Core 2 - Professional dark blue\",\n \"shades\": {\n \"50\": \"#f0f4f6\",\n \"100\": \"#d9e4ea\",\n \"200\": \"#b3c9d5\",\n \"300\": \"#8daebf\",\n \"400\": \"#6793aa\",\n \"500\": \"#417895\",\n \"600\": \"#2d5467\",\n \"700\": \"#002e3f\",\n \"800\": \"#00242f\",\n \"900\": \"#001a20\",\n \"950\": \"#000d10\"\n }\n },\n {\n \"name\": \"plum\",\n \"description\": \"Core 3 - Rich burgundy/purple\",\n \"shades\": {\n \"50\": \"#f8f4f6\",\n \"100\": \"#ede2e8\",\n \"200\": \"#dbc5d1\",\n \"300\": \"#c9a8ba\",\n \"400\": \"#b78ba3\",\n \"500\": \"#a56e8c\",\n \"600\": \"#7f4968\",\n \"700\": \"#5e2c41\",\n \"800\": \"#4b2334\",\n \"900\": \"#381a27\",\n \"950\": \"#1c0d13\"\n }\n },\n {\n \"name\": \"sage\",\n \"description\": \"Core 4 - Muted green/gray\",\n \"shades\": {\n \"50\": \"#f7f7f5\",\n \"100\": \"#eaebe6\",\n \"200\": \"#dddfd5\",\n \"300\": \"#d0d3c5\",\n \"400\": \"#c3c7b5\",\n \"500\": \"#b6baa4\",\n \"600\": \"#969a82\",\n \"700\": \"#757968\",\n \"800\": \"#54574e\",\n \"900\": \"#333634\",\n \"950\": \"#1a1b1a\"\n }\n },\n {\n \"name\": \"stone\",\n \"description\": \"Collection - Stone gray\",\n \"shades\": {\n \"50\": \"#f7f7f7\",\n \"100\": \"#ebebeb\",\n \"200\": \"#d7d8d7\",\n \"300\": \"#c3c5c3\",\n \"400\": \"#afb2af\",\n \"500\": \"#9b9f9b\",\n \"600\": \"#878c87\",\n \"700\": \"#676d69\",\n \"800\": \"#4d524f\",\n \"900\": \"#333735\",\n \"950\": \"#1a1b1b\"\n }\n },\n {\n \"name\": \"forest\",\n \"description\": \"Collection - Forest green\",\n \"shades\": {\n \"50\": \"#f4f7f5\",\n \"100\": \"#e1ebe4\",\n \"200\": \"#c3d7c9\",\n \"300\": \"#a5c3ae\",\n \"400\": \"#87af93\",\n \"500\": \"#6aa275\",\n \"600\": \"#55825d\",\n \"700\": \"#406146\",\n \"800\": \"#2b412e\",\n \"900\": \"#162017\",\n \"950\": \"#0b100c\"\n }\n },\n {\n \"name\": \"lavender\",\n \"description\": \"Collection - Lavender purple\",\n \"shades\": {\n \"50\": \"#f7f6f8\",\n \"100\": \"#ece9ed\",\n \"200\": \"#d9d3db\",\n \"300\": \"#c6bdc9\",\n \"400\": \"#b3a7b7\",\n \"500\": \"#a091a5\",\n \"600\": \"#8d7b93\",\n \"700\": \"#695a75\",\n \"800\": \"#51445a\",\n \"900\": \"#392e3f\",\n \"950\": \"#1d1720\"\n }\n },\n {\n \"name\": \"sky\",\n \"description\": \"Collection - Sky blue\",\n \"shades\": {\n \"50\": \"#f4f8fb\",\n \"100\": \"#e2ecf3\",\n \"200\": \"#c5d9e7\",\n \"300\": \"#a8c6db\",\n \"400\": \"#8bb3cf\",\n \"500\": \"#6ea0c3\",\n \"600\": \"#5f91b8\",\n \"700\": \"#4c7493\",\n \"800\": \"#39576e\",\n \"900\": \"#263a49\",\n \"950\": \"#131d25\"\n }\n },\n {\n \"name\": \"deepTeal\",\n \"description\": \"Collection - Deep teal\",\n \"shades\": {\n \"50\": \"#f2f5f5\",\n \"100\": \"#dce5e4\",\n \"200\": \"#b9cbc9\",\n \"300\": \"#96b1ae\",\n \"400\": \"#739793\",\n \"500\": \"#507d78\",\n \"600\": \"#306966\",\n \"800\": \"#18332f\",\n \"900\": \"#0c1918\",\n \"950\": \"#060c0c\"\n }\n },\n {\n \"name\": \"charcoal\",\n \"description\": \"Collection - Charcoal gray\",\n \"shades\": {\n \"50\": \"#f5f5f5\",\n \"100\": \"#e6e6e6\",\n \"200\": \"#cccccc\",\n \"300\": \"#b3b3b3\",\n \"400\": \"#999999\",\n \"500\": \"#808080\",\n \"600\": \"#666666\",\n \"700\": \"#4d4d4d\",\n \"800\": \"#333333\",\n \"900\": \"#292424\",\n \"950\": \"#141212\"\n }\n }\n ],\n \"semantic\": {\n \"background\": {\n \"light\": \"white\",\n \"dark\": \"charcoal-900\"\n },\n \"foreground\": {\n \"light\": \"gray-950\",\n \"dark\": \"gray-50\"\n },\n \"primary\": {\n \"light\": \"red-700\",\n \"dark\": \"red-500\"\n },\n \"secondary\": {\n \"light\": \"gray-100\",\n \"dark\": \"gray-800\"\n },\n \"accent\": {\n \"light\": \"teal-500\",\n \"dark\": \"teal-500\"\n },\n \"muted\": {\n \"light\": \"gray-100\",\n \"dark\": \"gray-800\"\n },\n \"destructive\": {\n \"light\": \"red-500\",\n \"dark\": \"red-900\"\n },\n \"success\": {\n \"light\": \"forest-500\",\n \"dark\": \"forest-500\"\n },\n \"warning\": {\n \"light\": \"amber-500\",\n \"dark\": \"amber-500\"\n },\n \"info\": {\n \"light\": \"sky-500\",\n \"dark\": \"sky-500\"\n }\n }\n },\n \"spacing\": [\n {\n \"key\": \"0\",\n \"value\": \"0\",\n \"pixels\": \"0\"\n },\n {\n \"key\": \"px\",\n \"value\": \"1px\",\n \"pixels\": \"1px\"\n },\n {\n \"key\": \"1\",\n \"value\": \"0.25rem\",\n \"pixels\": \"4px\"\n },\n {\n \"key\": \"2\",\n \"value\": \"0.5rem\",\n \"pixels\": \"8px\"\n },\n {\n \"key\": \"3\",\n \"value\": \"0.75rem\",\n \"pixels\": \"12px\"\n },\n {\n \"key\": \"4\",\n \"value\": \"1rem\",\n \"pixels\": \"16px\"\n },\n {\n \"key\": \"5\",\n \"value\": \"1.25rem\",\n \"pixels\": \"20px\"\n },\n {\n \"key\": \"6\",\n \"value\": \"1.5rem\",\n \"pixels\": \"24px\"\n },\n {\n \"key\": \"8\",\n \"value\": \"2rem\",\n \"pixels\": \"32px\"\n },\n {\n \"key\": \"10\",\n \"value\": \"2.5rem\",\n \"pixels\": \"40px\"\n },\n {\n \"key\": \"12\",\n \"value\": \"3rem\",\n \"pixels\": \"48px\"\n },\n {\n \"key\": \"16\",\n \"value\": \"4rem\",\n \"pixels\": \"64px\"\n },\n {\n \"key\": \"20\",\n \"value\": \"5rem\",\n \"pixels\": \"80px\"\n },\n {\n \"key\": \"24\",\n \"value\": \"6rem\",\n \"pixels\": \"96px\"\n }\n ],\n \"typography\": {\n \"fontFamilies\": {\n \"sans\": \"Figtree, system-ui, sans-serif\",\n \"serif\": \"Source Serif Variable, Georgia, serif\",\n \"mono\": \"ui-monospace, SFMono-Regular, monospace\"\n },\n \"fontSizes\": {\n \"xs\": {\n \"size\": \"0.75rem\",\n \"lineHeight\": \"1rem\"\n },\n \"sm\": {\n \"size\": \"0.875rem\",\n \"lineHeight\": \"1.25rem\"\n },\n \"base\": {\n \"size\": \"1rem\",\n \"lineHeight\": \"1.5rem\"\n },\n \"lg\": {\n \"size\": \"1.125rem\",\n \"lineHeight\": \"1.75rem\"\n },\n \"xl\": {\n \"size\": \"1.25rem\",\n \"lineHeight\": \"1.75rem\"\n },\n \"2xl\": {\n \"size\": \"1.5rem\",\n \"lineHeight\": \"2rem\"\n },\n \"3xl\": {\n \"size\": \"1.875rem\",\n \"lineHeight\": \"2.25rem\"\n },\n \"4xl\": {\n \"size\": \"2.25rem\",\n \"lineHeight\": \"2.5rem\"\n }\n },\n \"fontWeights\": {\n \"thin\": 100,\n \"light\": 300,\n \"normal\": 400,\n \"medium\": 500,\n \"semibold\": 600,\n \"bold\": 700,\n \"black\": 900\n }\n },\n \"borderRadius\": {\n \"none\": \"0\",\n \"sm\": \"0.125rem\",\n \"DEFAULT\": \"0.5rem\",\n \"md\": \"0.375rem\",\n \"lg\": \"0.5rem\",\n \"xl\": \"0.75rem\",\n \"2xl\": \"1rem\",\n \"full\": \"9999px\"\n },\n \"boxShadow\": {\n \"sm\": \"0 1px 2px rgba(0,0,0,0.05)\",\n \"DEFAULT\": \"0 1px 3px rgba(0,0,0,0.1)\",\n \"md\": \"0 4px 6px rgba(0,0,0,0.1)\",\n \"lg\": \"0 10px 15px rgba(0,0,0,0.1)\",\n \"xl\": \"0 20px 25px rgba(0,0,0,0.1)\"\n }\n}","/**\n * Token Resources\n *\n * Provides access to design token data.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport tokenDefinitions from '../data/token-definitions.json' with { type: 'json' };\nimport type { TokenDefinitions } from '../types.js';\n\nconst tokens = tokenDefinitions as TokenDefinitions;\n\n/**\n * Register token-related resources\n */\nexport function registerTokenResources(server: McpServer): void {\n // All tokens\n server.resource('tokens://all', 'tokens://all', async (uri) => ({\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(tokens, null, 2),\n },\n ],\n }));\n\n // Color tokens\n server.resource('tokens://colors', 'tokens://colors', async (uri) => ({\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(tokens.colors, null, 2),\n },\n ],\n }));\n\n // Spacing tokens\n server.resource('tokens://spacing', 'tokens://spacing', async (uri) => ({\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(tokens.spacing, null, 2),\n },\n ],\n }));\n\n // Typography tokens\n server.resource('tokens://typography', 'tokens://typography', async (uri) => ({\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(tokens.typography, null, 2),\n },\n ],\n }));\n}\n","/**\n * Layout Resources\n *\n * Provides access to layout and form pattern data.\n */\n\nimport { McpServer, ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport patternLibrary from '../data/pattern-library.json' with { type: 'json' };\nimport type { PatternLibrary } from '../types.js';\n\nconst patterns = patternLibrary as unknown as PatternLibrary;\n\n/**\n * Register layout and pattern resources\n */\nexport function registerLayoutResources(server: McpServer): void {\n // All patterns\n server.resource('All Patterns', 'patterns://all', async (uri) => ({\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(patterns, null, 2),\n },\n ],\n }));\n\n // Layout patterns\n server.resource('Layout Patterns', 'patterns://layouts', async (uri) => ({\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(patterns.layouts, null, 2),\n },\n ],\n }));\n\n // Form patterns\n server.resource('Form Patterns', 'patterns://forms', async (uri) => ({\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(patterns.forms, null, 2),\n },\n ],\n }));\n\n // Individual pattern by ID\n server.resource(\n 'Pattern Details',\n new ResourceTemplate('patterns://{id}', { list: undefined }),\n async (uri, params) => {\n const id = params.id as string;\n const layout = patterns.layouts.find((l) => l.id === id);\n const form = patterns.forms.find((f) => f.id === id);\n const pattern = layout || form;\n\n if (!pattern) {\n return {\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify({ error: `Pattern \"${id}\" not found` }),\n },\n ],\n };\n }\n\n return {\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(pattern, null, 2),\n },\n ],\n };\n }\n );\n}\n","{\n \"version\": \"0.1.0\",\n \"layouts\": [\n {\n \"id\": \"dashboard-page\",\n \"name\": \"Dashboard Page\",\n \"description\": \"Full dashboard layout with sidebar navigation\",\n \"useCase\": \"Authenticated dashboard pages\",\n \"components\": [\n \"DashboardLayout\",\n \"Sidebar\",\n \"Header\"\n ],\n \"props\": {\n \"navigation\": \"NavSection[]\",\n \"user\": \"User\",\n \"sidebarVariant\": \"'light' | 'dark'\"\n },\n \"example\": \"<script lang=\\\"ts\\\">\\n import { DashboardLayout } from '@classic-homes/theme-svelte';\\n import type { NavSection, User } from '@classic-homes/theme-svelte';\\n\\n const navigation: NavSection[] = [\\n {\\n id: 'main',\\n items: [\\n { id: 'dashboard', name: 'Dashboard', href: '/dashboard', icon: 'home' },\\n { id: 'settings', name: 'Settings', href: '/settings', icon: 'settings' },\\n ],\\n },\\n ];\\n\\n const user: User = {\\n id: '1',\\n name: 'John Doe',\\n email: 'john@example.com',\\n };\\n</script>\\n\\n<DashboardLayout {navigation} {user} appName=\\\"My App\\\">\\n <h1>Welcome to Dashboard</h1>\\n</DashboardLayout>\"\n },\n {\n \"id\": \"public-page\",\n \"name\": \"Public Page\",\n \"description\": \"Public-facing page with header and footer\",\n \"useCase\": \"Marketing pages, landing pages\",\n \"components\": [\n \"PublicLayout\",\n \"Header\",\n \"Footer\"\n ],\n \"props\": {\n \"navigation\": \"NavItem[]\",\n \"footerLinks\": \"NavSection[]\",\n \"copyright\": \"string\"\n },\n \"example\": \"<script lang=\\\"ts\\\">\\n import { PublicLayout } from '@classic-homes/theme-svelte';\\n import type { NavItem } from '@classic-homes/theme-svelte';\\n\\n const navigation: NavItem[] = [\\n { id: 'home', name: 'Home', href: '/' },\\n { id: 'about', name: 'About', href: '/about' },\\n { id: 'contact', name: 'Contact', href: '/contact' },\\n ];\\n</script>\\n\\n<PublicLayout {navigation} showFooter copyright=\\\"© 2025 Company\\\">\\n <main>Page content</main>\\n</PublicLayout>\"\n },\n {\n \"id\": \"auth-page\",\n \"name\": \"Auth Page\",\n \"description\": \"Centered layout for authentication forms\",\n \"useCase\": \"Login, signup, password reset pages\",\n \"components\": [\n \"AuthLayout\"\n ],\n \"props\": {\n \"logoSubtitle\": \"string\",\n \"backgroundVariant\": \"'default' | 'gradient' | 'pattern'\",\n \"maxWidth\": \"'sm' | 'md' | 'lg'\"\n },\n \"example\": \"<script lang=\\\"ts\\\">\\n import { AuthLayout, Button, FormField } from '@classic-homes/theme-svelte';\\n</script>\\n\\n<AuthLayout logoSubtitle=\\\"Sign in to your account\\\">\\n <form>\\n <FormField label=\\\"Email\\\" type=\\\"email\\\" name=\\\"email\\\" />\\n <FormField label=\\\"Password\\\" type=\\\"password\\\" name=\\\"password\\\" />\\n <Button type=\\\"submit\\\" class=\\\"w-full\\\">Sign In</Button>\\n </form>\\n</AuthLayout>\"\n },\n {\n \"id\": \"error-page\",\n \"name\": \"Error Page\",\n \"description\": \"Centered error page layout\",\n \"useCase\": \"404, 500, and other error pages\",\n \"components\": [\n \"ErrorLayout\"\n ],\n \"props\": {\n \"statusCode\": \"number\",\n \"title\": \"string\",\n \"description\": \"string\"\n },\n \"example\": \"<script lang=\\\"ts\\\">\\n import { ErrorLayout } from '@classic-homes/theme-svelte';\\n</script>\\n\\n<ErrorLayout\\n statusCode={404}\\n title=\\\"Page Not Found\\\"\\n description=\\\"The page you're looking for doesn't exist.\\\"\\n showHomeButton\\n/>\"\n },\n {\n \"id\": \"form-page\",\n \"name\": \"Form Page\",\n \"description\": \"Form-focused page with optional sidebar\",\n \"useCase\": \"Multi-step forms, data entry\",\n \"components\": [\n \"FormPageLayout\"\n ],\n \"props\": {\n \"title\": \"string\",\n \"description\": \"string\",\n \"helpText\": \"string\"\n },\n \"example\": \"<script lang=\\\"ts\\\">\\n import { FormPageLayout, FormField, Button } from '@classic-homes/theme-svelte';\\n</script>\\n\\n<FormPageLayout\\n title=\\\"Create Account\\\"\\n description=\\\"Fill in the form to create your account\\\"\\n helpText=\\\"Need help? Contact support.\\\"\\n>\\n <form>\\n <!-- Form fields -->\\n </form>\\n</FormPageLayout>\"\n }\n ],\n \"forms\": [\n {\n \"id\": \"login-form\",\n \"name\": \"Login Form\",\n \"description\": \"Standard login form with email and password\",\n \"schema\": \"loginSchema\",\n \"components\": [\n \"FormField\",\n \"Button\",\n \"useForm\"\n ],\n \"example\": \"<script lang=\\\"ts\\\">\\n import { FormField, Button, useForm, loginSchema } from '@classic-homes/theme-svelte';\\n\\n const form = useForm({\\n schema: loginSchema,\\n initialValues: { email: '', password: '' },\\n onSubmit: async (data) => {\\n // Handle login\\n },\\n });\\n</script>\\n\\n<form onsubmit={form.handleSubmit}>\\n <FormField\\n label=\\\"Email\\\"\\n type=\\\"email\\\"\\n name=\\\"email\\\"\\n value={form.data.email}\\n error={form.errors.email}\\n onValueChange={(v) => form.setField('email', v)}\\n />\\n <FormField\\n label=\\\"Password\\\"\\n type=\\\"password\\\"\\n name=\\\"password\\\"\\n value={form.data.password}\\n error={form.errors.password}\\n onValueChange={(v) => form.setField('password', v)}\\n />\\n <Button type=\\\"submit\\\" loading={form.isSubmitting}>Sign In</Button>\\n</form>\"\n },\n {\n \"id\": \"registration-form\",\n \"name\": \"Registration Form\",\n \"description\": \"User registration form with validation\",\n \"schema\": \"registerSchema\",\n \"components\": [\n \"FormField\",\n \"Button\",\n \"useForm\"\n ],\n \"example\": \"<script lang=\\\"ts\\\">\\n import { FormField, Button, useForm, registerSchema } from '@classic-homes/theme-svelte';\\n\\n const form = useForm({\\n schema: registerSchema,\\n initialValues: { email: '', password: '', confirmPassword: '', fullName: '' },\\n onSubmit: async (data) => {\\n // Handle registration\\n },\\n });\\n</script>\\n\\n<form onsubmit={form.handleSubmit}>\\n <FormField label=\\\"Full Name\\\" name=\\\"fullName\\\" />\\n <FormField label=\\\"Email\\\" type=\\\"email\\\" name=\\\"email\\\" />\\n <FormField label=\\\"Password\\\" type=\\\"password\\\" name=\\\"password\\\" />\\n <FormField label=\\\"Confirm Password\\\" type=\\\"password\\\" name=\\\"confirmPassword\\\" />\\n <Button type=\\\"submit\\\" loading={form.isSubmitting}>Create Account</Button>\\n</form>\"\n },\n {\n \"id\": \"contact-form\",\n \"name\": \"Contact Form\",\n \"description\": \"Contact form with name, email, and message\",\n \"components\": [\n \"FormField\",\n \"Textarea\",\n \"Button\",\n \"useForm\"\n ],\n \"example\": \"<script lang=\\\"ts\\\">\\n import { FormField, Button, useForm } from '@classic-homes/theme-svelte';\\n import { z } from 'zod';\\n\\n const contactSchema = z.object({\\n name: z.string().min(2),\\n email: z.string().email(),\\n message: z.string().min(10),\\n });\\n\\n const form = useForm({\\n schema: contactSchema,\\n initialValues: { name: '', email: '', message: '' },\\n onSubmit: async (data) => {\\n // Handle contact form\\n },\\n });\\n</script>\\n\\n<form onsubmit={form.handleSubmit}>\\n <FormField label=\\\"Name\\\" name=\\\"name\\\" />\\n <FormField label=\\\"Email\\\" type=\\\"email\\\" name=\\\"email\\\" />\\n <FormField label=\\\"Message\\\" type=\\\"textarea\\\" name=\\\"message\\\" />\\n <Button type=\\\"submit\\\">Send Message</Button>\\n</form>\"\n },\n {\n \"id\": \"mfa-verification-form\",\n \"name\": \"MFA Verification Form\",\n \"description\": \"Two-factor authentication code verification form\",\n \"schema\": \"mfaVerifySchema\",\n \"components\": [\n \"FormField\",\n \"OTPInput\",\n \"Button\",\n \"Checkbox\",\n \"useForm\"\n ],\n \"example\": \"<script lang=\\\"ts\\\">\\n import { OTPInput, Button, Checkbox, useForm, mfaVerifySchema } from '@classic-homes/theme-svelte';\\n import { authApi } from '@classic-homes/auth/core';\\n\\n export let mfaToken: string;\\n export let onSuccess: () => void;\\n\\n const form = useForm({\\n schema: mfaVerifySchema,\\n initialValues: { code: '', trustDevice: false },\\n onSubmit: async (data) => {\\n await authApi.verifyMFAChallenge({ mfaToken, code: data.code, trustDevice: data.trustDevice });\\n onSuccess();\\n },\\n });\\n</script>\\n\\n<form onsubmit={form.handleSubmit} class=\\\"space-y-4\\\">\\n <OTPInput length={6} value={form.data.code} onValueChange={(v) => form.setField('code', v)} />\\n <Checkbox checked={form.data.trustDevice} onCheckedChange={(v) => form.setField('trustDevice', v)}>\\n Trust this device for 30 days\\n </Checkbox>\\n <Button type=\\\"submit\\\" loading={form.isSubmitting} class=\\\"w-full\\\">Verify</Button>\\n</form>\"\n },\n {\n \"id\": \"mfa-setup-form\",\n \"name\": \"MFA Setup Form\",\n \"description\": \"MFA enrollment form with QR code display and code verification\",\n \"schema\": \"mfaSetupSchema\",\n \"components\": [\n \"FormField\",\n \"OTPInput\",\n \"Button\",\n \"Card\",\n \"useForm\"\n ],\n \"example\": \"<script lang=\\\"ts\\\">\\n import { OTPInput, Button, Card, CardContent, useForm, mfaSetupSchema } from '@classic-homes/theme-svelte';\\n import { authApi } from '@classic-homes/auth/core';\\n import { onMount } from 'svelte';\\n\\n let setupData: { qrCodeUrl: string; manualEntryKey: string } | null = null;\\n\\n onMount(async () => {\\n setupData = await authApi.setupMFA();\\n });\\n\\n const form = useForm({\\n schema: mfaSetupSchema,\\n initialValues: { code: '' },\\n onSubmit: async (data) => {\\n await authApi.verifyMFASetup(data.code);\\n },\\n });\\n</script>\\n\\n{#if setupData}\\n <Card>\\n <CardContent class=\\\"space-y-4\\\">\\n <img src={setupData.qrCodeUrl} alt=\\\"QR Code\\\" class=\\\"mx-auto\\\" />\\n <form onsubmit={form.handleSubmit}>\\n <OTPInput length={6} value={form.data.code} onValueChange={(v) => form.setField('code', v)} />\\n <Button type=\\\"submit\\\" loading={form.isSubmitting} class=\\\"w-full mt-4\\\">Verify & Enable MFA</Button>\\n </form>\\n </CardContent>\\n </Card>\\n{/if}\"\n },\n {\n \"id\": \"profile-update-form\",\n \"name\": \"Profile Update Form\",\n \"description\": \"User profile editing form\",\n \"schema\": \"profileUpdateSchema\",\n \"components\": [\n \"FormField\",\n \"Button\",\n \"useForm\"\n ],\n \"example\": \"<script lang=\\\"ts\\\">\\n import { FormField, Button, useForm, profileUpdateSchema } from '@classic-homes/theme-svelte';\\n import { authApi } from '@classic-homes/auth/core';\\n import { currentUser, authActions } from '@classic-homes/auth/svelte';\\n\\n const form = useForm({\\n schema: profileUpdateSchema,\\n initialValues: {\\n firstName: $currentUser?.firstName ?? '',\\n lastName: $currentUser?.lastName ?? '',\\n email: $currentUser?.email ?? '',\\n },\\n onSubmit: async (data) => {\\n const updatedUser = await authApi.updateProfile(data);\\n authActions.updateUser(updatedUser);\\n },\\n });\\n</script>\\n\\n<form onsubmit={form.handleSubmit} class=\\\"space-y-4\\\">\\n <FormField label=\\\"First Name\\\" name=\\\"firstName\\\" value={form.data.firstName} onValueChange={(v) => form.setField('firstName', v)} />\\n <FormField label=\\\"Last Name\\\" name=\\\"lastName\\\" value={form.data.lastName} onValueChange={(v) => form.setField('lastName', v)} />\\n <FormField label=\\\"Email\\\" type=\\\"email\\\" name=\\\"email\\\" value={form.data.email} onValueChange={(v) => form.setField('email', v)} />\\n <Button type=\\\"submit\\\" loading={form.isSubmitting}>Save Changes</Button>\\n</form>\"\n },\n {\n \"id\": \"change-password-form\",\n \"name\": \"Change Password Form\",\n \"description\": \"Form for authenticated users to change their password\",\n \"schema\": \"changePasswordSchema\",\n \"components\": [\n \"FormField\",\n \"Button\",\n \"useForm\"\n ],\n \"example\": \"<script lang=\\\"ts\\\">\\n import { FormField, Button, useForm, changePasswordSchema } from '@classic-homes/theme-svelte';\\n import { authApi } from '@classic-homes/auth/core';\\n\\n const form = useForm({\\n schema: changePasswordSchema,\\n initialValues: { currentPassword: '', newPassword: '', confirmPassword: '' },\\n onSubmit: async (data) => {\\n await authApi.changePassword({ currentPassword: data.currentPassword, newPassword: data.newPassword });\\n },\\n });\\n</script>\\n\\n<form onsubmit={form.handleSubmit} class=\\\"space-y-4\\\">\\n <FormField label=\\\"Current Password\\\" type=\\\"password\\\" name=\\\"currentPassword\\\" value={form.data.currentPassword} onValueChange={(v) => form.setField('currentPassword', v)} />\\n <FormField label=\\\"New Password\\\" type=\\\"password\\\" name=\\\"newPassword\\\" value={form.data.newPassword} onValueChange={(v) => form.setField('newPassword', v)} />\\n <FormField label=\\\"Confirm Password\\\" type=\\\"password\\\" name=\\\"confirmPassword\\\" value={form.data.confirmPassword} onValueChange={(v) => form.setField('confirmPassword', v)} />\\n <Button type=\\\"submit\\\" loading={form.isSubmitting}>Change Password</Button>\\n</form>\"\n },\n {\n \"id\": \"forgot-password-form\",\n \"name\": \"Forgot Password Form\",\n \"description\": \"Password reset request form\",\n \"schema\": \"forgotPasswordSchema\",\n \"components\": [\n \"FormField\",\n \"Button\",\n \"useForm\"\n ],\n \"example\": \"<script lang=\\\"ts\\\">\\n import { FormField, Button, useForm, forgotPasswordSchema } from '@classic-homes/theme-svelte';\\n import { authApi } from '@classic-homes/auth/core';\\n\\n let submitted = false;\\n\\n const form = useForm({\\n schema: forgotPasswordSchema,\\n initialValues: { email: '' },\\n onSubmit: async (data) => {\\n await authApi.forgotPassword(data.email);\\n submitted = true;\\n },\\n });\\n</script>\\n\\n{#if submitted}\\n <p>Check your email for password reset instructions.</p>\\n{:else}\\n <form onsubmit={form.handleSubmit} class=\\\"space-y-4\\\">\\n <FormField label=\\\"Email\\\" type=\\\"email\\\" name=\\\"email\\\" value={form.data.email} onValueChange={(v) => form.setField('email', v)} />\\n <Button type=\\\"submit\\\" loading={form.isSubmitting} class=\\\"w-full\\\">Send Reset Link</Button>\\n </form>\\n{/if}\"\n },\n {\n \"id\": \"reset-password-form\",\n \"name\": \"Reset Password Form\",\n \"description\": \"Set new password form using reset token\",\n \"schema\": \"resetPasswordSchema\",\n \"components\": [\n \"FormField\",\n \"Button\",\n \"useForm\"\n ],\n \"example\": \"<script lang=\\\"ts\\\">\\n import { FormField, Button, useForm, resetPasswordSchema } from '@classic-homes/theme-svelte';\\n import { authApi } from '@classic-homes/auth/core';\\n import { goto } from '$app/navigation';\\n\\n export let token: string;\\n\\n const form = useForm({\\n schema: resetPasswordSchema,\\n initialValues: { password: '', confirmPassword: '' },\\n onSubmit: async (data) => {\\n await authApi.resetPassword(token, data.password);\\n goto('/login?message=password-reset');\\n },\\n });\\n</script>\\n\\n<form onsubmit={form.handleSubmit} class=\\\"space-y-4\\\">\\n <FormField label=\\\"New Password\\\" type=\\\"password\\\" name=\\\"password\\\" value={form.data.password} onValueChange={(v) => form.setField('password', v)} />\\n <FormField label=\\\"Confirm Password\\\" type=\\\"password\\\" name=\\\"confirmPassword\\\" value={form.data.confirmPassword} onValueChange={(v) => form.setField('confirmPassword', v)} />\\n <Button type=\\\"submit\\\" loading={form.isSubmitting} class=\\\"w-full\\\">Reset Password</Button>\\n</form>\"\n }\n ],\n \"auth\": [\n {\n \"id\": \"login-with-mfa\",\n \"name\": \"Login with MFA Flow\",\n \"description\": \"Complete login flow handling MFA challenge when required\",\n \"components\": [\n \"AuthLayout\",\n \"FormField\",\n \"Button\",\n \"OTPInput\",\n \"useForm\"\n ],\n \"example\": \"<script lang=\\\"ts\\\">\\n import { AuthLayout, FormField, Button, OTPInput, useForm, loginSchema, mfaVerifySchema } from '@classic-homes/theme-svelte';\\n import { authApi, isMfaChallengeResponse, getMfaToken } from '@classic-homes/auth/core';\\n import { authActions } from '@classic-homes/auth/svelte';\\n import { goto } from '$app/navigation';\\n\\n let mfaRequired = false;\\n let mfaToken = '';\\n\\n const loginForm = useForm({\\n schema: loginSchema,\\n initialValues: { email: '', password: '' },\\n onSubmit: async (data) => {\\n const response = await authActions.login(data);\\n if (isMfaChallengeResponse(response)) {\\n mfaRequired = true;\\n mfaToken = getMfaToken(response)!;\\n } else {\\n goto('/dashboard');\\n }\\n },\\n });\\n</script>\\n\\n<AuthLayout logoSubtitle={mfaRequired ? 'Enter verification code' : 'Sign in'}>\\n {#if mfaRequired}\\n <OTPInput length={6} />\\n <Button class=\\\"w-full mt-4\\\">Verify</Button>\\n {:else}\\n <form onsubmit={loginForm.handleSubmit}>\\n <FormField label=\\\"Email\\\" type=\\\"email\\\" name=\\\"email\\\" />\\n <FormField label=\\\"Password\\\" type=\\\"password\\\" name=\\\"password\\\" />\\n <Button type=\\\"submit\\\" loading={loginForm.isSubmitting} class=\\\"w-full\\\">Sign In</Button>\\n </form>\\n {/if}\\n</AuthLayout>\"\n },\n {\n \"id\": \"sso-login\",\n \"name\": \"SSO Login Flow\",\n \"description\": \"Single Sign-On authentication with redirect handling\",\n \"components\": [\n \"AuthLayout\",\n \"Button\"\n ],\n \"example\": \"<script lang=\\\"ts\\\">\\n import { AuthLayout, Button } from '@classic-homes/theme-svelte';\\n import { authApi } from '@classic-homes/auth/core';\\n\\n function handleSSOLogin() {\\n authApi.initiateSSOLogin({ redirectUrl: '/dashboard' });\\n }\\n</script>\\n\\n<AuthLayout logoSubtitle=\\\"Sign in with your company account\\\">\\n <Button onclick={handleSSOLogin} class=\\\"w-full\\\" variant=\\\"outline\\\">Sign in with SSO</Button>\\n</AuthLayout>\"\n },\n {\n \"id\": \"session-management\",\n \"name\": \"Session Management\",\n \"description\": \"View and revoke active sessions\",\n \"components\": [\n \"Card\",\n \"Button\"\n ],\n \"example\": \"<script lang=\\\"ts\\\">\\n import { Card, CardHeader, CardTitle, CardContent, Button } from '@classic-homes/theme-svelte';\\n import { authApi } from '@classic-homes/auth/core';\\n import type { Session } from '@classic-homes/auth/core';\\n import { onMount } from 'svelte';\\n\\n let sessions: Session[] = [];\\n\\n onMount(async () => {\\n const response = await authApi.getSessions();\\n sessions = response.sessions;\\n });\\n\\n async function revokeSession(sessionId: string) {\\n await authApi.revokeSession(sessionId);\\n sessions = sessions.filter(s => s.id !== sessionId);\\n }\\n</script>\\n\\n<Card>\\n <CardHeader><CardTitle>Active Sessions</CardTitle></CardHeader>\\n <CardContent>\\n {#each sessions as session}\\n <div class=\\\"flex items-center justify-between py-2 border-b\\\">\\n <div>\\n <p class=\\\"font-medium\\\">{session.deviceName}</p>\\n <p class=\\\"text-sm text-muted-foreground\\\">{session.location}</p>\\n </div>\\n {#if !session.isCurrent}\\n <Button variant=\\\"ghost\\\" size=\\\"sm\\\" onclick={() => revokeSession(session.id)}>Revoke</Button>\\n {/if}\\n </div>\\n {/each}\\n </CardContent>\\n</Card>\"\n },\n {\n \"id\": \"protected-route\",\n \"name\": \"Protected Route\",\n \"description\": \"Route protection with auth guards in SvelteKit\",\n \"components\": [],\n \"example\": \"// +page.ts\\nimport { requireAuth, requireRole, protectedLoad } from '@classic-homes/auth/svelte';\\n\\n// Simple auth requirement\\nexport const load = requireAuth();\\n\\n// Role-based protection\\nexport const load = requireRole('admin');\\n\\n// Custom protected load\\nexport const load = protectedLoad(async (event, auth) => {\\n const data = await fetchData(event.fetch, auth.user.id);\\n return { user: auth.user, data };\\n});\"\n }\n ]\n}","{\n \"auth\": [\n {\n \"name\": \"emailSchema\",\n \"description\": \"Email validation\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"passwordSchema\",\n \"description\": \"Strong password (8+ chars, mixed case, numbers, special)\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"loginPasswordSchema\",\n \"description\": \"Simpler password validation for login\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"usernameSchema\",\n \"description\": \"Username validation (3-30 chars, alphanumeric)\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"fullNameSchema\",\n \"description\": \"Full name validation\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"phoneSchema\",\n \"description\": \"Phone number validation\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"mfaCodeSchema\",\n \"description\": \"MFA code validation (6 digits)\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"totpSecretSchema\",\n \"description\": \"TOTP secret validation (Base32 encoded)\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"mfaVerifySchema\",\n \"description\": \"MFA verification form schema (code + optional trust device)\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"mfaSetupSchema\",\n \"description\": \"MFA setup form schema (code verification during setup)\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"loginSchema\",\n \"description\": \"Complete login form schema\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"registerSchema\",\n \"description\": \"Complete registration form schema\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"forgotPasswordSchema\",\n \"description\": \"Forgot password form schema\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"resetPasswordSchema\",\n \"description\": \"Reset password form schema\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"changePasswordSchema\",\n \"description\": \"Change password form schema\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"profileUpdateSchema\",\n \"description\": \"Profile update form schema (firstName, lastName, email, phone)\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"emailChangeSchema\",\n \"description\": \"Email change form schema with password confirmation\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"userSchema\",\n \"description\": \"User object validation schema\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"authTokensSchema\",\n \"description\": \"Auth tokens validation (accessToken, refreshToken)\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"loginResponseSchema\",\n \"description\": \"Login API response validation schema\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n }\n ],\n \"common\": [\n {\n \"name\": \"nonEmptyString\",\n \"description\": \"Non-empty string validation\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"trimmedString\",\n \"description\": \"Trimmed string\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"urlSchema\",\n \"description\": \"URL validation\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"slugSchema\",\n \"description\": \"URL slug validation\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"positiveInt\",\n \"description\": \"Positive integer validation\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"nonNegativeInt\",\n \"description\": \"Non-negative integer\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"percentageSchema\",\n \"description\": \"Percentage (0-100)\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"priceSchema\",\n \"description\": \"Price validation\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"isoDateSchema\",\n \"description\": \"ISO date string validation\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"futureDateSchema\",\n \"description\": \"Future date validation\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"pastDateSchema\",\n \"description\": \"Past date validation\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n }\n ],\n \"file\": [\n {\n \"name\": \"maxFileSize\",\n \"description\": \"File size limit validation\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"allowedFileTypes\",\n \"description\": \"File type validation\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"imageFileSchema\",\n \"description\": \"Image file validation\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n }\n ],\n \"api\": [\n {\n \"name\": \"apiResponseSchema\",\n \"description\": \"Standard API response schema\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"paginatedResponseSchema\",\n \"description\": \"Paginated API response\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n }\n ],\n \"composables\": [\n {\n \"name\": \"useForm\",\n \"description\": \"Form state management composable with Zod validation, field tracking, and submission handling\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"example\": \"const form = useForm({\\n schema: loginSchema,\\n initialValues: { email: '', password: '' },\\n onSubmit: async (data) => { /* handle submit */ }\\n});\"\n },\n {\n \"name\": \"usePersistedForm\",\n \"description\": \"Form composable with localStorage persistence for draft saving\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"example\": \"const form = usePersistedForm('form-key', {\\n schema: registerSchema,\\n initialValues: { email: '', name: '' },\\n onSubmit: async (data) => { /* handle submit */ }\\n});\"\n },\n {\n \"name\": \"useAsync\",\n \"description\": \"Async operation state management with loading, error, and data states\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"example\": \"const { execute, isLoading, error, data } = useAsync(async () => {\\n return await fetchData();\\n});\"\n }\n ]\n}","/**\n * Schema Resources\n *\n * Provides access to validation schema information.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport schemaCatalog from '../data/schema-catalog.json' with { type: 'json' };\nimport type { SchemaCatalog } from '../types.js';\n\nconst schemas = schemaCatalog as SchemaCatalog;\n\n/**\n * Register schema-related resources\n */\nexport function registerSchemaResources(server: McpServer): void {\n // All schemas\n server.resource('schemas://all', 'schemas://all', async (uri) => ({\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(schemas, null, 2),\n },\n ],\n }));\n\n // Auth schemas\n server.resource('schemas://auth', 'schemas://auth', async (uri) => ({\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(schemas.auth, null, 2),\n },\n ],\n }));\n\n // Common schemas\n server.resource('schemas://common', 'schemas://common', async (uri) => ({\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(schemas.common, null, 2),\n },\n ],\n }));\n}\n","/**\n * Auth Resources\n *\n * Provides access to @classic-homes/auth package documentation.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport authCatalog from '../data/auth-catalog.json' with { type: 'json' };\nimport type { AuthCatalog } from '../types.js';\n\nconst catalog = authCatalog as unknown as AuthCatalog;\n\n/**\n * Register auth-related resources\n */\nexport function registerAuthResources(server: McpServer): void {\n // Full auth catalog\n server.resource('Auth Package', 'auth://all', async (uri) => ({\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(catalog, null, 2),\n },\n ],\n }));\n\n // Core subpackage\n server.resource('Auth Core', 'auth://core', async (uri) => ({\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(\n {\n importPath: catalog.subpackages.core.importPath,\n description: catalog.subpackages.core.description,\n modules: catalog.subpackages.core.modules,\n types: catalog.subpackages.core.types,\n },\n null,\n 2\n ),\n },\n ],\n }));\n\n // Svelte subpackage\n server.resource('Auth Svelte', 'auth://svelte', async (uri) => ({\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(\n {\n importPath: catalog.subpackages.svelte.importPath,\n description: catalog.subpackages.svelte.description,\n modules: catalog.subpackages.svelte.modules,\n },\n null,\n 2\n ),\n },\n ],\n }));\n\n // Testing subpackage\n server.resource('Auth Testing', 'auth://testing', async (uri) => ({\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(\n {\n importPath: catalog.subpackages.testing.importPath,\n description: catalog.subpackages.testing.description,\n modules: catalog.subpackages.testing.modules,\n },\n null,\n 2\n ),\n },\n ],\n }));\n\n // Types only\n server.resource('Auth Types', 'auth://types', async (uri) => ({\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(\n {\n description: 'TypeScript types exported from @classic-homes/auth/core',\n types: catalog.subpackages.core.types,\n },\n null,\n 2\n ),\n },\n ],\n }));\n\n // API operations only\n server.resource('Auth API', 'auth://api', async (uri) => ({\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(\n {\n description: 'Auth API client methods from @classic-homes/auth/core',\n api: catalog.subpackages.core.modules.api,\n },\n null,\n 2\n ),\n },\n ],\n }));\n\n // Individual module access via template\n server.resource(\n 'Auth Module',\n new ResourceTemplate('auth://core/{module}', { list: undefined }),\n async (uri, params) => {\n const moduleName = params.module as string;\n const modules = catalog.subpackages.core.modules;\n const module = modules[moduleName as keyof typeof modules];\n\n if (!module) {\n const availableModules = Object.keys(modules);\n return {\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify({\n error: `Module \"${moduleName}\" not found`,\n availableModules,\n }),\n },\n ],\n };\n }\n\n return {\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(module, null, 2),\n },\n ],\n };\n }\n );\n\n // Quick reference for common operations\n server.resource('Auth Quick Reference', 'auth://quick-reference', async (uri) => ({\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(\n {\n description: 'Quick reference for common auth operations',\n initialization: {\n code: \"import { initAuth } from '@classic-homes/auth/core';\\n\\ninitAuth({ baseUrl: 'https://api.example.com' });\",\n description: 'Initialize the auth system with your API base URL',\n },\n login: {\n code: \"import { authApi, isMfaChallengeResponse } from '@classic-homes/auth/core';\\n\\nconst response = await authApi.login({ username: 'user@example.com', password: 'password' });\\nif (isMfaChallengeResponse(response)) {\\n // Handle MFA\\n}\",\n description: 'Login with username and password, handling MFA if required',\n },\n svelteStore: {\n code: \"import { isAuthenticated, currentUser, authActions } from '@classic-homes/auth/svelte';\\n\\n// In component\\n{#if $isAuthenticated}\\n <p>Welcome, {$currentUser.firstName}!</p>\\n{/if}\",\n description: 'Use reactive Svelte stores for auth state',\n },\n routeProtection: {\n code: \"import { requireAuth, requireRole } from '@classic-homes/auth/svelte';\\n\\n// In +page.ts or +layout.ts\\nexport const load = requireAuth();\\n// or\\nexport const load = requireRole('admin');\",\n description: 'Protect SvelteKit routes with auth guards',\n },\n testing: {\n code: \"import { setupTestAuth, mockUser, assertAuthenticated } from '@classic-homes/auth/testing';\\n\\nconst ctx = setupTestAuth();\\n// Run tests\\nctx.cleanup();\",\n description: 'Set up mocks for testing auth flows',\n },\n },\n null,\n 2\n ),\n },\n ],\n }));\n}\n","{\n \"version\": \"0.1.0\",\n \"packageName\": \"@classic-homes/auth\",\n \"description\": \"Authentication services and Svelte bindings for Classic Theme apps\",\n \"subpackages\": {\n \"core\": {\n \"importPath\": \"@classic-homes/auth/core\",\n \"description\": \"Framework-agnostic authentication core. Use this for direct API access or custom integrations.\",\n \"modules\": {\n \"config\": {\n \"description\": \"Authentication configuration and initialization\",\n \"functions\": [\n {\n \"name\": \"initAuth\",\n \"signature\": \"(config: AuthConfig) => void\",\n \"description\": \"Initialize the auth system with configuration options\",\n \"example\": \"import { initAuth } from '@classic-homes/auth/core';\\n\\ninitAuth({\\n baseUrl: 'https://api.example.com',\\n storage: localStorage,\\n sso: {\\n enabled: true,\\n authorizeUrl: 'https://sso.example.com/authorize'\\n }\\n});\"\n },\n {\n \"name\": \"getConfig\",\n \"signature\": \"() => AuthConfig\",\n \"description\": \"Get the current auth configuration\"\n },\n {\n \"name\": \"isInitialized\",\n \"signature\": \"() => boolean\",\n \"description\": \"Check if auth has been initialized\"\n },\n {\n \"name\": \"resetConfig\",\n \"signature\": \"() => void\",\n \"description\": \"Reset auth configuration to defaults\"\n },\n {\n \"name\": \"getDefaultStorage\",\n \"signature\": \"() => StorageAdapter\",\n \"description\": \"Get the default storage adapter (localStorage with fallback)\"\n },\n {\n \"name\": \"getStorage\",\n \"signature\": \"() => StorageAdapter\",\n \"description\": \"Get the configured storage adapter\"\n },\n {\n \"name\": \"getFetch\",\n \"signature\": \"() => typeof fetch\",\n \"description\": \"Get the configured fetch function\"\n }\n ],\n \"types\": [\n {\n \"name\": \"AuthConfig\",\n \"description\": \"Configuration options for auth initialization\",\n \"properties\": [\n { \"name\": \"baseUrl\", \"type\": \"string\", \"required\": true, \"description\": \"Base URL for auth API endpoints\" },\n { \"name\": \"storage\", \"type\": \"StorageAdapter\", \"required\": false, \"description\": \"Storage adapter for tokens\" },\n { \"name\": \"fetch\", \"type\": \"typeof fetch\", \"required\": false, \"description\": \"Custom fetch implementation\" },\n { \"name\": \"sso\", \"type\": \"SSOConfig\", \"required\": false, \"description\": \"SSO configuration\" }\n ]\n },\n {\n \"name\": \"SSOConfig\",\n \"description\": \"SSO provider configuration\",\n \"properties\": [\n { \"name\": \"enabled\", \"type\": \"boolean\", \"required\": false, \"description\": \"Whether SSO is enabled\" },\n { \"name\": \"authorizeUrl\", \"type\": \"string\", \"required\": false, \"description\": \"SSO authorization URL\" }\n ]\n },\n {\n \"name\": \"StorageAdapter\",\n \"description\": \"Interface for token storage\",\n \"properties\": [\n { \"name\": \"getItem\", \"type\": \"(key: string) => string | null\", \"required\": true, \"description\": \"Get item from storage\" },\n { \"name\": \"setItem\", \"type\": \"(key: string, value: string) => void\", \"required\": true, \"description\": \"Set item in storage\" },\n { \"name\": \"removeItem\", \"type\": \"(key: string) => void\", \"required\": true, \"description\": \"Remove item from storage\" }\n ]\n }\n ]\n },\n \"client\": {\n \"description\": \"HTTP client utilities for API requests\",\n \"functions\": [\n {\n \"name\": \"api\",\n \"signature\": \"{ get, post, put, delete }\",\n \"description\": \"HTTP client object with methods for making API requests\"\n },\n {\n \"name\": \"apiRequest\",\n \"signature\": \"(url: string, options?: ApiRequestOptions) => Promise<Response>\",\n \"description\": \"Make an authenticated API request\"\n },\n {\n \"name\": \"extractData\",\n \"signature\": \"<T>(response: { data: T } | T) => T\",\n \"description\": \"Extract data from API response wrapper\"\n },\n {\n \"name\": \"getAccessToken\",\n \"signature\": \"() => string | null\",\n \"description\": \"Get the stored access token\"\n },\n {\n \"name\": \"getRefreshToken\",\n \"signature\": \"() => string | null\",\n \"description\": \"Get the stored refresh token\"\n },\n {\n \"name\": \"getSessionToken\",\n \"signature\": \"() => string | null\",\n \"description\": \"Get the stored session token\"\n },\n {\n \"name\": \"updateStoredTokens\",\n \"signature\": \"(tokens: { accessToken?: string; refreshToken?: string; sessionToken?: string }) => void\",\n \"description\": \"Update stored tokens\"\n },\n {\n \"name\": \"clearStoredAuth\",\n \"signature\": \"() => void\",\n \"description\": \"Clear all stored authentication data\"\n }\n ],\n \"types\": [\n {\n \"name\": \"ApiRequestOptions\",\n \"description\": \"Options for API requests\"\n },\n {\n \"name\": \"ApiResponse\",\n \"description\": \"Standard API response wrapper\"\n }\n ]\n },\n \"api\": {\n \"description\": \"Auth API client methods for all authentication endpoints\",\n \"functions\": [\n {\n \"name\": \"authApi.login\",\n \"signature\": \"(credentials: LoginCredentials) => Promise<LoginResponse>\",\n \"description\": \"Login with username and password\",\n \"example\": \"import { authApi } from '@classic-homes/auth/core';\\n\\nconst response = await authApi.login({\\n username: 'user@example.com',\\n password: 'password'\\n});\\n\\nif (response.requiresMFA) {\\n // Handle MFA challenge\\n} else {\\n // Login success\\n console.log(response.user);\\n}\"\n },\n {\n \"name\": \"authApi.logout\",\n \"signature\": \"() => Promise<LogoutResponse>\",\n \"description\": \"Logout the current user. Returns SSO logout URL if applicable.\"\n },\n {\n \"name\": \"authApi.register\",\n \"signature\": \"(data: RegisterData) => Promise<RegisterResponse>\",\n \"description\": \"Register a new user\"\n },\n {\n \"name\": \"authApi.forgotPassword\",\n \"signature\": \"(email: string) => Promise<void>\",\n \"description\": \"Request a password reset email\"\n },\n {\n \"name\": \"authApi.resetPassword\",\n \"signature\": \"(token: string, newPassword: string) => Promise<void>\",\n \"description\": \"Reset password with a token\"\n },\n {\n \"name\": \"authApi.refreshToken\",\n \"signature\": \"(refreshToken: string) => Promise<{ accessToken: string; refreshToken: string }>\",\n \"description\": \"Refresh the access token\"\n },\n {\n \"name\": \"authApi.initiateSSOLogin\",\n \"signature\": \"(options?: { callbackUrl?: string; redirectUrl?: string }) => void\",\n \"description\": \"Initiate SSO login by redirecting to the SSO provider\"\n },\n {\n \"name\": \"authApi.getProfile\",\n \"signature\": \"(customFetch?: typeof fetch) => Promise<User>\",\n \"description\": \"Get the current user's profile\"\n },\n {\n \"name\": \"authApi.updateProfile\",\n \"signature\": \"(data: ProfileUpdateData) => Promise<User>\",\n \"description\": \"Update the current user's profile\"\n },\n {\n \"name\": \"authApi.changePassword\",\n \"signature\": \"(data: ChangePasswordData) => Promise<void>\",\n \"description\": \"Change the current user's password\"\n },\n {\n \"name\": \"authApi.resendVerification\",\n \"signature\": \"() => Promise<void>\",\n \"description\": \"Resend email verification\"\n },\n {\n \"name\": \"authApi.verifyEmail\",\n \"signature\": \"(token: string) => Promise<{ message: string; user?: User }>\",\n \"description\": \"Verify email with a token\"\n },\n {\n \"name\": \"authApi.getSessions\",\n \"signature\": \"(customFetch?: typeof fetch) => Promise<{ sessions: Session[]; total: number }>\",\n \"description\": \"Get all active sessions\"\n },\n {\n \"name\": \"authApi.revokeSession\",\n \"signature\": \"(sessionId: string) => Promise<void>\",\n \"description\": \"Revoke a specific session\"\n },\n {\n \"name\": \"authApi.revokeAllSessions\",\n \"signature\": \"() => Promise<void>\",\n \"description\": \"Revoke all sessions except the current one\"\n },\n {\n \"name\": \"authApi.getApiKeys\",\n \"signature\": \"(customFetch?: typeof fetch) => Promise<{ apiKeys: ApiKey[] }>\",\n \"description\": \"Get all API keys\"\n },\n {\n \"name\": \"authApi.createApiKey\",\n \"signature\": \"(data: CreateApiKeyRequest) => Promise<CreateApiKeyResponse>\",\n \"description\": \"Create a new API key\"\n },\n {\n \"name\": \"authApi.revokeApiKey\",\n \"signature\": \"(keyId: string) => Promise<void>\",\n \"description\": \"Revoke an API key\"\n },\n {\n \"name\": \"authApi.updateApiKey\",\n \"signature\": \"(keyId: string, data: { name: string }) => Promise<void>\",\n \"description\": \"Update an API key's name\"\n },\n {\n \"name\": \"authApi.getMFAStatus\",\n \"signature\": \"() => Promise<MFAStatus>\",\n \"description\": \"Get MFA status for the current user\"\n },\n {\n \"name\": \"authApi.setupMFA\",\n \"signature\": \"() => Promise<MFASetupResponse>\",\n \"description\": \"Setup MFA (get QR code and backup codes)\"\n },\n {\n \"name\": \"authApi.verifyMFASetup\",\n \"signature\": \"(code: string) => Promise<void>\",\n \"description\": \"Verify MFA setup with a code\"\n },\n {\n \"name\": \"authApi.disableMFA\",\n \"signature\": \"(password: string) => Promise<void>\",\n \"description\": \"Disable MFA\"\n },\n {\n \"name\": \"authApi.verifyMFAChallenge\",\n \"signature\": \"(data: MFAChallengeData) => Promise<LoginResponse>\",\n \"description\": \"Verify MFA challenge during login\"\n },\n {\n \"name\": \"authApi.getDevices\",\n \"signature\": \"(customFetch?: typeof fetch) => Promise<{ devices: Device[] }>\",\n \"description\": \"Get all devices\"\n },\n {\n \"name\": \"authApi.trustDevice\",\n \"signature\": \"(deviceId: string) => Promise<void>\",\n \"description\": \"Trust a device\"\n },\n {\n \"name\": \"authApi.revokeDevice\",\n \"signature\": \"(deviceId: string) => Promise<void>\",\n \"description\": \"Revoke device trust\"\n },\n {\n \"name\": \"authApi.removeDevice\",\n \"signature\": \"(deviceId: string) => Promise<void>\",\n \"description\": \"Remove a device completely\"\n },\n {\n \"name\": \"authApi.approveDevice\",\n \"signature\": \"(token: string) => Promise<{ message: string; device?: Device }>\",\n \"description\": \"Approve a device with a token\"\n },\n {\n \"name\": \"authApi.blockDevice\",\n \"signature\": \"(token: string) => Promise<{ message: string; device?: Device }>\",\n \"description\": \"Block a device with a token\"\n },\n {\n \"name\": \"authApi.getPreferences\",\n \"signature\": \"(customFetch?: typeof fetch) => Promise<UserPreferences>\",\n \"description\": \"Get user preferences\"\n },\n {\n \"name\": \"authApi.updatePreferences\",\n \"signature\": \"(data: Partial<UserPreferences>) => Promise<void>\",\n \"description\": \"Update user preferences\"\n },\n {\n \"name\": \"authApi.getSSOAccounts\",\n \"signature\": \"(customFetch?: typeof fetch) => Promise<LinkedAccount[]>\",\n \"description\": \"Get SSO linked accounts\"\n },\n {\n \"name\": \"authApi.unlinkSSOAccount\",\n \"signature\": \"(provider: string, password?: string) => Promise<void>\",\n \"description\": \"Unlink an SSO account\"\n },\n {\n \"name\": \"authApi.linkSSOAccount\",\n \"signature\": \"(provider?: string) => Promise<void>\",\n \"description\": \"Link an SSO account (redirects to SSO provider)\"\n },\n {\n \"name\": \"authApi.getSecurityEvents\",\n \"signature\": \"(params?: { page?: number; limit?: number; type?: string }, customFetch?: typeof fetch) => Promise<{ events: SecurityEvent[]; pagination: Pagination }>\",\n \"description\": \"Get security event history\"\n },\n {\n \"name\": \"authApi.getApiKey\",\n \"signature\": \"(keyId: string, customFetch?: typeof fetch) => Promise<ApiKey>\",\n \"description\": \"Get details for a specific API key\"\n },\n {\n \"name\": \"authApi.getMfaMethods\",\n \"signature\": \"() => Promise<MfaMethodsStatus>\",\n \"description\": \"Get available MFA methods and their status\"\n },\n {\n \"name\": \"authApi.setupMfaMethod\",\n \"signature\": \"(method: 'totp' | 'email') => Promise<MfaMethodSetupResponse>\",\n \"description\": \"Setup a specific MFA method\"\n },\n {\n \"name\": \"authApi.verifyMfaMethod\",\n \"signature\": \"(method: 'totp' | 'email', code: string) => Promise<{ success: boolean; message: string; backupCodes?: string[] }>\",\n \"description\": \"Verify and enable a specific MFA method\"\n },\n {\n \"name\": \"authApi.disableMfaMethod\",\n \"signature\": \"(method: 'totp' | 'email', options: { password?: string; code?: string }) => Promise<void>\",\n \"description\": \"Disable a specific MFA method\"\n },\n {\n \"name\": \"authApi.sendMfaEmailCode\",\n \"signature\": \"() => Promise<{ success: boolean; email: string; message: string }>\",\n \"description\": \"Send MFA verification code via email\"\n },\n {\n \"name\": \"authApi.getSecurityOverview\",\n \"signature\": \"(customFetch?: typeof fetch) => Promise<SecurityOverview>\",\n \"description\": \"Get security overview with recent events and device counts\"\n },\n {\n \"name\": \"authApi.getSecuritySummary\",\n \"signature\": \"(customFetch?: typeof fetch) => Promise<SecuritySummary>\",\n \"description\": \"Get security summary with score and recommendations\"\n },\n {\n \"name\": \"authApi.getTrustedDevices\",\n \"signature\": \"(customFetch?: typeof fetch) => Promise<{ devices: Device[]; total: number }>\",\n \"description\": \"Get list of trusted devices\"\n }\n ]\n },\n \"service\": {\n \"description\": \"Auth service with automatic store updates\",\n \"functions\": [\n {\n \"name\": \"AuthService\",\n \"signature\": \"class\",\n \"description\": \"Service class that wraps auth API and updates stores automatically\",\n \"example\": \"import { authService } from '@classic-homes/auth/core';\\n\\n// Use the singleton instance\\nconst response = await authService.login({\\n username: 'user@example.com',\\n password: 'password'\\n});\\n\\n// Or create your own instance\\nconst service = new AuthService({ storeUpdate: myStoreUpdateFn });\"\n },\n {\n \"name\": \"authService\",\n \"signature\": \"AuthService\",\n \"description\": \"Singleton instance of AuthService\"\n }\n ],\n \"types\": [\n {\n \"name\": \"LoginOptions\",\n \"description\": \"Options for login operation\",\n \"properties\": [\n { \"name\": \"updateStore\", \"type\": \"boolean\", \"required\": false, \"description\": \"Whether to update auth store\" }\n ]\n },\n {\n \"name\": \"MFAVerifyOptions\",\n \"description\": \"Options for MFA verification\",\n \"properties\": [\n { \"name\": \"updateStore\", \"type\": \"boolean\", \"required\": false, \"description\": \"Whether to update auth store\" }\n ]\n }\n ]\n },\n \"guards\": {\n \"description\": \"Type guards for auth responses\",\n \"functions\": [\n {\n \"name\": \"isMfaChallengeResponse\",\n \"signature\": \"(response: LoginResponse) => boolean\",\n \"description\": \"Check if a login response requires MFA verification\",\n \"example\": \"import { authApi, isMfaChallengeResponse } from '@classic-homes/auth/core';\\n\\nconst response = await authApi.login(credentials);\\n\\nif (isMfaChallengeResponse(response)) {\\n // Redirect to MFA verification\\n const mfaToken = getMfaToken(response);\\n} else {\\n // Login complete\\n}\"\n },\n {\n \"name\": \"isLoginSuccessResponse\",\n \"signature\": \"(response: LoginResponse) => boolean\",\n \"description\": \"Check if a login response is a success (not MFA challenge)\"\n },\n {\n \"name\": \"getMfaToken\",\n \"signature\": \"(response: LoginResponse) => string | undefined\",\n \"description\": \"Extract MFA token from a login response\"\n },\n {\n \"name\": \"getAvailableMethods\",\n \"signature\": \"(response: LoginResponse) => string[]\",\n \"description\": \"Get available MFA methods from a login response\"\n }\n ]\n },\n \"jwt\": {\n \"description\": \"JWT token utilities\",\n \"functions\": [\n {\n \"name\": \"decodeJWT\",\n \"signature\": \"(token: string) => JWTPayload | null\",\n \"description\": \"Decode a JWT token without verification\",\n \"example\": \"import { decodeJWT, isTokenExpired } from '@classic-homes/auth/core';\\n\\nconst payload = decodeJWT(accessToken);\\nif (payload && !isTokenExpired(accessToken)) {\\n console.log('User ID:', payload.sub);\\n console.log('Expires:', new Date(payload.exp * 1000));\\n}\"\n },\n {\n \"name\": \"isTokenExpired\",\n \"signature\": \"(token: string) => boolean\",\n \"description\": \"Check if a JWT token is expired\"\n },\n {\n \"name\": \"getTokenRemainingTime\",\n \"signature\": \"(token: string) => number\",\n \"description\": \"Get remaining time in milliseconds until token expires\"\n },\n {\n \"name\": \"getTokenExpiration\",\n \"signature\": \"(token: string) => Date | null\",\n \"description\": \"Get the expiration date of a token\"\n },\n {\n \"name\": \"extractClaims\",\n \"signature\": \"<T extends object>(token: string) => T | null\",\n \"description\": \"Extract custom claims from a JWT token\"\n }\n ],\n \"types\": [\n {\n \"name\": \"JWTPayload\",\n \"description\": \"Standard JWT payload structure\",\n \"properties\": [\n { \"name\": \"sub\", \"type\": \"string\", \"required\": true, \"description\": \"Subject (user ID)\" },\n { \"name\": \"exp\", \"type\": \"number\", \"required\": true, \"description\": \"Expiration timestamp\" },\n { \"name\": \"iat\", \"type\": \"number\", \"required\": true, \"description\": \"Issued at timestamp\" },\n { \"name\": \"iss\", \"type\": \"string\", \"required\": false, \"description\": \"Issuer\" },\n { \"name\": \"aud\", \"type\": \"string | string[]\", \"required\": false, \"description\": \"Audience\" }\n ]\n }\n ]\n }\n },\n \"types\": [\n {\n \"name\": \"User\",\n \"description\": \"User information\",\n \"properties\": [\n { \"name\": \"id\", \"type\": \"string\", \"required\": true, \"description\": \"User ID\" },\n { \"name\": \"username\", \"type\": \"string\", \"required\": true, \"description\": \"Username\" },\n { \"name\": \"email\", \"type\": \"string\", \"required\": true, \"description\": \"Email address\" },\n { \"name\": \"firstName\", \"type\": \"string\", \"required\": false, \"description\": \"First name\" },\n { \"name\": \"lastName\", \"type\": \"string\", \"required\": false, \"description\": \"Last name\" },\n { \"name\": \"phone\", \"type\": \"string\", \"required\": false, \"description\": \"Phone number\" },\n { \"name\": \"role\", \"type\": \"string\", \"required\": true, \"description\": \"Primary role\" },\n { \"name\": \"roles\", \"type\": \"string[]\", \"required\": false, \"description\": \"All assigned roles\" },\n { \"name\": \"permissions\", \"type\": \"string[]\", \"required\": true, \"description\": \"User permissions\" },\n { \"name\": \"isActive\", \"type\": \"boolean\", \"required\": true, \"description\": \"Whether user is active\" },\n { \"name\": \"emailVerified\", \"type\": \"boolean\", \"required\": true, \"description\": \"Whether email is verified\" },\n { \"name\": \"authMethod\", \"type\": \"'password' | 'oauth' | 'both'\", \"required\": false, \"description\": \"Authentication method\" },\n { \"name\": \"ssoProfileUrl\", \"type\": \"string\", \"required\": false, \"description\": \"SSO profile URL\" },\n { \"name\": \"createdAt\", \"type\": \"string\", \"required\": true, \"description\": \"Creation timestamp\" },\n { \"name\": \"lastLoginAt\", \"type\": \"string\", \"required\": false, \"description\": \"Last login timestamp\" }\n ]\n },\n {\n \"name\": \"AuthState\",\n \"description\": \"Current authentication state\",\n \"properties\": [\n { \"name\": \"accessToken\", \"type\": \"string | null\", \"required\": true, \"description\": \"Current access token\" },\n { \"name\": \"refreshToken\", \"type\": \"string | null\", \"required\": true, \"description\": \"Current refresh token\" },\n { \"name\": \"user\", \"type\": \"User | null\", \"required\": true, \"description\": \"Current user\" },\n { \"name\": \"isAuthenticated\", \"type\": \"boolean\", \"required\": true, \"description\": \"Whether user is authenticated\" }\n ]\n },\n {\n \"name\": \"LoginCredentials\",\n \"description\": \"Login credentials\",\n \"properties\": [\n { \"name\": \"username\", \"type\": \"string\", \"required\": true, \"description\": \"Username or email\" },\n { \"name\": \"password\", \"type\": \"string\", \"required\": true, \"description\": \"Password\" }\n ]\n },\n {\n \"name\": \"LoginResponse\",\n \"description\": \"Response from login API\",\n \"properties\": [\n { \"name\": \"accessToken\", \"type\": \"string\", \"required\": true, \"description\": \"Access token\" },\n { \"name\": \"refreshToken\", \"type\": \"string\", \"required\": true, \"description\": \"Refresh token\" },\n { \"name\": \"sessionToken\", \"type\": \"string\", \"required\": false, \"description\": \"Session token\" },\n { \"name\": \"user\", \"type\": \"User\", \"required\": true, \"description\": \"User info\" },\n { \"name\": \"expiresIn\", \"type\": \"number\", \"required\": true, \"description\": \"Token expiration in seconds\" },\n { \"name\": \"requiresMFA\", \"type\": \"boolean\", \"required\": false, \"description\": \"Whether MFA is required\" },\n { \"name\": \"mfaToken\", \"type\": \"string\", \"required\": false, \"description\": \"MFA challenge token\" },\n { \"name\": \"availableMethods\", \"type\": \"string[]\", \"required\": false, \"description\": \"Available MFA methods\" }\n ]\n },\n {\n \"name\": \"Session\",\n \"description\": \"User session information\",\n \"properties\": [\n { \"name\": \"id\", \"type\": \"string\", \"required\": true, \"description\": \"Session ID\" },\n { \"name\": \"deviceName\", \"type\": \"string\", \"required\": true, \"description\": \"Device name\" },\n { \"name\": \"browser\", \"type\": \"string\", \"required\": true, \"description\": \"Browser info\" },\n { \"name\": \"location\", \"type\": \"string\", \"required\": true, \"description\": \"Location\" },\n { \"name\": \"ipAddress\", \"type\": \"string\", \"required\": true, \"description\": \"IP address\" },\n { \"name\": \"lastActivity\", \"type\": \"string\", \"required\": true, \"description\": \"Last activity timestamp\" },\n { \"name\": \"isCurrent\", \"type\": \"boolean\", \"required\": true, \"description\": \"Whether this is the current session\" },\n { \"name\": \"isTrusted\", \"type\": \"boolean\", \"required\": true, \"description\": \"Whether device is trusted\" },\n { \"name\": \"createdAt\", \"type\": \"string\", \"required\": true, \"description\": \"Session creation time\" },\n { \"name\": \"expiresAt\", \"type\": \"string\", \"required\": true, \"description\": \"Session expiration time\" }\n ]\n },\n {\n \"name\": \"Device\",\n \"description\": \"Device information\",\n \"properties\": [\n { \"name\": \"id\", \"type\": \"string\", \"required\": true, \"description\": \"Device ID\" },\n { \"name\": \"deviceFingerprint\", \"type\": \"string\", \"required\": true, \"description\": \"Device fingerprint\" },\n { \"name\": \"deviceName\", \"type\": \"string\", \"required\": true, \"description\": \"Device name\" },\n { \"name\": \"trusted\", \"type\": \"boolean\", \"required\": true, \"description\": \"Whether device is trusted\" },\n { \"name\": \"status\", \"type\": \"'active' | 'revoked'\", \"required\": true, \"description\": \"Device status\" },\n { \"name\": \"lastSeen\", \"type\": \"string | null\", \"required\": false, \"description\": \"Last seen timestamp\" },\n { \"name\": \"createdAt\", \"type\": \"string\", \"required\": true, \"description\": \"Creation timestamp\" }\n ]\n },\n {\n \"name\": \"ApiKey\",\n \"description\": \"API key information\",\n \"properties\": [\n { \"name\": \"id\", \"type\": \"string\", \"required\": true, \"description\": \"API key ID\" },\n { \"name\": \"name\", \"type\": \"string\", \"required\": true, \"description\": \"Key name\" },\n { \"name\": \"description\", \"type\": \"string\", \"required\": false, \"description\": \"Key description\" },\n { \"name\": \"keyPreview\", \"type\": \"string\", \"required\": true, \"description\": \"Partial key preview\" },\n { \"name\": \"permissions\", \"type\": \"string[]\", \"required\": true, \"description\": \"Key permissions\" },\n { \"name\": \"isActive\", \"type\": \"boolean\", \"required\": true, \"description\": \"Whether key is active\" },\n { \"name\": \"expiresAt\", \"type\": \"string | null\", \"required\": false, \"description\": \"Expiration date\" },\n { \"name\": \"lastUsedAt\", \"type\": \"string | null\", \"required\": false, \"description\": \"Last used timestamp\" },\n { \"name\": \"createdAt\", \"type\": \"string\", \"required\": true, \"description\": \"Creation timestamp\" }\n ]\n },\n {\n \"name\": \"MFASetupResponse\",\n \"description\": \"MFA setup response with QR code and backup codes\",\n \"properties\": [\n { \"name\": \"qrCodeUrl\", \"type\": \"string\", \"required\": true, \"description\": \"QR code image URL\" },\n { \"name\": \"manualEntryKey\", \"type\": \"string\", \"required\": true, \"description\": \"Manual entry key for authenticator apps\" },\n { \"name\": \"backupCodes\", \"type\": \"string[]\", \"required\": true, \"description\": \"One-time backup codes\" },\n { \"name\": \"instructions\", \"type\": \"object\", \"required\": true, \"description\": \"Setup instructions\" }\n ]\n },\n {\n \"name\": \"MFAStatus\",\n \"description\": \"MFA status for user\",\n \"properties\": [\n { \"name\": \"enabled\", \"type\": \"boolean\", \"required\": true, \"description\": \"Whether MFA is enabled\" },\n { \"name\": \"setupRequired\", \"type\": \"boolean\", \"required\": true, \"description\": \"Whether MFA setup is required\" }\n ]\n },\n {\n \"name\": \"MfaMethodsStatus\",\n \"description\": \"Available MFA methods and their status\",\n \"properties\": [\n { \"name\": \"methods\", \"type\": \"{ totp: { enabled: boolean; configured: boolean }; email: { enabled: boolean; configured: boolean } }\", \"required\": true, \"description\": \"Status of each MFA method\" },\n { \"name\": \"mfaRequired\", \"type\": \"boolean\", \"required\": true, \"description\": \"Whether MFA is required overall\" }\n ]\n },\n {\n \"name\": \"MfaMethodSetupResponse\",\n \"description\": \"Response from MFA method setup\",\n \"properties\": [\n { \"name\": \"method\", \"type\": \"'totp' | 'email'\", \"required\": true, \"description\": \"MFA method being set up\" },\n { \"name\": \"qrCodeUrl\", \"type\": \"string\", \"required\": false, \"description\": \"QR code URL for TOTP\" },\n { \"name\": \"manualEntryKey\", \"type\": \"string\", \"required\": false, \"description\": \"Manual entry key for TOTP\" },\n { \"name\": \"backupCodes\", \"type\": \"string[]\", \"required\": false, \"description\": \"Backup codes for TOTP\" },\n { \"name\": \"email\", \"type\": \"string\", \"required\": false, \"description\": \"Masked email for email method\" },\n { \"name\": \"message\", \"type\": \"string\", \"required\": false, \"description\": \"Status message\" }\n ]\n },\n {\n \"name\": \"SecurityOverview\",\n \"description\": \"Security overview for the user\",\n \"properties\": [\n { \"name\": \"overview\", \"type\": \"{ trustedDevicesCount: number; recentEventsCount: number }\", \"required\": true, \"description\": \"Security counts\" },\n { \"name\": \"recentEvents\", \"type\": \"SecurityEvent[]\", \"required\": true, \"description\": \"Recent security events\" },\n { \"name\": \"devicesEndpoint\", \"type\": \"string\", \"required\": true, \"description\": \"Endpoint for device management\" }\n ]\n },\n {\n \"name\": \"SecuritySummary\",\n \"description\": \"Security summary with score and recommendations\",\n \"properties\": [\n { \"name\": \"mfa\", \"type\": \"{ enabled: boolean; recommended: boolean }\", \"required\": true, \"description\": \"MFA status\" },\n { \"name\": \"devices\", \"type\": \"{ total: number; trusted: number; untrusted: number }\", \"required\": true, \"description\": \"Device counts\" },\n { \"name\": \"recentActivity\", \"type\": \"{ period: string; events: Record<string, number>; totalEvents: number }\", \"required\": true, \"description\": \"Recent activity summary\" },\n { \"name\": \"securityScore\", \"type\": \"{ score: number; level: string; recommendations: string[] }\", \"required\": true, \"description\": \"Security score and recommendations\" }\n ]\n },\n {\n \"name\": \"MFAChallengeData\",\n \"description\": \"Data for MFA challenge verification\",\n \"properties\": [\n { \"name\": \"mfaToken\", \"type\": \"string\", \"required\": true, \"description\": \"MFA challenge token from login\" },\n { \"name\": \"code\", \"type\": \"string\", \"required\": true, \"description\": \"MFA code from authenticator\" },\n { \"name\": \"method\", \"type\": \"'totp' | 'email' | 'backup'\", \"required\": false, \"description\": \"MFA method\" },\n { \"name\": \"trustDevice\", \"type\": \"boolean\", \"required\": false, \"description\": \"Whether to trust this device\" }\n ]\n },\n {\n \"name\": \"UserPreferences\",\n \"description\": \"User preference settings\",\n \"properties\": [\n { \"name\": \"emailNotifications\", \"type\": \"boolean\", \"required\": true, \"description\": \"Email notifications enabled\" },\n { \"name\": \"securityAlerts\", \"type\": \"boolean\", \"required\": true, \"description\": \"Security alerts enabled\" },\n { \"name\": \"loginNotifications\", \"type\": \"boolean\", \"required\": true, \"description\": \"Login notifications enabled\" },\n { \"name\": \"suspiciousActivityAlerts\", \"type\": \"boolean\", \"required\": true, \"description\": \"Suspicious activity alerts\" },\n { \"name\": \"passwordChangeNotifications\", \"type\": \"boolean\", \"required\": true, \"description\": \"Password change notifications\" },\n { \"name\": \"mfaChangeNotifications\", \"type\": \"boolean\", \"required\": true, \"description\": \"MFA change notifications\" },\n { \"name\": \"accountUpdates\", \"type\": \"boolean\", \"required\": true, \"description\": \"Account updates enabled\" },\n { \"name\": \"systemMaintenance\", \"type\": \"boolean\", \"required\": true, \"description\": \"System maintenance notifications\" },\n { \"name\": \"featureAnnouncements\", \"type\": \"boolean\", \"required\": true, \"description\": \"Feature announcements\" },\n { \"name\": \"newsAndUpdates\", \"type\": \"boolean\", \"required\": true, \"description\": \"News and updates\" },\n { \"name\": \"apiKeyExpiration\", \"type\": \"boolean\", \"required\": true, \"description\": \"API key expiration alerts\" },\n { \"name\": \"apiUsageAlerts\", \"type\": \"boolean\", \"required\": true, \"description\": \"API usage alerts\" },\n { \"name\": \"rateLimit\", \"type\": \"boolean\", \"required\": true, \"description\": \"Rate limit notifications\" },\n { \"name\": \"dataExportReady\", \"type\": \"boolean\", \"required\": true, \"description\": \"Data export ready notifications\" },\n { \"name\": \"reportGeneration\", \"type\": \"boolean\", \"required\": true, \"description\": \"Report generation notifications\" },\n { \"name\": \"theme\", \"type\": \"'light' | 'dark' | 'system'\", \"required\": true, \"description\": \"UI theme preference\" },\n { \"name\": \"language\", \"type\": \"string\", \"required\": true, \"description\": \"Language preference\" },\n { \"name\": \"timezone\", \"type\": \"string\", \"required\": true, \"description\": \"Timezone preference\" },\n { \"name\": \"dateFormat\", \"type\": \"string\", \"required\": true, \"description\": \"Date format preference\" },\n { \"name\": \"timeFormat\", \"type\": \"'12h' | '24h'\", \"required\": true, \"description\": \"Time format preference\" },\n { \"name\": \"advancedSettings\", \"type\": \"Record<string, any> | null\", \"required\": false, \"description\": \"Advanced settings\" }\n ]\n },\n {\n \"name\": \"LinkedAccount\",\n \"description\": \"SSO linked account\",\n \"properties\": [\n { \"name\": \"id\", \"type\": \"string\", \"required\": true, \"description\": \"Account ID\" },\n { \"name\": \"provider\", \"type\": \"string\", \"required\": true, \"description\": \"SSO provider name\" },\n { \"name\": \"providerAccountId\", \"type\": \"string\", \"required\": true, \"description\": \"Provider account ID\" },\n { \"name\": \"providerEmail\", \"type\": \"string | null\", \"required\": false, \"description\": \"Provider email\" },\n { \"name\": \"isPrimary\", \"type\": \"boolean\", \"required\": true, \"description\": \"Whether this is primary account\" },\n { \"name\": \"isVerified\", \"type\": \"boolean\", \"required\": true, \"description\": \"Whether account is verified\" },\n { \"name\": \"createdAt\", \"type\": \"string\", \"required\": true, \"description\": \"Link creation time\" }\n ]\n },\n {\n \"name\": \"SecurityEvent\",\n \"description\": \"Security event log entry\",\n \"properties\": [\n { \"name\": \"id\", \"type\": \"string\", \"required\": true, \"description\": \"Event ID\" },\n { \"name\": \"eventType\", \"type\": \"string\", \"required\": true, \"description\": \"Event type\" },\n { \"name\": \"description\", \"type\": \"string\", \"required\": true, \"description\": \"Event description\" },\n { \"name\": \"severity\", \"type\": \"'low' | 'medium' | 'high'\", \"required\": true, \"description\": \"Event severity\" },\n { \"name\": \"ipAddress\", \"type\": \"string\", \"required\": false, \"description\": \"Source IP address\" },\n { \"name\": \"createdAt\", \"type\": \"string\", \"required\": true, \"description\": \"Event timestamp\" }\n ]\n }\n ]\n },\n \"svelte\": {\n \"importPath\": \"@classic-homes/auth/svelte\",\n \"description\": \"Svelte-specific bindings for authentication. Includes reactive stores and route guards.\",\n \"modules\": {\n \"stores\": {\n \"description\": \"Reactive Svelte stores for auth state\",\n \"functions\": [\n {\n \"name\": \"authStore\",\n \"signature\": \"Writable<AuthState>\",\n \"description\": \"Main auth store containing current auth state\",\n \"example\": \"import { authStore } from '@classic-homes/auth/svelte';\\n\\n// Subscribe to auth state changes\\nauthStore.subscribe(state => {\\n console.log('Authenticated:', state.isAuthenticated);\\n console.log('User:', state.user);\\n});\\n\\n// In Svelte component\\n<script>\\n import { authStore } from '@classic-homes/auth/svelte';\\n</script>\\n\\n{#if $authStore.isAuthenticated}\\n <p>Welcome, {$authStore.user.firstName}!</p>\\n{/if}\"\n },\n {\n \"name\": \"isAuthenticated\",\n \"signature\": \"Readable<boolean>\",\n \"description\": \"Derived store for authentication status\",\n \"example\": \"import { isAuthenticated } from '@classic-homes/auth/svelte';\\n\\n// In Svelte component\\n{#if $isAuthenticated}\\n <Dashboard />\\n{:else}\\n <LoginForm />\\n{/if}\"\n },\n {\n \"name\": \"currentUser\",\n \"signature\": \"Readable<User | null>\",\n \"description\": \"Derived store for current user\"\n },\n {\n \"name\": \"authActions\",\n \"signature\": \"{ login, logout, refreshToken, updateUser, clearAuth }\",\n \"description\": \"Auth action functions that update the store\",\n \"example\": \"import { authActions } from '@classic-homes/auth/svelte';\\n\\nasync function handleLogin(credentials) {\\n const response = await authActions.login(credentials);\\n if (response.requiresMFA) {\\n // Handle MFA\\n }\\n}\\n\\nfunction handleLogout() {\\n await authActions.logout();\\n}\"\n }\n ]\n },\n \"guards\": {\n \"description\": \"SvelteKit route guards for protected pages\",\n \"functions\": [\n {\n \"name\": \"checkAuth\",\n \"signature\": \"(fetch: typeof fetch) => Promise<AuthGuardResult>\",\n \"description\": \"Check authentication status\",\n \"example\": \"import { checkAuth } from '@classic-homes/auth/svelte';\\n\\nexport const load = async ({ fetch }) => {\\n const auth = await checkAuth(fetch);\\n return { user: auth.user };\\n};\"\n },\n {\n \"name\": \"requireAuth\",\n \"signature\": \"(options?: AuthGuardOptions) => (event: LoadEvent) => Promise<AuthGuardResult>\",\n \"description\": \"Guard that requires authentication\",\n \"example\": \"import { requireAuth } from '@classic-homes/auth/svelte';\\n\\nexport const load = requireAuth({\\n redirectTo: '/login'\\n});\"\n },\n {\n \"name\": \"requireRole\",\n \"signature\": \"(roles: string | string[], options?: AuthGuardOptions) => (event: LoadEvent) => Promise<AuthGuardResult>\",\n \"description\": \"Guard that requires specific role(s)\",\n \"example\": \"import { requireRole } from '@classic-homes/auth/svelte';\\n\\n// Single role\\nexport const load = requireRole('admin');\\n\\n// Multiple roles (any match)\\nexport const load = requireRole(['admin', 'manager']);\"\n },\n {\n \"name\": \"requirePermission\",\n \"signature\": \"(permissions: string | string[], options?: AuthGuardOptions) => (event: LoadEvent) => Promise<AuthGuardResult>\",\n \"description\": \"Guard that requires specific permission(s)\",\n \"example\": \"import { requirePermission } from '@classic-homes/auth/svelte';\\n\\nexport const load = requirePermission('users:write');\"\n },\n {\n \"name\": \"protectedLoad\",\n \"signature\": \"<T>(loadFn: (event: LoadEvent, auth: AuthGuardResult) => Promise<T>, options?: AuthGuardOptions) => (event: LoadEvent) => Promise<T>\",\n \"description\": \"Wrapper for load functions that require auth\",\n \"example\": \"import { protectedLoad } from '@classic-homes/auth/svelte';\\n\\nexport const load = protectedLoad(async (event, auth) => {\\n // Auth is guaranteed to be valid here\\n const data = await fetchUserData(event.fetch, auth.user.id);\\n return { user: auth.user, data };\\n});\"\n },\n {\n \"name\": \"createAuthGuard\",\n \"signature\": \"(checkFn: (auth: AuthGuardResult) => boolean, options?: AuthGuardOptions) => (event: LoadEvent) => Promise<AuthGuardResult>\",\n \"description\": \"Create a custom auth guard with your own check function\"\n }\n ],\n \"types\": [\n {\n \"name\": \"AuthGuardOptions\",\n \"description\": \"Options for auth guards\",\n \"properties\": [\n { \"name\": \"redirectTo\", \"type\": \"string\", \"required\": false, \"description\": \"URL to redirect to if auth fails (default: '/login')\" },\n { \"name\": \"returnTo\", \"type\": \"boolean\", \"required\": false, \"description\": \"Whether to include return URL in redirect\" }\n ]\n },\n {\n \"name\": \"AuthGuardResult\",\n \"description\": \"Result from auth guard check\",\n \"properties\": [\n { \"name\": \"authenticated\", \"type\": \"boolean\", \"required\": true, \"description\": \"Whether user is authenticated\" },\n { \"name\": \"user\", \"type\": \"User | null\", \"required\": true, \"description\": \"Current user if authenticated\" }\n ]\n }\n ]\n }\n }\n },\n \"testing\": {\n \"importPath\": \"@classic-homes/auth/testing\",\n \"description\": \"Test utilities for the auth package. Provides mocks, fixtures, and helpers for testing authentication flows.\",\n \"modules\": {\n \"fixtures\": {\n \"description\": \"Pre-built test fixtures for users, tokens, and responses\",\n \"functions\": [\n {\n \"name\": \"mockUser\",\n \"signature\": \"User\",\n \"description\": \"Standard test user fixture\"\n },\n {\n \"name\": \"mockAdminUser\",\n \"signature\": \"User\",\n \"description\": \"Admin user fixture with elevated permissions\"\n },\n {\n \"name\": \"mockSSOUser\",\n \"signature\": \"User\",\n \"description\": \"SSO-authenticated user fixture\"\n },\n {\n \"name\": \"mockMFAUser\",\n \"signature\": \"User\",\n \"description\": \"User with MFA enabled\"\n },\n {\n \"name\": \"mockUnverifiedUser\",\n \"signature\": \"User\",\n \"description\": \"User with unverified email\"\n },\n {\n \"name\": \"mockInactiveUser\",\n \"signature\": \"User\",\n \"description\": \"Inactive/disabled user\"\n },\n {\n \"name\": \"createMockUser\",\n \"signature\": \"(overrides?: Partial<User>) => User\",\n \"description\": \"Create a custom mock user\"\n },\n {\n \"name\": \"createMockUserWithRoles\",\n \"signature\": \"(roles: string[], permissions?: string[]) => User\",\n \"description\": \"Create a user with specific roles\"\n },\n {\n \"name\": \"mockAccessToken\",\n \"signature\": \"string\",\n \"description\": \"Valid mock access token\"\n },\n {\n \"name\": \"mockRefreshToken\",\n \"signature\": \"string\",\n \"description\": \"Valid mock refresh token\"\n },\n {\n \"name\": \"mockExpiredToken\",\n \"signature\": \"string\",\n \"description\": \"Expired token for testing\"\n },\n {\n \"name\": \"mockMFAToken\",\n \"signature\": \"string\",\n \"description\": \"MFA challenge token\"\n },\n {\n \"name\": \"createMockJWT\",\n \"signature\": \"(payload?: JWTPayloadOptions) => string\",\n \"description\": \"Create a custom mock JWT\"\n },\n {\n \"name\": \"mockLoginSuccess\",\n \"signature\": \"LoginResponse\",\n \"description\": \"Successful login response\"\n },\n {\n \"name\": \"mockMFARequired\",\n \"signature\": \"LoginResponse\",\n \"description\": \"Login response requiring MFA\"\n },\n {\n \"name\": \"mockMFASetup\",\n \"signature\": \"MFASetupResponse\",\n \"description\": \"MFA setup response with QR code\"\n },\n {\n \"name\": \"mockSessions\",\n \"signature\": \"Session[]\",\n \"description\": \"Array of mock sessions\"\n },\n {\n \"name\": \"mockDevices\",\n \"signature\": \"Device[]\",\n \"description\": \"Array of mock devices\"\n },\n {\n \"name\": \"mockApiKeys\",\n \"signature\": \"ApiKey[]\",\n \"description\": \"Array of mock API keys\"\n },\n {\n \"name\": \"mockSecurityEvents\",\n \"signature\": \"SecurityEvent[]\",\n \"description\": \"Array of mock security events\"\n },\n {\n \"name\": \"mockUserPreferences\",\n \"signature\": \"UserPreferences\",\n \"description\": \"Mock user preferences\"\n }\n ]\n },\n \"mocks\": {\n \"description\": \"Mock implementations for testing\",\n \"functions\": [\n {\n \"name\": \"MockStorageAdapter\",\n \"signature\": \"class\",\n \"description\": \"Mock storage adapter with call tracking\",\n \"example\": \"import { MockStorageAdapter, createMockStorage } from '@classic-homes/auth/testing';\\n\\nconst storage = createMockStorage();\\n\\n// Use in auth init\\ninitAuth({ baseUrl: 'https://api.test', storage });\\n\\n// Assert calls\\nexpect(storage.getCalls('setItem')).toHaveLength(2);\"\n },\n {\n \"name\": \"createMockStorage\",\n \"signature\": \"(options?: MockStorageOptions) => MockStorageAdapter\",\n \"description\": \"Create a mock storage adapter\"\n },\n {\n \"name\": \"createMockStorageWithAuth\",\n \"signature\": \"(tokens?: { accessToken?: string; refreshToken?: string }) => MockStorageAdapter\",\n \"description\": \"Create storage pre-populated with auth tokens\"\n },\n {\n \"name\": \"MockFetchInstance\",\n \"signature\": \"class\",\n \"description\": \"Mock fetch implementation with route handling\",\n \"example\": \"import { createMockFetch, mockLoginSuccess } from '@classic-homes/auth/testing';\\n\\nconst mockFetch = createMockFetch();\\nmockFetch.addRoute('POST', '/auth/login', { data: mockLoginSuccess });\\n\\n// Use in auth init\\ninitAuth({ baseUrl: 'https://api.test', fetch: mockFetch.fetch });\\n\\n// Assert calls\\nmockFetch.assertCalled('/auth/login');\\nmockFetch.assertCalledWith('/auth/login', { body: { username: 'test' } });\"\n },\n {\n \"name\": \"createMockFetch\",\n \"signature\": \"(options?: MockFetchOptions) => MockFetchInstance\",\n \"description\": \"Create a mock fetch instance\"\n },\n {\n \"name\": \"createMockFetchWithRoutes\",\n \"signature\": \"(routes: MockRoute[]) => MockFetchInstance\",\n \"description\": \"Create mock fetch with pre-configured routes\"\n },\n {\n \"name\": \"MockAuthStore\",\n \"signature\": \"class\",\n \"description\": \"Mock auth store for Svelte testing\"\n },\n {\n \"name\": \"createMockAuthStore\",\n \"signature\": \"(options?: MockAuthStoreOptions) => MockAuthStore\",\n \"description\": \"Create a mock auth store\"\n },\n {\n \"name\": \"createAuthenticatedMockStore\",\n \"signature\": \"(user?: User) => MockAuthStore\",\n \"description\": \"Create a mock store in authenticated state\"\n }\n ]\n },\n \"helpers\": {\n \"description\": \"Test setup and assertion helpers\",\n \"functions\": [\n {\n \"name\": \"setupTestAuth\",\n \"signature\": \"(options?: SetupTestAuthOptions) => TestAuthContext\",\n \"description\": \"Complete test setup with all mocks configured\",\n \"example\": \"import { describe, it, beforeEach, afterEach } from 'vitest';\\nimport { setupTestAuth, mockUser, assertAuthenticated } from '@classic-homes/auth/testing';\\nimport { authService } from '@classic-homes/auth/core';\\n\\ndescribe('Auth', () => {\\n let ctx: TestAuthContext;\\n\\n beforeEach(() => {\\n ctx = setupTestAuth();\\n });\\n\\n afterEach(() => ctx.cleanup());\\n\\n it('handles login', async () => {\\n const response = await authService.login({\\n username: 'test@example.com',\\n password: 'password'\\n });\\n\\n assertAuthenticated(ctx.mockStore);\\n ctx.mockFetch.assertCalled('/auth/login');\\n });\\n});\"\n },\n {\n \"name\": \"quickSetupAuth\",\n \"signature\": \"() => { cleanup: () => void }\",\n \"description\": \"Minimal setup for quick tests\"\n },\n {\n \"name\": \"withTestAuth\",\n \"signature\": \"(testFn: (ctx: TestAuthContext) => Promise<void>) => () => Promise<void>\",\n \"description\": \"Wrapper that handles setup and cleanup\"\n },\n {\n \"name\": \"authScenarios\",\n \"signature\": \"{ authenticated, unauthenticated, mfaRequired, tokenExpired, ... }\",\n \"description\": \"Pre-configured test scenarios\"\n },\n {\n \"name\": \"applyScenario\",\n \"signature\": \"(ctx: TestAuthContext, scenario: AuthScenario) => void\",\n \"description\": \"Apply a test scenario to the context\"\n },\n {\n \"name\": \"configureMFAFlow\",\n \"signature\": \"(mockFetch: MockFetchInstance) => void\",\n \"description\": \"Configure mock fetch for MFA flow testing\"\n },\n {\n \"name\": \"configureTokenRefresh\",\n \"signature\": \"(mockFetch: MockFetchInstance) => void\",\n \"description\": \"Configure mock fetch for token refresh testing\"\n },\n {\n \"name\": \"configureSSOLogout\",\n \"signature\": \"(mockFetch: MockFetchInstance) => void\",\n \"description\": \"Configure mock fetch for SSO logout flow\"\n },\n {\n \"name\": \"assertAuthenticated\",\n \"signature\": \"(store: MockAuthStore) => void\",\n \"description\": \"Assert that store is in authenticated state\"\n },\n {\n \"name\": \"assertUnauthenticated\",\n \"signature\": \"(store: MockAuthStore) => void\",\n \"description\": \"Assert that store is in unauthenticated state\"\n },\n {\n \"name\": \"assertHasPermissions\",\n \"signature\": \"(store: MockAuthStore, permissions: string[]) => void\",\n \"description\": \"Assert user has specific permissions\"\n },\n {\n \"name\": \"assertHasRoles\",\n \"signature\": \"(store: MockAuthStore, roles: string[]) => void\",\n \"description\": \"Assert user has specific roles\"\n },\n {\n \"name\": \"assertTokenValid\",\n \"signature\": \"(token: string) => void\",\n \"description\": \"Assert token is valid and not expired\"\n },\n {\n \"name\": \"assertTokenExpired\",\n \"signature\": \"(token: string) => void\",\n \"description\": \"Assert token is expired\"\n },\n {\n \"name\": \"assertRequiresMFA\",\n \"signature\": \"(response: LoginResponse) => void\",\n \"description\": \"Assert login response requires MFA\"\n },\n {\n \"name\": \"assertApiCalled\",\n \"signature\": \"(mockFetch: MockFetchInstance, endpoint: string, options?: AssertApiCalledOptions) => void\",\n \"description\": \"Assert API endpoint was called\"\n }\n ],\n \"types\": [\n {\n \"name\": \"TestAuthContext\",\n \"description\": \"Context returned from setupTestAuth\",\n \"properties\": [\n { \"name\": \"mockFetch\", \"type\": \"MockFetchInstance\", \"required\": true, \"description\": \"Mock fetch instance\" },\n { \"name\": \"mockStorage\", \"type\": \"MockStorageAdapter\", \"required\": true, \"description\": \"Mock storage adapter\" },\n { \"name\": \"mockStore\", \"type\": \"MockAuthStore\", \"required\": true, \"description\": \"Mock auth store\" },\n { \"name\": \"cleanup\", \"type\": \"() => void\", \"required\": true, \"description\": \"Cleanup function\" }\n ]\n },\n {\n \"name\": \"SetupTestAuthOptions\",\n \"description\": \"Options for setupTestAuth\",\n \"properties\": [\n { \"name\": \"authenticated\", \"type\": \"boolean\", \"required\": false, \"description\": \"Start in authenticated state\" },\n { \"name\": \"user\", \"type\": \"User\", \"required\": false, \"description\": \"User for authenticated state\" },\n { \"name\": \"tokens\", \"type\": \"object\", \"required\": false, \"description\": \"Tokens for authenticated state\" }\n ]\n }\n ]\n }\n }\n }\n }\n}\n","/**\n * MCP Resources Registration\n *\n * Resources provide read-only access to design system documentation.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { registerComponentResources } from './components.js';\nimport { registerTokenResources } from './tokens.js';\nimport { registerLayoutResources } from './layouts.js';\nimport { registerSchemaResources } from './schemas.js';\nimport { registerAuthResources } from './auth.js';\n\n/**\n * Register all resources with the MCP server\n */\nexport function registerResources(server: McpServer): void {\n registerComponentResources(server);\n registerTokenResources(server);\n registerLayoutResources(server);\n registerSchemaResources(server);\n registerAuthResources(server);\n}\n","/**\n * Search Components Tool\n *\n * Allows AI models to search for components by name, category, or functionality.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\nimport componentCatalog from '../data/component-catalog.json' with { type: 'json' };\nimport type { ComponentCatalog } from '../types.js';\n\nconst catalog = componentCatalog as ComponentCatalog;\n\nconst SearchComponentsSchema = z.object({\n query: z.string().describe('Search query (component name, description, or functionality)'),\n category: z\n .enum([\n 'core',\n 'form',\n 'layout',\n 'feedback',\n 'data',\n 'overlay',\n 'navigation',\n 'branding',\n 'chart',\n ])\n .optional()\n .describe('Filter by component category'),\n limit: z.number().min(1).max(50).default(10).describe('Maximum number of results'),\n});\n\n/**\n * Register the search_components tool\n */\nexport function registerSearchComponentsTool(server: McpServer): void {\n server.tool(\n 'search_components',\n 'Search for components by name, category, or functionality',\n SearchComponentsSchema.shape,\n async (params) => {\n const { query, category, limit } = SearchComponentsSchema.parse(params);\n const queryLower = query.toLowerCase().trim();\n\n // Check for wildcard or \"list all\" queries\n const isListAll =\n queryLower === '*' ||\n queryLower === 'all' ||\n queryLower === '' ||\n queryLower === 'list' ||\n queryLower === 'list all';\n\n // Split query into words for multi-word search (supports \"form input\" matching components with both words)\n const queryWords = queryLower.split(/\\s+/).filter((word) => word.length > 0);\n\n const results = catalog.components\n .filter((component) => {\n // Category filter\n if (category && component.category !== category) {\n return false;\n }\n\n // If listing all, include everything (respecting category filter)\n if (isListAll) {\n return true;\n }\n\n // Search in name, description, props, and related components\n const searchableText = [\n component.name,\n component.description,\n ...component.props.map((p) => p.name),\n ...component.props.map((p) => p.description),\n ...component.relatedComponents,\n component.category,\n ]\n .join(' ')\n .toLowerCase();\n\n // For multi-word queries, check if ANY word matches (OR logic)\n // This allows \"form input\" to find Input (form category) or FormField\n if (queryWords.length > 1) {\n return queryWords.some((word) => searchableText.includes(word));\n }\n\n // Single word: exact substring match\n return searchableText.includes(queryLower);\n })\n // Sort by relevance: exact name match first, then partial name match, then others\n .sort((a, b) => {\n const aNameLower = a.name.toLowerCase();\n const bNameLower = b.name.toLowerCase();\n\n // Exact name match gets highest priority\n const aExactMatch = queryWords.some((word) => aNameLower === word);\n const bExactMatch = queryWords.some((word) => bNameLower === word);\n if (aExactMatch && !bExactMatch) return -1;\n if (bExactMatch && !aExactMatch) return 1;\n\n // Name starts with query word gets second priority\n const aStartsWith = queryWords.some((word) => aNameLower.startsWith(word));\n const bStartsWith = queryWords.some((word) => bNameLower.startsWith(word));\n if (aStartsWith && !bStartsWith) return -1;\n if (bStartsWith && !aStartsWith) return 1;\n\n // Name contains query word gets third priority\n const aContains = queryWords.some((word) => aNameLower.includes(word));\n const bContains = queryWords.some((word) => bNameLower.includes(word));\n if (aContains && !bContains) return -1;\n if (bContains && !aContains) return 1;\n\n // Alphabetical as fallback\n return aNameLower.localeCompare(bNameLower);\n })\n .slice(0, limit)\n .map((c) => ({\n name: c.name,\n category: c.category,\n description: c.description,\n importPath: c.importPath,\n propsCount: c.props.length,\n variants: c.variants.map((v) => v.name),\n }));\n\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify(\n {\n query,\n category: category || 'all',\n resultCount: results.length,\n results,\n hint:\n results.length === 0\n ? 'Try broader search terms or remove the category filter'\n : results.length === limit\n ? `Showing first ${limit} results. Refine your search for more specific results.`\n : undefined,\n },\n null,\n 2\n ),\n },\n ],\n };\n }\n );\n}\n","/**\n * Get Component Props Tool\n *\n * Provides detailed prop definitions for a specific component.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\nimport componentCatalog from '../data/component-catalog.json' with { type: 'json' };\nimport type { ComponentCatalog } from '../types.js';\n\nconst catalog = componentCatalog as ComponentCatalog;\n\nconst GetComponentPropsSchema = z.object({\n componentName: z.string().describe('Name of the component (e.g., \"Button\", \"DashboardLayout\")'),\n includeExamples: z.boolean().default(true).describe('Whether to include usage examples'),\n});\n\n/**\n * Register the get_component_props tool\n */\nexport function registerGetComponentPropsTool(server: McpServer): void {\n server.tool(\n 'get_component_props',\n 'Get detailed prop definitions for a specific component',\n GetComponentPropsSchema.shape,\n async (params) => {\n const { componentName, includeExamples } = GetComponentPropsSchema.parse(params);\n\n const component = catalog.components.find(\n (c) => c.name.toLowerCase() === componentName.toLowerCase()\n );\n\n if (!component) {\n // Suggest similar components\n const suggestions = catalog.components\n .filter((c) => c.name.toLowerCase().includes(componentName.toLowerCase().slice(0, 3)))\n .slice(0, 5)\n .map((c) => c.name);\n\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify(\n {\n error: `Component \"${componentName}\" not found`,\n suggestions: suggestions.length > 0 ? suggestions : undefined,\n hint: 'Use search_components tool to find available components',\n },\n null,\n 2\n ),\n },\n ],\n };\n }\n\n const result: Record<string, unknown> = {\n name: component.name,\n description: component.description,\n category: component.category,\n importPath: component.importPath,\n props: component.props,\n variants: component.variants,\n slots: component.slots,\n events: component.events,\n accessibility: component.accessibility,\n relatedComponents: component.relatedComponents,\n };\n\n if (includeExamples) {\n result.examples = component.examples;\n }\n\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify(result, null, 2),\n },\n ],\n };\n }\n );\n}\n","/**\n * Suggest Pattern Tool\n *\n * Recommends patterns for common use cases.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\nimport patternLibrary from '../data/pattern-library.json' with { type: 'json' };\nimport type { PatternLibrary } from '../types.js';\n\nconst patterns = patternLibrary as unknown as PatternLibrary;\n\nconst SuggestPatternSchema = z.object({\n useCase: z\n .enum([\n // Layout patterns\n 'dashboard-page',\n 'public-page',\n 'auth-page',\n 'error-page',\n 'form-page',\n // Form patterns\n 'login-form',\n 'registration-form',\n 'contact-form',\n // MFA and password form patterns\n 'mfa-verification-form',\n 'mfa-setup-form',\n 'profile-update-form',\n 'change-password-form',\n 'forgot-password-form',\n 'reset-password-form',\n // Auth flow patterns\n 'login-with-mfa',\n 'sso-login',\n 'session-management',\n 'protected-route',\n ])\n .describe('The use case you need a pattern for'),\n requirements: z.array(z.string()).optional().describe('Additional requirements or constraints'),\n});\n\n/**\n * Register the suggest_pattern tool\n */\nexport function registerSuggestPatternTool(server: McpServer): void {\n server.tool(\n 'suggest_pattern',\n 'Get recommended patterns for common use cases',\n SuggestPatternSchema.shape,\n async (params) => {\n const { useCase, requirements } = SuggestPatternSchema.parse(params);\n\n // Find matching layout, form, or auth pattern\n const layout = patterns.layouts.find((l) => l.id === useCase || l.useCase === useCase);\n const form = patterns.forms.find((f) => f.id === useCase);\n const auth = patterns.auth?.find((a) => a.id === useCase);\n const pattern = layout || form || auth;\n\n if (!pattern) {\n // Suggest available patterns\n const availablePatterns = [\n ...patterns.layouts.map((l) => ({ id: l.id, type: 'layout', name: l.name })),\n ...patterns.forms.map((f) => ({ id: f.id, type: 'form', name: f.name })),\n ...(patterns.auth?.map((a) => ({ id: a.id, type: 'auth', name: a.name })) || []),\n ];\n\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify(\n {\n error: `No pattern found for use case \"${useCase}\"`,\n availablePatterns,\n hint: 'Use one of the available pattern IDs',\n },\n null,\n 2\n ),\n },\n ],\n };\n }\n\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify(\n {\n pattern,\n requirements: requirements || [],\n implementationTips: [\n 'Import components from @classic-homes/theme-svelte',\n 'Use the provided example as a starting point',\n 'Customize props based on your specific requirements',\n 'Follow accessibility guidelines in component documentation',\n ],\n },\n null,\n 2\n ),\n },\n ],\n };\n }\n );\n}\n","/**\n * Validate Usage Tool\n *\n * Validates if component usage follows design system guidelines.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\nimport componentCatalog from '../data/component-catalog.json' with { type: 'json' };\nimport type { ComponentCatalog } from '../types.js';\n\nconst catalog = componentCatalog as ComponentCatalog;\n\nconst ValidateUsageSchema = z.object({\n componentName: z.string().describe('Name of the component being used'),\n props: z.record(z.unknown()).describe('Props being passed to the component'),\n context: z\n .string()\n .optional()\n .describe('Where the component is being used (e.g., \"inside a form\", \"in modal\")'),\n});\n\ninterface ValidationIssue {\n type: 'error' | 'warning' | 'suggestion';\n message: string;\n prop?: string;\n}\n\n/**\n * Register the validate_usage tool\n */\nexport function registerValidateUsageTool(server: McpServer): void {\n server.tool(\n 'validate_component_usage',\n 'Validate if component usage follows design system guidelines',\n ValidateUsageSchema.shape,\n async (params) => {\n const { componentName, props, context } = ValidateUsageSchema.parse(params);\n\n const component = catalog.components.find(\n (c) => c.name.toLowerCase() === componentName.toLowerCase()\n );\n\n if (!component) {\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify(\n {\n valid: false,\n errors: [{ type: 'error', message: `Unknown component \"${componentName}\"` }],\n },\n null,\n 2\n ),\n },\n ],\n };\n }\n\n const issues: ValidationIssue[] = [];\n\n // Check for unknown props\n const knownProps = new Set(component.props.map((p) => p.name));\n for (const propName of Object.keys(props)) {\n if (!knownProps.has(propName) && propName !== 'class' && propName !== 'children') {\n issues.push({\n type: 'warning',\n message: `Unknown prop \"${propName}\" - not in component API`,\n prop: propName,\n });\n }\n }\n\n // Check for required props\n for (const propDef of component.props) {\n if (propDef.required && !(propDef.name in props)) {\n issues.push({\n type: 'error',\n message: `Missing required prop \"${propDef.name}\"`,\n prop: propDef.name,\n });\n }\n }\n\n // Check variant values\n for (const variant of component.variants) {\n const propValue = props[variant.name];\n if (propValue !== undefined && !variant.values.includes(String(propValue))) {\n issues.push({\n type: 'error',\n message: `Invalid value \"${propValue}\" for \"${variant.name}\". Valid values: ${variant.values.join(', ')}`,\n prop: variant.name,\n });\n }\n }\n\n // Context-specific suggestions\n if (context) {\n if (context.includes('form') && component.name === 'Button') {\n const buttonType = props['type'];\n if (!buttonType) {\n issues.push({\n type: 'suggestion',\n message: 'Consider setting type=\"submit\" for form submission buttons',\n prop: 'type',\n });\n }\n }\n\n if (context.includes('modal') || context.includes('dialog')) {\n if (component.category === 'layout') {\n issues.push({\n type: 'warning',\n message: `Layout component \"${component.name}\" is typically not used inside modals`,\n });\n }\n }\n }\n\n // Accessibility checks\n if (component.name === 'Button' && props['size'] === 'icon' && !props['aria-label']) {\n issues.push({\n type: 'error',\n message: 'Icon-only buttons must have an aria-label for accessibility',\n prop: 'aria-label',\n });\n }\n\n const errors = issues.filter((i) => i.type === 'error');\n const warnings = issues.filter((i) => i.type === 'warning');\n const suggestions = issues.filter((i) => i.type === 'suggestion');\n\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify(\n {\n valid: errors.length === 0,\n component: component.name,\n errors,\n warnings,\n suggestions,\n propCount: Object.keys(props).length,\n availableProps: component.props.map((p) => p.name),\n },\n null,\n 2\n ),\n },\n ],\n };\n }\n );\n}\n","/**\n * MCP Tools Registration\n *\n * Tools allow AI models to query the design system.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { registerSearchComponentsTool } from './searchComponents.js';\nimport { registerGetComponentPropsTool } from './getComponentProps.js';\nimport { registerSuggestPatternTool } from './suggestPattern.js';\nimport { registerValidateUsageTool } from './validateUsage.js';\n\n/**\n * Register all tools with the MCP server\n */\nexport function registerTools(server: McpServer): void {\n registerSearchComponentsTool(server);\n registerGetComponentPropsTool(server);\n registerSuggestPatternTool(server);\n registerValidateUsageTool(server);\n}\n","/**\n * Build Form Prompt\n *\n * Helps create forms following Classic Theme patterns.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\n\nconst BuildFormSchema = z.object({\n formType: z.string().describe('Type of form (login, registration, contact, settings, custom)'),\n fields: z\n .string()\n .describe('Comma-separated list of field names (e.g., \"email, password, name\")'),\n includeValidation: z\n .string()\n .optional()\n .describe('Whether to include Zod validation schema (true/false)'),\n});\n\n/**\n * Register the build_form prompt\n */\nexport function registerBuildFormPrompt(server: McpServer): void {\n server.prompt(\n 'build_form',\n 'Create a form following Classic Theme patterns with proper validation',\n BuildFormSchema.shape,\n async (params) => {\n const parsed = BuildFormSchema.parse(params);\n const formType = parsed.formType || 'custom';\n const fields = (parsed.fields || '').split(',').map((f: string) => f.trim());\n const shouldIncludeValidation = parsed.includeValidation !== 'false';\n\n const fieldList = fields.map((f) => `- ${f}`).join('\\n');\n\n return {\n messages: [\n {\n role: 'user',\n content: {\n type: 'text',\n text: `Create a ${formType} form with these fields:\n${fieldList}\n\nRequirements:\n- Import components from '@classic-homes/theme-svelte'\n- Use the FormField component for each field\n- Use the useForm composable for state management\n${shouldIncludeValidation ? '- Include Zod schema validation using schemas from @classic-homes/theme-svelte' : ''}\n- Handle form submission with loading state\n- Show error messages for validation failures\n- Follow Svelte 5 runes syntax ($props, $state, $derived)\n\nAvailable form components:\n- FormField: Combines label, input, error message, and hint text\n- Input: Text input with value binding\n- Textarea: Multi-line text input\n- Select: Dropdown selection\n- Checkbox: Boolean checkbox\n- RadioGroup: Radio button group\n- DateTimePicker: Date and time selection\n- FileUpload: File upload with progress\n\nAvailable validation schemas (from @classic-homes/theme-svelte):\n- emailSchema: Email validation\n- passwordSchema: Strong password (8+ chars, mixed case, numbers, special)\n- loginPasswordSchema: Simpler password for login\n- usernameSchema: Username validation\n- fullNameSchema: Name validation\n- phoneSchema: Phone number validation\n\nExample structure:\n\\`\\`\\`svelte\n<script lang=\"ts\">\n import { FormField, Button, useForm } from '@classic-homes/theme-svelte';\n import { z } from 'zod';\n\n const schema = z.object({\n // field definitions\n });\n\n const form = useForm({\n schema,\n initialValues: { /* ... */ },\n onSubmit: async (data) => { /* ... */ },\n });\n</script>\n\n<form onsubmit={form.handleSubmit}>\n <!-- FormField components -->\n <Button type=\"submit\" loading={form.isSubmitting}>Submit</Button>\n</form>\n\\`\\`\\``,\n },\n },\n ],\n };\n }\n );\n}\n","/**\n * Layout Page Prompt\n *\n * Helps create page layouts using Classic Theme components.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\n\nconst LayoutPageSchema = z.object({\n pageType: z.string().describe('Type of page (dashboard, public, auth, error, form)'),\n features: z\n .string()\n .optional()\n .describe('Comma-separated features needed (e.g., \"sidebar, search, user-menu\")'),\n});\n\n/**\n * Register the layout_page prompt\n */\nexport function registerLayoutPagePrompt(server: McpServer): void {\n server.prompt(\n 'layout_page',\n 'Create a page layout using Classic Theme layout components',\n LayoutPageSchema.shape,\n async (params) => {\n const parsed = LayoutPageSchema.parse(params);\n const pageType = parsed.pageType || 'public';\n const features = (parsed.features || '')\n .split(',')\n .map((f: string) => f.trim())\n .filter(Boolean);\n\n const featureList = features.length > 0 ? `With features: ${features.join(', ')}` : '';\n\n const layoutGuide: Record<string, string> = {\n dashboard: `DashboardLayout - For authenticated dashboard pages with sidebar navigation\n- Props: navigation (NavSection[]), user (User), appName, pageTitle, sidebarVariant, headerSearch\n- Supports: collapsible sidebar, user menu, quick links, mobile responsive`,\n\n public: `PublicLayout - For public-facing pages with header and footer\n- Props: navigation (NavItem[]), footerLinks (NavSection[]), copyright, headerSearch\n- Supports: responsive header nav, footer link sections, logo customization`,\n\n auth: `AuthLayout - For authentication pages (login, signup, etc.)\n- Props: logoSubtitle, logoEnvironment, footerLinks, backgroundVariant, maxWidth\n- Supports: centered card layout, decorative backgrounds, footer links`,\n\n error: `ErrorLayout - For error pages (404, 500, etc.)\n- Props: statusCode, title, description, showHomeButton, showBackButton, illustration\n- Supports: custom error illustrations, action buttons, status codes`,\n\n form: `FormPageLayout - For multi-step forms or data entry pages\n- Props: title, description, helpText, showNotices\n- Supports: optional sidebar, notices section, help text`,\n };\n\n const layoutInfo = layoutGuide[pageType] || layoutGuide.public;\n\n return {\n messages: [\n {\n role: 'user',\n content: {\n type: 'text',\n text: `Create a ${pageType} page layout. ${featureList}\n\nLayout Component to Use:\n${layoutInfo}\n\nRequirements:\n- Import from '@classic-homes/theme-svelte'\n- Follow Svelte 5 runes syntax\n- Use TypeScript for type safety\n- Import and use proper types (NavSection, NavItem, User, etc.)\n\nKey Types:\n\\`\\`\\`typescript\ninterface NavItem {\n id: string;\n name: string;\n href?: string;\n icon?: string;\n badge?: string | number;\n children?: NavItem[];\n active?: boolean;\n}\n\ninterface NavSection {\n id: string;\n title?: string;\n items: NavItem[];\n}\n\ninterface User {\n id: string;\n name: string;\n email?: string;\n avatar?: string;\n roles?: string[];\n}\n\\`\\`\\`\n\nExample for ${pageType}Layout:\n\\`\\`\\`svelte\n<script lang=\"ts\">\n import { ${pageType.charAt(0).toUpperCase() + pageType.slice(1)}Layout } from '@classic-homes/theme-svelte';\n import type { NavSection, NavItem, User } from '@classic-homes/theme-svelte';\n\n // Define navigation, user data, etc.\n</script>\n\n<${pageType.charAt(0).toUpperCase() + pageType.slice(1)}Layout\n {/* props */}\n>\n <!-- Page content here -->\n</${pageType.charAt(0).toUpperCase() + pageType.slice(1)}Layout>\n\\`\\`\\``,\n },\n },\n ],\n };\n }\n );\n}\n","/**\n * Component Usage Prompt\n *\n * Helps generate correct component usage with proper props.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\nimport componentCatalog from '../data/component-catalog.json' with { type: 'json' };\nimport type { ComponentCatalog } from '../types.js';\n\nconst catalog = componentCatalog as ComponentCatalog;\n\nconst ComponentUsageSchema = z.object({\n componentName: z.string().describe('Name of the component (e.g., Button, Card, Select)'),\n variant: z.string().optional().describe('Desired variant (optional)'),\n useCase: z.string().optional().describe('Brief description of use case'),\n});\n\n/**\n * Register the component_usage prompt\n */\nexport function registerComponentUsagePrompt(server: McpServer): void {\n server.prompt(\n 'component_usage',\n 'Generate correct usage for a Classic Theme component',\n ComponentUsageSchema.shape,\n async (params) => {\n const parsed = ComponentUsageSchema.parse(params);\n const componentName = parsed.componentName || 'Button';\n const variant = parsed.variant || '';\n const useCase = parsed.useCase || '';\n\n const component = catalog.components.find(\n (c) => c.name.toLowerCase() === componentName.toLowerCase()\n );\n\n let componentInfo = '';\n if (component) {\n componentInfo = `\nComponent: ${component.name}\nDescription: ${component.description}\nCategory: ${component.category}\n\nProps:\n${component.props.map((p) => `- ${p.name}: ${p.type} ${p.required ? '(required)' : `(default: ${p.default || 'undefined'})`} - ${p.description}`).join('\\n')}\n\nVariants:\n${component.variants.map((v) => `- ${v.name}: ${v.values.join(' | ')} (default: ${v.default || v.values[0]})`).join('\\n')}\n\nExamples:\n${component.examples.map((e) => `### ${e.title}\\n\\`\\`\\`svelte\\n${e.code}\\n\\`\\`\\``).join('\\n\\n')}`;\n } else {\n componentInfo = `Component \"${componentName}\" not found in catalog. Available components: ${catalog.components.map((c) => c.name).join(', ')}`;\n }\n\n return {\n messages: [\n {\n role: 'user',\n content: {\n type: 'text',\n text: `Generate correct usage for the ${componentName} component from @classic-homes/theme-svelte.\n${variant ? `Desired variant: ${variant}` : ''}\n${useCase ? `Use case: ${useCase}` : ''}\n\n${componentInfo}\n\nRequirements:\n- Import from '@classic-homes/theme-svelte'\n- Use Svelte 5 runes syntax ($props, $state, etc.)\n- Include proper TypeScript types\n- Follow accessibility best practices\n- Add appropriate event handlers if needed`,\n },\n },\n ],\n };\n }\n );\n}\n","/**\n * MCP Prompts Registration\n *\n * Prompts provide templates for common development tasks.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { registerBuildFormPrompt } from './buildForm.js';\nimport { registerLayoutPagePrompt } from './layoutPage.js';\nimport { registerComponentUsagePrompt } from './componentUsage.js';\n\n/**\n * Register all prompts with the MCP server\n */\nexport function registerPrompts(server: McpServer): void {\n registerBuildFormPrompt(server);\n registerLayoutPagePrompt(server);\n registerComponentUsagePrompt(server);\n}\n"],"mappings":"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,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,c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","names":["McpServer","ResourceTemplate","ResourceTemplate","ResourceTemplate","catalog","ResourceTemplate","catalog","z","catalog","z","z","patterns","z","z","catalog","z","z","z","z","catalog","z","McpServer"]}
|
|
1
|
+
{"version":3,"sources":["../src/server.ts","../src/resources/components.ts","../src/data/component-catalog.json","../src/data/token-definitions.json","../src/resources/tokens.ts","../src/resources/layouts.ts","../src/data/pattern-library.json","../src/data/schema-catalog.json","../src/resources/schemas.ts","../src/resources/auth.ts","../src/data/auth-catalog.json","../src/resources/index.ts","../src/tools/searchComponents.ts","../src/tools/getComponentProps.ts","../src/tools/suggestPattern.ts","../src/tools/validateUsage.ts","../src/tools/index.ts","../src/prompts/buildForm.ts","../src/prompts/layoutPage.ts","../src/prompts/componentUsage.ts","../src/prompts/index.ts"],"sourcesContent":["/**\n * Classic Theme MCP Server\n *\n * Provides AI models with comprehensive design system knowledge including\n * components, design tokens, layout patterns, and validation schemas.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { registerResources } from './resources/index.js';\nimport { registerTools } from './tools/index.js';\nimport { registerPrompts } from './prompts/index.js';\n\n/**\n * Creates and configures the MCP server\n */\nexport function createServer(): McpServer {\n const server = new McpServer({\n name: 'classic-theme',\n version: '0.1.0',\n });\n\n // Register all MCP primitives\n registerResources(server);\n registerTools(server);\n registerPrompts(server);\n\n return server;\n}\n","/**\n * Component Resources\n *\n * Provides access to component catalog data.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport componentCatalog from '../data/component-catalog.json' with { type: 'json' };\nimport type { ComponentCatalog } from '../types.js';\n\nconst catalog = componentCatalog as ComponentCatalog;\n\n/**\n * Register component-related resources\n */\nexport function registerComponentResources(server: McpServer): void {\n // Full component catalog\n server.resource('Component Catalog', 'components://catalog', async (uri) => ({\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(catalog, null, 2),\n },\n ],\n }));\n\n // Component list (names only, for quick lookup)\n server.resource('Component List', 'components://list', async (uri) => ({\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(\n catalog.components.map((c) => ({\n name: c.name,\n category: c.category,\n description: c.description,\n })),\n null,\n 2\n ),\n },\n ],\n }));\n\n // Individual component resources via template\n server.resource(\n 'Component Details',\n new ResourceTemplate('components://{name}', { list: undefined }),\n async (uri, params) => {\n const name = params.name as string;\n const component = catalog.components.find((c) => c.name.toLowerCase() === name.toLowerCase());\n\n if (!component) {\n return {\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify({ error: `Component \"${name}\" not found` }),\n },\n ],\n };\n }\n\n return {\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(component, null, 2),\n },\n ],\n };\n }\n );\n\n // Components by category\n server.resource(\n 'Components by Category',\n new ResourceTemplate('components://category/{category}', { list: undefined }),\n async (uri, params) => {\n const category = params.category as string;\n const components = catalog.components.filter(\n (c) => c.category.toLowerCase() === category.toLowerCase()\n );\n\n return {\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(components, null, 2),\n },\n ],\n };\n }\n );\n}\n","{\n \"version\": \"0.1.0\",\n \"components\": [\n {\n \"name\": \"Alert\",\n \"description\": \"Contextual feedback messages for user actions and system status\",\n \"category\": \"feedback\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"variant\",\n \"type\": \"'default' | 'destructive' | 'error' | 'success' | 'warning' | 'info'\",\n \"default\": \"'default'\",\n \"required\": false,\n \"description\": \"Alert style variant\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"variant\",\n \"values\": [\n \"default\",\n \"destructive\",\n \"error\",\n \"success\",\n \"warning\",\n \"info\"\n ],\n \"default\": \"default\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Alert>\\n <AlertTitle>Heads up!</AlertTitle>\\n <AlertDescription>This is a default alert message.</AlertDescription>\\n</Alert>\"\n },\n {\n \"title\": \"Default\",\n \"description\": \"Neutral information message:\",\n \"code\": \"<Alert variant=\\\"default\\\">\\n <AlertTitle>Note</AlertTitle>\\n <AlertDescription>This is a neutral informational message.</AlertDescription>\\n</Alert>\"\n },\n {\n \"title\": \"Success\",\n \"description\": \"Positive feedback for completed actions:\",\n \"code\": \"<Alert variant=\\\"success\\\">\\n <AlertTitle>Success!</AlertTitle>\\n <AlertDescription>Your changes have been saved successfully.</AlertDescription>\\n</Alert>\"\n },\n {\n \"title\": \"Warning\",\n \"description\": \"Caution about potential issues:\",\n \"code\": \"<Alert variant=\\\"warning\\\">\\n <AlertTitle>Warning</AlertTitle>\\n <AlertDescription>Your session will expire in 5 minutes.</AlertDescription>\\n</Alert>\"\n },\n {\n \"title\": \"Error / Destructive\",\n \"description\": \"Error messages and critical alerts:\",\n \"code\": \"<Alert variant=\\\"error\\\">\\n <AlertTitle>Error</AlertTitle>\\n <AlertDescription>There was a problem processing your request.</AlertDescription>\\n</Alert>\"\n },\n {\n \"title\": \"Info\",\n \"description\": \"Helpful information or tips:\",\n \"code\": \"<Alert variant=\\\"info\\\">\\n <AlertTitle>Did you know?</AlertTitle>\\n <AlertDescription>You can use keyboard shortcuts for faster navigation.</AlertDescription>\\n</Alert>\"\n },\n {\n \"title\": \"Form Validation Error\",\n \"code\": \"{#if formErrors.length > 0}\\n <Alert variant=\\\"error\\\">\\n <AlertTitle>Please fix the following errors:</AlertTitle>\\n <AlertDescription>\\n <ul class=\\\"list-disc pl-4 mt-2\\\">\\n {#each formErrors as error}\\n <li>{error}</li>\\n {/each}\\n </ul>\\n </AlertDescription>\\n </Alert>\\n{/if}\"\n },\n {\n \"title\": \"Dismissible Alert\",\n \"code\": \"<script>\\n let showAlert = $state(true);\\n</script>\\n\\n{#if showAlert}\\n <Alert variant=\\\"info\\\" class=\\\"relative\\\">\\n <AlertTitle>New Feature</AlertTitle>\\n <AlertDescription>Check out our new dashboard!</AlertDescription>\\n <button\\n class=\\\"absolute top-4 right-4 text-muted-foreground hover:text-foreground\\\"\\n onclick={() => (showAlert = false)}\\n aria-label=\\\"Dismiss\\\"\\n >\\n <svg class=\\\"h-4 w-4\\\" fill=\\\"none\\\" viewBox=\\\"0 0 24 24\\\" stroke=\\\"currentColor\\\">\\n <path\\n stroke-linecap=\\\"round\\\"\\n stroke-linejoin=\\\"round\\\"\\n stroke-width=\\\"2\\\"\\n d=\\\"M6 18L18 6M6 6l12 12\\\"\\n />\\n </svg>\\n </button>\\n </Alert>\\n{/if}\"\n },\n {\n \"title\": \"System Status\",\n \"code\": \"<Alert variant=\\\"warning\\\">\\n <svg class=\\\"h-4 w-4\\\" fill=\\\"none\\\" viewBox=\\\"0 0 24 24\\\" stroke=\\\"currentColor\\\">\\n <path\\n stroke-linecap=\\\"round\\\"\\n stroke-linejoin=\\\"round\\\"\\n stroke-width=\\\"2\\\"\\n d=\\\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\\\"\\n />\\n </svg>\\n <AlertTitle>Maintenance Scheduled</AlertTitle>\\n <AlertDescription>\\n The system will be unavailable on Sunday from 2:00 AM to 4:00 AM EST.\\n </AlertDescription>\\n</Alert>\"\n },\n {\n \"title\": \"Success with Action\",\n \"code\": \"<Alert variant=\\\"success\\\">\\n <AlertTitle>Order Confirmed</AlertTitle>\\n <AlertDescription>\\n <p>Your order #12345 has been placed successfully.</p>\\n <a href=\\\"/orders/12345\\\" class=\\\"underline font-medium mt-2 inline-block\\\"> View order details </a>\\n </AlertDescription>\\n</Alert>\"\n },\n {\n \"title\": \"Compact Alert (Title Only)\",\n \"code\": \"<Alert variant=\\\"info\\\">\\n <AlertDescription>Pro tip: Press Ctrl+K to open the command palette.</AlertDescription>\\n</Alert>\"\n }\n ],\n \"relatedComponents\": [\n \"Toast\",\n \"Badge\",\n \"Card\"\n ]\n },\n {\n \"name\": \"AlertDescription\",\n \"description\": \"Main content text component for Alert messages\",\n \"category\": \"feedback\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Alert>\\n <AlertTitle>Notice</AlertTitle>\\n <AlertDescription>This is the alert message content.</AlertDescription>\\n</Alert>\"\n },\n {\n \"title\": \"Simple Message\",\n \"code\": \"<AlertDescription>Your session will expire in 5 minutes.</AlertDescription>\"\n },\n {\n \"title\": \"With Link\",\n \"code\": \"<AlertDescription>\\n Your account needs verification.\\n <a href=\\\"/verify\\\" class=\\\"underline font-medium\\\">Verify now</a>\\n</AlertDescription>\"\n },\n {\n \"title\": \"Error List\",\n \"code\": \"<AlertDescription>\\n <ul class=\\\"list-disc pl-4 mt-2\\\">\\n <li>Email is required</li>\\n <li>Password must be at least 8 characters</li>\\n </ul>\\n</AlertDescription>\"\n },\n {\n \"title\": \"Rich Content\",\n \"code\": \"<AlertDescription>\\n <p>Your order #12345 has been placed successfully.</p>\\n <a href=\\\"/orders/12345\\\" class=\\\"underline font-medium mt-2 inline-block\\\"> View order details </a>\\n</AlertDescription>\"\n },\n {\n \"title\": \"Without Title\",\n \"code\": \"<Alert variant=\\\"info\\\">\\n <AlertDescription>Pro tip: Press Ctrl+K to open the command palette.</AlertDescription>\\n</Alert>\"\n }\n ],\n \"relatedComponents\": [\n \"Alert\",\n \"AlertTitle\"\n ]\n },\n {\n \"name\": \"AlertDialog\",\n \"description\": \"Modal dialog for confirmations and important actions\",\n \"category\": \"overlay\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"open\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Open state (bindable)\"\n },\n {\n \"name\": \"onOpenChange\",\n \"type\": \"(open: boolean) => void\",\n \"required\": false,\n \"description\": \"Open change callback\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Dialog title\"\n },\n {\n \"name\": \"description\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Description text\"\n },\n {\n \"name\": \"cancelText\",\n \"type\": \"string\",\n \"default\": \"'Cancel'\",\n \"required\": false,\n \"description\": \"Cancel button text\"\n },\n {\n \"name\": \"confirmText\",\n \"type\": \"string\",\n \"default\": \"'Continue'\",\n \"required\": false,\n \"description\": \"Confirm button text\"\n },\n {\n \"name\": \"confirmVariant\",\n \"type\": \"'default' | 'destructive' | 'outline' | 'ghost'\",\n \"default\": \"'default'\",\n \"required\": false,\n \"description\": \"Confirm button style\"\n },\n {\n \"name\": \"onConfirm\",\n \"type\": \"() => void\",\n \"required\": false,\n \"description\": \"Confirm callback\"\n },\n {\n \"name\": \"onCancel\",\n \"type\": \"() => void\",\n \"required\": false,\n \"description\": \"Cancel callback\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional classes\"\n },\n {\n \"name\": \"trigger\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Optional trigger element\"\n },\n {\n \"name\": \"children\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Custom content\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"confirmVariant\",\n \"values\": [\n \"default\",\n \"destructive\",\n \"outline\",\n \"ghost\"\n ],\n \"default\": \"default\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n let showDialog = $state(false);\\n</script>\\n\\n<Button onclick={() => (showDialog = true)}>Delete Item</Button>\\n\\n<AlertDialog\\n open={showDialog}\\n onOpenChange={(open) => (showDialog = open)}\\n title=\\\"Delete Item?\\\"\\n description=\\\"This action cannot be undone. This will permanently delete the item.\\\"\\n confirmText=\\\"Delete\\\"\\n confirmVariant=\\\"destructive\\\"\\n onConfirm={() => deleteItem()}\\n/>\"\n },\n {\n \"title\": \"Delete Confirmation\",\n \"code\": \"<AlertDialog\\n title=\\\"Delete Project\\\"\\n description={`Are you sure you want to delete \\\"${project.name}\\\"? All project data including files, tasks, and comments will be permanently removed.`}\\n confirmText=\\\"Delete Project\\\"\\n confirmVariant=\\\"destructive\\\"\\n onConfirm={() => deleteProject(project.id)}\\n>\\n {#snippet trigger()}\\n <Button variant=\\\"destructive\\\" size=\\\"sm\\\">\\n <TrashIcon class=\\\"mr-2 h-4 w-4\\\" />\\n Delete\\n </Button>\\n {/snippet}\\n</AlertDialog>\"\n },\n {\n \"title\": \"Unsaved Changes\",\n \"code\": \"<AlertDialog\\n title=\\\"Unsaved Changes\\\"\\n description=\\\"You have unsaved changes. Do you want to leave without saving?\\\"\\n cancelText=\\\"Stay\\\"\\n confirmText=\\\"Leave\\\"\\n confirmVariant=\\\"destructive\\\"\\n onConfirm={navigateAway}\\n>\\n {#snippet trigger()}\\n <Button variant=\\\"outline\\\">Cancel</Button>\\n {/snippet}\\n</AlertDialog>\"\n },\n {\n \"title\": \"Subscription Cancellation\",\n \"code\": \"<AlertDialog\\n title=\\\"Cancel Subscription\\\"\\n description=\\\"Your subscription will remain active until the end of the current billing period. You can resubscribe at any time.\\\"\\n cancelText=\\\"Keep Subscription\\\"\\n confirmText=\\\"Cancel Subscription\\\"\\n onConfirm={cancelSubscription}\\n>\\n {#snippet trigger()}\\n <Button variant=\\\"ghost\\\" class=\\\"text-destructive\\\">Cancel Subscription</Button>\\n {/snippet}\\n</AlertDialog>\"\n },\n {\n \"title\": \"Bulk Action\",\n \"code\": \"<AlertDialog\\n title={`Delete ${selectedItems.length} items?`}\\n description=\\\"This will permanently delete all selected items. This action cannot be undone.\\\"\\n confirmText={`Delete ${selectedItems.length} items`}\\n confirmVariant=\\\"destructive\\\"\\n onConfirm={deleteSelectedItems}\\n>\\n {#snippet trigger()}\\n <Button variant=\\\"destructive\\\" disabled={selectedItems.length === 0}>Delete Selected</Button>\\n {/snippet}\\n</AlertDialog>\"\n }\n ],\n \"relatedComponents\": [\n \"Dialog\",\n \"Button\",\n \"DropdownMenu\"\n ]\n },\n {\n \"name\": \"AlertTitle\",\n \"description\": \"Bold heading component for Alert messages\",\n \"category\": \"feedback\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Alert>\\n <AlertTitle>Heads up!</AlertTitle>\\n <AlertDescription>This is an important message.</AlertDescription>\\n</Alert>\"\n },\n {\n \"title\": \"Success Alert\",\n \"code\": \"<Alert variant=\\\"success\\\">\\n <AlertTitle>Success!</AlertTitle>\\n <AlertDescription>Your changes have been saved.</AlertDescription>\\n</Alert>\"\n },\n {\n \"title\": \"Error Alert\",\n \"code\": \"<Alert variant=\\\"error\\\">\\n <AlertTitle>Error</AlertTitle>\\n <AlertDescription>Something went wrong. Please try again.</AlertDescription>\\n</Alert>\"\n },\n {\n \"title\": \"With Icon\",\n \"code\": \"<Alert variant=\\\"info\\\">\\n <Icon name=\\\"info\\\" class=\\\"h-4 w-4\\\" />\\n <AlertTitle>Did you know?</AlertTitle>\\n <AlertDescription>You can use keyboard shortcuts.</AlertDescription>\\n</Alert>\"\n },\n {\n \"title\": \"Custom Styling\",\n \"code\": \"<AlertTitle class=\\\"text-lg\\\">Important Notice</AlertTitle>\"\n }\n ],\n \"relatedComponents\": [\n \"Alert\",\n \"AlertDescription\"\n ]\n },\n {\n \"name\": \"AppShell\",\n \"description\": \"Base wrapper component for applications with accessibility features\",\n \"category\": \"layout\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"skipToId\",\n \"type\": \"string\",\n \"default\": \"'main-content'\",\n \"required\": false,\n \"description\": \"Target ID for skip link\"\n },\n {\n \"name\": \"skipToText\",\n \"type\": \"string\",\n \"default\": \"'Skip to main content'\",\n \"required\": false,\n \"description\": \"Skip link text\"\n },\n {\n \"name\": \"toastPosition\",\n \"type\": \"'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top-center' | 'bottom-center'\",\n \"default\": \"'bottom-right'\",\n \"required\": false,\n \"description\": \"Toast container position\"\n },\n {\n \"name\": \"children\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Main content\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"toastPosition\",\n \"values\": [\n \"top-right\",\n \"top-left\",\n \"bottom-right\",\n \"bottom-left\",\n \"top-center\",\n \"bottom-center\"\n ],\n \"default\": \"bottom-right\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<AppShell>\\n <main>Your application content</main>\\n</AppShell>\"\n }\n ],\n \"relatedComponents\": [\n \"DashboardLayout\",\n \"PublicLayout\",\n \"Toast\"\n ]\n },\n {\n \"name\": \"AreaChart\",\n \"description\": \"Line chart with gradient fill and stacking support\",\n \"category\": \"chart\",\n \"importPath\": \"@classic-homes/charts-svelte\",\n \"props\": [\n {\n \"name\": \"data\",\n \"type\": \"AreaChartData\",\n \"required\": true,\n \"description\": \"Chart data with categories and series\"\n },\n {\n \"name\": \"smooth\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Use smooth curved lines\"\n },\n {\n \"name\": \"stacked\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Stack areas to show total composition\"\n },\n {\n \"name\": \"gradient\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Apply gradient fill to areas\"\n },\n {\n \"name\": \"onClick\",\n \"type\": \"(params: DataPointEventParams) => void\",\n \"required\": false,\n \"description\": \"Callback when clicked\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": true,\n \"description\": \"Chart title for accessibility\"\n },\n {\n \"name\": \"height\",\n \"type\": \"number | string\",\n \"default\": \"400\",\n \"required\": false,\n \"description\": \"Chart height\"\n },\n {\n \"name\": \"theme\",\n \"type\": \"'light' | 'dark' | 'auto'\",\n \"default\": \"'auto'\",\n \"required\": false,\n \"description\": \"Theme preference\"\n },\n {\n \"name\": \"showLegend\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show chart legend\"\n },\n {\n \"name\": \"showTooltip\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show tooltip on hover\"\n },\n {\n \"name\": \"showGrid\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show grid lines\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"theme\",\n \"values\": [\n \"light\",\n \"dark\",\n \"auto\"\n ],\n \"default\": \"auto\"\n }\n ],\n \"slots\": [],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { AreaChart } from '@classic-homes/charts-svelte';\\n\\n const data = {\\n categories: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],\\n series: [\\n { name: 'Email', data: [120, 132, 101, 134, 90, 230, 210] },\\n { name: 'Ads', data: [220, 182, 191, 234, 290, 330, 310] },\\n { name: 'Video', data: [150, 232, 201, 154, 190, 330, 410] },\\n ],\\n };\\n</script>\\n\\n<AreaChart title=\\\"Weekly Traffic\\\" {data} stacked smooth gradient height={400} />\"\n },\n {\n \"title\": \"Stacked Area with Gradient\",\n \"code\": \"<AreaChart title=\\\"Traffic Sources\\\" {data} stacked smooth gradient height={400} />\"\n },\n {\n \"title\": \"Simple Area Chart\",\n \"code\": \"<AreaChart\\n title=\\\"Single Series\\\"\\n data={{\\n categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May'],\\n series: [{ name: 'Revenue', data: [100, 150, 120, 180, 200] }],\\n }}\\n smooth\\n/>\"\n }\n ],\n \"relatedComponents\": [\n \"LineChart\",\n \"BarChart\"\n ]\n },\n {\n \"name\": \"AuthLayout\",\n \"description\": \"Centered card layout for authentication pages\",\n \"category\": \"layout\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"logo\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Custom logo\"\n },\n {\n \"name\": \"logoSubtitle\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Subtitle for default logo\"\n },\n {\n \"name\": \"logoEnvironment\",\n \"type\": \"'local' | 'dev' | 'demo'\",\n \"required\": false,\n \"description\": \"Environment indicator\"\n },\n {\n \"name\": \"footerLinks\",\n \"type\": \"FooterLink[]\",\n \"default\": \"[]\",\n \"required\": false,\n \"description\": \"Footer links\"\n },\n {\n \"name\": \"footer\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Custom footer content\"\n },\n {\n \"name\": \"showBackground\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Show decorative background\"\n },\n {\n \"name\": \"backgroundVariant\",\n \"type\": \"'default' | 'gradient' | 'pattern'\",\n \"default\": \"'default'\",\n \"required\": false,\n \"description\": \"Background style\"\n },\n {\n \"name\": \"maxWidth\",\n \"type\": \"'sm' | 'md' | 'lg'\",\n \"default\": \"'sm'\",\n \"required\": false,\n \"description\": \"Maximum card width\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional classes\"\n },\n {\n \"name\": \"children\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Form content\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"logoEnvironment\",\n \"values\": [\n \"local\",\n \"dev\",\n \"demo\"\n ]\n },\n {\n \"name\": \"backgroundVariant\",\n \"values\": [\n \"default\",\n \"gradient\",\n \"pattern\"\n ],\n \"default\": \"default\"\n },\n {\n \"name\": \"maxWidth\",\n \"values\": [\n \"sm\",\n \"md\",\n \"lg\"\n ],\n \"default\": \"sm\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<AuthLayout>\\n <h2 class=\\\"text-2xl font-bold mb-4\\\">Sign In</h2>\\n <form>\\n <Input label=\\\"Email\\\" type=\\\"email\\\" />\\n <Input label=\\\"Password\\\" type=\\\"password\\\" class=\\\"mt-4\\\" />\\n <Button class=\\\"mt-6 w-full\\\">Sign In</Button>\\n </form>\\n</AuthLayout>\"\n },\n {\n \"title\": \"Gradient Background\",\n \"code\": \"<AuthLayout showBackground backgroundVariant=\\\"gradient\\\">\\n <h2>Create Account</h2>\\n <!-- Form content -->\\n</AuthLayout>\"\n },\n {\n \"title\": \"Pattern Background\",\n \"code\": \"<AuthLayout showBackground backgroundVariant=\\\"pattern\\\">\\n <h2>Reset Password</h2>\\n <!-- Form content -->\\n</AuthLayout>\"\n },\n {\n \"title\": \"Login Page\",\n \"code\": \"<script>\\n let email = $state('');\\n let password = $state('');\\n let loading = $state(false);\\n\\n async function handleSubmit() {\\n loading = true;\\n // Handle login\\n }\\n</script>\\n\\n<AuthLayout\\n logoSubtitle=\\\"Sign in to continue\\\"\\n footerLinks={[\\n { label: 'Privacy', href: '/privacy' },\\n { label: 'Terms', href: '/terms' },\\n ]}\\n>\\n <form onsubmit={handleSubmit} class=\\\"space-y-4\\\">\\n <Input label=\\\"Email\\\" type=\\\"email\\\" bind:value={email} required />\\n <Input label=\\\"Password\\\" type=\\\"password\\\" bind:value={password} required />\\n <div class=\\\"flex items-center justify-between\\\">\\n <Checkbox label=\\\"Remember me\\\" />\\n <a href=\\\"/forgot-password\\\" class=\\\"text-sm text-primary\\\"> Forgot password? </a>\\n </div>\\n <Button type=\\\"submit\\\" class=\\\"w-full\\\" disabled={loading}>\\n {loading ? 'Signing in...' : 'Sign In'}\\n </Button>\\n </form>\\n\\n <p class=\\\"mt-6 text-center text-sm text-muted-foreground\\\">\\n Don't have an account? <a href=\\\"/signup\\\" class=\\\"text-primary\\\">Sign up</a>\\n </p>\\n</AuthLayout>\"\n },\n {\n \"title\": \"Registration Page\",\n \"code\": \"<AuthLayout maxWidth=\\\"md\\\" showBackground backgroundVariant=\\\"gradient\\\">\\n <h2 class=\\\"text-2xl font-bold mb-6\\\">Create your account</h2>\\n\\n <form class=\\\"space-y-4\\\">\\n <div class=\\\"grid grid-cols-2 gap-4\\\">\\n <Input label=\\\"First Name\\\" required />\\n <Input label=\\\"Last Name\\\" required />\\n </div>\\n <Input label=\\\"Email\\\" type=\\\"email\\\" required />\\n <Input label=\\\"Password\\\" type=\\\"password\\\" required />\\n <Input label=\\\"Confirm Password\\\" type=\\\"password\\\" required />\\n\\n <Checkbox>\\n I agree to the <a href=\\\"/terms\\\">Terms of Service</a>\\n </Checkbox>\\n\\n <Button type=\\\"submit\\\" class=\\\"w-full\\\">Create Account</Button>\\n </form>\\n</AuthLayout>\"\n },\n {\n \"title\": \"Two-Factor Authentication\",\n \"code\": \"<AuthLayout logoSubtitle=\\\"Verify your identity\\\">\\n <div class=\\\"text-center mb-6\\\">\\n <p class=\\\"text-muted-foreground\\\">Enter the 6-digit code from your authenticator app</p>\\n </div>\\n\\n <OTPInput bind:value={code} autoFocus onComplete={verifyCode} />\\n\\n <p class=\\\"mt-6 text-center text-sm text-muted-foreground\\\">\\n Can't access your authenticator? <a href=\\\"/recovery\\\" class=\\\"text-primary\\\">Use recovery code</a>\\n </p>\\n</AuthLayout>\"\n }\n ],\n \"relatedComponents\": [\n \"Input\",\n \"Button\",\n \"OTPInput\",\n \"ErrorLayout\"\n ]\n },\n {\n \"name\": \"Avatar\",\n \"description\": \"User profile image with fallback support\",\n \"category\": \"core\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"size\",\n \"type\": \"'xs' | 'sm' | 'md' | 'lg' | 'xl'\",\n \"default\": \"'md'\",\n \"required\": false,\n \"description\": \"Size of the avatar\"\n },\n {\n \"name\": \"delayMs\",\n \"type\": \"number\",\n \"required\": false,\n \"description\": \"Delay before showing fallback\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"size\",\n \"values\": [\n \"xs\",\n \"sm\",\n \"md\",\n \"lg\",\n \"xl\"\n ],\n \"default\": \"md\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Avatar>\\n <AvatarImage src=\\\"/avatar.jpg\\\" alt=\\\"John Doe\\\" />\\n <AvatarFallback>JD</AvatarFallback>\\n</Avatar>\"\n },\n {\n \"title\": \"Fallback with Delay\",\n \"description\": \"Prevent flash of fallback for slow-loading images:\",\n \"code\": \"<Avatar delayMs={500}>\\n <AvatarImage src=\\\"/slow-image.jpg\\\" alt=\\\"User\\\" />\\n <AvatarFallback>AB</AvatarFallback>\\n</Avatar>\"\n },\n {\n \"title\": \"User Profile\",\n \"code\": \"<div class=\\\"flex items-center gap-3\\\">\\n <Avatar size=\\\"lg\\\">\\n <AvatarImage src={user.avatar} alt={user.name} />\\n <AvatarFallback>{getInitials(user.name)}</AvatarFallback>\\n </Avatar>\\n <div>\\n <p class=\\\"font-medium\\\">{user.name}</p>\\n <p class=\\\"text-sm text-muted-foreground\\\">{user.email}</p>\\n </div>\\n</div>\"\n },\n {\n \"title\": \"Avatar Stack\",\n \"code\": \"<div class=\\\"flex -space-x-2\\\">\\n {#each users as user}\\n <Avatar size=\\\"sm\\\" class=\\\"border-2 border-background\\\">\\n <AvatarImage src={user.avatar} alt={user.name} />\\n <AvatarFallback>{getInitials(user.name)}</AvatarFallback>\\n </Avatar>\\n {/each}\\n {#if moreCount > 0}\\n <Avatar size=\\\"sm\\\" class=\\\"border-2 border-background\\\">\\n <AvatarFallback>+{moreCount}</AvatarFallback>\\n </Avatar>\\n {/if}\\n</div>\"\n },\n {\n \"title\": \"Comment Avatar\",\n \"code\": \"<div class=\\\"flex gap-3\\\">\\n <Avatar size=\\\"sm\\\">\\n <AvatarImage src={comment.author.avatar} alt={comment.author.name} />\\n <AvatarFallback>{getInitials(comment.author.name)}</AvatarFallback>\\n </Avatar>\\n <div class=\\\"flex-1\\\">\\n <p class=\\\"font-medium text-sm\\\">{comment.author.name}</p>\\n <p class=\\\"text-sm\\\">{comment.text}</p>\\n </div>\\n</div>\"\n },\n {\n \"title\": \"Navigation Avatar\",\n \"code\": \"<button class=\\\"flex items-center gap-2\\\">\\n <Avatar size=\\\"sm\\\">\\n <AvatarImage src={currentUser.avatar} alt={currentUser.name} />\\n <AvatarFallback>{getInitials(currentUser.name)}</AvatarFallback>\\n </Avatar>\\n <span class=\\\"text-sm\\\">{currentUser.name}</span>\\n</button>\"\n },\n {\n \"title\": \"Colored Fallbacks\",\n \"code\": \"<script>\\n function getColorFromName(name: string): string {\\n const colors = ['bg-red-500', 'bg-blue-500', 'bg-green-500', 'bg-yellow-500', 'bg-purple-500'];\\n const index = name.charCodeAt(0) % colors.length;\\n return colors[index];\\n }\\n</script>\\n\\n<Avatar>\\n <AvatarImage src={user.avatar} alt={user.name} />\\n <AvatarFallback class={getColorFromName(user.name)}>\\n {getInitials(user.name)}\\n </AvatarFallback>\\n</Avatar>\"\n }\n ],\n \"relatedComponents\": [\n \"Badge\",\n \"Card\"\n ]\n },\n {\n \"name\": \"AvatarFallback\",\n \"description\": \"Fallback content displayed when Avatar image is unavailable\",\n \"category\": \"core\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Avatar>\\n <AvatarImage src=\\\"/user.jpg\\\" alt=\\\"John Doe\\\" />\\n <AvatarFallback>JD</AvatarFallback>\\n</Avatar>\"\n },\n {\n \"title\": \"Initials\",\n \"code\": \"<Avatar>\\n <AvatarFallback>AB</AvatarFallback>\\n</Avatar>\"\n },\n {\n \"title\": \"Single Letter\",\n \"code\": \"<Avatar>\\n <AvatarFallback>J</AvatarFallback>\\n</Avatar>\"\n },\n {\n \"title\": \"With Icon\",\n \"code\": \"<Avatar>\\n <AvatarFallback>\\n <Icon name=\\\"user\\\" class=\\\"h-4 w-4\\\" />\\n </AvatarFallback>\\n</Avatar>\"\n },\n {\n \"title\": \"Custom Styling\",\n \"code\": \"<Avatar>\\n <AvatarFallback class=\\\"bg-primary text-primary-foreground\\\">AD</AvatarFallback>\\n</Avatar>\"\n },\n {\n \"title\": \"As Placeholder\",\n \"description\": \"When no image is available:\",\n \"code\": \"<Avatar>\\n <AvatarFallback>?</AvatarFallback>\\n</Avatar>\"\n }\n ],\n \"relatedComponents\": [\n \"Avatar\",\n \"AvatarImage\"\n ]\n },\n {\n \"name\": \"AvatarImage\",\n \"description\": \"Image component for displaying user profile pictures in Avatars\",\n \"category\": \"core\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"src\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Image source URL (required)\"\n },\n {\n \"name\": \"alt\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Alt text for accessibility\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Avatar>\\n <AvatarImage src=\\\"/user-photo.jpg\\\" alt=\\\"John Doe\\\" />\\n <AvatarFallback>JD</AvatarFallback>\\n</Avatar>\"\n },\n {\n \"title\": \"With Fallback\",\n \"code\": \"<Avatar>\\n <AvatarImage src=\\\"/avatar.jpg\\\" alt=\\\"Jane Smith\\\" />\\n <AvatarFallback>JS</AvatarFallback>\\n</Avatar>\"\n },\n {\n \"title\": \"Different Sizes\",\n \"code\": \"<Avatar size=\\\"sm\\\">\\n <AvatarImage src=\\\"/small.jpg\\\" alt=\\\"Small avatar\\\" />\\n</Avatar>\\n\\n<Avatar size=\\\"lg\\\">\\n <AvatarImage src=\\\"/large.jpg\\\" alt=\\\"Large avatar\\\" />\\n</Avatar>\"\n },\n {\n \"title\": \"External Image\",\n \"code\": \"<Avatar>\\n <AvatarImage src=\\\"https://avatars.githubusercontent.com/u/123\\\" alt=\\\"GitHub user\\\" />\\n <AvatarFallback>GH</AvatarFallback>\\n</Avatar>\"\n }\n ],\n \"relatedComponents\": [\n \"Avatar\",\n \"AvatarFallback\"\n ]\n },\n {\n \"name\": \"Badge\",\n \"description\": \"Small label component for status indicators and categorization\",\n \"category\": \"core\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"variant\",\n \"type\": \"'default' | 'secondary' | 'destructive' | 'outline' | 'success' | 'warning' | 'info'\",\n \"default\": \"'default'\",\n \"required\": false,\n \"description\": \"Visual style variant\"\n },\n {\n \"name\": \"size\",\n \"type\": \"'default' | 'sm' | 'dot'\",\n \"default\": \"'default'\",\n \"required\": false,\n \"description\": \"Size of the badge\"\n },\n {\n \"name\": \"clickable\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Enables hover effects for clickable badges\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"variant\",\n \"values\": [\n \"default\",\n \"secondary\",\n \"destructive\",\n \"outline\",\n \"success\",\n \"warning\",\n \"info\"\n ],\n \"default\": \"default\"\n },\n {\n \"name\": \"size\",\n \"values\": [\n \"default\",\n \"sm\",\n \"dot\"\n ],\n \"default\": \"default\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Badge>Default</Badge>\"\n },\n {\n \"title\": \"Default\",\n \"code\": \"<Badge variant=\\\"default\\\">Default</Badge>\"\n },\n {\n \"title\": \"Secondary\",\n \"code\": \"<Badge variant=\\\"secondary\\\">Secondary</Badge>\"\n },\n {\n \"title\": \"Destructive\",\n \"code\": \"<Badge variant=\\\"destructive\\\">Destructive</Badge>\"\n },\n {\n \"title\": \"Outline\",\n \"code\": \"<Badge variant=\\\"outline\\\">Outline</Badge>\"\n },\n {\n \"title\": \"Success\",\n \"code\": \"<Badge variant=\\\"success\\\">Success</Badge>\"\n },\n {\n \"title\": \"Warning\",\n \"code\": \"<Badge variant=\\\"warning\\\">Warning</Badge>\"\n },\n {\n \"title\": \"Info\",\n \"code\": \"<Badge variant=\\\"info\\\">Info</Badge>\"\n },\n {\n \"title\": \"Status Indicators\",\n \"code\": \"<Badge variant=\\\"success\\\">Active</Badge>\\n<Badge variant=\\\"warning\\\">Pending</Badge>\\n<Badge variant=\\\"destructive\\\">Expired</Badge>\"\n },\n {\n \"title\": \"Notification Counts\",\n \"code\": \"<Badge size=\\\"dot\\\" variant=\\\"destructive\\\">3</Badge>\"\n },\n {\n \"title\": \"Category Tags\",\n \"code\": \"<div class=\\\"flex gap-2\\\">\\n <Badge variant=\\\"secondary\\\">React</Badge>\\n <Badge variant=\\\"secondary\\\">Svelte</Badge>\\n <Badge variant=\\\"secondary\\\">TypeScript</Badge>\\n</div>\"\n },\n {\n \"title\": \"With Icons\",\n \"code\": \"<Badge>\\n <svg class=\\\"h-3 w-3\\\" fill=\\\"currentColor\\\" viewBox=\\\"0 0 20 20\\\">\\n <circle cx=\\\"10\\\" cy=\\\"10\\\" r=\\\"5\\\" />\\n </svg>\\n Online\\n</Badge>\"\n },\n {\n \"title\": \"Table Status Column\",\n \"code\": \"<td>\\n {#if user.status === 'active'}\\n <Badge variant=\\\"success\\\">Active</Badge>\\n {:else if user.status === 'pending'}\\n <Badge variant=\\\"warning\\\">Pending</Badge>\\n {:else}\\n <Badge variant=\\\"destructive\\\">Inactive</Badge>\\n {/if}\\n</td>\"\n },\n {\n \"title\": \"Article Tags\",\n \"code\": \"<article>\\n <h2>Article Title</h2>\\n <div class=\\\"flex gap-1 mt-2\\\">\\n {#each article.tags as tag}\\n <Badge variant=\\\"outline\\\" size=\\\"sm\\\">{tag}</Badge>\\n {/each}\\n </div>\\n</article>\"\n },\n {\n \"title\": \"Version Badge\",\n \"code\": \"<Badge variant=\\\"info\\\">v2.0.0</Badge>\"\n },\n {\n \"title\": \"New Feature Badge\",\n \"code\": \"<h3>\\n Feature Name\\n <Badge variant=\\\"default\\\" size=\\\"sm\\\" class=\\\"ml-2\\\">New</Badge>\\n</h3>\"\n }\n ],\n \"relatedComponents\": [\n \"Alert\",\n \"Button\"\n ]\n },\n {\n \"name\": \"BarChart\",\n \"description\": \"Compare categories with vertical or horizontal bars\",\n \"category\": \"chart\",\n \"importPath\": \"@classic-homes/charts-svelte\",\n \"props\": [\n {\n \"name\": \"data\",\n \"type\": \"BarChartData\",\n \"required\": true,\n \"description\": \"Chart data with categories and series\"\n },\n {\n \"name\": \"orientation\",\n \"type\": \"'vertical' | 'horizontal'\",\n \"default\": \"'vertical'\",\n \"required\": false,\n \"description\": \"Bar orientation\"\n },\n {\n \"name\": \"stacked\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Stack bars to show composition\"\n },\n {\n \"name\": \"showValues\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Show value labels on bars\"\n },\n {\n \"name\": \"onClick\",\n \"type\": \"(params: DataPointEventParams) => void\",\n \"required\": false,\n \"description\": \"Callback when a bar is clicked\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": true,\n \"description\": \"Chart title for accessibility\"\n },\n {\n \"name\": \"description\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Description for screen readers\"\n },\n {\n \"name\": \"height\",\n \"type\": \"number | string\",\n \"default\": \"400\",\n \"required\": false,\n \"description\": \"Chart height\"\n },\n {\n \"name\": \"theme\",\n \"type\": \"'light' | 'dark' | 'auto'\",\n \"default\": \"'auto'\",\n \"required\": false,\n \"description\": \"Theme preference\"\n },\n {\n \"name\": \"showLegend\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show chart legend\"\n },\n {\n \"name\": \"showTooltip\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show tooltip on hover\"\n },\n {\n \"name\": \"showGrid\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show grid lines\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"orientation\",\n \"values\": [\n \"vertical\",\n \"horizontal\"\n ],\n \"default\": \"vertical\"\n },\n {\n \"name\": \"theme\",\n \"values\": [\n \"light\",\n \"dark\",\n \"auto\"\n ],\n \"default\": \"auto\"\n }\n ],\n \"slots\": [],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { BarChart } from '@classic-homes/charts-svelte';\\n\\n const data = {\\n categories: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'],\\n series: [\\n { name: 'Sales', data: [320, 332, 301, 334, 390] },\\n { name: 'Returns', data: [120, 132, 101, 134, 90] },\\n ],\\n };\\n</script>\\n\\n<BarChart title=\\\"Weekly Sales\\\" {data} height={400} />\"\n },\n {\n \"title\": \"Horizontal Bar Chart\",\n \"code\": \"<BarChart title=\\\"Sales by Region\\\" {data} orientation=\\\"horizontal\\\" height={400} />\"\n },\n {\n \"title\": \"Stacked Bar Chart\",\n \"code\": \"<BarChart title=\\\"Revenue Breakdown\\\" {data} stacked height={400} />\"\n },\n {\n \"title\": \"With Value Labels\",\n \"code\": \"<BarChart title=\\\"Monthly Performance\\\" {data} showValues height={400} />\"\n }\n ],\n \"relatedComponents\": [\n \"LineChart\",\n \"FunnelChart\"\n ]\n },\n {\n \"name\": \"Button\",\n \"description\": \"Clickable button component with multiple variants, sizes, and loading states\",\n \"category\": \"form\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"variant\",\n \"type\": \"'default' | 'secondary' | 'destructive' | 'outline' | 'ghost' | 'link'\",\n \"default\": \"'default'\",\n \"required\": false,\n \"description\": \"Visual style variant\"\n },\n {\n \"name\": \"size\",\n \"type\": \"'default' | 'sm' | 'lg' | 'icon'\",\n \"default\": \"'default'\",\n \"required\": false,\n \"description\": \"Size of the button\"\n },\n {\n \"name\": \"type\",\n \"type\": \"'button' | 'submit' | 'reset'\",\n \"default\": \"'button'\",\n \"required\": false,\n \"description\": \"HTML button type\"\n },\n {\n \"name\": \"href\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"If provided, renders as an anchor link\"\n },\n {\n \"name\": \"disabled\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Disables the button\"\n },\n {\n \"name\": \"loading\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Shows loading spinner\"\n },\n {\n \"name\": \"loadingText\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Text to show during loading (replaces children)\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n },\n {\n \"name\": \"onclick\",\n \"type\": \"(e: MouseEvent) => void\",\n \"required\": false,\n \"description\": \"Click handler\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"variant\",\n \"values\": [\n \"default\",\n \"secondary\",\n \"destructive\",\n \"outline\",\n \"ghost\",\n \"link\"\n ],\n \"default\": \"default\"\n },\n {\n \"name\": \"size\",\n \"values\": [\n \"default\",\n \"sm\",\n \"lg\",\n \"icon\"\n ],\n \"default\": \"default\"\n },\n {\n \"name\": \"type\",\n \"values\": [\n \"button\",\n \"submit\",\n \"reset\"\n ],\n \"default\": \"button\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Button>Click Me</Button>\"\n },\n {\n \"title\": \"Default\",\n \"description\": \"The primary action button with solid background.\",\n \"code\": \"<Button variant=\\\"default\\\">Default Button</Button>\"\n },\n {\n \"title\": \"Secondary\",\n \"description\": \"For secondary actions that need less visual emphasis.\",\n \"code\": \"<Button variant=\\\"secondary\\\">Secondary Button</Button>\"\n },\n {\n \"title\": \"Destructive\",\n \"description\": \"For dangerous or irreversible actions like delete.\",\n \"code\": \"<Button variant=\\\"destructive\\\">Delete</Button>\"\n },\n {\n \"title\": \"Outline\",\n \"description\": \"Bordered button with transparent background.\",\n \"code\": \"<Button variant=\\\"outline\\\">Outline Button</Button>\"\n },\n {\n \"title\": \"Ghost\",\n \"description\": \"Minimal button with no background until hovered.\",\n \"code\": \"<Button variant=\\\"ghost\\\">Ghost Button</Button>\"\n },\n {\n \"title\": \"Link\",\n \"description\": \"Styled as an inline text link.\",\n \"code\": \"<Button variant=\\\"link\\\">Link Button</Button>\"\n },\n {\n \"title\": \"Disabled\",\n \"code\": \"<Button disabled>Disabled</Button>\"\n },\n {\n \"title\": \"Loading\",\n \"description\": \"Shows a spinner and optionally replaces the text:\",\n \"code\": \"<Button loading>Submit</Button>\\n<Button loading loadingText=\\\"Saving...\\\">Save</Button>\"\n },\n {\n \"title\": \"Button Group\",\n \"code\": \"<div class=\\\"flex gap-2\\\">\\n <Button variant=\\\"outline\\\">Cancel</Button>\\n <Button>Save Changes</Button>\\n</div>\"\n },\n {\n \"title\": \"Full Width Button\",\n \"code\": \"<Button class=\\\"w-full\\\">Full Width Button</Button>\"\n },\n {\n \"title\": \"Async Action\",\n \"code\": \"<script>\\n let loading = $state(false);\\n\\n async function handleSave() {\\n loading = true;\\n try {\\n await saveData();\\n } finally {\\n loading = false;\\n }\\n }\\n</script>\\n\\n<Button {loading} loadingText=\\\"Saving...\\\" onclick={handleSave}>Save</Button>\"\n }\n ],\n \"relatedComponents\": [\n \"Input\",\n \"FormField\",\n \"Dialog\"\n ]\n },\n {\n \"name\": \"CandlestickChart\",\n \"description\": \"Financial OHLC data with volume bars\",\n \"category\": \"chart\",\n \"importPath\": \"@classic-homes/charts-svelte\",\n \"props\": [\n {\n \"name\": \"data\",\n \"type\": \"CandlestickData\",\n \"required\": true,\n \"description\": \"OHLC data with optional volume\"\n },\n {\n \"name\": \"showVolume\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Display volume bars below chart\"\n },\n {\n \"name\": \"onClick\",\n \"type\": \"(params: CandlestickEventParams) => void\",\n \"required\": false,\n \"description\": \"Callback when clicked\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": true,\n \"description\": \"Chart title for accessibility\"\n },\n {\n \"name\": \"height\",\n \"type\": \"number | string\",\n \"default\": \"400\",\n \"required\": false,\n \"description\": \"Chart height\"\n },\n {\n \"name\": \"theme\",\n \"type\": \"'light' | 'dark' | 'auto'\",\n \"default\": \"'auto'\",\n \"required\": false,\n \"description\": \"Theme preference\"\n },\n {\n \"name\": \"showTooltip\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show tooltip on hover\"\n },\n {\n \"name\": \"showGrid\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show grid lines\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"theme\",\n \"values\": [\n \"light\",\n \"dark\",\n \"auto\"\n ],\n \"default\": \"auto\"\n }\n ],\n \"slots\": [],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { CandlestickChart } from '@classic-homes/charts-svelte';\\n\\n const data = {\\n dates: ['2024-01', '2024-02', '2024-03', '2024-04'],\\n data: [\\n { open: 20, close: 34, low: 10, high: 38 },\\n { open: 40, close: 35, low: 30, high: 50 },\\n { open: 31, close: 38, low: 28, high: 48 },\\n { open: 38, close: 30, low: 25, high: 44 },\\n ],\\n volume: [100, 120, 90, 140],\\n };\\n</script>\\n\\n<CandlestickChart title=\\\"Stock Price\\\" {data} showVolume height={400} />\"\n },\n {\n \"title\": \"With Volume\",\n \"code\": \"<CandlestickChart title=\\\"AAPL Stock\\\" {data} showVolume height={500} />\"\n },\n {\n \"title\": \"Without Volume\",\n \"code\": \"<CandlestickChart\\n title=\\\"Price History\\\"\\n data={{\\n dates: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'],\\n data: [\\n { open: 100, close: 110, low: 95, high: 115 },\\n { open: 110, close: 105, low: 100, high: 120 },\\n { open: 105, close: 115, low: 102, high: 118 },\\n { open: 115, close: 108, low: 105, high: 120 },\\n { open: 108, close: 125, low: 105, high: 128 },\\n ],\\n }}\\n/>\"\n }\n ],\n \"relatedComponents\": [\n \"LineChart\",\n \"BarChart\"\n ]\n },\n {\n \"name\": \"Card\",\n \"description\": \"Container component for grouping related content\",\n \"category\": \"layout\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Card>\\n <CardHeader>\\n <CardTitle>Card Title</CardTitle>\\n <CardDescription>Card description text</CardDescription>\\n </CardHeader>\\n <CardContent>\\n <p>Card content goes here.</p>\\n </CardContent>\\n <CardFooter>\\n <Button>Action</Button>\\n </CardFooter>\\n</Card>\"\n },\n {\n \"title\": \"Default\",\n \"description\": \"Standard card with 1px border:\",\n \"code\": \"<Card variant=\\\"default\\\">\\n <CardContent>Default card</CardContent>\\n</Card>\"\n },\n {\n \"title\": \"Featured\",\n \"description\": \"Emphasized card with 2px border:\",\n \"code\": \"<Card variant=\\\"featured\\\">\\n <CardContent>Featured card with thicker border</CardContent>\\n</Card>\"\n },\n {\n \"title\": \"Highlight\",\n \"description\": \"Positive/info callout with teal border:\",\n \"code\": \"<Card variant=\\\"highlight\\\">\\n <CardContent>Highlight card for important info</CardContent>\\n</Card>\"\n },\n {\n \"title\": \"Warning\",\n \"description\": \"Alert card with red border:\",\n \"code\": \"<Card variant=\\\"warning\\\">\\n <CardContent>Warning card for alerts</CardContent>\\n</Card>\"\n },\n {\n \"title\": \"Profile Card\",\n \"code\": \"<Card class=\\\"max-w-sm\\\">\\n <CardHeader>\\n <div class=\\\"flex items-center gap-4\\\">\\n <Avatar>\\n <AvatarImage src=\\\"/avatar.jpg\\\" alt=\\\"User\\\" />\\n <AvatarFallback>JD</AvatarFallback>\\n </Avatar>\\n <div>\\n <CardTitle>Jane Doe</CardTitle>\\n <CardDescription>Product Designer</CardDescription>\\n </div>\\n </div>\\n </CardHeader>\\n <CardContent>\\n <p class=\\\"text-sm\\\">Building beautiful interfaces at Acme Corp.</p>\\n </CardContent>\\n <CardFooter class=\\\"gap-2\\\">\\n <Button variant=\\\"outline\\\" size=\\\"sm\\\">Message</Button>\\n <Button size=\\\"sm\\\">Follow</Button>\\n </CardFooter>\\n</Card>\"\n },\n {\n \"title\": \"Pricing Card\",\n \"code\": \"<Card variant=\\\"featured\\\" class=\\\"max-w-sm text-center\\\">\\n <CardHeader>\\n <CardTitle>Pro Plan</CardTitle>\\n <CardDescription>For growing teams</CardDescription>\\n </CardHeader>\\n <CardContent>\\n <div class=\\\"text-4xl font-bold\\\">$29</div>\\n <p class=\\\"text-muted-foreground\\\">/month</p>\\n <ul class=\\\"mt-4 space-y-2 text-left\\\">\\n <li>Unlimited projects</li>\\n <li>Priority support</li>\\n <li>Advanced analytics</li>\\n </ul>\\n </CardContent>\\n <CardFooter>\\n <Button class=\\\"w-full\\\">Get Started</Button>\\n </CardFooter>\\n</Card>\"\n },\n {\n \"title\": \"Stats Card\",\n \"code\": \"<Card>\\n <CardHeader class=\\\"flex-row items-center justify-between pb-2\\\">\\n <CardTitle class=\\\"text-sm font-medium\\\">Total Revenue</CardTitle>\\n <svg class=\\\"h-4 w-4 text-muted-foreground\\\"><!-- icon --></svg>\\n </CardHeader>\\n <CardContent>\\n <div class=\\\"text-2xl font-bold\\\">$45,231.89</div>\\n <p class=\\\"text-xs text-muted-foreground\\\">+20.1% from last month</p>\\n </CardContent>\\n</Card>\"\n },\n {\n \"title\": \"Card Grid\",\n \"code\": \"<div class=\\\"grid gap-4 md:grid-cols-2 lg:grid-cols-3\\\">\\n {#each items as item}\\n <Card interactive>\\n <CardHeader>\\n <CardTitle>{item.title}</CardTitle>\\n </CardHeader>\\n <CardContent>\\n <p>{item.description}</p>\\n </CardContent>\\n </Card>\\n {/each}\\n</div>\"\n },\n {\n \"title\": \"Simple Content Card\",\n \"code\": \"<Card>\\n <CardContent class=\\\"pt-6\\\">\\n <p>Simple card with just content, no header or footer.</p>\\n </CardContent>\\n</Card>\"\n }\n ],\n \"relatedComponents\": [\n \"Alert\",\n \"Dialog\"\n ]\n },\n {\n \"name\": \"CardContent\",\n \"description\": \"Main content area container for Card components\",\n \"category\": \"layout\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Card>\\n <CardContent>\\n <p>This is the main content of the card.</p>\\n </CardContent>\\n</Card>\"\n },\n {\n \"title\": \"With Header\",\n \"code\": \"<Card>\\n <CardHeader>\\n <CardTitle>Settings</CardTitle>\\n </CardHeader>\\n <CardContent>\\n <p>Adjust your preferences below.</p>\\n </CardContent>\\n</Card>\"\n },\n {\n \"title\": \"Standalone Content\",\n \"description\": \"When using without a header, add top padding:\",\n \"code\": \"<Card>\\n <CardContent class=\\\"pt-6\\\">\\n <p>Simple card with just content.</p>\\n </CardContent>\\n</Card>\"\n },\n {\n \"title\": \"With Form Elements\",\n \"code\": \"<CardContent>\\n <div class=\\\"space-y-4\\\">\\n <FormField label=\\\"Email\\\" name=\\\"email\\\" />\\n <FormField label=\\\"Password\\\" name=\\\"password\\\" type=\\\"password\\\" />\\n </div>\\n</CardContent>\"\n },\n {\n \"title\": \"Rich Content\",\n \"code\": \"<CardContent>\\n <div class=\\\"flex items-center gap-4\\\">\\n <Avatar>\\n <AvatarImage src=\\\"/user.jpg\\\" alt=\\\"User\\\" />\\n <AvatarFallback>JD</AvatarFallback>\\n </Avatar>\\n <div>\\n <p class=\\\"font-medium\\\">John Doe</p>\\n <p class=\\\"text-sm text-muted-foreground\\\">Developer</p>\\n </div>\\n </div>\\n</CardContent>\"\n }\n ],\n \"relatedComponents\": [\n \"Card\",\n \"CardHeader\",\n \"CardFooter\"\n ]\n },\n {\n \"name\": \"CardDescription\",\n \"description\": \"Secondary text component for Card headers\",\n \"category\": \"layout\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Card>\\n <CardHeader>\\n <CardTitle>Card Title</CardTitle>\\n <CardDescription>This is a description of the card content.</CardDescription>\\n </CardHeader>\\n</Card>\"\n },\n {\n \"title\": \"Descriptive Text\",\n \"code\": \"<CardDescription>\\n Configure your notification preferences and choose how you want to be contacted.\\n</CardDescription>\"\n },\n {\n \"title\": \"With Custom Styling\",\n \"code\": \"<CardDescription class=\\\"text-xs\\\">Last updated 2 hours ago</CardDescription>\"\n },\n {\n \"title\": \"Multiple Lines\",\n \"code\": \"<CardDescription>\\n Your subscription includes unlimited access to all premium features. Upgrade anytime to unlock\\n more.\\n</CardDescription>\"\n }\n ],\n \"relatedComponents\": [\n \"Card\",\n \"CardHeader\",\n \"CardTitle\"\n ]\n },\n {\n \"name\": \"CardFooter\",\n \"description\": \"Footer section container for Card action buttons\",\n \"category\": \"layout\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Card>\\n <CardContent>\\n <p>Card content here.</p>\\n </CardContent>\\n <CardFooter>\\n <Button>Save Changes</Button>\\n </CardFooter>\\n</Card>\"\n },\n {\n \"title\": \"Multiple Actions\",\n \"code\": \"<CardFooter class=\\\"gap-2\\\">\\n <Button variant=\\\"outline\\\">Cancel</Button>\\n <Button>Save</Button>\\n</CardFooter>\"\n },\n {\n \"title\": \"Right-Aligned Actions\",\n \"code\": \"<CardFooter class=\\\"justify-end gap-2\\\">\\n <Button variant=\\\"ghost\\\">Skip</Button>\\n <Button>Continue</Button>\\n</CardFooter>\"\n },\n {\n \"title\": \"Space Between\",\n \"code\": \"<CardFooter class=\\\"justify-between\\\">\\n <Button variant=\\\"ghost\\\">Back</Button>\\n <Button>Next</Button>\\n</CardFooter>\"\n },\n {\n \"title\": \"Full-Width Button\",\n \"code\": \"<CardFooter>\\n <Button class=\\\"w-full\\\">Get Started</Button>\\n</CardFooter>\"\n },\n {\n \"title\": \"With Summary Text\",\n \"code\": \"<CardFooter class=\\\"justify-between\\\">\\n <span class=\\\"text-sm text-muted-foreground\\\">2 items selected</span>\\n <Button size=\\\"sm\\\">Delete Selected</Button>\\n</CardFooter>\"\n }\n ],\n \"relatedComponents\": [\n \"Card\",\n \"CardContent\",\n \"Button\"\n ]\n },\n {\n \"name\": \"CardHeader\",\n \"description\": \"Header section container for Card components with title and description\",\n \"category\": \"layout\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"variant\",\n \"type\": \"'default' | 'compact' | 'bordered' | 'shaded'\",\n \"default\": \"'default'\",\n \"required\": false,\n \"description\": \"Header style variant\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"variant\",\n \"values\": [\n \"default\",\n \"compact\",\n \"bordered\",\n \"shaded\"\n ],\n \"default\": \"default\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Card>\\n <CardHeader>\\n <CardTitle>Card Title</CardTitle>\\n <CardDescription>Card description text</CardDescription>\\n </CardHeader>\\n</Card>\"\n },\n {\n \"title\": \"Default\",\n \"description\": \"Standard padding (p-6):\",\n \"code\": \"<CardHeader variant=\\\"default\\\">\\n <CardTitle>Default Header</CardTitle>\\n</CardHeader>\"\n },\n {\n \"title\": \"Compact\",\n \"description\": \"Reduced padding (p-4):\",\n \"code\": \"<CardHeader variant=\\\"compact\\\">\\n <CardTitle>Compact Header</CardTitle>\\n</CardHeader>\"\n },\n {\n \"title\": \"Bordered\",\n \"description\": \"Header with bottom border:\",\n \"code\": \"<CardHeader variant=\\\"bordered\\\">\\n <CardTitle>Bordered Header</CardTitle>\\n</CardHeader>\"\n },\n {\n \"title\": \"Shaded\",\n \"description\": \"Header with muted background:\",\n \"code\": \"<CardHeader variant=\\\"shaded\\\">\\n <CardTitle>Shaded Header</CardTitle>\\n</CardHeader>\"\n }\n ],\n \"relatedComponents\": [\n \"Card\",\n \"CardTitle\",\n \"CardDescription\"\n ]\n },\n {\n \"name\": \"CardTitle\",\n \"description\": \"Title heading component for Card headers\",\n \"category\": \"layout\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Card>\\n <CardHeader>\\n <CardTitle>Card Title</CardTitle>\\n </CardHeader>\\n</Card>\"\n },\n {\n \"title\": \"With Description\",\n \"code\": \"<CardHeader>\\n <CardTitle>Account Settings</CardTitle>\\n <CardDescription>Manage your account preferences</CardDescription>\\n</CardHeader>\"\n },\n {\n \"title\": \"Custom Styling\",\n \"code\": \"<CardTitle class=\\\"text-primary\\\">Featured Title</CardTitle>\"\n },\n {\n \"title\": \"In Stats Card\",\n \"code\": \"<CardHeader class=\\\"flex-row items-center justify-between pb-2\\\">\\n <CardTitle class=\\\"text-sm font-medium\\\">Total Revenue</CardTitle>\\n <Icon name=\\\"dollar\\\" class=\\\"h-4 w-4 text-muted-foreground\\\" />\\n</CardHeader>\"\n }\n ],\n \"relatedComponents\": [\n \"Card\",\n \"CardHeader\",\n \"CardDescription\"\n ]\n },\n {\n \"name\": \"ChartContainer\",\n \"description\": \"Base wrapper component for charts with loading, error, and empty states\",\n \"category\": \"chart\",\n \"importPath\": \"@classic-homes/charts-svelte\",\n \"props\": [\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": true,\n \"description\": \"Chart title for accessibility (aria-label)\"\n },\n {\n \"name\": \"description\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Chart description for screen readers\"\n },\n {\n \"name\": \"height\",\n \"type\": \"number | string\",\n \"default\": \"400\",\n \"required\": false,\n \"description\": \"Chart container height\"\n },\n {\n \"name\": \"loading\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Show loading skeleton\"\n },\n {\n \"name\": \"error\",\n \"type\": \"string | null\",\n \"required\": false,\n \"description\": \"Error message to display\"\n },\n {\n \"name\": \"empty\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Show empty state\"\n },\n {\n \"name\": \"emptyMessage\",\n \"type\": \"string\",\n \"default\": \"'No data available'\",\n \"required\": false,\n \"description\": \"Custom empty state message\"\n },\n {\n \"name\": \"onRetry\",\n \"type\": \"() => void\",\n \"required\": false,\n \"description\": \"Callback for retry button in error state\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes for chart area\"\n },\n {\n \"name\": \"wrapperClass\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes for outer wrapper\"\n }\n ],\n \"variants\": [],\n \"slots\": [],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { ChartContainer } from '@classic-homes/charts-svelte';\\n</script>\\n\\n<ChartContainer title=\\\"Sales Overview\\\" height={400}>\\n <!-- Your chart content here -->\\n</ChartContainer>\"\n },\n {\n \"title\": \"With Loading State\",\n \"code\": \"<script>\\n import { ChartContainer, LineChart } from '@classic-homes/charts-svelte';\\n\\n let loading = $state(true);\\n let data = $state(null);\\n</script>\\n\\n<ChartContainer title=\\\"Revenue\\\" {loading}>\\n {#if data}\\n <LineChart {data} title=\\\"Revenue\\\" />\\n {/if}\\n</ChartContainer>\"\n },\n {\n \"title\": \"With Error State\",\n \"code\": \"<script>\\n import { ChartContainer, BarChart } from '@classic-homes/charts-svelte';\\n\\n let error = $state(null);\\n\\n async function fetchData() {\\n try {\\n // fetch data\\n } catch (e) {\\n error = e.message;\\n }\\n }\\n</script>\\n\\n<ChartContainer title=\\\"Analytics\\\" {error} onRetry={fetchData}>\\n <BarChart {data} title=\\\"Analytics\\\" />\\n</ChartContainer>\"\n },\n {\n \"title\": \"With Empty State\",\n \"code\": \"<script>\\n import { ChartContainer, AreaChart } from '@classic-homes/charts-svelte';\\n\\n let data = $state([]);\\n</script>\\n\\n<ChartContainer\\n title=\\\"User Activity\\\"\\n empty={data.length === 0}\\n emptyMessage=\\\"No activity recorded yet\\\"\\n>\\n <AreaChart {data} title=\\\"User Activity\\\" />\\n</ChartContainer>\"\n },\n {\n \"title\": \"Custom Styling\",\n \"code\": \"<ChartContainer title=\\\"Dashboard Chart\\\" wrapperClass=\\\"shadow-lg\\\" class=\\\"p-4\\\">\\n <PieChart {data} title=\\\"Distribution\\\" />\\n</ChartContainer>\"\n }\n ],\n \"relatedComponents\": [\n \"ChartSkeleton\",\n \"ChartError\",\n \"ChartEmpty\"\n ]\n },\n {\n \"name\": \"ChartEmpty\",\n \"description\": \"Empty state component displayed when chart has no data\",\n \"category\": \"chart\",\n \"importPath\": \"@classic-homes/charts-svelte\",\n \"props\": [\n {\n \"name\": \"message\",\n \"type\": \"string\",\n \"default\": \"'No data available'\",\n \"required\": false,\n \"description\": \"Empty state message\"\n },\n {\n \"name\": \"height\",\n \"type\": \"number | string\",\n \"default\": \"400\",\n \"required\": false,\n \"description\": \"Component height\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { ChartEmpty } from '@classic-homes/charts-svelte';\\n</script>\\n\\n<ChartEmpty />\"\n },\n {\n \"title\": \"Custom Message\",\n \"code\": \"<ChartEmpty message=\\\"No sales data for this period\\\" />\"\n },\n {\n \"title\": \"Custom Height\",\n \"code\": \"<ChartEmpty height={300} message=\\\"Start adding data to see your chart\\\" />\"\n },\n {\n \"title\": \"Conditional Rendering\",\n \"code\": \"<script>\\n import { ChartEmpty, LineChart } from '@classic-homes/charts-svelte';\\n\\n let data = $state([]);\\n</script>\\n\\n{#if data.length === 0}\\n <ChartEmpty message=\\\"No activity recorded\\\" />\\n{:else}\\n <LineChart {data} title=\\\"Activity\\\" />\\n{/if}\"\n },\n {\n \"title\": \"With Custom Styling\",\n \"code\": \"<ChartEmpty message=\\\"No results found\\\" class=\\\"rounded-xl bg-muted/30\\\" height={250} />\"\n }\n ],\n \"relatedComponents\": [\n \"ChartContainer\",\n \"ChartError\",\n \"ChartSkeleton\"\n ]\n },\n {\n \"name\": \"ChartError\",\n \"description\": \"Error state component for charts with optional retry functionality\",\n \"category\": \"chart\",\n \"importPath\": \"@classic-homes/charts-svelte\",\n \"props\": [\n {\n \"name\": \"message\",\n \"type\": \"string\",\n \"required\": true,\n \"description\": \"Error message to display\"\n },\n {\n \"name\": \"height\",\n \"type\": \"number | string\",\n \"default\": \"400\",\n \"required\": false,\n \"description\": \"Component height\"\n },\n {\n \"name\": \"onRetry\",\n \"type\": \"() => void\",\n \"required\": false,\n \"description\": \"Callback when retry button is clicked\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { ChartError } from '@classic-homes/charts-svelte';\\n</script>\\n\\n<ChartError message=\\\"Failed to load chart data\\\" />\"\n },\n {\n \"title\": \"With Retry Button\",\n \"code\": \"<script>\\n import { ChartError } from '@classic-homes/charts-svelte';\\n\\n async function fetchData() {\\n // Retry logic\\n }\\n</script>\\n\\n<ChartError message=\\\"Network error occurred\\\" onRetry={fetchData} />\"\n },\n {\n \"title\": \"Custom Height\",\n \"code\": \"<ChartError message=\\\"Unable to process data\\\" height={300} onRetry={handleRetry} />\"\n },\n {\n \"title\": \"Conditional Error Handling\",\n \"code\": \"<script>\\n import { ChartError, BarChart } from '@classic-homes/charts-svelte';\\n\\n let error = $state(null);\\n let data = $state(null);\\n\\n async function loadData() {\\n try {\\n error = null;\\n data = await fetchChartData();\\n } catch (e) {\\n error = e.message;\\n }\\n }\\n</script>\\n\\n{#if error}\\n <ChartError message={error} onRetry={loadData} />\\n{:else if data}\\n <BarChart {data} title=\\\"Sales\\\" />\\n{/if}\"\n },\n {\n \"title\": \"With Custom Styling\",\n \"code\": \"<ChartError\\n message=\\\"Service temporarily unavailable\\\"\\n class=\\\"rounded-xl\\\"\\n onRetry={() => location.reload()}\\n/>\"\n }\n ],\n \"relatedComponents\": [\n \"ChartContainer\",\n \"ChartEmpty\",\n \"ChartSkeleton\"\n ]\n },\n {\n \"name\": \"ChartSkeleton\",\n \"description\": \"Loading skeleton placeholder for charts with animated bars\",\n \"category\": \"chart\",\n \"importPath\": \"@classic-homes/charts-svelte\",\n \"props\": [\n {\n \"name\": \"height\",\n \"type\": \"number | string\",\n \"default\": \"400\",\n \"required\": false,\n \"description\": \"Skeleton height\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { ChartSkeleton } from '@classic-homes/charts-svelte';\\n</script>\\n\\n<ChartSkeleton />\"\n },\n {\n \"title\": \"Custom Height\",\n \"code\": \"<ChartSkeleton height={300} />\"\n },\n {\n \"title\": \"With Custom Class\",\n \"code\": \"<ChartSkeleton class=\\\"rounded-xl shadow-md\\\" />\"\n },\n {\n \"title\": \"Conditional Loading\",\n \"code\": \"<script>\\n import { ChartSkeleton, LineChart } from '@classic-homes/charts-svelte';\\n\\n let loading = $state(true);\\n let data = $state(null);\\n\\n async function loadData() {\\n loading = true;\\n data = await fetchChartData();\\n loading = false;\\n }\\n</script>\\n\\n{#if loading}\\n <ChartSkeleton height={400} />\\n{:else}\\n <LineChart {data} title=\\\"Revenue\\\" />\\n{/if}\"\n },\n {\n \"title\": \"In Card\",\n \"code\": \"<script>\\n import { ChartSkeleton, AreaChart } from '@classic-homes/charts-svelte';\\n import { Card, CardHeader, CardTitle, CardContent } from '@classic-homes/theme-svelte';\\n</script>\\n\\n<Card>\\n <CardHeader>\\n <CardTitle>Analytics</CardTitle>\\n </CardHeader>\\n <CardContent>\\n {#if loading}\\n <ChartSkeleton height={300} />\\n {:else}\\n <AreaChart {data} title=\\\"Monthly Users\\\" />\\n {/if}\\n </CardContent>\\n</Card>\"\n },\n {\n \"title\": \"Multiple Skeletons\",\n \"code\": \"<div class=\\\"grid grid-cols-2 gap-4\\\">\\n <ChartSkeleton height={250} />\\n <ChartSkeleton height={250} />\\n</div>\"\n }\n ],\n \"relatedComponents\": [\n \"ChartContainer\",\n \"ChartError\",\n \"ChartEmpty\",\n \"Skeleton\"\n ]\n },\n {\n \"name\": \"Checkbox\",\n \"description\": \"Checkbox input for boolean selections and multiple choice options\",\n \"category\": \"form\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"checked\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Whether the checkbox is checked (bindable)\"\n },\n {\n \"name\": \"disabled\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Disables the checkbox\"\n },\n {\n \"name\": \"required\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Marks as required\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Name attribute for forms\"\n },\n {\n \"name\": \"value\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Value attribute for forms\"\n },\n {\n \"name\": \"id\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Element ID for label association\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n },\n {\n \"name\": \"onCheckedChange\",\n \"type\": \"(checked: boolean) => void\",\n \"required\": false,\n \"description\": \"Callback when checked state changes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n let checked = $state(false);\\n</script>\\n\\n<Checkbox bind:checked />\"\n },\n {\n \"title\": \"Checked\",\n \"code\": \"<Checkbox checked />\"\n },\n {\n \"title\": \"Disabled\",\n \"code\": \"<Checkbox disabled />\\n<Checkbox disabled checked />\"\n },\n {\n \"title\": \"Required\",\n \"code\": \"<Checkbox required id=\\\"required-checkbox\\\" />\"\n },\n {\n \"title\": \"Terms Agreement\",\n \"code\": \"<script>\\n let agreed = $state(false);\\n</script>\\n\\n<div class=\\\"flex items-start gap-2\\\">\\n <Checkbox id=\\\"agree\\\" bind:checked={agreed} class=\\\"mt-1\\\" />\\n <Label for=\\\"agree\\\" class=\\\"leading-normal\\\">\\n I agree to the <a href=\\\"/terms\\\" class=\\\"text-primary underline\\\">Terms of Service</a>\\n and <a href=\\\"/privacy\\\" class=\\\"text-primary underline\\\">Privacy Policy</a>\\n </Label>\\n</div>\\n\\n<Button disabled={!agreed}>Continue</Button>\"\n },\n {\n \"title\": \"Feature Selection\",\n \"code\": \"<script>\\n let features = $state(['basic']);\\n\\n function toggleFeature(feature: string) {\\n if (features.includes(feature)) {\\n features = features.filter((f) => f !== feature);\\n } else {\\n features = [...features, feature];\\n }\\n }\\n</script>\\n\\n<div class=\\\"space-y-2\\\">\\n <div class=\\\"flex items-center gap-2\\\">\\n <Checkbox\\n id=\\\"basic\\\"\\n checked={features.includes('basic')}\\n onCheckedChange={() => toggleFeature('basic')}\\n />\\n <Label for=\\\"basic\\\">Basic features</Label>\\n </div>\\n <div class=\\\"flex items-center gap-2\\\">\\n <Checkbox\\n id=\\\"advanced\\\"\\n checked={features.includes('advanced')}\\n onCheckedChange={() => toggleFeature('advanced')}\\n />\\n <Label for=\\\"advanced\\\">Advanced features</Label>\\n </div>\\n <div class=\\\"flex items-center gap-2\\\">\\n <Checkbox\\n id=\\\"premium\\\"\\n checked={features.includes('premium')}\\n onCheckedChange={() => toggleFeature('premium')}\\n />\\n <Label for=\\\"premium\\\">Premium features</Label>\\n </div>\\n</div>\"\n },\n {\n \"title\": \"Form Submission\",\n \"code\": \"<form onsubmit={handleSubmit}>\\n <Checkbox name=\\\"newsletter\\\" value=\\\"subscribed\\\" />\\n <button type=\\\"submit\\\">Submit</button>\\n</form>\"\n }\n ],\n \"relatedComponents\": [\n \"Switch\",\n \"RadioGroup\",\n \"Label\"\n ]\n },\n {\n \"name\": \"Combobox\",\n \"description\": \"Searchable select with async loading support\",\n \"category\": \"form\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"value\",\n \"type\": \"string\",\n \"default\": \"''\",\n \"required\": false,\n \"description\": \"Current selected value (bindable)\"\n },\n {\n \"name\": \"options\",\n \"type\": \"ComboboxOption[]\",\n \"default\": \"Required\",\n \"required\": false,\n \"description\": \"Array of options\"\n },\n {\n \"name\": \"placeholder\",\n \"type\": \"string\",\n \"default\": \"'Select an option...'\",\n \"required\": false,\n \"description\": \"Placeholder text\"\n },\n {\n \"name\": \"emptyMessage\",\n \"type\": \"string\",\n \"default\": \"'No results found.'\",\n \"required\": false,\n \"description\": \"Message when no options match\"\n },\n {\n \"name\": \"disabled\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Disables the combobox\"\n },\n {\n \"name\": \"required\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Marks as required\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Name attribute for forms\"\n },\n {\n \"name\": \"id\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Element ID (auto-generated if empty)\"\n },\n {\n \"name\": \"label\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Label text\"\n },\n {\n \"name\": \"hint\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Hint text below the input\"\n },\n {\n \"name\": \"error\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Error message\"\n },\n {\n \"name\": \"loading\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Shows loading state\"\n },\n {\n \"name\": \"debounceMs\",\n \"type\": \"number\",\n \"default\": \"300\",\n \"required\": false,\n \"description\": \"Debounce time for search\"\n },\n {\n \"name\": \"onValueChange\",\n \"type\": \"(value: string) => void\",\n \"required\": false,\n \"description\": \"Callback when value changes\"\n },\n {\n \"name\": \"onSearch\",\n \"type\": \"(query: string) => void\",\n \"required\": false,\n \"description\": \"Callback for search queries\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n let value = $state('');\\n\\n const options = [\\n { value: 'apple', label: 'Apple' },\\n { value: 'banana', label: 'Banana' },\\n { value: 'orange', label: 'Orange' },\\n ];\\n</script>\\n\\n<Combobox {options} bind:value placeholder=\\\"Select a fruit...\\\" />\"\n },\n {\n \"title\": \"User Search\",\n \"code\": \"<script>\\n let selectedUser = $state('');\\n let users = $state([]);\\n let loading = $state(false);\\n\\n async function searchUsers(query: string) {\\n if (!query) {\\n users = [];\\n return;\\n }\\n loading = true;\\n const response = await fetch(`/api/users?search=${query}`);\\n users = await response.json();\\n loading = false;\\n }\\n</script>\\n\\n<Combobox\\n label=\\\"User\\\"\\n options={users}\\n bind:value={selectedUser}\\n onSearch={searchUsers}\\n {loading}\\n placeholder=\\\"Search users...\\\"\\n emptyMessage=\\\"No users found\\\"\\n/>\"\n },\n {\n \"title\": \"Location Autocomplete\",\n \"code\": \"<Combobox\\n label=\\\"Location\\\"\\n hint=\\\"Enter a city name or zip code\\\"\\n options={locations}\\n bind:value\\n onSearch={searchLocations}\\n placeholder=\\\"Enter city or zip code...\\\"\\n emptyMessage=\\\"No locations found\\\"\\n/>\"\n }\n ],\n \"relatedComponents\": [\n \"Select\",\n \"MultiSelect\"\n ]\n },\n {\n \"name\": \"DashboardLayout\",\n \"description\": \"Complete dashboard layout with responsive sidebar and header\",\n \"category\": \"layout\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"navigation\",\n \"type\": \"NavSection[]\",\n \"required\": false,\n \"description\": \"Navigation sections for sidebar\"\n },\n {\n \"name\": \"user\",\n \"type\": \"User\",\n \"required\": false,\n \"description\": \"Current user data\"\n },\n {\n \"name\": \"appName\",\n \"type\": \"string\",\n \"default\": \"'Dashboard'\",\n \"required\": false,\n \"description\": \"Application name\"\n },\n {\n \"name\": \"pageTitle\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Page title in header\"\n },\n {\n \"name\": \"backLink\",\n \"type\": \"BackLink\",\n \"required\": false,\n \"description\": \"Back link at top of navigation\"\n },\n {\n \"name\": \"sidebarVariant\",\n \"type\": \"'light' | 'dark'\",\n \"default\": \"'light'\",\n \"required\": false,\n \"description\": \"Sidebar visual variant\"\n },\n {\n \"name\": \"sidebarCollapsed\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Initial collapsed state\"\n },\n {\n \"name\": \"showHeader\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Whether to show header\"\n },\n {\n \"name\": \"logo\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Custom logo\"\n },\n {\n \"name\": \"icon\",\n \"type\": \"Snippet<[NavItem]>\",\n \"required\": false,\n \"description\": \"Custom icon renderer\"\n },\n {\n \"name\": \"quickLinks\",\n \"type\": \"QuickLink[]\",\n \"required\": false,\n \"description\": \"Quick links at bottom\"\n },\n {\n \"name\": \"quickLinksDisplay\",\n \"type\": \"'list' | 'icons'\",\n \"default\": \"'list'\",\n \"required\": false,\n \"description\": \"Quick links display mode\"\n },\n {\n \"name\": \"onNavigate\",\n \"type\": \"(item: NavItem) => void\",\n \"required\": false,\n \"description\": \"Navigation callback\"\n },\n {\n \"name\": \"headerStart\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Content after toggle button\"\n },\n {\n \"name\": \"headerEnd\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Content at end of header\"\n },\n {\n \"name\": \"userMenu\",\n \"type\": \"Snippet<[User]>\",\n \"required\": false,\n \"description\": \"Custom user menu\"\n },\n {\n \"name\": \"sidebarFooter\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Sidebar footer content\"\n },\n {\n \"name\": \"expandedWidth\",\n \"type\": \"number\",\n \"default\": \"256\",\n \"required\": false,\n \"description\": \"Expanded sidebar width (px)\"\n },\n {\n \"name\": \"collapsedWidth\",\n \"type\": \"number\",\n \"default\": \"64\",\n \"required\": false,\n \"description\": \"Collapsed sidebar width (px)\"\n },\n {\n \"name\": \"searchable\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Enable navigation search\"\n },\n {\n \"name\": \"searchPlaceholder\",\n \"type\": \"string\",\n \"default\": \"'Search...'\",\n \"required\": false,\n \"description\": \"Search input placeholder\"\n },\n {\n \"name\": \"headerSearch\",\n \"type\": \"HeaderSearchConfig\",\n \"required\": false,\n \"description\": \"Header search configuration\"\n },\n {\n \"name\": \"mobileBreakpoint\",\n \"type\": \"'sm' | 'md' | 'lg'\",\n \"default\": \"'lg'\",\n \"required\": false,\n \"description\": \"Mobile/desktop breakpoint\"\n },\n {\n \"name\": \"children\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Main content\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"sidebarVariant\",\n \"values\": [\n \"light\",\n \"dark\"\n ],\n \"default\": \"light\"\n },\n {\n \"name\": \"quickLinksDisplay\",\n \"values\": [\n \"list\",\n \"icons\"\n ],\n \"default\": \"list\"\n },\n {\n \"name\": \"mobileBreakpoint\",\n \"values\": [\n \"sm\",\n \"md\",\n \"lg\"\n ],\n \"default\": \"lg\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n const navigation = [\\n {\\n id: 'main',\\n title: 'Main',\\n items: [\\n { id: 'dashboard', name: 'Dashboard', href: '/dashboard', icon: 'home' },\\n { id: 'projects', name: 'Projects', href: '/projects', icon: 'folder' },\\n ],\\n },\\n ];\\n</script>\\n\\n<DashboardLayout {navigation}>\\n <h1>Dashboard Content</h1>\\n</DashboardLayout>\"\n }\n ],\n \"relatedComponents\": [\n \"Sidebar\",\n \"Header\",\n \"AppShell\"\n ]\n },\n {\n \"name\": \"DataTable\",\n \"description\": \"Powerful data table with TanStack Table - sorting, filtering, pagination, virtualization, and inline editing\",\n \"category\": \"data\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"data\",\n \"type\": \"T[]\",\n \"required\": false,\n \"description\": \"Array of data rows\"\n },\n {\n \"name\": \"columns\",\n \"type\": \"DataTableColumn<T>[]\",\n \"required\": false,\n \"description\": \"Column definitions\"\n },\n {\n \"name\": \"loading\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Show loading state\"\n },\n {\n \"name\": \"loadingRows\",\n \"type\": \"number\",\n \"default\": \"5\",\n \"required\": false,\n \"description\": \"Number of skeleton rows\"\n },\n {\n \"name\": \"emptyMessage\",\n \"type\": \"string\",\n \"default\": \"'No data available'\",\n \"required\": false,\n \"description\": \"Empty state message\"\n },\n {\n \"name\": \"sortColumn\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Current sort column ID (bindable)\"\n },\n {\n \"name\": \"sortDirection\",\n \"type\": \"'asc' | 'desc'\",\n \"default\": \"'asc'\",\n \"required\": false,\n \"description\": \"Sort direction (bindable)\"\n },\n {\n \"name\": \"onSort\",\n \"type\": \"(column: string, direction: 'asc' | 'desc') => void\",\n \"required\": false,\n \"description\": \"Sort callback\"\n },\n {\n \"name\": \"onRowClick\",\n \"type\": \"(row: T) => void\",\n \"required\": false,\n \"description\": \"Row click callback\"\n },\n {\n \"name\": \"caption\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Accessible caption\"\n },\n {\n \"name\": \"row\",\n \"type\": \"Snippet<[T, number]>\",\n \"required\": false,\n \"description\": \"Custom row renderer\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional classes\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"sortDirection\",\n \"values\": [\n \"asc\",\n \"desc\"\n ],\n \"default\": \"asc\"\n },\n {\n \"name\": \"onSort\",\n \"values\": [\n \"asc\",\n \"desc\"\n ]\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Creating a TanStack Table\",\n \"code\": \"<script lang=\\\"ts\\\">\\n import {\\n createDataTable,\\n type ColumnDef,\\n type SortingState,\\n type RowSelectionState,\\n } from '@classic-homes/theme-svelte';\\n\\n interface User {\\n id: number;\\n name: string;\\n email: string;\\n }\\n\\n // State\\n let sorting = $state<SortingState>([]);\\n let rowSelection = $state<RowSelectionState>({});\\n\\n // Column definitions (TanStack Table format)\\n const columns: ColumnDef<User>[] = [\\n { accessorKey: 'id', header: 'ID' },\\n { accessorKey: 'name', header: 'Name' },\\n { accessorKey: 'email', header: 'Email' },\\n ];\\n\\n // Create table instance\\n const tableApi = createDataTable<User>(() => ({\\n data: users,\\n columns,\\n state: { sorting, rowSelection },\\n onSortingChange: (updater) => {\\n sorting = typeof updater === 'function' ? updater(sorting) : updater;\\n },\\n onRowSelectionChange: (updater) => {\\n rowSelection = typeof updater === 'function' ? updater(rowSelection) : updater;\\n },\\n enableRowSelection: true,\\n enableSorting: true,\\n }));\\n\\n const table = $derived(tableApi.instance);\\n</script>\"\n },\n {\n \"title\": \"Row Selection\",\n \"description\": \"Enable checkbox selection for rows:\",\n \"code\": \"<script>\\n let rowSelection = $state<RowSelectionState>({});\\n\\n const tableApi = createDataTable<User>(() => ({\\n data: users,\\n columns,\\n state: { rowSelection },\\n onRowSelectionChange: (updater) => {\\n rowSelection = typeof updater === 'function' ? updater(rowSelection) : updater;\\n },\\n enableRowSelection: true,\\n enableMultiRowSelection: true, // Allow multiple selections\\n }));\\n</script>\\n\\n<!-- Render checkbox in header -->\\n<th>\\n <Checkbox\\n checked={table.getIsAllRowsSelected()}\\n indeterminate={table.getIsSomeRowsSelected()}\\n onCheckedChange={(checked) => table.toggleAllRowsSelected(!!checked)}\\n />\\n</th>\\n\\n<!-- Render checkbox in each row -->\\n{#each table.getRowModel().rows as row}\\n <td>\\n <Checkbox\\n checked={row.getIsSelected()}\\n onCheckedChange={(checked) => row.toggleSelected(!!checked)}\\n />\\n </td>\\n{/each}\"\n },\n {\n \"title\": \"Column Visibility\",\n \"description\": \"Allow users to toggle column visibility:\",\n \"code\": \"<script>\\n let columnVisibility = $state<VisibilityState>({});\\n\\n const tableApi = createDataTable<User>(() => ({\\n data: users,\\n columns,\\n state: { columnVisibility },\\n onColumnVisibilityChange: (updater) => {\\n columnVisibility = typeof updater === 'function' ? updater(columnVisibility) : updater;\\n },\\n enableHiding: true,\\n }));\\n</script>\\n\\n<!-- Use DataTableToolbar for built-in column visibility dropdown -->\\n<DataTableToolbar {table} visibilityState={columnVisibility} />\"\n },\n {\n \"title\": \"Global Search\",\n \"description\": \"Filter across all columns:\",\n \"code\": \"<script>\\n let globalFilter = $state('');\\n\\n const tableApi = createDataTable<User>(() => ({\\n data: users,\\n columns,\\n state: { globalFilter },\\n onGlobalFilterChange: (updater) => {\\n globalFilter = typeof updater === 'function' ? updater(globalFilter) : updater;\\n },\\n enableGlobalFilter: true,\\n }));\\n</script>\\n\\n<!-- DataTableToolbar includes a search input -->\\n<DataTableToolbar {table} />\"\n },\n {\n \"title\": \"Column Filters\",\n \"description\": \"Filter individual columns with faceted filtering:\",\n \"code\": \"<script>\\n let columnFilters = $state<ColumnFiltersState>([]);\\n\\n const columns: ColumnDef<User>[] = [\\n {\\n accessorKey: 'role',\\n header: 'Role',\\n meta: {\\n filterOptions: [\\n { value: 'Admin', label: 'Admin' },\\n { value: 'Editor', label: 'Editor' },\\n { value: 'Viewer', label: 'Viewer' },\\n ],\\n },\\n },\\n ];\\n\\n const tableApi = createDataTable<User>(() => ({\\n data: users,\\n columns,\\n state: { columnFilters },\\n onColumnFiltersChange: (updater) => {\\n columnFilters = typeof updater === 'function' ? updater(columnFilters) : updater;\\n },\\n enableColumnFilters: true,\\n }));\\n</script>\\n\\n<!-- DataTableToolbar renders filter badges for columns with filterOptions -->\\n<DataTableToolbar {table} />\"\n },\n {\n \"title\": \"Pagination\",\n \"description\": \"Add pagination controls:\",\n \"code\": \"<script>\\n const tableApi = createDataTable<User>(() => ({\\n data: users,\\n columns,\\n // Pagination is enabled by default\\n }));\\n</script>\\n\\n<!-- Table content -->\\n<table>...</table>\\n\\n<!-- Pagination controls -->\\n<DataTablePagination {table} />\"\n },\n {\n \"title\": \"Virtualization\",\n \"description\": \"Render thousands of rows efficiently:\",\n \"code\": \"<script>\\n const tableApi = createDataTable<User>(() => ({\\n data: largeDataset, // 10,000+ rows\\n columns,\\n manualPagination: true, // Disable pagination for virtualization\\n }));\\n</script>\\n\\n<DataTableVirtual\\n table={tableApi.instance}\\n rowHeight={48}\\n overscan={10}\\n height=\\\"500px\\\"\\n onRowClick={(row) => console.log(row)}\\n/>\"\n },\n {\n \"title\": \"Inline Editing\",\n \"description\": \"Enable double-click cell editing:\",\n \"code\": \"<script>\\n function handleCellEdit(rowId: string, columnId: string, value: unknown, row: User) {\\n // Update your data source\\n const index = users.findIndex((u) => u.id === row.id);\\n if (index !== -1) {\\n users[index] = { ...users[index], [columnId]: value };\\n }\\n }\\n</script>\\n\\n{#each table.getRowModel().rows as row}\\n <tr>\\n {#each row.getVisibleCells() as cell}\\n <td>\\n <DataTableEditableCell {cell} row={row.original} onSave={handleCellEdit} />\\n </td>\\n {/each}\\n </tr>\\n{/each}\"\n },\n {\n \"title\": \"User Management Table\",\n \"code\": \"<script>\\n const columns = [\\n { id: 'name', header: 'Name', accessor: 'name', sortable: true },\\n { id: 'email', header: 'Email', accessor: 'email', sortable: true },\\n { id: 'role', header: 'Role', accessor: 'role' },\\n {\\n id: 'joined',\\n header: 'Joined',\\n accessor: 'createdAt',\\n sortable: true,\\n format: (v) => new Date(v).toLocaleDateString(),\\n },\\n ];\\n</script>\\n\\n<DataTable\\n data={users}\\n {columns}\\n caption=\\\"User management table\\\"\\n onRowClick={(user) => goto(`/users/${user.id}`)}\\n/>\"\n },\n {\n \"title\": \"Product Inventory\",\n \"code\": \"<script>\\n const columns = [\\n { id: 'sku', header: 'SKU', accessor: 'sku', width: '120px' },\\n { id: 'name', header: 'Product', accessor: 'name', sortable: true },\\n {\\n id: 'stock',\\n header: 'Stock',\\n accessor: 'quantity',\\n align: 'right',\\n sortable: true,\\n },\\n {\\n id: 'price',\\n header: 'Price',\\n accessor: 'price',\\n align: 'right',\\n format: (v) => `$${v.toFixed(2)}`,\\n },\\n ];\\n</script>\\n\\n<DataTable data={products} {columns} emptyMessage=\\\"No products found\\\" />\"\n }\n ],\n \"relatedComponents\": [\n \"Skeleton\",\n \"Badge\",\n \"Button\",\n \"Checkbox\"\n ]\n },\n {\n \"name\": \"DataTableColumnFilter\",\n \"description\": \"Per-column text filter input for filtering individual columns in data tables\",\n \"category\": \"data\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"column\",\n \"type\": \"Column<T, unknown>\",\n \"default\": \"**required**\",\n \"required\": false,\n \"description\": \"The TanStack Table column to filter\"\n },\n {\n \"name\": \"placeholder\",\n \"type\": \"string\",\n \"default\": \"'Filter {columnName}...'\",\n \"required\": false,\n \"description\": \"Placeholder text for the input\"\n },\n {\n \"name\": \"debounceMs\",\n \"type\": \"number\",\n \"default\": \"300\",\n \"required\": false,\n \"description\": \"Debounce delay in milliseconds\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { createDataTable, DataTableColumnFilter } from '@classic-homes/theme-svelte';\\n\\n let columnFilters = $state([]);\\n\\n const tableApi = createDataTable(() => ({\\n data: users,\\n columns,\\n state: { columnFilters },\\n onColumnFiltersChange: (updater) => {\\n columnFilters = typeof updater === 'function' ? updater(columnFilters) : updater;\\n },\\n enableColumnFilters: true,\\n }));\\n\\n const table = $derived(tableApi.instance);\\n</script>\\n\\n<!-- Filter for the name column -->\\n{#each table.getAllColumns() as column}\\n {#if column.getCanFilter()}\\n <DataTableColumnFilter {column} />\\n {/if}\\n{/each}\"\n },\n {\n \"title\": \"Custom Placeholder\",\n \"code\": \"<DataTableColumnFilter {column} placeholder=\\\"Search names...\\\" />\"\n },\n {\n \"title\": \"Faster Debounce\",\n \"code\": \"<DataTableColumnFilter {column} debounceMs={150} />\"\n },\n {\n \"title\": \"In Table Header\",\n \"code\": \"<thead>\\n <tr>\\n {#each table.getHeaderGroups()[0].headers as header}\\n <th>\\n {header.column.columnDef.header}\\n {#if header.column.getCanFilter()}\\n <DataTableColumnFilter column={header.column} class=\\\"mt-1\\\" />\\n {/if}\\n </th>\\n {/each}\\n </tr>\\n</thead>\"\n },\n {\n \"title\": \"Multiple Column Filters\",\n \"code\": \"<div class=\\\"flex gap-2\\\">\\n {#each table.getAllColumns().filter((c) => c.getCanFilter()) as column}\\n <DataTableColumnFilter {column} class=\\\"w-40\\\" />\\n {/each}\\n</div>\"\n }\n ],\n \"relatedComponents\": [\n \"DataTable\",\n \"DataTableSearch\",\n \"DataTableFacetedFilter\"\n ]\n },\n {\n \"name\": \"DataTableColumnVisibility\",\n \"description\": \"Dropdown component for toggling column visibility in data tables\",\n \"category\": \"data\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"table\",\n \"type\": \"Table<T>\",\n \"default\": \"**required**\",\n \"required\": false,\n \"description\": \"The TanStack Table instance\"\n },\n {\n \"name\": \"visibilityState\",\n \"type\": \"VisibilityState\",\n \"required\": false,\n \"description\": \"Optional visibility state for reactivity\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { createDataTable, DataTableColumnVisibility } from '@classic-homes/theme-svelte';\\n\\n let columnVisibility = $state({});\\n\\n const tableApi = createDataTable(() => ({\\n data: users,\\n columns,\\n state: { columnVisibility },\\n onColumnVisibilityChange: (updater) => {\\n columnVisibility = typeof updater === 'function' ? updater(columnVisibility) : updater;\\n },\\n enableHiding: true,\\n }));\\n\\n const table = $derived(tableApi.instance);\\n</script>\\n\\n<DataTableColumnVisibility {table} />\"\n },\n {\n \"title\": \"With Controlled State\",\n \"description\": \"Pass the visibility state for full reactivity:\",\n \"code\": \"<script>\\n let columnVisibility = $state({\\n email: false, // Hide email column by default\\n phone: false, // Hide phone column by default\\n });\\n</script>\\n\\n<DataTableColumnVisibility {table} visibilityState={columnVisibility} />\"\n },\n {\n \"title\": \"In Toolbar\",\n \"code\": \"<div class=\\\"flex items-center gap-2\\\">\\n <DataTableSearch {table} />\\n <DataTableColumnVisibility {table} />\\n</div>\"\n },\n {\n \"title\": \"Hide Specific Columns Initially\",\n \"code\": \"<script>\\n // Some columns hidden by default\\n let columnVisibility = $state({\\n createdAt: false,\\n updatedAt: false,\\n internalId: false,\\n });\\n\\n const tableApi = createDataTable(() => ({\\n data,\\n columns,\\n state: { columnVisibility },\\n onColumnVisibilityChange: (updater) => {\\n columnVisibility = typeof updater === 'function' ? updater(columnVisibility) : updater;\\n },\\n enableHiding: true,\\n }));\\n</script>\\n\\n<DataTableColumnVisibility {table} visibilityState={columnVisibility} />\"\n }\n ],\n \"relatedComponents\": [\n \"DataTable\",\n \"DataTableToolbar\",\n \"DropdownMenu\"\n ]\n },\n {\n \"name\": \"DataTableEditableCell\",\n \"description\": \"Inline editable cell component for data tables with double-click editing\",\n \"category\": \"data\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"cell\",\n \"type\": \"Cell<T, unknown>\",\n \"default\": \"**required**\",\n \"required\": false,\n \"description\": \"The TanStack Table cell to render\"\n },\n {\n \"name\": \"row\",\n \"type\": \"T\",\n \"default\": \"**required**\",\n \"required\": false,\n \"description\": \"The row data object\"\n },\n {\n \"name\": \"onSave\",\n \"type\": \"(rowId: string, columnId: string, value: unknown, row: T) => void\",\n \"default\": \"**required**\",\n \"required\": false,\n \"description\": \"Callback when cell value is saved\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { createDataTable, DataTableEditableCell } from '@classic-homes/theme-svelte';\\n\\n function handleCellEdit(rowId, columnId, value, row) {\\n // Update your data source\\n const index = users.findIndex((u) => u.id === row.id);\\n if (index !== -1) {\\n users[index] = { ...users[index], [columnId]: value };\\n }\\n }\\n\\n const columns = [\\n {\\n accessorKey: 'name',\\n header: 'Name',\\n meta: { enableEditing: true },\\n },\\n {\\n accessorKey: 'email',\\n header: 'Email',\\n meta: { enableEditing: true },\\n },\\n ];\\n\\n const tableApi = createDataTable(() => ({ data: users, columns }));\\n const table = $derived(tableApi.instance);\\n</script>\\n\\n{#each table.getRowModel().rows as row}\\n <tr>\\n {#each row.getVisibleCells() as cell}\\n <td>\\n <DataTableEditableCell {cell} row={row.original} onSave={handleCellEdit} />\\n </td>\\n {/each}\\n </tr>\\n{/each}\"\n },\n {\n \"title\": \"With Custom Formatting\",\n \"description\": \"Cells can have custom display formatting while editing the raw value:\",\n \"code\": \"<script>\\n const columns = [\\n {\\n accessorKey: 'price',\\n header: 'Price',\\n meta: {\\n enableEditing: true,\\n format: (value) => `$${Number(value).toFixed(2)}`,\\n },\\n },\\n ];\\n</script>\"\n },\n {\n \"title\": \"Async Save Handler\",\n \"code\": \"<script>\\n async function handleCellEdit(rowId, columnId, value, row) {\\n try {\\n await api.updateUser(row.id, { [columnId]: value });\\n // Update local state after successful save\\n users = users.map((u) => (u.id === row.id ? { ...u, [columnId]: value } : u));\\n } catch (error) {\\n console.error('Failed to save:', error);\\n // Optionally show error toast\\n }\\n }\\n</script>\"\n }\n ],\n \"relatedComponents\": [\n \"DataTable\",\n \"FlexRender\"\n ]\n },\n {\n \"name\": \"DataTableFacetedFilter\",\n \"description\": \"Multi-select dropdown filter for categorical columns in data tables\",\n \"category\": \"data\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"column\",\n \"type\": \"Column<T, unknown>\",\n \"default\": \"**required**\",\n \"required\": false,\n \"description\": \"The TanStack Table column to filter\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"default\": \"**required**\",\n \"required\": false,\n \"description\": \"Title displayed on the filter button\"\n },\n {\n \"name\": \"options\",\n \"type\": \"FilterOption[]\",\n \"default\": \"**required**\",\n \"required\": false,\n \"description\": \"Available filter options\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { createDataTable, DataTableFacetedFilter } from '@classic-homes/theme-svelte';\\n\\n let columnFilters = $state([]);\\n\\n const tableApi = createDataTable(() => ({\\n data: users,\\n columns,\\n state: { columnFilters },\\n onColumnFiltersChange: (updater) => {\\n columnFilters = typeof updater === 'function' ? updater(columnFilters) : updater;\\n },\\n enableColumnFilters: true,\\n }));\\n\\n const table = $derived(tableApi.instance);\\n const statusColumn = $derived(table.getColumn('status'));\\n</script>\\n\\n<DataTableFacetedFilter\\n column={statusColumn}\\n title=\\\"Status\\\"\\n options={[\\n { value: 'active', label: 'Active' },\\n { value: 'inactive', label: 'Inactive' },\\n { value: 'pending', label: 'Pending' },\\n ]}\\n/>\"\n },\n {\n \"title\": \"With Counts\",\n \"description\": \"Display the count of items for each option:\",\n \"code\": \"<script>\\n // Calculate counts from your data\\n const statusCounts = $derived.by(() => {\\n const counts = { active: 0, inactive: 0, pending: 0 };\\n users.forEach((u) => counts[u.status]++);\\n return counts;\\n });\\n\\n const statusOptions = $derived([\\n { value: 'active', label: 'Active', count: statusCounts.active },\\n { value: 'inactive', label: 'Inactive', count: statusCounts.inactive },\\n { value: 'pending', label: 'Pending', count: statusCounts.pending },\\n ]);\\n</script>\\n\\n<DataTableFacetedFilter column={statusColumn} title=\\\"Status\\\" options={statusOptions} />\"\n },\n {\n \"title\": \"Multiple Filters\",\n \"code\": \"<div class=\\\"flex gap-2\\\">\\n <DataTableFacetedFilter\\n column={table.getColumn('status')}\\n title=\\\"Status\\\"\\n options={statusOptions}\\n />\\n <DataTableFacetedFilter column={table.getColumn('role')} title=\\\"Role\\\" options={roleOptions} />\\n <DataTableFacetedFilter\\n column={table.getColumn('department')}\\n title=\\\"Department\\\"\\n options={departmentOptions}\\n />\\n</div>\"\n },\n {\n \"title\": \"In DataTableToolbar\",\n \"code\": \"<DataTableToolbar {table}>\\n {#snippet filters()}\\n <DataTableFacetedFilter\\n column={table.getColumn('status')}\\n title=\\\"Status\\\"\\n options={statusOptions}\\n />\\n <DataTableFacetedFilter\\n column={table.getColumn('priority')}\\n title=\\\"Priority\\\"\\n options={priorityOptions}\\n />\\n {/snippet}\\n</DataTableToolbar>\"\n },\n {\n \"title\": \"Dynamic Options from Data\",\n \"code\": \"<script>\\n // Extract unique values from data\\n const uniqueStatuses = $derived(\\n [...new Set(users.map((u) => u.status))].map((status) => ({\\n value: status,\\n label: status.charAt(0).toUpperCase() + status.slice(1),\\n count: users.filter((u) => u.status === status).length,\\n }))\\n );\\n</script>\\n\\n<DataTableFacetedFilter\\n column={table.getColumn('status')}\\n title=\\\"Status\\\"\\n options={uniqueStatuses}\\n/>\"\n }\n ],\n \"relatedComponents\": [\n \"DataTable\",\n \"DataTableToolbar\",\n \"DataTableColumnFilter\"\n ]\n },\n {\n \"name\": \"DataTablePagination\",\n \"description\": \"Pagination controls for TanStack Table with page navigation and rows per page selector\",\n \"category\": \"data\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"table\",\n \"type\": \"Table<T>\",\n \"default\": \"**required**\",\n \"required\": false,\n \"description\": \"The TanStack Table instance\"\n },\n {\n \"name\": \"pageSizeOptions\",\n \"type\": \"number[]\",\n \"default\": \"[10, 25, 50, 100]\",\n \"required\": false,\n \"description\": \"Available page size options\"\n },\n {\n \"name\": \"showSelectedCount\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show selected row count when rows are selected\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { createDataTable, DataTablePagination } from '@classic-homes/theme-svelte';\\n\\n const tableApi = createDataTable(() => ({\\n data: users,\\n columns,\\n }));\\n\\n const table = $derived(tableApi.instance);\\n</script>\\n\\n<table>...</table>\\n<DataTablePagination {table} />\"\n },\n {\n \"title\": \"Custom Page Sizes\",\n \"code\": \"<DataTablePagination {table} pageSizeOptions={[5, 10, 20, 50]} />\"\n },\n {\n \"title\": \"Hide Selected Count\",\n \"code\": \"<DataTablePagination {table} showSelectedCount={false} />\"\n },\n {\n \"title\": \"With Custom Styling\",\n \"code\": \"<DataTablePagination {table} class=\\\"border-t pt-4\\\" />\"\n }\n ],\n \"relatedComponents\": [\n \"DataTable\",\n \"DataTableToolbar\"\n ]\n },\n {\n \"name\": \"DataTableSearch\",\n \"description\": \"Global search input component for filtering all columns in a data table\",\n \"category\": \"data\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"table\",\n \"type\": \"Table<T>\",\n \"default\": \"**required**\",\n \"required\": false,\n \"description\": \"The TanStack Table instance\"\n },\n {\n \"name\": \"placeholder\",\n \"type\": \"string\",\n \"default\": \"'Search...'\",\n \"required\": false,\n \"description\": \"Placeholder text for the input\"\n },\n {\n \"name\": \"debounceMs\",\n \"type\": \"number\",\n \"default\": \"300\",\n \"required\": false,\n \"description\": \"Debounce delay in milliseconds\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { createDataTable, DataTableSearch } from '@classic-homes/theme-svelte';\\n\\n let globalFilter = $state('');\\n\\n const tableApi = createDataTable(() => ({\\n data: users,\\n columns,\\n state: { globalFilter },\\n onGlobalFilterChange: (updater) => {\\n globalFilter = typeof updater === 'function' ? updater(globalFilter) : updater;\\n },\\n enableGlobalFilter: true,\\n }));\\n\\n const table = $derived(tableApi.instance);\\n</script>\\n\\n<DataTableSearch {table} /><table>...</table>\"\n },\n {\n \"title\": \"Custom Placeholder\",\n \"code\": \"<DataTableSearch {table} placeholder=\\\"Search users by name or email...\\\" />\"\n },\n {\n \"title\": \"Faster Debounce\",\n \"description\": \"For more responsive filtering:\",\n \"code\": \"<DataTableSearch {table} debounceMs={150} />\"\n },\n {\n \"title\": \"No Debounce\",\n \"description\": \"For immediate filtering (smaller datasets):\",\n \"code\": \"<DataTableSearch {table} debounceMs={0} />\"\n },\n {\n \"title\": \"Custom Width\",\n \"code\": \"<DataTableSearch {table} class=\\\"w-[300px]\\\" />\"\n },\n {\n \"title\": \"In Custom Layout\",\n \"code\": \"<div class=\\\"flex items-center gap-4\\\">\\n <DataTableSearch {table} class=\\\"flex-1\\\" />\\n <Button>Add User</Button>\\n</div>\"\n }\n ],\n \"relatedComponents\": [\n \"DataTable\",\n \"DataTableToolbar\",\n \"DataTableColumnFilter\"\n ]\n },\n {\n \"name\": \"DataTableToolbar\",\n \"description\": \"Combined toolbar component with search, filters, and column visibility controls\",\n \"category\": \"data\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"table\",\n \"type\": \"Table<T>\",\n \"default\": \"**required**\",\n \"required\": false,\n \"description\": \"The TanStack Table instance\"\n },\n {\n \"name\": \"showSearch\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show global search input\"\n },\n {\n \"name\": \"showColumnVisibility\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show column visibility dropdown\"\n },\n {\n \"name\": \"searchPlaceholder\",\n \"type\": \"string\",\n \"default\": \"'Search...'\",\n \"required\": false,\n \"description\": \"Placeholder text for search input\"\n },\n {\n \"name\": \"visibilityState\",\n \"type\": \"VisibilityState\",\n \"required\": false,\n \"description\": \"Optional visibility state for reactivity\"\n },\n {\n \"name\": \"filters\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Custom filters slot\"\n },\n {\n \"name\": \"actions\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Custom actions slot\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { createDataTable, DataTableToolbar } from '@classic-homes/theme-svelte';\\n\\n const tableApi = createDataTable(() => ({\\n data: users,\\n columns,\\n enableGlobalFilter: true,\\n }));\\n\\n const table = $derived(tableApi.instance);\\n</script>\\n\\n<DataTableToolbar {table} /><table>...</table>\"\n },\n {\n \"title\": \"Search Only\",\n \"code\": \"<DataTableToolbar {table} showColumnVisibility={false} />\"\n },\n {\n \"title\": \"Custom Placeholder\",\n \"code\": \"<DataTableToolbar {table} searchPlaceholder=\\\"Search users...\\\" />\"\n },\n {\n \"title\": \"With Custom Filters\",\n \"code\": \"<DataTableToolbar {table}>\\n {#snippet filters()}\\n <DataTableFacetedFilter\\n {table}\\n columnId=\\\"status\\\"\\n title=\\\"Status\\\"\\n options={[\\n { value: 'active', label: 'Active' },\\n { value: 'inactive', label: 'Inactive' },\\n ]}\\n />\\n {/snippet}\\n</DataTableToolbar>\"\n },\n {\n \"title\": \"With Custom Actions\",\n \"code\": \"<DataTableToolbar {table}>\\n {#snippet actions()}\\n <Button variant=\\\"outline\\\" size=\\\"sm\\\">Export</Button>\\n {/snippet}\\n</DataTableToolbar>\"\n },\n {\n \"title\": \"Full Customization\",\n \"code\": \"<DataTableToolbar {table} showSearch={true} showColumnVisibility={true}>\\n {#snippet filters()}\\n <DataTableFacetedFilter {table} columnId=\\\"role\\\" title=\\\"Role\\\" options={roleOptions} />\\n <DataTableFacetedFilter {table} columnId=\\\"status\\\" title=\\\"Status\\\" options={statusOptions} />\\n {/snippet}\\n {#snippet actions()}\\n <Button onclick={handleExport}>Export CSV</Button>\\n <Button onclick={handleDelete} variant=\\\"destructive\\\">Delete Selected</Button>\\n {/snippet}\\n</DataTableToolbar>\"\n }\n ],\n \"relatedComponents\": [\n \"DataTable\",\n \"DataTableSearch\",\n \"DataTableColumnVisibility\",\n \"DataTableFacetedFilter\"\n ]\n },\n {\n \"name\": \"DataTableVirtual\",\n \"description\": \"Virtualized table component for efficiently rendering large datasets with 10,000+ rows\",\n \"category\": \"data\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"table\",\n \"type\": \"Table<T>\",\n \"default\": \"**required**\",\n \"required\": false,\n \"description\": \"The TanStack Table instance\"\n },\n {\n \"name\": \"rowHeight\",\n \"type\": \"number\",\n \"default\": \"48\",\n \"required\": false,\n \"description\": \"Height of each row in pixels (must be fixed)\"\n },\n {\n \"name\": \"overscan\",\n \"type\": \"number\",\n \"default\": \"5\",\n \"required\": false,\n \"description\": \"Number of rows to render outside visible area\"\n },\n {\n \"name\": \"height\",\n \"type\": \"string\",\n \"default\": \"'500px'\",\n \"required\": false,\n \"description\": \"Height of the container (CSS value)\"\n },\n {\n \"name\": \"onRowClick\",\n \"type\": \"(row: T) => void\",\n \"required\": false,\n \"description\": \"Callback when row is clicked\"\n },\n {\n \"name\": \"enableRowSelection\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Enable row selection checkboxes\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { createDataTable, DataTableVirtual } from '@classic-homes/theme-svelte';\\n\\n const tableApi = createDataTable(() => ({\\n data: largeDataset, // 10,000+ rows\\n columns,\\n manualPagination: true, // Disable pagination for virtualization\\n }));\\n\\n const table = $derived(tableApi.instance);\\n</script>\\n\\n<DataTableVirtual {table} height=\\\"600px\\\" />\"\n },\n {\n \"title\": \"Custom Row Height\",\n \"code\": \"<DataTableVirtual {table} rowHeight={64} height=\\\"600px\\\" />\"\n },\n {\n \"title\": \"With More Overscan\",\n \"description\": \"For smoother scrolling, increase the overscan:\",\n \"code\": \"<DataTableVirtual {table} overscan={10} height=\\\"600px\\\" />\"\n },\n {\n \"title\": \"With Row Click Handler\",\n \"code\": \"<DataTableVirtual {table} height=\\\"600px\\\" onRowClick={(row) => goto(`/users/${row.id}`)} />\"\n },\n {\n \"title\": \"With Row Selection\",\n \"code\": \"<script>\\n let rowSelection = $state({});\\n\\n const tableApi = createDataTable(() => ({\\n data: largeDataset,\\n columns,\\n state: { rowSelection },\\n onRowSelectionChange: (updater) => {\\n rowSelection = typeof updater === 'function' ? updater(rowSelection) : updater;\\n },\\n enableRowSelection: true,\\n manualPagination: true,\\n }));\\n</script>\\n\\n<DataTableVirtual {table} enableRowSelection height=\\\"600px\\\" />\"\n },\n {\n \"title\": \"Full Height Container\",\n \"code\": \"<div class=\\\"flex-1 min-h-0\\\">\\n <DataTableVirtual {table} height=\\\"100%\\\" />\\n</div>\"\n }\n ],\n \"relatedComponents\": [\n \"DataTable\",\n \"DataTablePagination\"\n ]\n },\n {\n \"name\": \"DateTimePicker\",\n \"description\": \"Calendar-based date and time selection\",\n \"category\": \"form\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"value\",\n \"type\": \"Date | null\",\n \"default\": \"null\",\n \"required\": false,\n \"description\": \"Selected date (bindable)\"\n },\n {\n \"name\": \"placeholder\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Placeholder text\"\n },\n {\n \"name\": \"disabled\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Disables the picker\"\n },\n {\n \"name\": \"required\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Marks as required\"\n },\n {\n \"name\": \"minDate\",\n \"type\": \"Date\",\n \"required\": false,\n \"description\": \"Earliest selectable date\"\n },\n {\n \"name\": \"maxDate\",\n \"type\": \"Date\",\n \"required\": false,\n \"description\": \"Latest selectable date\"\n },\n {\n \"name\": \"includeTime\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Include time selection\"\n },\n {\n \"name\": \"label\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Label text\"\n },\n {\n \"name\": \"hint\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Hint text below the picker\"\n },\n {\n \"name\": \"error\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Error message\"\n },\n {\n \"name\": \"onValueChange\",\n \"type\": \"(value: Date | null) => void\",\n \"required\": false,\n \"description\": \"Callback when value changes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n let date = $state(null);\\n</script>\\n\\n<DateTimePicker bind:value={date} />\"\n },\n {\n \"title\": \"Event Scheduler\",\n \"code\": \"<DateTimePicker\\n label=\\\"Event date and time\\\"\\n bind:value={eventDate}\\n includeTime\\n minDate={new Date()}\\n/>\"\n },\n {\n \"title\": \"Birth Date\",\n \"code\": \"<DateTimePicker\\n label=\\\"Date of birth\\\"\\n bind:value={birthDate}\\n maxDate={new Date()}\\n placeholder=\\\"Select your birth date\\\"\\n/>\"\n },\n {\n \"title\": \"Booking Window\",\n \"code\": \"<script>\\n const today = new Date();\\n const maxDate = new Date();\\n maxDate.setMonth(maxDate.getMonth() + 3);\\n</script>\\n\\n<DateTimePicker label=\\\"Reservation date\\\" bind:value={reservationDate} minDate={today} {maxDate} />\"\n }\n ],\n \"relatedComponents\": [\n \"Input\",\n \"FormField\"\n ]\n },\n {\n \"name\": \"Dialog\",\n \"description\": \"Modal window for focused interactions and confirmations\",\n \"category\": \"overlay\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"open\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Whether the dialog is open (bindable)\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Dialog title displayed in header\"\n },\n {\n \"name\": \"description\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Description text below title\"\n },\n {\n \"name\": \"showClose\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Whether to show the close button\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes for content\"\n },\n {\n \"name\": \"onOpenChange\",\n \"type\": \"(open: boolean) => void\",\n \"required\": false,\n \"description\": \"Callback when open state changes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n let open = $state(false);\\n</script>\\n\\n<Button onclick={() => (open = true)}>Open Dialog</Button>\\n\\n<Dialog bind:open title=\\\"Dialog Title\\\" description=\\\"Dialog description text\\\">\\n <p>Dialog content goes here.</p>\\n</Dialog>\"\n },\n {\n \"title\": \"Confirmation Dialog\",\n \"code\": \"<script>\\n let deleteDialogOpen = $state(false);\\n\\n async function handleDelete() {\\n await deleteItem();\\n deleteDialogOpen = false;\\n }\\n</script>\\n\\n<Button variant=\\\"destructive\\\" onclick={() => (deleteDialogOpen = true)}>Delete</Button>\\n\\n<Dialog\\n bind:open={deleteDialogOpen}\\n title=\\\"Delete Item\\\"\\n description=\\\"This action cannot be undone.\\\"\\n>\\n <p>Are you sure you want to delete this item permanently?</p>\\n\\n {#snippet footer()}\\n <Button variant=\\\"outline\\\" onclick={() => (deleteDialogOpen = false)}>Cancel</Button>\\n <Button variant=\\\"destructive\\\" onclick={handleDelete}>Delete</Button>\\n {/snippet}\\n</Dialog>\"\n },\n {\n \"title\": \"Form Dialog\",\n \"code\": \"<Dialog bind:open title=\\\"Edit Profile\\\">\\n <form onsubmit|preventDefault={handleSubmit} class=\\\"space-y-4\\\">\\n <FormField label=\\\"Name\\\" id=\\\"name\\\" bind:value={name} required />\\n <FormField label=\\\"Email\\\" id=\\\"email\\\" type=\\\"email\\\" bind:value={email} required />\\n </form>\\n\\n {#snippet footer()}\\n <Button variant=\\\"outline\\\" onclick={() => (open = false)}>Cancel</Button>\\n <Button onclick={handleSubmit}>Save Changes</Button>\\n {/snippet}\\n</Dialog>\"\n },\n {\n \"title\": \"Info Dialog\",\n \"code\": \"<Dialog title=\\\"Keyboard Shortcuts\\\">\\n <dl class=\\\"space-y-2\\\">\\n <div class=\\\"flex justify-between\\\">\\n <dt class=\\\"font-medium\\\">Save</dt>\\n <dd><kbd class=\\\"px-2 py-1 bg-muted rounded text-sm\\\">Ctrl+S</kbd></dd>\\n </div>\\n <div class=\\\"flex justify-between\\\">\\n <dt class=\\\"font-medium\\\">Search</dt>\\n <dd><kbd class=\\\"px-2 py-1 bg-muted rounded text-sm\\\">Ctrl+K</kbd></dd>\\n </div>\\n </dl>\\n\\n {#snippet trigger()}\\n <Button variant=\\\"ghost\\\" size=\\\"icon\\\">\\n <HelpIcon class=\\\"h-4 w-4\\\" />\\n </Button>\\n {/snippet}\\n</Dialog>\"\n },\n {\n \"title\": \"Wide Dialog\",\n \"code\": \"<Dialog bind:open title=\\\"Preview\\\" class=\\\"max-w-4xl\\\">\\n <img src={previewUrl} alt=\\\"Preview\\\" class=\\\"w-full\\\" />\\n</Dialog>\"\n }\n ],\n \"relatedComponents\": [\n \"AlertDialog\",\n \"Tooltip\",\n \"DropdownMenu\"\n ]\n },\n {\n \"name\": \"DonutChart\",\n \"description\": \"Pie chart variant with center labels for key metrics\",\n \"category\": \"chart\",\n \"importPath\": \"@classic-homes/charts-svelte\",\n \"props\": [\n {\n \"name\": \"data\",\n \"type\": \"PieSliceData[]\",\n \"required\": true,\n \"description\": \"Array of slice data\"\n },\n {\n \"name\": \"showLabels\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Show labels on slices\"\n },\n {\n \"name\": \"labelPosition\",\n \"type\": \"'inside' | 'outside'\",\n \"default\": \"'outside'\",\n \"required\": false,\n \"description\": \"Position of labels\"\n },\n {\n \"name\": \"innerRadius\",\n \"type\": \"number | string\",\n \"default\": \"'50%'\",\n \"required\": false,\n \"description\": \"Inner radius for donut hole\"\n },\n {\n \"name\": \"centerLabel\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Text label in the center\"\n },\n {\n \"name\": \"centerValue\",\n \"type\": \"string | number\",\n \"required\": false,\n \"description\": \"Value displayed in the center\"\n },\n {\n \"name\": \"onClick\",\n \"type\": \"(params: SliceEventParams) => void\",\n \"required\": false,\n \"description\": \"Callback when clicked\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": true,\n \"description\": \"Chart title for accessibility\"\n },\n {\n \"name\": \"height\",\n \"type\": \"number | string\",\n \"default\": \"400\",\n \"required\": false,\n \"description\": \"Chart height\"\n },\n {\n \"name\": \"theme\",\n \"type\": \"'light' | 'dark' | 'auto'\",\n \"default\": \"'auto'\",\n \"required\": false,\n \"description\": \"Theme preference\"\n },\n {\n \"name\": \"showLegend\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show chart legend\"\n },\n {\n \"name\": \"showTooltip\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show tooltip on hover\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"labelPosition\",\n \"values\": [\n \"inside\",\n \"outside\"\n ],\n \"default\": \"outside\"\n },\n {\n \"name\": \"theme\",\n \"values\": [\n \"light\",\n \"dark\",\n \"auto\"\n ],\n \"default\": \"auto\"\n }\n ],\n \"slots\": [],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { DonutChart } from '@classic-homes/charts-svelte';\\n\\n const data = [\\n { name: 'Completed', value: 65 },\\n { name: 'In Progress', value: 25 },\\n { name: 'Pending', value: 10 },\\n ];\\n</script>\\n\\n<DonutChart title=\\\"Task Status\\\" {data} centerLabel=\\\"Total\\\" centerValue=\\\"100\\\" height={400} />\"\n },\n {\n \"title\": \"Dashboard KPI\",\n \"code\": \"<DonutChart title=\\\"Budget Usage\\\" {data} centerLabel=\\\"Spent\\\" centerValue=\\\"$45,000\\\" height={300} />\"\n },\n {\n \"title\": \"With Labels\",\n \"code\": \"<DonutChart title=\\\"Category Distribution\\\" {data} showLabels centerLabel=\\\"Items\\\" centerValue=\\\"156\\\" />\"\n },\n {\n \"title\": \"Custom Inner Radius\",\n \"code\": \"<DonutChart title=\\\"Thin Donut\\\" {data} innerRadius=\\\"70%\\\" />\"\n }\n ],\n \"relatedComponents\": [\n \"PieChart\",\n \"GaugeChart\"\n ]\n },\n {\n \"name\": \"DropdownMenu\",\n \"description\": \"Contextual menu with items, groups, and keyboard navigation\",\n \"category\": \"overlay\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"items\",\n \"type\": \"(DropdownMenuItem | DropdownMenuGroup)[]\",\n \"required\": false,\n \"description\": \"Menu items\"\n },\n {\n \"name\": \"trigger\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Trigger element\"\n },\n {\n \"name\": \"side\",\n \"type\": \"'top' | 'right' | 'bottom' | 'left'\",\n \"default\": \"'bottom'\",\n \"required\": false,\n \"description\": \"Menu position\"\n },\n {\n \"name\": \"align\",\n \"type\": \"'start' | 'center' | 'end'\",\n \"default\": \"'start'\",\n \"required\": false,\n \"description\": \"Menu alignment\"\n },\n {\n \"name\": \"open\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Controlled open state (bindable)\"\n },\n {\n \"name\": \"onOpenChange\",\n \"type\": \"(open: boolean) => void\",\n \"required\": false,\n \"description\": \"Open change callback\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional classes\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"side\",\n \"values\": [\n \"top\",\n \"right\",\n \"bottom\",\n \"left\"\n ],\n \"default\": \"bottom\"\n },\n {\n \"name\": \"align\",\n \"values\": [\n \"start\",\n \"center\",\n \"end\"\n ],\n \"default\": \"start\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n const items = [\\n { label: 'Profile', onSelect: () => goto('/profile') },\\n { label: 'Settings', onSelect: () => goto('/settings') },\\n { type: 'separator' },\\n { label: 'Log out', onSelect: logout, destructive: true },\\n ];\\n</script>\\n\\n<DropdownMenu {items}>\\n {#snippet trigger()}\\n <Button variant=\\\"outline\\\">Menu</Button>\\n {/snippet}\\n</DropdownMenu>\"\n },\n {\n \"title\": \"Regular Items\",\n \"code\": \"<script>\\n const items = [\\n { label: 'Edit', onSelect: handleEdit },\\n { label: 'Duplicate', onSelect: handleDuplicate },\\n { label: 'Delete', onSelect: handleDelete, destructive: true },\\n ];\\n</script>\"\n },\n {\n \"title\": \"With Separators\",\n \"code\": \"<script>\\n const items = [\\n { label: 'Cut', shortcut: '⌘X' },\\n { label: 'Copy', shortcut: '⌘C' },\\n { label: 'Paste', shortcut: '⌘V' },\\n { type: 'separator' },\\n { label: 'Select All', shortcut: '⌘A' },\\n ];\\n</script>\"\n },\n {\n \"title\": \"Labels\",\n \"code\": \"<script>\\n const items = [{ type: 'label', label: 'Actions' }, { label: 'Edit' }, { label: 'Delete' }];\\n</script>\"\n },\n {\n \"title\": \"Disabled Items\",\n \"code\": \"<script>\\n const items = [\\n { label: 'Save', disabled: !hasChanges },\\n { label: 'Publish', disabled: !canPublish },\\n ];\\n</script>\"\n },\n {\n \"title\": \"Side\",\n \"code\": \"<!-- Below trigger (default) -->\\n<DropdownMenu {items} side=\\\"bottom\\\">...</DropdownMenu>\\n\\n<!-- Above trigger -->\\n<DropdownMenu {items} side=\\\"top\\\">...</DropdownMenu>\\n\\n<!-- To the right -->\\n<DropdownMenu {items} side=\\\"right\\\">...</DropdownMenu>\\n\\n<!-- To the left -->\\n<DropdownMenu {items} side=\\\"left\\\">...</DropdownMenu>\"\n },\n {\n \"title\": \"Alignment\",\n \"code\": \"<!-- Align to start (default) -->\\n<DropdownMenu {items} align=\\\"start\\\">...</DropdownMenu>\\n\\n<!-- Center aligned -->\\n<DropdownMenu {items} align=\\\"center\\\">...</DropdownMenu>\\n\\n<!-- Align to end -->\\n<DropdownMenu {items} align=\\\"end\\\">...</DropdownMenu>\"\n },\n {\n \"title\": \"User Menu\",\n \"code\": \"<script>\\n const items = [\\n { type: 'label', label: user.email },\\n { type: 'separator' },\\n { label: 'Profile', onSelect: () => goto('/profile') },\\n { label: 'Settings', onSelect: () => goto('/settings') },\\n { label: 'Billing', onSelect: () => goto('/billing') },\\n { type: 'separator' },\\n { label: 'Help', onSelect: openHelp },\\n { type: 'separator' },\\n { label: 'Log out', onSelect: logout, destructive: true },\\n ];\\n</script>\\n\\n<DropdownMenu {items} align=\\\"end\\\">\\n {#snippet trigger()}\\n <Avatar>{user.initials}</Avatar>\\n {/snippet}\\n</DropdownMenu>\"\n },\n {\n \"title\": \"Context Actions\",\n \"code\": \"<script>\\n const items = [\\n { label: 'Open', onSelect: openItem },\\n { label: 'Open in new tab', onSelect: openInNewTab },\\n { type: 'separator' },\\n { label: 'Rename', shortcut: 'F2', onSelect: rename },\\n { label: 'Duplicate', shortcut: '⌘D', onSelect: duplicate },\\n { label: 'Move to...', onSelect: moveTo },\\n { type: 'separator' },\\n { label: 'Delete', destructive: true, onSelect: deleteItem },\\n ];\\n</script>\\n\\n<DropdownMenu {items}>\\n {#snippet trigger()}\\n <Button variant=\\\"ghost\\\" size=\\\"icon\\\">\\n <MoreHorizontalIcon />\\n </Button>\\n {/snippet}\\n</DropdownMenu>\"\n },\n {\n \"title\": \"Table Row Actions\",\n \"code\": \"{#each rows as row}\\n <tr>\\n <td>{row.name}</td>\\n <td>\\n <DropdownMenu items={getRowActions(row)}>\\n {#snippet trigger()}\\n <Button variant=\\\"ghost\\\" size=\\\"sm\\\">Actions</Button>\\n {/snippet}\\n </DropdownMenu>\\n </td>\\n </tr>\\n{/each}\"\n }\n ],\n \"relatedComponents\": [\n \"Button\",\n \"AlertDialog\",\n \"Tooltip\"\n ]\n },\n {\n \"name\": \"ErrorLayout\",\n \"description\": \"Layout for error pages with status codes and messaging\",\n \"category\": \"layout\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"statusCode\",\n \"type\": \"number\",\n \"required\": false,\n \"description\": \"HTTP status code (404, 500, etc.)\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Custom title (overrides default)\"\n },\n {\n \"name\": \"description\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Error description\"\n },\n {\n \"name\": \"showLogo\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show logo at top\"\n },\n {\n \"name\": \"logo\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Custom logo\"\n },\n {\n \"name\": \"showHomeButton\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show \\\"Go Home\\\" button\"\n },\n {\n \"name\": \"homeUrl\",\n \"type\": \"string\",\n \"default\": \"'/'\",\n \"required\": false,\n \"description\": \"Home button URL\"\n },\n {\n \"name\": \"homeText\",\n \"type\": \"string\",\n \"default\": \"'Go Home'\",\n \"required\": false,\n \"description\": \"Home button text\"\n },\n {\n \"name\": \"showBackButton\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show \\\"Go Back\\\" button\"\n },\n {\n \"name\": \"backText\",\n \"type\": \"string\",\n \"default\": \"'Go Back'\",\n \"required\": false,\n \"description\": \"Back button text\"\n },\n {\n \"name\": \"illustration\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Custom illustration\"\n },\n {\n \"name\": \"actions\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Additional actions\"\n },\n {\n \"name\": \"footer\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Footer content\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional classes\"\n },\n {\n \"name\": \"children\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Custom content\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<ErrorLayout statusCode={404} />\"\n },\n {\n \"title\": \"SvelteKit Error Page\",\n \"code\": \"<!-- src/routes/+error.svelte -->\\n<script>\\n import { page } from '$app/stores';\\n import { ErrorLayout } from '@classic-homes/theme-svelte';\\n</script>\\n\\n<ErrorLayout statusCode={$page.status} description={$page.error?.message} />\"\n },\n {\n \"title\": \"Access Denied\",\n \"code\": \"<ErrorLayout\\n statusCode={403}\\n title=\\\"Access Denied\\\"\\n description=\\\"You need additional permissions to view this page.\\\"\\n showBackButton={false}\\n>\\n {#snippet actions()}\\n <Button href=\\\"/request-access\\\">Request Access</Button>\\n <Button variant=\\\"outline\\\" href=\\\"/dashboard\\\">Back to Dashboard</Button>\\n {/snippet}\\n</ErrorLayout>\"\n },\n {\n \"title\": \"Session Expired\",\n \"code\": \"<ErrorLayout\\n statusCode={401}\\n title=\\\"Session Expired\\\"\\n description=\\\"Your session has expired. Please sign in again to continue.\\\"\\n showBackButton={false}\\n showHomeButton={false}\\n>\\n {#snippet actions()}\\n <Button href=\\\"/login\\\">Sign In Again</Button>\\n {/snippet}\\n</ErrorLayout>\"\n },\n {\n \"title\": \"Maintenance Mode\",\n \"code\": \"<ErrorLayout\\n title=\\\"Scheduled Maintenance\\\"\\n description=\\\"We're currently performing system upgrades. Expected completion: 2:00 PM EST\\\"\\n showBackButton={false}\\n>\\n {#snippet illustration()}\\n <svg class=\\\"w-32 h-32 text-muted-foreground\\\">\\n <!-- Maintenance icon -->\\n </svg>\\n {/snippet}\\n</ErrorLayout>\"\n }\n ],\n \"relatedComponents\": [\n \"AuthLayout\",\n \"Button\",\n \"AppShell\"\n ]\n },\n {\n \"name\": \"FileUpload\",\n \"description\": \"File upload component with drag-and-drop support\",\n \"category\": \"form\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"files\",\n \"type\": \"FileMetadata[]\",\n \"default\": \"[]\",\n \"required\": false,\n \"description\": \"Uploaded files (bindable)\"\n },\n {\n \"name\": \"accept\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Accepted file types\"\n },\n {\n \"name\": \"multiple\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Allow multiple files\"\n },\n {\n \"name\": \"maxSize\",\n \"type\": \"number\",\n \"required\": false,\n \"description\": \"Max file size in bytes\"\n },\n {\n \"name\": \"maxFiles\",\n \"type\": \"number\",\n \"required\": false,\n \"description\": \"Max number of files\"\n },\n {\n \"name\": \"disabled\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Disables upload\"\n },\n {\n \"name\": \"error\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Error message\"\n },\n {\n \"name\": \"onUpload\",\n \"type\": \"(file: File) => Promise<FileMetadata>\",\n \"required\": false,\n \"description\": \"Upload handler\"\n },\n {\n \"name\": \"onRemove\",\n \"type\": \"(file: FileMetadata) => void\",\n \"required\": false,\n \"description\": \"Remove handler\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n let files = $state([]);\\n</script>\\n\\n<FileUpload bind:files />\"\n },\n {\n \"title\": \"Profile Picture\",\n \"code\": \"<FileUpload\\n accept=\\\"image/*\\\"\\n maxSize={2 * 1024 * 1024}\\n bind:files={avatar}\\n onUpload={uploadAvatar}\\n/>\"\n },\n {\n \"title\": \"Document Upload\",\n \"code\": \"<FileUpload\\n accept=\\\".pdf,.doc,.docx\\\"\\n multiple\\n maxFiles={10}\\n maxSize={10 * 1024 * 1024}\\n bind:files={documents}\\n onUpload={uploadDocument}\\n/>\"\n },\n {\n \"title\": \"With Progress\",\n \"description\": \"Files show upload progress:\",\n \"code\": \"<FileUpload\\n bind:files\\n onUpload={async (file) => {\\n // Upload with progress tracking\\n return await uploadWithProgress(file, (progress) => {\\n // Progress updates automatically\\n });\\n }}\\n/>\"\n }\n ],\n \"relatedComponents\": [\n \"Input\",\n \"Button\"\n ]\n },\n {\n \"name\": \"FlexRender\",\n \"description\": \"Dynamic content renderer for TanStack Table cells and headers\",\n \"category\": \"data\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"content\",\n \"type\": \"unknown\",\n \"default\": \"**required**\",\n \"required\": false,\n \"description\": \"Content to render (string, component, or function)\"\n },\n {\n \"name\": \"props\",\n \"type\": \"TProps\",\n \"default\": \"**required**\",\n \"required\": false,\n \"description\": \"Props to pass to component or function\"\n },\n {\n \"name\": \"asComponent\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Explicitly mark content as a Svelte component\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { createDataTable, FlexRender } from '@classic-homes/theme-svelte';\\n\\n const tableApi = createDataTable(() => ({ data: users, columns }));\\n const table = $derived(tableApi.instance);\\n</script>\\n\\n<table>\\n <thead>\\n {#each table.getHeaderGroups() as headerGroup}\\n <tr>\\n {#each headerGroup.headers as header}\\n <th>\\n <FlexRender content={header.column.columnDef.header} props={header.getContext()} />\\n </th>\\n {/each}\\n </tr>\\n {/each}\\n </thead>\\n <tbody>\\n {#each table.getRowModel().rows as row}\\n <tr>\\n {#each row.getVisibleCells() as cell}\\n <td>\\n <FlexRender content={cell.column.columnDef.cell} props={cell.getContext()} />\\n </td>\\n {/each}\\n </tr>\\n {/each}\\n </tbody>\\n</table>\"\n },\n {\n \"title\": \"With Custom Cell Component\",\n \"code\": \"<!-- StatusBadge.svelte -->\\n<script lang=\\\"ts\\\">\\n import type { CellContext } from '@classic-homes/theme-svelte';\\n import Badge from './Badge.svelte';\\n\\n let { getValue }: CellContext<User, string> = $props();\\n const status = $derived(getValue());\\n</script>\\n\\n<Badge variant={status === 'active' ? 'success' : 'secondary'}>\\n {status}\\n</Badge>\"\n }\n ],\n \"relatedComponents\": [\n \"DataTable\",\n \"DataTableEditableCell\"\n ]\n },\n {\n \"name\": \"Footer\",\n \"description\": \"Site footer with link sections and branding\",\n \"category\": \"layout\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"links\",\n \"type\": \"NavSection[]\",\n \"default\": \"[]\",\n \"required\": false,\n \"description\": \"Link sections\"\n },\n {\n \"name\": \"copyright\",\n \"type\": \"string\",\n \"default\": \"Auto-generated\",\n \"required\": false,\n \"description\": \"Copyright text\"\n },\n {\n \"name\": \"showLogo\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show logo\"\n },\n {\n \"name\": \"strongBorder\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"10px accent border\"\n },\n {\n \"name\": \"variant\",\n \"type\": \"'default' | 'dark'\",\n \"default\": \"'default'\",\n \"required\": false,\n \"description\": \"Visual variant\"\n },\n {\n \"name\": \"children\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Custom content\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional classes\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"variant\",\n \"values\": [\n \"default\",\n \"dark\"\n ],\n \"default\": \"default\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Footer />\"\n },\n {\n \"title\": \"Marketing Site Footer\",\n \"code\": \"<script>\\n const links = [\\n {\\n id: 'product',\\n title: 'Product',\\n items: [\\n { id: 'features', name: 'Features', href: '/features' },\\n { id: 'pricing', name: 'Pricing', href: '/pricing' },\\n { id: 'integrations', name: 'Integrations', href: '/integrations' },\\n { id: 'changelog', name: 'Changelog', href: '/changelog' },\\n ],\\n },\\n {\\n id: 'company',\\n title: 'Company',\\n items: [\\n { id: 'about', name: 'About Us', href: '/about' },\\n { id: 'blog', name: 'Blog', href: '/blog' },\\n { id: 'careers', name: 'Careers', href: '/careers' },\\n { id: 'press', name: 'Press Kit', href: '/press' },\\n ],\\n },\\n {\\n id: 'support',\\n title: 'Support',\\n items: [\\n { id: 'help', name: 'Help Center', href: '/help' },\\n { id: 'contact', name: 'Contact Us', href: '/contact' },\\n { id: 'status', name: 'System Status', href: 'https://status.example.com', external: true },\\n ],\\n },\\n {\\n id: 'legal',\\n title: 'Legal',\\n items: [\\n { id: 'privacy', name: 'Privacy', href: '/privacy' },\\n { id: 'terms', name: 'Terms', href: '/terms' },\\n { id: 'security', name: 'Security', href: '/security' },\\n ],\\n },\\n ];\\n</script>\\n\\n<Footer {links} copyright=\\\"2024 Example Inc. All rights reserved.\\\" />\"\n },\n {\n \"title\": \"Minimal Footer\",\n \"code\": \"<Footer copyright=\\\"2024 Company Name\\\" showLogo={false} />\"\n },\n {\n \"title\": \"Branded Dark Footer\",\n \"code\": \"<Footer\\n {links}\\n variant=\\\"dark\\\"\\n strongBorder\\n copyright=\\\"2024 Classic Homes. Building quality since 1985.\\\"\\n>\\n <div class=\\\"grid grid-cols-3 gap-4 text-center\\\">\\n <div>\\n <p class=\\\"text-2xl font-bold\\\">500+</p>\\n <p class=\\\"text-sm text-gray-400\\\">Homes Built</p>\\n </div>\\n <div>\\n <p class=\\\"text-2xl font-bold\\\">25+</p>\\n <p class=\\\"text-sm text-gray-400\\\">Years Experience</p>\\n </div>\\n <div>\\n <p class=\\\"text-2xl font-bold\\\">98%</p>\\n <p class=\\\"text-sm text-gray-400\\\">Satisfaction</p>\\n </div>\\n </div>\\n</Footer>\"\n }\n ],\n \"relatedComponents\": [\n \"Header\",\n \"PublicLayout\",\n \"Separator\"\n ]\n },\n {\n \"name\": \"FormField\",\n \"description\": \"Complete form field component with label, input, and validation\",\n \"category\": \"form\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"label\",\n \"type\": \"string\",\n \"default\": \"Required\",\n \"required\": false,\n \"description\": \"Label text\"\n },\n {\n \"name\": \"id\",\n \"type\": \"string\",\n \"default\": \"Required\",\n \"required\": false,\n \"description\": \"Input ID for accessibility\"\n },\n {\n \"name\": \"type\",\n \"type\": \"'text' | 'email' | 'password' | 'tel' | 'url' | 'number' | 'date' | 'textarea'\",\n \"default\": \"'text'\",\n \"required\": false,\n \"description\": \"Input type\"\n },\n {\n \"name\": \"value\",\n \"type\": \"string\",\n \"default\": \"''\",\n \"required\": false,\n \"description\": \"Field value (bindable)\"\n },\n {\n \"name\": \"error\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Error message to display\"\n },\n {\n \"name\": \"hint\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Help text shown below input\"\n },\n {\n \"name\": \"disabled\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Disables the field\"\n },\n {\n \"name\": \"required\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Marks as required\"\n },\n {\n \"name\": \"placeholder\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Placeholder text\"\n },\n {\n \"name\": \"autocomplete\",\n \"type\": \"AutoFill\",\n \"required\": false,\n \"description\": \"Browser autocomplete hint\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Name attribute for forms\"\n },\n {\n \"name\": \"rows\",\n \"type\": \"number\",\n \"default\": \"3\",\n \"required\": false,\n \"description\": \"Rows for textarea type\"\n },\n {\n \"name\": \"readonly\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Makes field read-only\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n },\n {\n \"name\": \"onValueChange\",\n \"type\": \"(value: string) => void\",\n \"required\": false,\n \"description\": \"Callback when value changes\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"type\",\n \"values\": [\n \"text\",\n \"email\",\n \"password\",\n \"tel\",\n \"url\",\n \"number\",\n \"date\",\n \"textarea\"\n ],\n \"default\": \"text\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n let email = $state('');\\n</script>\\n\\n<FormField label=\\\"Email\\\" id=\\\"email\\\" type=\\\"email\\\" bind:value={email} placeholder=\\\"your@email.com\\\" />\"\n },\n {\n \"title\": \"Text (Default)\",\n \"code\": \"<FormField label=\\\"Name\\\" id=\\\"name\\\" bind:value={name} />\"\n },\n {\n \"title\": \"Email\",\n \"code\": \"<FormField label=\\\"Email\\\" id=\\\"email\\\" type=\\\"email\\\" autocomplete=\\\"email\\\" bind:value={email} />\"\n },\n {\n \"title\": \"Password\",\n \"code\": \"<FormField\\n label=\\\"Password\\\"\\n id=\\\"password\\\"\\n type=\\\"password\\\"\\n autocomplete=\\\"new-password\\\"\\n bind:value={password}\\n/>\"\n },\n {\n \"title\": \"Tel (Phone)\",\n \"code\": \"<FormField label=\\\"Phone\\\" id=\\\"phone\\\" type=\\\"tel\\\" autocomplete=\\\"tel\\\" bind:value={phone} />\"\n },\n {\n \"title\": \"Number\",\n \"code\": \"<FormField label=\\\"Age\\\" id=\\\"age\\\" type=\\\"number\\\" bind:value={age} />\"\n },\n {\n \"title\": \"Date\",\n \"code\": \"<FormField label=\\\"Birth Date\\\" id=\\\"birthdate\\\" type=\\\"date\\\" bind:value={birthdate} />\"\n },\n {\n \"title\": \"URL\",\n \"code\": \"<FormField label=\\\"Website\\\" id=\\\"website\\\" type=\\\"url\\\" placeholder=\\\"https://\\\" bind:value={website} />\"\n },\n {\n \"title\": \"Textarea\",\n \"code\": \"<FormField label=\\\"Description\\\" id=\\\"description\\\" type=\\\"textarea\\\" rows={5} bind:value={description} />\"\n },\n {\n \"title\": \"Error State\",\n \"description\": \"Display validation errors:\",\n \"code\": \"<FormField label=\\\"Email\\\" id=\\\"email\\\" type=\\\"email\\\" bind:value={email} error={emailError} />\"\n },\n {\n \"title\": \"With Hint\",\n \"description\": \"Provide helpful guidance:\",\n \"code\": \"<FormField\\n label=\\\"Password\\\"\\n id=\\\"password\\\"\\n type=\\\"password\\\"\\n bind:value={password}\\n hint=\\\"Must be at least 8 characters\\\"\\n/>\"\n },\n {\n \"title\": \"Disabled\",\n \"code\": \"<FormField label=\\\"Username\\\" id=\\\"username\\\" disabled value=\\\"johndoe\\\" />\"\n },\n {\n \"title\": \"Read-only\",\n \"code\": \"<FormField label=\\\"ID\\\" id=\\\"user-id\\\" readonly value=\\\"USR-12345\\\" />\"\n },\n {\n \"title\": \"Login Form\",\n \"code\": \"<script>\\n let email = $state('');\\n let password = $state('');\\n let errors = $state({ email: '', password: '' });\\n\\n function validate() {\\n errors = { email: '', password: '' };\\n\\n if (!email) errors.email = 'Email is required';\\n else if (!email.includes('@')) errors.email = 'Invalid email address';\\n\\n if (!password) errors.password = 'Password is required';\\n else if (password.length < 8) errors.password = 'Password must be at least 8 characters';\\n\\n return !errors.email && !errors.password;\\n }\\n</script>\\n\\n<form onsubmit|preventDefault={() => validate() && login()}>\\n <div class=\\\"space-y-4\\\">\\n <FormField\\n label=\\\"Email\\\"\\n id=\\\"email\\\"\\n type=\\\"email\\\"\\n required\\n autocomplete=\\\"email\\\"\\n bind:value={email}\\n error={errors.email}\\n />\\n <FormField\\n label=\\\"Password\\\"\\n id=\\\"password\\\"\\n type=\\\"password\\\"\\n required\\n autocomplete=\\\"current-password\\\"\\n bind:value={password}\\n error={errors.password}\\n />\\n <Button type=\\\"submit\\\" class=\\\"w-full\\\">Sign In</Button>\\n </div>\\n</form>\"\n },\n {\n \"title\": \"Contact Form\",\n \"code\": \"<form class=\\\"space-y-4\\\">\\n <FormField label=\\\"Full Name\\\" id=\\\"name\\\" required autocomplete=\\\"name\\\" bind:value={name} />\\n <FormField\\n label=\\\"Email\\\"\\n id=\\\"email\\\"\\n type=\\\"email\\\"\\n required\\n autocomplete=\\\"email\\\"\\n bind:value={email}\\n />\\n <FormField\\n label=\\\"Phone\\\"\\n id=\\\"phone\\\"\\n type=\\\"tel\\\"\\n autocomplete=\\\"tel\\\"\\n bind:value={phone}\\n hint=\\\"Optional\\\"\\n />\\n <FormField\\n label=\\\"Message\\\"\\n id=\\\"message\\\"\\n type=\\\"textarea\\\"\\n rows={5}\\n required\\n bind:value={message}\\n hint=\\\"Please describe your inquiry in detail\\\"\\n />\\n <Button type=\\\"submit\\\">Send Message</Button>\\n</form>\"\n },\n {\n \"title\": \"Controlled Field\",\n \"code\": \"<script>\\n let value = $state('');\\n\\n function handleChange(newValue: string) {\\n // Normalize phone number\\n value = newValue.replace(/\\\\D/g, '').slice(0, 10);\\n }\\n</script>\\n\\n<FormField\\n label=\\\"Phone\\\"\\n id=\\\"phone\\\"\\n type=\\\"tel\\\"\\n {value}\\n onValueChange={handleChange}\\n hint=\\\"10 digits only\\\"\\n/>\"\n }\n ],\n \"relatedComponents\": [\n \"Input\",\n \"Label\",\n \"Textarea\"\n ]\n },\n {\n \"name\": \"FormPageLayout\",\n \"description\": \"Specialized layout for form pages with optional sidebar\",\n \"category\": \"layout\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Page title (h1)\"\n },\n {\n \"name\": \"description\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Page description text\"\n },\n {\n \"name\": \"helpText\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Footer help text (supports HTML)\"\n },\n {\n \"name\": \"showNotices\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show notices section\"\n },\n {\n \"name\": \"sageBackground\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Use sage green background\"\n },\n {\n \"name\": \"children\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Main form content\"\n },\n {\n \"name\": \"notices\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Notices content\"\n },\n {\n \"name\": \"sidebar\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Sidebar content\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<FormPageLayout\\n title=\\\"Contact Us\\\"\\n description=\\\"Fill out the form below and we'll get back to you within 24 hours.\\\"\\n>\\n <form class=\\\"space-y-4\\\">\\n <Input label=\\\"Name\\\" required />\\n <Input label=\\\"Email\\\" type=\\\"email\\\" required />\\n <Textarea label=\\\"Message\\\" required />\\n <Button type=\\\"submit\\\">Send Message</Button>\\n </form>\\n</FormPageLayout>\"\n },\n {\n \"title\": \"Contact Form\",\n \"code\": \"<FormPageLayout\\n title=\\\"Get in Touch\\\"\\n description=\\\"We'd love to hear from you. Send us a message and we'll respond as soon as possible.\\\"\\n helpText=\\\"By submitting this form, you agree to our <a href='/privacy'>Privacy Policy</a>.\\\"\\n>\\n {#snippet sidebar()}\\n <div class=\\\"space-y-6\\\">\\n <Card>\\n <Card.Header>\\n <Card.Title>Contact Info</Card.Title>\\n </Card.Header>\\n <Card.Content class=\\\"space-y-3\\\">\\n <p class=\\\"text-sm\\\">\\n <strong>Email:</strong><br />\\n support@example.com\\n </p>\\n <p class=\\\"text-sm\\\">\\n <strong>Phone:</strong><br />\\n (555) 123-4567\\n </p>\\n </Card.Content>\\n </Card>\\n </div>\\n {/snippet}\\n\\n <Card>\\n <Card.Content class=\\\"pt-6\\\">\\n <form class=\\\"space-y-4\\\">\\n <div class=\\\"grid grid-cols-2 gap-4\\\">\\n <Input label=\\\"First Name\\\" required />\\n <Input label=\\\"Last Name\\\" required />\\n </div>\\n <Input label=\\\"Email\\\" type=\\\"email\\\" required />\\n <Input label=\\\"Phone\\\" type=\\\"tel\\\" />\\n <Select label=\\\"Subject\\\" required>\\n <option value=\\\"\\\">Select a topic...</option>\\n <option value=\\\"sales\\\">Sales Inquiry</option>\\n <option value=\\\"support\\\">Technical Support</option>\\n <option value=\\\"other\\\">Other</option>\\n </Select>\\n <Textarea label=\\\"Message\\\" rows={5} required />\\n <Button type=\\\"submit\\\" class=\\\"w-full\\\">Send Message</Button>\\n </form>\\n </Card.Content>\\n </Card>\\n</FormPageLayout>\"\n },\n {\n \"title\": \"Application Form\",\n \"code\": \"<FormPageLayout\\n title=\\\"Apply Now\\\"\\n description=\\\"Complete your application in just a few minutes.\\\"\\n sageBackground\\n>\\n {#snippet notices()}\\n <Alert variant=\\\"info\\\" class=\\\"mb-0\\\">\\n <strong>Save your progress:</strong> Your application will be saved automatically.\\n </Alert>\\n {/snippet}\\n\\n {#snippet sidebar()}\\n <div class=\\\"space-y-4\\\">\\n <Card>\\n <Card.Header>\\n <Card.Title>Progress</Card.Title>\\n </Card.Header>\\n <Card.Content>\\n <div class=\\\"space-y-2\\\">\\n <div class=\\\"flex justify-between text-sm\\\">\\n <span>Personal Info</span>\\n <Badge variant=\\\"success\\\">Complete</Badge>\\n </div>\\n <div class=\\\"flex justify-between text-sm\\\">\\n <span>Employment</span>\\n <Badge variant=\\\"warning\\\">In Progress</Badge>\\n </div>\\n <div class=\\\"flex justify-between text-sm\\\">\\n <span>Documents</span>\\n <Badge variant=\\\"outline\\\">Not Started</Badge>\\n </div>\\n </div>\\n </Card.Content>\\n </Card>\\n\\n <Card>\\n <Card.Header>\\n <Card.Title>Need Help?</Card.Title>\\n </Card.Header>\\n <Card.Content>\\n <p class=\\\"text-sm text-muted-foreground mb-4\\\">\\n Our team is here to assist you with your application.\\n </p>\\n <Button variant=\\\"outline\\\" class=\\\"w-full\\\">Chat with Us</Button>\\n </Card.Content>\\n </Card>\\n </div>\\n {/snippet}\\n\\n <Card>\\n <Card.Content class=\\\"pt-6\\\">\\n <!-- Multi-step form content -->\\n </Card.Content>\\n </Card>\\n</FormPageLayout>\"\n }\n ],\n \"relatedComponents\": [\n \"Card\",\n \"Alert\",\n \"Input\",\n \"PageHeader\"\n ]\n },\n {\n \"name\": \"FunnelChart\",\n \"description\": \"Visualize conversion rates and process flows\",\n \"category\": \"chart\",\n \"importPath\": \"@classic-homes/charts-svelte\",\n \"props\": [\n {\n \"name\": \"data\",\n \"type\": \"FunnelSliceData[]\",\n \"required\": true,\n \"description\": \"Array of funnel stages\"\n },\n {\n \"name\": \"sort\",\n \"type\": \"'ascending' | 'descending' | 'none'\",\n \"default\": \"'descending'\",\n \"required\": false,\n \"description\": \"Sort order\"\n },\n {\n \"name\": \"orientation\",\n \"type\": \"'vertical' | 'horizontal'\",\n \"default\": \"'vertical'\",\n \"required\": false,\n \"description\": \"Funnel orientation\"\n },\n {\n \"name\": \"showLabels\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show value labels\"\n },\n {\n \"name\": \"onClick\",\n \"type\": \"(params: SliceEventParams) => void\",\n \"required\": false,\n \"description\": \"Callback when clicked\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": true,\n \"description\": \"Chart title for accessibility\"\n },\n {\n \"name\": \"height\",\n \"type\": \"number | string\",\n \"default\": \"400\",\n \"required\": false,\n \"description\": \"Chart height\"\n },\n {\n \"name\": \"theme\",\n \"type\": \"'light' | 'dark' | 'auto'\",\n \"default\": \"'auto'\",\n \"required\": false,\n \"description\": \"Theme preference\"\n },\n {\n \"name\": \"showLegend\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show chart legend\"\n },\n {\n \"name\": \"showTooltip\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show tooltip on hover\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"sort\",\n \"values\": [\n \"ascending\",\n \"descending\",\n \"none\"\n ],\n \"default\": \"descending\"\n },\n {\n \"name\": \"orientation\",\n \"values\": [\n \"vertical\",\n \"horizontal\"\n ],\n \"default\": \"vertical\"\n },\n {\n \"name\": \"theme\",\n \"values\": [\n \"light\",\n \"dark\",\n \"auto\"\n ],\n \"default\": \"auto\"\n }\n ],\n \"slots\": [],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { FunnelChart } from '@classic-homes/charts-svelte';\\n\\n const data = [\\n { name: 'Visited', value: 100 },\\n { name: 'Inquired', value: 80 },\\n { name: 'Ordered', value: 60 },\\n { name: 'Paid', value: 40 },\\n { name: 'Completed', value: 20 },\\n ];\\n</script>\\n\\n<FunnelChart title=\\\"Conversion Funnel\\\" {data} sort=\\\"descending\\\" showLabels height={400} />\"\n },\n {\n \"title\": \"Sales Pipeline\",\n \"code\": \"<FunnelChart\\n title=\\\"Sales Pipeline\\\"\\n data={[\\n { name: 'Leads', value: 500 },\\n { name: 'Qualified', value: 350 },\\n { name: 'Proposal', value: 200 },\\n { name: 'Negotiation', value: 100 },\\n { name: 'Closed', value: 50 },\\n ]}\\n sort=\\\"descending\\\"\\n/>\"\n },\n {\n \"title\": \"Ascending Funnel\",\n \"code\": \"<FunnelChart title=\\\"Growth Funnel\\\" {data} sort=\\\"ascending\\\" />\"\n }\n ],\n \"relatedComponents\": [\n \"BarChart\",\n \"SankeyChart\"\n ]\n },\n {\n \"name\": \"GaugeChart\",\n \"description\": \"Display single value metrics with progress indicator\",\n \"category\": \"chart\",\n \"importPath\": \"@classic-homes/charts-svelte\",\n \"props\": [\n {\n \"name\": \"value\",\n \"type\": \"number\",\n \"required\": true,\n \"description\": \"Current value to display\"\n },\n {\n \"name\": \"min\",\n \"type\": \"number\",\n \"default\": \"0\",\n \"required\": false,\n \"description\": \"Minimum value of the gauge\"\n },\n {\n \"name\": \"max\",\n \"type\": \"number\",\n \"default\": \"100\",\n \"required\": false,\n \"description\": \"Maximum value of the gauge\"\n },\n {\n \"name\": \"splitNumber\",\n \"type\": \"number\",\n \"default\": \"10\",\n \"required\": false,\n \"description\": \"Number of tick divisions\"\n },\n {\n \"name\": \"showProgress\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Show colored progress arc\"\n },\n {\n \"name\": \"formatValue\",\n \"type\": \"(value: number) => string\",\n \"required\": false,\n \"description\": \"Custom value formatter\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": true,\n \"description\": \"Chart title for accessibility\"\n },\n {\n \"name\": \"height\",\n \"type\": \"number | string\",\n \"default\": \"400\",\n \"required\": false,\n \"description\": \"Chart height\"\n },\n {\n \"name\": \"theme\",\n \"type\": \"'light' | 'dark' | 'auto'\",\n \"default\": \"'auto'\",\n \"required\": false,\n \"description\": \"Theme preference\"\n },\n {\n \"name\": \"animation\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Enable/disable animations\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"theme\",\n \"values\": [\n \"light\",\n \"dark\",\n \"auto\"\n ],\n \"default\": \"auto\"\n }\n ],\n \"slots\": [],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { GaugeChart } from '@classic-homes/charts-svelte';\\n</script>\\n\\n<GaugeChart title=\\\"Performance Score\\\" value={72} min={0} max={100} showProgress height={400} />\"\n },\n {\n \"title\": \"Performance Score\",\n \"code\": \"<GaugeChart title=\\\"Performance Score\\\" value={85} min={0} max={100} showProgress />\"\n },\n {\n \"title\": \"With Custom Formatter\",\n \"code\": \"<GaugeChart title=\\\"Completion Rate\\\" value={72} formatValue={(v) => `${v}%`} showProgress />\"\n },\n {\n \"title\": \"Temperature Gauge\",\n \"code\": \"<GaugeChart\\n title=\\\"CPU Temperature\\\"\\n value={65}\\n min={0}\\n max={100}\\n formatValue={(v) => `${v}°C`}\\n showProgress\\n/>\"\n },\n {\n \"title\": \"Revenue KPI\",\n \"code\": \"<GaugeChart\\n title=\\\"Monthly Target\\\"\\n value={85000}\\n min={0}\\n max={100000}\\n formatValue={(v) => `$${(v / 1000).toFixed(0)}K`}\\n showProgress\\n/>\"\n }\n ],\n \"relatedComponents\": [\n \"DonutChart\",\n \"RadarChart\"\n ]\n },\n {\n \"name\": \"Header\",\n \"description\": \"Flexible application header with navigation support\",\n \"category\": \"layout\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"showMenuButton\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Show hamburger menu button\"\n },\n {\n \"name\": \"menuOpen\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Mobile menu state\"\n },\n {\n \"name\": \"onMenuClick\",\n \"type\": \"() => void\",\n \"required\": false,\n \"description\": \"Menu button callback\"\n },\n {\n \"name\": \"showCollapseButton\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Show sidebar collapse button\"\n },\n {\n \"name\": \"sidebarCollapsed\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Sidebar collapsed state\"\n },\n {\n \"name\": \"onCollapseClick\",\n \"type\": \"() => void\",\n \"required\": false,\n \"description\": \"Collapse button callback\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Page title\"\n },\n {\n \"name\": \"start\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Content after buttons\"\n },\n {\n \"name\": \"nav\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Navigation content\"\n },\n {\n \"name\": \"end\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Right side content\"\n },\n {\n \"name\": \"mobileNav\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Mobile navigation drawer\"\n },\n {\n \"name\": \"mobileBreakpoint\",\n \"type\": \"'sm' | 'md' | 'lg'\",\n \"default\": \"'lg'\",\n \"required\": false,\n \"description\": \"Responsive breakpoint\"\n },\n {\n \"name\": \"strongBorder\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Thicker bottom border\"\n },\n {\n \"name\": \"backdropBlur\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Blur effect\"\n },\n {\n \"name\": \"elevated\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Higher z-index\"\n },\n {\n \"name\": \"maxWidth\",\n \"type\": \"'none' | 'sm' | ... | '7xl'\",\n \"default\": \"'none'\",\n \"required\": false,\n \"description\": \"Content max-width\"\n },\n {\n \"name\": \"search\",\n \"type\": \"HeaderSearchConfig\",\n \"required\": false,\n \"description\": \"Search configuration\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional classes\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"mobileBreakpoint\",\n \"values\": [\n \"sm\",\n \"md\",\n \"lg\"\n ],\n \"default\": \"lg\"\n },\n {\n \"name\": \"maxWidth\",\n \"values\": [\n \"none\",\n \"sm\",\n \"7xl\"\n ],\n \"default\": \"none\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Header title=\\\"Dashboard\\\" />\"\n },\n {\n \"title\": \"E-commerce Header\",\n \"code\": \"<Header backdropBlur elevated maxWidth=\\\"7xl\\\">\\n {#snippet start()}\\n <a href=\\\"/\\\" class=\\\"font-bold text-xl\\\">Store</a>\\n {/snippet}\\n\\n {#snippet nav()}\\n <a href=\\\"/products\\\">Products</a>\\n <a href=\\\"/categories\\\">Categories</a>\\n <a href=\\\"/deals\\\">Deals</a>\\n {/snippet}\\n\\n {#snippet end()}\\n <Button variant=\\\"ghost\\\" size=\\\"icon\\\">\\n <SearchIcon />\\n </Button>\\n <Button variant=\\\"ghost\\\" size=\\\"icon\\\">\\n <CartIcon />\\n <Badge class=\\\"absolute -top-1 -right-1\\\">3</Badge>\\n </Button>\\n <Button variant=\\\"ghost\\\" size=\\\"icon\\\">\\n <UserIcon />\\n </Button>\\n {/snippet}\\n</Header>\"\n },\n {\n \"title\": \"Admin Header\",\n \"code\": \"<Header\\n showCollapseButton\\n sidebarCollapsed={!sidebarOpen}\\n onCollapseClick={() => (sidebarOpen = !sidebarOpen)}\\n title=\\\"Admin Panel\\\"\\n>\\n {#snippet end()}\\n <div class=\\\"flex items-center gap-4\\\">\\n <Badge variant=\\\"outline\\\">v2.1.0</Badge>\\n <Button variant=\\\"ghost\\\" size=\\\"icon\\\">\\n <SettingsIcon />\\n </Button>\\n <DropdownMenu>\\n <DropdownMenu.Trigger>\\n <Avatar>AD</Avatar>\\n </DropdownMenu.Trigger>\\n <DropdownMenu.Content>\\n <DropdownMenu.Item>Profile</DropdownMenu.Item>\\n <DropdownMenu.Item>Settings</DropdownMenu.Item>\\n <DropdownMenu.Separator />\\n <DropdownMenu.Item>Log out</DropdownMenu.Item>\\n </DropdownMenu.Content>\\n </DropdownMenu>\\n </div>\\n {/snippet}\\n</Header>\"\n }\n ],\n \"relatedComponents\": [\n \"Sidebar\",\n \"DashboardLayout\",\n \"PublicLayout\"\n ]\n },\n {\n \"name\": \"HeaderSearch\",\n \"description\": \"Docusaurus-style search component with modal dialog and keyboard navigation\",\n \"category\": \"navigation\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"enabled\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Whether search is visible\"\n },\n {\n \"name\": \"placeholder\",\n \"type\": \"string\",\n \"default\": \"'Search...'\",\n \"required\": false,\n \"description\": \"Placeholder text\"\n },\n {\n \"name\": \"onSearch\",\n \"type\": \"(query: string) => void\",\n \"required\": false,\n \"description\": \"Search callback (debounced 200ms)\"\n },\n {\n \"name\": \"onSelect\",\n \"type\": \"(item: SearchResultItem) => void\",\n \"required\": false,\n \"description\": \"Selection callback\"\n },\n {\n \"name\": \"onOpenChange\",\n \"type\": \"(open: boolean) => void\",\n \"required\": false,\n \"description\": \"Dialog open/close callback\"\n },\n {\n \"name\": \"results\",\n \"type\": \"SearchResultItem[] | SearchResultGroup[]\",\n \"default\": \"[]\",\n \"required\": false,\n \"description\": \"Search results to display\"\n },\n {\n \"name\": \"loading\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Loading state\"\n },\n {\n \"name\": \"emptyMessage\",\n \"type\": \"string\",\n \"default\": \"'No results found.'\",\n \"required\": false,\n \"description\": \"Empty state message\"\n },\n {\n \"name\": \"enableShortcut\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Enable Cmd/Ctrl+K shortcut\"\n },\n {\n \"name\": \"shortcutKey\",\n \"type\": \"string\",\n \"default\": \"'k'\",\n \"required\": false,\n \"description\": \"Custom shortcut key\"\n },\n {\n \"name\": \"variant\",\n \"type\": \"'default' | 'icon'\",\n \"default\": \"'default'\",\n \"required\": false,\n \"description\": \"Trigger button style\"\n },\n {\n \"name\": \"size\",\n \"type\": \"'sm' | 'md'\",\n \"default\": \"'md'\",\n \"required\": false,\n \"description\": \"Trigger button size\"\n },\n {\n \"name\": \"renderResult\",\n \"type\": \"Snippet<[item, isSelected]>\",\n \"required\": false,\n \"description\": \"Custom result renderer\"\n },\n {\n \"name\": \"renderEmpty\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Custom empty state renderer\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional classes for trigger\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"variant\",\n \"values\": [\n \"default\",\n \"icon\"\n ],\n \"default\": \"default\"\n },\n {\n \"name\": \"size\",\n \"values\": [\n \"sm\",\n \"md\"\n ],\n \"default\": \"md\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n let results: SearchResultItem[] = $state([]);\\n let loading = $state(false);\\n\\n async function handleSearch(query: string) {\\n loading = true;\\n results = await fetchSearchResults(query);\\n loading = false;\\n }\\n\\n function handleSelect(item: SearchResultItem) {\\n goto(item.href);\\n }\\n</script>\\n\\n<HeaderSearch\\n enabled={true}\\n placeholder=\\\"Search...\\\"\\n onSearch={handleSearch}\\n onSelect={handleSelect}\\n {results}\\n {loading}\\n/>\"\n },\n {\n \"title\": \"Default\",\n \"description\": \"Full search box with placeholder and keyboard shortcut hint:\",\n \"code\": \"<HeaderSearch variant=\\\"default\\\" />\"\n },\n {\n \"title\": \"Icon\",\n \"description\": \"Compact icon-only button:\",\n \"code\": \"<HeaderSearch variant=\\\"icon\\\" />\"\n },\n {\n \"title\": \"In Header\",\n \"code\": \"<Header>\\n <div slot=\\\"actions\\\">\\n <HeaderSearch onSearch={handleSearch} onSelect={handleSelect} {results} />\\n </div>\\n</Header>\"\n },\n {\n \"title\": \"Grouped Results\",\n \"code\": \"<script>\\n const groupedResults = [\\n {\\n title: 'Components',\\n items: [\\n { id: '1', title: 'Button', href: '/docs/button' },\\n { id: '2', title: 'Card', href: '/docs/card' },\\n ],\\n },\\n {\\n title: 'Guides',\\n items: [{ id: '3', title: 'Getting Started', href: '/guides/start' }],\\n },\\n ];\\n</script>\\n\\n<HeaderSearch results={groupedResults} />\"\n },\n {\n \"title\": \"Custom Result Rendering\",\n \"code\": \"<HeaderSearch {results}>\\n {#snippet renderResult(item, isSelected)}\\n <div class=\\\"flex items-center gap-2\\\">\\n <Icon name={item.icon} />\\n <span>{item.title}</span>\\n {#if item.badge}\\n <Badge>{item.badge}</Badge>\\n {/if}\\n </div>\\n {/snippet}\\n</HeaderSearch>\"\n },\n {\n \"title\": \"Custom Empty State\",\n \"code\": \"<HeaderSearch {results}>\\n {#snippet renderEmpty()}\\n <div class=\\\"text-center py-8\\\">\\n <Icon name=\\\"search\\\" class=\\\"h-8 w-8 mx-auto mb-2 text-muted-foreground\\\" />\\n <p>No results found</p>\\n <a href=\\\"/help\\\" class=\\\"text-primary\\\">Need help?</a>\\n </div>\\n {/snippet}\\n</HeaderSearch>\"\n }\n ],\n \"relatedComponents\": [\n \"Header\",\n \"Dialog\"\n ]\n },\n {\n \"name\": \"HeatmapChart\",\n \"description\": \"Matrix data visualization with color intensity\",\n \"category\": \"chart\",\n \"importPath\": \"@classic-homes/charts-svelte\",\n \"props\": [\n {\n \"name\": \"data\",\n \"type\": \"HeatmapData\",\n \"required\": true,\n \"description\": \"Matrix data with coordinates and values\"\n },\n {\n \"name\": \"xAxis\",\n \"type\": \"string[]\",\n \"required\": true,\n \"description\": \"X-axis labels\"\n },\n {\n \"name\": \"yAxis\",\n \"type\": \"string[]\",\n \"required\": true,\n \"description\": \"Y-axis labels\"\n },\n {\n \"name\": \"showValues\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Display values in cells\"\n },\n {\n \"name\": \"onClick\",\n \"type\": \"(params: HeatmapEventParams) => void\",\n \"required\": false,\n \"description\": \"Callback when clicked\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": true,\n \"description\": \"Chart title for accessibility\"\n },\n {\n \"name\": \"height\",\n \"type\": \"number | string\",\n \"default\": \"400\",\n \"required\": false,\n \"description\": \"Chart height\"\n },\n {\n \"name\": \"theme\",\n \"type\": \"'light' | 'dark' | 'auto'\",\n \"default\": \"'auto'\",\n \"required\": false,\n \"description\": \"Theme preference\"\n },\n {\n \"name\": \"showTooltip\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show tooltip on hover\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"theme\",\n \"values\": [\n \"light\",\n \"dark\",\n \"auto\"\n ],\n \"default\": \"auto\"\n }\n ],\n \"slots\": [],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { HeatmapChart } from '@classic-homes/charts-svelte';\\n\\n const xAxis = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];\\n const yAxis = ['12a', '6a', '12p', '6p'];\\n\\n const data = {\\n data: [\\n [0, 0, 5],\\n [0, 1, 1],\\n [0, 2, 0],\\n [0, 3, 2],\\n [1, 0, 1],\\n [1, 1, 0],\\n [1, 2, 3],\\n [1, 3, 4],\\n // ... more data points\\n ],\\n min: 0,\\n max: 5,\\n };\\n</script>\\n\\n<HeatmapChart title=\\\"Activity Heatmap\\\" {data} {xAxis} {yAxis} showValues height={400} />\"\n },\n {\n \"title\": \"GitHub-style Activity\",\n \"code\": \"<HeatmapChart\\n title=\\\"Commit Activity\\\"\\n {data}\\n xAxis={['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']}\\n yAxis={['12a', '4a', '8a', '12p', '4p', '8p']}\\n/>\"\n },\n {\n \"title\": \"Correlation Matrix\",\n \"code\": \"<HeatmapChart\\n title=\\\"Feature Correlation\\\"\\n {data}\\n xAxis={['Price', 'Size', 'Age', 'Rooms']}\\n yAxis={['Price', 'Size', 'Age', 'Rooms']}\\n showValues\\n/>\"\n }\n ],\n \"relatedComponents\": [\n \"ScatterChart\",\n \"TreemapChart\"\n ]\n },\n {\n \"name\": \"Icon\",\n \"description\": \"A unified icon component with 50+ commonly used icons\",\n \"category\": \"core\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"name\",\n \"type\": \"IconName\",\n \"required\": false,\n \"description\": \"Name of the icon to display (required)\"\n },\n {\n \"name\": \"size\",\n \"type\": \"number\",\n \"default\": \"24\",\n \"required\": false,\n \"description\": \"Size of the icon in pixels\"\n },\n {\n \"name\": \"strokeWidth\",\n \"type\": \"number\",\n \"default\": \"2\",\n \"required\": false,\n \"description\": \"Stroke width for stroke-based icons\"\n },\n {\n \"name\": \"label\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Accessible label (renders as visually hidden text)\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Icon name=\\\"check\\\" />\\n<Icon name=\\\"close\\\" />\\n<Icon name=\\\"edit\\\" />\"\n },\n {\n \"title\": \"Navigation & Actions\",\n \"code\": \"<Icon name=\\\"close\\\" />\\n<!-- X mark -->\\n<Icon name=\\\"check\\\" />\\n<!-- Checkmark -->\\n<Icon name=\\\"plus\\\" />\\n<!-- Plus sign -->\\n<Icon name=\\\"minus\\\" />\\n<!-- Minus sign -->\\n<Icon name=\\\"menu\\\" />\\n<!-- Hamburger menu -->\\n<Icon name=\\\"search\\\" />\\n<!-- Magnifying glass -->\\n<Icon name=\\\"home\\\" />\\n<!-- House -->\\n<Icon name=\\\"settings\\\" />\\n<!-- Gear -->\\n<Icon name=\\\"refresh\\\" />\\n<!-- Refresh arrows -->\"\n },\n {\n \"title\": \"Arrows & Chevrons\",\n \"code\": \"<Icon name=\\\"chevron-down\\\" />\\n<Icon name=\\\"chevron-up\\\" />\\n<Icon name=\\\"chevron-left\\\" />\\n<Icon name=\\\"chevron-right\\\" />\\n<Icon name=\\\"arrow-left\\\" />\\n<Icon name=\\\"arrow-right\\\" />\\n<Icon name=\\\"external-link\\\" />\"\n },\n {\n \"title\": \"Editing & Files\",\n \"code\": \"<Icon name=\\\"edit\\\" />\\n<!-- Pencil -->\\n<Icon name=\\\"trash\\\" />\\n<!-- Trash can -->\\n<Icon name=\\\"copy\\\" />\\n<!-- Copy documents -->\\n<Icon name=\\\"download\\\" />\\n<!-- Download arrow -->\\n<Icon name=\\\"upload\\\" />\\n<!-- Upload arrow -->\\n<Icon name=\\\"file\\\" />\\n<!-- Document -->\\n<Icon name=\\\"folder\\\" />\\n<!-- Folder -->\\n<Icon name=\\\"image\\\" />\\n<!-- Image placeholder -->\"\n },\n {\n \"title\": \"Feedback & Status\",\n \"code\": \"<Icon name=\\\"info\\\" />\\n<!-- Info circle -->\\n<Icon name=\\\"alert-circle\\\" />\\n<!-- Alert circle -->\\n<Icon name=\\\"alert-triangle\\\" />\\n<!-- Warning triangle -->\\n<Icon name=\\\"loading\\\" />\\n<!-- Animated spinner -->\"\n },\n {\n \"title\": \"Communication\",\n \"code\": \"<Icon name=\\\"message\\\" />\\n<!-- Speech bubble -->\\n<Icon name=\\\"chat\\\" />\\n<!-- Simple chat bubble -->\\n<Icon name=\\\"mail\\\" />\\n<!-- Envelope -->\\n<Icon name=\\\"phone\\\" />\\n<!-- Phone -->\\n<Icon name=\\\"send\\\" />\\n<!-- Paper plane -->\"\n },\n {\n \"title\": \"User & Security\",\n \"code\": \"<Icon name=\\\"user\\\" />\\n<!-- User silhouette -->\\n<Icon name=\\\"lock\\\" />\\n<!-- Locked padlock -->\\n<Icon name=\\\"unlock\\\" />\\n<!-- Unlocked padlock -->\\n<Icon name=\\\"eye\\\" />\\n<!-- Visible eye -->\\n<Icon name=\\\"eye-off\\\" />\\n<!-- Hidden eye -->\"\n },\n {\n \"title\": \"UI & Interaction\",\n \"code\": \"<Icon name=\\\"more\\\" />\\n<!-- Vertical dots -->\\n<Icon name=\\\"more-horizontal\\\" />\\n<!-- Horizontal dots -->\\n<Icon name=\\\"grip\\\" />\\n<!-- Drag handle (6 dots) -->\\n<Icon name=\\\"filter\\\" />\\n<!-- Filter funnel -->\\n<Icon name=\\\"sort\\\" />\\n<!-- Sort arrows -->\\n<Icon name=\\\"link\\\" />\\n<!-- Chain link -->\"\n },\n {\n \"title\": \"Time & Date\",\n \"code\": \"<Icon name=\\\"calendar\\\" />\\n<!-- Calendar -->\\n<Icon name=\\\"clock\\\" />\\n<!-- Clock face -->\\n<Icon name=\\\"history\\\" />\\n<!-- Clock with history -->\"\n },\n {\n \"title\": \"Social & Favorites\",\n \"code\": \"<Icon name=\\\"star\\\" />\\n<!-- Star -->\\n<Icon name=\\\"heart\\\" />\\n<!-- Heart -->\\n<Icon name=\\\"bookmark\\\" />\\n<!-- Bookmark -->\"\n },\n {\n \"title\": \"Icon Buttons\",\n \"code\": \"<button class=\\\"p-2 rounded-md hover:bg-muted\\\">\\n <Icon name=\\\"close\\\" size={20} label=\\\"Close dialog\\\" />\\n</button>\\n\\n<button class=\\\"p-2 rounded-md hover:bg-muted\\\">\\n <Icon name=\\\"settings\\\" size={20} label=\\\"Open settings\\\" />\\n</button>\"\n },\n {\n \"title\": \"Button with Icon\",\n \"code\": \"<Button>\\n <Icon name=\\\"plus\\\" size={18} class=\\\"mr-2\\\" />\\n Add Item\\n</Button>\\n\\n<Button variant=\\\"destructive\\\">\\n <Icon name=\\\"trash\\\" size={18} class=\\\"mr-2\\\" />\\n Delete\\n</Button>\"\n },\n {\n \"title\": \"Status Indicators\",\n \"code\": \"<div class=\\\"flex items-center gap-2\\\">\\n <Icon name=\\\"check\\\" class=\\\"text-green-500\\\" size={20} />\\n <span>Completed</span>\\n</div>\\n\\n<div class=\\\"flex items-center gap-2\\\">\\n <Icon name=\\\"alert-circle\\\" class=\\\"text-yellow-500\\\" size={20} />\\n <span>Pending review</span>\\n</div>\\n\\n<div class=\\\"flex items-center gap-2\\\">\\n <Icon name=\\\"close\\\" class=\\\"text-red-500\\\" size={20} />\\n <span>Failed</span>\\n</div>\"\n },\n {\n \"title\": \"Loading State\",\n \"code\": \"<Button disabled>\\n <Icon name=\\\"loading\\\" size={18} class=\\\"mr-2\\\" />\\n Saving...\\n</Button>\"\n },\n {\n \"title\": \"Navigation Menu\",\n \"code\": \"<nav class=\\\"space-y-1\\\">\\n <a href=\\\"/\\\" class=\\\"flex items-center gap-3 px-3 py-2 rounded-md hover:bg-muted\\\">\\n <Icon name=\\\"home\\\" size={20} />\\n Home\\n </a>\\n <a href=\\\"/settings\\\" class=\\\"flex items-center gap-3 px-3 py-2 rounded-md hover:bg-muted\\\">\\n <Icon name=\\\"settings\\\" size={20} />\\n Settings\\n </a>\\n <a href=\\\"/profile\\\" class=\\\"flex items-center gap-3 px-3 py-2 rounded-md hover:bg-muted\\\">\\n <Icon name=\\\"user\\\" size={20} />\\n Profile\\n </a>\\n</nav>\"\n },\n {\n \"title\": \"Input with Icon\",\n \"code\": \"<div class=\\\"relative\\\">\\n <Icon\\n name=\\\"search\\\"\\n size={18}\\n class=\\\"absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground\\\"\\n />\\n <Input class=\\\"pl-10\\\" placeholder=\\\"Search...\\\" />\\n</div>\"\n },\n {\n \"title\": \"Password Toggle\",\n \"code\": \"<script>\\n let showPassword = $state(false);\\n</script>\\n\\n<div class=\\\"relative\\\">\\n <Input type={showPassword ? 'text' : 'password'} />\\n <button\\n type=\\\"button\\\"\\n class=\\\"absolute right-3 top-1/2 -translate-y-1/2\\\"\\n onclick={() => (showPassword = !showPassword)}\\n >\\n <Icon\\n name={showPassword ? 'eye-off' : 'eye'}\\n size={18}\\n label={showPassword ? 'Hide password' : 'Show password'}\\n />\\n </button>\\n</div>\"\n }\n ],\n \"relatedComponents\": [\n \"Button\",\n \"Spinner\"\n ]\n },\n {\n \"name\": \"Input\",\n \"description\": \"Text input field for single-line data entry with various input modes\",\n \"category\": \"form\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"type\",\n \"type\": \"string\",\n \"default\": \"'text'\",\n \"required\": false,\n \"description\": \"HTML input type\"\n },\n {\n \"name\": \"value\",\n \"type\": \"string | number\",\n \"default\": \"''\",\n \"required\": false,\n \"description\": \"Input value (bindable)\"\n },\n {\n \"name\": \"placeholder\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Placeholder text\"\n },\n {\n \"name\": \"disabled\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Disables the input\"\n },\n {\n \"name\": \"readonly\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Makes the input read-only\"\n },\n {\n \"name\": \"required\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Marks as required\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Input name for forms\"\n },\n {\n \"name\": \"id\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Input ID for label association\"\n },\n {\n \"name\": \"autocomplete\",\n \"type\": \"AutoFill\",\n \"required\": false,\n \"description\": \"Browser autocomplete hint\"\n },\n {\n \"name\": \"inputmode\",\n \"type\": \"'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search'\",\n \"required\": false,\n \"description\": \"Mobile keyboard hint\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n },\n {\n \"name\": \"onValueChange\",\n \"type\": \"(value: string) => void\",\n \"required\": false,\n \"description\": \"Callback when value changes\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"inputmode\",\n \"values\": [\n \"none\",\n \"text\",\n \"tel\",\n \"url\",\n \"email\",\n \"numeric\",\n \"decimal\",\n \"search\"\n ]\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Input placeholder=\\\"Enter text...\\\" />\"\n },\n {\n \"title\": \"Text (Default)\",\n \"code\": \"<Input type=\\\"text\\\" placeholder=\\\"Enter name\\\" />\"\n },\n {\n \"title\": \"Email\",\n \"code\": \"<Input type=\\\"email\\\" placeholder=\\\"your@email.com\\\" autocomplete=\\\"email\\\" />\"\n },\n {\n \"title\": \"Password\",\n \"code\": \"<Input type=\\\"password\\\" placeholder=\\\"Enter password\\\" autocomplete=\\\"current-password\\\" />\"\n },\n {\n \"title\": \"Number\",\n \"code\": \"<Input type=\\\"number\\\" placeholder=\\\"0\\\" />\"\n },\n {\n \"title\": \"Search\",\n \"code\": \"<Input type=\\\"search\\\" placeholder=\\\"Search...\\\" />\"\n },\n {\n \"title\": \"Tel (Phone)\",\n \"code\": \"<Input type=\\\"tel\\\" placeholder=\\\"(555) 123-4567\\\" autocomplete=\\\"tel\\\" inputmode=\\\"tel\\\" />\"\n },\n {\n \"title\": \"URL\",\n \"code\": \"<Input type=\\\"url\\\" placeholder=\\\"https://example.com\\\" inputmode=\\\"url\\\" />\"\n },\n {\n \"title\": \"Disabled\",\n \"code\": \"<Input disabled value=\\\"Cannot edit\\\" />\"\n },\n {\n \"title\": \"Read-only\",\n \"code\": \"<Input readonly value=\\\"Read only value\\\" />\"\n },\n {\n \"title\": \"Required\",\n \"code\": \"<Input required placeholder=\\\"Required field\\\" />\"\n },\n {\n \"title\": \"Search Input\",\n \"code\": \"<div class=\\\"relative\\\">\\n <svg\\n class=\\\"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground\\\"\\n fill=\\\"none\\\"\\n viewBox=\\\"0 0 24 24\\\"\\n stroke=\\\"currentColor\\\"\\n >\\n <path\\n stroke-linecap=\\\"round\\\"\\n stroke-linejoin=\\\"round\\\"\\n stroke-width=\\\"2\\\"\\n d=\\\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\\\"\\n />\\n </svg>\\n <Input type=\\\"search\\\" placeholder=\\\"Search...\\\" class=\\\"pl-10\\\" />\\n</div>\"\n },\n {\n \"title\": \"Input with Button\",\n \"code\": \"<div class=\\\"flex gap-2\\\">\\n <Input placeholder=\\\"Enter email\\\" class=\\\"flex-1\\\" />\\n <Button>Subscribe</Button>\\n</div>\"\n },\n {\n \"title\": \"Custom Width\",\n \"code\": \"<Input class=\\\"w-64\\\" placeholder=\\\"Fixed width\\\" />\\n<Input class=\\\"max-w-sm\\\" placeholder=\\\"Max width\\\" />\"\n }\n ],\n \"relatedComponents\": [\n \"Label\",\n \"FormField\",\n \"Textarea\"\n ]\n },\n {\n \"name\": \"Label\",\n \"description\": \"Accessible label component for form inputs\",\n \"category\": \"form\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"for\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"ID of the associated input element\"\n },\n {\n \"name\": \"disabled\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Applies disabled styling\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Label for=\\\"email\\\">Email Address</Label>\"\n },\n {\n \"title\": \"Disabled\",\n \"description\": \"When the associated input is disabled, apply matching styles to the label:\",\n \"code\": \"<div class=\\\"space-y-2\\\">\\n <Label for=\\\"disabled-input\\\" disabled>Disabled Field</Label>\\n <Input id=\\\"disabled-input\\\" disabled value=\\\"Cannot edit\\\" />\\n</div>\"\n },\n {\n \"title\": \"With Peer Styling\",\n \"description\": \"Labels automatically style differently when their peer input is disabled:\",\n \"code\": \"<div class=\\\"grid gap-2\\\">\\n <Input id=\\\"peer-demo\\\" disabled class=\\\"peer\\\" />\\n <Label for=\\\"peer-demo\\\">This label fades when input is disabled</Label>\\n</div>\"\n },\n {\n \"title\": \"Visually Hidden Label\",\n \"description\": \"For inputs where a visible label is not desired (like search), use screen-reader-only styling:\",\n \"code\": \"<Label for=\\\"search\\\" class=\\\"sr-only\\\">Search</Label>\\n<Input id=\\\"search\\\" type=\\\"search\\\" placeholder=\\\"Search...\\\" />\"\n },\n {\n \"title\": \"Form Field Group\",\n \"code\": \"<div class=\\\"space-y-4\\\">\\n <div class=\\\"space-y-2\\\">\\n <Label for=\\\"first-name\\\">First Name</Label>\\n <Input id=\\\"first-name\\\" />\\n </div>\\n <div class=\\\"space-y-2\\\">\\n <Label for=\\\"last-name\\\">Last Name</Label>\\n <Input id=\\\"last-name\\\" />\\n </div>\\n</div>\"\n },\n {\n \"title\": \"Horizontal Layout\",\n \"code\": \"<div class=\\\"flex items-center gap-4\\\">\\n <Label for=\\\"inline-input\\\" class=\\\"shrink-0 w-24\\\">Name</Label>\\n <Input id=\\\"inline-input\\\" class=\\\"flex-1\\\" />\\n</div>\"\n },\n {\n \"title\": \"With Checkbox\",\n \"code\": \"<script>\\n import { Label, Checkbox } from '@classic-homes/theme-svelte';\\n</script>\\n\\n<div class=\\\"flex items-center gap-2\\\">\\n <Checkbox id=\\\"terms\\\" />\\n <Label for=\\\"terms\\\">I agree to the terms and conditions</Label>\\n</div>\"\n }\n ],\n \"relatedComponents\": [\n \"Input\",\n \"Checkbox\",\n \"FormField\"\n ]\n },\n {\n \"name\": \"LineChart\",\n \"description\": \"Display trends over time with smooth curves and area fill options\",\n \"category\": \"chart\",\n \"importPath\": \"@classic-homes/charts-svelte\",\n \"props\": [\n {\n \"name\": \"data\",\n \"type\": \"LineChartData\",\n \"required\": true,\n \"description\": \"Chart data with categories and series\"\n },\n {\n \"name\": \"smooth\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Use smooth curved lines instead of straight segments\"\n },\n {\n \"name\": \"areaFilled\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Fill the area under the line\"\n },\n {\n \"name\": \"showDataPoints\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Show data point markers on the line\"\n },\n {\n \"name\": \"stacked\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Stack multiple series on top of each other\"\n },\n {\n \"name\": \"onClick\",\n \"type\": \"(params: DataPointEventParams) => void\",\n \"required\": false,\n \"description\": \"Callback when a data point is clicked\"\n },\n {\n \"name\": \"onHover\",\n \"type\": \"(params: DataPointEventParams) => void\",\n \"required\": false,\n \"description\": \"Callback when hovering over a data point\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": true,\n \"description\": \"Chart title for accessibility (aria-label)\"\n },\n {\n \"name\": \"description\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Optional description for screen readers\"\n },\n {\n \"name\": \"height\",\n \"type\": \"number | string\",\n \"default\": \"400\",\n \"required\": false,\n \"description\": \"Chart height in pixels or CSS value\"\n },\n {\n \"name\": \"loading\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Show loading skeleton\"\n },\n {\n \"name\": \"error\",\n \"type\": \"string | null\",\n \"required\": false,\n \"description\": \"Error message to display\"\n },\n {\n \"name\": \"theme\",\n \"type\": \"'light' | 'dark' | 'auto'\",\n \"default\": \"'auto'\",\n \"required\": false,\n \"description\": \"Theme preference\"\n },\n {\n \"name\": \"animation\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Enable/disable animations\"\n },\n {\n \"name\": \"showLegend\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show chart legend\"\n },\n {\n \"name\": \"showTooltip\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show tooltip on hover\"\n },\n {\n \"name\": \"showGrid\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show grid lines\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Custom CSS class\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"theme\",\n \"values\": [\n \"light\",\n \"dark\",\n \"auto\"\n ],\n \"default\": \"auto\"\n }\n ],\n \"slots\": [],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { LineChart } from '@classic-homes/charts-svelte';\\n\\n const data = {\\n categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'],\\n series: [\\n { name: '2024', data: [120, 132, 101, 134, 90, 230] },\\n { name: '2025', data: [220, 182, 191, 234, 290, 330] },\\n ],\\n };\\n</script>\\n\\n<LineChart title=\\\"Monthly Revenue\\\" {data} smooth height={400} />\"\n },\n {\n \"title\": \"Smooth Line Chart\",\n \"code\": \"<LineChart title=\\\"Monthly Sales\\\" {data} smooth height={400} />\"\n },\n {\n \"title\": \"With Data Points\",\n \"code\": \"<LineChart title=\\\"Monthly Sales\\\" {data} smooth showDataPoints height={400} />\"\n },\n {\n \"title\": \"Stacked Lines\",\n \"code\": \"<LineChart title=\\\"Stacked Revenue\\\" {data} stacked smooth height={400} />\"\n },\n {\n \"title\": \"With Area Fill\",\n \"code\": \"<LineChart title=\\\"Revenue Trend\\\" {data} areaFilled smooth height={400} />\"\n },\n {\n \"title\": \"Handling Click Events\",\n \"code\": \"<script>\\n function handleClick(params) {\\n console.log('Clicked:', params.seriesName, params.name, params.value);\\n }\\n</script>\\n\\n<LineChart title=\\\"Interactive Chart\\\" {data} onClick={handleClick} />\"\n }\n ],\n \"relatedComponents\": [\n \"AreaChart\",\n \"BarChart\"\n ]\n },\n {\n \"name\": \"LoadingLogo\",\n \"description\": \"Animated brand logo for loading states\",\n \"category\": \"branding\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"width\",\n \"type\": \"number\",\n \"default\": \"40\",\n \"required\": false,\n \"description\": \"Width in pixels\"\n },\n {\n \"name\": \"height\",\n \"type\": \"number\",\n \"default\": \"40\",\n \"required\": false,\n \"description\": \"Height in pixels\"\n },\n {\n \"name\": \"loading\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Enable loading animation\"\n },\n {\n \"name\": \"variant\",\n \"type\": \"'light' | 'dark'\",\n \"default\": \"'dark'\",\n \"required\": false,\n \"description\": \"Color variant\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional classes\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"variant\",\n \"values\": [\n \"light\",\n \"dark\"\n ],\n \"default\": \"dark\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<LoadingLogo loading />\"\n },\n {\n \"title\": \"Dark (Default)\",\n \"description\": \"For light backgrounds:\",\n \"code\": \"<LoadingLogo variant=\\\"dark\\\" loading />\"\n },\n {\n \"title\": \"Light\",\n \"description\": \"For dark backgrounds:\",\n \"code\": \"<div class=\\\"bg-gray-900 p-8\\\">\\n <LoadingLogo variant=\\\"light\\\" loading />\\n</div>\"\n },\n {\n \"title\": \"Splash Screen\",\n \"code\": \"{#if loading}\\n <div class=\\\"fixed inset-0 flex items-center justify-center bg-background\\\">\\n <div class=\\\"flex flex-col items-center gap-4\\\">\\n <LoadingLogo width={64} height={64} loading />\\n <p class=\\\"text-sm text-muted-foreground\\\">Loading...</p>\\n </div>\\n </div>\\n{/if}\"\n },\n {\n \"title\": \"Page Loading\",\n \"code\": \"{#if pageLoading}\\n <div class=\\\"flex items-center justify-center min-h-[400px]\\\">\\n <LoadingLogo loading />\\n </div>\\n{:else}\\n <main>{pageContent}</main>\\n{/if}\"\n },\n {\n \"title\": \"Dark Background Splash\",\n \"code\": \"<div class=\\\"fixed inset-0 flex items-center justify-center bg-gray-900\\\">\\n <LoadingLogo variant=\\\"light\\\" width={80} height={80} loading />\\n</div>\"\n },\n {\n \"title\": \"Button Loading State\",\n \"code\": \"<Button disabled={submitting}>\\n {#if submitting}\\n <LoadingLogo width={20} height={20} loading class=\\\"mr-2\\\" />\\n Saving...\\n {:else}\\n Save\\n {/if}\\n</Button>\"\n },\n {\n \"title\": \"Initial App Load\",\n \"code\": \"<!-- +layout.svelte -->\\n<script>\\n let appReady = $state(false);\\n\\n onMount(() => {\\n // Initialize app\\n setTimeout(() => (appReady = true), 1500);\\n });\\n</script>\\n\\n{#if !appReady}\\n <div class=\\\"fixed inset-0 z-50 flex items-center justify-center bg-background\\\">\\n <LoadingLogo width={64} height={64} loading />\\n </div>\\n{/if}\\n\\n<div class={appReady ? '' : 'hidden'}>\\n <slot />\\n</div>\"\n }\n ],\n \"relatedComponents\": [\n \"LogoMain\",\n \"Spinner\",\n \"Skeleton\"\n ]\n },\n {\n \"name\": \"LogoMain\",\n \"description\": \"Brand logo component with multiple layouts and variants\",\n \"category\": \"branding\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"variant\",\n \"type\": \"'horizontal' | 'stacked' | 'icon'\",\n \"default\": \"'horizontal'\",\n \"required\": false,\n \"description\": \"Layout variant\"\n },\n {\n \"name\": \"color\",\n \"type\": \"'dark' | 'light' | 'mono-dark' | 'mono-light'\",\n \"default\": \"'dark'\",\n \"required\": false,\n \"description\": \"Color scheme\"\n },\n {\n \"name\": \"subtitle\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Optional subtitle text\"\n },\n {\n \"name\": \"environment\",\n \"type\": \"'local' | 'dev' | 'demo'\",\n \"required\": false,\n \"description\": \"Environment indicator\"\n },\n {\n \"name\": \"size\",\n \"type\": \"'sm' | 'md' | 'lg'\",\n \"default\": \"'md'\",\n \"required\": false,\n \"description\": \"Size preset\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional classes\"\n },\n {\n \"name\": \"ariaLabel\",\n \"type\": \"string\",\n \"default\": \"'Classic Homes'\",\n \"required\": false,\n \"description\": \"Accessible label\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"variant\",\n \"values\": [\n \"horizontal\",\n \"stacked\",\n \"icon\"\n ],\n \"default\": \"horizontal\"\n },\n {\n \"name\": \"color\",\n \"values\": [\n \"dark\",\n \"light\",\n \"mono-dark\",\n \"mono-light\"\n ],\n \"default\": \"dark\"\n },\n {\n \"name\": \"environment\",\n \"values\": [\n \"local\",\n \"dev\",\n \"demo\"\n ]\n },\n {\n \"name\": \"size\",\n \"values\": [\n \"sm\",\n \"md\",\n \"lg\"\n ],\n \"default\": \"md\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<LogoMain />\"\n },\n {\n \"title\": \"Horizontal (Default)\",\n \"description\": \"Logo icon and text side by side:\",\n \"code\": \"<LogoMain variant=\\\"horizontal\\\" />\"\n },\n {\n \"title\": \"Stacked\",\n \"description\": \"Logo icon above text:\",\n \"code\": \"<LogoMain variant=\\\"stacked\\\" />\"\n },\n {\n \"title\": \"Icon Only\",\n \"description\": \"Just the logo icon:\",\n \"code\": \"<LogoMain variant=\\\"icon\\\" />\"\n },\n {\n \"title\": \"Dark (Default)\",\n \"description\": \"For light backgrounds:\",\n \"code\": \"<div class=\\\"bg-white p-4\\\">\\n <LogoMain color=\\\"dark\\\" />\\n</div>\"\n },\n {\n \"title\": \"Light\",\n \"description\": \"For dark backgrounds:\",\n \"code\": \"<div class=\\\"bg-gray-900 p-4\\\">\\n <LogoMain color=\\\"light\\\" />\\n</div>\"\n },\n {\n \"title\": \"Mono Dark\",\n \"description\": \"Navy monochrome for light backgrounds:\",\n \"code\": \"<LogoMain color=\\\"mono-dark\\\" />\"\n },\n {\n \"title\": \"Mono Light\",\n \"description\": \"White monochrome for dark backgrounds:\",\n \"code\": \"<div class=\\\"bg-primary p-4\\\">\\n <LogoMain color=\\\"mono-light\\\" />\\n</div>\"\n },\n {\n \"title\": \"Header Logo\",\n \"code\": \"<header class=\\\"flex items-center h-16 px-4 border-b\\\">\\n <a href=\\\"/\\\">\\n <LogoMain variant=\\\"horizontal\\\" size=\\\"md\\\" ariaLabel=\\\"\\\" />\\n </a>\\n</header>\"\n },\n {\n \"title\": \"Footer Logo\",\n \"code\": \"<footer class=\\\"bg-gray-900 py-8\\\">\\n <LogoMain color=\\\"light\\\" size=\\\"sm\\\" />\\n</footer>\"\n },\n {\n \"title\": \"Login Page Logo\",\n \"code\": \"<div class=\\\"flex flex-col items-center py-8\\\">\\n <LogoMain variant=\\\"stacked\\\" size=\\\"lg\\\" subtitle=\\\"MY HOME\\\" />\\n <h1 class=\\\"mt-4 text-2xl font-bold\\\">Sign In</h1>\\n</div>\"\n },\n {\n \"title\": \"Sidebar Collapsed Logo\",\n \"code\": \"<LogoMain variant={sidebarCollapsed ? 'icon' : 'horizontal'} size=\\\"md\\\" />\"\n },\n {\n \"title\": \"Development Environment\",\n \"code\": \"<LogoMain environment={import.meta.env.MODE === 'production' ? undefined : 'dev'} />\"\n }\n ],\n \"relatedComponents\": [\n \"LoadingLogo\",\n \"Header\",\n \"Sidebar\"\n ]\n },\n {\n \"name\": \"MultiSelect\",\n \"description\": \"Select multiple options from a dropdown list\",\n \"category\": \"form\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"value\",\n \"type\": \"string[]\",\n \"default\": \"[]\",\n \"required\": false,\n \"description\": \"Selected values (bindable)\"\n },\n {\n \"name\": \"options\",\n \"type\": \"MultiSelectOption[]\",\n \"default\": \"Required\",\n \"required\": false,\n \"description\": \"Array of options\"\n },\n {\n \"name\": \"placeholder\",\n \"type\": \"string\",\n \"default\": \"'Select options...'\",\n \"required\": false,\n \"description\": \"Placeholder text\"\n },\n {\n \"name\": \"emptyMessage\",\n \"type\": \"string\",\n \"default\": \"'No results found.'\",\n \"required\": false,\n \"description\": \"Message when no options match\"\n },\n {\n \"name\": \"disabled\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Disables the select\"\n },\n {\n \"name\": \"required\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Marks as required\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Name attribute for forms\"\n },\n {\n \"name\": \"id\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Element ID (auto-generated if empty)\"\n },\n {\n \"name\": \"label\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Label text\"\n },\n {\n \"name\": \"hint\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Hint text below the input\"\n },\n {\n \"name\": \"error\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Error message\"\n },\n {\n \"name\": \"max\",\n \"type\": \"number\",\n \"required\": false,\n \"description\": \"Maximum selections allowed\"\n },\n {\n \"name\": \"loading\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Shows loading state\"\n },\n {\n \"name\": \"debounceMs\",\n \"type\": \"number\",\n \"default\": \"300\",\n \"required\": false,\n \"description\": \"Debounce time for search\"\n },\n {\n \"name\": \"onValueChange\",\n \"type\": \"(value: string[]) => void\",\n \"required\": false,\n \"description\": \"Callback when value changes\"\n },\n {\n \"name\": \"onSearch\",\n \"type\": \"(query: string) => void\",\n \"required\": false,\n \"description\": \"Callback for search queries\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n let selected = $state([]);\\n\\n const options = [\\n { value: 'react', label: 'React' },\\n { value: 'svelte', label: 'Svelte' },\\n { value: 'vue', label: 'Vue' },\\n { value: 'angular', label: 'Angular' },\\n ];\\n</script>\\n\\n<MultiSelect {options} bind:value={selected} placeholder=\\\"Select frameworks...\\\" />\"\n },\n {\n \"title\": \"Tag Selector\",\n \"code\": \"<script>\\n let tags = $state([]);\\n const tagOptions = [\\n { value: 'urgent', label: 'Urgent' },\\n { value: 'bug', label: 'Bug' },\\n { value: 'feature', label: 'Feature' },\\n { value: 'docs', label: 'Documentation' },\\n ];\\n</script>\\n\\n<MultiSelect\\n label=\\\"Tags\\\"\\n hint=\\\"Add relevant tags\\\"\\n options={tagOptions}\\n bind:value={tags}\\n placeholder=\\\"Add tags...\\\"\\n/>\"\n },\n {\n \"title\": \"Team Members\",\n \"code\": \"<MultiSelect\\n label=\\\"Assign to\\\"\\n hint=\\\"Select team members to assign this task\\\"\\n options={teamMembers}\\n bind:value={assignees}\\n max={5}\\n placeholder=\\\"Select team members...\\\"\\n/>\"\n }\n ],\n \"relatedComponents\": [\n \"Select\",\n \"Combobox\",\n \"Checkbox\"\n ]\n },\n {\n \"name\": \"NoticeBanner\",\n \"description\": \"Banner component for displaying scheduled, dismissible announcements\",\n \"category\": \"feedback\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Maintenance Notice\",\n \"code\": \"<script>\\n const notices = [\\n {\\n id: 'maintenance',\\n title: 'Scheduled Maintenance',\\n message: 'The system will be unavailable on Sunday 2-4 AM EST.',\\n variant: 'warning',\\n location: 'banner',\\n dismissible: true,\\n startDate: '2025-01-15',\\n endDate: '2025-01-20',\\n },\\n ];\\n\\n initializeNotices(notices);\\n</script>\\n\\n<NoticeBanner />\"\n },\n {\n \"title\": \"With Link\",\n \"code\": \"<script>\\n const notices = [\\n {\\n id: 'new-feature',\\n message: 'Check out our new dashboard features!',\\n variant: 'info',\\n location: 'banner',\\n link: {\\n text: 'Learn more',\\n href: '/whats-new',\\n },\\n },\\n ];\\n</script>\\n\\n<NoticeBanner />\"\n },\n {\n \"title\": \"Page-Specific Notice\",\n \"code\": \"<script>\\n const notices = [\\n {\\n id: 'billing-update',\\n message: 'Your payment method will expire soon.',\\n variant: 'warning',\\n location: 'banner',\\n pages: ['/settings', '/billing'],\\n },\\n ];\\n\\n initializeNotices(notices);\\n setCurrentPath('/billing'); // Notice will show\\n</script>\\n\\n<NoticeBanner />\"\n },\n {\n \"title\": \"In Layout\",\n \"code\": \"<!-- +layout.svelte -->\\n<NoticeBanner />\\n\\n<main>\\n <slot />\\n</main>\"\n }\n ],\n \"relatedComponents\": [\n \"NoticeCard\",\n \"Alert\"\n ]\n },\n {\n \"name\": \"NoticeCard\",\n \"description\": \"Card-style component for displaying inline scheduled announcements\",\n \"category\": \"feedback\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { NoticeCard, initializeNotices, setCurrentPath } from '@classic-homes/theme-svelte';\\n\\n const notices = [\\n {\\n id: 'welcome',\\n title: 'Welcome!',\\n message: 'Thanks for signing up. Complete your profile to get started.',\\n variant: 'info',\\n location: 'card',\\n dismissible: true,\\n },\\n ];\\n\\n initializeNotices(notices);\\n setCurrentPath('/dashboard');\\n</script>\\n\\n<NoticeCard />\"\n },\n {\n \"title\": \"Welcome Message\",\n \"code\": \"<script>\\n const notices = [\\n {\\n id: 'onboarding',\\n title: 'Complete Your Profile',\\n message: 'Add a photo and bio to help others recognize you.',\\n variant: 'info',\\n location: 'card',\\n link: {\\n text: 'Edit profile',\\n href: '/settings/profile',\\n },\\n },\\n ];\\n</script>\\n\\n<NoticeCard />\"\n },\n {\n \"title\": \"Feature Announcement\",\n \"code\": \"<script>\\n const notices = [\\n {\\n id: 'new-charts',\\n title: 'New Charts Available',\\n message: \\\"We've added 5 new chart types to your dashboard.\\\",\\n variant: 'success',\\n location: 'card',\\n startDate: '2025-01-01',\\n endDate: '2025-01-31',\\n },\\n ];\\n</script>\\n\\n<NoticeCard />\"\n },\n {\n \"title\": \"Warning Notice\",\n \"code\": \"<script>\\n const notices = [\\n {\\n id: 'storage-limit',\\n message: \\\"You're approaching your storage limit. Upgrade to continue uploading.\\\",\\n variant: 'warning',\\n location: 'card',\\n pages: ['/dashboard', '/files'],\\n link: {\\n text: 'Upgrade plan',\\n href: '/billing/upgrade',\\n },\\n },\\n ];\\n</script>\\n\\n<NoticeCard />\"\n },\n {\n \"title\": \"In Page Content\",\n \"code\": \"<div class=\\\"space-y-4\\\">\\n <NoticeCard />\\n\\n <Card>\\n <CardHeader>\\n <CardTitle>Dashboard</CardTitle>\\n </CardHeader>\\n <CardContent>\\n <!-- Main content -->\\n </CardContent>\\n </Card>\\n</div>\"\n },\n {\n \"title\": \"Custom Styling\",\n \"code\": \"<NoticeCard class=\\\"mb-6\\\" />\"\n }\n ],\n \"relatedComponents\": [\n \"NoticeBanner\",\n \"Alert\"\n ]\n },\n {\n \"name\": \"NumberInput\",\n \"description\": \"Numeric input with increment/decrement controls\",\n \"category\": \"form\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"value\",\n \"type\": \"number | null\",\n \"default\": \"null\",\n \"required\": false,\n \"description\": \"Current value (bindable)\"\n },\n {\n \"name\": \"min\",\n \"type\": \"number\",\n \"required\": false,\n \"description\": \"Minimum allowed value\"\n },\n {\n \"name\": \"max\",\n \"type\": \"number\",\n \"required\": false,\n \"description\": \"Maximum allowed value\"\n },\n {\n \"name\": \"step\",\n \"type\": \"number\",\n \"default\": \"1\",\n \"required\": false,\n \"description\": \"Increment/decrement step\"\n },\n {\n \"name\": \"disabled\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Disables the input\"\n },\n {\n \"name\": \"readonly\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Makes input read-only\"\n },\n {\n \"name\": \"required\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Marks field as required\"\n },\n {\n \"name\": \"placeholder\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Placeholder text\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Name attribute for form submission\"\n },\n {\n \"name\": \"id\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Element ID (auto-generated if empty)\"\n },\n {\n \"name\": \"showStepper\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show +/- stepper buttons\"\n },\n {\n \"name\": \"label\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Label text\"\n },\n {\n \"name\": \"hint\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Hint text below the input\"\n },\n {\n \"name\": \"error\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Error message\"\n },\n {\n \"name\": \"onValueChange\",\n \"type\": \"(value: number | null) => void\",\n \"required\": false,\n \"description\": \"Callback when value changes\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n let quantity = $state(1);\\n</script>\\n\\n<NumberInput bind:value={quantity} />\"\n },\n {\n \"title\": \"Quantity Selector\",\n \"code\": \"<NumberInput label=\\\"Quantity\\\" bind:value={quantity} min={1} max={10} />\"\n },\n {\n \"title\": \"Price Input\",\n \"code\": \"<NumberInput label=\\\"Price\\\" bind:value={price} min={0} step={0.01} />\"\n },\n {\n \"title\": \"Age Input\",\n \"code\": \"<NumberInput label=\\\"Age\\\" bind:value={age} min={0} max={150} />\"\n }\n ],\n \"relatedComponents\": [\n \"Slider\",\n \"Input\"\n ]\n },\n {\n \"name\": \"OTPInput\",\n \"description\": \"One-time password input for verification codes\",\n \"category\": \"form\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"value\",\n \"type\": \"string\",\n \"default\": \"''\",\n \"required\": false,\n \"description\": \"Current value (bindable)\"\n },\n {\n \"name\": \"length\",\n \"type\": \"number\",\n \"default\": \"6\",\n \"required\": false,\n \"description\": \"Number of digits\"\n },\n {\n \"name\": \"disabled\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Disables the input\"\n },\n {\n \"name\": \"required\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Marks field as required\"\n },\n {\n \"name\": \"type\",\n \"type\": \"'numeric' | 'alphanumeric'\",\n \"default\": \"'numeric'\",\n \"required\": false,\n \"description\": \"Input type\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Name attribute for form submission\"\n },\n {\n \"name\": \"id\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Element ID (auto-generated if empty)\"\n },\n {\n \"name\": \"label\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Label text\"\n },\n {\n \"name\": \"hint\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Hint text below the input\"\n },\n {\n \"name\": \"error\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Error message\"\n },\n {\n \"name\": \"onComplete\",\n \"type\": \"(value: string) => void\",\n \"required\": false,\n \"description\": \"Callback when all digits entered\"\n },\n {\n \"name\": \"onValueChange\",\n \"type\": \"(value: string) => void\",\n \"required\": false,\n \"description\": \"Callback when value changes\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"type\",\n \"values\": [\n \"numeric\",\n \"alphanumeric\"\n ],\n \"default\": \"numeric\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n let code = $state('');\\n</script>\\n\\n<OTPInput bind:value={code} />\"\n },\n {\n \"title\": \"Verification Flow\",\n \"code\": \"<script>\\n let code = $state('');\\n let error = $state('');\\n let verifying = $state(false);\\n\\n async function handleComplete(value: string) {\\n verifying = true;\\n error = '';\\n\\n try {\\n await verifyOTP(value);\\n // Success - redirect\\n } catch {\\n error = 'Invalid verification code';\\n code = '';\\n } finally {\\n verifying = false;\\n }\\n }\\n</script>\\n\\n<div class=\\\"text-center space-y-4\\\">\\n <OTPInput\\n label=\\\"Verification Code\\\"\\n hint=\\\"Enter the 6-digit code sent to your email\\\"\\n bind:value={code}\\n {error}\\n onComplete={handleComplete}\\n />\\n {#if verifying}\\n <Spinner label=\\\"Verifying...\\\" />\\n {/if}\\n</div>\"\n },\n {\n \"title\": \"Two-Factor Authentication\",\n \"code\": \"<OTPInput\\n label=\\\"Authentication Code\\\"\\n hint=\\\"Enter code from your authenticator app\\\"\\n bind:value={twoFactorCode}\\n length={6}\\n onComplete={verify2FA}\\n/>\"\n }\n ],\n \"relatedComponents\": [\n \"Input\",\n \"FormField\"\n ]\n },\n {\n \"name\": \"PageHeader\",\n \"description\": \"Hero and page title component with multiple variants\",\n \"category\": \"layout\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Main title text\"\n },\n {\n \"name\": \"subtitle\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Optional subtitle\"\n },\n {\n \"name\": \"variant\",\n \"type\": \"'default' | 'hero' | 'centered' | 'form'\",\n \"default\": \"'default'\",\n \"required\": false,\n \"description\": \"Visual variant\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional classes\"\n },\n {\n \"name\": \"actions\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Action buttons\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"variant\",\n \"values\": [\n \"default\",\n \"hero\",\n \"centered\",\n \"form\"\n ],\n \"default\": \"default\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<PageHeader title=\\\"Welcome\\\" subtitle=\\\"Get started with our platform\\\" />\"\n },\n {\n \"title\": \"Default\",\n \"description\": \"Standard page header:\",\n \"code\": \"<PageHeader title=\\\"Dashboard\\\" subtitle=\\\"Welcome back, John\\\" />\"\n },\n {\n \"title\": \"Hero\",\n \"description\": \"Bold, uppercase styling for landing pages:\",\n \"code\": \"<PageHeader\\n title=\\\"Build Something Great\\\"\\n subtitle=\\\"The modern way to create applications\\\"\\n variant=\\\"hero\\\"\\n/>\"\n },\n {\n \"title\": \"Centered\",\n \"description\": \"Centered text for content pages:\",\n \"code\": \"<PageHeader\\n title=\\\"About Us\\\"\\n subtitle=\\\"Learn more about our mission and values\\\"\\n variant=\\\"centered\\\"\\n/>\"\n },\n {\n \"title\": \"Form\",\n \"description\": \"Light, centered styling for form pages:\",\n \"code\": \"<PageHeader title=\\\"Create Account\\\" subtitle=\\\"Join thousands of users today\\\" variant=\\\"form\\\" />\"\n },\n {\n \"title\": \"Landing Page Hero\",\n \"code\": \"<section class=\\\"py-24 bg-gradient-to-b from-primary/5 to-background\\\">\\n <div class=\\\"container mx-auto px-4\\\">\\n <PageHeader\\n title=\\\"Ship Faster\\\"\\n subtitle=\\\"The complete toolkit for modern web development\\\"\\n variant=\\\"hero\\\"\\n >\\n {#snippet actions()}\\n <Button size=\\\"lg\\\">Get Started Free</Button>\\n <Button size=\\\"lg\\\" variant=\\\"outline\\\">View Demo</Button>\\n {/snippet}\\n </PageHeader>\\n </div>\\n</section>\"\n },\n {\n \"title\": \"Dashboard Page\",\n \"code\": \"<PageHeader title=\\\"Analytics\\\" subtitle=\\\"Track your performance metrics\\\">\\n {#snippet actions()}\\n <Button variant=\\\"outline\\\">Export</Button>\\n <Button>Add Widget</Button>\\n {/snippet}\\n</PageHeader>\"\n },\n {\n \"title\": \"Content Page\",\n \"code\": \"<div class=\\\"py-16\\\">\\n <PageHeader\\n title=\\\"Documentation\\\"\\n subtitle=\\\"Everything you need to build amazing applications with our component library.\\\"\\n variant=\\\"centered\\\"\\n >\\n {#snippet actions()}\\n <Button>Get Started</Button>\\n <Button variant=\\\"outline\\\">Browse Components</Button>\\n {/snippet}\\n </PageHeader>\\n</div>\"\n },\n {\n \"title\": \"Form Page\",\n \"code\": \"<PageHeader\\n title=\\\"Contact Us\\\"\\n subtitle=\\\"Fill out the form below and we'll get back to you within 24 hours.\\\"\\n variant=\\\"form\\\"\\n/>\\n\\n<form class=\\\"max-w-md mx-auto mt-8\\\">\\n <!-- Form fields -->\\n</form>\"\n },\n {\n \"title\": \"Settings Page\",\n \"code\": \"<PageHeader\\n title=\\\"Account Settings\\\"\\n subtitle=\\\"Manage your account preferences and security settings\\\"\\n>\\n {#snippet actions()}\\n <Button variant=\\\"outline\\\">Cancel</Button>\\n <Button>Save Changes</Button>\\n {/snippet}\\n</PageHeader>\\n\\n<Separator class=\\\"my-6\\\" />\\n\\n<div class=\\\"space-y-6\\\">\\n <Section title=\\\"Profile\\\">...</Section>\\n <Section title=\\\"Security\\\">...</Section>\\n</div>\"\n },\n {\n \"title\": \"Blog Post\",\n \"code\": \"<article>\\n <PageHeader\\n title=\\\"Getting Started with Svelte 5\\\"\\n subtitle=\\\"Learn the fundamentals of Svelte's new runes system\\\"\\n variant=\\\"centered\\\"\\n />\\n\\n <div class=\\\"prose mx-auto mt-8\\\">\\n <!-- Article content -->\\n </div>\\n</article>\"\n }\n ],\n \"relatedComponents\": [\n \"Section\",\n \"Button\",\n \"Separator\"\n ]\n },\n {\n \"name\": \"PieChart\",\n \"description\": \"Show proportional data with interactive labels\",\n \"category\": \"chart\",\n \"importPath\": \"@classic-homes/charts-svelte\",\n \"props\": [\n {\n \"name\": \"data\",\n \"type\": \"PieSliceData[]\",\n \"required\": true,\n \"description\": \"Array of slice data with name and value\"\n },\n {\n \"name\": \"showLabels\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Show labels on slices\"\n },\n {\n \"name\": \"labelPosition\",\n \"type\": \"'inside' | 'outside'\",\n \"default\": \"'outside'\",\n \"required\": false,\n \"description\": \"Position of slice labels\"\n },\n {\n \"name\": \"innerRadius\",\n \"type\": \"number | string\",\n \"default\": \"0\",\n \"required\": false,\n \"description\": \"Inner radius (0 for solid pie)\"\n },\n {\n \"name\": \"onClick\",\n \"type\": \"(params: SliceEventParams) => void\",\n \"required\": false,\n \"description\": \"Callback when a slice is clicked\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": true,\n \"description\": \"Chart title for accessibility\"\n },\n {\n \"name\": \"height\",\n \"type\": \"number | string\",\n \"default\": \"400\",\n \"required\": false,\n \"description\": \"Chart height\"\n },\n {\n \"name\": \"theme\",\n \"type\": \"'light' | 'dark' | 'auto'\",\n \"default\": \"'auto'\",\n \"required\": false,\n \"description\": \"Theme preference\"\n },\n {\n \"name\": \"showLegend\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show chart legend\"\n },\n {\n \"name\": \"showTooltip\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show tooltip on hover\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"labelPosition\",\n \"values\": [\n \"inside\",\n \"outside\"\n ],\n \"default\": \"outside\"\n },\n {\n \"name\": \"theme\",\n \"values\": [\n \"light\",\n \"dark\",\n \"auto\"\n ],\n \"default\": \"auto\"\n }\n ],\n \"slots\": [],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { PieChart } from '@classic-homes/charts-svelte';\\n\\n const data = [\\n { name: 'Search Engine', value: 1048 },\\n { name: 'Direct', value: 735 },\\n { name: 'Email', value: 580 },\\n { name: 'Social Media', value: 484 },\\n ];\\n</script>\\n\\n<PieChart title=\\\"Traffic Sources\\\" {data} showLabels height={400} />\"\n },\n {\n \"title\": \"With Outside Labels\",\n \"code\": \"<PieChart title=\\\"Market Share\\\" {data} showLabels labelPosition=\\\"outside\\\" height={400} />\"\n },\n {\n \"title\": \"With Inside Labels\",\n \"code\": \"<PieChart title=\\\"Market Share\\\" {data} showLabels labelPosition=\\\"inside\\\" height={400} />\"\n },\n {\n \"title\": \"Handling Click Events\",\n \"code\": \"<script>\\n function handleClick(params) {\\n console.log('Clicked slice:', params.name, params.value);\\n }\\n</script>\\n\\n<PieChart title=\\\"Interactive Pie\\\" {data} onClick={handleClick} />\"\n }\n ],\n \"relatedComponents\": [\n \"DonutChart\",\n \"FunnelChart\"\n ]\n },\n {\n \"name\": \"PublicLayout\",\n \"description\": \"Layout for public-facing marketing and content pages\",\n \"category\": \"layout\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"navigation\",\n \"type\": \"NavItem[]\",\n \"default\": \"[]\",\n \"required\": false,\n \"description\": \"Header navigation items\"\n },\n {\n \"name\": \"showFooter\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Whether to show footer\"\n },\n {\n \"name\": \"footerLinks\",\n \"type\": \"NavSection[]\",\n \"default\": \"[]\",\n \"required\": false,\n \"description\": \"Footer link sections\"\n },\n {\n \"name\": \"copyright\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Footer copyright text\"\n },\n {\n \"name\": \"logo\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Custom logo\"\n },\n {\n \"name\": \"logoSubtitle\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Subtitle for default logo\"\n },\n {\n \"name\": \"logoEnvironment\",\n \"type\": \"'local' | 'dev' | 'demo'\",\n \"required\": false,\n \"description\": \"Environment indicator\"\n },\n {\n \"name\": \"headerEnd\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Content at end of header\"\n },\n {\n \"name\": \"strongFooterBorder\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Strong accent border on footer\"\n },\n {\n \"name\": \"darkFooter\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Dark footer variant\"\n },\n {\n \"name\": \"headerSearch\",\n \"type\": \"HeaderSearchConfig\",\n \"required\": false,\n \"description\": \"Header search config\"\n },\n {\n \"name\": \"children\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Main content\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"logoEnvironment\",\n \"values\": [\n \"local\",\n \"dev\",\n \"demo\"\n ]\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n const navigation = [\\n { id: 'home', name: 'Home', href: '/', active: true },\\n { id: 'about', name: 'About', href: '/about' },\\n { id: 'contact', name: 'Contact', href: '/contact' },\\n ];\\n</script>\\n\\n<PublicLayout {navigation}>\\n <section class=\\\"py-20\\\">\\n <h1>Welcome</h1>\\n </section>\\n</PublicLayout>\"\n },\n {\n \"title\": \"Landing Page\",\n \"code\": \"<PublicLayout {navigation} {footerLinks}>\\n <section class=\\\"py-24 text-center\\\">\\n <h1 class=\\\"text-5xl font-bold\\\">Build Better Products</h1>\\n <p class=\\\"mt-4 text-xl text-muted-foreground\\\">The modern way to build applications.</p>\\n <div class=\\\"mt-8 flex justify-center gap-4\\\">\\n <Button size=\\\"lg\\\">Get Started</Button>\\n <Button size=\\\"lg\\\" variant=\\\"outline\\\">Learn More</Button>\\n </div>\\n </section>\\n</PublicLayout>\"\n },\n {\n \"title\": \"Documentation Site\",\n \"code\": \"<PublicLayout\\n {navigation}\\n showFooter={false}\\n headerSearch={{ enabled: true, placeholder: 'Search docs...' }}\\n>\\n <div class=\\\"flex\\\">\\n <aside class=\\\"w-64\\\">Sidebar</aside>\\n <main class=\\\"flex-1\\\">Documentation content</main>\\n </div>\\n</PublicLayout>\"\n }\n ],\n \"relatedComponents\": [\n \"Header\",\n \"Footer\",\n \"DashboardLayout\"\n ]\n },\n {\n \"name\": \"QuickLinks\",\n \"description\": \"Quick navigation links component for sidebars\",\n \"category\": \"navigation\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"links\",\n \"type\": \"QuickLink[]\",\n \"required\": false,\n \"description\": \"Array of quick link items (required)\"\n },\n {\n \"name\": \"display\",\n \"type\": \"'list' | 'icons'\",\n \"default\": \"'list'\",\n \"required\": false,\n \"description\": \"Display mode\"\n },\n {\n \"name\": \"variant\",\n \"type\": \"'light' | 'dark'\",\n \"default\": \"'light'\",\n \"required\": false,\n \"description\": \"Visual variant\"\n },\n {\n \"name\": \"icon\",\n \"type\": \"Snippet<[QuickLink]>\",\n \"required\": false,\n \"description\": \"Custom icon renderer\"\n },\n {\n \"name\": \"ariaLabel\",\n \"type\": \"string\",\n \"default\": \"'Quick links'\",\n \"required\": false,\n \"description\": \"Accessible navigation label\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"display\",\n \"values\": [\n \"list\",\n \"icons\"\n ],\n \"default\": \"list\"\n },\n {\n \"name\": \"variant\",\n \"values\": [\n \"light\",\n \"dark\"\n ],\n \"default\": \"light\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n const links: QuickLink[] = [\\n { id: 'docs', label: 'Documentation', href: '/docs', icon: 'book' },\\n { id: 'support', label: 'Support', href: '/support', icon: 'help' },\\n { id: 'github', label: 'GitHub', href: 'https://github.com', icon: 'github', external: true },\\n ];\\n</script>\\n\\n<QuickLinks {links} />\"\n },\n {\n \"title\": \"List Mode (Default)\",\n \"description\": \"Shows icons with labels stacked vertically:\",\n \"code\": \"<QuickLinks {links} display=\\\"list\\\" />\"\n },\n {\n \"title\": \"Icons Mode\",\n \"description\": \"Shows only icons, centered:\",\n \"code\": \"<QuickLinks {links} display=\\\"icons\\\" />\"\n },\n {\n \"title\": \"Light (Default)\",\n \"description\": \"For light backgrounds:\",\n \"code\": \"<QuickLinks {links} variant=\\\"light\\\" />\"\n },\n {\n \"title\": \"Dark\",\n \"description\": \"For dark sidebars:\",\n \"code\": \"<QuickLinks {links} variant=\\\"dark\\\" />\"\n },\n {\n \"title\": \"With Badges\",\n \"code\": \"<script>\\n const links = [\\n { id: 'inbox', label: 'Inbox', href: '/inbox', icon: 'mail', badge: 5 },\\n { id: 'tasks', label: 'Tasks', href: '/tasks', icon: 'check', badge: '3 new' },\\n ];\\n</script>\\n\\n<QuickLinks {links} />\"\n },\n {\n \"title\": \"External Links\",\n \"code\": \"<script>\\n const links = [{ id: 'docs', label: 'Docs', href: 'https://docs.example.com', external: true }];\\n</script>\\n\\n<QuickLinks {links} />\"\n },\n {\n \"title\": \"Custom Icons\",\n \"code\": \"<QuickLinks {links}>\\n {#snippet icon(link)}\\n <Icon name={link.icon} class=\\\"h-5 w-5\\\" />\\n {/snippet}\\n</QuickLinks>\"\n },\n {\n \"title\": \"In Sidebar\",\n \"code\": \"<Sidebar>\\n <!-- Main navigation -->\\n <div slot=\\\"footer\\\">\\n <QuickLinks {links} display=\\\"icons\\\" variant=\\\"dark\\\" />\\n </div>\\n</Sidebar>\"\n }\n ],\n \"relatedComponents\": [\n \"Sidebar\",\n \"DashboardLayout\"\n ]\n },\n {\n \"name\": \"RadarChart\",\n \"description\": \"Multi-dimensional comparison across categories\",\n \"category\": \"chart\",\n \"importPath\": \"@classic-homes/charts-svelte\",\n \"props\": [\n {\n \"name\": \"data\",\n \"type\": \"RadarChartData\",\n \"required\": true,\n \"description\": \"Chart data with series values\"\n },\n {\n \"name\": \"indicators\",\n \"type\": \"RadarIndicator[]\",\n \"required\": true,\n \"description\": \"Dimension definitions\"\n },\n {\n \"name\": \"shape\",\n \"type\": \"'polygon' | 'circle'\",\n \"default\": \"'polygon'\",\n \"required\": false,\n \"description\": \"Shape of the radar grid\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": true,\n \"description\": \"Chart title for accessibility\"\n },\n {\n \"name\": \"height\",\n \"type\": \"number | string\",\n \"default\": \"400\",\n \"required\": false,\n \"description\": \"Chart height\"\n },\n {\n \"name\": \"theme\",\n \"type\": \"'light' | 'dark' | 'auto'\",\n \"default\": \"'auto'\",\n \"required\": false,\n \"description\": \"Theme preference\"\n },\n {\n \"name\": \"showLegend\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show chart legend\"\n },\n {\n \"name\": \"showTooltip\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show tooltip on hover\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"shape\",\n \"values\": [\n \"polygon\",\n \"circle\"\n ],\n \"default\": \"polygon\"\n },\n {\n \"name\": \"theme\",\n \"values\": [\n \"light\",\n \"dark\",\n \"auto\"\n ],\n \"default\": \"auto\"\n }\n ],\n \"slots\": [],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { RadarChart } from '@classic-homes/charts-svelte';\\n\\n const indicators = [\\n { name: 'Sales', max: 6500 },\\n { name: 'Administration', max: 16000 },\\n { name: 'IT', max: 30000 },\\n { name: 'Support', max: 38000 },\\n { name: 'Development', max: 52000 },\\n ];\\n\\n const data = {\\n series: [\\n { name: 'Budget', data: [4200, 3000, 20000, 35000, 50000] },\\n { name: 'Actual', data: [5000, 14000, 28000, 26000, 42000] },\\n ],\\n };\\n</script>\\n\\n<RadarChart title=\\\"Budget vs Actual\\\" {data} {indicators} shape=\\\"polygon\\\" height={400} />\"\n },\n {\n \"title\": \"Circle Shape\",\n \"code\": \"<RadarChart title=\\\"Skill Assessment\\\" {data} {indicators} shape=\\\"circle\\\" />\"\n },\n {\n \"title\": \"Single Series\",\n \"code\": \"<RadarChart\\n title=\\\"Performance Metrics\\\"\\n data={{\\n series: [{ name: 'Score', data: [80, 90, 70, 85, 95] }],\\n }}\\n indicators={[\\n { name: 'Speed', max: 100 },\\n { name: 'Quality', max: 100 },\\n { name: 'Teamwork', max: 100 },\\n { name: 'Innovation', max: 100 },\\n { name: 'Communication', max: 100 },\\n ]}\\n/>\"\n }\n ],\n \"relatedComponents\": [\n \"BarChart\",\n \"GaugeChart\"\n ]\n },\n {\n \"name\": \"RadioGroup\",\n \"description\": \"Radio button group for single selection from multiple options\",\n \"category\": \"form\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"value\",\n \"type\": \"string\",\n \"default\": \"''\",\n \"required\": false,\n \"description\": \"Current selected value (bindable)\"\n },\n {\n \"name\": \"options\",\n \"type\": \"RadioOption[]\",\n \"default\": \"Required\",\n \"required\": false,\n \"description\": \"Array of radio options\"\n },\n {\n \"name\": \"label\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Group label\"\n },\n {\n \"name\": \"hint\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Hint text below the radio group\"\n },\n {\n \"name\": \"orientation\",\n \"type\": \"'horizontal' | 'vertical'\",\n \"default\": \"'vertical'\",\n \"required\": false,\n \"description\": \"Layout direction\"\n },\n {\n \"name\": \"disabled\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Disables all options\"\n },\n {\n \"name\": \"required\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Marks as required\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Name attribute for forms (auto-generated if empty)\"\n },\n {\n \"name\": \"error\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Error message to display\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n },\n {\n \"name\": \"onValueChange\",\n \"type\": \"(value: string) => void\",\n \"required\": false,\n \"description\": \"Callback when value changes\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"orientation\",\n \"values\": [\n \"horizontal\",\n \"vertical\"\n ],\n \"default\": \"vertical\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n let value = $state('');\\n\\n const options = [\\n { value: 'option1', label: 'Option 1' },\\n { value: 'option2', label: 'Option 2' },\\n { value: 'option3', label: 'Option 3' },\\n ];\\n</script>\\n\\n<RadioGroup {options} bind:value />\"\n },\n {\n \"title\": \"Vertical (Default)\",\n \"code\": \"<RadioGroup {options} bind:value orientation=\\\"vertical\\\" />\"\n },\n {\n \"title\": \"Horizontal\",\n \"code\": \"<RadioGroup {options} bind:value orientation=\\\"horizontal\\\" />\"\n },\n {\n \"title\": \"Shipping Method\",\n \"code\": \"<script>\\n let shipping = $state('');\\n\\n const shippingOptions = [\\n {\\n value: 'standard',\\n label: 'Standard',\\n description: '5-7 business days - Free',\\n },\\n {\\n value: 'express',\\n label: 'Express',\\n description: '2-3 business days - $9.99',\\n },\\n {\\n value: 'overnight',\\n label: 'Overnight',\\n description: 'Next business day - $24.99',\\n },\\n ];\\n</script>\\n\\n<RadioGroup\\n label=\\\"Shipping Method\\\"\\n hint=\\\"Free shipping on orders over $50\\\"\\n name=\\\"shipping\\\"\\n options={shippingOptions}\\n bind:value={shipping}\\n required\\n/>\"\n },\n {\n \"title\": \"Payment Method\",\n \"code\": \"<RadioGroup\\n label=\\\"Payment Method\\\"\\n name=\\\"payment\\\"\\n options={[\\n { value: 'card', label: 'Credit Card' },\\n { value: 'paypal', label: 'PayPal' },\\n { value: 'bank', label: 'Bank Transfer' },\\n ]}\\n bind:value={payment}\\n orientation=\\\"horizontal\\\"\\n/>\"\n },\n {\n \"title\": \"Yes/No Question\",\n \"code\": \"<RadioGroup\\n label=\\\"Would you recommend this product?\\\"\\n name=\\\"recommend\\\"\\n options={[\\n { value: 'yes', label: 'Yes' },\\n { value: 'no', label: 'No' },\\n ]}\\n bind:value={recommend}\\n orientation=\\\"horizontal\\\"\\n/>\"\n },\n {\n \"title\": \"Survey Scale\",\n \"code\": \"<RadioGroup\\n label=\\\"How satisfied are you?\\\"\\n hint=\\\"1 = Very Dissatisfied, 5 = Very Satisfied\\\"\\n name=\\\"satisfaction\\\"\\n options={[\\n { value: '1', label: 'Very Dissatisfied' },\\n { value: '2', label: 'Dissatisfied' },\\n { value: '3', label: 'Neutral' },\\n { value: '4', label: 'Satisfied' },\\n { value: '5', label: 'Very Satisfied' },\\n ]}\\n bind:value={satisfaction}\\n/>\"\n }\n ],\n \"relatedComponents\": [\n \"Checkbox\",\n \"Select\",\n \"Switch\"\n ]\n },\n {\n \"name\": \"SankeyChart\",\n \"description\": \"Flow relationships between entities\",\n \"category\": \"chart\",\n \"importPath\": \"@classic-homes/charts-svelte\",\n \"props\": [\n {\n \"name\": \"data\",\n \"type\": \"SankeyData\",\n \"required\": true,\n \"description\": \"Nodes and links defining the flow\"\n },\n {\n \"name\": \"orient\",\n \"type\": \"'horizontal' | 'vertical'\",\n \"default\": \"'horizontal'\",\n \"required\": false,\n \"description\": \"Flow direction\"\n },\n {\n \"name\": \"onClick\",\n \"type\": \"(params: SankeyEventParams) => void\",\n \"required\": false,\n \"description\": \"Callback when clicked\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": true,\n \"description\": \"Chart title for accessibility\"\n },\n {\n \"name\": \"height\",\n \"type\": \"number | string\",\n \"default\": \"400\",\n \"required\": false,\n \"description\": \"Chart height\"\n },\n {\n \"name\": \"theme\",\n \"type\": \"'light' | 'dark' | 'auto'\",\n \"default\": \"'auto'\",\n \"required\": false,\n \"description\": \"Theme preference\"\n },\n {\n \"name\": \"showTooltip\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show tooltip on hover\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"orient\",\n \"values\": [\n \"horizontal\",\n \"vertical\"\n ],\n \"default\": \"horizontal\"\n },\n {\n \"name\": \"theme\",\n \"values\": [\n \"light\",\n \"dark\",\n \"auto\"\n ],\n \"default\": \"auto\"\n }\n ],\n \"slots\": [],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { SankeyChart } from '@classic-homes/charts-svelte';\\n\\n const data = {\\n nodes: [{ name: 'Source A' }, { name: 'Source B' }, { name: 'Process' }, { name: 'Output' }],\\n links: [\\n { source: 'Source A', target: 'Process', value: 50 },\\n { source: 'Source B', target: 'Process', value: 30 },\\n { source: 'Process', target: 'Output', value: 80 },\\n ],\\n };\\n</script>\\n\\n<SankeyChart title=\\\"Energy Flow\\\" {data} orient=\\\"horizontal\\\" height={400} />\"\n },\n {\n \"title\": \"Website User Flow\",\n \"code\": \"<SankeyChart\\n title=\\\"User Journey\\\"\\n data={{\\n nodes: [\\n { name: 'Homepage' },\\n { name: 'Products' },\\n { name: 'Cart' },\\n { name: 'Checkout' },\\n { name: 'Purchase' },\\n { name: 'Exit' },\\n ],\\n links: [\\n { source: 'Homepage', target: 'Products', value: 1000 },\\n { source: 'Homepage', target: 'Exit', value: 300 },\\n { source: 'Products', target: 'Cart', value: 500 },\\n { source: 'Products', target: 'Exit', value: 200 },\\n { source: 'Cart', target: 'Checkout', value: 400 },\\n { source: 'Cart', target: 'Exit', value: 100 },\\n { source: 'Checkout', target: 'Purchase', value: 350 },\\n { source: 'Checkout', target: 'Exit', value: 50 },\\n ],\\n }}\\n/>\"\n },\n {\n \"title\": \"Budget Allocation\",\n \"code\": \"<SankeyChart\\n title=\\\"Budget Distribution\\\"\\n data={{\\n nodes: [\\n { name: 'Revenue' },\\n { name: 'Operations' },\\n { name: 'Marketing' },\\n { name: 'R&D' },\\n { name: 'Profit' },\\n ],\\n links: [\\n { source: 'Revenue', target: 'Operations', value: 40 },\\n { source: 'Revenue', target: 'Marketing', value: 25 },\\n { source: 'Revenue', target: 'R&D', value: 20 },\\n { source: 'Revenue', target: 'Profit', value: 15 },\\n ],\\n }}\\n/>\"\n },\n {\n \"title\": \"Vertical Orientation\",\n \"code\": \"<SankeyChart title=\\\"Process Flow\\\" {data} orient=\\\"vertical\\\" />\"\n }\n ],\n \"relatedComponents\": [\n \"FunnelChart\",\n \"TreemapChart\"\n ]\n },\n {\n \"name\": \"ScatterChart\",\n \"description\": \"Visualize X/Y relationships with optional trend lines\",\n \"category\": \"chart\",\n \"importPath\": \"@classic-homes/charts-svelte\",\n \"props\": [\n {\n \"name\": \"data\",\n \"type\": \"ScatterChartData\",\n \"required\": true,\n \"description\": \"Chart data with coordinate pairs\"\n },\n {\n \"name\": \"showTrendLine\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Display regression/trend line\"\n },\n {\n \"name\": \"symbolSize\",\n \"type\": \"number | ((value: number[]) => number)\",\n \"default\": \"10\",\n \"required\": false,\n \"description\": \"Point size (fixed or dynamic)\"\n },\n {\n \"name\": \"onClick\",\n \"type\": \"(params: DataPointEventParams) => void\",\n \"required\": false,\n \"description\": \"Callback when clicked\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": true,\n \"description\": \"Chart title for accessibility\"\n },\n {\n \"name\": \"height\",\n \"type\": \"number | string\",\n \"default\": \"400\",\n \"required\": false,\n \"description\": \"Chart height\"\n },\n {\n \"name\": \"theme\",\n \"type\": \"'light' | 'dark' | 'auto'\",\n \"default\": \"'auto'\",\n \"required\": false,\n \"description\": \"Theme preference\"\n },\n {\n \"name\": \"showLegend\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show chart legend\"\n },\n {\n \"name\": \"showTooltip\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show tooltip on hover\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"theme\",\n \"values\": [\n \"light\",\n \"dark\",\n \"auto\"\n ],\n \"default\": \"auto\"\n }\n ],\n \"slots\": [],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { ScatterChart } from '@classic-homes/charts-svelte';\\n\\n const data = {\\n series: [\\n {\\n name: 'Dataset A',\\n data: [\\n [10.0, 8.04],\\n [8.07, 6.95],\\n [13.0, 7.58],\\n [9.05, 8.81],\\n [11.0, 8.33],\\n [14.0, 7.66],\\n ],\\n },\\n {\\n name: 'Dataset B',\\n data: [\\n [8.0, 9.04],\\n [6.07, 7.95],\\n [11.0, 8.58],\\n [7.05, 9.81],\\n [9.0, 9.33],\\n [12.0, 8.66],\\n ],\\n },\\n ],\\n };\\n</script>\\n\\n<ScatterChart title=\\\"Data Correlation\\\" {data} showTrendLine height={400} />\"\n },\n {\n \"title\": \"With Trend Line\",\n \"code\": \"<ScatterChart title=\\\"Correlation Analysis\\\" {data} showTrendLine height={400} />\"\n },\n {\n \"title\": \"Dynamic Point Size\",\n \"code\": \"<ScatterChart title=\\\"Sized Points\\\" {data} symbolSize={(value) => Math.sqrt(value[1]) * 3} />\"\n }\n ],\n \"relatedComponents\": [\n \"LineChart\",\n \"HeatmapChart\"\n ]\n },\n {\n \"name\": \"Section\",\n \"description\": \"Content section container for page organization\",\n \"category\": \"layout\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Section title (h2)\"\n },\n {\n \"name\": \"description\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Description text\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional classes\"\n },\n {\n \"name\": \"children\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Section content\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Section>\\n <p>Your content here</p>\\n</Section>\"\n },\n {\n \"title\": \"Settings Page\",\n \"code\": \"<div class=\\\"max-w-2xl mx-auto space-y-6\\\">\\n <Section title=\\\"Personal Information\\\" description=\\\"Update your personal details.\\\">\\n <form class=\\\"space-y-4\\\">\\n <div class=\\\"grid grid-cols-2 gap-4\\\">\\n <Input label=\\\"First Name\\\" value=\\\"John\\\" />\\n <Input label=\\\"Last Name\\\" value=\\\"Doe\\\" />\\n </div>\\n <Input label=\\\"Email\\\" type=\\\"email\\\" value=\\\"john@example.com\\\" />\\n <Input label=\\\"Phone\\\" type=\\\"tel\\\" />\\n <Button>Save Changes</Button>\\n </form>\\n </Section>\\n\\n <Section title=\\\"Password\\\" description=\\\"Update your password regularly for security.\\\">\\n <form class=\\\"space-y-4\\\">\\n <Input label=\\\"Current Password\\\" type=\\\"password\\\" />\\n <Input label=\\\"New Password\\\" type=\\\"password\\\" />\\n <Input label=\\\"Confirm Password\\\" type=\\\"password\\\" />\\n <Button>Update Password</Button>\\n </form>\\n </Section>\\n\\n <Section title=\\\"Preferences\\\">\\n <div class=\\\"space-y-4\\\">\\n <Select label=\\\"Language\\\">\\n <option value=\\\"en\\\">English</option>\\n <option value=\\\"es\\\">Spanish</option>\\n <option value=\\\"fr\\\">French</option>\\n </Select>\\n <Select label=\\\"Timezone\\\">\\n <option value=\\\"utc\\\">UTC</option>\\n <option value=\\\"est\\\">Eastern Time</option>\\n <option value=\\\"pst\\\">Pacific Time</option>\\n </Select>\\n </div>\\n </Section>\\n</div>\"\n },\n {\n \"title\": \"Dashboard Sections\",\n \"code\": \"<div class=\\\"space-y-6\\\">\\n <Section title=\\\"Quick Actions\\\">\\n <div class=\\\"flex gap-4\\\">\\n <Button>New Project</Button>\\n <Button variant=\\\"outline\\\">Import Data</Button>\\n <Button variant=\\\"outline\\\">Generate Report</Button>\\n </div>\\n </Section>\\n\\n <Section title=\\\"Recent Projects\\\" description=\\\"Your most recently accessed projects.\\\">\\n <DataTable data={recentProjects} columns={projectColumns} />\\n </Section>\\n\\n <Section title=\\\"Team Activity\\\">\\n <div class=\\\"space-y-3\\\">\\n {#each activities as activity}\\n <div class=\\\"flex items-center gap-3 p-3 rounded-lg bg-muted/50\\\">\\n <Avatar size=\\\"sm\\\">{activity.user.initials}</Avatar>\\n <div>\\n <p class=\\\"text-sm font-medium\\\">{activity.user.name}</p>\\n <p class=\\\"text-xs text-muted-foreground\\\">{activity.action}</p>\\n </div>\\n <span class=\\\"ml-auto text-xs text-muted-foreground\\\">\\n {activity.time}\\n </span>\\n </div>\\n {/each}\\n </div>\\n </Section>\\n</div>\"\n }\n ],\n \"relatedComponents\": [\n \"Card\",\n \"PageHeader\",\n \"Separator\"\n ]\n },\n {\n \"name\": \"Select\",\n \"description\": \"Dropdown for selecting from a list of options with grouping support\",\n \"category\": \"form\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"value\",\n \"type\": \"string\",\n \"default\": \"''\",\n \"required\": false,\n \"description\": \"Current selected value (bindable)\"\n },\n {\n \"name\": \"options\",\n \"type\": \"(SelectOption | SelectGroup)[]\",\n \"default\": \"Required\",\n \"required\": false,\n \"description\": \"Array of options or grouped options\"\n },\n {\n \"name\": \"placeholder\",\n \"type\": \"string\",\n \"default\": \"'Select an option...'\",\n \"required\": false,\n \"description\": \"Placeholder text\"\n },\n {\n \"name\": \"disabled\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Disables the select\"\n },\n {\n \"name\": \"required\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Marks as required\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Name attribute for forms\"\n },\n {\n \"name\": \"id\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Element ID (auto-generated if empty)\"\n },\n {\n \"name\": \"label\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Label text\"\n },\n {\n \"name\": \"hint\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Hint text below the select\"\n },\n {\n \"name\": \"error\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Error message to display\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n },\n {\n \"name\": \"onValueChange\",\n \"type\": \"(value: string) => void\",\n \"required\": false,\n \"description\": \"Callback when value changes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n let value = $state('');\\n\\n const options = [\\n { value: 'apple', label: 'Apple' },\\n { value: 'banana', label: 'Banana' },\\n { value: 'orange', label: 'Orange' },\\n ];\\n</script>\\n\\n<Select {options} bind:value placeholder=\\\"Select a fruit\\\" />\"\n },\n {\n \"title\": \"Disabled\",\n \"code\": \"<Select {options} disabled value=\\\"apple\\\" />\"\n },\n {\n \"title\": \"Required\",\n \"code\": \"<Select {options} bind:value label=\\\"Required Field\\\" required />\"\n },\n {\n \"title\": \"With Error\",\n \"code\": \"<Select {options} bind:value label=\\\"Category\\\" error=\\\"Please select a category\\\" />\"\n },\n {\n \"title\": \"Form Example\",\n \"code\": \"<script>\\n let department = $state('');\\n let departmentError = $state('');\\n\\n const departments = [\\n { value: 'sales', label: 'Sales' },\\n { value: 'marketing', label: 'Marketing' },\\n { value: 'engineering', label: 'Engineering' },\\n { value: 'support', label: 'Support' },\\n ];\\n\\n function validate() {\\n if (!department) {\\n departmentError = 'Please select a department';\\n return false;\\n }\\n departmentError = '';\\n return true;\\n }\\n</script>\\n\\n<Select\\n label=\\\"Department\\\"\\n options={departments}\\n bind:value={department}\\n error={departmentError}\\n required\\n/>\"\n },\n {\n \"title\": \"Controlled Select\",\n \"code\": \"<script>\\n let value = $state('');\\n\\n function handleChange(newValue: string) {\\n console.log('Selected:', newValue);\\n value = newValue;\\n }\\n</script>\\n\\n<Select {options} {value} onValueChange={handleChange} />\"\n },\n {\n \"title\": \"Country Selector\",\n \"code\": \"<script>\\n const countries = [\\n {\\n label: 'North America',\\n options: [\\n { value: 'us', label: 'United States' },\\n { value: 'ca', label: 'Canada' },\\n { value: 'mx', label: 'Mexico' },\\n ],\\n },\\n {\\n label: 'Europe',\\n options: [\\n { value: 'gb', label: 'United Kingdom' },\\n { value: 'de', label: 'Germany' },\\n { value: 'fr', label: 'France' },\\n ],\\n },\\n ];\\n</script>\\n\\n<Select label=\\\"Country\\\" options={countries} bind:value placeholder=\\\"Select your country\\\" />\"\n }\n ],\n \"relatedComponents\": [\n \"Combobox\",\n \"MultiSelect\",\n \"RadioGroup\"\n ]\n },\n {\n \"name\": \"Separator\",\n \"description\": \"Visual divider for separating content\",\n \"category\": \"layout\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"orientation\",\n \"type\": \"'horizontal' | 'vertical'\",\n \"default\": \"'horizontal'\",\n \"required\": false,\n \"description\": \"Line direction\"\n },\n {\n \"name\": \"decorative\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"If decorative (no semantic meaning)\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional classes\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"orientation\",\n \"values\": [\n \"horizontal\",\n \"vertical\"\n ],\n \"default\": \"horizontal\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<div>Content above</div>\\n<Separator />\\n<div>Content below</div>\"\n },\n {\n \"title\": \"Form Sections\",\n \"code\": \"<form class=\\\"space-y-6\\\">\\n <div class=\\\"space-y-4\\\">\\n <h3 class=\\\"font-medium\\\">Personal Information</h3>\\n <Input label=\\\"Name\\\" />\\n <Input label=\\\"Email\\\" type=\\\"email\\\" />\\n </div>\\n\\n <Separator />\\n\\n <div class=\\\"space-y-4\\\">\\n <h3 class=\\\"font-medium\\\">Address</h3>\\n <Input label=\\\"Street\\\" />\\n <Input label=\\\"City\\\" />\\n </div>\\n\\n <Separator />\\n\\n <Button type=\\\"submit\\\">Submit</Button>\\n</form>\"\n },\n {\n \"title\": \"Dropdown Menu\",\n \"code\": \"<DropdownMenu>\\n <DropdownMenu.Item>Profile</DropdownMenu.Item>\\n <DropdownMenu.Item>Settings</DropdownMenu.Item>\\n <Separator class=\\\"my-1\\\" />\\n <DropdownMenu.Item>Help</DropdownMenu.Item>\\n <DropdownMenu.Item>Feedback</DropdownMenu.Item>\\n <Separator class=\\\"my-1\\\" />\\n <DropdownMenu.Item>Log out</DropdownMenu.Item>\\n</DropdownMenu>\"\n },\n {\n \"title\": \"Login Divider\",\n \"code\": \"<div class=\\\"space-y-4\\\">\\n <Button class=\\\"w-full\\\">\\n <GoogleIcon class=\\\"mr-2\\\" />\\n Continue with Google\\n </Button>\\n\\n <div class=\\\"flex items-center gap-4\\\">\\n <Separator class=\\\"flex-1\\\" />\\n <span class=\\\"text-xs text-muted-foreground uppercase\\\">or continue with email</span>\\n <Separator class=\\\"flex-1\\\" />\\n </div>\\n\\n <form class=\\\"space-y-4\\\">\\n <Input label=\\\"Email\\\" type=\\\"email\\\" />\\n <Input label=\\\"Password\\\" type=\\\"password\\\" />\\n <Button type=\\\"submit\\\" class=\\\"w-full\\\">Sign In</Button>\\n </form>\\n</div>\"\n },\n {\n \"title\": \"Toolbar\",\n \"code\": \"<div class=\\\"flex items-center gap-2 p-2 border rounded-lg\\\">\\n <Button variant=\\\"ghost\\\" size=\\\"icon\\\"><BoldIcon /></Button>\\n <Button variant=\\\"ghost\\\" size=\\\"icon\\\"><ItalicIcon /></Button>\\n <Button variant=\\\"ghost\\\" size=\\\"icon\\\"><UnderlineIcon /></Button>\\n\\n <Separator orientation=\\\"vertical\\\" class=\\\"h-6\\\" />\\n\\n <Button variant=\\\"ghost\\\" size=\\\"icon\\\"><AlignLeftIcon /></Button>\\n <Button variant=\\\"ghost\\\" size=\\\"icon\\\"><AlignCenterIcon /></Button>\\n <Button variant=\\\"ghost\\\" size=\\\"icon\\\"><AlignRightIcon /></Button>\\n\\n <Separator orientation=\\\"vertical\\\" class=\\\"h-6\\\" />\\n\\n <Button variant=\\\"ghost\\\" size=\\\"icon\\\"><LinkIcon /></Button>\\n <Button variant=\\\"ghost\\\" size=\\\"icon\\\"><ImageIcon /></Button>\\n</div>\"\n },\n {\n \"title\": \"Card Footer\",\n \"code\": \"<Card>\\n <Card.Header>\\n <Card.Title>Subscription</Card.Title>\\n </Card.Header>\\n <Card.Content>\\n <p>You are currently on the Pro plan.</p>\\n </Card.Content>\\n <Separator />\\n <Card.Footer>\\n <Button variant=\\\"outline\\\">Change Plan</Button>\\n <Button variant=\\\"ghost\\\" class=\\\"text-destructive\\\">Cancel</Button>\\n </Card.Footer>\\n</Card>\"\n }\n ],\n \"relatedComponents\": [\n \"Card\",\n \"Section\",\n \"DropdownMenu\"\n ]\n },\n {\n \"name\": \"Sidebar\",\n \"description\": \"Responsive sidebar navigation with collapsible sections\",\n \"category\": \"layout\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"navigation\",\n \"type\": \"NavSection[]\",\n \"required\": false,\n \"description\": \"Navigation sections\"\n },\n {\n \"name\": \"userRoles\",\n \"type\": \"string[]\",\n \"required\": false,\n \"description\": \"User roles for filtering\"\n },\n {\n \"name\": \"collapsed\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Desktop collapsed state\"\n },\n {\n \"name\": \"isMobile\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Mobile mode\"\n },\n {\n \"name\": \"mobileOpen\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Mobile drawer open\"\n },\n {\n \"name\": \"onClose\",\n \"type\": \"() => void\",\n \"required\": false,\n \"description\": \"Mobile close callback\"\n },\n {\n \"name\": \"onNavigate\",\n \"type\": \"(item: NavItem) => void\",\n \"required\": false,\n \"description\": \"Navigation callback\"\n },\n {\n \"name\": \"logo\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Custom logo\"\n },\n {\n \"name\": \"icon\",\n \"type\": \"Snippet<[NavItem]>\",\n \"required\": false,\n \"description\": \"Custom icon renderer\"\n },\n {\n \"name\": \"quickLinks\",\n \"type\": \"QuickLink[]\",\n \"required\": false,\n \"description\": \"Quick links at bottom\"\n },\n {\n \"name\": \"quickLinksDisplay\",\n \"type\": \"'list' | 'icons'\",\n \"default\": \"'list'\",\n \"required\": false,\n \"description\": \"Quick links display\"\n },\n {\n \"name\": \"quickLinkIcon\",\n \"type\": \"Snippet<[QuickLink]>\",\n \"required\": false,\n \"description\": \"Quick link icon renderer\"\n },\n {\n \"name\": \"footer\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Footer content\"\n },\n {\n \"name\": \"variant\",\n \"type\": \"'light' | 'dark'\",\n \"default\": \"'light'\",\n \"required\": false,\n \"description\": \"Visual variant\"\n },\n {\n \"name\": \"strongBorder\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Thicker border\"\n },\n {\n \"name\": \"expandedWidth\",\n \"type\": \"number\",\n \"default\": \"256\",\n \"required\": false,\n \"description\": \"Expanded width (px)\"\n },\n {\n \"name\": \"collapsedWidth\",\n \"type\": \"number\",\n \"default\": \"64\",\n \"required\": false,\n \"description\": \"Collapsed width (px)\"\n },\n {\n \"name\": \"searchable\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Enable search\"\n },\n {\n \"name\": \"searchPlaceholder\",\n \"type\": \"string\",\n \"default\": \"'Search...'\",\n \"required\": false,\n \"description\": \"Search placeholder\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional classes\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"quickLinksDisplay\",\n \"values\": [\n \"list\",\n \"icons\"\n ],\n \"default\": \"list\"\n },\n {\n \"name\": \"variant\",\n \"values\": [\n \"light\",\n \"dark\"\n ],\n \"default\": \"light\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n const navigation = [\\n {\\n id: 'main',\\n title: 'Main',\\n items: [\\n { id: 'home', name: 'Home', href: '/', icon: 'home' },\\n { id: 'projects', name: 'Projects', href: '/projects', icon: 'folder' },\\n ],\\n },\\n ];\\n</script>\\n\\n<Sidebar {navigation} />\"\n },\n {\n \"title\": \"Sections with Titles\",\n \"code\": \"<script>\\n const navigation = [\\n {\\n id: 'main',\\n title: 'Main',\\n items: [\\n { id: 'dashboard', name: 'Dashboard', href: '/dashboard' },\\n { id: 'projects', name: 'Projects', href: '/projects' },\\n ],\\n },\\n {\\n id: 'settings',\\n title: 'Settings',\\n collapsible: true,\\n items: [\\n { id: 'profile', name: 'Profile', href: '/profile' },\\n { id: 'account', name: 'Account', href: '/account' },\\n ],\\n },\\n ];\\n</script>\"\n },\n {\n \"title\": \"Nested Navigation\",\n \"code\": \"<script>\\n const navigation = [\\n {\\n id: 'docs',\\n items: [\\n {\\n id: 'components',\\n name: 'Components',\\n children: [\\n { id: 'button', name: 'Button', href: '/components/button' },\\n { id: 'input', name: 'Input', href: '/components/input' },\\n { id: 'card', name: 'Card', href: '/components/card' },\\n ],\\n },\\n ],\\n },\\n ];\\n</script>\"\n },\n {\n \"title\": \"Dashboard Sidebar\",\n \"code\": \"<script>\\n import { page } from '$app/stores';\\n\\n const navigation = [\\n {\\n id: 'overview',\\n items: [\\n { id: 'dashboard', name: 'Dashboard', href: '/dashboard', icon: 'home' },\\n { id: 'analytics', name: 'Analytics', href: '/analytics', icon: 'chart' },\\n ],\\n },\\n {\\n id: 'content',\\n title: 'Content',\\n items: [\\n { id: 'posts', name: 'Posts', href: '/posts', icon: 'file' },\\n { id: 'media', name: 'Media', href: '/media', icon: 'image' },\\n { id: 'pages', name: 'Pages', href: '/pages', icon: 'document' },\\n ],\\n },\\n {\\n id: 'settings',\\n title: 'Settings',\\n collapsible: true,\\n expanded: false,\\n items: [\\n { id: 'general', name: 'General', href: '/settings' },\\n { id: 'team', name: 'Team', href: '/settings/team' },\\n { id: 'billing', name: 'Billing', href: '/settings/billing' },\\n ],\\n },\\n ];\\n</script>\\n\\n<Sidebar\\n {navigation}\\n variant=\\\"dark\\\"\\n searchable\\n quickLinks={[{ id: 'help', name: 'Help Center', href: '/help', icon: 'help' }]}\\n/>\"\n }\n ],\n \"relatedComponents\": [\n \"Header\",\n \"DashboardLayout\",\n \"AppShell\"\n ]\n },\n {\n \"name\": \"Signature\",\n \"description\": \"Digital signature capture with draw and type modes\",\n \"category\": \"form\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"value\",\n \"type\": \"SignatureData | null\",\n \"default\": \"null\",\n \"required\": false,\n \"description\": \"Signature data (bindable)\"\n },\n {\n \"name\": \"mode\",\n \"type\": \"'draw' | 'type'\",\n \"default\": \"'draw'\",\n \"required\": false,\n \"description\": \"Capture mode\"\n },\n {\n \"name\": \"disabled\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Disables capture\"\n },\n {\n \"name\": \"required\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Marks as required\"\n },\n {\n \"name\": \"label\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Label text\"\n },\n {\n \"name\": \"error\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Error message\"\n },\n {\n \"name\": \"strokeColor\",\n \"type\": \"string\",\n \"default\": \"'#000000'\",\n \"required\": false,\n \"description\": \"Drawing stroke color\"\n },\n {\n \"name\": \"strokeWidth\",\n \"type\": \"number\",\n \"default\": \"2\",\n \"required\": false,\n \"description\": \"Drawing stroke width\"\n },\n {\n \"name\": \"fonts\",\n \"type\": \"SignatureFont[]\",\n \"required\": false,\n \"description\": \"Available fonts for type mode\"\n },\n {\n \"name\": \"onValidate\",\n \"type\": \"(data: SignatureData) => SignatureValidationResult\",\n \"required\": false,\n \"description\": \"Validation handler\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"mode\",\n \"values\": [\n \"draw\",\n \"type\"\n ],\n \"default\": \"draw\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n let signature = $state(null);\\n</script>\\n\\n<Signature bind:value={signature} />\"\n },\n {\n \"title\": \"Agreement Form\",\n \"code\": \"<script>\\n let signature = $state(null);\\n\\n function handleSubmit() {\\n if (!signature) {\\n // Handle missing signature\\n return;\\n }\\n // Submit form with signature\\n }\\n</script>\\n\\n<div class=\\\"space-y-4\\\">\\n <p class=\\\"text-sm text-muted-foreground\\\">\\n By signing below, you agree to the terms and conditions.\\n </p>\\n <Signature label=\\\"Your Signature\\\" bind:value={signature} required />\\n <Button onclick={handleSubmit} disabled={!signature}>Submit Agreement</Button>\\n</div>\"\n },\n {\n \"title\": \"Clear and Retry\",\n \"code\": \"<div class=\\\"space-y-4\\\">\\n <Signature bind:value={signature} />\\n <Button variant=\\\"outline\\\" onclick={() => (signature = null)} disabled={!signature}>\\n Clear Signature\\n </Button>\\n</div>\"\n }\n ],\n \"relatedComponents\": [\n \"Input\",\n \"Button\"\n ]\n },\n {\n \"name\": \"Skeleton\",\n \"description\": \"Placeholder loading component that mimics content shape\",\n \"category\": \"feedback\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"variant\",\n \"type\": \"'default' | 'text' | 'avatar' | 'card' | 'button' | 'title'\",\n \"default\": \"'default'\",\n \"required\": false,\n \"description\": \"Predefined shape variant\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"variant\",\n \"values\": [\n \"default\",\n \"text\",\n \"avatar\",\n \"card\",\n \"button\",\n \"title\"\n ],\n \"default\": \"default\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Skeleton class=\\\"h-4 w-full\\\" />\"\n },\n {\n \"title\": \"Default\",\n \"description\": \"Custom sizing with classes:\",\n \"code\": \"<Skeleton class=\\\"h-4 w-full\\\" />\\n<Skeleton class=\\\"h-8 w-64\\\" />\"\n },\n {\n \"title\": \"Text\",\n \"description\": \"Single line of text:\",\n \"code\": \"<Skeleton variant=\\\"text\\\" /> <!-- h-4 w-full -->\"\n },\n {\n \"title\": \"Title\",\n \"description\": \"Larger heading text:\",\n \"code\": \"<Skeleton variant=\\\"title\\\" /> <!-- h-6 w-3/4 -->\"\n },\n {\n \"title\": \"Avatar\",\n \"description\": \"Circular avatar placeholder:\",\n \"code\": \"<Skeleton variant=\\\"avatar\\\" /> <!-- h-12 w-12 rounded-full -->\"\n },\n {\n \"title\": \"Card\",\n \"description\": \"Card-sized placeholder:\",\n \"code\": \"<Skeleton variant=\\\"card\\\" /> <!-- h-32 w-full -->\"\n },\n {\n \"title\": \"Button\",\n \"description\": \"Button-sized placeholder:\",\n \"code\": \"<Skeleton variant=\\\"button\\\" /> <!-- h-10 w-24 -->\"\n },\n {\n \"title\": \"Text Content Loading\",\n \"code\": \"<div class=\\\"space-y-2\\\">\\n <Skeleton variant=\\\"title\\\" />\\n <Skeleton variant=\\\"text\\\" />\\n <Skeleton variant=\\\"text\\\" />\\n <Skeleton class=\\\"h-4 w-2/3\\\" />\\n</div>\"\n },\n {\n \"title\": \"User Card Loading\",\n \"code\": \"<div class=\\\"flex items-center gap-4\\\">\\n <Skeleton variant=\\\"avatar\\\" />\\n <div class=\\\"space-y-2 flex-1\\\">\\n <Skeleton class=\\\"h-4 w-32\\\" />\\n <Skeleton class=\\\"h-3 w-24\\\" />\\n </div>\\n</div>\"\n },\n {\n \"title\": \"Card Loading\",\n \"code\": \"<Card>\\n <CardHeader>\\n <Skeleton variant=\\\"title\\\" />\\n <Skeleton variant=\\\"text\\\" class=\\\"mt-2\\\" />\\n </CardHeader>\\n <CardContent>\\n <Skeleton variant=\\\"card\\\" />\\n </CardContent>\\n <CardFooter>\\n <Skeleton variant=\\\"button\\\" />\\n </CardFooter>\\n</Card>\"\n },\n {\n \"title\": \"Table Row Loading\",\n \"code\": \"<tr>\\n <td><Skeleton class=\\\"h-4 w-8\\\" /></td>\\n <td><Skeleton class=\\\"h-4 w-32\\\" /></td>\\n <td><Skeleton class=\\\"h-4 w-48\\\" /></td>\\n <td><Skeleton class=\\\"h-4 w-24\\\" /></td>\\n</tr>\"\n },\n {\n \"title\": \"Grid Loading\",\n \"code\": \"<div class=\\\"grid grid-cols-3 gap-4\\\">\\n {#each Array(6) as _}\\n <div class=\\\"space-y-2\\\">\\n <Skeleton class=\\\"h-32 w-full\\\" />\\n <Skeleton variant=\\\"title\\\" />\\n <Skeleton variant=\\\"text\\\" />\\n </div>\\n {/each}\\n</div>\"\n },\n {\n \"title\": \"Profile Page Loading\",\n \"code\": \"<div class=\\\"space-y-6\\\">\\n <!-- Header -->\\n <div class=\\\"flex items-center gap-6\\\">\\n <Skeleton class=\\\"h-24 w-24 rounded-full\\\" />\\n <div class=\\\"space-y-2\\\">\\n <Skeleton class=\\\"h-8 w-48\\\" />\\n <Skeleton class=\\\"h-4 w-32\\\" />\\n </div>\\n </div>\\n\\n <!-- Stats -->\\n <div class=\\\"grid grid-cols-3 gap-4\\\">\\n {#each Array(3) as _}\\n <Skeleton class=\\\"h-20\\\" />\\n {/each}\\n </div>\\n\\n <!-- Content -->\\n <div class=\\\"space-y-2\\\">\\n <Skeleton variant=\\\"text\\\" />\\n <Skeleton variant=\\\"text\\\" />\\n <Skeleton class=\\\"h-4 w-3/4\\\" />\\n </div>\\n</div>\"\n },\n {\n \"title\": \"Conditional Loading\",\n \"code\": \"{#if loading}\\n <div class=\\\"space-y-2\\\">\\n <Skeleton variant=\\\"title\\\" />\\n <Skeleton variant=\\\"text\\\" />\\n <Skeleton variant=\\\"text\\\" />\\n </div>\\n{:else}\\n <div>\\n <h2>{title}</h2>\\n <p>{content}</p>\\n </div>\\n{/if}\"\n },\n {\n \"title\": \"Image Loading\",\n \"code\": \"<div class=\\\"relative\\\">\\n {#if imageLoading}\\n <Skeleton class=\\\"h-64 w-full\\\" />\\n {/if}\\n <img\\n src={imageUrl}\\n onload={() => (imageLoading = false)}\\n class={imageLoading ? 'invisible absolute' : ''}\\n />\\n</div>\"\n }\n ],\n \"relatedComponents\": [\n \"Spinner\",\n \"Card\"\n ]\n },\n {\n \"name\": \"Slider\",\n \"description\": \"Range slider for selecting numeric values\",\n \"category\": \"form\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"value\",\n \"type\": \"number[]\",\n \"default\": \"[50]\",\n \"required\": false,\n \"description\": \"Current value(s) (bindable)\"\n },\n {\n \"name\": \"min\",\n \"type\": \"number\",\n \"default\": \"0\",\n \"required\": false,\n \"description\": \"Minimum value\"\n },\n {\n \"name\": \"max\",\n \"type\": \"number\",\n \"default\": \"100\",\n \"required\": false,\n \"description\": \"Maximum value\"\n },\n {\n \"name\": \"step\",\n \"type\": \"number\",\n \"default\": \"1\",\n \"required\": false,\n \"description\": \"Step increment\"\n },\n {\n \"name\": \"disabled\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Disables the slider\"\n },\n {\n \"name\": \"orientation\",\n \"type\": \"'horizontal' | 'vertical'\",\n \"default\": \"'horizontal'\",\n \"required\": false,\n \"description\": \"Slider direction\"\n },\n {\n \"name\": \"size\",\n \"type\": \"'sm' | 'md' | 'lg'\",\n \"default\": \"'md'\",\n \"required\": false,\n \"description\": \"Size variant\"\n },\n {\n \"name\": \"label\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Label text\"\n },\n {\n \"name\": \"hint\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Hint text below the slider\"\n },\n {\n \"name\": \"error\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Error message\"\n },\n {\n \"name\": \"showValue\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Shows current value\"\n },\n {\n \"name\": \"formatValue\",\n \"type\": \"(value: number) => string\",\n \"required\": false,\n \"description\": \"Value formatter\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n },\n {\n \"name\": \"onValueChange\",\n \"type\": \"(value: number[]) => void\",\n \"required\": false,\n \"description\": \"Callback during drag\"\n },\n {\n \"name\": \"onValueCommit\",\n \"type\": \"(value: number[]) => void\",\n \"required\": false,\n \"description\": \"Callback when drag ends\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"orientation\",\n \"values\": [\n \"horizontal\",\n \"vertical\"\n ],\n \"default\": \"horizontal\"\n },\n {\n \"name\": \"size\",\n \"values\": [\n \"sm\",\n \"md\",\n \"lg\"\n ],\n \"default\": \"md\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n let value = $state([50]);\\n</script>\\n\\n<Slider bind:value />\"\n },\n {\n \"title\": \"Volume Control\",\n \"code\": \"<script>\\n let volume = $state([70]);\\n</script>\\n\\n<Slider\\n label=\\\"Volume\\\"\\n hint=\\\"Adjust speaker volume\\\"\\n bind:value={volume}\\n min={0}\\n max={100}\\n showValue\\n formatValue={(v) => `${v}%`}\\n/>\"\n },\n {\n \"title\": \"Price Filter\",\n \"code\": \"<script>\\n let priceRange = $state([0, 500]);\\n</script>\\n\\n<Slider\\n label=\\\"Price Range\\\"\\n hint=\\\"Filter products by price\\\"\\n bind:value={priceRange}\\n min={0}\\n max={1000}\\n step={10}\\n showValue\\n formatValue={(v) => `$${v}`}\\n/>\"\n },\n {\n \"title\": \"Temperature\",\n \"code\": \"<script>\\n let temp = $state([72]);\\n</script>\\n\\n<Slider\\n label=\\\"Temperature\\\"\\n hint=\\\"Set thermostat temperature\\\"\\n bind:value={temp}\\n min={60}\\n max={85}\\n showValue\\n formatValue={(v) => `${v}°F`}\\n/>\"\n },\n {\n \"title\": \"Opacity Control\",\n \"code\": \"<script>\\n let opacity = $state([100]);\\n</script>\\n\\n<Slider\\n label=\\\"Opacity\\\"\\n bind:value={opacity}\\n min={0}\\n max={100}\\n showValue\\n formatValue={(v) => `${v}%`}\\n onValueChange={(val) => {\\n element.style.opacity = val[0] / 100;\\n }}\\n/>\"\n },\n {\n \"title\": \"Discrete Steps\",\n \"code\": \"<script>\\n let rating = $state([3]);\\n const labels = ['Poor', 'Fair', 'Good', 'Very Good', 'Excellent'];\\n</script>\\n\\n<Slider\\n label=\\\"Rating\\\"\\n hint=\\\"Rate your experience\\\"\\n bind:value={rating}\\n min={1}\\n max={5}\\n step={1}\\n showValue\\n formatValue={(v) => labels[v - 1]}\\n/>\"\n },\n {\n \"title\": \"Commit on Release\",\n \"description\": \"Trigger action only when user finishes dragging:\",\n \"code\": \"<Slider\\n bind:value\\n onValueCommit={(val) => {\\n savePreference(val[0]);\\n }}\\n/>\"\n }\n ],\n \"relatedComponents\": [\n \"NumberInput\",\n \"Input\"\n ]\n },\n {\n \"name\": \"Spinner\",\n \"description\": \"Loading indicator for async operations\",\n \"category\": \"feedback\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"size\",\n \"type\": \"'sm' | 'md' | 'lg' | 'xl'\",\n \"default\": \"'md'\",\n \"required\": false,\n \"description\": \"Size of the spinner\"\n },\n {\n \"name\": \"label\",\n \"type\": \"string\",\n \"default\": \"'Loading...'\",\n \"required\": false,\n \"description\": \"Accessible label for screen readers\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"size\",\n \"values\": [\n \"sm\",\n \"md\",\n \"lg\",\n \"xl\"\n ],\n \"default\": \"md\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Spinner />\"\n },\n {\n \"title\": \"Button Loading State\",\n \"code\": \"<Button disabled={loading}>\\n {#if loading}\\n <Spinner size=\\\"sm\\\" label=\\\"Submitting...\\\" class=\\\"mr-2\\\" />\\n Submitting...\\n {:else}\\n Submit\\n {/if}\\n</Button>\"\n },\n {\n \"title\": \"Centered Loading\",\n \"code\": \"<div class=\\\"flex items-center justify-center h-64\\\">\\n <Spinner size=\\\"lg\\\" label=\\\"Loading content...\\\" />\\n</div>\"\n },\n {\n \"title\": \"Full Page Loading\",\n \"code\": \"<div class=\\\"fixed inset-0 flex items-center justify-center bg-background/80 z-50\\\">\\n <div class=\\\"text-center\\\">\\n <Spinner size=\\\"xl\\\" label=\\\"Loading application...\\\" />\\n <p class=\\\"mt-4 text-muted-foreground\\\">Loading...</p>\\n </div>\\n</div>\"\n },\n {\n \"title\": \"Inline Loading\",\n \"code\": \"<p>\\n Checking availability\\n <Spinner size=\\\"sm\\\" class=\\\"inline ml-2\\\" label=\\\"Checking...\\\" />\\n</p>\"\n },\n {\n \"title\": \"Card Loading State\",\n \"code\": \"<Card>\\n <CardContent class=\\\"flex items-center justify-center h-32\\\">\\n {#if loading}\\n <Spinner label=\\\"Loading data...\\\" />\\n {:else}\\n <p>{data}</p>\\n {/if}\\n </CardContent>\\n</Card>\"\n },\n {\n \"title\": \"With Loading Text\",\n \"code\": \"<div class=\\\"flex items-center gap-3\\\">\\n <Spinner size=\\\"md\\\" />\\n <span class=\\\"text-muted-foreground\\\">Loading your dashboard...</span>\\n</div>\"\n },\n {\n \"title\": \"Table Loading\",\n \"code\": \"<table>\\n <tbody>\\n {#if loading}\\n <tr>\\n <td colspan=\\\"4\\\" class=\\\"text-center py-8\\\">\\n <Spinner label=\\\"Loading data...\\\" />\\n </td>\\n </tr>\\n {:else}\\n {#each rows as row}\\n <tr><!-- row content --></tr>\\n {/each}\\n {/if}\\n </tbody>\\n</table>\"\n }\n ],\n \"relatedComponents\": [\n \"Skeleton\",\n \"Button\"\n ]\n },\n {\n \"name\": \"Switch\",\n \"description\": \"Toggle switch for binary on/off settings\",\n \"category\": \"form\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"checked\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Whether the switch is on (bindable)\"\n },\n {\n \"name\": \"disabled\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Disables the switch\"\n },\n {\n \"name\": \"required\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Marks as required\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Name attribute for forms\"\n },\n {\n \"name\": \"value\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Value attribute for forms\"\n },\n {\n \"name\": \"id\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Element ID for label association\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n },\n {\n \"name\": \"onchange\",\n \"type\": \"(checked: boolean) => void\",\n \"required\": false,\n \"description\": \"Callback when checked state changes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n let enabled = $state(false);\\n</script>\\n\\n<Switch bind:checked={enabled} />\"\n },\n {\n \"title\": \"On (Checked)\",\n \"code\": \"<Switch checked />\"\n },\n {\n \"title\": \"Off (Unchecked)\",\n \"code\": \"<Switch />\"\n },\n {\n \"title\": \"Disabled\",\n \"code\": \"<Switch disabled />\\n<Switch disabled checked />\"\n },\n {\n \"title\": \"Feature Toggle\",\n \"code\": \"<script>\\n let betaFeatures = $state(false);\\n</script>\\n\\n<div class=\\\"p-4 border rounded-lg\\\">\\n <div class=\\\"flex items-center justify-between\\\">\\n <div>\\n <h3 class=\\\"font-medium\\\">Beta Features</h3>\\n <p class=\\\"text-sm text-muted-foreground\\\">Enable experimental features</p>\\n </div>\\n <Switch bind:checked={betaFeatures} />\\n </div>\\n\\n {#if betaFeatures}\\n <p class=\\\"mt-3 text-sm text-warning\\\">Beta features may be unstable.</p>\\n {/if}\\n</div>\"\n },\n {\n \"title\": \"Privacy Controls\",\n \"code\": \"<script>\\n let privacy = $state({\\n analytics: true,\\n personalization: false,\\n thirdParty: false,\\n });\\n</script>\\n\\n<div class=\\\"space-y-4\\\">\\n <h2 class=\\\"text-lg font-semibold\\\">Privacy Settings</h2>\\n\\n <div class=\\\"space-y-3\\\">\\n <div class=\\\"flex items-center justify-between\\\">\\n <Label for=\\\"analytics\\\">Analytics cookies</Label>\\n <Switch id=\\\"analytics\\\" bind:checked={privacy.analytics} />\\n </div>\\n\\n <div class=\\\"flex items-center justify-between\\\">\\n <Label for=\\\"personalization\\\">Personalization</Label>\\n <Switch id=\\\"personalization\\\" bind:checked={privacy.personalization} />\\n </div>\\n\\n <div class=\\\"flex items-center justify-between\\\">\\n <Label for=\\\"third-party\\\">Third-party cookies</Label>\\n <Switch id=\\\"third-party\\\" bind:checked={privacy.thirdParty} />\\n </div>\\n </div>\\n</div>\"\n },\n {\n \"title\": \"Inline Switch\",\n \"code\": \"<p class=\\\"text-sm\\\">\\n Show completed tasks\\n <Switch bind:checked={showCompleted} class=\\\"ml-2 align-middle\\\" />\\n</p>\"\n }\n ],\n \"relatedComponents\": [\n \"Checkbox\",\n \"RadioGroup\",\n \"Label\"\n ]\n },\n {\n \"name\": \"TabPanel\",\n \"description\": \"Content panel component for Tabs navigation\",\n \"category\": \"layout\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"value\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Tab ID this panel belongs to (required)\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n const tabs = [\\n { id: 'account', label: 'Account' },\\n { id: 'password', label: 'Password' },\\n { id: 'notifications', label: 'Notifications' },\\n ];\\n</script>\\n\\n<Tabs {tabs} defaultValue=\\\"account\\\">\\n <TabPanel value=\\\"account\\\">\\n <p>Account settings content here.</p>\\n </TabPanel>\\n <TabPanel value=\\\"password\\\">\\n <p>Password settings content here.</p>\\n </TabPanel>\\n <TabPanel value=\\\"notifications\\\">\\n <p>Notification settings content here.</p>\\n </TabPanel>\\n</Tabs>\"\n },\n {\n \"title\": \"With Forms\",\n \"code\": \"<TabPanel value=\\\"profile\\\">\\n <form class=\\\"space-y-4\\\">\\n <FormField label=\\\"Name\\\" name=\\\"name\\\" />\\n <FormField label=\\\"Email\\\" name=\\\"email\\\" type=\\\"email\\\" />\\n <Button type=\\\"submit\\\">Save Changes</Button>\\n </form>\\n</TabPanel>\"\n },\n {\n \"title\": \"With Cards\",\n \"code\": \"<TabPanel value=\\\"billing\\\">\\n <div class=\\\"grid gap-4 md:grid-cols-2\\\">\\n <Card>\\n <CardHeader>\\n <CardTitle>Current Plan</CardTitle>\\n </CardHeader>\\n <CardContent>Pro - $29/month</CardContent>\\n </Card>\\n <Card>\\n <CardHeader>\\n <CardTitle>Payment Method</CardTitle>\\n </CardHeader>\\n <CardContent>Visa ending in 4242</CardContent>\\n </Card>\\n </div>\\n</TabPanel>\"\n },\n {\n \"title\": \"Custom Styling\",\n \"code\": \"<TabPanel value=\\\"settings\\\" class=\\\"p-6 bg-muted rounded-lg\\\">\\n <h3 class=\\\"font-semibold mb-4\\\">Advanced Settings</h3>\\n <!-- Content -->\\n</TabPanel>\"\n }\n ],\n \"relatedComponents\": [\n \"Tabs\"\n ]\n },\n {\n \"name\": \"Tabs\",\n \"description\": \"Tabbed interface for organizing content\",\n \"category\": \"layout\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"tabs\",\n \"type\": \"Tab[]\",\n \"required\": false,\n \"description\": \"Array of tab definitions\"\n },\n {\n \"name\": \"value\",\n \"type\": \"string\",\n \"default\": \"First tab ID\",\n \"required\": false,\n \"description\": \"Active tab ID (bindable)\"\n },\n {\n \"name\": \"id\",\n \"type\": \"string\",\n \"default\": \"Auto-generated\",\n \"required\": false,\n \"description\": \"Unique ID for ARIA\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional classes\"\n },\n {\n \"name\": \"children\",\n \"type\": \"Snippet\",\n \"required\": false,\n \"description\": \"Tab panel content\"\n },\n {\n \"name\": \"onValueChange\",\n \"type\": \"(value: string) => void\",\n \"required\": false,\n \"description\": \"Change callback\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n const tabs = [\\n { id: 'account', label: 'Account' },\\n { id: 'security', label: 'Security' },\\n { id: 'notifications', label: 'Notifications' },\\n ];\\n</script>\\n\\n<Tabs {tabs}>\\n <TabPanel id=\\\"account\\\">\\n <p>Account settings content</p>\\n </TabPanel>\\n <TabPanel id=\\\"security\\\">\\n <p>Security settings content</p>\\n </TabPanel>\\n <TabPanel id=\\\"notifications\\\">\\n <p>Notification preferences</p>\\n </TabPanel>\\n</Tabs>\"\n },\n {\n \"title\": \"Settings Page\",\n \"code\": \"<script>\\n const tabs = [\\n { id: 'profile', label: 'Profile' },\\n { id: 'account', label: 'Account' },\\n { id: 'security', label: 'Security' },\\n { id: 'billing', label: 'Billing' },\\n ];\\n</script>\\n\\n<Tabs {tabs}>\\n <TabPanel id=\\\"profile\\\">\\n <Section title=\\\"Personal Information\\\">\\n <form class=\\\"space-y-4\\\">\\n <Input label=\\\"Display Name\\\" />\\n <Textarea label=\\\"Bio\\\" />\\n <Button>Save Changes</Button>\\n </form>\\n </Section>\\n </TabPanel>\\n\\n <TabPanel id=\\\"account\\\">\\n <Section title=\\\"Email Settings\\\">\\n <Input label=\\\"Email Address\\\" type=\\\"email\\\" />\\n <Button>Update Email</Button>\\n </Section>\\n </TabPanel>\\n\\n <TabPanel id=\\\"security\\\">\\n <Section title=\\\"Password\\\">\\n <form class=\\\"space-y-4\\\">\\n <Input label=\\\"Current Password\\\" type=\\\"password\\\" />\\n <Input label=\\\"New Password\\\" type=\\\"password\\\" />\\n <Button>Change Password</Button>\\n </form>\\n </Section>\\n </TabPanel>\\n\\n <TabPanel id=\\\"billing\\\">\\n <Section title=\\\"Payment Methods\\\">\\n <p>Your payment methods will appear here.</p>\\n </Section>\\n </TabPanel>\\n</Tabs>\"\n },\n {\n \"title\": \"Product Details\",\n \"code\": \"<script>\\n const tabs = [\\n { id: 'description', label: 'Description' },\\n { id: 'specs', label: 'Specifications' },\\n { id: 'reviews', label: 'Reviews' },\\n ];\\n</script>\\n\\n<Tabs {tabs}>\\n <TabPanel id=\\\"description\\\">\\n <div class=\\\"prose\\\">\\n <p>{product.description}</p>\\n </div>\\n </TabPanel>\\n\\n <TabPanel id=\\\"specs\\\">\\n <DataTable data={product.specs} columns={specColumns} />\\n </TabPanel>\\n\\n <TabPanel id=\\\"reviews\\\">\\n {#each reviews as review}\\n <Card class=\\\"mb-4\\\">\\n <Card.Header>\\n <div class=\\\"flex items-center gap-2\\\">\\n <Avatar size=\\\"sm\\\">{review.author[0]}</Avatar>\\n <span>{review.author}</span>\\n </div>\\n </Card.Header>\\n <Card.Content>\\n <p>{review.content}</p>\\n </Card.Content>\\n </Card>\\n {/each}\\n </TabPanel>\\n</Tabs>\"\n },\n {\n \"title\": \"Code Examples\",\n \"code\": \"<script>\\n const tabs = [\\n { id: 'svelte', label: 'Svelte' },\\n { id: 'react', label: 'React' },\\n { id: 'vue', label: 'Vue' },\\n ];\\n</script>\\n\\n<Tabs {tabs}>\\n <TabPanel id=\\\"svelte\\\">\\n <pre><code>{svelteCode}</code></pre>\\n </TabPanel>\\n <TabPanel id=\\\"react\\\">\\n <pre><code>{reactCode}</code></pre>\\n </TabPanel>\\n <TabPanel id=\\\"vue\\\">\\n <pre><code>{vueCode}</code></pre>\\n </TabPanel>\\n</Tabs>\"\n }\n ],\n \"relatedComponents\": [\n \"Card\",\n \"Section\",\n \"Separator\"\n ]\n },\n {\n \"name\": \"Textarea\",\n \"description\": \"Multi-line text input for longer content like messages and descriptions\",\n \"category\": \"form\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"value\",\n \"type\": \"string\",\n \"default\": \"''\",\n \"required\": false,\n \"description\": \"Textarea value (bindable)\"\n },\n {\n \"name\": \"placeholder\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Placeholder text\"\n },\n {\n \"name\": \"disabled\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Disables the textarea\"\n },\n {\n \"name\": \"readonly\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Makes the textarea read-only\"\n },\n {\n \"name\": \"required\",\n \"type\": \"boolean\",\n \"default\": \"false\",\n \"required\": false,\n \"description\": \"Marks as required\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Textarea name for forms\"\n },\n {\n \"name\": \"id\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Textarea ID for label association\"\n },\n {\n \"name\": \"rows\",\n \"type\": \"number\",\n \"default\": \"3\",\n \"required\": false,\n \"description\": \"Number of visible text rows\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n },\n {\n \"name\": \"onValueChange\",\n \"type\": \"(value: string) => void\",\n \"required\": false,\n \"description\": \"Callback when value changes\"\n }\n ],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Textarea placeholder=\\\"Enter your message...\\\" />\"\n },\n {\n \"title\": \"Disabled\",\n \"code\": \"<Textarea disabled value=\\\"Cannot edit this content\\\" />\"\n },\n {\n \"title\": \"Read-only\",\n \"code\": \"<Textarea readonly value=\\\"This content is read-only\\\" />\"\n },\n {\n \"title\": \"Required\",\n \"code\": \"<Textarea required placeholder=\\\"Required field\\\" />\"\n },\n {\n \"title\": \"Character Counter\",\n \"code\": \"<script>\\n import { Textarea, Label } from '@classic-homes/theme-svelte';\\n\\n let bio = $state('');\\n const maxLength = 280;\\n</script>\\n\\n<div class=\\\"space-y-2\\\">\\n <Label for=\\\"bio\\\">Bio</Label>\\n <Textarea id=\\\"bio\\\" bind:value={bio} rows={4} placeholder=\\\"Tell us about yourself...\\\" />\\n <p class=\\\"text-sm text-muted-foreground text-right\\\">\\n {bio.length}/{maxLength}\\n </p>\\n</div>\"\n },\n {\n \"title\": \"With Help Text\",\n \"code\": \"<div class=\\\"space-y-2\\\">\\n <Label for=\\\"description\\\">Description</Label>\\n <Textarea id=\\\"description\\\" rows={4} placeholder=\\\"Describe your item...\\\" />\\n <p class=\\\"text-sm text-muted-foreground\\\">\\n Include key details to help buyers understand your item.\\n </p>\\n</div>\"\n },\n {\n \"title\": \"Fixed Height\",\n \"code\": \"<Textarea class=\\\"resize-none h-32\\\" placeholder=\\\"Fixed height textarea\\\" />\"\n },\n {\n \"title\": \"Full Width in Container\",\n \"code\": \"<div class=\\\"max-w-md\\\">\\n <Textarea placeholder=\\\"Constrained to container width\\\" />\\n</div>\"\n }\n ],\n \"relatedComponents\": [\n \"Input\",\n \"Label\",\n \"FormField\"\n ]\n },\n {\n \"name\": \"Toast\",\n \"description\": \"Brief notification messages for user feedback\",\n \"category\": \"feedback\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [],\n \"variants\": [],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Success\",\n \"description\": \"For successful operations:\",\n \"code\": \"toastStore.success('Changes saved successfully!');\"\n },\n {\n \"title\": \"Error\",\n \"description\": \"For errors and failures:\",\n \"code\": \"toastStore.error('Failed to save changes. Please try again.');\"\n },\n {\n \"title\": \"Warning\",\n \"description\": \"For warnings and cautions:\",\n \"code\": \"toastStore.warning('Your session will expire in 5 minutes.');\"\n },\n {\n \"title\": \"Info\",\n \"description\": \"For informational messages:\",\n \"code\": \"toastStore.info('New version available. Refresh to update.');\"\n },\n {\n \"title\": \"Custom\",\n \"description\": \"For custom styled toasts:\",\n \"code\": \"toastStore.show({\\n message: 'Custom message',\\n type: 'success',\\n duration: 5000,\\n});\"\n },\n {\n \"title\": \"Form Submission\",\n \"code\": \"<script>\\n async function handleSubmit() {\\n try {\\n await saveForm();\\n toastStore.success('Form submitted successfully!');\\n } catch (error) {\\n toastStore.error('Failed to submit form. Please try again.');\\n }\\n }\\n</script>\"\n },\n {\n \"title\": \"Action with Undo\",\n \"code\": \"<script>\\n function handleDelete(item) {\\n deleteItem(item.id);\\n toastStore.show({\\n message: `\\\"${item.name}\\\" deleted`,\\n type: 'info',\\n action: {\\n label: 'Undo',\\n onClick: () => restoreItem(item),\\n },\\n });\\n }\\n</script>\"\n },\n {\n \"title\": \"Network Status\",\n \"code\": \"<script>\\n $effect(() => {\\n if (!navigator.onLine) {\\n toastStore.warning('You are offline. Changes will sync when connected.');\\n } else {\\n toastStore.success('Back online!');\\n }\\n });\\n</script>\"\n },\n {\n \"title\": \"Async Operation\",\n \"code\": \"<script>\\n async function handleExport() {\\n toastStore.info('Starting export...');\\n try {\\n await exportData();\\n toastStore.success('Export completed! Check your downloads.');\\n } catch {\\n toastStore.error('Export failed. Please try again.');\\n }\\n }\\n</script>\"\n },\n {\n \"title\": \"Copy to Clipboard\",\n \"code\": \"<script>\\n async function copyLink() {\\n await navigator.clipboard.writeText(shareUrl);\\n toastStore.success('Link copied to clipboard!');\\n }\\n</script>\\n\\n<Button onclick={copyLink}>Copy Link</Button>\"\n },\n {\n \"title\": \"Multiple Toasts\",\n \"description\": \"Multiple toasts stack and are dismissed independently:\",\n \"code\": \"<Button\\n onclick={() => {\\n toastStore.success('First message');\\n toastStore.info('Second message');\\n toastStore.warning('Third message');\\n }}\\n>\\n Show Multiple\\n</Button>\"\n }\n ],\n \"relatedComponents\": [\n \"Alert\",\n \"Dialog\"\n ]\n },\n {\n \"name\": \"ToastContainer\",\n \"description\": \"Container component for displaying toast notifications\",\n \"category\": \"feedback\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"position\",\n \"type\": \"'top-left' | 'top-right' | 'top-center' | 'bottom-left' | 'bottom-right' | 'bottom-center'\",\n \"default\": \"'bottom-right'\",\n \"required\": false,\n \"description\": \"Position on screen\"\n },\n {\n \"name\": \"class\",\n \"type\": \"string\",\n \"required\": false,\n \"description\": \"Additional CSS classes\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"position\",\n \"values\": [\n \"top-left\",\n \"top-right\",\n \"top-center\",\n \"bottom-left\",\n \"bottom-right\",\n \"bottom-center\"\n ],\n \"default\": \"bottom-right\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Bottom Right (Default)\",\n \"code\": \"<ToastContainer position=\\\"bottom-right\\\" />\"\n },\n {\n \"title\": \"Top Right\",\n \"code\": \"<ToastContainer position=\\\"top-right\\\" />\"\n },\n {\n \"title\": \"Top Center\",\n \"code\": \"<ToastContainer position=\\\"top-center\\\" />\"\n },\n {\n \"title\": \"Bottom Center\",\n \"code\": \"<ToastContainer position=\\\"bottom-center\\\" />\"\n },\n {\n \"title\": \"Custom Position\",\n \"code\": \"<ToastContainer position=\\\"top-center\\\" class=\\\"mt-16\\\" />\"\n }\n ],\n \"relatedComponents\": [\n \"Toast\",\n \"AppShell\"\n ]\n },\n {\n \"name\": \"Tooltip\",\n \"description\": \"Contextual information displayed on hover\",\n \"category\": \"overlay\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"props\": [\n {\n \"name\": \"content\",\n \"type\": \"string\",\n \"default\": \"Required\",\n \"required\": false,\n \"description\": \"Text content of the tooltip\"\n },\n {\n \"name\": \"side\",\n \"type\": \"'top' | 'right' | 'bottom' | 'left'\",\n \"default\": \"'top'\",\n \"required\": false,\n \"description\": \"Preferred side for placement\"\n },\n {\n \"name\": \"align\",\n \"type\": \"'start' | 'center' | 'end'\",\n \"default\": \"'center'\",\n \"required\": false,\n \"description\": \"Alignment along the side\"\n },\n {\n \"name\": \"delayDuration\",\n \"type\": \"number\",\n \"required\": false,\n \"description\": \"Delay before showing (ms)\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"side\",\n \"values\": [\n \"top\",\n \"right\",\n \"bottom\",\n \"left\"\n ],\n \"default\": \"top\"\n },\n {\n \"name\": \"align\",\n \"values\": [\n \"start\",\n \"center\",\n \"end\"\n ],\n \"default\": \"center\"\n }\n ],\n \"slots\": [\n {\n \"name\": \"children\",\n \"description\": \"Main content\",\n \"required\": false\n }\n ],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<Tooltip content=\\\"This is a tooltip\\\">\\n {#snippet children()}\\n <Button>Hover me</Button>\\n {/snippet}\\n</Tooltip>\"\n },\n {\n \"title\": \"Side\",\n \"description\": \"Control which side the tooltip appears on:\",\n \"code\": \"<Tooltip content=\\\"Top tooltip\\\" side=\\\"top\\\">\\n {#snippet children()}<Button>Top</Button>{/snippet}\\n</Tooltip>\\n\\n<Tooltip content=\\\"Right tooltip\\\" side=\\\"right\\\">\\n {#snippet children()}<Button>Right</Button>{/snippet}\\n</Tooltip>\\n\\n<Tooltip content=\\\"Bottom tooltip\\\" side=\\\"bottom\\\">\\n {#snippet children()}<Button>Bottom</Button>{/snippet}\\n</Tooltip>\\n\\n<Tooltip content=\\\"Left tooltip\\\" side=\\\"left\\\">\\n {#snippet children()}<Button>Left</Button>{/snippet}\\n</Tooltip>\"\n },\n {\n \"title\": \"Alignment\",\n \"description\": \"Adjust alignment along the side:\",\n \"code\": \"<Tooltip content=\\\"Aligned to start\\\" side=\\\"top\\\" align=\\\"start\\\">\\n {#snippet children()}<Button>Start</Button>{/snippet}\\n</Tooltip>\\n\\n<Tooltip content=\\\"Aligned to center\\\" side=\\\"top\\\" align=\\\"center\\\">\\n {#snippet children()}<Button>Center</Button>{/snippet}\\n</Tooltip>\\n\\n<Tooltip content=\\\"Aligned to end\\\" side=\\\"top\\\" align=\\\"end\\\">\\n {#snippet children()}<Button>End</Button>{/snippet}\\n</Tooltip>\"\n },\n {\n \"title\": \"Icon Button with Tooltip\",\n \"code\": \"<Tooltip content=\\\"Edit item\\\">\\n {#snippet children()}\\n <Button variant=\\\"ghost\\\" size=\\\"icon\\\" aria-label=\\\"Edit\\\">\\n <svg class=\\\"h-4 w-4\\\"><!-- edit icon --></svg>\\n </Button>\\n {/snippet}\\n</Tooltip>\"\n },\n {\n \"title\": \"Form Field Help\",\n \"code\": \"<div class=\\\"flex items-center gap-2\\\">\\n <Label for=\\\"password\\\">Password</Label>\\n <Tooltip content=\\\"Password must be at least 8 characters with one uppercase letter\\\">\\n {#snippet children()}\\n <svg class=\\\"h-4 w-4 text-muted-foreground cursor-help\\\">\\n <circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"2\\\" fill=\\\"none\\\" />\\n <path d=\\\"M12 16v-4M12 8h.01\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"2\\\" />\\n </svg>\\n {/snippet}\\n </Tooltip>\\n</div>\"\n },\n {\n \"title\": \"Truncated Text\",\n \"code\": \"<Tooltip content={fullText}>\\n {#snippet children()}\\n <span class=\\\"truncate max-w-xs block\\\">{fullText}</span>\\n {/snippet}\\n</Tooltip>\"\n },\n {\n \"title\": \"Disabled Button Explanation\",\n \"code\": \"<Tooltip content=\\\"You need admin permissions to perform this action\\\">\\n {#snippet children()}\\n <span>\\n <Button disabled>Delete</Button>\\n </span>\\n {/snippet}\\n</Tooltip>\"\n },\n {\n \"title\": \"Status Indicator\",\n \"code\": \"<Tooltip content=\\\"Online - Last seen 2 minutes ago\\\" side=\\\"right\\\">\\n {#snippet children()}\\n <span class=\\\"inline-flex h-2 w-2 rounded-full bg-green-500\\\"></span>\\n {/snippet}\\n</Tooltip>\"\n },\n {\n \"title\": \"Keyboard Shortcut\",\n \"code\": \"<Tooltip content=\\\"Save (Ctrl+S)\\\">\\n {#snippet children()}\\n <Button>Save</Button>\\n {/snippet}\\n</Tooltip>\"\n },\n {\n \"title\": \"Multiple Tooltips\",\n \"code\": \"<div class=\\\"flex gap-2\\\">\\n <Tooltip content=\\\"Bold\\\">\\n {#snippet children()}<Button variant=\\\"ghost\\\" size=\\\"icon\\\">B</Button>{/snippet}\\n </Tooltip>\\n <Tooltip content=\\\"Italic\\\">\\n {#snippet children()}<Button variant=\\\"ghost\\\" size=\\\"icon\\\">I</Button>{/snippet}\\n </Tooltip>\\n <Tooltip content=\\\"Underline\\\">\\n {#snippet children()}<Button variant=\\\"ghost\\\" size=\\\"icon\\\">U</Button>{/snippet}\\n </Tooltip>\\n</div>\"\n }\n ],\n \"relatedComponents\": [\n \"Dialog\",\n \"DropdownMenu\"\n ]\n },\n {\n \"name\": \"TreemapChart\",\n \"description\": \"Hierarchical data as nested rectangles\",\n \"category\": \"chart\",\n \"importPath\": \"@classic-homes/charts-svelte\",\n \"props\": [\n {\n \"name\": \"data\",\n \"type\": \"TreemapNode[]\",\n \"required\": true,\n \"description\": \"Hierarchical tree data\"\n },\n {\n \"name\": \"levels\",\n \"type\": \"TreemapLevel[]\",\n \"required\": false,\n \"description\": \"Visual configuration for each level\"\n },\n {\n \"name\": \"onClick\",\n \"type\": \"(params: TreemapEventParams) => void\",\n \"required\": false,\n \"description\": \"Callback when clicked\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"required\": true,\n \"description\": \"Chart title for accessibility\"\n },\n {\n \"name\": \"height\",\n \"type\": \"number | string\",\n \"default\": \"400\",\n \"required\": false,\n \"description\": \"Chart height\"\n },\n {\n \"name\": \"theme\",\n \"type\": \"'light' | 'dark' | 'auto'\",\n \"default\": \"'auto'\",\n \"required\": false,\n \"description\": \"Theme preference\"\n },\n {\n \"name\": \"showTooltip\",\n \"type\": \"boolean\",\n \"default\": \"true\",\n \"required\": false,\n \"description\": \"Show tooltip on hover\"\n }\n ],\n \"variants\": [\n {\n \"name\": \"theme\",\n \"values\": [\n \"light\",\n \"dark\",\n \"auto\"\n ],\n \"default\": \"auto\"\n }\n ],\n \"slots\": [],\n \"events\": [],\n \"examples\": [\n {\n \"title\": \"Basic Usage\",\n \"code\": \"<script>\\n import { TreemapChart } from '@classic-homes/charts-svelte';\\n\\n const data = [\\n {\\n name: 'Frontend',\\n children: [\\n { name: 'React', value: 40 },\\n { name: 'Vue', value: 30 },\\n { name: 'Svelte', value: 20 },\\n ],\\n },\\n {\\n name: 'Backend',\\n children: [\\n { name: 'Node.js', value: 35 },\\n { name: 'Python', value: 25 },\\n ],\\n },\\n ];\\n</script>\\n\\n<TreemapChart title=\\\"Tech Stack\\\" {data} height={400} />\"\n },\n {\n \"title\": \"File System\",\n \"code\": \"<TreemapChart\\n title=\\\"Disk Usage\\\"\\n data={[\\n {\\n name: 'Documents',\\n children: [\\n { name: 'PDFs', value: 500 },\\n { name: 'Images', value: 300 },\\n { name: 'Videos', value: 2000 },\\n ],\\n },\\n {\\n name: 'Applications',\\n children: [\\n { name: 'Development', value: 1500 },\\n { name: 'Productivity', value: 800 },\\n ],\\n },\\n ]}\\n/>\"\n },\n {\n \"title\": \"Budget Breakdown\",\n \"code\": \"<TreemapChart\\n title=\\\"Department Budget\\\"\\n data={[\\n {\\n name: 'Engineering',\\n children: [\\n { name: 'Salaries', value: 500000 },\\n { name: 'Equipment', value: 100000 },\\n { name: 'Training', value: 50000 },\\n ],\\n },\\n {\\n name: 'Marketing',\\n children: [\\n { name: 'Advertising', value: 200000 },\\n { name: 'Events', value: 75000 },\\n ],\\n },\\n ]}\\n/>\"\n }\n ],\n \"relatedComponents\": [\n \"PieChart\",\n \"SankeyChart\"\n ]\n }\n ]\n}","{\n \"version\": \"0.1.0\",\n \"colors\": {\n \"brand\": [\n {\n \"name\": \"gray\",\n \"description\": \"Neutral gray scale\",\n \"shades\": {\n \"50\": \"#f9fafb\",\n \"100\": \"#f3f4f6\",\n \"200\": \"#e5e7eb\",\n \"300\": \"#d1d5db\",\n \"400\": \"#9ca3af\",\n \"500\": \"#7a7a7a\",\n \"600\": \"#4f4f4f\",\n \"700\": \"#3d3d3d\",\n \"800\": \"#2a2a2a\",\n \"900\": \"#1a1a1a\",\n \"950\": \"#0a0a0a\"\n }\n },\n {\n \"name\": \"red\",\n \"description\": \"Brand red for logo and accents\",\n \"shades\": {\n \"50\": \"#fef2f2\",\n \"100\": \"#fee2e2\",\n \"200\": \"#fecaca\",\n \"300\": \"#fca5a5\",\n \"400\": \"#f87171\",\n \"500\": \"#e02726\",\n \"600\": \"#c81f1e\",\n \"700\": \"#a91c22\",\n \"800\": \"#7f1d1d\",\n \"900\": \"#5c1010\",\n \"950\": \"#3d0a0a\"\n }\n },\n {\n \"name\": \"teal\",\n \"description\": \"Core 1 - Primary brand accent\",\n \"shades\": {\n \"50\": \"#f0fafa\",\n \"100\": \"#d9f2f3\",\n \"200\": \"#b3e6e7\",\n \"300\": \"#8dd9db\",\n \"400\": \"#67cccf\",\n \"500\": \"#3ba4a7\",\n \"600\": \"#2f8386\",\n \"700\": \"#236265\",\n \"800\": \"#184144\",\n \"900\": \"#0c2123\",\n \"950\": \"#061012\"\n }\n },\n {\n \"name\": \"navy\",\n \"description\": \"Core 2 - Professional dark blue\",\n \"shades\": {\n \"50\": \"#f0f4f6\",\n \"100\": \"#d9e4ea\",\n \"200\": \"#b3c9d5\",\n \"300\": \"#8daebf\",\n \"400\": \"#6793aa\",\n \"500\": \"#417895\",\n \"600\": \"#2d5467\",\n \"700\": \"#002e3f\",\n \"800\": \"#00242f\",\n \"900\": \"#001a20\",\n \"950\": \"#000d10\"\n }\n },\n {\n \"name\": \"plum\",\n \"description\": \"Core 3 - Rich burgundy/purple\",\n \"shades\": {\n \"50\": \"#f8f4f6\",\n \"100\": \"#ede2e8\",\n \"200\": \"#dbc5d1\",\n \"300\": \"#c9a8ba\",\n \"400\": \"#b78ba3\",\n \"500\": \"#a56e8c\",\n \"600\": \"#7f4968\",\n \"700\": \"#5e2c41\",\n \"800\": \"#4b2334\",\n \"900\": \"#381a27\",\n \"950\": \"#1c0d13\"\n }\n },\n {\n \"name\": \"sage\",\n \"description\": \"Core 4 - Muted green/gray\",\n \"shades\": {\n \"50\": \"#f7f7f5\",\n \"100\": \"#eaebe6\",\n \"200\": \"#dddfd5\",\n \"300\": \"#d0d3c5\",\n \"400\": \"#c3c7b5\",\n \"500\": \"#b6baa4\",\n \"600\": \"#969a82\",\n \"700\": \"#757968\",\n \"800\": \"#54574e\",\n \"900\": \"#333634\",\n \"950\": \"#1a1b1a\"\n }\n },\n {\n \"name\": \"stone\",\n \"description\": \"Collection - Stone gray\",\n \"shades\": {\n \"50\": \"#f7f7f7\",\n \"100\": \"#ebebeb\",\n \"200\": \"#d7d8d7\",\n \"300\": \"#c3c5c3\",\n \"400\": \"#afb2af\",\n \"500\": \"#9b9f9b\",\n \"600\": \"#878c87\",\n \"700\": \"#676d69\",\n \"800\": \"#4d524f\",\n \"900\": \"#333735\",\n \"950\": \"#1a1b1b\"\n }\n },\n {\n \"name\": \"forest\",\n \"description\": \"Collection - Forest green\",\n \"shades\": {\n \"50\": \"#f4f7f5\",\n \"100\": \"#e1ebe4\",\n \"200\": \"#c3d7c9\",\n \"300\": \"#a5c3ae\",\n \"400\": \"#87af93\",\n \"500\": \"#6aa275\",\n \"600\": \"#55825d\",\n \"700\": \"#406146\",\n \"800\": \"#2b412e\",\n \"900\": \"#162017\",\n \"950\": \"#0b100c\"\n }\n },\n {\n \"name\": \"lavender\",\n \"description\": \"Collection - Lavender purple\",\n \"shades\": {\n \"50\": \"#f7f6f8\",\n \"100\": \"#ece9ed\",\n \"200\": \"#d9d3db\",\n \"300\": \"#c6bdc9\",\n \"400\": \"#b3a7b7\",\n \"500\": \"#a091a5\",\n \"600\": \"#8d7b93\",\n \"700\": \"#695a75\",\n \"800\": \"#51445a\",\n \"900\": \"#392e3f\",\n \"950\": \"#1d1720\"\n }\n },\n {\n \"name\": \"sky\",\n \"description\": \"Collection - Sky blue\",\n \"shades\": {\n \"50\": \"#f4f8fb\",\n \"100\": \"#e2ecf3\",\n \"200\": \"#c5d9e7\",\n \"300\": \"#a8c6db\",\n \"400\": \"#8bb3cf\",\n \"500\": \"#6ea0c3\",\n \"600\": \"#5f91b8\",\n \"700\": \"#4c7493\",\n \"800\": \"#39576e\",\n \"900\": \"#263a49\",\n \"950\": \"#131d25\"\n }\n },\n {\n \"name\": \"deepTeal\",\n \"description\": \"Collection - Deep teal\",\n \"shades\": {\n \"50\": \"#f2f5f5\",\n \"100\": \"#dce5e4\",\n \"200\": \"#b9cbc9\",\n \"300\": \"#96b1ae\",\n \"400\": \"#739793\",\n \"500\": \"#507d78\",\n \"600\": \"#306966\",\n \"800\": \"#18332f\",\n \"900\": \"#0c1918\",\n \"950\": \"#060c0c\"\n }\n },\n {\n \"name\": \"charcoal\",\n \"description\": \"Collection - Charcoal gray\",\n \"shades\": {\n \"50\": \"#f5f5f5\",\n \"100\": \"#e6e6e6\",\n \"200\": \"#cccccc\",\n \"300\": \"#b3b3b3\",\n \"400\": \"#999999\",\n \"500\": \"#808080\",\n \"600\": \"#666666\",\n \"700\": \"#4d4d4d\",\n \"800\": \"#333333\",\n \"900\": \"#292424\",\n \"950\": \"#141212\"\n }\n }\n ],\n \"semantic\": {\n \"background\": {\n \"light\": \"white\",\n \"dark\": \"charcoal-900\"\n },\n \"foreground\": {\n \"light\": \"gray-950\",\n \"dark\": \"gray-50\"\n },\n \"primary\": {\n \"light\": \"red-700\",\n \"dark\": \"red-500\"\n },\n \"secondary\": {\n \"light\": \"gray-100\",\n \"dark\": \"gray-800\"\n },\n \"accent\": {\n \"light\": \"teal-500\",\n \"dark\": \"teal-500\"\n },\n \"muted\": {\n \"light\": \"gray-100\",\n \"dark\": \"gray-800\"\n },\n \"destructive\": {\n \"light\": \"red-500\",\n \"dark\": \"red-900\"\n },\n \"success\": {\n \"light\": \"forest-500\",\n \"dark\": \"forest-500\"\n },\n \"warning\": {\n \"light\": \"amber-500\",\n \"dark\": \"amber-500\"\n },\n \"info\": {\n \"light\": \"sky-500\",\n \"dark\": \"sky-500\"\n }\n }\n },\n \"spacing\": [\n {\n \"key\": \"0\",\n \"value\": \"0\",\n \"pixels\": \"0\"\n },\n {\n \"key\": \"px\",\n \"value\": \"1px\",\n \"pixels\": \"1px\"\n },\n {\n \"key\": \"1\",\n \"value\": \"0.25rem\",\n \"pixels\": \"4px\"\n },\n {\n \"key\": \"2\",\n \"value\": \"0.5rem\",\n \"pixels\": \"8px\"\n },\n {\n \"key\": \"3\",\n \"value\": \"0.75rem\",\n \"pixels\": \"12px\"\n },\n {\n \"key\": \"4\",\n \"value\": \"1rem\",\n \"pixels\": \"16px\"\n },\n {\n \"key\": \"5\",\n \"value\": \"1.25rem\",\n \"pixels\": \"20px\"\n },\n {\n \"key\": \"6\",\n \"value\": \"1.5rem\",\n \"pixels\": \"24px\"\n },\n {\n \"key\": \"8\",\n \"value\": \"2rem\",\n \"pixels\": \"32px\"\n },\n {\n \"key\": \"10\",\n \"value\": \"2.5rem\",\n \"pixels\": \"40px\"\n },\n {\n \"key\": \"12\",\n \"value\": \"3rem\",\n \"pixels\": \"48px\"\n },\n {\n \"key\": \"16\",\n \"value\": \"4rem\",\n \"pixels\": \"64px\"\n },\n {\n \"key\": \"20\",\n \"value\": \"5rem\",\n \"pixels\": \"80px\"\n },\n {\n \"key\": \"24\",\n \"value\": \"6rem\",\n \"pixels\": \"96px\"\n }\n ],\n \"typography\": {\n \"fontFamilies\": {\n \"sans\": \"Figtree, system-ui, sans-serif\",\n \"serif\": \"Source Serif Variable, Georgia, serif\",\n \"mono\": \"ui-monospace, SFMono-Regular, monospace\"\n },\n \"fontSizes\": {\n \"xs\": {\n \"size\": \"0.75rem\",\n \"lineHeight\": \"1rem\"\n },\n \"sm\": {\n \"size\": \"0.875rem\",\n \"lineHeight\": \"1.25rem\"\n },\n \"base\": {\n \"size\": \"1rem\",\n \"lineHeight\": \"1.5rem\"\n },\n \"lg\": {\n \"size\": \"1.125rem\",\n \"lineHeight\": \"1.75rem\"\n },\n \"xl\": {\n \"size\": \"1.25rem\",\n \"lineHeight\": \"1.75rem\"\n },\n \"2xl\": {\n \"size\": \"1.5rem\",\n \"lineHeight\": \"2rem\"\n },\n \"3xl\": {\n \"size\": \"1.875rem\",\n \"lineHeight\": \"2.25rem\"\n },\n \"4xl\": {\n \"size\": \"2.25rem\",\n \"lineHeight\": \"2.5rem\"\n }\n },\n \"fontWeights\": {\n \"thin\": 100,\n \"light\": 300,\n \"normal\": 400,\n \"medium\": 500,\n \"semibold\": 600,\n \"bold\": 700,\n \"black\": 900\n }\n },\n \"borderRadius\": {\n \"none\": \"0\",\n \"sm\": \"0.125rem\",\n \"DEFAULT\": \"0.5rem\",\n \"md\": \"0.375rem\",\n \"lg\": \"0.5rem\",\n \"xl\": \"0.75rem\",\n \"2xl\": \"1rem\",\n \"full\": \"9999px\"\n },\n \"boxShadow\": {\n \"sm\": \"0 1px 2px rgba(0,0,0,0.05)\",\n \"DEFAULT\": \"0 1px 3px rgba(0,0,0,0.1)\",\n \"md\": \"0 4px 6px rgba(0,0,0,0.1)\",\n \"lg\": \"0 10px 15px rgba(0,0,0,0.1)\",\n \"xl\": \"0 20px 25px rgba(0,0,0,0.1)\"\n }\n}","/**\n * Token Resources\n *\n * Provides access to design token data.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport tokenDefinitions from '../data/token-definitions.json' with { type: 'json' };\nimport type { TokenDefinitions } from '../types.js';\n\nconst tokens = tokenDefinitions as TokenDefinitions;\n\n/**\n * Register token-related resources\n */\nexport function registerTokenResources(server: McpServer): void {\n // All tokens\n server.resource('tokens://all', 'tokens://all', async (uri) => ({\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(tokens, null, 2),\n },\n ],\n }));\n\n // Color tokens\n server.resource('tokens://colors', 'tokens://colors', async (uri) => ({\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(tokens.colors, null, 2),\n },\n ],\n }));\n\n // Spacing tokens\n server.resource('tokens://spacing', 'tokens://spacing', async (uri) => ({\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(tokens.spacing, null, 2),\n },\n ],\n }));\n\n // Typography tokens\n server.resource('tokens://typography', 'tokens://typography', async (uri) => ({\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(tokens.typography, null, 2),\n },\n ],\n }));\n}\n","/**\n * Layout Resources\n *\n * Provides access to layout and form pattern data.\n */\n\nimport { McpServer, ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport patternLibrary from '../data/pattern-library.json' with { type: 'json' };\nimport type { PatternLibrary } from '../types.js';\n\nconst patterns = patternLibrary as unknown as PatternLibrary;\n\n/**\n * Register layout and pattern resources\n */\nexport function registerLayoutResources(server: McpServer): void {\n // All patterns\n server.resource('All Patterns', 'patterns://all', async (uri) => ({\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(patterns, null, 2),\n },\n ],\n }));\n\n // Layout patterns\n server.resource('Layout Patterns', 'patterns://layouts', async (uri) => ({\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(patterns.layouts, null, 2),\n },\n ],\n }));\n\n // Form patterns\n server.resource('Form Patterns', 'patterns://forms', async (uri) => ({\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(patterns.forms, null, 2),\n },\n ],\n }));\n\n // Individual pattern by ID\n server.resource(\n 'Pattern Details',\n new ResourceTemplate('patterns://{id}', { list: undefined }),\n async (uri, params) => {\n const id = params.id as string;\n const layout = patterns.layouts.find((l) => l.id === id);\n const form = patterns.forms.find((f) => f.id === id);\n const pattern = layout || form;\n\n if (!pattern) {\n return {\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify({ error: `Pattern \"${id}\" not found` }),\n },\n ],\n };\n }\n\n return {\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(pattern, null, 2),\n },\n ],\n };\n }\n );\n}\n","{\n \"version\": \"0.1.0\",\n \"layouts\": [\n {\n \"id\": \"dashboard-page\",\n \"name\": \"Dashboard Page\",\n \"description\": \"Full dashboard layout with sidebar navigation, role-based section expansion, and user-driven pinning\",\n \"useCase\": \"Authenticated dashboard pages\",\n \"components\": [\n \"DashboardLayout\",\n \"Sidebar\",\n \"Header\"\n ],\n \"props\": {\n \"navigation\": \"NavSection[]\",\n \"user\": \"User\",\n \"sidebarVariant\": \"'light' | 'dark'\",\n \"enablePinning\": \"boolean\",\n \"initialPinnedItems\": \"string[]\",\n \"onPinnedChange\": \"(pinnedIds: string[]) => void\"\n },\n \"example\": \"<script lang=\\\"ts\\\">\\n import { DashboardLayout } from '@classic-homes/theme-svelte';\\n import type { NavSection, User } from '@classic-homes/theme-svelte';\\n\\n const navigation: NavSection[] = [\\n {\\n id: 'main',\\n items: [\\n { id: 'dashboard', name: 'Dashboard', href: '/dashboard', icon: 'home', pinnable: true },\\n { id: 'settings', name: 'Settings', href: '/settings', icon: 'settings', pinnable: true },\\n ],\\n },\\n {\\n id: 'admin',\\n title: 'Administration',\\n collapsible: true,\\n expandForRoles: ['admin', 'superuser'],\\n items: [\\n { id: 'users', name: 'Users', href: '/admin/users', icon: 'users', pinnable: true },\\n { id: 'roles', name: 'Roles', href: '/admin/roles', icon: 'shield', pinnable: true },\\n ],\\n },\\n ];\\n\\n const user: User = {\\n id: '1',\\n name: 'John Doe',\\n email: 'john@example.com',\\n roles: ['admin'],\\n };\\n\\n async function handlePinnedChange(pinnedIds: string[]) {\\n await fetch('/api/user/preferences', {\\n method: 'PATCH',\\n body: JSON.stringify({ pinnedItems: pinnedIds }),\\n });\\n }\\n</script>\\n\\n<DashboardLayout\\n {navigation}\\n {user}\\n appName=\\\"My App\\\"\\n enablePinning={true}\\n onPinnedChange={handlePinnedChange}\\n>\\n <h1>Welcome to Dashboard</h1>\\n</DashboardLayout>\"\n },\n {\n \"id\": \"public-page\",\n \"name\": \"Public Page\",\n \"description\": \"Public-facing page with header and footer\",\n \"useCase\": \"Marketing pages, landing pages\",\n \"components\": [\n \"PublicLayout\",\n \"Header\",\n \"Footer\"\n ],\n \"props\": {\n \"navigation\": \"NavItem[]\",\n \"footerLinks\": \"NavSection[]\",\n \"copyright\": \"string\"\n },\n \"example\": \"<script lang=\\\"ts\\\">\\n import { PublicLayout } from '@classic-homes/theme-svelte';\\n import type { NavItem } from '@classic-homes/theme-svelte';\\n\\n const navigation: NavItem[] = [\\n { id: 'home', name: 'Home', href: '/' },\\n { id: 'about', name: 'About', href: '/about' },\\n { id: 'contact', name: 'Contact', href: '/contact' },\\n ];\\n</script>\\n\\n<PublicLayout {navigation} showFooter copyright=\\\"© 2025 Company\\\">\\n <main>Page content</main>\\n</PublicLayout>\"\n },\n {\n \"id\": \"auth-page\",\n \"name\": \"Auth Page\",\n \"description\": \"Centered layout for authentication forms\",\n \"useCase\": \"Login, signup, password reset pages\",\n \"components\": [\n \"AuthLayout\"\n ],\n \"props\": {\n \"logoSubtitle\": \"string\",\n \"backgroundVariant\": \"'default' | 'gradient' | 'pattern'\",\n \"maxWidth\": \"'sm' | 'md' | 'lg'\"\n },\n \"example\": \"<script lang=\\\"ts\\\">\\n import { AuthLayout, Button, FormField } from '@classic-homes/theme-svelte';\\n</script>\\n\\n<AuthLayout logoSubtitle=\\\"Sign in to your account\\\">\\n <form>\\n <FormField label=\\\"Email\\\" type=\\\"email\\\" name=\\\"email\\\" />\\n <FormField label=\\\"Password\\\" type=\\\"password\\\" name=\\\"password\\\" />\\n <Button type=\\\"submit\\\" class=\\\"w-full\\\">Sign In</Button>\\n </form>\\n</AuthLayout>\"\n },\n {\n \"id\": \"error-page\",\n \"name\": \"Error Page\",\n \"description\": \"Centered error page layout\",\n \"useCase\": \"404, 500, and other error pages\",\n \"components\": [\n \"ErrorLayout\"\n ],\n \"props\": {\n \"statusCode\": \"number\",\n \"title\": \"string\",\n \"description\": \"string\"\n },\n \"example\": \"<script lang=\\\"ts\\\">\\n import { ErrorLayout } from '@classic-homes/theme-svelte';\\n</script>\\n\\n<ErrorLayout\\n statusCode={404}\\n title=\\\"Page Not Found\\\"\\n description=\\\"The page you're looking for doesn't exist.\\\"\\n showHomeButton\\n/>\"\n },\n {\n \"id\": \"form-page\",\n \"name\": \"Form Page\",\n \"description\": \"Form-focused page with optional sidebar\",\n \"useCase\": \"Multi-step forms, data entry\",\n \"components\": [\n \"FormPageLayout\"\n ],\n \"props\": {\n \"title\": \"string\",\n \"description\": \"string\",\n \"helpText\": \"string\"\n },\n \"example\": \"<script lang=\\\"ts\\\">\\n import { FormPageLayout, FormField, Button } from '@classic-homes/theme-svelte';\\n</script>\\n\\n<FormPageLayout\\n title=\\\"Create Account\\\"\\n description=\\\"Fill in the form to create your account\\\"\\n helpText=\\\"Need help? Contact support.\\\"\\n>\\n <form>\\n <!-- Form fields -->\\n </form>\\n</FormPageLayout>\"\n }\n ],\n \"forms\": [\n {\n \"id\": \"login-form\",\n \"name\": \"Login Form\",\n \"description\": \"Standard login form with email and password\",\n \"schema\": \"loginSchema\",\n \"components\": [\n \"FormField\",\n \"Button\",\n \"useForm\"\n ],\n \"example\": \"<script lang=\\\"ts\\\">\\n import { FormField, Button, useForm, loginSchema } from '@classic-homes/theme-svelte';\\n\\n const form = useForm({\\n schema: loginSchema,\\n initialValues: { email: '', password: '' },\\n onSubmit: async (data) => {\\n // Handle login\\n },\\n });\\n</script>\\n\\n<form onsubmit={form.handleSubmit}>\\n <FormField\\n label=\\\"Email\\\"\\n type=\\\"email\\\"\\n name=\\\"email\\\"\\n value={form.data.email}\\n error={form.errors.email}\\n onValueChange={(v) => form.setField('email', v)}\\n />\\n <FormField\\n label=\\\"Password\\\"\\n type=\\\"password\\\"\\n name=\\\"password\\\"\\n value={form.data.password}\\n error={form.errors.password}\\n onValueChange={(v) => form.setField('password', v)}\\n />\\n <Button type=\\\"submit\\\" loading={form.isSubmitting}>Sign In</Button>\\n</form>\"\n },\n {\n \"id\": \"registration-form\",\n \"name\": \"Registration Form\",\n \"description\": \"User registration form with validation\",\n \"schema\": \"registerSchema\",\n \"components\": [\n \"FormField\",\n \"Button\",\n \"useForm\"\n ],\n \"example\": \"<script lang=\\\"ts\\\">\\n import { FormField, Button, useForm, registerSchema } from '@classic-homes/theme-svelte';\\n\\n const form = useForm({\\n schema: registerSchema,\\n initialValues: { email: '', password: '', confirmPassword: '', fullName: '' },\\n onSubmit: async (data) => {\\n // Handle registration\\n },\\n });\\n</script>\\n\\n<form onsubmit={form.handleSubmit}>\\n <FormField label=\\\"Full Name\\\" name=\\\"fullName\\\" />\\n <FormField label=\\\"Email\\\" type=\\\"email\\\" name=\\\"email\\\" />\\n <FormField label=\\\"Password\\\" type=\\\"password\\\" name=\\\"password\\\" />\\n <FormField label=\\\"Confirm Password\\\" type=\\\"password\\\" name=\\\"confirmPassword\\\" />\\n <Button type=\\\"submit\\\" loading={form.isSubmitting}>Create Account</Button>\\n</form>\"\n },\n {\n \"id\": \"contact-form\",\n \"name\": \"Contact Form\",\n \"description\": \"Contact form with name, email, and message\",\n \"components\": [\n \"FormField\",\n \"Textarea\",\n \"Button\",\n \"useForm\"\n ],\n \"example\": \"<script lang=\\\"ts\\\">\\n import { FormField, Button, useForm } from '@classic-homes/theme-svelte';\\n import { z } from 'zod';\\n\\n const contactSchema = z.object({\\n name: z.string().min(2),\\n email: z.string().email(),\\n message: z.string().min(10),\\n });\\n\\n const form = useForm({\\n schema: contactSchema,\\n initialValues: { name: '', email: '', message: '' },\\n onSubmit: async (data) => {\\n // Handle contact form\\n },\\n });\\n</script>\\n\\n<form onsubmit={form.handleSubmit}>\\n <FormField label=\\\"Name\\\" name=\\\"name\\\" />\\n <FormField label=\\\"Email\\\" type=\\\"email\\\" name=\\\"email\\\" />\\n <FormField label=\\\"Message\\\" type=\\\"textarea\\\" name=\\\"message\\\" />\\n <Button type=\\\"submit\\\">Send Message</Button>\\n</form>\"\n },\n {\n \"id\": \"mfa-verification-form\",\n \"name\": \"MFA Verification Form\",\n \"description\": \"Two-factor authentication code verification form\",\n \"schema\": \"mfaVerifySchema\",\n \"components\": [\n \"FormField\",\n \"OTPInput\",\n \"Button\",\n \"Checkbox\",\n \"useForm\"\n ],\n \"example\": \"<script lang=\\\"ts\\\">\\n import { OTPInput, Button, Checkbox, useForm, mfaVerifySchema } from '@classic-homes/theme-svelte';\\n import { authApi } from '@classic-homes/auth/core';\\n\\n export let mfaToken: string;\\n export let onSuccess: () => void;\\n\\n const form = useForm({\\n schema: mfaVerifySchema,\\n initialValues: { code: '', trustDevice: false },\\n onSubmit: async (data) => {\\n await authApi.verifyMFAChallenge({ mfaToken, code: data.code, trustDevice: data.trustDevice });\\n onSuccess();\\n },\\n });\\n</script>\\n\\n<form onsubmit={form.handleSubmit} class=\\\"space-y-4\\\">\\n <OTPInput length={6} value={form.data.code} onValueChange={(v) => form.setField('code', v)} />\\n <Checkbox checked={form.data.trustDevice} onCheckedChange={(v) => form.setField('trustDevice', v)}>\\n Trust this device for 30 days\\n </Checkbox>\\n <Button type=\\\"submit\\\" loading={form.isSubmitting} class=\\\"w-full\\\">Verify</Button>\\n</form>\"\n },\n {\n \"id\": \"mfa-setup-form\",\n \"name\": \"MFA Setup Form\",\n \"description\": \"MFA enrollment form with QR code display and code verification\",\n \"schema\": \"mfaSetupSchema\",\n \"components\": [\n \"FormField\",\n \"OTPInput\",\n \"Button\",\n \"Card\",\n \"useForm\"\n ],\n \"example\": \"<script lang=\\\"ts\\\">\\n import { OTPInput, Button, Card, CardContent, useForm, mfaSetupSchema } from '@classic-homes/theme-svelte';\\n import { authApi } from '@classic-homes/auth/core';\\n import { onMount } from 'svelte';\\n\\n let setupData: { qrCodeUrl: string; manualEntryKey: string } | null = null;\\n\\n onMount(async () => {\\n setupData = await authApi.setupMFA();\\n });\\n\\n const form = useForm({\\n schema: mfaSetupSchema,\\n initialValues: { code: '' },\\n onSubmit: async (data) => {\\n await authApi.verifyMFASetup(data.code);\\n },\\n });\\n</script>\\n\\n{#if setupData}\\n <Card>\\n <CardContent class=\\\"space-y-4\\\">\\n <img src={setupData.qrCodeUrl} alt=\\\"QR Code\\\" class=\\\"mx-auto\\\" />\\n <form onsubmit={form.handleSubmit}>\\n <OTPInput length={6} value={form.data.code} onValueChange={(v) => form.setField('code', v)} />\\n <Button type=\\\"submit\\\" loading={form.isSubmitting} class=\\\"w-full mt-4\\\">Verify & Enable MFA</Button>\\n </form>\\n </CardContent>\\n </Card>\\n{/if}\"\n },\n {\n \"id\": \"profile-update-form\",\n \"name\": \"Profile Update Form\",\n \"description\": \"User profile editing form\",\n \"schema\": \"profileUpdateSchema\",\n \"components\": [\n \"FormField\",\n \"Button\",\n \"useForm\"\n ],\n \"example\": \"<script lang=\\\"ts\\\">\\n import { FormField, Button, useForm, profileUpdateSchema } from '@classic-homes/theme-svelte';\\n import { authApi } from '@classic-homes/auth/core';\\n import { currentUser, authActions } from '@classic-homes/auth/svelte';\\n\\n const form = useForm({\\n schema: profileUpdateSchema,\\n initialValues: {\\n firstName: $currentUser?.firstName ?? '',\\n lastName: $currentUser?.lastName ?? '',\\n email: $currentUser?.email ?? '',\\n },\\n onSubmit: async (data) => {\\n const updatedUser = await authApi.updateProfile(data);\\n authActions.updateUser(updatedUser);\\n },\\n });\\n</script>\\n\\n<form onsubmit={form.handleSubmit} class=\\\"space-y-4\\\">\\n <FormField label=\\\"First Name\\\" name=\\\"firstName\\\" value={form.data.firstName} onValueChange={(v) => form.setField('firstName', v)} />\\n <FormField label=\\\"Last Name\\\" name=\\\"lastName\\\" value={form.data.lastName} onValueChange={(v) => form.setField('lastName', v)} />\\n <FormField label=\\\"Email\\\" type=\\\"email\\\" name=\\\"email\\\" value={form.data.email} onValueChange={(v) => form.setField('email', v)} />\\n <Button type=\\\"submit\\\" loading={form.isSubmitting}>Save Changes</Button>\\n</form>\"\n },\n {\n \"id\": \"change-password-form\",\n \"name\": \"Change Password Form\",\n \"description\": \"Form for authenticated users to change their password\",\n \"schema\": \"changePasswordSchema\",\n \"components\": [\n \"FormField\",\n \"Button\",\n \"useForm\"\n ],\n \"example\": \"<script lang=\\\"ts\\\">\\n import { FormField, Button, useForm, changePasswordSchema } from '@classic-homes/theme-svelte';\\n import { authApi } from '@classic-homes/auth/core';\\n\\n const form = useForm({\\n schema: changePasswordSchema,\\n initialValues: { currentPassword: '', newPassword: '', confirmPassword: '' },\\n onSubmit: async (data) => {\\n await authApi.changePassword({ currentPassword: data.currentPassword, newPassword: data.newPassword });\\n },\\n });\\n</script>\\n\\n<form onsubmit={form.handleSubmit} class=\\\"space-y-4\\\">\\n <FormField label=\\\"Current Password\\\" type=\\\"password\\\" name=\\\"currentPassword\\\" value={form.data.currentPassword} onValueChange={(v) => form.setField('currentPassword', v)} />\\n <FormField label=\\\"New Password\\\" type=\\\"password\\\" name=\\\"newPassword\\\" value={form.data.newPassword} onValueChange={(v) => form.setField('newPassword', v)} />\\n <FormField label=\\\"Confirm Password\\\" type=\\\"password\\\" name=\\\"confirmPassword\\\" value={form.data.confirmPassword} onValueChange={(v) => form.setField('confirmPassword', v)} />\\n <Button type=\\\"submit\\\" loading={form.isSubmitting}>Change Password</Button>\\n</form>\"\n },\n {\n \"id\": \"forgot-password-form\",\n \"name\": \"Forgot Password Form\",\n \"description\": \"Password reset request form\",\n \"schema\": \"forgotPasswordSchema\",\n \"components\": [\n \"FormField\",\n \"Button\",\n \"useForm\"\n ],\n \"example\": \"<script lang=\\\"ts\\\">\\n import { FormField, Button, useForm, forgotPasswordSchema } from '@classic-homes/theme-svelte';\\n import { authApi } from '@classic-homes/auth/core';\\n\\n let submitted = false;\\n\\n const form = useForm({\\n schema: forgotPasswordSchema,\\n initialValues: { email: '' },\\n onSubmit: async (data) => {\\n await authApi.forgotPassword(data.email);\\n submitted = true;\\n },\\n });\\n</script>\\n\\n{#if submitted}\\n <p>Check your email for password reset instructions.</p>\\n{:else}\\n <form onsubmit={form.handleSubmit} class=\\\"space-y-4\\\">\\n <FormField label=\\\"Email\\\" type=\\\"email\\\" name=\\\"email\\\" value={form.data.email} onValueChange={(v) => form.setField('email', v)} />\\n <Button type=\\\"submit\\\" loading={form.isSubmitting} class=\\\"w-full\\\">Send Reset Link</Button>\\n </form>\\n{/if}\"\n },\n {\n \"id\": \"reset-password-form\",\n \"name\": \"Reset Password Form\",\n \"description\": \"Set new password form using reset token\",\n \"schema\": \"resetPasswordSchema\",\n \"components\": [\n \"FormField\",\n \"Button\",\n \"useForm\"\n ],\n \"example\": \"<script lang=\\\"ts\\\">\\n import { FormField, Button, useForm, resetPasswordSchema } from '@classic-homes/theme-svelte';\\n import { authApi } from '@classic-homes/auth/core';\\n import { goto } from '$app/navigation';\\n\\n export let token: string;\\n\\n const form = useForm({\\n schema: resetPasswordSchema,\\n initialValues: { password: '', confirmPassword: '' },\\n onSubmit: async (data) => {\\n await authApi.resetPassword(token, data.password);\\n goto('/login?message=password-reset');\\n },\\n });\\n</script>\\n\\n<form onsubmit={form.handleSubmit} class=\\\"space-y-4\\\">\\n <FormField label=\\\"New Password\\\" type=\\\"password\\\" name=\\\"password\\\" value={form.data.password} onValueChange={(v) => form.setField('password', v)} />\\n <FormField label=\\\"Confirm Password\\\" type=\\\"password\\\" name=\\\"confirmPassword\\\" value={form.data.confirmPassword} onValueChange={(v) => form.setField('confirmPassword', v)} />\\n <Button type=\\\"submit\\\" loading={form.isSubmitting} class=\\\"w-full\\\">Reset Password</Button>\\n</form>\"\n }\n ],\n \"auth\": [\n {\n \"id\": \"login-with-mfa\",\n \"name\": \"Login with MFA Flow\",\n \"description\": \"Complete login flow handling MFA challenge when required\",\n \"components\": [\n \"AuthLayout\",\n \"FormField\",\n \"Button\",\n \"OTPInput\",\n \"useForm\"\n ],\n \"example\": \"<script lang=\\\"ts\\\">\\n import { AuthLayout, FormField, Button, OTPInput, useForm, loginSchema, mfaVerifySchema } from '@classic-homes/theme-svelte';\\n import { authApi, isMfaChallengeResponse, getMfaToken } from '@classic-homes/auth/core';\\n import { authActions } from '@classic-homes/auth/svelte';\\n import { goto } from '$app/navigation';\\n\\n let mfaRequired = false;\\n let mfaToken = '';\\n\\n const loginForm = useForm({\\n schema: loginSchema,\\n initialValues: { email: '', password: '' },\\n onSubmit: async (data) => {\\n const response = await authActions.login(data);\\n if (isMfaChallengeResponse(response)) {\\n mfaRequired = true;\\n mfaToken = getMfaToken(response)!;\\n } else {\\n goto('/dashboard');\\n }\\n },\\n });\\n</script>\\n\\n<AuthLayout logoSubtitle={mfaRequired ? 'Enter verification code' : 'Sign in'}>\\n {#if mfaRequired}\\n <OTPInput length={6} />\\n <Button class=\\\"w-full mt-4\\\">Verify</Button>\\n {:else}\\n <form onsubmit={loginForm.handleSubmit}>\\n <FormField label=\\\"Email\\\" type=\\\"email\\\" name=\\\"email\\\" />\\n <FormField label=\\\"Password\\\" type=\\\"password\\\" name=\\\"password\\\" />\\n <Button type=\\\"submit\\\" loading={loginForm.isSubmitting} class=\\\"w-full\\\">Sign In</Button>\\n </form>\\n {/if}\\n</AuthLayout>\"\n },\n {\n \"id\": \"sso-login\",\n \"name\": \"SSO Login Flow\",\n \"description\": \"Single Sign-On authentication with redirect handling\",\n \"components\": [\n \"AuthLayout\",\n \"Button\"\n ],\n \"example\": \"<script lang=\\\"ts\\\">\\n import { AuthLayout, Button } from '@classic-homes/theme-svelte';\\n import { authApi } from '@classic-homes/auth/core';\\n\\n function handleSSOLogin() {\\n authApi.initiateSSOLogin({ redirectUrl: '/dashboard' });\\n }\\n</script>\\n\\n<AuthLayout logoSubtitle=\\\"Sign in with your company account\\\">\\n <Button onclick={handleSSOLogin} class=\\\"w-full\\\" variant=\\\"outline\\\">Sign in with SSO</Button>\\n</AuthLayout>\"\n },\n {\n \"id\": \"session-management\",\n \"name\": \"Session Management\",\n \"description\": \"View and revoke active sessions\",\n \"components\": [\n \"Card\",\n \"Button\"\n ],\n \"example\": \"<script lang=\\\"ts\\\">\\n import { Card, CardHeader, CardTitle, CardContent, Button } from '@classic-homes/theme-svelte';\\n import { authApi } from '@classic-homes/auth/core';\\n import type { Session } from '@classic-homes/auth/core';\\n import { onMount } from 'svelte';\\n\\n let sessions: Session[] = [];\\n\\n onMount(async () => {\\n const response = await authApi.getSessions();\\n sessions = response.sessions;\\n });\\n\\n async function revokeSession(sessionId: string) {\\n await authApi.revokeSession(sessionId);\\n sessions = sessions.filter(s => s.id !== sessionId);\\n }\\n</script>\\n\\n<Card>\\n <CardHeader><CardTitle>Active Sessions</CardTitle></CardHeader>\\n <CardContent>\\n {#each sessions as session}\\n <div class=\\\"flex items-center justify-between py-2 border-b\\\">\\n <div>\\n <p class=\\\"font-medium\\\">{session.deviceName}</p>\\n <p class=\\\"text-sm text-muted-foreground\\\">{session.location}</p>\\n </div>\\n {#if !session.isCurrent}\\n <Button variant=\\\"ghost\\\" size=\\\"sm\\\" onclick={() => revokeSession(session.id)}>Revoke</Button>\\n {/if}\\n </div>\\n {/each}\\n </CardContent>\\n</Card>\"\n },\n {\n \"id\": \"protected-route\",\n \"name\": \"Protected Route\",\n \"description\": \"Route protection with auth guards in SvelteKit\",\n \"components\": [],\n \"example\": \"// +page.ts\\nimport { requireAuth, requireRole, protectedLoad } from '@classic-homes/auth/svelte';\\n\\n// Simple auth requirement\\nexport const load = requireAuth();\\n\\n// Role-based protection\\nexport const load = requireRole('admin');\\n\\n// Custom protected load\\nexport const load = protectedLoad(async (event, auth) => {\\n const data = await fetchData(event.fetch, auth.user.id);\\n return { user: auth.user, data };\\n});\"\n }\n ]\n}","{\n \"auth\": [\n {\n \"name\": \"emailSchema\",\n \"description\": \"Email validation\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"passwordSchema\",\n \"description\": \"Strong password (8+ chars, mixed case, numbers, special)\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"loginPasswordSchema\",\n \"description\": \"Simpler password validation for login\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"usernameSchema\",\n \"description\": \"Username validation (3-30 chars, alphanumeric)\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"fullNameSchema\",\n \"description\": \"Full name validation\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"phoneSchema\",\n \"description\": \"Phone number validation\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"mfaCodeSchema\",\n \"description\": \"MFA code validation (6 digits)\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"totpSecretSchema\",\n \"description\": \"TOTP secret validation (Base32 encoded)\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"mfaVerifySchema\",\n \"description\": \"MFA verification form schema (code + optional trust device)\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"mfaSetupSchema\",\n \"description\": \"MFA setup form schema (code verification during setup)\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"loginSchema\",\n \"description\": \"Complete login form schema\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"registerSchema\",\n \"description\": \"Complete registration form schema\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"forgotPasswordSchema\",\n \"description\": \"Forgot password form schema\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"resetPasswordSchema\",\n \"description\": \"Reset password form schema\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"changePasswordSchema\",\n \"description\": \"Change password form schema\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"profileUpdateSchema\",\n \"description\": \"Profile update form schema (firstName, lastName, email, phone)\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"emailChangeSchema\",\n \"description\": \"Email change form schema with password confirmation\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"userSchema\",\n \"description\": \"User object validation schema\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"authTokensSchema\",\n \"description\": \"Auth tokens validation (accessToken, refreshToken)\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"loginResponseSchema\",\n \"description\": \"Login API response validation schema\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n }\n ],\n \"common\": [\n {\n \"name\": \"nonEmptyString\",\n \"description\": \"Non-empty string validation\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"trimmedString\",\n \"description\": \"Trimmed string\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"urlSchema\",\n \"description\": \"URL validation\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"slugSchema\",\n \"description\": \"URL slug validation\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"positiveInt\",\n \"description\": \"Positive integer validation\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"nonNegativeInt\",\n \"description\": \"Non-negative integer\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"percentageSchema\",\n \"description\": \"Percentage (0-100)\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"priceSchema\",\n \"description\": \"Price validation\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"isoDateSchema\",\n \"description\": \"ISO date string validation\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"futureDateSchema\",\n \"description\": \"Future date validation\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"pastDateSchema\",\n \"description\": \"Past date validation\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n }\n ],\n \"file\": [\n {\n \"name\": \"maxFileSize\",\n \"description\": \"File size limit validation\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"allowedFileTypes\",\n \"description\": \"File type validation\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"imageFileSchema\",\n \"description\": \"Image file validation\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n }\n ],\n \"api\": [\n {\n \"name\": \"apiResponseSchema\",\n \"description\": \"Standard API response schema\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n },\n {\n \"name\": \"paginatedResponseSchema\",\n \"description\": \"Paginated API response\",\n \"importPath\": \"@classic-homes/theme-svelte\"\n }\n ],\n \"composables\": [\n {\n \"name\": \"useForm\",\n \"description\": \"Form state management composable with Zod validation, field tracking, and submission handling\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"example\": \"const form = useForm({\\n schema: loginSchema,\\n initialValues: { email: '', password: '' },\\n onSubmit: async (data) => { /* handle submit */ }\\n});\"\n },\n {\n \"name\": \"usePersistedForm\",\n \"description\": \"Form composable with localStorage persistence for draft saving\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"example\": \"const form = usePersistedForm('form-key', {\\n schema: registerSchema,\\n initialValues: { email: '', name: '' },\\n onSubmit: async (data) => { /* handle submit */ }\\n});\"\n },\n {\n \"name\": \"useAsync\",\n \"description\": \"Async operation state management with loading, error, and data states\",\n \"importPath\": \"@classic-homes/theme-svelte\",\n \"example\": \"const { execute, isLoading, error, data } = useAsync(async () => {\\n return await fetchData();\\n});\"\n }\n ]\n}","/**\n * Schema Resources\n *\n * Provides access to validation schema information.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport schemaCatalog from '../data/schema-catalog.json' with { type: 'json' };\nimport type { SchemaCatalog } from '../types.js';\n\nconst schemas = schemaCatalog as SchemaCatalog;\n\n/**\n * Register schema-related resources\n */\nexport function registerSchemaResources(server: McpServer): void {\n // All schemas\n server.resource('schemas://all', 'schemas://all', async (uri) => ({\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(schemas, null, 2),\n },\n ],\n }));\n\n // Auth schemas\n server.resource('schemas://auth', 'schemas://auth', async (uri) => ({\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(schemas.auth, null, 2),\n },\n ],\n }));\n\n // Common schemas\n server.resource('schemas://common', 'schemas://common', async (uri) => ({\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(schemas.common, null, 2),\n },\n ],\n }));\n}\n","/**\n * Auth Resources\n *\n * Provides access to @classic-homes/auth package documentation.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport authCatalog from '../data/auth-catalog.json' with { type: 'json' };\nimport type { AuthCatalog } from '../types.js';\n\nconst catalog = authCatalog as unknown as AuthCatalog;\n\n/**\n * Register auth-related resources\n */\nexport function registerAuthResources(server: McpServer): void {\n // Full auth catalog\n server.resource('Auth Package', 'auth://all', async (uri) => ({\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(catalog, null, 2),\n },\n ],\n }));\n\n // Core subpackage\n server.resource('Auth Core', 'auth://core', async (uri) => ({\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(\n {\n importPath: catalog.subpackages.core.importPath,\n description: catalog.subpackages.core.description,\n modules: catalog.subpackages.core.modules,\n types: catalog.subpackages.core.types,\n },\n null,\n 2\n ),\n },\n ],\n }));\n\n // Svelte subpackage\n server.resource('Auth Svelte', 'auth://svelte', async (uri) => ({\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(\n {\n importPath: catalog.subpackages.svelte.importPath,\n description: catalog.subpackages.svelte.description,\n modules: catalog.subpackages.svelte.modules,\n },\n null,\n 2\n ),\n },\n ],\n }));\n\n // Testing subpackage\n server.resource('Auth Testing', 'auth://testing', async (uri) => ({\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(\n {\n importPath: catalog.subpackages.testing.importPath,\n description: catalog.subpackages.testing.description,\n modules: catalog.subpackages.testing.modules,\n },\n null,\n 2\n ),\n },\n ],\n }));\n\n // Types only\n server.resource('Auth Types', 'auth://types', async (uri) => ({\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(\n {\n description: 'TypeScript types exported from @classic-homes/auth/core',\n types: catalog.subpackages.core.types,\n },\n null,\n 2\n ),\n },\n ],\n }));\n\n // API operations only\n server.resource('Auth API', 'auth://api', async (uri) => ({\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(\n {\n description: 'Auth API client methods from @classic-homes/auth/core',\n api: catalog.subpackages.core.modules.api,\n },\n null,\n 2\n ),\n },\n ],\n }));\n\n // Individual module access via template\n server.resource(\n 'Auth Module',\n new ResourceTemplate('auth://core/{module}', { list: undefined }),\n async (uri, params) => {\n const moduleName = params.module as string;\n const modules = catalog.subpackages.core.modules;\n const module = modules[moduleName as keyof typeof modules];\n\n if (!module) {\n const availableModules = Object.keys(modules);\n return {\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify({\n error: `Module \"${moduleName}\" not found`,\n availableModules,\n }),\n },\n ],\n };\n }\n\n return {\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(module, null, 2),\n },\n ],\n };\n }\n );\n\n // Quick reference for common operations\n server.resource('Auth Quick Reference', 'auth://quick-reference', async (uri) => ({\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(\n {\n description: 'Quick reference for common auth operations',\n initialization: {\n code: \"import { initAuth } from '@classic-homes/auth/core';\\n\\ninitAuth({ baseUrl: 'https://api.example.com' });\",\n description: 'Initialize the auth system with your API base URL',\n },\n login: {\n code: \"import { authApi, isMfaChallengeResponse } from '@classic-homes/auth/core';\\n\\nconst response = await authApi.login({ username: 'user@example.com', password: 'password' });\\nif (isMfaChallengeResponse(response)) {\\n // Handle MFA\\n}\",\n description: 'Login with username and password, handling MFA if required',\n },\n svelteStore: {\n code: \"import { isAuthenticated, currentUser, authActions } from '@classic-homes/auth/svelte';\\n\\n// In component\\n{#if $isAuthenticated}\\n <p>Welcome, {$currentUser.firstName}!</p>\\n{/if}\",\n description: 'Use reactive Svelte stores for auth state',\n },\n routeProtection: {\n code: \"import { requireAuth, requireRole } from '@classic-homes/auth/svelte';\\n\\n// In +page.ts or +layout.ts\\nexport const load = requireAuth();\\n// or\\nexport const load = requireRole('admin');\",\n description: 'Protect SvelteKit routes with auth guards',\n },\n testing: {\n code: \"import { setupTestAuth, mockUser, assertAuthenticated } from '@classic-homes/auth/testing';\\n\\nconst ctx = setupTestAuth();\\n// Run tests\\nctx.cleanup();\",\n description: 'Set up mocks for testing auth flows',\n },\n },\n null,\n 2\n ),\n },\n ],\n }));\n}\n","{\n \"version\": \"0.1.0\",\n \"packageName\": \"@classic-homes/auth\",\n \"description\": \"Authentication services and Svelte bindings for Classic Theme apps\",\n \"subpackages\": {\n \"core\": {\n \"importPath\": \"@classic-homes/auth/core\",\n \"description\": \"Framework-agnostic authentication core. Use this for direct API access or custom integrations.\",\n \"modules\": {\n \"config\": {\n \"description\": \"Authentication configuration and initialization\",\n \"functions\": [\n {\n \"name\": \"initAuth\",\n \"signature\": \"(config: AuthConfig) => void\",\n \"description\": \"Initialize the auth system with configuration options\",\n \"example\": \"import { initAuth } from '@classic-homes/auth/core';\\n\\ninitAuth({\\n baseUrl: 'https://api.example.com',\\n storage: localStorage,\\n sso: {\\n enabled: true,\\n authorizeUrl: 'https://sso.example.com/authorize'\\n }\\n});\"\n },\n {\n \"name\": \"getConfig\",\n \"signature\": \"() => AuthConfig\",\n \"description\": \"Get the current auth configuration\"\n },\n {\n \"name\": \"isInitialized\",\n \"signature\": \"() => boolean\",\n \"description\": \"Check if auth has been initialized\"\n },\n {\n \"name\": \"resetConfig\",\n \"signature\": \"() => void\",\n \"description\": \"Reset auth configuration to defaults\"\n },\n {\n \"name\": \"getDefaultStorage\",\n \"signature\": \"() => StorageAdapter\",\n \"description\": \"Get the default storage adapter (localStorage with fallback)\"\n },\n {\n \"name\": \"getStorage\",\n \"signature\": \"() => StorageAdapter\",\n \"description\": \"Get the configured storage adapter\"\n },\n {\n \"name\": \"getFetch\",\n \"signature\": \"() => typeof fetch\",\n \"description\": \"Get the configured fetch function\"\n }\n ],\n \"types\": [\n {\n \"name\": \"AuthConfig\",\n \"description\": \"Configuration options for auth initialization\",\n \"properties\": [\n { \"name\": \"baseUrl\", \"type\": \"string\", \"required\": true, \"description\": \"Base URL for auth API endpoints\" },\n { \"name\": \"storage\", \"type\": \"StorageAdapter\", \"required\": false, \"description\": \"Storage adapter for tokens\" },\n { \"name\": \"fetch\", \"type\": \"typeof fetch\", \"required\": false, \"description\": \"Custom fetch implementation\" },\n { \"name\": \"sso\", \"type\": \"SSOConfig\", \"required\": false, \"description\": \"SSO configuration\" }\n ]\n },\n {\n \"name\": \"SSOConfig\",\n \"description\": \"SSO provider configuration\",\n \"properties\": [\n { \"name\": \"enabled\", \"type\": \"boolean\", \"required\": false, \"description\": \"Whether SSO is enabled\" },\n { \"name\": \"authorizeUrl\", \"type\": \"string\", \"required\": false, \"description\": \"SSO authorization URL\" }\n ]\n },\n {\n \"name\": \"StorageAdapter\",\n \"description\": \"Interface for token storage\",\n \"properties\": [\n { \"name\": \"getItem\", \"type\": \"(key: string) => string | null\", \"required\": true, \"description\": \"Get item from storage\" },\n { \"name\": \"setItem\", \"type\": \"(key: string, value: string) => void\", \"required\": true, \"description\": \"Set item in storage\" },\n { \"name\": \"removeItem\", \"type\": \"(key: string) => void\", \"required\": true, \"description\": \"Remove item from storage\" }\n ]\n }\n ]\n },\n \"client\": {\n \"description\": \"HTTP client utilities for API requests\",\n \"functions\": [\n {\n \"name\": \"api\",\n \"signature\": \"{ get, post, put, delete }\",\n \"description\": \"HTTP client object with methods for making API requests\"\n },\n {\n \"name\": \"apiRequest\",\n \"signature\": \"(url: string, options?: ApiRequestOptions) => Promise<Response>\",\n \"description\": \"Make an authenticated API request\"\n },\n {\n \"name\": \"extractData\",\n \"signature\": \"<T>(response: { data: T } | T) => T\",\n \"description\": \"Extract data from API response wrapper\"\n },\n {\n \"name\": \"getAccessToken\",\n \"signature\": \"() => string | null\",\n \"description\": \"Get the stored access token\"\n },\n {\n \"name\": \"getRefreshToken\",\n \"signature\": \"() => string | null\",\n \"description\": \"Get the stored refresh token\"\n },\n {\n \"name\": \"getSessionToken\",\n \"signature\": \"() => string | null\",\n \"description\": \"Get the stored session token\"\n },\n {\n \"name\": \"updateStoredTokens\",\n \"signature\": \"(tokens: { accessToken?: string; refreshToken?: string; sessionToken?: string }) => void\",\n \"description\": \"Update stored tokens\"\n },\n {\n \"name\": \"clearStoredAuth\",\n \"signature\": \"() => void\",\n \"description\": \"Clear all stored authentication data\"\n }\n ],\n \"types\": [\n {\n \"name\": \"ApiRequestOptions\",\n \"description\": \"Options for API requests\"\n },\n {\n \"name\": \"ApiResponse\",\n \"description\": \"Standard API response wrapper\"\n }\n ]\n },\n \"api\": {\n \"description\": \"Auth API client methods for all authentication endpoints\",\n \"functions\": [\n {\n \"name\": \"authApi.login\",\n \"signature\": \"(credentials: LoginCredentials) => Promise<LoginResponse>\",\n \"description\": \"Login with username and password\",\n \"example\": \"import { authApi } from '@classic-homes/auth/core';\\n\\nconst response = await authApi.login({\\n username: 'user@example.com',\\n password: 'password'\\n});\\n\\nif (response.requiresMFA) {\\n // Handle MFA challenge\\n} else {\\n // Login success\\n console.log(response.user);\\n}\"\n },\n {\n \"name\": \"authApi.logout\",\n \"signature\": \"() => Promise<LogoutResponse>\",\n \"description\": \"Logout the current user. Returns SSO logout URL if applicable.\"\n },\n {\n \"name\": \"authApi.register\",\n \"signature\": \"(data: RegisterData) => Promise<RegisterResponse>\",\n \"description\": \"Register a new user\"\n },\n {\n \"name\": \"authApi.forgotPassword\",\n \"signature\": \"(email: string) => Promise<void>\",\n \"description\": \"Request a password reset email\"\n },\n {\n \"name\": \"authApi.resetPassword\",\n \"signature\": \"(token: string, newPassword: string) => Promise<void>\",\n \"description\": \"Reset password with a token\"\n },\n {\n \"name\": \"authApi.refreshToken\",\n \"signature\": \"(refreshToken: string) => Promise<{ accessToken: string; refreshToken: string }>\",\n \"description\": \"Refresh the access token\"\n },\n {\n \"name\": \"authApi.initiateSSOLogin\",\n \"signature\": \"(options?: { callbackUrl?: string; redirectUrl?: string }) => void\",\n \"description\": \"Initiate SSO login by redirecting to the SSO provider\"\n },\n {\n \"name\": \"authApi.getProfile\",\n \"signature\": \"(customFetch?: typeof fetch) => Promise<User>\",\n \"description\": \"Get the current user's profile\"\n },\n {\n \"name\": \"authApi.updateProfile\",\n \"signature\": \"(data: ProfileUpdateData) => Promise<User>\",\n \"description\": \"Update the current user's profile\"\n },\n {\n \"name\": \"authApi.changePassword\",\n \"signature\": \"(data: ChangePasswordData) => Promise<void>\",\n \"description\": \"Change the current user's password\"\n },\n {\n \"name\": \"authApi.resendVerification\",\n \"signature\": \"() => Promise<void>\",\n \"description\": \"Resend email verification\"\n },\n {\n \"name\": \"authApi.verifyEmail\",\n \"signature\": \"(token: string) => Promise<{ message: string; user?: User }>\",\n \"description\": \"Verify email with a token\"\n },\n {\n \"name\": \"authApi.getSessions\",\n \"signature\": \"(customFetch?: typeof fetch) => Promise<{ sessions: Session[]; total: number }>\",\n \"description\": \"Get all active sessions\"\n },\n {\n \"name\": \"authApi.revokeSession\",\n \"signature\": \"(sessionId: string) => Promise<void>\",\n \"description\": \"Revoke a specific session\"\n },\n {\n \"name\": \"authApi.revokeAllSessions\",\n \"signature\": \"() => Promise<void>\",\n \"description\": \"Revoke all sessions except the current one\"\n },\n {\n \"name\": \"authApi.getApiKeys\",\n \"signature\": \"(customFetch?: typeof fetch) => Promise<{ apiKeys: ApiKey[] }>\",\n \"description\": \"Get all API keys\"\n },\n {\n \"name\": \"authApi.createApiKey\",\n \"signature\": \"(data: CreateApiKeyRequest) => Promise<CreateApiKeyResponse>\",\n \"description\": \"Create a new API key\"\n },\n {\n \"name\": \"authApi.revokeApiKey\",\n \"signature\": \"(keyId: string) => Promise<void>\",\n \"description\": \"Revoke an API key\"\n },\n {\n \"name\": \"authApi.updateApiKey\",\n \"signature\": \"(keyId: string, data: { name: string }) => Promise<void>\",\n \"description\": \"Update an API key's name\"\n },\n {\n \"name\": \"authApi.getMFAStatus\",\n \"signature\": \"() => Promise<MFAStatus>\",\n \"description\": \"Get MFA status for the current user\"\n },\n {\n \"name\": \"authApi.setupMFA\",\n \"signature\": \"() => Promise<MFASetupResponse>\",\n \"description\": \"Setup MFA (get QR code and backup codes)\"\n },\n {\n \"name\": \"authApi.verifyMFASetup\",\n \"signature\": \"(code: string) => Promise<void>\",\n \"description\": \"Verify MFA setup with a code\"\n },\n {\n \"name\": \"authApi.disableMFA\",\n \"signature\": \"(password: string) => Promise<void>\",\n \"description\": \"Disable MFA\"\n },\n {\n \"name\": \"authApi.verifyMFAChallenge\",\n \"signature\": \"(data: MFAChallengeData) => Promise<LoginResponse>\",\n \"description\": \"Verify MFA challenge during login\"\n },\n {\n \"name\": \"authApi.getDevices\",\n \"signature\": \"(customFetch?: typeof fetch) => Promise<{ devices: Device[] }>\",\n \"description\": \"Get all devices\"\n },\n {\n \"name\": \"authApi.trustDevice\",\n \"signature\": \"(deviceId: string) => Promise<void>\",\n \"description\": \"Trust a device\"\n },\n {\n \"name\": \"authApi.revokeDevice\",\n \"signature\": \"(deviceId: string) => Promise<void>\",\n \"description\": \"Revoke device trust\"\n },\n {\n \"name\": \"authApi.removeDevice\",\n \"signature\": \"(deviceId: string) => Promise<void>\",\n \"description\": \"Remove a device completely\"\n },\n {\n \"name\": \"authApi.approveDevice\",\n \"signature\": \"(token: string) => Promise<{ message: string; device?: Device }>\",\n \"description\": \"Approve a device with a token\"\n },\n {\n \"name\": \"authApi.blockDevice\",\n \"signature\": \"(token: string) => Promise<{ message: string; device?: Device }>\",\n \"description\": \"Block a device with a token\"\n },\n {\n \"name\": \"authApi.getPreferences\",\n \"signature\": \"(customFetch?: typeof fetch) => Promise<UserPreferences>\",\n \"description\": \"Get user preferences\"\n },\n {\n \"name\": \"authApi.updatePreferences\",\n \"signature\": \"(data: Partial<UserPreferences>) => Promise<void>\",\n \"description\": \"Update user preferences\"\n },\n {\n \"name\": \"authApi.getSSOAccounts\",\n \"signature\": \"(customFetch?: typeof fetch) => Promise<LinkedAccount[]>\",\n \"description\": \"Get SSO linked accounts\"\n },\n {\n \"name\": \"authApi.unlinkSSOAccount\",\n \"signature\": \"(provider: string, password?: string) => Promise<void>\",\n \"description\": \"Unlink an SSO account\"\n },\n {\n \"name\": \"authApi.linkSSOAccount\",\n \"signature\": \"(provider?: string) => Promise<void>\",\n \"description\": \"Link an SSO account (redirects to SSO provider)\"\n },\n {\n \"name\": \"authApi.getSecurityEvents\",\n \"signature\": \"(params?: { page?: number; limit?: number; type?: string }, customFetch?: typeof fetch) => Promise<{ events: SecurityEvent[]; pagination: Pagination }>\",\n \"description\": \"Get security event history\"\n },\n {\n \"name\": \"authApi.getApiKey\",\n \"signature\": \"(keyId: string, customFetch?: typeof fetch) => Promise<ApiKey>\",\n \"description\": \"Get details for a specific API key\"\n },\n {\n \"name\": \"authApi.getMfaMethods\",\n \"signature\": \"() => Promise<MfaMethodsStatus>\",\n \"description\": \"Get available MFA methods and their status\"\n },\n {\n \"name\": \"authApi.setupMfaMethod\",\n \"signature\": \"(method: 'totp' | 'email') => Promise<MfaMethodSetupResponse>\",\n \"description\": \"Setup a specific MFA method\"\n },\n {\n \"name\": \"authApi.verifyMfaMethod\",\n \"signature\": \"(method: 'totp' | 'email', code: string) => Promise<{ success: boolean; message: string; backupCodes?: string[] }>\",\n \"description\": \"Verify and enable a specific MFA method\"\n },\n {\n \"name\": \"authApi.disableMfaMethod\",\n \"signature\": \"(method: 'totp' | 'email', options: { password?: string; code?: string }) => Promise<void>\",\n \"description\": \"Disable a specific MFA method\"\n },\n {\n \"name\": \"authApi.sendMfaEmailCode\",\n \"signature\": \"() => Promise<{ success: boolean; email: string; message: string }>\",\n \"description\": \"Send MFA verification code via email\"\n },\n {\n \"name\": \"authApi.getSecurityOverview\",\n \"signature\": \"(customFetch?: typeof fetch) => Promise<SecurityOverview>\",\n \"description\": \"Get security overview with recent events and device counts\"\n },\n {\n \"name\": \"authApi.getSecuritySummary\",\n \"signature\": \"(customFetch?: typeof fetch) => Promise<SecuritySummary>\",\n \"description\": \"Get security summary with score and recommendations\"\n },\n {\n \"name\": \"authApi.getTrustedDevices\",\n \"signature\": \"(customFetch?: typeof fetch) => Promise<{ devices: Device[]; total: number }>\",\n \"description\": \"Get list of trusted devices\"\n }\n ]\n },\n \"service\": {\n \"description\": \"Auth service with automatic store updates\",\n \"functions\": [\n {\n \"name\": \"AuthService\",\n \"signature\": \"class\",\n \"description\": \"Service class that wraps auth API and updates stores automatically\",\n \"example\": \"import { authService } from '@classic-homes/auth/core';\\n\\n// Use the singleton instance\\nconst response = await authService.login({\\n username: 'user@example.com',\\n password: 'password'\\n});\\n\\n// Or create your own instance\\nconst service = new AuthService({ storeUpdate: myStoreUpdateFn });\"\n },\n {\n \"name\": \"authService\",\n \"signature\": \"AuthService\",\n \"description\": \"Singleton instance of AuthService\"\n }\n ],\n \"types\": [\n {\n \"name\": \"LoginOptions\",\n \"description\": \"Options for login operation\",\n \"properties\": [\n { \"name\": \"updateStore\", \"type\": \"boolean\", \"required\": false, \"description\": \"Whether to update auth store\" }\n ]\n },\n {\n \"name\": \"MFAVerifyOptions\",\n \"description\": \"Options for MFA verification\",\n \"properties\": [\n { \"name\": \"updateStore\", \"type\": \"boolean\", \"required\": false, \"description\": \"Whether to update auth store\" }\n ]\n }\n ]\n },\n \"guards\": {\n \"description\": \"Type guards for auth responses\",\n \"functions\": [\n {\n \"name\": \"isMfaChallengeResponse\",\n \"signature\": \"(response: LoginResponse) => boolean\",\n \"description\": \"Check if a login response requires MFA verification\",\n \"example\": \"import { authApi, isMfaChallengeResponse } from '@classic-homes/auth/core';\\n\\nconst response = await authApi.login(credentials);\\n\\nif (isMfaChallengeResponse(response)) {\\n // Redirect to MFA verification\\n const mfaToken = getMfaToken(response);\\n} else {\\n // Login complete\\n}\"\n },\n {\n \"name\": \"isLoginSuccessResponse\",\n \"signature\": \"(response: LoginResponse) => boolean\",\n \"description\": \"Check if a login response is a success (not MFA challenge)\"\n },\n {\n \"name\": \"getMfaToken\",\n \"signature\": \"(response: LoginResponse) => string | undefined\",\n \"description\": \"Extract MFA token from a login response\"\n },\n {\n \"name\": \"getAvailableMethods\",\n \"signature\": \"(response: LoginResponse) => string[]\",\n \"description\": \"Get available MFA methods from a login response\"\n }\n ]\n },\n \"jwt\": {\n \"description\": \"JWT token utilities\",\n \"functions\": [\n {\n \"name\": \"decodeJWT\",\n \"signature\": \"(token: string) => JWTPayload | null\",\n \"description\": \"Decode a JWT token without verification\",\n \"example\": \"import { decodeJWT, isTokenExpired } from '@classic-homes/auth/core';\\n\\nconst payload = decodeJWT(accessToken);\\nif (payload && !isTokenExpired(accessToken)) {\\n console.log('User ID:', payload.sub);\\n console.log('Expires:', new Date(payload.exp * 1000));\\n}\"\n },\n {\n \"name\": \"isTokenExpired\",\n \"signature\": \"(token: string) => boolean\",\n \"description\": \"Check if a JWT token is expired\"\n },\n {\n \"name\": \"getTokenRemainingTime\",\n \"signature\": \"(token: string) => number\",\n \"description\": \"Get remaining time in milliseconds until token expires\"\n },\n {\n \"name\": \"getTokenExpiration\",\n \"signature\": \"(token: string) => Date | null\",\n \"description\": \"Get the expiration date of a token\"\n },\n {\n \"name\": \"extractClaims\",\n \"signature\": \"<T extends object>(token: string) => T | null\",\n \"description\": \"Extract custom claims from a JWT token\"\n }\n ],\n \"types\": [\n {\n \"name\": \"JWTPayload\",\n \"description\": \"Standard JWT payload structure\",\n \"properties\": [\n { \"name\": \"sub\", \"type\": \"string\", \"required\": true, \"description\": \"Subject (user ID)\" },\n { \"name\": \"exp\", \"type\": \"number\", \"required\": true, \"description\": \"Expiration timestamp\" },\n { \"name\": \"iat\", \"type\": \"number\", \"required\": true, \"description\": \"Issued at timestamp\" },\n { \"name\": \"iss\", \"type\": \"string\", \"required\": false, \"description\": \"Issuer\" },\n { \"name\": \"aud\", \"type\": \"string | string[]\", \"required\": false, \"description\": \"Audience\" }\n ]\n }\n ]\n }\n },\n \"types\": [\n {\n \"name\": \"User\",\n \"description\": \"User information\",\n \"properties\": [\n { \"name\": \"id\", \"type\": \"string\", \"required\": true, \"description\": \"User ID\" },\n { \"name\": \"username\", \"type\": \"string\", \"required\": true, \"description\": \"Username\" },\n { \"name\": \"email\", \"type\": \"string\", \"required\": true, \"description\": \"Email address\" },\n { \"name\": \"firstName\", \"type\": \"string\", \"required\": false, \"description\": \"First name\" },\n { \"name\": \"lastName\", \"type\": \"string\", \"required\": false, \"description\": \"Last name\" },\n { \"name\": \"phone\", \"type\": \"string\", \"required\": false, \"description\": \"Phone number\" },\n { \"name\": \"role\", \"type\": \"string\", \"required\": true, \"description\": \"Primary role\" },\n { \"name\": \"roles\", \"type\": \"string[]\", \"required\": false, \"description\": \"All assigned roles\" },\n { \"name\": \"permissions\", \"type\": \"string[]\", \"required\": true, \"description\": \"User permissions\" },\n { \"name\": \"isActive\", \"type\": \"boolean\", \"required\": true, \"description\": \"Whether user is active\" },\n { \"name\": \"emailVerified\", \"type\": \"boolean\", \"required\": true, \"description\": \"Whether email is verified\" },\n { \"name\": \"authMethod\", \"type\": \"'password' | 'oauth' | 'both'\", \"required\": false, \"description\": \"Authentication method\" },\n { \"name\": \"ssoProfileUrl\", \"type\": \"string\", \"required\": false, \"description\": \"SSO profile URL\" },\n { \"name\": \"createdAt\", \"type\": \"string\", \"required\": true, \"description\": \"Creation timestamp\" },\n { \"name\": \"lastLoginAt\", \"type\": \"string\", \"required\": false, \"description\": \"Last login timestamp\" }\n ]\n },\n {\n \"name\": \"AuthState\",\n \"description\": \"Current authentication state\",\n \"properties\": [\n { \"name\": \"accessToken\", \"type\": \"string | null\", \"required\": true, \"description\": \"Current access token\" },\n { \"name\": \"refreshToken\", \"type\": \"string | null\", \"required\": true, \"description\": \"Current refresh token\" },\n { \"name\": \"user\", \"type\": \"User | null\", \"required\": true, \"description\": \"Current user\" },\n { \"name\": \"isAuthenticated\", \"type\": \"boolean\", \"required\": true, \"description\": \"Whether user is authenticated\" }\n ]\n },\n {\n \"name\": \"LoginCredentials\",\n \"description\": \"Login credentials\",\n \"properties\": [\n { \"name\": \"username\", \"type\": \"string\", \"required\": true, \"description\": \"Username or email\" },\n { \"name\": \"password\", \"type\": \"string\", \"required\": true, \"description\": \"Password\" }\n ]\n },\n {\n \"name\": \"LoginResponse\",\n \"description\": \"Response from login API\",\n \"properties\": [\n { \"name\": \"accessToken\", \"type\": \"string\", \"required\": true, \"description\": \"Access token\" },\n { \"name\": \"refreshToken\", \"type\": \"string\", \"required\": true, \"description\": \"Refresh token\" },\n { \"name\": \"sessionToken\", \"type\": \"string\", \"required\": false, \"description\": \"Session token\" },\n { \"name\": \"user\", \"type\": \"User\", \"required\": true, \"description\": \"User info\" },\n { \"name\": \"expiresIn\", \"type\": \"number\", \"required\": true, \"description\": \"Token expiration in seconds\" },\n { \"name\": \"requiresMFA\", \"type\": \"boolean\", \"required\": false, \"description\": \"Whether MFA is required\" },\n { \"name\": \"mfaToken\", \"type\": \"string\", \"required\": false, \"description\": \"MFA challenge token\" },\n { \"name\": \"availableMethods\", \"type\": \"string[]\", \"required\": false, \"description\": \"Available MFA methods\" }\n ]\n },\n {\n \"name\": \"Session\",\n \"description\": \"User session information\",\n \"properties\": [\n { \"name\": \"id\", \"type\": \"string\", \"required\": true, \"description\": \"Session ID\" },\n { \"name\": \"deviceName\", \"type\": \"string\", \"required\": true, \"description\": \"Device name\" },\n { \"name\": \"browser\", \"type\": \"string\", \"required\": true, \"description\": \"Browser info\" },\n { \"name\": \"location\", \"type\": \"string\", \"required\": true, \"description\": \"Location\" },\n { \"name\": \"ipAddress\", \"type\": \"string\", \"required\": true, \"description\": \"IP address\" },\n { \"name\": \"lastActivity\", \"type\": \"string\", \"required\": true, \"description\": \"Last activity timestamp\" },\n { \"name\": \"isCurrent\", \"type\": \"boolean\", \"required\": true, \"description\": \"Whether this is the current session\" },\n { \"name\": \"isTrusted\", \"type\": \"boolean\", \"required\": true, \"description\": \"Whether device is trusted\" },\n { \"name\": \"createdAt\", \"type\": \"string\", \"required\": true, \"description\": \"Session creation time\" },\n { \"name\": \"expiresAt\", \"type\": \"string\", \"required\": true, \"description\": \"Session expiration time\" }\n ]\n },\n {\n \"name\": \"Device\",\n \"description\": \"Device information\",\n \"properties\": [\n { \"name\": \"id\", \"type\": \"string\", \"required\": true, \"description\": \"Device ID\" },\n { \"name\": \"deviceFingerprint\", \"type\": \"string\", \"required\": true, \"description\": \"Device fingerprint\" },\n { \"name\": \"deviceName\", \"type\": \"string\", \"required\": true, \"description\": \"Device name\" },\n { \"name\": \"trusted\", \"type\": \"boolean\", \"required\": true, \"description\": \"Whether device is trusted\" },\n { \"name\": \"status\", \"type\": \"'active' | 'revoked'\", \"required\": true, \"description\": \"Device status\" },\n { \"name\": \"lastSeen\", \"type\": \"string | null\", \"required\": false, \"description\": \"Last seen timestamp\" },\n { \"name\": \"createdAt\", \"type\": \"string\", \"required\": true, \"description\": \"Creation timestamp\" }\n ]\n },\n {\n \"name\": \"ApiKey\",\n \"description\": \"API key information\",\n \"properties\": [\n { \"name\": \"id\", \"type\": \"string\", \"required\": true, \"description\": \"API key ID\" },\n { \"name\": \"name\", \"type\": \"string\", \"required\": true, \"description\": \"Key name\" },\n { \"name\": \"description\", \"type\": \"string\", \"required\": false, \"description\": \"Key description\" },\n { \"name\": \"keyPreview\", \"type\": \"string\", \"required\": true, \"description\": \"Partial key preview\" },\n { \"name\": \"permissions\", \"type\": \"string[]\", \"required\": true, \"description\": \"Key permissions\" },\n { \"name\": \"isActive\", \"type\": \"boolean\", \"required\": true, \"description\": \"Whether key is active\" },\n { \"name\": \"expiresAt\", \"type\": \"string | null\", \"required\": false, \"description\": \"Expiration date\" },\n { \"name\": \"lastUsedAt\", \"type\": \"string | null\", \"required\": false, \"description\": \"Last used timestamp\" },\n { \"name\": \"createdAt\", \"type\": \"string\", \"required\": true, \"description\": \"Creation timestamp\" }\n ]\n },\n {\n \"name\": \"MFASetupResponse\",\n \"description\": \"MFA setup response with QR code and backup codes\",\n \"properties\": [\n { \"name\": \"qrCodeUrl\", \"type\": \"string\", \"required\": true, \"description\": \"QR code image URL\" },\n { \"name\": \"manualEntryKey\", \"type\": \"string\", \"required\": true, \"description\": \"Manual entry key for authenticator apps\" },\n { \"name\": \"backupCodes\", \"type\": \"string[]\", \"required\": true, \"description\": \"One-time backup codes\" },\n { \"name\": \"instructions\", \"type\": \"object\", \"required\": true, \"description\": \"Setup instructions\" }\n ]\n },\n {\n \"name\": \"MFAStatus\",\n \"description\": \"MFA status for user\",\n \"properties\": [\n { \"name\": \"enabled\", \"type\": \"boolean\", \"required\": true, \"description\": \"Whether MFA is enabled\" },\n { \"name\": \"setupRequired\", \"type\": \"boolean\", \"required\": true, \"description\": \"Whether MFA setup is required\" }\n ]\n },\n {\n \"name\": \"MfaMethodsStatus\",\n \"description\": \"Available MFA methods and their status\",\n \"properties\": [\n { \"name\": \"methods\", \"type\": \"{ totp: { enabled: boolean; configured: boolean }; email: { enabled: boolean; configured: boolean } }\", \"required\": true, \"description\": \"Status of each MFA method\" },\n { \"name\": \"mfaRequired\", \"type\": \"boolean\", \"required\": true, \"description\": \"Whether MFA is required overall\" }\n ]\n },\n {\n \"name\": \"MfaMethodSetupResponse\",\n \"description\": \"Response from MFA method setup\",\n \"properties\": [\n { \"name\": \"method\", \"type\": \"'totp' | 'email'\", \"required\": true, \"description\": \"MFA method being set up\" },\n { \"name\": \"qrCodeUrl\", \"type\": \"string\", \"required\": false, \"description\": \"QR code URL for TOTP\" },\n { \"name\": \"manualEntryKey\", \"type\": \"string\", \"required\": false, \"description\": \"Manual entry key for TOTP\" },\n { \"name\": \"backupCodes\", \"type\": \"string[]\", \"required\": false, \"description\": \"Backup codes for TOTP\" },\n { \"name\": \"email\", \"type\": \"string\", \"required\": false, \"description\": \"Masked email for email method\" },\n { \"name\": \"message\", \"type\": \"string\", \"required\": false, \"description\": \"Status message\" }\n ]\n },\n {\n \"name\": \"SecurityOverview\",\n \"description\": \"Security overview for the user\",\n \"properties\": [\n { \"name\": \"overview\", \"type\": \"{ trustedDevicesCount: number; recentEventsCount: number }\", \"required\": true, \"description\": \"Security counts\" },\n { \"name\": \"recentEvents\", \"type\": \"SecurityEvent[]\", \"required\": true, \"description\": \"Recent security events\" },\n { \"name\": \"devicesEndpoint\", \"type\": \"string\", \"required\": true, \"description\": \"Endpoint for device management\" }\n ]\n },\n {\n \"name\": \"SecuritySummary\",\n \"description\": \"Security summary with score and recommendations\",\n \"properties\": [\n { \"name\": \"mfa\", \"type\": \"{ enabled: boolean; recommended: boolean }\", \"required\": true, \"description\": \"MFA status\" },\n { \"name\": \"devices\", \"type\": \"{ total: number; trusted: number; untrusted: number }\", \"required\": true, \"description\": \"Device counts\" },\n { \"name\": \"recentActivity\", \"type\": \"{ period: string; events: Record<string, number>; totalEvents: number }\", \"required\": true, \"description\": \"Recent activity summary\" },\n { \"name\": \"securityScore\", \"type\": \"{ score: number; level: string; recommendations: string[] }\", \"required\": true, \"description\": \"Security score and recommendations\" }\n ]\n },\n {\n \"name\": \"MFAChallengeData\",\n \"description\": \"Data for MFA challenge verification\",\n \"properties\": [\n { \"name\": \"mfaToken\", \"type\": \"string\", \"required\": true, \"description\": \"MFA challenge token from login\" },\n { \"name\": \"code\", \"type\": \"string\", \"required\": true, \"description\": \"MFA code from authenticator\" },\n { \"name\": \"method\", \"type\": \"'totp' | 'email' | 'backup'\", \"required\": false, \"description\": \"MFA method\" },\n { \"name\": \"trustDevice\", \"type\": \"boolean\", \"required\": false, \"description\": \"Whether to trust this device\" }\n ]\n },\n {\n \"name\": \"UserPreferences\",\n \"description\": \"User preference settings\",\n \"properties\": [\n { \"name\": \"emailNotifications\", \"type\": \"boolean\", \"required\": true, \"description\": \"Email notifications enabled\" },\n { \"name\": \"securityAlerts\", \"type\": \"boolean\", \"required\": true, \"description\": \"Security alerts enabled\" },\n { \"name\": \"loginNotifications\", \"type\": \"boolean\", \"required\": true, \"description\": \"Login notifications enabled\" },\n { \"name\": \"suspiciousActivityAlerts\", \"type\": \"boolean\", \"required\": true, \"description\": \"Suspicious activity alerts\" },\n { \"name\": \"passwordChangeNotifications\", \"type\": \"boolean\", \"required\": true, \"description\": \"Password change notifications\" },\n { \"name\": \"mfaChangeNotifications\", \"type\": \"boolean\", \"required\": true, \"description\": \"MFA change notifications\" },\n { \"name\": \"accountUpdates\", \"type\": \"boolean\", \"required\": true, \"description\": \"Account updates enabled\" },\n { \"name\": \"systemMaintenance\", \"type\": \"boolean\", \"required\": true, \"description\": \"System maintenance notifications\" },\n { \"name\": \"featureAnnouncements\", \"type\": \"boolean\", \"required\": true, \"description\": \"Feature announcements\" },\n { \"name\": \"newsAndUpdates\", \"type\": \"boolean\", \"required\": true, \"description\": \"News and updates\" },\n { \"name\": \"apiKeyExpiration\", \"type\": \"boolean\", \"required\": true, \"description\": \"API key expiration alerts\" },\n { \"name\": \"apiUsageAlerts\", \"type\": \"boolean\", \"required\": true, \"description\": \"API usage alerts\" },\n { \"name\": \"rateLimit\", \"type\": \"boolean\", \"required\": true, \"description\": \"Rate limit notifications\" },\n { \"name\": \"dataExportReady\", \"type\": \"boolean\", \"required\": true, \"description\": \"Data export ready notifications\" },\n { \"name\": \"reportGeneration\", \"type\": \"boolean\", \"required\": true, \"description\": \"Report generation notifications\" },\n { \"name\": \"theme\", \"type\": \"'light' | 'dark' | 'system'\", \"required\": true, \"description\": \"UI theme preference\" },\n { \"name\": \"language\", \"type\": \"string\", \"required\": true, \"description\": \"Language preference\" },\n { \"name\": \"timezone\", \"type\": \"string\", \"required\": true, \"description\": \"Timezone preference\" },\n { \"name\": \"dateFormat\", \"type\": \"string\", \"required\": true, \"description\": \"Date format preference\" },\n { \"name\": \"timeFormat\", \"type\": \"'12h' | '24h'\", \"required\": true, \"description\": \"Time format preference\" },\n { \"name\": \"advancedSettings\", \"type\": \"Record<string, any> | null\", \"required\": false, \"description\": \"Advanced settings\" }\n ]\n },\n {\n \"name\": \"LinkedAccount\",\n \"description\": \"SSO linked account\",\n \"properties\": [\n { \"name\": \"id\", \"type\": \"string\", \"required\": true, \"description\": \"Account ID\" },\n { \"name\": \"provider\", \"type\": \"string\", \"required\": true, \"description\": \"SSO provider name\" },\n { \"name\": \"providerAccountId\", \"type\": \"string\", \"required\": true, \"description\": \"Provider account ID\" },\n { \"name\": \"providerEmail\", \"type\": \"string | null\", \"required\": false, \"description\": \"Provider email\" },\n { \"name\": \"isPrimary\", \"type\": \"boolean\", \"required\": true, \"description\": \"Whether this is primary account\" },\n { \"name\": \"isVerified\", \"type\": \"boolean\", \"required\": true, \"description\": \"Whether account is verified\" },\n { \"name\": \"createdAt\", \"type\": \"string\", \"required\": true, \"description\": \"Link creation time\" }\n ]\n },\n {\n \"name\": \"SecurityEvent\",\n \"description\": \"Security event log entry\",\n \"properties\": [\n { \"name\": \"id\", \"type\": \"string\", \"required\": true, \"description\": \"Event ID\" },\n { \"name\": \"eventType\", \"type\": \"string\", \"required\": true, \"description\": \"Event type\" },\n { \"name\": \"description\", \"type\": \"string\", \"required\": true, \"description\": \"Event description\" },\n { \"name\": \"severity\", \"type\": \"'low' | 'medium' | 'high'\", \"required\": true, \"description\": \"Event severity\" },\n { \"name\": \"ipAddress\", \"type\": \"string\", \"required\": false, \"description\": \"Source IP address\" },\n { \"name\": \"createdAt\", \"type\": \"string\", \"required\": true, \"description\": \"Event timestamp\" }\n ]\n }\n ]\n },\n \"svelte\": {\n \"importPath\": \"@classic-homes/auth/svelte\",\n \"description\": \"Svelte-specific bindings for authentication. Includes reactive stores and route guards.\",\n \"modules\": {\n \"stores\": {\n \"description\": \"Reactive Svelte stores for auth state\",\n \"functions\": [\n {\n \"name\": \"authStore\",\n \"signature\": \"Writable<AuthState>\",\n \"description\": \"Main auth store containing current auth state\",\n \"example\": \"import { authStore } from '@classic-homes/auth/svelte';\\n\\n// Subscribe to auth state changes\\nauthStore.subscribe(state => {\\n console.log('Authenticated:', state.isAuthenticated);\\n console.log('User:', state.user);\\n});\\n\\n// In Svelte component\\n<script>\\n import { authStore } from '@classic-homes/auth/svelte';\\n</script>\\n\\n{#if $authStore.isAuthenticated}\\n <p>Welcome, {$authStore.user.firstName}!</p>\\n{/if}\"\n },\n {\n \"name\": \"isAuthenticated\",\n \"signature\": \"Readable<boolean>\",\n \"description\": \"Derived store for authentication status\",\n \"example\": \"import { isAuthenticated } from '@classic-homes/auth/svelte';\\n\\n// In Svelte component\\n{#if $isAuthenticated}\\n <Dashboard />\\n{:else}\\n <LoginForm />\\n{/if}\"\n },\n {\n \"name\": \"currentUser\",\n \"signature\": \"Readable<User | null>\",\n \"description\": \"Derived store for current user\"\n },\n {\n \"name\": \"authActions\",\n \"signature\": \"{ login, logout, refreshToken, updateUser, clearAuth }\",\n \"description\": \"Auth action functions that update the store\",\n \"example\": \"import { authActions } from '@classic-homes/auth/svelte';\\n\\nasync function handleLogin(credentials) {\\n const response = await authActions.login(credentials);\\n if (response.requiresMFA) {\\n // Handle MFA\\n }\\n}\\n\\nfunction handleLogout() {\\n await authActions.logout();\\n}\"\n }\n ]\n },\n \"guards\": {\n \"description\": \"SvelteKit route guards for protected pages\",\n \"functions\": [\n {\n \"name\": \"checkAuth\",\n \"signature\": \"(fetch: typeof fetch) => Promise<AuthGuardResult>\",\n \"description\": \"Check authentication status\",\n \"example\": \"import { checkAuth } from '@classic-homes/auth/svelte';\\n\\nexport const load = async ({ fetch }) => {\\n const auth = await checkAuth(fetch);\\n return { user: auth.user };\\n};\"\n },\n {\n \"name\": \"requireAuth\",\n \"signature\": \"(options?: AuthGuardOptions) => (event: LoadEvent) => Promise<AuthGuardResult>\",\n \"description\": \"Guard that requires authentication\",\n \"example\": \"import { requireAuth } from '@classic-homes/auth/svelte';\\n\\nexport const load = requireAuth({\\n redirectTo: '/login'\\n});\"\n },\n {\n \"name\": \"requireRole\",\n \"signature\": \"(roles: string | string[], options?: AuthGuardOptions) => (event: LoadEvent) => Promise<AuthGuardResult>\",\n \"description\": \"Guard that requires specific role(s)\",\n \"example\": \"import { requireRole } from '@classic-homes/auth/svelte';\\n\\n// Single role\\nexport const load = requireRole('admin');\\n\\n// Multiple roles (any match)\\nexport const load = requireRole(['admin', 'manager']);\"\n },\n {\n \"name\": \"requirePermission\",\n \"signature\": \"(permissions: string | string[], options?: AuthGuardOptions) => (event: LoadEvent) => Promise<AuthGuardResult>\",\n \"description\": \"Guard that requires specific permission(s)\",\n \"example\": \"import { requirePermission } from '@classic-homes/auth/svelte';\\n\\nexport const load = requirePermission('users:write');\"\n },\n {\n \"name\": \"protectedLoad\",\n \"signature\": \"<T>(loadFn: (event: LoadEvent, auth: AuthGuardResult) => Promise<T>, options?: AuthGuardOptions) => (event: LoadEvent) => Promise<T>\",\n \"description\": \"Wrapper for load functions that require auth\",\n \"example\": \"import { protectedLoad } from '@classic-homes/auth/svelte';\\n\\nexport const load = protectedLoad(async (event, auth) => {\\n // Auth is guaranteed to be valid here\\n const data = await fetchUserData(event.fetch, auth.user.id);\\n return { user: auth.user, data };\\n});\"\n },\n {\n \"name\": \"createAuthGuard\",\n \"signature\": \"(checkFn: (auth: AuthGuardResult) => boolean, options?: AuthGuardOptions) => (event: LoadEvent) => Promise<AuthGuardResult>\",\n \"description\": \"Create a custom auth guard with your own check function\"\n }\n ],\n \"types\": [\n {\n \"name\": \"AuthGuardOptions\",\n \"description\": \"Options for auth guards\",\n \"properties\": [\n { \"name\": \"redirectTo\", \"type\": \"string\", \"required\": false, \"description\": \"URL to redirect to if auth fails (default: '/login')\" },\n { \"name\": \"returnTo\", \"type\": \"boolean\", \"required\": false, \"description\": \"Whether to include return URL in redirect\" }\n ]\n },\n {\n \"name\": \"AuthGuardResult\",\n \"description\": \"Result from auth guard check\",\n \"properties\": [\n { \"name\": \"authenticated\", \"type\": \"boolean\", \"required\": true, \"description\": \"Whether user is authenticated\" },\n { \"name\": \"user\", \"type\": \"User | null\", \"required\": true, \"description\": \"Current user if authenticated\" }\n ]\n }\n ]\n }\n }\n },\n \"testing\": {\n \"importPath\": \"@classic-homes/auth/testing\",\n \"description\": \"Test utilities for the auth package. Provides mocks, fixtures, and helpers for testing authentication flows.\",\n \"modules\": {\n \"fixtures\": {\n \"description\": \"Pre-built test fixtures for users, tokens, and responses\",\n \"functions\": [\n {\n \"name\": \"mockUser\",\n \"signature\": \"User\",\n \"description\": \"Standard test user fixture\"\n },\n {\n \"name\": \"mockAdminUser\",\n \"signature\": \"User\",\n \"description\": \"Admin user fixture with elevated permissions\"\n },\n {\n \"name\": \"mockSSOUser\",\n \"signature\": \"User\",\n \"description\": \"SSO-authenticated user fixture\"\n },\n {\n \"name\": \"mockMFAUser\",\n \"signature\": \"User\",\n \"description\": \"User with MFA enabled\"\n },\n {\n \"name\": \"mockUnverifiedUser\",\n \"signature\": \"User\",\n \"description\": \"User with unverified email\"\n },\n {\n \"name\": \"mockInactiveUser\",\n \"signature\": \"User\",\n \"description\": \"Inactive/disabled user\"\n },\n {\n \"name\": \"createMockUser\",\n \"signature\": \"(overrides?: Partial<User>) => User\",\n \"description\": \"Create a custom mock user\"\n },\n {\n \"name\": \"createMockUserWithRoles\",\n \"signature\": \"(roles: string[], permissions?: string[]) => User\",\n \"description\": \"Create a user with specific roles\"\n },\n {\n \"name\": \"mockAccessToken\",\n \"signature\": \"string\",\n \"description\": \"Valid mock access token\"\n },\n {\n \"name\": \"mockRefreshToken\",\n \"signature\": \"string\",\n \"description\": \"Valid mock refresh token\"\n },\n {\n \"name\": \"mockExpiredToken\",\n \"signature\": \"string\",\n \"description\": \"Expired token for testing\"\n },\n {\n \"name\": \"mockMFAToken\",\n \"signature\": \"string\",\n \"description\": \"MFA challenge token\"\n },\n {\n \"name\": \"createMockJWT\",\n \"signature\": \"(payload?: JWTPayloadOptions) => string\",\n \"description\": \"Create a custom mock JWT\"\n },\n {\n \"name\": \"mockLoginSuccess\",\n \"signature\": \"LoginResponse\",\n \"description\": \"Successful login response\"\n },\n {\n \"name\": \"mockMFARequired\",\n \"signature\": \"LoginResponse\",\n \"description\": \"Login response requiring MFA\"\n },\n {\n \"name\": \"mockMFASetup\",\n \"signature\": \"MFASetupResponse\",\n \"description\": \"MFA setup response with QR code\"\n },\n {\n \"name\": \"mockSessions\",\n \"signature\": \"Session[]\",\n \"description\": \"Array of mock sessions\"\n },\n {\n \"name\": \"mockDevices\",\n \"signature\": \"Device[]\",\n \"description\": \"Array of mock devices\"\n },\n {\n \"name\": \"mockApiKeys\",\n \"signature\": \"ApiKey[]\",\n \"description\": \"Array of mock API keys\"\n },\n {\n \"name\": \"mockSecurityEvents\",\n \"signature\": \"SecurityEvent[]\",\n \"description\": \"Array of mock security events\"\n },\n {\n \"name\": \"mockUserPreferences\",\n \"signature\": \"UserPreferences\",\n \"description\": \"Mock user preferences\"\n }\n ]\n },\n \"mocks\": {\n \"description\": \"Mock implementations for testing\",\n \"functions\": [\n {\n \"name\": \"MockStorageAdapter\",\n \"signature\": \"class\",\n \"description\": \"Mock storage adapter with call tracking\",\n \"example\": \"import { MockStorageAdapter, createMockStorage } from '@classic-homes/auth/testing';\\n\\nconst storage = createMockStorage();\\n\\n// Use in auth init\\ninitAuth({ baseUrl: 'https://api.test', storage });\\n\\n// Assert calls\\nexpect(storage.getCalls('setItem')).toHaveLength(2);\"\n },\n {\n \"name\": \"createMockStorage\",\n \"signature\": \"(options?: MockStorageOptions) => MockStorageAdapter\",\n \"description\": \"Create a mock storage adapter\"\n },\n {\n \"name\": \"createMockStorageWithAuth\",\n \"signature\": \"(tokens?: { accessToken?: string; refreshToken?: string }) => MockStorageAdapter\",\n \"description\": \"Create storage pre-populated with auth tokens\"\n },\n {\n \"name\": \"MockFetchInstance\",\n \"signature\": \"class\",\n \"description\": \"Mock fetch implementation with route handling\",\n \"example\": \"import { createMockFetch, mockLoginSuccess } from '@classic-homes/auth/testing';\\n\\nconst mockFetch = createMockFetch();\\nmockFetch.addRoute('POST', '/auth/login', { data: mockLoginSuccess });\\n\\n// Use in auth init\\ninitAuth({ baseUrl: 'https://api.test', fetch: mockFetch.fetch });\\n\\n// Assert calls\\nmockFetch.assertCalled('/auth/login');\\nmockFetch.assertCalledWith('/auth/login', { body: { username: 'test' } });\"\n },\n {\n \"name\": \"createMockFetch\",\n \"signature\": \"(options?: MockFetchOptions) => MockFetchInstance\",\n \"description\": \"Create a mock fetch instance\"\n },\n {\n \"name\": \"createMockFetchWithRoutes\",\n \"signature\": \"(routes: MockRoute[]) => MockFetchInstance\",\n \"description\": \"Create mock fetch with pre-configured routes\"\n },\n {\n \"name\": \"MockAuthStore\",\n \"signature\": \"class\",\n \"description\": \"Mock auth store for Svelte testing\"\n },\n {\n \"name\": \"createMockAuthStore\",\n \"signature\": \"(options?: MockAuthStoreOptions) => MockAuthStore\",\n \"description\": \"Create a mock auth store\"\n },\n {\n \"name\": \"createAuthenticatedMockStore\",\n \"signature\": \"(user?: User) => MockAuthStore\",\n \"description\": \"Create a mock store in authenticated state\"\n }\n ]\n },\n \"helpers\": {\n \"description\": \"Test setup and assertion helpers\",\n \"functions\": [\n {\n \"name\": \"setupTestAuth\",\n \"signature\": \"(options?: SetupTestAuthOptions) => TestAuthContext\",\n \"description\": \"Complete test setup with all mocks configured\",\n \"example\": \"import { describe, it, beforeEach, afterEach } from 'vitest';\\nimport { setupTestAuth, mockUser, assertAuthenticated } from '@classic-homes/auth/testing';\\nimport { authService } from '@classic-homes/auth/core';\\n\\ndescribe('Auth', () => {\\n let ctx: TestAuthContext;\\n\\n beforeEach(() => {\\n ctx = setupTestAuth();\\n });\\n\\n afterEach(() => ctx.cleanup());\\n\\n it('handles login', async () => {\\n const response = await authService.login({\\n username: 'test@example.com',\\n password: 'password'\\n });\\n\\n assertAuthenticated(ctx.mockStore);\\n ctx.mockFetch.assertCalled('/auth/login');\\n });\\n});\"\n },\n {\n \"name\": \"quickSetupAuth\",\n \"signature\": \"() => { cleanup: () => void }\",\n \"description\": \"Minimal setup for quick tests\"\n },\n {\n \"name\": \"withTestAuth\",\n \"signature\": \"(testFn: (ctx: TestAuthContext) => Promise<void>) => () => Promise<void>\",\n \"description\": \"Wrapper that handles setup and cleanup\"\n },\n {\n \"name\": \"authScenarios\",\n \"signature\": \"{ authenticated, unauthenticated, mfaRequired, tokenExpired, ... }\",\n \"description\": \"Pre-configured test scenarios\"\n },\n {\n \"name\": \"applyScenario\",\n \"signature\": \"(ctx: TestAuthContext, scenario: AuthScenario) => void\",\n \"description\": \"Apply a test scenario to the context\"\n },\n {\n \"name\": \"configureMFAFlow\",\n \"signature\": \"(mockFetch: MockFetchInstance) => void\",\n \"description\": \"Configure mock fetch for MFA flow testing\"\n },\n {\n \"name\": \"configureTokenRefresh\",\n \"signature\": \"(mockFetch: MockFetchInstance) => void\",\n \"description\": \"Configure mock fetch for token refresh testing\"\n },\n {\n \"name\": \"configureSSOLogout\",\n \"signature\": \"(mockFetch: MockFetchInstance) => void\",\n \"description\": \"Configure mock fetch for SSO logout flow\"\n },\n {\n \"name\": \"assertAuthenticated\",\n \"signature\": \"(store: MockAuthStore) => void\",\n \"description\": \"Assert that store is in authenticated state\"\n },\n {\n \"name\": \"assertUnauthenticated\",\n \"signature\": \"(store: MockAuthStore) => void\",\n \"description\": \"Assert that store is in unauthenticated state\"\n },\n {\n \"name\": \"assertHasPermissions\",\n \"signature\": \"(store: MockAuthStore, permissions: string[]) => void\",\n \"description\": \"Assert user has specific permissions\"\n },\n {\n \"name\": \"assertHasRoles\",\n \"signature\": \"(store: MockAuthStore, roles: string[]) => void\",\n \"description\": \"Assert user has specific roles\"\n },\n {\n \"name\": \"assertTokenValid\",\n \"signature\": \"(token: string) => void\",\n \"description\": \"Assert token is valid and not expired\"\n },\n {\n \"name\": \"assertTokenExpired\",\n \"signature\": \"(token: string) => void\",\n \"description\": \"Assert token is expired\"\n },\n {\n \"name\": \"assertRequiresMFA\",\n \"signature\": \"(response: LoginResponse) => void\",\n \"description\": \"Assert login response requires MFA\"\n },\n {\n \"name\": \"assertApiCalled\",\n \"signature\": \"(mockFetch: MockFetchInstance, endpoint: string, options?: AssertApiCalledOptions) => void\",\n \"description\": \"Assert API endpoint was called\"\n }\n ],\n \"types\": [\n {\n \"name\": \"TestAuthContext\",\n \"description\": \"Context returned from setupTestAuth\",\n \"properties\": [\n { \"name\": \"mockFetch\", \"type\": \"MockFetchInstance\", \"required\": true, \"description\": \"Mock fetch instance\" },\n { \"name\": \"mockStorage\", \"type\": \"MockStorageAdapter\", \"required\": true, \"description\": \"Mock storage adapter\" },\n { \"name\": \"mockStore\", \"type\": \"MockAuthStore\", \"required\": true, \"description\": \"Mock auth store\" },\n { \"name\": \"cleanup\", \"type\": \"() => void\", \"required\": true, \"description\": \"Cleanup function\" }\n ]\n },\n {\n \"name\": \"SetupTestAuthOptions\",\n \"description\": \"Options for setupTestAuth\",\n \"properties\": [\n { \"name\": \"authenticated\", \"type\": \"boolean\", \"required\": false, \"description\": \"Start in authenticated state\" },\n { \"name\": \"user\", \"type\": \"User\", \"required\": false, \"description\": \"User for authenticated state\" },\n { \"name\": \"tokens\", \"type\": \"object\", \"required\": false, \"description\": \"Tokens for authenticated state\" }\n ]\n }\n ]\n }\n }\n }\n }\n}\n","/**\n * MCP Resources Registration\n *\n * Resources provide read-only access to design system documentation.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { registerComponentResources } from './components.js';\nimport { registerTokenResources } from './tokens.js';\nimport { registerLayoutResources } from './layouts.js';\nimport { registerSchemaResources } from './schemas.js';\nimport { registerAuthResources } from './auth.js';\n\n/**\n * Register all resources with the MCP server\n */\nexport function registerResources(server: McpServer): void {\n registerComponentResources(server);\n registerTokenResources(server);\n registerLayoutResources(server);\n registerSchemaResources(server);\n registerAuthResources(server);\n}\n","/**\n * Search Components Tool\n *\n * Allows AI models to search for components by name, category, or functionality.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\nimport componentCatalog from '../data/component-catalog.json' with { type: 'json' };\nimport type { ComponentCatalog } from '../types.js';\n\nconst catalog = componentCatalog as ComponentCatalog;\n\nconst SearchComponentsSchema = z.object({\n query: z.string().describe('Search query (component name, description, or functionality)'),\n category: z\n .enum([\n 'core',\n 'form',\n 'layout',\n 'feedback',\n 'data',\n 'overlay',\n 'navigation',\n 'branding',\n 'chart',\n ])\n .optional()\n .describe('Filter by component category'),\n limit: z.number().min(1).max(50).default(10).describe('Maximum number of results'),\n});\n\n/**\n * Register the search_components tool\n */\nexport function registerSearchComponentsTool(server: McpServer): void {\n server.tool(\n 'search_components',\n 'Search for components by name, category, or functionality',\n SearchComponentsSchema.shape,\n async (params) => {\n const { query, category, limit } = SearchComponentsSchema.parse(params);\n const queryLower = query.toLowerCase().trim();\n\n // Check for wildcard or \"list all\" queries\n const isListAll =\n queryLower === '*' ||\n queryLower === 'all' ||\n queryLower === '' ||\n queryLower === 'list' ||\n queryLower === 'list all';\n\n // Split query into words for multi-word search (supports \"form input\" matching components with both words)\n const queryWords = queryLower.split(/\\s+/).filter((word) => word.length > 0);\n\n const results = catalog.components\n .filter((component) => {\n // Category filter\n if (category && component.category !== category) {\n return false;\n }\n\n // If listing all, include everything (respecting category filter)\n if (isListAll) {\n return true;\n }\n\n // Search in name, description, props, and related components\n const searchableText = [\n component.name,\n component.description,\n ...component.props.map((p) => p.name),\n ...component.props.map((p) => p.description),\n ...component.relatedComponents,\n component.category,\n ]\n .join(' ')\n .toLowerCase();\n\n // For multi-word queries, check if ANY word matches (OR logic)\n // This allows \"form input\" to find Input (form category) or FormField\n if (queryWords.length > 1) {\n return queryWords.some((word) => searchableText.includes(word));\n }\n\n // Single word: exact substring match\n return searchableText.includes(queryLower);\n })\n // Sort by relevance: exact name match first, then partial name match, then others\n .sort((a, b) => {\n const aNameLower = a.name.toLowerCase();\n const bNameLower = b.name.toLowerCase();\n\n // Exact name match gets highest priority\n const aExactMatch = queryWords.some((word) => aNameLower === word);\n const bExactMatch = queryWords.some((word) => bNameLower === word);\n if (aExactMatch && !bExactMatch) return -1;\n if (bExactMatch && !aExactMatch) return 1;\n\n // Name starts with query word gets second priority\n const aStartsWith = queryWords.some((word) => aNameLower.startsWith(word));\n const bStartsWith = queryWords.some((word) => bNameLower.startsWith(word));\n if (aStartsWith && !bStartsWith) return -1;\n if (bStartsWith && !aStartsWith) return 1;\n\n // Name contains query word gets third priority\n const aContains = queryWords.some((word) => aNameLower.includes(word));\n const bContains = queryWords.some((word) => bNameLower.includes(word));\n if (aContains && !bContains) return -1;\n if (bContains && !aContains) return 1;\n\n // Alphabetical as fallback\n return aNameLower.localeCompare(bNameLower);\n })\n .slice(0, limit)\n .map((c) => ({\n name: c.name,\n category: c.category,\n description: c.description,\n importPath: c.importPath,\n propsCount: c.props.length,\n variants: c.variants.map((v) => v.name),\n }));\n\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify(\n {\n query,\n category: category || 'all',\n resultCount: results.length,\n results,\n hint:\n results.length === 0\n ? 'Try broader search terms or remove the category filter'\n : results.length === limit\n ? `Showing first ${limit} results. Refine your search for more specific results.`\n : undefined,\n },\n null,\n 2\n ),\n },\n ],\n };\n }\n );\n}\n","/**\n * Get Component Props Tool\n *\n * Provides detailed prop definitions for a specific component.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\nimport componentCatalog from '../data/component-catalog.json' with { type: 'json' };\nimport type { ComponentCatalog } from '../types.js';\n\nconst catalog = componentCatalog as ComponentCatalog;\n\nconst GetComponentPropsSchema = z.object({\n componentName: z.string().describe('Name of the component (e.g., \"Button\", \"DashboardLayout\")'),\n includeExamples: z.boolean().default(true).describe('Whether to include usage examples'),\n});\n\n/**\n * Register the get_component_props tool\n */\nexport function registerGetComponentPropsTool(server: McpServer): void {\n server.tool(\n 'get_component_props',\n 'Get detailed prop definitions for a specific component',\n GetComponentPropsSchema.shape,\n async (params) => {\n const { componentName, includeExamples } = GetComponentPropsSchema.parse(params);\n\n const component = catalog.components.find(\n (c) => c.name.toLowerCase() === componentName.toLowerCase()\n );\n\n if (!component) {\n // Suggest similar components\n const suggestions = catalog.components\n .filter((c) => c.name.toLowerCase().includes(componentName.toLowerCase().slice(0, 3)))\n .slice(0, 5)\n .map((c) => c.name);\n\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify(\n {\n error: `Component \"${componentName}\" not found`,\n suggestions: suggestions.length > 0 ? suggestions : undefined,\n hint: 'Use search_components tool to find available components',\n },\n null,\n 2\n ),\n },\n ],\n };\n }\n\n const result: Record<string, unknown> = {\n name: component.name,\n description: component.description,\n category: component.category,\n importPath: component.importPath,\n props: component.props,\n variants: component.variants,\n slots: component.slots,\n events: component.events,\n accessibility: component.accessibility,\n relatedComponents: component.relatedComponents,\n };\n\n if (includeExamples) {\n result.examples = component.examples;\n }\n\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify(result, null, 2),\n },\n ],\n };\n }\n );\n}\n","/**\n * Suggest Pattern Tool\n *\n * Recommends patterns for common use cases.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\nimport patternLibrary from '../data/pattern-library.json' with { type: 'json' };\nimport type { PatternLibrary } from '../types.js';\n\nconst patterns = patternLibrary as unknown as PatternLibrary;\n\nconst SuggestPatternSchema = z.object({\n useCase: z\n .enum([\n // Layout patterns\n 'dashboard-page',\n 'public-page',\n 'auth-page',\n 'error-page',\n 'form-page',\n // Form patterns\n 'login-form',\n 'registration-form',\n 'contact-form',\n // MFA and password form patterns\n 'mfa-verification-form',\n 'mfa-setup-form',\n 'profile-update-form',\n 'change-password-form',\n 'forgot-password-form',\n 'reset-password-form',\n // Auth flow patterns\n 'login-with-mfa',\n 'sso-login',\n 'session-management',\n 'protected-route',\n ])\n .describe('The use case you need a pattern for'),\n requirements: z.array(z.string()).optional().describe('Additional requirements or constraints'),\n});\n\n/**\n * Register the suggest_pattern tool\n */\nexport function registerSuggestPatternTool(server: McpServer): void {\n server.tool(\n 'suggest_pattern',\n 'Get recommended patterns for common use cases',\n SuggestPatternSchema.shape,\n async (params) => {\n const { useCase, requirements } = SuggestPatternSchema.parse(params);\n\n // Find matching layout, form, or auth pattern\n const layout = patterns.layouts.find((l) => l.id === useCase || l.useCase === useCase);\n const form = patterns.forms.find((f) => f.id === useCase);\n const auth = patterns.auth?.find((a) => a.id === useCase);\n const pattern = layout || form || auth;\n\n if (!pattern) {\n // Suggest available patterns\n const availablePatterns = [\n ...patterns.layouts.map((l) => ({ id: l.id, type: 'layout', name: l.name })),\n ...patterns.forms.map((f) => ({ id: f.id, type: 'form', name: f.name })),\n ...(patterns.auth?.map((a) => ({ id: a.id, type: 'auth', name: a.name })) || []),\n ];\n\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify(\n {\n error: `No pattern found for use case \"${useCase}\"`,\n availablePatterns,\n hint: 'Use one of the available pattern IDs',\n },\n null,\n 2\n ),\n },\n ],\n };\n }\n\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify(\n {\n pattern,\n requirements: requirements || [],\n implementationTips: [\n 'Import components from @classic-homes/theme-svelte',\n 'Use the provided example as a starting point',\n 'Customize props based on your specific requirements',\n 'Follow accessibility guidelines in component documentation',\n ],\n },\n null,\n 2\n ),\n },\n ],\n };\n }\n );\n}\n","/**\n * Validate Usage Tool\n *\n * Validates if component usage follows design system guidelines.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\nimport componentCatalog from '../data/component-catalog.json' with { type: 'json' };\nimport type { ComponentCatalog } from '../types.js';\n\nconst catalog = componentCatalog as ComponentCatalog;\n\nconst ValidateUsageSchema = z.object({\n componentName: z.string().describe('Name of the component being used'),\n props: z.record(z.unknown()).describe('Props being passed to the component'),\n context: z\n .string()\n .optional()\n .describe('Where the component is being used (e.g., \"inside a form\", \"in modal\")'),\n});\n\ninterface ValidationIssue {\n type: 'error' | 'warning' | 'suggestion';\n message: string;\n prop?: string;\n}\n\n/**\n * Register the validate_usage tool\n */\nexport function registerValidateUsageTool(server: McpServer): void {\n server.tool(\n 'validate_component_usage',\n 'Validate if component usage follows design system guidelines',\n ValidateUsageSchema.shape,\n async (params) => {\n const { componentName, props, context } = ValidateUsageSchema.parse(params);\n\n const component = catalog.components.find(\n (c) => c.name.toLowerCase() === componentName.toLowerCase()\n );\n\n if (!component) {\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify(\n {\n valid: false,\n errors: [{ type: 'error', message: `Unknown component \"${componentName}\"` }],\n },\n null,\n 2\n ),\n },\n ],\n };\n }\n\n const issues: ValidationIssue[] = [];\n\n // Check for unknown props\n const knownProps = new Set(component.props.map((p) => p.name));\n for (const propName of Object.keys(props)) {\n if (!knownProps.has(propName) && propName !== 'class' && propName !== 'children') {\n issues.push({\n type: 'warning',\n message: `Unknown prop \"${propName}\" - not in component API`,\n prop: propName,\n });\n }\n }\n\n // Check for required props\n for (const propDef of component.props) {\n if (propDef.required && !(propDef.name in props)) {\n issues.push({\n type: 'error',\n message: `Missing required prop \"${propDef.name}\"`,\n prop: propDef.name,\n });\n }\n }\n\n // Check variant values\n for (const variant of component.variants) {\n const propValue = props[variant.name];\n if (propValue !== undefined && !variant.values.includes(String(propValue))) {\n issues.push({\n type: 'error',\n message: `Invalid value \"${propValue}\" for \"${variant.name}\". Valid values: ${variant.values.join(', ')}`,\n prop: variant.name,\n });\n }\n }\n\n // Context-specific suggestions\n if (context) {\n if (context.includes('form') && component.name === 'Button') {\n const buttonType = props['type'];\n if (!buttonType) {\n issues.push({\n type: 'suggestion',\n message: 'Consider setting type=\"submit\" for form submission buttons',\n prop: 'type',\n });\n }\n }\n\n if (context.includes('modal') || context.includes('dialog')) {\n if (component.category === 'layout') {\n issues.push({\n type: 'warning',\n message: `Layout component \"${component.name}\" is typically not used inside modals`,\n });\n }\n }\n }\n\n // Accessibility checks\n if (component.name === 'Button' && props['size'] === 'icon' && !props['aria-label']) {\n issues.push({\n type: 'error',\n message: 'Icon-only buttons must have an aria-label for accessibility',\n prop: 'aria-label',\n });\n }\n\n const errors = issues.filter((i) => i.type === 'error');\n const warnings = issues.filter((i) => i.type === 'warning');\n const suggestions = issues.filter((i) => i.type === 'suggestion');\n\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify(\n {\n valid: errors.length === 0,\n component: component.name,\n errors,\n warnings,\n suggestions,\n propCount: Object.keys(props).length,\n availableProps: component.props.map((p) => p.name),\n },\n null,\n 2\n ),\n },\n ],\n };\n }\n );\n}\n","/**\n * MCP Tools Registration\n *\n * Tools allow AI models to query the design system.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { registerSearchComponentsTool } from './searchComponents.js';\nimport { registerGetComponentPropsTool } from './getComponentProps.js';\nimport { registerSuggestPatternTool } from './suggestPattern.js';\nimport { registerValidateUsageTool } from './validateUsage.js';\n\n/**\n * Register all tools with the MCP server\n */\nexport function registerTools(server: McpServer): void {\n registerSearchComponentsTool(server);\n registerGetComponentPropsTool(server);\n registerSuggestPatternTool(server);\n registerValidateUsageTool(server);\n}\n","/**\n * Build Form Prompt\n *\n * Helps create forms following Classic Theme patterns.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\n\nconst BuildFormSchema = z.object({\n formType: z.string().describe('Type of form (login, registration, contact, settings, custom)'),\n fields: z\n .string()\n .describe('Comma-separated list of field names (e.g., \"email, password, name\")'),\n includeValidation: z\n .string()\n .optional()\n .describe('Whether to include Zod validation schema (true/false)'),\n});\n\n/**\n * Register the build_form prompt\n */\nexport function registerBuildFormPrompt(server: McpServer): void {\n server.prompt(\n 'build_form',\n 'Create a form following Classic Theme patterns with proper validation',\n BuildFormSchema.shape,\n async (params) => {\n const parsed = BuildFormSchema.parse(params);\n const formType = parsed.formType || 'custom';\n const fields = (parsed.fields || '').split(',').map((f: string) => f.trim());\n const shouldIncludeValidation = parsed.includeValidation !== 'false';\n\n const fieldList = fields.map((f) => `- ${f}`).join('\\n');\n\n return {\n messages: [\n {\n role: 'user',\n content: {\n type: 'text',\n text: `Create a ${formType} form with these fields:\n${fieldList}\n\nRequirements:\n- Import components from '@classic-homes/theme-svelte'\n- Use the FormField component for each field\n- Use the useForm composable for state management\n${shouldIncludeValidation ? '- Include Zod schema validation using schemas from @classic-homes/theme-svelte' : ''}\n- Handle form submission with loading state\n- Show error messages for validation failures\n- Follow Svelte 5 runes syntax ($props, $state, $derived)\n\nAvailable form components:\n- FormField: Combines label, input, error message, and hint text\n- Input: Text input with value binding\n- Textarea: Multi-line text input\n- Select: Dropdown selection\n- Checkbox: Boolean checkbox\n- RadioGroup: Radio button group\n- DateTimePicker: Date and time selection\n- FileUpload: File upload with progress\n\nAvailable validation schemas (from @classic-homes/theme-svelte):\n- emailSchema: Email validation\n- passwordSchema: Strong password (8+ chars, mixed case, numbers, special)\n- loginPasswordSchema: Simpler password for login\n- usernameSchema: Username validation\n- fullNameSchema: Name validation\n- phoneSchema: Phone number validation\n\nExample structure:\n\\`\\`\\`svelte\n<script lang=\"ts\">\n import { FormField, Button, useForm } from '@classic-homes/theme-svelte';\n import { z } from 'zod';\n\n const schema = z.object({\n // field definitions\n });\n\n const form = useForm({\n schema,\n initialValues: { /* ... */ },\n onSubmit: async (data) => { /* ... */ },\n });\n</script>\n\n<form onsubmit={form.handleSubmit}>\n <!-- FormField components -->\n <Button type=\"submit\" loading={form.isSubmitting}>Submit</Button>\n</form>\n\\`\\`\\``,\n },\n },\n ],\n };\n }\n );\n}\n","/**\n * Layout Page Prompt\n *\n * Helps create page layouts using Classic Theme components.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\n\nconst LayoutPageSchema = z.object({\n pageType: z.string().describe('Type of page (dashboard, public, auth, error, form)'),\n features: z\n .string()\n .optional()\n .describe('Comma-separated features needed (e.g., \"sidebar, search, user-menu\")'),\n});\n\n/**\n * Register the layout_page prompt\n */\nexport function registerLayoutPagePrompt(server: McpServer): void {\n server.prompt(\n 'layout_page',\n 'Create a page layout using Classic Theme layout components',\n LayoutPageSchema.shape,\n async (params) => {\n const parsed = LayoutPageSchema.parse(params);\n const pageType = parsed.pageType || 'public';\n const features = (parsed.features || '')\n .split(',')\n .map((f: string) => f.trim())\n .filter(Boolean);\n\n const featureList = features.length > 0 ? `With features: ${features.join(', ')}` : '';\n\n const layoutGuide: Record<string, string> = {\n dashboard: `DashboardLayout - For authenticated dashboard pages with sidebar navigation\n- Props: navigation (NavSection[]), user (User), appName, pageTitle, sidebarVariant, headerSearch\n- Pinning Props: enablePinning, pinnedSectionTitle, initialPinnedItems, onPinnedChange, pinIcon\n- Supports: collapsible sidebar, user menu, quick links, mobile responsive\n- Role-based Expansion: Use expandForRoles on NavSection to auto-expand sections for users with specific roles\n- User Pinning: Enable pinnable items (pinnable: true on NavItem) with onPinnedChange callback for persistence`,\n\n public: `PublicLayout - For public-facing pages with header and footer\n- Props: navigation (NavItem[]), footerLinks (NavSection[]), copyright, headerSearch\n- Supports: responsive header nav, footer link sections, logo customization`,\n\n auth: `AuthLayout - For authentication pages (login, signup, etc.)\n- Props: logoSubtitle, logoEnvironment, footerLinks, backgroundVariant, maxWidth\n- Supports: centered card layout, decorative backgrounds, footer links`,\n\n error: `ErrorLayout - For error pages (404, 500, etc.)\n- Props: statusCode, title, description, showHomeButton, showBackButton, illustration\n- Supports: custom error illustrations, action buttons, status codes`,\n\n form: `FormPageLayout - For multi-step forms or data entry pages\n- Props: title, description, helpText, showNotices\n- Supports: optional sidebar, notices section, help text`,\n };\n\n const layoutInfo = layoutGuide[pageType] || layoutGuide.public;\n\n return {\n messages: [\n {\n role: 'user',\n content: {\n type: 'text',\n text: `Create a ${pageType} page layout. ${featureList}\n\nLayout Component to Use:\n${layoutInfo}\n\nRequirements:\n- Import from '@classic-homes/theme-svelte'\n- Follow Svelte 5 runes syntax\n- Use TypeScript for type safety\n- Import and use proper types (NavSection, NavItem, User, etc.)\n\nKey Types:\n\\`\\`\\`typescript\ninterface NavItem {\n id: string;\n name: string;\n href?: string;\n icon?: string;\n badge?: string | number;\n children?: NavItem[];\n active?: boolean;\n pinnable?: boolean; // Allow this item to be pinned by users\n}\n\ninterface NavSection {\n id: string;\n title?: string;\n items: NavItem[];\n collapsible?: boolean;\n expanded?: boolean;\n expandForRoles?: string[]; // Auto-expand for users with these roles\n}\n\ninterface User {\n id: string;\n name: string;\n email?: string;\n avatar?: string;\n roles?: string[]; // Used for role-based section expansion\n}\n\n// For external persistence of sidebar preferences\ninterface SidebarPreferences {\n pinnedItems: string[];\n expandedSections: string[];\n expandedItems: string[];\n}\n\\`\\`\\`\n\nExample for ${pageType}Layout:\n\\`\\`\\`svelte\n<script lang=\"ts\">\n import { ${pageType.charAt(0).toUpperCase() + pageType.slice(1)}Layout } from '@classic-homes/theme-svelte';\n import type { NavSection, NavItem, User } from '@classic-homes/theme-svelte';\n\n // Define navigation, user data, etc.\n</script>\n\n<${pageType.charAt(0).toUpperCase() + pageType.slice(1)}Layout\n {/* props */}\n>\n <!-- Page content here -->\n</${pageType.charAt(0).toUpperCase() + pageType.slice(1)}Layout>\n\\`\\`\\``,\n },\n },\n ],\n };\n }\n );\n}\n","/**\n * Component Usage Prompt\n *\n * Helps generate correct component usage with proper props.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\nimport componentCatalog from '../data/component-catalog.json' with { type: 'json' };\nimport type { ComponentCatalog } from '../types.js';\n\nconst catalog = componentCatalog as ComponentCatalog;\n\nconst ComponentUsageSchema = z.object({\n componentName: z.string().describe('Name of the component (e.g., Button, Card, Select)'),\n variant: z.string().optional().describe('Desired variant (optional)'),\n useCase: z.string().optional().describe('Brief description of use case'),\n});\n\n/**\n * Register the component_usage prompt\n */\nexport function registerComponentUsagePrompt(server: McpServer): void {\n server.prompt(\n 'component_usage',\n 'Generate correct usage for a Classic Theme component',\n ComponentUsageSchema.shape,\n async (params) => {\n const parsed = ComponentUsageSchema.parse(params);\n const componentName = parsed.componentName || 'Button';\n const variant = parsed.variant || '';\n const useCase = parsed.useCase || '';\n\n const component = catalog.components.find(\n (c) => c.name.toLowerCase() === componentName.toLowerCase()\n );\n\n let componentInfo = '';\n if (component) {\n componentInfo = `\nComponent: ${component.name}\nDescription: ${component.description}\nCategory: ${component.category}\n\nProps:\n${component.props.map((p) => `- ${p.name}: ${p.type} ${p.required ? '(required)' : `(default: ${p.default || 'undefined'})`} - ${p.description}`).join('\\n')}\n\nVariants:\n${component.variants.map((v) => `- ${v.name}: ${v.values.join(' | ')} (default: ${v.default || v.values[0]})`).join('\\n')}\n\nExamples:\n${component.examples.map((e) => `### ${e.title}\\n\\`\\`\\`svelte\\n${e.code}\\n\\`\\`\\``).join('\\n\\n')}`;\n } else {\n componentInfo = `Component \"${componentName}\" not found in catalog. Available components: ${catalog.components.map((c) => c.name).join(', ')}`;\n }\n\n return {\n messages: [\n {\n role: 'user',\n content: {\n type: 'text',\n text: `Generate correct usage for the ${componentName} component from @classic-homes/theme-svelte.\n${variant ? `Desired variant: ${variant}` : ''}\n${useCase ? `Use case: ${useCase}` : ''}\n\n${componentInfo}\n\nRequirements:\n- Import from '@classic-homes/theme-svelte'\n- Use Svelte 5 runes syntax ($props, $state, etc.)\n- Include proper TypeScript types\n- Follow accessibility best practices\n- Add appropriate event handlers if needed`,\n },\n },\n ],\n };\n }\n );\n}\n","/**\n * MCP Prompts Registration\n *\n * Prompts provide templates for common development tasks.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { registerBuildFormPrompt } from './buildForm.js';\nimport { registerLayoutPagePrompt } from './layoutPage.js';\nimport { registerComponentUsagePrompt } from './componentUsage.js';\n\n/**\n * Register all prompts with the MCP server\n */\nexport function registerPrompts(server: McpServer): void {\n registerBuildFormPrompt(server);\n registerLayoutPagePrompt(server);\n registerComponentUsagePrompt(server);\n}\n"],"mappings":"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,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,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aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YACjB;AAAA,YACA;AAAA,cACE,MAAQ;AAAA,cACR,WAAa;AAAA,cACb,aAAe;AAAA,YA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","names":["McpServer","ResourceTemplate","ResourceTemplate","ResourceTemplate","catalog","ResourceTemplate","catalog","z","catalog","z","z","patterns","z","z","catalog","z","z","z","z","catalog","z","McpServer"]}
|