@industry-theme/backlogmd-kanban-panel 0.1.0 → 0.1.1
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/adapters/BacklogAdapter.d.ts +50 -0
- package/dist/adapters/BacklogAdapter.d.ts.map +1 -0
- package/dist/adapters/backlog-parser.d.ts +24 -0
- package/dist/adapters/backlog-parser.d.ts.map +1 -0
- package/dist/adapters/index.d.ts +10 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/types.d.ts +115 -0
- package/dist/adapters/types.d.ts.map +1 -0
- package/dist/panels/KanbanPanel.d.ts.map +1 -1
- package/dist/panels/kanban/components/EmptyState.d.ts +12 -0
- package/dist/panels/kanban/components/EmptyState.d.ts.map +1 -0
- package/dist/panels/kanban/hooks/useKanbanData.d.ts +10 -2
- package/dist/panels/kanban/hooks/useKanbanData.d.ts.map +1 -1
- package/dist/panels.bundle.js +632 -187
- package/dist/panels.bundle.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"panels.bundle.js","sources":["../node_modules/lucide-react/dist/esm/shared/src/utils.js","../node_modules/lucide-react/dist/esm/defaultAttributes.js","../node_modules/lucide-react/dist/esm/Icon.js","../node_modules/lucide-react/dist/esm/createLucideIcon.js","../node_modules/lucide-react/dist/esm/icons/circle-alert.js","../node_modules/lucide-react/dist/esm/icons/kanban.js","../node_modules/lucide-react/dist/esm/icons/refresh-cw.js","../node_modules/@principal-ade/industry-theme/dist/esm/index.js","../src/panels/kanban/mocks/mockData.ts","../src/panels/kanban/hooks/useKanbanData.ts","../src/panels/kanban/components/KanbanColumn.tsx","../src/panels/KanbanPanel.tsx","../src/index.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.552.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\nconst toCamelCase = (string) => string.replace(\n /^([A-Z])|[\\s-_]+(\\w)/g,\n (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()\n);\nconst toPascalCase = (string) => {\n const camelCase = toCamelCase(string);\n return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\n};\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\nconst hasA11yProp = (props) => {\n for (const prop in props) {\n if (prop.startsWith(\"aria-\") || prop === \"role\" || prop === \"title\") {\n return true;\n }\n }\n};\n\nexport { hasA11yProp, mergeClasses, toCamelCase, toKebabCase, toPascalCase };\n//# sourceMappingURL=utils.js.map\n","/**\n * @license lucide-react v0.552.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nvar defaultAttributes = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.js.map\n","/**\n * @license lucide-react v0.552.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport defaultAttributes from './defaultAttributes.js';\nimport { mergeClasses, hasA11yProp } from './shared/src/utils.js';\n\nconst Icon = forwardRef(\n ({\n color = \"currentColor\",\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = \"\",\n children,\n iconNode,\n ...rest\n }, ref) => createElement(\n \"svg\",\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,\n className: mergeClasses(\"lucide\", className),\n ...!children && !hasA11yProp(rest) && { \"aria-hidden\": \"true\" },\n ...rest\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...Array.isArray(children) ? children : [children]\n ]\n )\n);\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.js.map\n","/**\n * @license lucide-react v0.552.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from './shared/src/utils.js';\nimport Icon from './Icon.js';\n\nconst createLucideIcon = (iconName, iconNode) => {\n const Component = forwardRef(\n ({ className, ...props }, ref) => createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className\n ),\n ...props\n })\n );\n Component.displayName = toPascalCase(iconName);\n return Component;\n};\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.js.map\n","/**\n * @license lucide-react v0.552.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"line\", { x1: \"12\", x2: \"12\", y1: \"8\", y2: \"12\", key: \"1pkeuh\" }],\n [\"line\", { x1: \"12\", x2: \"12.01\", y1: \"16\", y2: \"16\", key: \"4dfq90\" }]\n];\nconst CircleAlert = createLucideIcon(\"circle-alert\", __iconNode);\n\nexport { __iconNode, CircleAlert as default };\n//# sourceMappingURL=circle-alert.js.map\n","/**\n * @license lucide-react v0.552.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M5 3v14\", key: \"9nsxs2\" }],\n [\"path\", { d: \"M12 3v8\", key: \"1h2ygw\" }],\n [\"path\", { d: \"M19 3v18\", key: \"1sk56x\" }]\n];\nconst Kanban = createLucideIcon(\"kanban\", __iconNode);\n\nexport { __iconNode, Kanban as default };\n//# sourceMappingURL=kanban.js.map\n","/**\n * @license lucide-react v0.552.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\", key: \"v9h5vc\" }],\n [\"path\", { d: \"M21 3v5h-5\", key: \"1q7to0\" }],\n [\"path\", { d: \"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\", key: \"3uifl3\" }],\n [\"path\", { d: \"M8 16H3v5\", key: \"1cv678\" }]\n];\nconst RefreshCw = createLucideIcon(\"refresh-cw\", __iconNode);\n\nexport { __iconNode, RefreshCw as default };\n//# sourceMappingURL=refresh-cw.js.map\n","// src/glassmorphismTheme.ts\nvar glassmorphismTheme = {\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n fonts: {\n body: '\"Inter\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n heading: '\"Inter\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n monospace: '\"Fira Code\", \"SF Mono\", Monaco, Inconsolata, monospace'\n },\n fontSizes: [12, 14, 16, 18, 20, 24, 32, 48, 64, 96],\n fontScale: 1,\n fontWeights: {\n body: 400,\n heading: 600,\n bold: 700,\n light: 300,\n medium: 500,\n semibold: 600\n },\n lineHeights: {\n body: 1.6,\n heading: 1.3,\n tight: 1.4,\n relaxed: 1.8\n },\n breakpoints: [\"640px\", \"768px\", \"1024px\", \"1280px\"],\n sizes: [16, 32, 64, 128, 256, 512, 768, 1024, 1536],\n radii: [0, 8, 12, 16, 20, 24, 32, 40],\n shadows: [\n \"none\",\n \"0 8px 32px 0 rgba(31, 38, 135, 0.15)\",\n \"0 12px 40px 0 rgba(31, 38, 135, 0.2)\",\n \"0 16px 48px 0 rgba(31, 38, 135, 0.25)\",\n \"0 20px 56px 0 rgba(31, 38, 135, 0.3)\",\n \"0 24px 64px 0 rgba(31, 38, 135, 0.35)\"\n ],\n zIndices: [0, 1, 10, 20, 30, 40, 50],\n colors: {\n text: \"rgba(255, 255, 255, 0.95)\",\n background: \"rgba(255, 255, 255, 0.1)\",\n primary: \"rgba(99, 102, 241, 0.9)\",\n secondary: \"rgba(139, 92, 246, 0.9)\",\n accent: \"rgba(236, 72, 153, 0.9)\",\n highlight: \"rgba(99, 102, 241, 0.2)\",\n muted: \"rgba(255, 255, 255, 0.05)\",\n success: \"rgba(34, 197, 94, 0.9)\",\n warning: \"rgba(251, 146, 60, 0.9)\",\n error: \"rgba(239, 68, 68, 0.9)\",\n info: \"rgba(59, 130, 246, 0.9)\",\n border: \"rgba(255, 255, 255, 0.18)\",\n backgroundSecondary: \"rgba(255, 255, 255, 0.15)\",\n backgroundTertiary: \"rgba(255, 255, 255, 0.2)\",\n backgroundLight: \"rgba(255, 255, 255, 0.08)\",\n backgroundHover: \"rgba(255, 255, 255, 0.25)\",\n surface: \"rgba(255, 255, 255, 0.12)\",\n textSecondary: \"rgba(255, 255, 255, 0.8)\",\n textTertiary: \"rgba(255, 255, 255, 0.6)\",\n textMuted: \"rgba(255, 255, 255, 0.5)\",\n highlightBg: \"rgba(251, 191, 36, 0.3)\",\n highlightBorder: \"rgba(251, 191, 36, 0.5)\"\n },\n modes: {\n dark: {\n text: \"rgba(255, 255, 255, 0.95)\",\n background: \"rgba(0, 0, 0, 0.3)\",\n primary: \"rgba(129, 140, 248, 0.9)\",\n secondary: \"rgba(167, 139, 250, 0.9)\",\n accent: \"rgba(244, 114, 182, 0.9)\",\n highlight: \"rgba(129, 140, 248, 0.25)\",\n muted: \"rgba(0, 0, 0, 0.15)\",\n success: \"rgba(74, 222, 128, 0.9)\",\n warning: \"rgba(251, 191, 36, 0.9)\",\n error: \"rgba(248, 113, 113, 0.9)\",\n info: \"rgba(96, 165, 250, 0.9)\",\n border: \"rgba(255, 255, 255, 0.15)\",\n backgroundSecondary: \"rgba(0, 0, 0, 0.4)\",\n backgroundTertiary: \"rgba(0, 0, 0, 0.5)\",\n backgroundLight: \"rgba(0, 0, 0, 0.2)\",\n backgroundHover: \"rgba(255, 255, 255, 0.1)\",\n surface: \"rgba(0, 0, 0, 0.35)\",\n textSecondary: \"rgba(255, 255, 255, 0.8)\",\n textTertiary: \"rgba(255, 255, 255, 0.6)\",\n textMuted: \"rgba(255, 255, 255, 0.4)\",\n highlightBg: \"rgba(251, 191, 36, 0.35)\",\n highlightBorder: \"rgba(251, 191, 36, 0.6)\"\n },\n frosted: {\n text: \"rgba(31, 41, 55, 0.95)\",\n background: \"rgba(255, 255, 255, 0.3)\",\n primary: \"rgba(79, 70, 229, 0.95)\",\n secondary: \"rgba(124, 58, 237, 0.95)\",\n accent: \"rgba(219, 39, 119, 0.95)\",\n highlight: \"rgba(79, 70, 229, 0.15)\",\n muted: \"rgba(255, 255, 255, 0.4)\",\n success: \"rgba(16, 185, 129, 0.95)\",\n warning: \"rgba(245, 158, 11, 0.95)\",\n error: \"rgba(220, 38, 38, 0.95)\",\n info: \"rgba(37, 99, 235, 0.95)\",\n border: \"rgba(255, 255, 255, 0.5)\",\n backgroundSecondary: \"rgba(255, 255, 255, 0.4)\",\n backgroundTertiary: \"rgba(255, 255, 255, 0.5)\",\n backgroundLight: \"rgba(255, 255, 255, 0.25)\",\n backgroundHover: \"rgba(255, 255, 255, 0.6)\",\n surface: \"rgba(255, 255, 255, 0.35)\",\n textSecondary: \"rgba(31, 41, 55, 0.8)\",\n textTertiary: \"rgba(31, 41, 55, 0.6)\",\n textMuted: \"rgba(31, 41, 55, 0.5)\",\n highlightBg: \"rgba(251, 191, 36, 0.4)\",\n highlightBorder: \"rgba(251, 191, 36, 0.7)\"\n }\n },\n buttons: {\n primary: {\n color: \"white\",\n bg: \"primary\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"rgba(255, 255, 255, 0.2)\",\n \"&:hover\": {\n bg: \"secondary\"\n }\n },\n secondary: {\n color: \"text\",\n bg: \"rgba(255, 255, 255, 0.1)\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"rgba(255, 255, 255, 0.2)\",\n \"&:hover\": {\n bg: \"rgba(255, 255, 255, 0.2)\"\n }\n },\n ghost: {\n color: \"text\",\n bg: \"transparent\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"transparent\",\n \"&:hover\": {\n borderColor: \"rgba(255, 255, 255, 0.2)\",\n bg: \"rgba(255, 255, 255, 0.05)\"\n }\n }\n },\n text: {\n heading: {\n fontFamily: \"heading\",\n fontWeight: \"heading\",\n lineHeight: \"heading\"\n },\n body: {\n fontFamily: \"body\",\n fontWeight: \"body\",\n lineHeight: \"body\"\n },\n caption: {\n fontSize: 1,\n color: \"textSecondary\"\n }\n },\n cards: {\n primary: {\n bg: \"surface\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 3\n },\n secondary: {\n bg: \"backgroundSecondary\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 3\n }\n }\n};\n// src/defaultThemes.ts\nvar defaultMarkdownTheme = {\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n fonts: {\n body: '\"Inter\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n heading: '\"Crimson Text\", \"Georgia\", \"Times New Roman\", serif',\n monospace: '\"Fira Code\", \"SF Mono\", Monaco, Inconsolata, monospace'\n },\n fontSizes: [12, 14, 16, 18, 20, 24, 32, 48, 64, 96],\n fontScale: 1,\n fontWeights: {\n body: 400,\n heading: 600,\n bold: 700,\n light: 300,\n medium: 500,\n semibold: 600\n },\n lineHeights: {\n body: 1.6,\n heading: 1.3,\n tight: 1.25,\n relaxed: 1.75\n },\n breakpoints: [\"640px\", \"768px\", \"1024px\", \"1280px\"],\n sizes: [16, 32, 64, 128, 256, 512, 768, 1024, 1536],\n radii: [0, 2, 4, 6, 8, 12, 16, 24],\n shadows: [\n \"none\",\n \"0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)\",\n \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)\",\n \"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)\",\n \"0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)\",\n \"0 25px 50px -12px rgba(0, 0, 0, 0.25)\"\n ],\n zIndices: [0, 1, 10, 20, 30, 40, 50],\n colors: {\n text: \"#1a1a1a\",\n background: \"#ffffff\",\n primary: \"#007acc\",\n secondary: \"#005a9e\",\n accent: \"#1a1a1a\",\n highlight: \"rgba(0, 122, 204, 0.1)\",\n muted: \"#f0f0f0\",\n success: \"#28a745\",\n warning: \"#ffc107\",\n error: \"#dc3545\",\n info: \"#17a2b8\",\n border: \"rgba(0, 0, 0, 0.1)\",\n backgroundSecondary: \"#f8f9fa\",\n backgroundTertiary: \"#e9ecef\",\n backgroundLight: \"rgba(0, 0, 0, 0.03)\",\n backgroundHover: \"rgba(0, 0, 0, 0.05)\",\n surface: \"#ffffff\",\n textSecondary: \"#555555\",\n textTertiary: \"#888888\",\n textMuted: \"#aaaaaa\",\n highlightBg: \"rgba(255, 235, 59, 0.3)\",\n highlightBorder: \"rgba(255, 235, 59, 0.6)\"\n },\n buttons: {\n primary: {\n color: \"white\",\n bg: \"primary\",\n \"&:hover\": { bg: \"secondary\" }\n },\n secondary: {\n color: \"primary\",\n bg: \"transparent\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"primary\",\n \"&:hover\": { bg: \"highlight\" }\n },\n ghost: {\n color: \"text\",\n bg: \"transparent\",\n \"&:hover\": { bg: \"backgroundHover\" }\n }\n },\n text: {\n heading: {\n fontFamily: \"heading\",\n fontWeight: \"heading\",\n lineHeight: \"heading\"\n },\n body: {\n fontFamily: \"body\",\n fontWeight: \"body\",\n lineHeight: \"body\"\n },\n caption: {\n fontSize: 1,\n color: \"textSecondary\"\n }\n },\n cards: {\n primary: {\n bg: \"surface\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 2\n },\n secondary: {\n bg: \"backgroundSecondary\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 2\n }\n }\n};\nvar defaultTerminalTheme = {\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n fonts: {\n body: '\"Courier New\", Courier, monospace',\n heading: '\"Courier New\", Courier, monospace',\n monospace: '\"Courier New\", Courier, monospace'\n },\n fontSizes: [12, 14, 16, 18, 20, 24, 32, 48, 64, 96],\n fontScale: 1,\n fontWeights: {\n body: 400,\n heading: 500,\n bold: 600,\n light: 300,\n medium: 500,\n semibold: 600\n },\n lineHeights: {\n body: 1.4,\n heading: 1.2,\n tight: 1.3,\n relaxed: 1.6\n },\n breakpoints: [\"640px\", \"768px\", \"1024px\", \"1280px\"],\n sizes: [16, 32, 64, 128, 256, 512, 768, 1024, 1536],\n radii: [0, 2, 4, 6, 8, 12, 16, 24],\n shadows: [\n \"none\",\n \"0 0 5px rgba(255, 193, 7, 0.1)\",\n \"0 0 10px rgba(255, 193, 7, 0.15)\",\n \"0 0 15px rgba(255, 193, 7, 0.2)\",\n \"0 0 20px rgba(255, 193, 7, 0.25)\",\n \"0 0 30px rgba(255, 193, 7, 0.3)\"\n ],\n zIndices: [0, 1, 10, 20, 30, 40, 50],\n colors: {\n text: \"#ffc107\",\n background: \"#000000\",\n primary: \"#ffc107\",\n secondary: \"#ffb300\",\n accent: \"#ffffff\",\n highlight: \"rgba(255, 193, 7, 0.1)\",\n muted: \"#1a1a1a\",\n success: \"#4caf50\",\n warning: \"#ff9800\",\n error: \"#f44336\",\n info: \"#2196f3\",\n border: \"rgba(255, 193, 7, 0.2)\",\n backgroundSecondary: \"#0a0a0a\",\n backgroundTertiary: \"#111111\",\n backgroundLight: \"rgba(255, 193, 7, 0.03)\",\n backgroundHover: \"rgba(255, 193, 7, 0.05)\",\n surface: \"#050505\",\n textSecondary: \"#e0e0e0\",\n textTertiary: \"#b0b0b0\",\n textMuted: \"#808080\",\n highlightBg: \"rgba(255, 193, 7, 0.2)\",\n highlightBorder: \"rgba(255, 193, 7, 0.4)\"\n },\n buttons: {\n primary: {\n color: \"black\",\n bg: \"primary\",\n borderWidth: 0,\n \"&:hover\": { bg: \"secondary\" }\n },\n secondary: {\n color: \"primary\",\n bg: \"transparent\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"primary\",\n \"&:hover\": { bg: \"highlight\" }\n },\n ghost: {\n color: \"text\",\n bg: \"transparent\",\n \"&:hover\": { bg: \"backgroundHover\" }\n }\n },\n text: {\n heading: {\n fontFamily: \"heading\",\n fontWeight: \"heading\",\n lineHeight: \"heading\"\n },\n body: {\n fontFamily: \"body\",\n fontWeight: \"body\",\n lineHeight: \"body\"\n },\n caption: {\n fontSize: 1,\n color: \"textSecondary\"\n }\n },\n cards: {\n primary: {\n bg: \"surface\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 0\n },\n secondary: {\n bg: \"backgroundSecondary\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 0\n }\n }\n};\nvar defaultEditorTheme = {\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n fonts: {\n body: '\"Fira Code\", \"SF Mono\", Monaco, Inconsolata, monospace',\n heading: '\"Inter\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n monospace: '\"Fira Code\", \"SF Mono\", Monaco, Inconsolata, monospace'\n },\n fontSizes: [12, 14, 16, 18, 20, 24, 32, 48, 64, 96],\n fontScale: 1,\n fontWeights: {\n body: 400,\n heading: 600,\n bold: 700,\n light: 300,\n medium: 500,\n semibold: 600\n },\n lineHeights: {\n body: 1.5,\n heading: 1.2,\n tight: 1.3,\n relaxed: 1.7\n },\n breakpoints: [\"640px\", \"768px\", \"1024px\", \"1280px\"],\n sizes: [16, 32, 64, 128, 256, 512, 768, 1024, 1536],\n radii: [0, 2, 4, 6, 8, 12, 16, 24],\n shadows: [\n \"none\",\n \"0 1px 2px rgba(0, 0, 0, 0.05)\",\n \"0 2px 4px rgba(0, 0, 0, 0.1)\",\n \"0 4px 8px rgba(0, 0, 0, 0.15)\",\n \"0 8px 16px rgba(0, 0, 0, 0.2)\",\n \"0 12px 24px rgba(0, 0, 0, 0.25)\"\n ],\n zIndices: [0, 1, 10, 20, 30, 40, 50],\n colors: {\n text: \"#d4d4d4\",\n background: \"#1e1e1e\",\n primary: \"#569cd6\",\n secondary: \"#408ac9\",\n accent: \"#c586c0\",\n highlight: \"rgba(86, 156, 214, 0.1)\",\n muted: \"#2a2a2a\",\n success: \"#6a9955\",\n warning: \"#d18616\",\n error: \"#f44747\",\n info: \"#569cd6\",\n border: \"rgba(255, 255, 255, 0.1)\",\n backgroundSecondary: \"#252526\",\n backgroundTertiary: \"#333333\",\n backgroundLight: \"rgba(255, 255, 255, 0.03)\",\n backgroundHover: \"rgba(255, 255, 255, 0.05)\",\n surface: \"#252526\",\n textSecondary: \"#cccccc\",\n textTertiary: \"#999999\",\n textMuted: \"#666666\",\n highlightBg: \"rgba(255, 235, 59, 0.2)\",\n highlightBorder: \"rgba(255, 235, 59, 0.4)\"\n },\n buttons: {\n primary: {\n color: \"white\",\n bg: \"primary\",\n \"&:hover\": { bg: \"secondary\" }\n },\n secondary: {\n color: \"primary\",\n bg: \"transparent\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"primary\",\n \"&:hover\": { bg: \"highlight\" }\n },\n ghost: {\n color: \"text\",\n bg: \"transparent\",\n \"&:hover\": { bg: \"backgroundHover\" }\n }\n },\n text: {\n heading: {\n fontFamily: \"heading\",\n fontWeight: \"heading\",\n lineHeight: \"heading\"\n },\n body: {\n fontFamily: \"body\",\n fontWeight: \"body\",\n lineHeight: \"body\"\n },\n caption: {\n fontSize: 1,\n color: \"textSecondary\"\n }\n },\n cards: {\n primary: {\n bg: \"surface\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 1\n },\n secondary: {\n bg: \"backgroundSecondary\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 1\n }\n }\n};\n// src/landingPageTheme.ts\nvar landingPageTheme = {\n space: [0, 4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 80, 100, 128],\n fonts: {\n body: 'Inter, \"Geist Sans\", system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif',\n heading: '-apple-system, BlinkMacSystemFont, \"SF Pro Display\", \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif',\n monospace: '\"SF Mono\", Monaco, Inconsolata, \"Fira Code\", monospace'\n },\n fontSizes: [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 24, 28, 32, 36, 48, 56, 68, 84, 96],\n fontScale: 1,\n fontWeights: {\n body: 400,\n heading: 600,\n bold: 700,\n light: 300,\n medium: 500,\n semibold: 600\n },\n lineHeights: {\n body: 1.6,\n heading: 1.2,\n tight: 1.05,\n relaxed: 1.7\n },\n breakpoints: [\"640px\", \"768px\", \"1024px\", \"1280px\", \"1400px\"],\n sizes: [16, 32, 64, 128, 200, 240, 256, 300, 512, 740, 768, 820, 900, 1024, 1200, 1400, 1536],\n radii: [0, 2, 4, 6, 7, 8, 9, 10, 12, 14, 16, 24],\n shadows: [\n \"none\",\n \"0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)\",\n \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)\",\n \"0 4px 12px rgba(0, 194, 255, 0.4)\",\n \"0 6px 24px rgba(0, 194, 255, 0.1)\",\n \"0 8px 32px rgba(0, 0, 0, 0.4)\"\n ],\n zIndices: [0, 1, 10, 20, 30, 40, 50, 1000],\n colors: {\n text: \"#ffffff\",\n background: \"#000000\",\n primary: \"#00C2FF\",\n secondary: \"#0098CC\",\n accent: \"#0066FF\",\n highlight: \"rgba(0, 194, 255, 0.15)\",\n muted: \"#1a1a1a\",\n success: \"#4caf50\",\n warning: \"#ff9800\",\n error: \"#f44336\",\n info: \"#2196f3\",\n border: \"rgba(0, 194, 255, 0.2)\",\n backgroundSecondary: \"#0a1628\",\n backgroundTertiary: \"#0f1c2e\",\n backgroundLight: \"rgba(0, 194, 255, 0.04)\",\n backgroundHover: \"rgba(0, 194, 255, 0.1)\",\n surface: \"rgba(0, 0, 0, 0.4)\",\n textSecondary: \"#d1d5db\",\n textTertiary: \"#9ca3af\",\n textMuted: \"#6b7280\",\n highlightBg: \"rgba(255, 235, 59, 0.25)\",\n highlightBorder: \"rgba(255, 235, 59, 0.5)\"\n },\n buttons: {\n primary: {\n color: \"#000000\",\n bg: \"#00C2FF\",\n borderWidth: 0,\n padding: \"8px 20px\",\n fontSize: 14,\n fontWeight: 600,\n cursor: \"pointer\",\n \"&:hover\": {\n bg: \"#00D9FF\"\n }\n },\n secondary: {\n color: \"#00C2FF\",\n bg: \"transparent\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"rgba(0, 194, 255, 0.3)\",\n padding: \"8px 16px\",\n fontSize: 14,\n fontWeight: 600,\n cursor: \"pointer\",\n \"&:hover\": {\n bg: \"rgba(0, 194, 255, 0.1)\",\n borderColor: \"#00C2FF\"\n }\n },\n ghost: {\n color: \"#00C2FF\",\n bg: \"transparent\",\n borderWidth: 0,\n padding: \"8px 16px\",\n fontSize: 14,\n fontWeight: 500,\n cursor: \"pointer\",\n \"&:hover\": {\n color: \"#00D9FF\",\n bg: \"rgba(0, 194, 255, 0.1)\"\n }\n }\n },\n text: {\n heading: {\n fontFamily: \"heading\",\n fontWeight: \"heading\",\n lineHeight: \"heading\",\n color: \"#ffffff\"\n },\n body: {\n fontFamily: \"body\",\n fontWeight: \"body\",\n lineHeight: \"body\",\n color: \"text\"\n },\n caption: {\n fontSize: 1,\n color: \"textSecondary\"\n }\n },\n cards: {\n primary: {\n bg: \"surface\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 4\n },\n secondary: {\n bg: \"rgba(0, 194, 255, 0.05)\",\n border: \"1px solid\",\n borderColor: \"rgba(0, 194, 255, 0.2)\",\n borderRadius: 4\n }\n }\n};\nvar landingPageLightTheme = {\n ...landingPageTheme,\n colors: {\n text: \"#1a1a1a\",\n background: \"#ffffff\",\n primary: \"#0098CC\",\n secondary: \"#00C2FF\",\n accent: \"#0066FF\",\n highlight: \"rgba(0, 152, 204, 0.1)\",\n muted: \"#f0f0f0\",\n success: \"#4caf50\",\n warning: \"#ff9800\",\n error: \"#f44336\",\n info: \"#2196f3\",\n border: \"rgba(0, 152, 204, 0.2)\",\n backgroundSecondary: \"#f8f9fa\",\n backgroundTertiary: \"#e9ecef\",\n backgroundLight: \"rgba(0, 152, 204, 0.03)\",\n backgroundHover: \"rgba(0, 152, 204, 0.05)\",\n surface: \"rgba(255, 255, 255, 0.95)\",\n textSecondary: \"#555555\",\n textTertiary: \"#888888\",\n textMuted: \"#aaaaaa\",\n highlightBg: \"rgba(255, 235, 59, 0.3)\",\n highlightBorder: \"rgba(255, 235, 59, 0.6)\"\n },\n buttons: {\n primary: {\n color: \"#ffffff\",\n bg: \"#0098CC\",\n borderWidth: 0,\n padding: \"8px 20px\",\n fontSize: 14,\n fontWeight: 600,\n cursor: \"pointer\",\n \"&:hover\": {\n bg: \"#007aa8\"\n }\n },\n secondary: {\n color: \"#0098CC\",\n bg: \"transparent\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"rgba(0, 152, 204, 0.3)\",\n padding: \"8px 16px\",\n fontSize: 14,\n fontWeight: 600,\n cursor: \"pointer\",\n \"&:hover\": {\n bg: \"rgba(0, 152, 204, 0.05)\",\n borderColor: \"#0098CC\"\n }\n },\n ghost: {\n color: \"#0098CC\",\n bg: \"transparent\",\n borderWidth: 0,\n padding: \"8px 16px\",\n fontSize: 14,\n fontWeight: 500,\n cursor: \"pointer\",\n \"&:hover\": {\n color: \"#007aa8\",\n bg: \"rgba(0, 152, 204, 0.05)\"\n }\n }\n }\n};\n\n// src/themes.ts\nvar regalTheme = {\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n fonts: {\n body: '\"Inter\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n heading: '\"Crimson Text\", \"Georgia\", \"Times New Roman\", serif',\n monospace: '\"Fira Code\", \"SF Mono\", Monaco, Inconsolata, monospace'\n },\n fontSizes: [12, 14, 16, 18, 20, 24, 32, 48, 64, 96],\n fontScale: 1,\n fontWeights: {\n body: 400,\n heading: 600,\n bold: 700,\n light: 300,\n medium: 500,\n semibold: 600\n },\n lineHeights: {\n body: 1.5,\n heading: 1.2,\n tight: 1.25,\n relaxed: 1.75\n },\n breakpoints: [\"640px\", \"768px\", \"1024px\", \"1280px\"],\n sizes: [16, 32, 64, 128, 256, 512, 768, 1024, 1536],\n radii: [0, 2, 4, 6, 8, 12, 16, 24],\n shadows: [\n \"none\",\n \"0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)\",\n \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)\",\n \"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)\",\n \"0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)\",\n \"0 25px 50px -12px rgba(0, 0, 0, 0.25)\"\n ],\n zIndices: [0, 1, 10, 20, 30, 40, 50],\n colors: {\n text: \"#f1e8dc\",\n background: \"#1a1f2e\",\n primary: \"#d4a574\",\n secondary: \"#e0b584\",\n accent: \"#c9b8a3\",\n highlight: \"rgba(212, 165, 116, 0.15)\",\n muted: \"#8b7968\",\n success: \"#5c8a72\",\n warning: \"#d4a574\",\n error: \"#a85751\",\n info: \"#d4a574\",\n border: \"rgba(212, 165, 116, 0.2)\",\n backgroundSecondary: \"#212738\",\n backgroundTertiary: \"#2d3446\",\n backgroundLight: \"rgba(212, 165, 116, 0.08)\",\n backgroundHover: \"rgba(212, 165, 116, 0.15)\",\n surface: \"#212738\",\n textSecondary: \"#c9b8a3\",\n textTertiary: \"#8b7968\",\n textMuted: \"#8b7968\",\n highlightBg: \"rgba(255, 193, 7, 0.25)\",\n highlightBorder: \"rgba(255, 193, 7, 0.5)\"\n },\n buttons: {\n primary: {\n color: \"background\",\n bg: \"primary\",\n \"&:hover\": {\n bg: \"secondary\"\n }\n },\n secondary: {\n color: \"text\",\n bg: \"muted\",\n \"&:hover\": {\n bg: \"backgroundSecondary\"\n }\n },\n ghost: {\n color: \"primary\",\n bg: \"transparent\",\n \"&:hover\": {\n bg: \"muted\"\n }\n }\n },\n text: {\n heading: {\n fontFamily: \"heading\",\n fontWeight: \"heading\",\n lineHeight: \"heading\"\n },\n body: {\n fontFamily: \"body\",\n fontWeight: \"body\",\n lineHeight: \"body\"\n },\n caption: {\n fontSize: 1,\n color: \"textSecondary\"\n }\n },\n cards: {\n primary: {\n bg: \"background\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 2\n },\n secondary: {\n bg: \"backgroundSecondary\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 2\n }\n }\n};\nvar terminalTheme = {\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n fonts: {\n body: '\"SF Mono\", \"Monaco\", \"Inconsolata\", \"Fira Code\", monospace',\n heading: '\"SF Mono\", \"Monaco\", \"Inconsolata\", \"Fira Code\", monospace',\n monospace: '\"SF Mono\", \"Monaco\", \"Inconsolata\", \"Fira Code\", monospace'\n },\n fontSizes: [12, 14, 16, 18, 20, 24, 32, 48, 64, 96],\n fontScale: 1,\n fontWeights: {\n body: 400,\n heading: 500,\n bold: 600,\n light: 300,\n medium: 500,\n semibold: 600\n },\n lineHeights: {\n body: 1.6,\n heading: 1.3,\n tight: 1.4,\n relaxed: 1.8\n },\n breakpoints: [\"640px\", \"768px\", \"1024px\", \"1280px\"],\n sizes: [16, 32, 64, 128, 256, 512, 768, 1024, 1536],\n radii: [0, 2, 4, 6, 8, 12, 16, 24],\n shadows: [\n \"none\",\n \"0 1px 2px 0 rgba(0, 0, 0, 0.05)\",\n \"0 2px 4px 0 rgba(0, 0, 0, 0.06)\",\n \"0 4px 6px 0 rgba(0, 0, 0, 0.07)\",\n \"0 8px 12px 0 rgba(0, 0, 0, 0.08)\",\n \"0 16px 24px 0 rgba(0, 0, 0, 0.10)\"\n ],\n zIndices: [0, 1, 10, 20, 30, 40, 50],\n colors: {\n text: \"#e4e4e4\",\n background: \"rgba(10, 10, 10, 0.85)\",\n primary: \"#66b3ff\",\n secondary: \"#80c4ff\",\n accent: \"#66ff99\",\n highlight: \"rgba(102, 179, 255, 0.15)\",\n muted: \"rgba(26, 26, 26, 0.8)\",\n success: \"#66ff99\",\n warning: \"#ffcc66\",\n error: \"#ff6666\",\n info: \"#66b3ff\",\n border: \"rgba(255, 255, 255, 0.1)\",\n backgroundSecondary: \"rgba(15, 15, 15, 0.9)\",\n backgroundTertiary: \"rgba(20, 20, 20, 0.9)\",\n backgroundLight: \"rgba(255, 255, 255, 0.05)\",\n backgroundHover: \"rgba(102, 179, 255, 0.08)\",\n surface: \"rgba(15, 15, 15, 0.95)\",\n textSecondary: \"rgba(255, 255, 255, 0.7)\",\n textTertiary: \"rgba(255, 255, 255, 0.5)\",\n textMuted: \"rgba(255, 255, 255, 0.4)\",\n highlightBg: \"rgba(255, 235, 59, 0.25)\",\n highlightBorder: \"rgba(255, 235, 59, 0.5)\"\n },\n modes: {\n light: {\n text: \"#1a1a1a\",\n background: \"rgba(255, 255, 255, 0.9)\",\n primary: \"#0066cc\",\n secondary: \"#0052a3\",\n accent: \"#00cc88\",\n highlight: \"rgba(0, 102, 204, 0.08)\",\n muted: \"rgba(245, 245, 245, 0.8)\",\n success: \"#00cc88\",\n warning: \"#ffaa00\",\n error: \"#ff3333\",\n info: \"#0066cc\",\n border: \"rgba(0, 0, 0, 0.1)\",\n backgroundSecondary: \"rgba(250, 250, 250, 0.9)\",\n backgroundTertiary: \"rgba(245, 245, 245, 0.9)\",\n backgroundLight: \"rgba(0, 0, 0, 0.02)\",\n backgroundHover: \"rgba(0, 102, 204, 0.04)\",\n surface: \"rgba(255, 255, 255, 0.95)\",\n textSecondary: \"rgba(0, 0, 0, 0.6)\",\n textTertiary: \"rgba(0, 0, 0, 0.4)\",\n textMuted: \"rgba(0, 0, 0, 0.3)\",\n highlightBg: \"rgba(255, 235, 59, 0.3)\",\n highlightBorder: \"rgba(255, 235, 59, 0.6)\"\n }\n },\n buttons: {\n primary: {\n color: \"white\",\n bg: \"primary\",\n borderWidth: 0,\n \"&:hover\": {\n bg: \"secondary\"\n }\n },\n secondary: {\n color: \"primary\",\n bg: \"transparent\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"primary\",\n \"&:hover\": {\n bg: \"highlight\"\n }\n },\n ghost: {\n color: \"text\",\n bg: \"transparent\",\n \"&:hover\": {\n bg: \"backgroundHover\"\n }\n }\n },\n text: {\n heading: {\n fontFamily: \"heading\",\n fontWeight: \"heading\",\n lineHeight: \"heading\"\n },\n body: {\n fontFamily: \"body\",\n fontWeight: \"body\",\n lineHeight: \"body\"\n },\n caption: {\n fontSize: 1,\n color: \"textSecondary\"\n }\n },\n cards: {\n primary: {\n bg: \"surface\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 1\n },\n secondary: {\n bg: \"backgroundSecondary\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 1\n }\n }\n};\nvar matrixTheme = {\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n fonts: {\n body: '\"Courier New\", \"Courier\", \"Lucida Console\", \"Monaco\", monospace',\n heading: '\"Courier New\", \"Courier\", \"Lucida Console\", \"Monaco\", monospace',\n monospace: '\"Courier New\", \"Courier\", \"Lucida Console\", \"Monaco\", monospace'\n },\n fontSizes: [12, 14, 16, 18, 20, 24, 32, 48, 64, 96],\n fontScale: 1,\n fontWeights: {\n body: 400,\n heading: 500,\n bold: 600,\n light: 300,\n medium: 500,\n semibold: 600\n },\n lineHeights: {\n body: 1.5,\n heading: 1.2,\n tight: 1.3,\n relaxed: 1.7\n },\n breakpoints: [\"640px\", \"768px\", \"1024px\", \"1280px\"],\n sizes: [16, 32, 64, 128, 256, 512, 768, 1024, 1536],\n radii: [0, 2, 4, 6, 8, 12, 16, 24],\n shadows: [\n \"none\",\n \"0 0 5px rgba(0, 216, 53, 0.15)\",\n \"0 0 10px rgba(0, 216, 53, 0.2)\",\n \"0 0 15px rgba(0, 216, 53, 0.25)\",\n \"0 0 20px rgba(0, 216, 53, 0.3)\",\n \"0 0 30px rgba(0, 216, 53, 0.4)\"\n ],\n zIndices: [0, 1, 10, 20, 30, 40, 50],\n colors: {\n text: \"#a8a8a8\",\n background: \"#000000\",\n primary: \"#00d835\",\n secondary: \"#00a828\",\n accent: \"#00d835\",\n highlight: \"rgba(0, 216, 53, 0.15)\",\n muted: \"#0a0a0a\",\n success: \"#00d835\",\n warning: \"#d4a000\",\n error: \"#d63333\",\n info: \"#00a8d6\",\n border: \"rgba(0, 216, 53, 0.2)\",\n backgroundSecondary: \"#0a0a0a\",\n backgroundTertiary: \"#111111\",\n backgroundLight: \"rgba(0, 216, 53, 0.03)\",\n backgroundHover: \"rgba(0, 216, 53, 0.08)\",\n surface: \"#050505\",\n textSecondary: \"#808080\",\n textTertiary: \"#606060\",\n textMuted: \"#484848\",\n highlightBg: \"rgba(0, 216, 53, 0.25)\",\n highlightBorder: \"rgba(0, 216, 53, 0.5)\"\n },\n buttons: {\n primary: {\n color: \"black\",\n bg: \"primary\",\n borderWidth: 0,\n \"&:hover\": {\n bg: \"secondary\"\n }\n },\n secondary: {\n color: \"primary\",\n bg: \"transparent\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"primary\",\n \"&:hover\": {\n bg: \"highlight\"\n }\n },\n ghost: {\n color: \"text\",\n bg: \"transparent\",\n \"&:hover\": {\n bg: \"backgroundHover\"\n }\n }\n },\n text: {\n heading: {\n fontFamily: \"heading\",\n fontWeight: \"heading\",\n lineHeight: \"heading\"\n },\n body: {\n fontFamily: \"body\",\n fontWeight: \"body\",\n lineHeight: \"body\"\n },\n caption: {\n fontSize: 1,\n color: \"textSecondary\"\n }\n },\n cards: {\n primary: {\n bg: \"surface\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 0\n },\n secondary: {\n bg: \"backgroundSecondary\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 0\n }\n }\n};\nvar matrixMinimalTheme = {\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n fonts: {\n body: '\"Courier New\", \"Courier\", \"Lucida Console\", \"Monaco\", monospace',\n heading: '\"Courier New\", \"Courier\", \"Lucida Console\", \"Monaco\", monospace',\n monospace: '\"Courier New\", \"Courier\", \"Lucida Console\", \"Monaco\", monospace'\n },\n fontSizes: [12, 14, 16, 18, 20, 24, 32, 48, 64, 96],\n fontScale: 1,\n fontWeights: {\n body: 400,\n heading: 500,\n bold: 600,\n light: 300,\n medium: 500,\n semibold: 600\n },\n lineHeights: {\n body: 1.5,\n heading: 1.2,\n tight: 1.3,\n relaxed: 1.7\n },\n breakpoints: [\"640px\", \"768px\", \"1024px\", \"1280px\"],\n sizes: [16, 32, 64, 128, 256, 512, 768, 1024, 1536],\n radii: [0, 2, 4, 6, 8, 12, 16, 24],\n shadows: [\n \"none\",\n \"0 1px 2px rgba(0, 0, 0, 0.05)\",\n \"0 2px 4px rgba(0, 0, 0, 0.1)\",\n \"0 4px 8px rgba(0, 0, 0, 0.15)\",\n \"0 8px 16px rgba(0, 0, 0, 0.2)\",\n \"0 0 20px rgba(0, 216, 53, 0.1)\"\n ],\n zIndices: [0, 1, 10, 20, 30, 40, 50],\n colors: {\n text: \"#a8a8a8\",\n background: \"#000000\",\n primary: \"#b8b8b8\",\n secondary: \"#909090\",\n accent: \"#00d835\",\n highlight: \"rgba(0, 216, 53, 0.1)\",\n muted: \"#0a0a0a\",\n success: \"#00d835\",\n warning: \"#d4a000\",\n error: \"#d63333\",\n info: \"#00a8d6\",\n border: \"rgba(184, 184, 184, 0.1)\",\n backgroundSecondary: \"#0a0a0a\",\n backgroundTertiary: \"#111111\",\n backgroundLight: \"rgba(184, 184, 184, 0.02)\",\n backgroundHover: \"rgba(0, 216, 53, 0.05)\",\n surface: \"#050505\",\n textSecondary: \"#808080\",\n textTertiary: \"#606060\",\n textMuted: \"#484848\",\n highlightBg: \"rgba(0, 216, 53, 0.2)\",\n highlightBorder: \"rgba(0, 216, 53, 0.4)\"\n },\n buttons: {\n primary: {\n color: \"black\",\n bg: \"primary\",\n borderWidth: 0,\n \"&:hover\": {\n bg: \"secondary\"\n }\n },\n secondary: {\n color: \"primary\",\n bg: \"transparent\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"primary\",\n \"&:hover\": {\n bg: \"backgroundHover\"\n }\n },\n ghost: {\n color: \"text\",\n bg: \"transparent\",\n \"&:hover\": {\n bg: \"backgroundHover\"\n }\n }\n },\n text: {\n heading: {\n fontFamily: \"heading\",\n fontWeight: \"heading\",\n lineHeight: \"heading\"\n },\n body: {\n fontFamily: \"body\",\n fontWeight: \"body\",\n lineHeight: \"body\"\n },\n caption: {\n fontSize: 1,\n color: \"textSecondary\"\n }\n },\n cards: {\n primary: {\n bg: \"surface\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 0\n },\n secondary: {\n bg: \"backgroundSecondary\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 0\n }\n }\n};\nvar slateTheme = {\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n fonts: {\n body: '\"Inter\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n heading: '\"Inter\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n monospace: '\"Fira Code\", \"SF Mono\", Monaco, Inconsolata, monospace'\n },\n fontSizes: [12, 14, 16, 18, 20, 24, 32, 48, 64, 96],\n fontScale: 1,\n fontWeights: {\n body: 400,\n heading: 600,\n bold: 700,\n light: 300,\n medium: 500,\n semibold: 600\n },\n lineHeights: {\n body: 1.6,\n heading: 1.3,\n tight: 1.25,\n relaxed: 1.75\n },\n breakpoints: [\"640px\", \"768px\", \"1024px\", \"1280px\"],\n sizes: [16, 32, 64, 128, 256, 512, 768, 1024, 1536],\n radii: [0, 2, 4, 6, 8, 12, 16, 24],\n shadows: [\n \"none\",\n \"0 1px 3px 0 rgba(0, 0, 0, 0.2)\",\n \"0 4px 6px -1px rgba(0, 0, 0, 0.2)\",\n \"0 10px 15px -3px rgba(0, 0, 0, 0.2)\",\n \"0 20px 25px -5px rgba(0, 0, 0, 0.25)\",\n \"0 25px 50px -12px rgba(0, 0, 0, 0.3)\"\n ],\n zIndices: [0, 1, 10, 20, 30, 40, 50],\n colors: {\n text: \"#9ca3af\",\n background: \"#1a1c1e\",\n primary: \"#d1d5db\",\n secondary: \"#6b7280\",\n accent: \"#f59e0b\",\n highlight: \"rgba(209, 213, 219, 0.15)\",\n muted: \"#2d3134\",\n success: \"#10b981\",\n warning: \"#f59e0b\",\n error: \"#ef4444\",\n info: \"#3b82f6\",\n border: \"rgba(156, 163, 175, 0.15)\",\n backgroundSecondary: \"#22252a\",\n backgroundTertiary: \"#2d3134\",\n backgroundLight: \"rgba(156, 163, 175, 0.05)\",\n backgroundHover: \"rgba(156, 163, 175, 0.1)\",\n surface: \"#1f2124\",\n textSecondary: \"#e5e7eb\",\n textTertiary: \"#6b7280\",\n textMuted: \"#4b5563\",\n highlightBg: \"rgba(245, 158, 11, 0.25)\",\n highlightBorder: \"rgba(245, 158, 11, 0.5)\"\n },\n buttons: {\n primary: {\n color: \"#1a1c1e\",\n bg: \"primary\",\n borderWidth: 0,\n \"&:hover\": {\n bg: \"#9ca3af\"\n }\n },\n secondary: {\n color: \"#e5e7eb\",\n bg: \"secondary\",\n borderWidth: 0,\n \"&:hover\": {\n bg: \"#4b5563\"\n }\n },\n ghost: {\n color: \"textSecondary\",\n bg: \"transparent\",\n \"&:hover\": {\n bg: \"backgroundHover\"\n }\n }\n },\n text: {\n heading: {\n fontFamily: \"heading\",\n fontWeight: \"heading\",\n lineHeight: \"heading\",\n color: \"textSecondary\"\n },\n body: {\n fontFamily: \"body\",\n fontWeight: \"body\",\n lineHeight: \"body\"\n },\n caption: {\n fontSize: 1,\n color: \"textTertiary\"\n }\n },\n cards: {\n primary: {\n bg: \"surface\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 3\n },\n secondary: {\n bg: \"backgroundSecondary\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 3\n }\n }\n};\n// src/ThemeProvider.tsx\nimport React, { createContext, useContext, useState, useEffect } from \"react\";\n\n// src/themeHelpers.ts\nfunction overrideColors(theme, colors) {\n return {\n ...theme,\n colors: {\n ...theme.colors,\n ...colors\n }\n };\n}\nfunction makeTheme(baseTheme, overrides) {\n return {\n ...baseTheme,\n ...overrides,\n colors: {\n ...baseTheme.colors,\n ...overrides.colors\n },\n fonts: {\n ...baseTheme.fonts,\n ...overrides.fonts\n }\n };\n}\nfunction addMode(theme, modeName, colors, baseMode) {\n let baseColors;\n if (baseMode && theme.modes && theme.modes[baseMode]) {\n baseColors = {\n ...theme.colors,\n ...theme.modes[baseMode]\n };\n } else {\n baseColors = theme.colors;\n }\n const newMode = {\n ...baseColors,\n ...colors\n };\n return {\n ...theme,\n modes: {\n ...theme.modes,\n [modeName]: newMode\n }\n };\n}\nfunction getMode(theme, mode) {\n if (!mode || !theme.modes || !theme.modes[mode]) {\n return theme.colors;\n }\n return {\n ...theme.colors,\n ...theme.modes[mode]\n };\n}\n\n// src/ThemeProvider.tsx\nvar ThemeContext;\nvar getThemeContext = () => {\n if (typeof window !== \"undefined\") {\n const globalWindow = window;\n if (!globalWindow.__principlemd_theme_context__) {\n globalWindow.__principlemd_theme_context__ = createContext(undefined);\n }\n return globalWindow.__principlemd_theme_context__;\n } else {\n if (!ThemeContext) {\n ThemeContext = createContext(undefined);\n }\n return ThemeContext;\n }\n};\nvar ThemeContextSingleton = getThemeContext();\nvar useTheme = () => {\n const context = useContext(ThemeContextSingleton);\n if (!context) {\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n }\n return context;\n};\nvar ThemeProvider = ({\n children,\n theme: customTheme = theme,\n initialMode\n}) => {\n const [mode, setMode] = useState(initialMode);\n const activeTheme = React.useMemo(() => {\n if (!mode || !customTheme.modes || !customTheme.modes[mode]) {\n return customTheme;\n }\n return {\n ...customTheme,\n colors: getMode(customTheme, mode)\n };\n }, [customTheme, mode]);\n useEffect(() => {\n if (!initialMode) {\n const savedMode = localStorage.getItem(\"principlemd-theme-mode\");\n if (savedMode) {\n setMode(savedMode);\n }\n }\n }, [initialMode]);\n useEffect(() => {\n if (mode) {\n localStorage.setItem(\"principlemd-theme-mode\", mode);\n } else {\n localStorage.removeItem(\"principlemd-theme-mode\");\n }\n }, [mode]);\n const value = {\n theme: activeTheme,\n mode,\n setMode\n };\n return /* @__PURE__ */ React.createElement(ThemeContextSingleton.Provider, {\n value\n }, children);\n};\nvar withTheme = (Component) => {\n return (props) => {\n const { theme: theme2 } = useTheme();\n return /* @__PURE__ */ React.createElement(Component, {\n ...props,\n theme: theme2\n });\n };\n};\n// src/utils.ts\nvar getColor = (theme2, colorKey) => {\n const colors = theme2.colors;\n const value = colors[colorKey];\n return typeof value === \"string\" ? value : colorKey;\n};\nvar getSpace = (theme2, index) => {\n return theme2.space[index] || 0;\n};\nvar getFontSize = (theme2, index) => {\n return theme2.fontSizes[index] || theme2.fontSizes[2];\n};\nvar getRadius = (theme2, index) => {\n return theme2.radii[index] || 0;\n};\nvar getShadow = (theme2, index) => {\n return theme2.shadows[index] || \"none\";\n};\nvar getZIndex = (theme2, index) => {\n return theme2.zIndices[index] || 0;\n};\nvar responsive = (values) => {\n return values.reduce((acc, value, index) => {\n if (index === 0) {\n return value;\n }\n return {\n ...acc,\n [`@media screen and (min-width: ${values[index - 1]})`]: value\n };\n }, {});\n};\nvar sx = (styles) => styles;\nvar createStyle = (theme2, styleObj) => {\n const processValue = (value) => {\n if (typeof value === \"string\") {\n if (value in theme2.colors) {\n return getColor(theme2, value);\n }\n return value;\n }\n if (typeof value === \"number\") {\n return value;\n }\n if (Array.isArray(value)) {\n return value.map(processValue);\n }\n if (typeof value === \"object\" && value !== null) {\n const processed2 = {};\n for (const [key, val] of Object.entries(value)) {\n processed2[key] = processValue(val);\n }\n return processed2;\n }\n return value;\n };\n const processed = {};\n for (const [key, val] of Object.entries(styleObj)) {\n processed[key] = processValue(val);\n }\n return processed;\n};\nvar mergeThemes = (baseTheme, ...overrides) => {\n return overrides.reduce((theme2, override) => ({\n space: override.space || theme2.space,\n fonts: { ...theme2.fonts, ...override.fonts || {} },\n fontSizes: override.fontSizes || theme2.fontSizes,\n fontWeights: { ...theme2.fontWeights, ...override.fontWeights || {} },\n lineHeights: { ...theme2.lineHeights, ...override.lineHeights || {} },\n breakpoints: override.breakpoints || theme2.breakpoints,\n sizes: override.sizes || theme2.sizes,\n radii: override.radii || theme2.radii,\n shadows: override.shadows || theme2.shadows,\n zIndices: override.zIndices || theme2.zIndices,\n colors: {\n ...theme2.colors,\n ...override.colors || {}\n },\n buttons: { ...theme2.buttons, ...override.buttons || {} },\n text: { ...theme2.text, ...override.text || {} },\n cards: { ...theme2.cards, ...override.cards || {} }\n }), baseTheme);\n};\n// src/ThemeShowcase.tsx\nimport React2 from \"react\";\nvar ThemeShowcase = ({\n theme: theme2,\n title,\n showValues = true,\n sections = [\"colors\", \"typography\", \"spacing\", \"shadows\", \"radii\"]\n}) => {\n const containerStyle = {\n fontFamily: theme2.fonts.body,\n color: theme2.colors.text,\n backgroundColor: theme2.colors.background,\n padding: theme2.space[4],\n minHeight: \"100vh\"\n };\n const sectionStyle = {\n marginBottom: theme2.space[5],\n padding: theme2.space[4],\n backgroundColor: theme2.colors.surface || theme2.colors.backgroundSecondary,\n borderRadius: theme2.radii[2],\n border: `1px solid ${theme2.colors.border}`\n };\n const headingStyle = {\n fontFamily: theme2.fonts.heading,\n fontSize: theme2.fontSizes[5],\n fontWeight: theme2.fontWeights.heading,\n marginBottom: theme2.space[3],\n color: theme2.colors.primary\n };\n const subheadingStyle = {\n fontFamily: theme2.fonts.heading,\n fontSize: theme2.fontSizes[3],\n fontWeight: theme2.fontWeights.medium,\n marginBottom: theme2.space[2],\n marginTop: theme2.space[3],\n color: theme2.colors.text\n };\n return /* @__PURE__ */ React2.createElement(\"div\", {\n style: containerStyle\n }, title && /* @__PURE__ */ React2.createElement(\"h1\", {\n style: {\n ...headingStyle,\n fontSize: theme2.fontSizes[6],\n marginBottom: theme2.space[4]\n }\n }, title), sections.includes(\"colors\") && /* @__PURE__ */ React2.createElement(\"div\", {\n style: sectionStyle\n }, /* @__PURE__ */ React2.createElement(\"h2\", {\n style: headingStyle\n }, \"Colors\"), /* @__PURE__ */ React2.createElement(\"h3\", {\n style: subheadingStyle\n }, \"Primary Colors\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fill, minmax(200px, 1fr))\",\n gap: theme2.space[3],\n marginBottom: theme2.space[3]\n }\n }, [\"text\", \"background\", \"primary\", \"secondary\", \"accent\", \"muted\"].map((key) => {\n const color = theme2.colors[key];\n if (!color)\n return null;\n return /* @__PURE__ */ React2.createElement(\"div\", {\n key,\n style: {\n display: \"flex\",\n alignItems: \"center\",\n padding: theme2.space[2],\n backgroundColor: theme2.colors.backgroundLight || theme2.colors.backgroundTertiary,\n borderRadius: theme2.radii[1]\n }\n }, /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n width: 40,\n height: 40,\n backgroundColor: color,\n border: `1px solid ${theme2.colors.border}`,\n borderRadius: theme2.radii[1],\n marginRight: theme2.space[2]\n }\n }), /* @__PURE__ */ React2.createElement(\"div\", null, /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[1],\n fontWeight: theme2.fontWeights.medium\n }\n }, key), showValues && /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[0],\n color: theme2.colors.textSecondary\n }\n }, color)));\n })), /* @__PURE__ */ React2.createElement(\"h3\", {\n style: subheadingStyle\n }, \"Status Colors\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fill, minmax(200px, 1fr))\",\n gap: theme2.space[3],\n marginBottom: theme2.space[3]\n }\n }, [\"success\", \"warning\", \"error\", \"info\"].map((key) => {\n const color = theme2.colors[key];\n if (!color)\n return null;\n return /* @__PURE__ */ React2.createElement(\"div\", {\n key,\n style: {\n display: \"flex\",\n alignItems: \"center\",\n padding: theme2.space[2],\n backgroundColor: theme2.colors.backgroundLight || theme2.colors.backgroundTertiary,\n borderRadius: theme2.radii[1]\n }\n }, /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n width: 40,\n height: 40,\n backgroundColor: color,\n border: `1px solid ${theme2.colors.border}`,\n borderRadius: theme2.radii[1],\n marginRight: theme2.space[2]\n }\n }), /* @__PURE__ */ React2.createElement(\"div\", null, /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[1],\n fontWeight: theme2.fontWeights.medium\n }\n }, key), showValues && /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[0],\n color: theme2.colors.textSecondary\n }\n }, color)));\n })), /* @__PURE__ */ React2.createElement(\"h3\", {\n style: subheadingStyle\n }, \"Background Colors\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fill, minmax(200px, 1fr))\",\n gap: theme2.space[3]\n }\n }, [\"backgroundSecondary\", \"backgroundTertiary\", \"backgroundLight\", \"backgroundHover\", \"surface\"].map((key) => {\n const color = theme2.colors[key];\n if (!color)\n return null;\n return /* @__PURE__ */ React2.createElement(\"div\", {\n key,\n style: {\n padding: theme2.space[3],\n backgroundColor: color,\n border: `1px solid ${theme2.colors.border}`,\n borderRadius: theme2.radii[1]\n }\n }, /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[1],\n fontWeight: theme2.fontWeights.medium\n }\n }, key), showValues && /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[0],\n color: theme2.colors.textSecondary,\n marginTop: theme2.space[1]\n }\n }, color));\n }))), sections.includes(\"typography\") && /* @__PURE__ */ React2.createElement(\"div\", {\n style: sectionStyle\n }, /* @__PURE__ */ React2.createElement(\"h2\", {\n style: headingStyle\n }, \"Typography\"), /* @__PURE__ */ React2.createElement(\"h3\", {\n style: subheadingStyle\n }, \"Font Families\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: { marginBottom: theme2.space[4] }\n }, /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.heading,\n fontSize: theme2.fontSizes[4],\n marginBottom: theme2.space[2]\n }\n }, \"Heading Font: \", showValues && /* @__PURE__ */ React2.createElement(\"span\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[1],\n color: theme2.colors.textSecondary\n }\n }, \" \", theme2.fonts.heading)), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.body,\n fontSize: theme2.fontSizes[2],\n marginBottom: theme2.space[2]\n }\n }, \"Body Font: \", showValues && /* @__PURE__ */ React2.createElement(\"span\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[1],\n color: theme2.colors.textSecondary\n }\n }, \" \", theme2.fonts.body)), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[2]\n }\n }, \"Monospace Font: \", showValues && /* @__PURE__ */ React2.createElement(\"span\", {\n style: {\n fontSize: theme2.fontSizes[1],\n color: theme2.colors.textSecondary\n }\n }, \" \", theme2.fonts.monospace))), /* @__PURE__ */ React2.createElement(\"h3\", {\n style: subheadingStyle\n }, \"Font Sizes\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: { marginBottom: theme2.space[4] }\n }, theme2.fontSizes.map((size, index) => /* @__PURE__ */ React2.createElement(\"div\", {\n key: index,\n style: {\n fontSize: size,\n lineHeight: theme2.lineHeights.body,\n marginBottom: theme2.space[1]\n }\n }, \"Size \", index, \": Sample Text \", showValues && `(${size}px)`))), /* @__PURE__ */ React2.createElement(\"h3\", {\n style: subheadingStyle\n }, \"Font Weights\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(150px, 1fr))\",\n gap: theme2.space[2]\n }\n }, Object.entries(theme2.fontWeights).map(([name, weight]) => /* @__PURE__ */ React2.createElement(\"div\", {\n key: name,\n style: {\n fontWeight: weight,\n fontSize: theme2.fontSizes[2]\n }\n }, name, \" \", showValues && `(${weight})`)))), sections.includes(\"spacing\") && /* @__PURE__ */ React2.createElement(\"div\", {\n style: sectionStyle\n }, /* @__PURE__ */ React2.createElement(\"h2\", {\n style: headingStyle\n }, \"Spacing\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: { display: \"flex\", flexDirection: \"column\", gap: theme2.space[2] }\n }, theme2.space.map((space, index) => /* @__PURE__ */ React2.createElement(\"div\", {\n key: index,\n style: { display: \"flex\", alignItems: \"center\" }\n }, /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n width: 60,\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[1],\n color: theme2.colors.textSecondary\n }\n }, \"[\", index, \"]\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n height: 24,\n width: space,\n backgroundColor: theme2.colors.primary,\n borderRadius: theme2.radii[1]\n }\n }), showValues && /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n marginLeft: theme2.space[2],\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[1],\n color: theme2.colors.textSecondary\n }\n }, space, \"px\"))))), sections.includes(\"radii\") && /* @__PURE__ */ React2.createElement(\"div\", {\n style: sectionStyle\n }, /* @__PURE__ */ React2.createElement(\"h2\", {\n style: headingStyle\n }, \"Border Radii\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fill, minmax(100px, 1fr))\",\n gap: theme2.space[3]\n }\n }, theme2.radii.map((radius, index) => /* @__PURE__ */ React2.createElement(\"div\", {\n key: index,\n style: { textAlign: \"center\" }\n }, /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n width: 80,\n height: 80,\n backgroundColor: theme2.colors.primary,\n borderRadius: radius,\n marginBottom: theme2.space[1],\n margin: \"0 auto\"\n }\n }), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[0],\n color: theme2.colors.textSecondary\n }\n }, \"[\", index, \"] \", showValues && `${radius}px`))))), sections.includes(\"shadows\") && /* @__PURE__ */ React2.createElement(\"div\", {\n style: sectionStyle\n }, /* @__PURE__ */ React2.createElement(\"h2\", {\n style: headingStyle\n }, \"Shadows\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fill, minmax(150px, 1fr))\",\n gap: theme2.space[4]\n }\n }, theme2.shadows.map((shadow, index) => /* @__PURE__ */ React2.createElement(\"div\", {\n key: index,\n style: { textAlign: \"center\" }\n }, /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n width: 100,\n height: 100,\n backgroundColor: theme2.colors.background,\n boxShadow: shadow,\n borderRadius: theme2.radii[2],\n margin: \"0 auto\",\n marginBottom: theme2.space[2],\n border: `1px solid ${theme2.colors.border}`\n }\n }), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[0],\n color: theme2.colors.textSecondary\n }\n }, \"Shadow [\", index, \"]\"), showValues && /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[0],\n color: theme2.colors.textMuted,\n marginTop: theme2.space[1]\n }\n }, shadow === \"none\" ? \"none\" : \"...\"))))), theme2.modes && Object.keys(theme2.modes).length > 0 && /* @__PURE__ */ React2.createElement(\"div\", {\n style: sectionStyle\n }, /* @__PURE__ */ React2.createElement(\"h2\", {\n style: headingStyle\n }, \"Available Modes\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n display: \"flex\",\n gap: theme2.space[2],\n flexWrap: \"wrap\"\n }\n }, /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n padding: `${theme2.space[2]}px ${theme2.space[3]}px`,\n backgroundColor: theme2.colors.primary,\n color: \"#ffffff\",\n borderRadius: theme2.radii[2],\n fontFamily: theme2.fonts.body,\n fontSize: theme2.fontSizes[1]\n }\n }, \"default\"), Object.keys(theme2.modes).map((modeName) => /* @__PURE__ */ React2.createElement(\"div\", {\n key: modeName,\n style: {\n padding: `${theme2.space[2]}px ${theme2.space[3]}px`,\n backgroundColor: theme2.colors.secondary,\n color: theme2.colors.text,\n borderRadius: theme2.radii[2],\n fontFamily: theme2.fonts.body,\n fontSize: theme2.fontSizes[1]\n }\n }, modeName)))));\n};\n\n// src/index.ts\nvar theme = terminalTheme;\nfunction scaleThemeFonts(theme2, scale) {\n const currentScale = theme2.fontScale || 1;\n const effectiveScale = scale / currentScale;\n return {\n ...theme2,\n fontSizes: theme2.fontSizes.map((size) => Math.round(size * effectiveScale)),\n fontScale: scale\n };\n}\nfunction increaseFontScale(theme2) {\n const currentScale = theme2.fontScale || 1;\n const newScale = Math.min(currentScale * 1.1, 2);\n return scaleThemeFonts(theme2, newScale);\n}\nfunction decreaseFontScale(theme2) {\n const currentScale = theme2.fontScale || 1;\n const newScale = Math.max(currentScale * 0.9, 0.5);\n return scaleThemeFonts(theme2, newScale);\n}\nfunction resetFontScale(theme2) {\n return scaleThemeFonts(theme2, 1);\n}\nvar src_default = theme;\nexport {\n withTheme,\n useTheme,\n theme,\n terminalTheme,\n sx,\n slateTheme,\n scaleThemeFonts,\n responsive,\n resetFontScale,\n regalTheme,\n overrideColors,\n mergeThemes,\n matrixTheme,\n matrixMinimalTheme,\n makeTheme,\n landingPageTheme,\n landingPageLightTheme,\n increaseFontScale,\n glassmorphismTheme,\n getZIndex,\n getSpace,\n getShadow,\n getRadius,\n getMode,\n getFontSize,\n getColor,\n defaultTerminalTheme,\n defaultMarkdownTheme,\n defaultEditorTheme,\n src_default as default,\n decreaseFontScale,\n createStyle,\n addMode,\n ThemeShowcase,\n ThemeProvider\n};\n","/**\n * Mock Data Generator for Kanban Panel Testing\n *\n * Generates sample task data matching the Backlog.md Task interface\n * for testing and development purposes.\n */\n\nimport type { Task } from '../backlog-types';\n\n/**\n * Generate mock tasks for testing the kanban board\n */\nexport function generateMockTasks(): Task[] {\n return [\n {\n id: 'task-001',\n title: 'Implement user authentication',\n status: 'To Do',\n assignee: ['alice@example.com'],\n createdDate: '2025-11-01T10:00:00Z',\n updatedDate: '2025-11-15T14:30:00Z',\n labels: ['feature', 'security'],\n dependencies: [],\n description: 'Add OAuth2 authentication flow with support for multiple providers (Google, GitHub). Include session management and token refresh logic.',\n priority: 'high',\n ordinal: 1,\n filePath: 'backlog/task-001.md',\n source: 'local' as const,\n },\n {\n id: 'task-002',\n title: 'Design database schema',\n status: 'To Do',\n assignee: ['bob@example.com'],\n createdDate: '2025-11-02T09:15:00Z',\n labels: ['database', 'architecture'],\n dependencies: [],\n description: 'Create normalized database schema for user data, tasks, and relationships. Include migration scripts.',\n priority: 'high',\n ordinal: 2,\n filePath: 'backlog/task-002.md',\n source: 'local' as const,\n },\n {\n id: 'task-003',\n title: 'Build REST API endpoints',\n status: 'In Progress',\n assignee: ['charlie@example.com'],\n createdDate: '2025-11-03T11:20:00Z',\n updatedDate: '2025-11-16T09:00:00Z',\n labels: ['backend', 'api'],\n dependencies: ['task-002'],\n description: 'Implement RESTful API endpoints for CRUD operations. Include validation, error handling, and rate limiting.',\n implementationPlan: `\n## Implementation Steps\n1. Set up Express/Fastify server\n2. Define API routes and handlers\n3. Add request validation middleware\n4. Implement error handling\n5. Add rate limiting\n6. Write API documentation\n `.trim(),\n priority: 'high',\n ordinal: 1,\n filePath: 'backlog/task-003.md',\n source: 'local' as const,\n },\n {\n id: 'task-004',\n title: 'Create UI component library',\n status: 'In Progress',\n assignee: ['diana@example.com', 'eve@example.com'],\n createdDate: '2025-11-04T13:45:00Z',\n updatedDate: '2025-11-17T16:20:00Z',\n labels: ['frontend', 'ui'],\n dependencies: [],\n description: 'Build reusable React components with TypeScript. Include buttons, forms, modals, and data tables.',\n priority: 'medium',\n ordinal: 2,\n acceptanceCriteriaItems: [\n { index: 0, text: 'All components are fully typed', checked: true },\n { index: 1, text: 'Components support theme customization', checked: true },\n { index: 2, text: 'Storybook stories for each component', checked: false },\n { index: 3, text: 'Accessibility audit passes', checked: false },\n ],\n filePath: 'backlog/task-004.md',\n source: 'local' as const,\n },\n {\n id: 'task-005',\n title: 'Set up CI/CD pipeline',\n status: 'Done',\n assignee: ['frank@example.com'],\n createdDate: '2025-11-05T08:30:00Z',\n updatedDate: '2025-11-10T17:00:00Z',\n labels: ['devops', 'automation'],\n dependencies: [],\n description: 'Configure GitHub Actions for automated testing, building, and deployment.',\n priority: 'medium',\n ordinal: 1,\n filePath: 'backlog/task-005.md',\n source: 'completed' as const,\n },\n {\n id: 'task-006',\n title: 'Write unit tests',\n status: 'Done',\n assignee: ['grace@example.com'],\n createdDate: '2025-11-06T10:00:00Z',\n updatedDate: '2025-11-12T14:30:00Z',\n labels: ['testing', 'quality'],\n dependencies: ['task-003'],\n description: 'Add comprehensive unit tests for all API endpoints and utility functions. Aim for 80%+ coverage.',\n priority: 'medium',\n ordinal: 2,\n filePath: 'backlog/task-006.md',\n source: 'completed' as const,\n },\n {\n id: 'task-007',\n title: 'Optimize database queries',\n status: 'To Do',\n assignee: ['henry@example.com'],\n createdDate: '2025-11-07T15:20:00Z',\n labels: ['performance', 'database'],\n dependencies: ['task-002', 'task-003'],\n description: 'Profile and optimize slow database queries. Add indexes where needed.',\n priority: 'low',\n ordinal: 3,\n filePath: 'backlog/task-007.md',\n source: 'local' as const,\n },\n {\n id: 'task-008',\n title: 'Implement real-time notifications',\n status: 'To Do',\n assignee: [],\n createdDate: '2025-11-08T09:45:00Z',\n labels: ['feature', 'realtime'],\n dependencies: ['task-003'],\n description: 'Add WebSocket support for real-time notifications when tasks are updated or assigned.',\n priority: 'low',\n ordinal: 4,\n filePath: 'backlog/task-008.md',\n source: 'local' as const,\n },\n ];\n}\n\n/**\n * Get default status columns for the kanban board\n */\nexport function getDefaultStatuses(): string[] {\n return ['To Do', 'In Progress', 'Done'];\n}\n\n/**\n * Get mock configuration for the kanban panel\n */\nexport function getMockPanelConfig() {\n return {\n dataSource: 'mock' as const,\n columns: getDefaultStatuses(),\n defaultColumn: 'To Do',\n showDescription: true,\n truncateLength: 150,\n showLabels: true,\n showAssignees: true,\n showPriority: true,\n enableDragDrop: true,\n enableEdit: false,\n enableCreate: false,\n };\n}\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Task } from '../backlog-types';\nimport { generateMockTasks, getDefaultStatuses } from '../mocks/mockData';\n\nexport interface UseKanbanDataResult {\n tasks: Task[];\n statuses: string[];\n isLoading: boolean;\n error: string | null;\n tasksByStatus: Map<string, Task[]>;\n refreshData: () => Promise<void>;\n updateTaskStatus: (taskId: string, newStatus: string) => Promise<void>;\n}\n\n/**\n * Hook for managing kanban board data\n * Currently uses mock data, will be extended to fetch from Backlog.md files\n */\nexport function useKanbanData(): UseKanbanDataResult {\n const [tasks, setTasks] = useState<Task[]>(() => generateMockTasks());\n const [statuses] = useState<string[]>(() => getDefaultStatuses());\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n // Group tasks by status\n const tasksByStatus = useMemo(() => {\n const grouped = new Map<string, Task[]>();\n\n // Initialize all status columns\n for (const status of statuses) {\n grouped.set(status, []);\n }\n\n // Group tasks by status\n for (const task of tasks) {\n const statusKey = task.status ?? '';\n const list = grouped.get(statusKey);\n if (list) {\n list.push(task);\n }\n }\n\n // Sort tasks within each status\n for (const [status, taskList] of grouped.entries()) {\n taskList.sort((a, b) => {\n // Sort by ordinal first\n if (a.ordinal !== undefined && b.ordinal !== undefined) {\n return a.ordinal - b.ordinal;\n }\n\n // Then by priority (high > medium > low)\n const priorityOrder = { high: 3, medium: 2, low: 1 };\n const aPriority = priorityOrder[a.priority as keyof typeof priorityOrder] || 0;\n const bPriority = priorityOrder[b.priority as keyof typeof priorityOrder] || 0;\n\n if (aPriority !== bPriority) {\n return bPriority - aPriority; // Higher priority first\n }\n\n // Finally by creation date (newest first)\n return new Date(b.createdDate).getTime() - new Date(a.createdDate).getTime();\n });\n\n grouped.set(status, taskList);\n }\n\n return grouped;\n }, [tasks, statuses]);\n\n // Refresh data (currently just resets to mock data)\n const refreshData = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n\n try {\n // Simulate API delay\n await new Promise(resolve => setTimeout(resolve, 500));\n\n // In the future, this would fetch from Backlog.md files\n const newTasks = generateMockTasks();\n setTasks(newTasks);\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to refresh data');\n } finally {\n setIsLoading(false);\n }\n }, []);\n\n // Update task status (optimistic update)\n const updateTaskStatus = useCallback(async (taskId: string, newStatus: string) => {\n setError(null);\n\n // Optimistic update\n setTasks(prevTasks =>\n prevTasks.map(task =>\n task.id === taskId\n ? { ...task, status: newStatus, updatedDate: new Date().toISOString() }\n : task\n )\n );\n\n try {\n // Simulate API delay\n await new Promise(resolve => setTimeout(resolve, 300));\n\n // In the future, this would update the markdown file\n // Task status update: ${taskId} -> ${newStatus}\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to update task');\n\n // Revert on error\n setTasks(generateMockTasks());\n }\n }, []);\n\n return {\n tasks,\n statuses,\n isLoading,\n error,\n tasksByStatus,\n refreshData,\n updateTaskStatus,\n };\n}\n","import React from 'react';\nimport { useTheme } from '@principal-ade/industry-theme';\nimport type { Task } from '../backlog-types';\n\ninterface KanbanColumnProps {\n status: string;\n tasks: Task[];\n onTaskClick?: (task: Task) => void;\n}\n\nexport const KanbanColumn: React.FC<KanbanColumnProps> = ({\n status,\n tasks,\n onTaskClick,\n}) => {\n const { theme } = useTheme();\n\n const getPriorityColor = (priority?: string) => {\n switch (priority) {\n case 'high':\n return theme.colors.error;\n case 'medium':\n return theme.colors.warning;\n case 'low':\n return theme.colors.info;\n default:\n return theme.colors.border;\n }\n };\n\n return (\n <div\n style={{\n flex: '0 0 320px',\n display: 'flex',\n flexDirection: 'column',\n gap: '12px',\n background: theme.colors.backgroundSecondary,\n borderRadius: theme.radii[2],\n padding: '16px',\n border: `1px solid ${theme.colors.border}`,\n }}\n >\n {/* Column Header */}\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n }}\n >\n <h3\n style={{\n margin: 0,\n fontSize: theme.fontSizes[3],\n color: theme.colors.text,\n fontWeight: theme.fontWeights.semibold,\n }}\n >\n {status}\n </h3>\n <span\n style={{\n fontSize: theme.fontSizes[1],\n color: theme.colors.textSecondary,\n background: theme.colors.background,\n padding: '2px 8px',\n borderRadius: theme.radii[1],\n }}\n >\n {tasks.length}\n </span>\n </div>\n\n {/* Task Cards */}\n <div\n style={{\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n gap: '8px',\n overflowY: 'auto',\n }}\n >\n {tasks.map((task) => (\n <div\n key={task.id}\n onClick={() => onTaskClick?.(task)}\n style={{\n background: theme.colors.surface,\n borderRadius: theme.radii[2],\n padding: '12px',\n border: `1px solid ${theme.colors.border}`,\n borderLeft: `4px solid ${getPriorityColor(task.priority)}`,\n cursor: onTaskClick ? 'pointer' : 'default',\n transition: 'all 0.2s ease',\n }}\n onMouseEnter={(e) => {\n if (onTaskClick) {\n e.currentTarget.style.transform = 'translateY(-2px)';\n e.currentTarget.style.boxShadow = `0 4px 8px ${theme.colors.border}`;\n }\n }}\n onMouseLeave={(e) => {\n if (onTaskClick) {\n e.currentTarget.style.transform = 'translateY(0)';\n e.currentTarget.style.boxShadow = 'none';\n }\n }}\n >\n {/* Task Title */}\n <h4\n style={{\n margin: '0 0 8px 0',\n fontSize: theme.fontSizes[2],\n color: theme.colors.text,\n fontWeight: theme.fontWeights.medium,\n }}\n >\n {task.title}\n </h4>\n\n {/* Task Description */}\n {task.description && (\n <p\n style={{\n margin: '0 0 8px 0',\n fontSize: theme.fontSizes[1],\n color: theme.colors.textSecondary,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n display: '-webkit-box',\n WebkitLineClamp: 2,\n WebkitBoxOrient: 'vertical',\n lineHeight: '1.4',\n }}\n >\n {task.description}\n </p>\n )}\n\n {/* Task Labels */}\n {task.labels && task.labels.length > 0 && (\n <div\n style={{\n display: 'flex',\n gap: '4px',\n flexWrap: 'wrap',\n marginBottom: '8px',\n }}\n >\n {task.labels.map((label) => (\n <span\n key={label}\n style={{\n fontSize: theme.fontSizes[0],\n color: theme.colors.primary,\n background: `${theme.colors.primary}20`,\n padding: '2px 8px',\n borderRadius: theme.radii[1],\n fontWeight: theme.fontWeights.medium,\n }}\n >\n {label}\n </span>\n ))}\n </div>\n )}\n\n {/* Task Footer */}\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n fontSize: theme.fontSizes[0],\n color: theme.colors.textMuted,\n }}\n >\n <span\n style={{\n fontFamily: theme.fonts.monospace,\n }}\n >\n {task.id}\n </span>\n {task.assignee && task.assignee.length > 0 && (\n <span\n style={{\n color: theme.colors.textSecondary,\n }}\n >\n {task.assignee.length} assignee{task.assignee.length !== 1 ? 's' : ''}\n </span>\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n};\n","import React, { useState } from 'react';\nimport { Kanban, RefreshCw, AlertCircle } from 'lucide-react';\nimport { ThemeProvider, useTheme } from '@principal-ade/industry-theme';\nimport type { PanelComponentProps } from '../types';\nimport { useKanbanData } from './kanban/hooks/useKanbanData';\nimport { KanbanColumn } from './kanban/components/KanbanColumn';\nimport type { Task } from './kanban/backlog-types';\n\n/**\n * KanbanPanelContent - Internal component that uses theme\n */\nconst KanbanPanelContent: React.FC<PanelComponentProps> = ({\n context,\n}) => {\n const { theme } = useTheme();\n const [_selectedTask, setSelectedTask] = useState<Task | null>(null);\n const {\n statuses,\n tasksByStatus,\n isLoading,\n error,\n refreshData,\n } = useKanbanData();\n\n const handleTaskClick = (task: Task) => {\n setSelectedTask(task);\n // In the future, this will open a task detail modal\n // Task click logged for development\n };\n\n const handleRefresh = async () => {\n await refreshData();\n };\n\n return (\n <div\n style={{\n padding: '20px',\n fontFamily: theme.fonts.body,\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n gap: '16px',\n backgroundColor: theme.colors.background,\n color: theme.colors.text,\n }}\n >\n {/* Header */}\n <div style={{ display: 'flex', alignItems: 'center', gap: '12px' }}>\n <Kanban size={24} color={theme.colors.primary} />\n <h2\n style={{\n margin: 0,\n fontSize: theme.fontSizes[4],\n color: theme.colors.text,\n }}\n >\n Kanban Board\n </h2>\n {context.currentScope.repository && (\n <span\n style={{\n marginLeft: 'auto',\n fontSize: theme.fontSizes[1],\n color: theme.colors.textSecondary,\n fontFamily: theme.fonts.monospace,\n }}\n >\n {context.currentScope.repository.name}\n </span>\n )}\n <button\n onClick={handleRefresh}\n disabled={isLoading}\n style={{\n padding: '8px 12px',\n display: 'flex',\n alignItems: 'center',\n gap: '6px',\n border: `1px solid ${theme.colors.border}`,\n borderRadius: theme.radii[1],\n background: theme.colors.surface,\n color: theme.colors.text,\n cursor: isLoading ? 'not-allowed' : 'pointer',\n opacity: isLoading ? 0.6 : 1,\n }}\n >\n <RefreshCw size={16} style={{ animation: isLoading ? 'spin 1s linear infinite' : 'none' }} />\n Refresh\n </button>\n </div>\n\n {/* Error Message */}\n {error && (\n <div\n style={{\n padding: '12px',\n background: `${theme.colors.error}20`,\n border: `1px solid ${theme.colors.error}`,\n borderRadius: theme.radii[2],\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n color: theme.colors.error,\n }}\n >\n <AlertCircle size={16} />\n <span>{error}</span>\n </div>\n )}\n\n {/* Board Container */}\n <div\n style={{\n flex: 1,\n display: 'flex',\n gap: '16px',\n overflowX: 'auto',\n paddingBottom: '8px',\n }}\n >\n {statuses.map((status) => {\n const columnTasks = tasksByStatus.get(status) || [];\n return (\n <KanbanColumn\n key={status}\n status={status}\n tasks={columnTasks}\n onTaskClick={handleTaskClick}\n />\n );\n })}\n </div>\n </div>\n );\n};\n\n/**\n * KanbanPanel - A kanban board panel for visualizing Backlog.md tasks.\n *\n * This panel shows:\n * - Kanban board with configurable status columns\n * - Task cards with priority indicators\n * - Labels and assignee information\n * - Mock data for testing (to be replaced with real data)\n */\nexport const KanbanPanel: React.FC<PanelComponentProps> = (props) => {\n return (\n <ThemeProvider>\n <KanbanPanelContent {...props} />\n </ThemeProvider>\n );\n};\n","import { KanbanPanel } from './panels/KanbanPanel';\nimport type { PanelDefinition, PanelContextValue } from './types';\n\n/**\n * Export array of panel definitions.\n * This is the required export for panel extensions.\n */\nexport const panels: PanelDefinition[] = [\n {\n metadata: {\n id: 'principal-ade.kanban-panel',\n name: 'Kanban Board',\n icon: '📋',\n version: '0.1.0',\n author: 'Principal ADE',\n description: 'Kanban board for visualizing Backlog.md tasks',\n slices: ['fileTree'], // Data slices this panel depends on\n },\n component: KanbanPanel,\n\n // Optional: Called when this specific panel is mounted\n onMount: async (context: PanelContextValue) => {\n // eslint-disable-next-line no-console\n console.log(\n 'Kanban Panel mounted',\n context.currentScope.repository?.path\n );\n },\n\n // Optional: Called when this specific panel is unmounted\n onUnmount: async (_context: PanelContextValue) => {\n // eslint-disable-next-line no-console\n console.log('Kanban Panel unmounting');\n },\n },\n];\n\n/**\n * Optional: Called once when the entire package is loaded.\n * Use this for package-level initialization.\n */\nexport const onPackageLoad = async () => {\n // eslint-disable-next-line no-console\n console.log('Panel package loaded - Kanban Panel Extension');\n};\n\n/**\n * Optional: Called once when the package is unloaded.\n * Use this for package-level cleanup.\n */\nexport const onPackageUnload = async () => {\n // eslint-disable-next-line no-console\n console.log('Panel package unloading - Kanban Panel Extension');\n};\n"],"names":["__iconNode","theme","React","AlertCircle"],"mappings":";;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,MAAM,cAAc,CAAC,WAAW,OAAO,QAAQ,sBAAsB,OAAO,EAAE,YAAW;AACzF,MAAM,cAAc,CAAC,WAAW,OAAO;AAAA,EACrC;AAAA,EACA,CAAC,OAAO,IAAI,OAAO,KAAK,GAAG,YAAW,IAAK,GAAG,YAAW;AAC3D;AACA,MAAM,eAAe,CAAC,WAAW;AAC/B,QAAM,YAAY,YAAY,MAAM;AACpC,SAAO,UAAU,OAAO,CAAC,EAAE,YAAW,IAAK,UAAU,MAAM,CAAC;AAC9D;AACA,MAAM,eAAe,IAAI,YAAY,QAAQ,OAAO,CAAC,WAAW,OAAO,UAAU;AAC/E,SAAO,QAAQ,SAAS,KAAK,UAAU,KAAI,MAAO,MAAM,MAAM,QAAQ,SAAS,MAAM;AACvF,CAAC,EAAE,KAAK,GAAG,EAAE,KAAI;AACjB,MAAM,cAAc,CAAC,UAAU;AAC7B,aAAW,QAAQ,OAAO;AACxB,QAAI,KAAK,WAAW,OAAO,KAAK,SAAS,UAAU,SAAS,SAAS;AACnE,aAAO;AAAA,IACT;AAAA,EACF;AACF;ACzBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,IAAI,oBAAoB;AAAA,EACtB,OAAO;AAAA,EACP,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,eAAe;AAAA,EACf,gBAAgB;AAClB;ACjBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWA,MAAM,OAAO;AAAA,EACX,CAAC;AAAA,IACC,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,cAAc;AAAA,IACd;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACP,GAAK,QAAQ;AAAA,IACT;AAAA,IACA;AAAA,MACE;AAAA,MACA,GAAG;AAAA,MACH,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,aAAa,sBAAsB,OAAO,WAAW,IAAI,KAAK,OAAO,IAAI,IAAI;AAAA,MAC7E,WAAW,aAAa,UAAU,SAAS;AAAA,MAC3C,GAAG,CAAC,YAAY,CAAC,YAAY,IAAI,KAAK,EAAE,eAAe,OAAM;AAAA,MAC7D,GAAG;AAAA,IACT;AAAA,IACI;AAAA,MACE,GAAG,SAAS,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,cAAc,KAAK,KAAK,CAAC;AAAA,MAC3D,GAAG,MAAM,QAAQ,QAAQ,IAAI,WAAW,CAAC,QAAQ;AAAA,IACvD;AAAA,EACA;AACA;ACvCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWA,MAAM,mBAAmB,CAAC,UAAU,aAAa;AAC/C,QAAM,YAAY;AAAA,IAChB,CAAC,EAAE,WAAW,GAAG,MAAK,GAAI,QAAQ,cAAc,MAAM;AAAA,MACpD;AAAA,MACA;AAAA,MACA,WAAW;AAAA,QACT,UAAU,YAAY,aAAa,QAAQ,CAAC,CAAC;AAAA,QAC7C,UAAU,QAAQ;AAAA,QAClB;AAAA,MACR;AAAA,MACM,GAAG;AAAA,IACT,CAAK;AAAA,EACL;AACE,YAAU,cAAc,aAAa,QAAQ;AAC7C,SAAO;AACT;AC1BA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,MAAMA,eAAa;AAAA,EACjB,CAAC,UAAU,EAAE,IAAI,MAAM,IAAI,MAAM,GAAG,MAAM,KAAK,UAAU;AAAA,EACzD,CAAC,QAAQ,EAAE,IAAI,MAAM,IAAI,MAAM,IAAI,KAAK,IAAI,MAAM,KAAK,SAAQ,CAAE;AAAA,EACjE,CAAC,QAAQ,EAAE,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,IAAI,MAAM,KAAK,SAAQ,CAAE;AACvE;AACA,MAAM,cAAc,iBAAiB,gBAAgBA,YAAU;ACd/D;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,MAAMA,eAAa;AAAA,EACjB,CAAC,QAAQ,EAAE,GAAG,WAAW,KAAK,SAAQ,CAAE;AAAA,EACxC,CAAC,QAAQ,EAAE,GAAG,WAAW,KAAK,SAAQ,CAAE;AAAA,EACxC,CAAC,QAAQ,EAAE,GAAG,YAAY,KAAK,SAAQ,CAAE;AAC3C;AACA,MAAM,SAAS,iBAAiB,UAAUA,YAAU;ACdpD;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,MAAM,aAAa;AAAA,EACjB,CAAC,QAAQ,EAAE,GAAG,sDAAsD,KAAK,SAAQ,CAAE;AAAA,EACnF,CAAC,QAAQ,EAAE,GAAG,cAAc,KAAK,SAAQ,CAAE;AAAA,EAC3C,CAAC,QAAQ,EAAE,GAAG,uDAAuD,KAAK,SAAQ,CAAE;AAAA,EACpF,CAAC,QAAQ,EAAE,GAAG,aAAa,KAAK,SAAQ,CAAE;AAC5C;AACA,MAAM,YAAY,iBAAiB,cAAc,UAAU;AC0yB3D,IAAI,gBAAgB;AAAA,EAClB,OAAO,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,GAAG;AAAA,EAC1C,OAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,EACf;AAAA,EACE,WAAW,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AAAA,EAClD,WAAW;AAAA,EACX,aAAa;AAAA,IACX,MAAM;AAAA,IACN,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,EACd;AAAA,EACE,aAAa;AAAA,IACX,MAAM;AAAA,IACN,SAAS;AAAA,IACT,OAAO;AAAA,IACP,SAAS;AAAA,EACb;AAAA,EACE,aAAa,CAAC,SAAS,SAAS,UAAU,QAAQ;AAAA,EAClD,OAAO,CAAC,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,MAAM,IAAI;AAAA,EAClD,OAAO,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE;AAAA,EACjC,SAAS;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAAA,EACE,UAAU,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE;AAAA,EACnC,QAAQ;AAAA,IACN,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,OAAO;AAAA,IACP,SAAS;AAAA,IACT,SAAS;AAAA,IACT,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,qBAAqB;AAAA,IACrB,oBAAoB;AAAA,IACpB,iBAAiB;AAAA,IACjB,iBAAiB;AAAA,IACjB,SAAS;AAAA,IACT,eAAe;AAAA,IACf,cAAc;AAAA,IACd,WAAW;AAAA,IACX,aAAa;AAAA,IACb,iBAAiB;AAAA,EACrB;AAAA,EACE,OAAO;AAAA,IACL,OAAO;AAAA,MACL,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,OAAO;AAAA,MACP,SAAS;AAAA,MACT,SAAS;AAAA,MACT,OAAO;AAAA,MACP,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,qBAAqB;AAAA,MACrB,oBAAoB;AAAA,MACpB,iBAAiB;AAAA,MACjB,iBAAiB;AAAA,MACjB,SAAS;AAAA,MACT,eAAe;AAAA,MACf,cAAc;AAAA,MACd,WAAW;AAAA,MACX,aAAa;AAAA,MACb,iBAAiB;AAAA,IACvB;AAAA,EACA;AAAA,EACE,SAAS;AAAA,IACP,SAAS;AAAA,MACP,OAAO;AAAA,MACP,IAAI;AAAA,MACJ,aAAa;AAAA,MACb,WAAW;AAAA,QACT,IAAI;AAAA,MACZ;AAAA,IACA;AAAA,IACI,WAAW;AAAA,MACT,OAAO;AAAA,MACP,IAAI;AAAA,MACJ,aAAa;AAAA,MACb,aAAa;AAAA,MACb,aAAa;AAAA,MACb,WAAW;AAAA,QACT,IAAI;AAAA,MACZ;AAAA,IACA;AAAA,IACI,OAAO;AAAA,MACL,OAAO;AAAA,MACP,IAAI;AAAA,MACJ,WAAW;AAAA,QACT,IAAI;AAAA,MACZ;AAAA,IACA;AAAA,EACA;AAAA,EACE,MAAM;AAAA,IACJ,SAAS;AAAA,MACP,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,IAClB;AAAA,IACI,MAAM;AAAA,MACJ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,IAClB;AAAA,IACI,SAAS;AAAA,MACP,UAAU;AAAA,MACV,OAAO;AAAA,IACb;AAAA,EACA;AAAA,EACE,OAAO;AAAA,IACL,SAAS;AAAA,MACP,IAAI;AAAA,MACJ,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,cAAc;AAAA,IACpB;AAAA,IACI,WAAW;AAAA,MACT,IAAI;AAAA,MACJ,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,cAAc;AAAA,IACpB;AAAA,EACA;AACA;AAgZA,SAAS,QAAQC,QAAO,MAAM;AAC5B,MAAI,CAAC,QAAQ,CAACA,OAAM,SAAS,CAACA,OAAM,MAAM,IAAI,GAAG;AAC/C,WAAOA,OAAM;AAAA,EACf;AACA,SAAO;AAAA,IACL,GAAGA,OAAM;AAAA,IACT,GAAGA,OAAM,MAAM,IAAI;AAAA,EACvB;AACA;AAGA,IAAI;AACJ,IAAI,kBAAkB,MAAM;AAC1B,MAAI,OAAO,WAAW,aAAa;AACjC,UAAM,eAAe;AACrB,QAAI,CAAC,aAAa,+BAA+B;AAC/C,mBAAa,gCAAgC,cAAc,MAAS;AAAA,IACtE;AACA,WAAO,aAAa;AAAA,EACtB,OAAO;AACL,QAAI,CAAC,cAAc;AACjB,qBAAe,cAAc,MAAS;AAAA,IACxC;AACA,WAAO;AAAA,EACT;AACF;AACA,IAAI,wBAAwB,gBAAe;AAC3C,IAAI,WAAW,MAAM;AACnB,QAAM,UAAU,WAAW,qBAAqB;AAChD,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,8CAA8C;AAAA,EAChE;AACA,SAAO;AACT;AACA,IAAI,gBAAgB,CAAC;AAAA,EACnB;AAAA,EACA,OAAO,cAAc;AAAA,EACrB;AACF,MAAM;AACJ,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,WAAW;AAC5C,QAAM,cAAcC,OAAM,QAAQ,MAAM;AACtC,QAAI,CAAC,QAAQ,CAAC,YAAY,SAAS,CAAC,YAAY,MAAM,IAAI,GAAG;AAC3D,aAAO;AAAA,IACT;AACA,WAAO;AAAA,MACL,GAAG;AAAA,MACH,QAAQ,QAAQ,aAAa,IAAI;AAAA,IACvC;AAAA,EACE,GAAG,CAAC,aAAa,IAAI,CAAC;AACtB,YAAU,MAAM;AACd,QAAI,CAAC,aAAa;AAChB,YAAM,YAAY,aAAa,QAAQ,wBAAwB;AAC/D,UAAI,WAAW;AACb,gBAAQ,SAAS;AAAA,MACnB;AAAA,IACF;AAAA,EACF,GAAG,CAAC,WAAW,CAAC;AAChB,YAAU,MAAM;AACd,QAAI,MAAM;AACR,mBAAa,QAAQ,0BAA0B,IAAI;AAAA,IACrD,OAAO;AACL,mBAAa,WAAW,wBAAwB;AAAA,IAClD;AAAA,EACF,GAAG,CAAC,IAAI,CAAC;AACT,QAAM,QAAQ;AAAA,IACZ,OAAO;AAAA,IACP;AAAA,IACA;AAAA,EACJ;AACE,SAAuBA,uBAAM,cAAc,sBAAsB,UAAU;AAAA,IACzE;AAAA,EACJ,GAAK,QAAQ;AACb;AA2cA,IAAI,QAAQ;AC91DL,SAAS,oBAA4B;AAC1C,SAAO;AAAA,IACL;AAAA,MACE,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU,CAAC,mBAAmB;AAAA,MAC9B,aAAa;AAAA,MACb,aAAa;AAAA,MACb,QAAQ,CAAC,WAAW,UAAU;AAAA,MAC9B,cAAc,CAAA;AAAA,MACd,aAAa;AAAA,MACb,UAAU;AAAA,MACV,SAAS;AAAA,MACT,UAAU;AAAA,MACV,QAAQ;AAAA,IAAA;AAAA,IAEV;AAAA,MACE,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU,CAAC,iBAAiB;AAAA,MAC5B,aAAa;AAAA,MACb,QAAQ,CAAC,YAAY,cAAc;AAAA,MACnC,cAAc,CAAA;AAAA,MACd,aAAa;AAAA,MACb,UAAU;AAAA,MACV,SAAS;AAAA,MACT,UAAU;AAAA,MACV,QAAQ;AAAA,IAAA;AAAA,IAEV;AAAA,MACE,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU,CAAC,qBAAqB;AAAA,MAChC,aAAa;AAAA,MACb,aAAa;AAAA,MACb,QAAQ,CAAC,WAAW,KAAK;AAAA,MACzB,cAAc,CAAC,UAAU;AAAA,MACzB,aAAa;AAAA,MACb,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAQlB,KAAA;AAAA,MACF,UAAU;AAAA,MACV,SAAS;AAAA,MACT,UAAU;AAAA,MACV,QAAQ;AAAA,IAAA;AAAA,IAEV;AAAA,MACE,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU,CAAC,qBAAqB,iBAAiB;AAAA,MACjD,aAAa;AAAA,MACb,aAAa;AAAA,MACb,QAAQ,CAAC,YAAY,IAAI;AAAA,MACzB,cAAc,CAAA;AAAA,MACd,aAAa;AAAA,MACb,UAAU;AAAA,MACV,SAAS;AAAA,MACT,yBAAyB;AAAA,QACvB,EAAE,OAAO,GAAG,MAAM,kCAAkC,SAAS,KAAA;AAAA,QAC7D,EAAE,OAAO,GAAG,MAAM,0CAA0C,SAAS,KAAA;AAAA,QACrE,EAAE,OAAO,GAAG,MAAM,wCAAwC,SAAS,MAAA;AAAA,QACnE,EAAE,OAAO,GAAG,MAAM,8BAA8B,SAAS,MAAA;AAAA,MAAM;AAAA,MAEjE,UAAU;AAAA,MACV,QAAQ;AAAA,IAAA;AAAA,IAEV;AAAA,MACE,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU,CAAC,mBAAmB;AAAA,MAC9B,aAAa;AAAA,MACb,aAAa;AAAA,MACb,QAAQ,CAAC,UAAU,YAAY;AAAA,MAC/B,cAAc,CAAA;AAAA,MACd,aAAa;AAAA,MACb,UAAU;AAAA,MACV,SAAS;AAAA,MACT,UAAU;AAAA,MACV,QAAQ;AAAA,IAAA;AAAA,IAEV;AAAA,MACE,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU,CAAC,mBAAmB;AAAA,MAC9B,aAAa;AAAA,MACb,aAAa;AAAA,MACb,QAAQ,CAAC,WAAW,SAAS;AAAA,MAC7B,cAAc,CAAC,UAAU;AAAA,MACzB,aAAa;AAAA,MACb,UAAU;AAAA,MACV,SAAS;AAAA,MACT,UAAU;AAAA,MACV,QAAQ;AAAA,IAAA;AAAA,IAEV;AAAA,MACE,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU,CAAC,mBAAmB;AAAA,MAC9B,aAAa;AAAA,MACb,QAAQ,CAAC,eAAe,UAAU;AAAA,MAClC,cAAc,CAAC,YAAY,UAAU;AAAA,MACrC,aAAa;AAAA,MACb,UAAU;AAAA,MACV,SAAS;AAAA,MACT,UAAU;AAAA,MACV,QAAQ;AAAA,IAAA;AAAA,IAEV;AAAA,MACE,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU,CAAA;AAAA,MACV,aAAa;AAAA,MACb,QAAQ,CAAC,WAAW,UAAU;AAAA,MAC9B,cAAc,CAAC,UAAU;AAAA,MACzB,aAAa;AAAA,MACb,UAAU;AAAA,MACV,SAAS;AAAA,MACT,UAAU;AAAA,MACV,QAAQ;AAAA,IAAA;AAAA,EACV;AAEJ;AAKO,SAAS,qBAA+B;AAC7C,SAAO,CAAC,SAAS,eAAe,MAAM;AACxC;ACxIO,SAAS,gBAAqC;AACnD,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAiB,MAAM,mBAAmB;AACpE,QAAM,CAAC,QAAQ,IAAI,SAAmB,MAAM,oBAAoB;AAChE,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAChD,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAwB,IAAI;AAGtD,QAAM,gBAAgB,QAAQ,MAAM;AAClC,UAAM,8BAAc,IAAA;AAGpB,eAAW,UAAU,UAAU;AAC7B,cAAQ,IAAI,QAAQ,EAAE;AAAA,IACxB;AAGA,eAAW,QAAQ,OAAO;AACxB,YAAM,YAAY,KAAK,UAAU;AACjC,YAAM,OAAO,QAAQ,IAAI,SAAS;AAClC,UAAI,MAAM;AACR,aAAK,KAAK,IAAI;AAAA,MAChB;AAAA,IACF;AAGA,eAAW,CAAC,QAAQ,QAAQ,KAAK,QAAQ,WAAW;AAClD,eAAS,KAAK,CAAC,GAAG,MAAM;AAEtB,YAAI,EAAE,YAAY,UAAa,EAAE,YAAY,QAAW;AACtD,iBAAO,EAAE,UAAU,EAAE;AAAA,QACvB;AAGA,cAAM,gBAAgB,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,EAAA;AACjD,cAAM,YAAY,cAAc,EAAE,QAAsC,KAAK;AAC7E,cAAM,YAAY,cAAc,EAAE,QAAsC,KAAK;AAE7E,YAAI,cAAc,WAAW;AAC3B,iBAAO,YAAY;AAAA,QACrB;AAGA,eAAO,IAAI,KAAK,EAAE,WAAW,EAAE,YAAY,IAAI,KAAK,EAAE,WAAW,EAAE,QAAA;AAAA,MACrE,CAAC;AAED,cAAQ,IAAI,QAAQ,QAAQ;AAAA,IAC9B;AAEA,WAAO;AAAA,EACT,GAAG,CAAC,OAAO,QAAQ,CAAC;AAGpB,QAAM,cAAc,YAAY,YAAY;AAC1C,iBAAa,IAAI;AACjB,aAAS,IAAI;AAEb,QAAI;AAEF,YAAM,IAAI,QAAQ,CAAA,YAAW,WAAW,SAAS,GAAG,CAAC;AAGrD,YAAM,WAAW,kBAAA;AACjB,eAAS,QAAQ;AAAA,IACnB,SAAS,KAAK;AACZ,eAAS,eAAe,QAAQ,IAAI,UAAU,wBAAwB;AAAA,IACxE,UAAA;AACE,mBAAa,KAAK;AAAA,IACpB;AAAA,EACF,GAAG,CAAA,CAAE;AAGL,QAAM,mBAAmB,YAAY,OAAO,QAAgB,cAAsB;AAChF,aAAS,IAAI;AAGb;AAAA,MAAS,eACP,UAAU;AAAA,QAAI,CAAA,SACZ,KAAK,OAAO,SACR,EAAE,GAAG,MAAM,QAAQ,WAAW,cAAa,oBAAI,KAAA,GAAO,YAAA,MACtD;AAAA,MAAA;AAAA,IACN;AAGF,QAAI;AAEF,YAAM,IAAI,QAAQ,CAAA,YAAW,WAAW,SAAS,GAAG,CAAC;AAAA,IAIvD,SAAS,KAAK;AACZ,eAAS,eAAe,QAAQ,IAAI,UAAU,uBAAuB;AAGrE,eAAS,mBAAmB;AAAA,IAC9B;AAAA,EACF,GAAG,CAAA,CAAE;AAEL,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AClHO,MAAM,eAA4C,CAAC;AAAA,EACxD;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,EAAE,OAAAD,OAAA,IAAU,SAAA;AAElB,QAAM,mBAAmB,CAAC,aAAsB;AAC9C,YAAQ,UAAA;AAAA,MACN,KAAK;AACH,eAAOA,OAAM,OAAO;AAAA,MACtB,KAAK;AACH,eAAOA,OAAM,OAAO;AAAA,MACtB,KAAK;AACH,eAAOA,OAAM,OAAO;AAAA,MACtB;AACE,eAAOA,OAAM,OAAO;AAAA,IAAA;AAAA,EAE1B;AAEA,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACL,MAAM;AAAA,QACN,SAAS;AAAA,QACT,eAAe;AAAA,QACf,KAAK;AAAA,QACL,YAAYA,OAAM,OAAO;AAAA,QACzB,cAAcA,OAAM,MAAM,CAAC;AAAA,QAC3B,SAAS;AAAA,QACT,QAAQ,aAAaA,OAAM,OAAO,MAAM;AAAA,MAAA;AAAA,MAI1C,UAAA;AAAA,QAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAO;AAAA,cACL,SAAS;AAAA,cACT,YAAY;AAAA,cACZ,gBAAgB;AAAA,YAAA;AAAA,YAGlB,UAAA;AAAA,cAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,OAAO;AAAA,oBACL,QAAQ;AAAA,oBACR,UAAUA,OAAM,UAAU,CAAC;AAAA,oBAC3B,OAAOA,OAAM,OAAO;AAAA,oBACpB,YAAYA,OAAM,YAAY;AAAA,kBAAA;AAAA,kBAG/B,UAAA;AAAA,gBAAA;AAAA,cAAA;AAAA,cAEH;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,OAAO;AAAA,oBACL,UAAUA,OAAM,UAAU,CAAC;AAAA,oBAC3B,OAAOA,OAAM,OAAO;AAAA,oBACpB,YAAYA,OAAM,OAAO;AAAA,oBACzB,SAAS;AAAA,oBACT,cAAcA,OAAM,MAAM,CAAC;AAAA,kBAAA;AAAA,kBAG5B,UAAA,MAAM;AAAA,gBAAA;AAAA,cAAA;AAAA,YACT;AAAA,UAAA;AAAA,QAAA;AAAA,QAIF;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAO;AAAA,cACL,MAAM;AAAA,cACN,SAAS;AAAA,cACT,eAAe;AAAA,cACf,KAAK;AAAA,cACL,WAAW;AAAA,YAAA;AAAA,YAGZ,UAAA,MAAM,IAAI,CAAC,SACV;AAAA,cAAC;AAAA,cAAA;AAAA,gBAEC,SAAS,MAAM,2CAAc;AAAA,gBAC7B,OAAO;AAAA,kBACL,YAAYA,OAAM,OAAO;AAAA,kBACzB,cAAcA,OAAM,MAAM,CAAC;AAAA,kBAC3B,SAAS;AAAA,kBACT,QAAQ,aAAaA,OAAM,OAAO,MAAM;AAAA,kBACxC,YAAY,aAAa,iBAAiB,KAAK,QAAQ,CAAC;AAAA,kBACxD,QAAQ,cAAc,YAAY;AAAA,kBAClC,YAAY;AAAA,gBAAA;AAAA,gBAEd,cAAc,CAAC,MAAM;AACnB,sBAAI,aAAa;AACf,sBAAE,cAAc,MAAM,YAAY;AAClC,sBAAE,cAAc,MAAM,YAAY,aAAaA,OAAM,OAAO,MAAM;AAAA,kBACpE;AAAA,gBACF;AAAA,gBACA,cAAc,CAAC,MAAM;AACnB,sBAAI,aAAa;AACf,sBAAE,cAAc,MAAM,YAAY;AAClC,sBAAE,cAAc,MAAM,YAAY;AAAA,kBACpC;AAAA,gBACF;AAAA,gBAGA,UAAA;AAAA,kBAAA;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,OAAO;AAAA,wBACL,QAAQ;AAAA,wBACR,UAAUA,OAAM,UAAU,CAAC;AAAA,wBAC3B,OAAOA,OAAM,OAAO;AAAA,wBACpB,YAAYA,OAAM,YAAY;AAAA,sBAAA;AAAA,sBAG/B,UAAA,KAAK;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAIP,KAAK,eACJ;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,OAAO;AAAA,wBACL,QAAQ;AAAA,wBACR,UAAUA,OAAM,UAAU,CAAC;AAAA,wBAC3B,OAAOA,OAAM,OAAO;AAAA,wBACpB,UAAU;AAAA,wBACV,cAAc;AAAA,wBACd,SAAS;AAAA,wBACT,iBAAiB;AAAA,wBACjB,iBAAiB;AAAA,wBACjB,YAAY;AAAA,sBAAA;AAAA,sBAGb,UAAA,KAAK;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAKT,KAAK,UAAU,KAAK,OAAO,SAAS,KACnC;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,OAAO;AAAA,wBACL,SAAS;AAAA,wBACT,KAAK;AAAA,wBACL,UAAU;AAAA,wBACV,cAAc;AAAA,sBAAA;AAAA,sBAGf,UAAA,KAAK,OAAO,IAAI,CAAC,UAChB;AAAA,wBAAC;AAAA,wBAAA;AAAA,0BAEC,OAAO;AAAA,4BACL,UAAUA,OAAM,UAAU,CAAC;AAAA,4BAC3B,OAAOA,OAAM,OAAO;AAAA,4BACpB,YAAY,GAAGA,OAAM,OAAO,OAAO;AAAA,4BACnC,SAAS;AAAA,4BACT,cAAcA,OAAM,MAAM,CAAC;AAAA,4BAC3B,YAAYA,OAAM,YAAY;AAAA,0BAAA;AAAA,0BAG/B,UAAA;AAAA,wBAAA;AAAA,wBAVI;AAAA,sBAAA,CAYR;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAKL;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,OAAO;AAAA,wBACL,SAAS;AAAA,wBACT,YAAY;AAAA,wBACZ,gBAAgB;AAAA,wBAChB,UAAUA,OAAM,UAAU,CAAC;AAAA,wBAC3B,OAAOA,OAAM,OAAO;AAAA,sBAAA;AAAA,sBAGtB,UAAA;AAAA,wBAAA;AAAA,0BAAC;AAAA,0BAAA;AAAA,4BACC,OAAO;AAAA,8BACL,YAAYA,OAAM,MAAM;AAAA,4BAAA;AAAA,4BAGzB,UAAA,KAAK;AAAA,0BAAA;AAAA,wBAAA;AAAA,wBAEP,KAAK,YAAY,KAAK,SAAS,SAAS,KACvC;AAAA,0BAAC;AAAA,0BAAA;AAAA,4BACC,OAAO;AAAA,8BACL,OAAOA,OAAM,OAAO;AAAA,4BAAA;AAAA,4BAGrB,UAAA;AAAA,8BAAA,KAAK,SAAS;AAAA,8BAAO;AAAA,8BAAU,KAAK,SAAS,WAAW,IAAI,MAAM;AAAA,4BAAA;AAAA,0BAAA;AAAA,wBAAA;AAAA,sBACrE;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAEJ;AAAA,cAAA;AAAA,cA7GK,KAAK;AAAA,YAAA,CA+Gb;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EAAA;AAGN;AC9LA,MAAM,qBAAoD,CAAC;AAAA,EACzD;AACF,MAAM;AACJ,QAAM,EAAE,OAAAA,OAAA,IAAU,SAAA;AAClB,QAAM,CAAC,eAAe,eAAe,IAAI,SAAsB,IAAI;AACnE,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IACE,cAAA;AAEJ,QAAM,kBAAkB,CAAC,SAAe;AACtC,oBAAgB,IAAI;AAAA,EAGtB;AAEA,QAAM,gBAAgB,YAAY;AAChC,UAAM,YAAA;AAAA,EACR;AAEA,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACL,SAAS;AAAA,QACT,YAAYA,OAAM,MAAM;AAAA,QACxB,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,eAAe;AAAA,QACf,KAAK;AAAA,QACL,iBAAiBA,OAAM,OAAO;AAAA,QAC9B,OAAOA,OAAM,OAAO;AAAA,MAAA;AAAA,MAItB,UAAA;AAAA,QAAA,qBAAC,OAAA,EAAI,OAAO,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,OAAA,GACxD,UAAA;AAAA,UAAA,oBAAC,UAAO,MAAM,IAAI,OAAOA,OAAM,OAAO,SAAS;AAAA,UAC/C;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,OAAO;AAAA,gBACL,QAAQ;AAAA,gBACR,UAAUA,OAAM,UAAU,CAAC;AAAA,gBAC3B,OAAOA,OAAM,OAAO;AAAA,cAAA;AAAA,cAEvB,UAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAGA,QAAQ,aAAa,cACpB;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,OAAO;AAAA,gBACL,YAAY;AAAA,gBACZ,UAAUA,OAAM,UAAU,CAAC;AAAA,gBAC3B,OAAOA,OAAM,OAAO;AAAA,gBACpB,YAAYA,OAAM,MAAM;AAAA,cAAA;AAAA,cAGzB,UAAA,QAAQ,aAAa,WAAW;AAAA,YAAA;AAAA,UAAA;AAAA,UAGrC;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,SAAS;AAAA,cACT,UAAU;AAAA,cACV,OAAO;AAAA,gBACL,SAAS;AAAA,gBACT,SAAS;AAAA,gBACT,YAAY;AAAA,gBACZ,KAAK;AAAA,gBACL,QAAQ,aAAaA,OAAM,OAAO,MAAM;AAAA,gBACxC,cAAcA,OAAM,MAAM,CAAC;AAAA,gBAC3B,YAAYA,OAAM,OAAO;AAAA,gBACzB,OAAOA,OAAM,OAAO;AAAA,gBACpB,QAAQ,YAAY,gBAAgB;AAAA,gBACpC,SAAS,YAAY,MAAM;AAAA,cAAA;AAAA,cAG7B,UAAA;AAAA,gBAAA,oBAAC,WAAA,EAAU,MAAM,IAAI,OAAO,EAAE,WAAW,YAAY,4BAA4B,OAAA,EAAO,CAAG;AAAA,gBAAE;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QAE/F,GACF;AAAA,QAGC,SACC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAO;AAAA,cACL,SAAS;AAAA,cACT,YAAY,GAAGA,OAAM,OAAO,KAAK;AAAA,cACjC,QAAQ,aAAaA,OAAM,OAAO,KAAK;AAAA,cACvC,cAAcA,OAAM,MAAM,CAAC;AAAA,cAC3B,SAAS;AAAA,cACT,YAAY;AAAA,cACZ,KAAK;AAAA,cACL,OAAOA,OAAM,OAAO;AAAA,YAAA;AAAA,YAGtB,UAAA;AAAA,cAAA,oBAACE,aAAA,EAAY,MAAM,GAAA,CAAI;AAAA,cACvB,oBAAC,UAAM,UAAA,MAAA,CAAM;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAKjB;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAO;AAAA,cACL,MAAM;AAAA,cACN,SAAS;AAAA,cACT,KAAK;AAAA,cACL,WAAW;AAAA,cACX,eAAe;AAAA,YAAA;AAAA,YAGhB,UAAA,SAAS,IAAI,CAAC,WAAW;AACxB,oBAAM,cAAc,cAAc,IAAI,MAAM,KAAK,CAAA;AACjD,qBACE;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBAEC;AAAA,kBACA,OAAO;AAAA,kBACP,aAAa;AAAA,gBAAA;AAAA,gBAHR;AAAA,cAAA;AAAA,YAMX,CAAC;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EAAA;AAGN;AAWO,MAAM,cAA6C,CAAC,UAAU;AACnE,6BACG,eAAA,EACC,UAAA,oBAAC,oBAAA,EAAoB,GAAG,OAAO,GACjC;AAEJ;ACjJO,MAAM,SAA4B;AAAA,EACvC;AAAA,IACE,UAAU;AAAA,MACR,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,QAAQ,CAAC,UAAU;AAAA;AAAA,IAAA;AAAA,IAErB,WAAW;AAAA;AAAA,IAGX,SAAS,OAAO,YAA+B;;AAE7C,cAAQ;AAAA,QACN;AAAA,SACA,aAAQ,aAAa,eAArB,mBAAiC;AAAA,MAAA;AAAA,IAErC;AAAA;AAAA,IAGA,WAAW,OAAO,aAAgC;AAEhD,cAAQ,IAAI,yBAAyB;AAAA,IACvC;AAAA,EAAA;AAEJ;AAMO,MAAM,gBAAgB,YAAY;AAEvC,UAAQ,IAAI,+CAA+C;AAC7D;AAMO,MAAM,kBAAkB,YAAY;AAEzC,UAAQ,IAAI,kDAAkD;AAChE;","x_google_ignoreList":[0,1,2,3,4,5,6,7]}
|
|
1
|
+
{"version":3,"file":"panels.bundle.js","sources":["../node_modules/lucide-react/dist/esm/shared/src/utils.js","../node_modules/lucide-react/dist/esm/defaultAttributes.js","../node_modules/lucide-react/dist/esm/Icon.js","../node_modules/lucide-react/dist/esm/createLucideIcon.js","../node_modules/lucide-react/dist/esm/icons/circle-alert.js","../node_modules/lucide-react/dist/esm/icons/external-link.js","../node_modules/lucide-react/dist/esm/icons/file-text.js","../node_modules/lucide-react/dist/esm/icons/kanban.js","../node_modules/lucide-react/dist/esm/icons/refresh-cw.js","../node_modules/@principal-ade/industry-theme/dist/esm/index.js","../src/adapters/types.ts","../src/adapters/backlog-parser.ts","../src/adapters/BacklogAdapter.ts","../src/panels/kanban/hooks/useKanbanData.ts","../src/panels/kanban/components/KanbanColumn.tsx","../src/panels/kanban/components/EmptyState.tsx","../src/panels/KanbanPanel.tsx","../src/index.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.552.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\nconst toCamelCase = (string) => string.replace(\n /^([A-Z])|[\\s-_]+(\\w)/g,\n (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()\n);\nconst toPascalCase = (string) => {\n const camelCase = toCamelCase(string);\n return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\n};\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\nconst hasA11yProp = (props) => {\n for (const prop in props) {\n if (prop.startsWith(\"aria-\") || prop === \"role\" || prop === \"title\") {\n return true;\n }\n }\n};\n\nexport { hasA11yProp, mergeClasses, toCamelCase, toKebabCase, toPascalCase };\n//# sourceMappingURL=utils.js.map\n","/**\n * @license lucide-react v0.552.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nvar defaultAttributes = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.js.map\n","/**\n * @license lucide-react v0.552.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport defaultAttributes from './defaultAttributes.js';\nimport { mergeClasses, hasA11yProp } from './shared/src/utils.js';\n\nconst Icon = forwardRef(\n ({\n color = \"currentColor\",\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = \"\",\n children,\n iconNode,\n ...rest\n }, ref) => createElement(\n \"svg\",\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,\n className: mergeClasses(\"lucide\", className),\n ...!children && !hasA11yProp(rest) && { \"aria-hidden\": \"true\" },\n ...rest\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...Array.isArray(children) ? children : [children]\n ]\n )\n);\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.js.map\n","/**\n * @license lucide-react v0.552.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from './shared/src/utils.js';\nimport Icon from './Icon.js';\n\nconst createLucideIcon = (iconName, iconNode) => {\n const Component = forwardRef(\n ({ className, ...props }, ref) => createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className\n ),\n ...props\n })\n );\n Component.displayName = toPascalCase(iconName);\n return Component;\n};\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.js.map\n","/**\n * @license lucide-react v0.552.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"line\", { x1: \"12\", x2: \"12\", y1: \"8\", y2: \"12\", key: \"1pkeuh\" }],\n [\"line\", { x1: \"12\", x2: \"12.01\", y1: \"16\", y2: \"16\", key: \"4dfq90\" }]\n];\nconst CircleAlert = createLucideIcon(\"circle-alert\", __iconNode);\n\nexport { __iconNode, CircleAlert as default };\n//# sourceMappingURL=circle-alert.js.map\n","/**\n * @license lucide-react v0.552.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M15 3h6v6\", key: \"1q9fwt\" }],\n [\"path\", { d: \"M10 14 21 3\", key: \"gplh6r\" }],\n [\"path\", { d: \"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\", key: \"a6xqqp\" }]\n];\nconst ExternalLink = createLucideIcon(\"external-link\", __iconNode);\n\nexport { __iconNode, ExternalLink as default };\n//# sourceMappingURL=external-link.js.map\n","/**\n * @license lucide-react v0.552.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\",\n key: \"1oefj6\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }],\n [\"path\", { d: \"M10 9H8\", key: \"b1mrlr\" }],\n [\"path\", { d: \"M16 13H8\", key: \"t4e002\" }],\n [\"path\", { d: \"M16 17H8\", key: \"z1uh3a\" }]\n];\nconst FileText = createLucideIcon(\"file-text\", __iconNode);\n\nexport { __iconNode, FileText as default };\n//# sourceMappingURL=file-text.js.map\n","/**\n * @license lucide-react v0.552.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M5 3v14\", key: \"9nsxs2\" }],\n [\"path\", { d: \"M12 3v8\", key: \"1h2ygw\" }],\n [\"path\", { d: \"M19 3v18\", key: \"1sk56x\" }]\n];\nconst Kanban = createLucideIcon(\"kanban\", __iconNode);\n\nexport { __iconNode, Kanban as default };\n//# sourceMappingURL=kanban.js.map\n","/**\n * @license lucide-react v0.552.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\", key: \"v9h5vc\" }],\n [\"path\", { d: \"M21 3v5h-5\", key: \"1q7to0\" }],\n [\"path\", { d: \"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\", key: \"3uifl3\" }],\n [\"path\", { d: \"M8 16H3v5\", key: \"1cv678\" }]\n];\nconst RefreshCw = createLucideIcon(\"refresh-cw\", __iconNode);\n\nexport { __iconNode, RefreshCw as default };\n//# sourceMappingURL=refresh-cw.js.map\n","// src/glassmorphismTheme.ts\nvar glassmorphismTheme = {\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n fonts: {\n body: '\"Inter\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n heading: '\"Inter\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n monospace: '\"Fira Code\", \"SF Mono\", Monaco, Inconsolata, monospace'\n },\n fontSizes: [12, 14, 16, 18, 20, 24, 32, 48, 64, 96],\n fontScale: 1,\n fontWeights: {\n body: 400,\n heading: 600,\n bold: 700,\n light: 300,\n medium: 500,\n semibold: 600\n },\n lineHeights: {\n body: 1.6,\n heading: 1.3,\n tight: 1.4,\n relaxed: 1.8\n },\n breakpoints: [\"640px\", \"768px\", \"1024px\", \"1280px\"],\n sizes: [16, 32, 64, 128, 256, 512, 768, 1024, 1536],\n radii: [0, 8, 12, 16, 20, 24, 32, 40],\n shadows: [\n \"none\",\n \"0 8px 32px 0 rgba(31, 38, 135, 0.15)\",\n \"0 12px 40px 0 rgba(31, 38, 135, 0.2)\",\n \"0 16px 48px 0 rgba(31, 38, 135, 0.25)\",\n \"0 20px 56px 0 rgba(31, 38, 135, 0.3)\",\n \"0 24px 64px 0 rgba(31, 38, 135, 0.35)\"\n ],\n zIndices: [0, 1, 10, 20, 30, 40, 50],\n colors: {\n text: \"rgba(255, 255, 255, 0.95)\",\n background: \"rgba(255, 255, 255, 0.1)\",\n primary: \"rgba(99, 102, 241, 0.9)\",\n secondary: \"rgba(139, 92, 246, 0.9)\",\n accent: \"rgba(236, 72, 153, 0.9)\",\n highlight: \"rgba(99, 102, 241, 0.2)\",\n muted: \"rgba(255, 255, 255, 0.05)\",\n success: \"rgba(34, 197, 94, 0.9)\",\n warning: \"rgba(251, 146, 60, 0.9)\",\n error: \"rgba(239, 68, 68, 0.9)\",\n info: \"rgba(59, 130, 246, 0.9)\",\n border: \"rgba(255, 255, 255, 0.18)\",\n backgroundSecondary: \"rgba(255, 255, 255, 0.15)\",\n backgroundTertiary: \"rgba(255, 255, 255, 0.2)\",\n backgroundLight: \"rgba(255, 255, 255, 0.08)\",\n backgroundHover: \"rgba(255, 255, 255, 0.25)\",\n surface: \"rgba(255, 255, 255, 0.12)\",\n textSecondary: \"rgba(255, 255, 255, 0.8)\",\n textTertiary: \"rgba(255, 255, 255, 0.6)\",\n textMuted: \"rgba(255, 255, 255, 0.5)\",\n highlightBg: \"rgba(251, 191, 36, 0.3)\",\n highlightBorder: \"rgba(251, 191, 36, 0.5)\"\n },\n modes: {\n dark: {\n text: \"rgba(255, 255, 255, 0.95)\",\n background: \"rgba(0, 0, 0, 0.3)\",\n primary: \"rgba(129, 140, 248, 0.9)\",\n secondary: \"rgba(167, 139, 250, 0.9)\",\n accent: \"rgba(244, 114, 182, 0.9)\",\n highlight: \"rgba(129, 140, 248, 0.25)\",\n muted: \"rgba(0, 0, 0, 0.15)\",\n success: \"rgba(74, 222, 128, 0.9)\",\n warning: \"rgba(251, 191, 36, 0.9)\",\n error: \"rgba(248, 113, 113, 0.9)\",\n info: \"rgba(96, 165, 250, 0.9)\",\n border: \"rgba(255, 255, 255, 0.15)\",\n backgroundSecondary: \"rgba(0, 0, 0, 0.4)\",\n backgroundTertiary: \"rgba(0, 0, 0, 0.5)\",\n backgroundLight: \"rgba(0, 0, 0, 0.2)\",\n backgroundHover: \"rgba(255, 255, 255, 0.1)\",\n surface: \"rgba(0, 0, 0, 0.35)\",\n textSecondary: \"rgba(255, 255, 255, 0.8)\",\n textTertiary: \"rgba(255, 255, 255, 0.6)\",\n textMuted: \"rgba(255, 255, 255, 0.4)\",\n highlightBg: \"rgba(251, 191, 36, 0.35)\",\n highlightBorder: \"rgba(251, 191, 36, 0.6)\"\n },\n frosted: {\n text: \"rgba(31, 41, 55, 0.95)\",\n background: \"rgba(255, 255, 255, 0.3)\",\n primary: \"rgba(79, 70, 229, 0.95)\",\n secondary: \"rgba(124, 58, 237, 0.95)\",\n accent: \"rgba(219, 39, 119, 0.95)\",\n highlight: \"rgba(79, 70, 229, 0.15)\",\n muted: \"rgba(255, 255, 255, 0.4)\",\n success: \"rgba(16, 185, 129, 0.95)\",\n warning: \"rgba(245, 158, 11, 0.95)\",\n error: \"rgba(220, 38, 38, 0.95)\",\n info: \"rgba(37, 99, 235, 0.95)\",\n border: \"rgba(255, 255, 255, 0.5)\",\n backgroundSecondary: \"rgba(255, 255, 255, 0.4)\",\n backgroundTertiary: \"rgba(255, 255, 255, 0.5)\",\n backgroundLight: \"rgba(255, 255, 255, 0.25)\",\n backgroundHover: \"rgba(255, 255, 255, 0.6)\",\n surface: \"rgba(255, 255, 255, 0.35)\",\n textSecondary: \"rgba(31, 41, 55, 0.8)\",\n textTertiary: \"rgba(31, 41, 55, 0.6)\",\n textMuted: \"rgba(31, 41, 55, 0.5)\",\n highlightBg: \"rgba(251, 191, 36, 0.4)\",\n highlightBorder: \"rgba(251, 191, 36, 0.7)\"\n }\n },\n buttons: {\n primary: {\n color: \"white\",\n bg: \"primary\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"rgba(255, 255, 255, 0.2)\",\n \"&:hover\": {\n bg: \"secondary\"\n }\n },\n secondary: {\n color: \"text\",\n bg: \"rgba(255, 255, 255, 0.1)\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"rgba(255, 255, 255, 0.2)\",\n \"&:hover\": {\n bg: \"rgba(255, 255, 255, 0.2)\"\n }\n },\n ghost: {\n color: \"text\",\n bg: \"transparent\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"transparent\",\n \"&:hover\": {\n borderColor: \"rgba(255, 255, 255, 0.2)\",\n bg: \"rgba(255, 255, 255, 0.05)\"\n }\n }\n },\n text: {\n heading: {\n fontFamily: \"heading\",\n fontWeight: \"heading\",\n lineHeight: \"heading\"\n },\n body: {\n fontFamily: \"body\",\n fontWeight: \"body\",\n lineHeight: \"body\"\n },\n caption: {\n fontSize: 1,\n color: \"textSecondary\"\n }\n },\n cards: {\n primary: {\n bg: \"surface\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 3\n },\n secondary: {\n bg: \"backgroundSecondary\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 3\n }\n }\n};\n// src/defaultThemes.ts\nvar defaultMarkdownTheme = {\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n fonts: {\n body: '\"Inter\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n heading: '\"Crimson Text\", \"Georgia\", \"Times New Roman\", serif',\n monospace: '\"Fira Code\", \"SF Mono\", Monaco, Inconsolata, monospace'\n },\n fontSizes: [12, 14, 16, 18, 20, 24, 32, 48, 64, 96],\n fontScale: 1,\n fontWeights: {\n body: 400,\n heading: 600,\n bold: 700,\n light: 300,\n medium: 500,\n semibold: 600\n },\n lineHeights: {\n body: 1.6,\n heading: 1.3,\n tight: 1.25,\n relaxed: 1.75\n },\n breakpoints: [\"640px\", \"768px\", \"1024px\", \"1280px\"],\n sizes: [16, 32, 64, 128, 256, 512, 768, 1024, 1536],\n radii: [0, 2, 4, 6, 8, 12, 16, 24],\n shadows: [\n \"none\",\n \"0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)\",\n \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)\",\n \"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)\",\n \"0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)\",\n \"0 25px 50px -12px rgba(0, 0, 0, 0.25)\"\n ],\n zIndices: [0, 1, 10, 20, 30, 40, 50],\n colors: {\n text: \"#1a1a1a\",\n background: \"#ffffff\",\n primary: \"#007acc\",\n secondary: \"#005a9e\",\n accent: \"#1a1a1a\",\n highlight: \"rgba(0, 122, 204, 0.1)\",\n muted: \"#f0f0f0\",\n success: \"#28a745\",\n warning: \"#ffc107\",\n error: \"#dc3545\",\n info: \"#17a2b8\",\n border: \"rgba(0, 0, 0, 0.1)\",\n backgroundSecondary: \"#f8f9fa\",\n backgroundTertiary: \"#e9ecef\",\n backgroundLight: \"rgba(0, 0, 0, 0.03)\",\n backgroundHover: \"rgba(0, 0, 0, 0.05)\",\n surface: \"#ffffff\",\n textSecondary: \"#555555\",\n textTertiary: \"#888888\",\n textMuted: \"#aaaaaa\",\n highlightBg: \"rgba(255, 235, 59, 0.3)\",\n highlightBorder: \"rgba(255, 235, 59, 0.6)\"\n },\n buttons: {\n primary: {\n color: \"white\",\n bg: \"primary\",\n \"&:hover\": { bg: \"secondary\" }\n },\n secondary: {\n color: \"primary\",\n bg: \"transparent\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"primary\",\n \"&:hover\": { bg: \"highlight\" }\n },\n ghost: {\n color: \"text\",\n bg: \"transparent\",\n \"&:hover\": { bg: \"backgroundHover\" }\n }\n },\n text: {\n heading: {\n fontFamily: \"heading\",\n fontWeight: \"heading\",\n lineHeight: \"heading\"\n },\n body: {\n fontFamily: \"body\",\n fontWeight: \"body\",\n lineHeight: \"body\"\n },\n caption: {\n fontSize: 1,\n color: \"textSecondary\"\n }\n },\n cards: {\n primary: {\n bg: \"surface\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 2\n },\n secondary: {\n bg: \"backgroundSecondary\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 2\n }\n }\n};\nvar defaultTerminalTheme = {\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n fonts: {\n body: '\"Courier New\", Courier, monospace',\n heading: '\"Courier New\", Courier, monospace',\n monospace: '\"Courier New\", Courier, monospace'\n },\n fontSizes: [12, 14, 16, 18, 20, 24, 32, 48, 64, 96],\n fontScale: 1,\n fontWeights: {\n body: 400,\n heading: 500,\n bold: 600,\n light: 300,\n medium: 500,\n semibold: 600\n },\n lineHeights: {\n body: 1.4,\n heading: 1.2,\n tight: 1.3,\n relaxed: 1.6\n },\n breakpoints: [\"640px\", \"768px\", \"1024px\", \"1280px\"],\n sizes: [16, 32, 64, 128, 256, 512, 768, 1024, 1536],\n radii: [0, 2, 4, 6, 8, 12, 16, 24],\n shadows: [\n \"none\",\n \"0 0 5px rgba(255, 193, 7, 0.1)\",\n \"0 0 10px rgba(255, 193, 7, 0.15)\",\n \"0 0 15px rgba(255, 193, 7, 0.2)\",\n \"0 0 20px rgba(255, 193, 7, 0.25)\",\n \"0 0 30px rgba(255, 193, 7, 0.3)\"\n ],\n zIndices: [0, 1, 10, 20, 30, 40, 50],\n colors: {\n text: \"#ffc107\",\n background: \"#000000\",\n primary: \"#ffc107\",\n secondary: \"#ffb300\",\n accent: \"#ffffff\",\n highlight: \"rgba(255, 193, 7, 0.1)\",\n muted: \"#1a1a1a\",\n success: \"#4caf50\",\n warning: \"#ff9800\",\n error: \"#f44336\",\n info: \"#2196f3\",\n border: \"rgba(255, 193, 7, 0.2)\",\n backgroundSecondary: \"#0a0a0a\",\n backgroundTertiary: \"#111111\",\n backgroundLight: \"rgba(255, 193, 7, 0.03)\",\n backgroundHover: \"rgba(255, 193, 7, 0.05)\",\n surface: \"#050505\",\n textSecondary: \"#e0e0e0\",\n textTertiary: \"#b0b0b0\",\n textMuted: \"#808080\",\n highlightBg: \"rgba(255, 193, 7, 0.2)\",\n highlightBorder: \"rgba(255, 193, 7, 0.4)\"\n },\n buttons: {\n primary: {\n color: \"black\",\n bg: \"primary\",\n borderWidth: 0,\n \"&:hover\": { bg: \"secondary\" }\n },\n secondary: {\n color: \"primary\",\n bg: \"transparent\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"primary\",\n \"&:hover\": { bg: \"highlight\" }\n },\n ghost: {\n color: \"text\",\n bg: \"transparent\",\n \"&:hover\": { bg: \"backgroundHover\" }\n }\n },\n text: {\n heading: {\n fontFamily: \"heading\",\n fontWeight: \"heading\",\n lineHeight: \"heading\"\n },\n body: {\n fontFamily: \"body\",\n fontWeight: \"body\",\n lineHeight: \"body\"\n },\n caption: {\n fontSize: 1,\n color: \"textSecondary\"\n }\n },\n cards: {\n primary: {\n bg: \"surface\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 0\n },\n secondary: {\n bg: \"backgroundSecondary\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 0\n }\n }\n};\nvar defaultEditorTheme = {\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n fonts: {\n body: '\"Fira Code\", \"SF Mono\", Monaco, Inconsolata, monospace',\n heading: '\"Inter\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n monospace: '\"Fira Code\", \"SF Mono\", Monaco, Inconsolata, monospace'\n },\n fontSizes: [12, 14, 16, 18, 20, 24, 32, 48, 64, 96],\n fontScale: 1,\n fontWeights: {\n body: 400,\n heading: 600,\n bold: 700,\n light: 300,\n medium: 500,\n semibold: 600\n },\n lineHeights: {\n body: 1.5,\n heading: 1.2,\n tight: 1.3,\n relaxed: 1.7\n },\n breakpoints: [\"640px\", \"768px\", \"1024px\", \"1280px\"],\n sizes: [16, 32, 64, 128, 256, 512, 768, 1024, 1536],\n radii: [0, 2, 4, 6, 8, 12, 16, 24],\n shadows: [\n \"none\",\n \"0 1px 2px rgba(0, 0, 0, 0.05)\",\n \"0 2px 4px rgba(0, 0, 0, 0.1)\",\n \"0 4px 8px rgba(0, 0, 0, 0.15)\",\n \"0 8px 16px rgba(0, 0, 0, 0.2)\",\n \"0 12px 24px rgba(0, 0, 0, 0.25)\"\n ],\n zIndices: [0, 1, 10, 20, 30, 40, 50],\n colors: {\n text: \"#d4d4d4\",\n background: \"#1e1e1e\",\n primary: \"#569cd6\",\n secondary: \"#408ac9\",\n accent: \"#c586c0\",\n highlight: \"rgba(86, 156, 214, 0.1)\",\n muted: \"#2a2a2a\",\n success: \"#6a9955\",\n warning: \"#d18616\",\n error: \"#f44747\",\n info: \"#569cd6\",\n border: \"rgba(255, 255, 255, 0.1)\",\n backgroundSecondary: \"#252526\",\n backgroundTertiary: \"#333333\",\n backgroundLight: \"rgba(255, 255, 255, 0.03)\",\n backgroundHover: \"rgba(255, 255, 255, 0.05)\",\n surface: \"#252526\",\n textSecondary: \"#cccccc\",\n textTertiary: \"#999999\",\n textMuted: \"#666666\",\n highlightBg: \"rgba(255, 235, 59, 0.2)\",\n highlightBorder: \"rgba(255, 235, 59, 0.4)\"\n },\n buttons: {\n primary: {\n color: \"white\",\n bg: \"primary\",\n \"&:hover\": { bg: \"secondary\" }\n },\n secondary: {\n color: \"primary\",\n bg: \"transparent\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"primary\",\n \"&:hover\": { bg: \"highlight\" }\n },\n ghost: {\n color: \"text\",\n bg: \"transparent\",\n \"&:hover\": { bg: \"backgroundHover\" }\n }\n },\n text: {\n heading: {\n fontFamily: \"heading\",\n fontWeight: \"heading\",\n lineHeight: \"heading\"\n },\n body: {\n fontFamily: \"body\",\n fontWeight: \"body\",\n lineHeight: \"body\"\n },\n caption: {\n fontSize: 1,\n color: \"textSecondary\"\n }\n },\n cards: {\n primary: {\n bg: \"surface\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 1\n },\n secondary: {\n bg: \"backgroundSecondary\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 1\n }\n }\n};\n// src/landingPageTheme.ts\nvar landingPageTheme = {\n space: [0, 4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 80, 100, 128],\n fonts: {\n body: 'Inter, \"Geist Sans\", system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif',\n heading: '-apple-system, BlinkMacSystemFont, \"SF Pro Display\", \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif',\n monospace: '\"SF Mono\", Monaco, Inconsolata, \"Fira Code\", monospace'\n },\n fontSizes: [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 24, 28, 32, 36, 48, 56, 68, 84, 96],\n fontScale: 1,\n fontWeights: {\n body: 400,\n heading: 600,\n bold: 700,\n light: 300,\n medium: 500,\n semibold: 600\n },\n lineHeights: {\n body: 1.6,\n heading: 1.2,\n tight: 1.05,\n relaxed: 1.7\n },\n breakpoints: [\"640px\", \"768px\", \"1024px\", \"1280px\", \"1400px\"],\n sizes: [16, 32, 64, 128, 200, 240, 256, 300, 512, 740, 768, 820, 900, 1024, 1200, 1400, 1536],\n radii: [0, 2, 4, 6, 7, 8, 9, 10, 12, 14, 16, 24],\n shadows: [\n \"none\",\n \"0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)\",\n \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)\",\n \"0 4px 12px rgba(0, 194, 255, 0.4)\",\n \"0 6px 24px rgba(0, 194, 255, 0.1)\",\n \"0 8px 32px rgba(0, 0, 0, 0.4)\"\n ],\n zIndices: [0, 1, 10, 20, 30, 40, 50, 1000],\n colors: {\n text: \"#ffffff\",\n background: \"#000000\",\n primary: \"#00C2FF\",\n secondary: \"#0098CC\",\n accent: \"#0066FF\",\n highlight: \"rgba(0, 194, 255, 0.15)\",\n muted: \"#1a1a1a\",\n success: \"#4caf50\",\n warning: \"#ff9800\",\n error: \"#f44336\",\n info: \"#2196f3\",\n border: \"rgba(0, 194, 255, 0.2)\",\n backgroundSecondary: \"#0a1628\",\n backgroundTertiary: \"#0f1c2e\",\n backgroundLight: \"rgba(0, 194, 255, 0.04)\",\n backgroundHover: \"rgba(0, 194, 255, 0.1)\",\n surface: \"rgba(0, 0, 0, 0.4)\",\n textSecondary: \"#d1d5db\",\n textTertiary: \"#9ca3af\",\n textMuted: \"#6b7280\",\n highlightBg: \"rgba(255, 235, 59, 0.25)\",\n highlightBorder: \"rgba(255, 235, 59, 0.5)\"\n },\n buttons: {\n primary: {\n color: \"#000000\",\n bg: \"#00C2FF\",\n borderWidth: 0,\n padding: \"8px 20px\",\n fontSize: 14,\n fontWeight: 600,\n cursor: \"pointer\",\n \"&:hover\": {\n bg: \"#00D9FF\"\n }\n },\n secondary: {\n color: \"#00C2FF\",\n bg: \"transparent\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"rgba(0, 194, 255, 0.3)\",\n padding: \"8px 16px\",\n fontSize: 14,\n fontWeight: 600,\n cursor: \"pointer\",\n \"&:hover\": {\n bg: \"rgba(0, 194, 255, 0.1)\",\n borderColor: \"#00C2FF\"\n }\n },\n ghost: {\n color: \"#00C2FF\",\n bg: \"transparent\",\n borderWidth: 0,\n padding: \"8px 16px\",\n fontSize: 14,\n fontWeight: 500,\n cursor: \"pointer\",\n \"&:hover\": {\n color: \"#00D9FF\",\n bg: \"rgba(0, 194, 255, 0.1)\"\n }\n }\n },\n text: {\n heading: {\n fontFamily: \"heading\",\n fontWeight: \"heading\",\n lineHeight: \"heading\",\n color: \"#ffffff\"\n },\n body: {\n fontFamily: \"body\",\n fontWeight: \"body\",\n lineHeight: \"body\",\n color: \"text\"\n },\n caption: {\n fontSize: 1,\n color: \"textSecondary\"\n }\n },\n cards: {\n primary: {\n bg: \"surface\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 4\n },\n secondary: {\n bg: \"rgba(0, 194, 255, 0.05)\",\n border: \"1px solid\",\n borderColor: \"rgba(0, 194, 255, 0.2)\",\n borderRadius: 4\n }\n }\n};\nvar landingPageLightTheme = {\n ...landingPageTheme,\n colors: {\n text: \"#1a1a1a\",\n background: \"#ffffff\",\n primary: \"#0098CC\",\n secondary: \"#00C2FF\",\n accent: \"#0066FF\",\n highlight: \"rgba(0, 152, 204, 0.1)\",\n muted: \"#f0f0f0\",\n success: \"#4caf50\",\n warning: \"#ff9800\",\n error: \"#f44336\",\n info: \"#2196f3\",\n border: \"rgba(0, 152, 204, 0.2)\",\n backgroundSecondary: \"#f8f9fa\",\n backgroundTertiary: \"#e9ecef\",\n backgroundLight: \"rgba(0, 152, 204, 0.03)\",\n backgroundHover: \"rgba(0, 152, 204, 0.05)\",\n surface: \"rgba(255, 255, 255, 0.95)\",\n textSecondary: \"#555555\",\n textTertiary: \"#888888\",\n textMuted: \"#aaaaaa\",\n highlightBg: \"rgba(255, 235, 59, 0.3)\",\n highlightBorder: \"rgba(255, 235, 59, 0.6)\"\n },\n buttons: {\n primary: {\n color: \"#ffffff\",\n bg: \"#0098CC\",\n borderWidth: 0,\n padding: \"8px 20px\",\n fontSize: 14,\n fontWeight: 600,\n cursor: \"pointer\",\n \"&:hover\": {\n bg: \"#007aa8\"\n }\n },\n secondary: {\n color: \"#0098CC\",\n bg: \"transparent\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"rgba(0, 152, 204, 0.3)\",\n padding: \"8px 16px\",\n fontSize: 14,\n fontWeight: 600,\n cursor: \"pointer\",\n \"&:hover\": {\n bg: \"rgba(0, 152, 204, 0.05)\",\n borderColor: \"#0098CC\"\n }\n },\n ghost: {\n color: \"#0098CC\",\n bg: \"transparent\",\n borderWidth: 0,\n padding: \"8px 16px\",\n fontSize: 14,\n fontWeight: 500,\n cursor: \"pointer\",\n \"&:hover\": {\n color: \"#007aa8\",\n bg: \"rgba(0, 152, 204, 0.05)\"\n }\n }\n }\n};\n\n// src/themes.ts\nvar regalTheme = {\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n fonts: {\n body: '\"Inter\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n heading: '\"Crimson Text\", \"Georgia\", \"Times New Roman\", serif',\n monospace: '\"Fira Code\", \"SF Mono\", Monaco, Inconsolata, monospace'\n },\n fontSizes: [12, 14, 16, 18, 20, 24, 32, 48, 64, 96],\n fontScale: 1,\n fontWeights: {\n body: 400,\n heading: 600,\n bold: 700,\n light: 300,\n medium: 500,\n semibold: 600\n },\n lineHeights: {\n body: 1.5,\n heading: 1.2,\n tight: 1.25,\n relaxed: 1.75\n },\n breakpoints: [\"640px\", \"768px\", \"1024px\", \"1280px\"],\n sizes: [16, 32, 64, 128, 256, 512, 768, 1024, 1536],\n radii: [0, 2, 4, 6, 8, 12, 16, 24],\n shadows: [\n \"none\",\n \"0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)\",\n \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)\",\n \"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)\",\n \"0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)\",\n \"0 25px 50px -12px rgba(0, 0, 0, 0.25)\"\n ],\n zIndices: [0, 1, 10, 20, 30, 40, 50],\n colors: {\n text: \"#f1e8dc\",\n background: \"#1a1f2e\",\n primary: \"#d4a574\",\n secondary: \"#e0b584\",\n accent: \"#c9b8a3\",\n highlight: \"rgba(212, 165, 116, 0.15)\",\n muted: \"#8b7968\",\n success: \"#5c8a72\",\n warning: \"#d4a574\",\n error: \"#a85751\",\n info: \"#d4a574\",\n border: \"rgba(212, 165, 116, 0.2)\",\n backgroundSecondary: \"#212738\",\n backgroundTertiary: \"#2d3446\",\n backgroundLight: \"rgba(212, 165, 116, 0.08)\",\n backgroundHover: \"rgba(212, 165, 116, 0.15)\",\n surface: \"#212738\",\n textSecondary: \"#c9b8a3\",\n textTertiary: \"#8b7968\",\n textMuted: \"#8b7968\",\n highlightBg: \"rgba(255, 193, 7, 0.25)\",\n highlightBorder: \"rgba(255, 193, 7, 0.5)\"\n },\n buttons: {\n primary: {\n color: \"background\",\n bg: \"primary\",\n \"&:hover\": {\n bg: \"secondary\"\n }\n },\n secondary: {\n color: \"text\",\n bg: \"muted\",\n \"&:hover\": {\n bg: \"backgroundSecondary\"\n }\n },\n ghost: {\n color: \"primary\",\n bg: \"transparent\",\n \"&:hover\": {\n bg: \"muted\"\n }\n }\n },\n text: {\n heading: {\n fontFamily: \"heading\",\n fontWeight: \"heading\",\n lineHeight: \"heading\"\n },\n body: {\n fontFamily: \"body\",\n fontWeight: \"body\",\n lineHeight: \"body\"\n },\n caption: {\n fontSize: 1,\n color: \"textSecondary\"\n }\n },\n cards: {\n primary: {\n bg: \"background\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 2\n },\n secondary: {\n bg: \"backgroundSecondary\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 2\n }\n }\n};\nvar terminalTheme = {\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n fonts: {\n body: '\"SF Mono\", \"Monaco\", \"Inconsolata\", \"Fira Code\", monospace',\n heading: '\"SF Mono\", \"Monaco\", \"Inconsolata\", \"Fira Code\", monospace',\n monospace: '\"SF Mono\", \"Monaco\", \"Inconsolata\", \"Fira Code\", monospace'\n },\n fontSizes: [12, 14, 16, 18, 20, 24, 32, 48, 64, 96],\n fontScale: 1,\n fontWeights: {\n body: 400,\n heading: 500,\n bold: 600,\n light: 300,\n medium: 500,\n semibold: 600\n },\n lineHeights: {\n body: 1.6,\n heading: 1.3,\n tight: 1.4,\n relaxed: 1.8\n },\n breakpoints: [\"640px\", \"768px\", \"1024px\", \"1280px\"],\n sizes: [16, 32, 64, 128, 256, 512, 768, 1024, 1536],\n radii: [0, 2, 4, 6, 8, 12, 16, 24],\n shadows: [\n \"none\",\n \"0 1px 2px 0 rgba(0, 0, 0, 0.05)\",\n \"0 2px 4px 0 rgba(0, 0, 0, 0.06)\",\n \"0 4px 6px 0 rgba(0, 0, 0, 0.07)\",\n \"0 8px 12px 0 rgba(0, 0, 0, 0.08)\",\n \"0 16px 24px 0 rgba(0, 0, 0, 0.10)\"\n ],\n zIndices: [0, 1, 10, 20, 30, 40, 50],\n colors: {\n text: \"#e4e4e4\",\n background: \"rgba(10, 10, 10, 0.85)\",\n primary: \"#66b3ff\",\n secondary: \"#80c4ff\",\n accent: \"#66ff99\",\n highlight: \"rgba(102, 179, 255, 0.15)\",\n muted: \"rgba(26, 26, 26, 0.8)\",\n success: \"#66ff99\",\n warning: \"#ffcc66\",\n error: \"#ff6666\",\n info: \"#66b3ff\",\n border: \"rgba(255, 255, 255, 0.1)\",\n backgroundSecondary: \"rgba(15, 15, 15, 0.9)\",\n backgroundTertiary: \"rgba(20, 20, 20, 0.9)\",\n backgroundLight: \"rgba(255, 255, 255, 0.05)\",\n backgroundHover: \"rgba(102, 179, 255, 0.08)\",\n surface: \"rgba(15, 15, 15, 0.95)\",\n textSecondary: \"rgba(255, 255, 255, 0.7)\",\n textTertiary: \"rgba(255, 255, 255, 0.5)\",\n textMuted: \"rgba(255, 255, 255, 0.4)\",\n highlightBg: \"rgba(255, 235, 59, 0.25)\",\n highlightBorder: \"rgba(255, 235, 59, 0.5)\"\n },\n modes: {\n light: {\n text: \"#1a1a1a\",\n background: \"rgba(255, 255, 255, 0.9)\",\n primary: \"#0066cc\",\n secondary: \"#0052a3\",\n accent: \"#00cc88\",\n highlight: \"rgba(0, 102, 204, 0.08)\",\n muted: \"rgba(245, 245, 245, 0.8)\",\n success: \"#00cc88\",\n warning: \"#ffaa00\",\n error: \"#ff3333\",\n info: \"#0066cc\",\n border: \"rgba(0, 0, 0, 0.1)\",\n backgroundSecondary: \"rgba(250, 250, 250, 0.9)\",\n backgroundTertiary: \"rgba(245, 245, 245, 0.9)\",\n backgroundLight: \"rgba(0, 0, 0, 0.02)\",\n backgroundHover: \"rgba(0, 102, 204, 0.04)\",\n surface: \"rgba(255, 255, 255, 0.95)\",\n textSecondary: \"rgba(0, 0, 0, 0.6)\",\n textTertiary: \"rgba(0, 0, 0, 0.4)\",\n textMuted: \"rgba(0, 0, 0, 0.3)\",\n highlightBg: \"rgba(255, 235, 59, 0.3)\",\n highlightBorder: \"rgba(255, 235, 59, 0.6)\"\n }\n },\n buttons: {\n primary: {\n color: \"white\",\n bg: \"primary\",\n borderWidth: 0,\n \"&:hover\": {\n bg: \"secondary\"\n }\n },\n secondary: {\n color: \"primary\",\n bg: \"transparent\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"primary\",\n \"&:hover\": {\n bg: \"highlight\"\n }\n },\n ghost: {\n color: \"text\",\n bg: \"transparent\",\n \"&:hover\": {\n bg: \"backgroundHover\"\n }\n }\n },\n text: {\n heading: {\n fontFamily: \"heading\",\n fontWeight: \"heading\",\n lineHeight: \"heading\"\n },\n body: {\n fontFamily: \"body\",\n fontWeight: \"body\",\n lineHeight: \"body\"\n },\n caption: {\n fontSize: 1,\n color: \"textSecondary\"\n }\n },\n cards: {\n primary: {\n bg: \"surface\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 1\n },\n secondary: {\n bg: \"backgroundSecondary\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 1\n }\n }\n};\nvar matrixTheme = {\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n fonts: {\n body: '\"Courier New\", \"Courier\", \"Lucida Console\", \"Monaco\", monospace',\n heading: '\"Courier New\", \"Courier\", \"Lucida Console\", \"Monaco\", monospace',\n monospace: '\"Courier New\", \"Courier\", \"Lucida Console\", \"Monaco\", monospace'\n },\n fontSizes: [12, 14, 16, 18, 20, 24, 32, 48, 64, 96],\n fontScale: 1,\n fontWeights: {\n body: 400,\n heading: 500,\n bold: 600,\n light: 300,\n medium: 500,\n semibold: 600\n },\n lineHeights: {\n body: 1.5,\n heading: 1.2,\n tight: 1.3,\n relaxed: 1.7\n },\n breakpoints: [\"640px\", \"768px\", \"1024px\", \"1280px\"],\n sizes: [16, 32, 64, 128, 256, 512, 768, 1024, 1536],\n radii: [0, 2, 4, 6, 8, 12, 16, 24],\n shadows: [\n \"none\",\n \"0 0 5px rgba(0, 216, 53, 0.15)\",\n \"0 0 10px rgba(0, 216, 53, 0.2)\",\n \"0 0 15px rgba(0, 216, 53, 0.25)\",\n \"0 0 20px rgba(0, 216, 53, 0.3)\",\n \"0 0 30px rgba(0, 216, 53, 0.4)\"\n ],\n zIndices: [0, 1, 10, 20, 30, 40, 50],\n colors: {\n text: \"#a8a8a8\",\n background: \"#000000\",\n primary: \"#00d835\",\n secondary: \"#00a828\",\n accent: \"#00d835\",\n highlight: \"rgba(0, 216, 53, 0.15)\",\n muted: \"#0a0a0a\",\n success: \"#00d835\",\n warning: \"#d4a000\",\n error: \"#d63333\",\n info: \"#00a8d6\",\n border: \"rgba(0, 216, 53, 0.2)\",\n backgroundSecondary: \"#0a0a0a\",\n backgroundTertiary: \"#111111\",\n backgroundLight: \"rgba(0, 216, 53, 0.03)\",\n backgroundHover: \"rgba(0, 216, 53, 0.08)\",\n surface: \"#050505\",\n textSecondary: \"#808080\",\n textTertiary: \"#606060\",\n textMuted: \"#484848\",\n highlightBg: \"rgba(0, 216, 53, 0.25)\",\n highlightBorder: \"rgba(0, 216, 53, 0.5)\"\n },\n buttons: {\n primary: {\n color: \"black\",\n bg: \"primary\",\n borderWidth: 0,\n \"&:hover\": {\n bg: \"secondary\"\n }\n },\n secondary: {\n color: \"primary\",\n bg: \"transparent\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"primary\",\n \"&:hover\": {\n bg: \"highlight\"\n }\n },\n ghost: {\n color: \"text\",\n bg: \"transparent\",\n \"&:hover\": {\n bg: \"backgroundHover\"\n }\n }\n },\n text: {\n heading: {\n fontFamily: \"heading\",\n fontWeight: \"heading\",\n lineHeight: \"heading\"\n },\n body: {\n fontFamily: \"body\",\n fontWeight: \"body\",\n lineHeight: \"body\"\n },\n caption: {\n fontSize: 1,\n color: \"textSecondary\"\n }\n },\n cards: {\n primary: {\n bg: \"surface\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 0\n },\n secondary: {\n bg: \"backgroundSecondary\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 0\n }\n }\n};\nvar matrixMinimalTheme = {\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n fonts: {\n body: '\"Courier New\", \"Courier\", \"Lucida Console\", \"Monaco\", monospace',\n heading: '\"Courier New\", \"Courier\", \"Lucida Console\", \"Monaco\", monospace',\n monospace: '\"Courier New\", \"Courier\", \"Lucida Console\", \"Monaco\", monospace'\n },\n fontSizes: [12, 14, 16, 18, 20, 24, 32, 48, 64, 96],\n fontScale: 1,\n fontWeights: {\n body: 400,\n heading: 500,\n bold: 600,\n light: 300,\n medium: 500,\n semibold: 600\n },\n lineHeights: {\n body: 1.5,\n heading: 1.2,\n tight: 1.3,\n relaxed: 1.7\n },\n breakpoints: [\"640px\", \"768px\", \"1024px\", \"1280px\"],\n sizes: [16, 32, 64, 128, 256, 512, 768, 1024, 1536],\n radii: [0, 2, 4, 6, 8, 12, 16, 24],\n shadows: [\n \"none\",\n \"0 1px 2px rgba(0, 0, 0, 0.05)\",\n \"0 2px 4px rgba(0, 0, 0, 0.1)\",\n \"0 4px 8px rgba(0, 0, 0, 0.15)\",\n \"0 8px 16px rgba(0, 0, 0, 0.2)\",\n \"0 0 20px rgba(0, 216, 53, 0.1)\"\n ],\n zIndices: [0, 1, 10, 20, 30, 40, 50],\n colors: {\n text: \"#a8a8a8\",\n background: \"#000000\",\n primary: \"#b8b8b8\",\n secondary: \"#909090\",\n accent: \"#00d835\",\n highlight: \"rgba(0, 216, 53, 0.1)\",\n muted: \"#0a0a0a\",\n success: \"#00d835\",\n warning: \"#d4a000\",\n error: \"#d63333\",\n info: \"#00a8d6\",\n border: \"rgba(184, 184, 184, 0.1)\",\n backgroundSecondary: \"#0a0a0a\",\n backgroundTertiary: \"#111111\",\n backgroundLight: \"rgba(184, 184, 184, 0.02)\",\n backgroundHover: \"rgba(0, 216, 53, 0.05)\",\n surface: \"#050505\",\n textSecondary: \"#808080\",\n textTertiary: \"#606060\",\n textMuted: \"#484848\",\n highlightBg: \"rgba(0, 216, 53, 0.2)\",\n highlightBorder: \"rgba(0, 216, 53, 0.4)\"\n },\n buttons: {\n primary: {\n color: \"black\",\n bg: \"primary\",\n borderWidth: 0,\n \"&:hover\": {\n bg: \"secondary\"\n }\n },\n secondary: {\n color: \"primary\",\n bg: \"transparent\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"primary\",\n \"&:hover\": {\n bg: \"backgroundHover\"\n }\n },\n ghost: {\n color: \"text\",\n bg: \"transparent\",\n \"&:hover\": {\n bg: \"backgroundHover\"\n }\n }\n },\n text: {\n heading: {\n fontFamily: \"heading\",\n fontWeight: \"heading\",\n lineHeight: \"heading\"\n },\n body: {\n fontFamily: \"body\",\n fontWeight: \"body\",\n lineHeight: \"body\"\n },\n caption: {\n fontSize: 1,\n color: \"textSecondary\"\n }\n },\n cards: {\n primary: {\n bg: \"surface\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 0\n },\n secondary: {\n bg: \"backgroundSecondary\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 0\n }\n }\n};\nvar slateTheme = {\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n fonts: {\n body: '\"Inter\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n heading: '\"Inter\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n monospace: '\"Fira Code\", \"SF Mono\", Monaco, Inconsolata, monospace'\n },\n fontSizes: [12, 14, 16, 18, 20, 24, 32, 48, 64, 96],\n fontScale: 1,\n fontWeights: {\n body: 400,\n heading: 600,\n bold: 700,\n light: 300,\n medium: 500,\n semibold: 600\n },\n lineHeights: {\n body: 1.6,\n heading: 1.3,\n tight: 1.25,\n relaxed: 1.75\n },\n breakpoints: [\"640px\", \"768px\", \"1024px\", \"1280px\"],\n sizes: [16, 32, 64, 128, 256, 512, 768, 1024, 1536],\n radii: [0, 2, 4, 6, 8, 12, 16, 24],\n shadows: [\n \"none\",\n \"0 1px 3px 0 rgba(0, 0, 0, 0.2)\",\n \"0 4px 6px -1px rgba(0, 0, 0, 0.2)\",\n \"0 10px 15px -3px rgba(0, 0, 0, 0.2)\",\n \"0 20px 25px -5px rgba(0, 0, 0, 0.25)\",\n \"0 25px 50px -12px rgba(0, 0, 0, 0.3)\"\n ],\n zIndices: [0, 1, 10, 20, 30, 40, 50],\n colors: {\n text: \"#9ca3af\",\n background: \"#1a1c1e\",\n primary: \"#d1d5db\",\n secondary: \"#6b7280\",\n accent: \"#f59e0b\",\n highlight: \"rgba(209, 213, 219, 0.15)\",\n muted: \"#2d3134\",\n success: \"#10b981\",\n warning: \"#f59e0b\",\n error: \"#ef4444\",\n info: \"#3b82f6\",\n border: \"rgba(156, 163, 175, 0.15)\",\n backgroundSecondary: \"#22252a\",\n backgroundTertiary: \"#2d3134\",\n backgroundLight: \"rgba(156, 163, 175, 0.05)\",\n backgroundHover: \"rgba(156, 163, 175, 0.1)\",\n surface: \"#1f2124\",\n textSecondary: \"#e5e7eb\",\n textTertiary: \"#6b7280\",\n textMuted: \"#4b5563\",\n highlightBg: \"rgba(245, 158, 11, 0.25)\",\n highlightBorder: \"rgba(245, 158, 11, 0.5)\"\n },\n buttons: {\n primary: {\n color: \"#1a1c1e\",\n bg: \"primary\",\n borderWidth: 0,\n \"&:hover\": {\n bg: \"#9ca3af\"\n }\n },\n secondary: {\n color: \"#e5e7eb\",\n bg: \"secondary\",\n borderWidth: 0,\n \"&:hover\": {\n bg: \"#4b5563\"\n }\n },\n ghost: {\n color: \"textSecondary\",\n bg: \"transparent\",\n \"&:hover\": {\n bg: \"backgroundHover\"\n }\n }\n },\n text: {\n heading: {\n fontFamily: \"heading\",\n fontWeight: \"heading\",\n lineHeight: \"heading\",\n color: \"textSecondary\"\n },\n body: {\n fontFamily: \"body\",\n fontWeight: \"body\",\n lineHeight: \"body\"\n },\n caption: {\n fontSize: 1,\n color: \"textTertiary\"\n }\n },\n cards: {\n primary: {\n bg: \"surface\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 3\n },\n secondary: {\n bg: \"backgroundSecondary\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 3\n }\n }\n};\n// src/ThemeProvider.tsx\nimport React, { createContext, useContext, useState, useEffect } from \"react\";\n\n// src/themeHelpers.ts\nfunction overrideColors(theme, colors) {\n return {\n ...theme,\n colors: {\n ...theme.colors,\n ...colors\n }\n };\n}\nfunction makeTheme(baseTheme, overrides) {\n return {\n ...baseTheme,\n ...overrides,\n colors: {\n ...baseTheme.colors,\n ...overrides.colors\n },\n fonts: {\n ...baseTheme.fonts,\n ...overrides.fonts\n }\n };\n}\nfunction addMode(theme, modeName, colors, baseMode) {\n let baseColors;\n if (baseMode && theme.modes && theme.modes[baseMode]) {\n baseColors = {\n ...theme.colors,\n ...theme.modes[baseMode]\n };\n } else {\n baseColors = theme.colors;\n }\n const newMode = {\n ...baseColors,\n ...colors\n };\n return {\n ...theme,\n modes: {\n ...theme.modes,\n [modeName]: newMode\n }\n };\n}\nfunction getMode(theme, mode) {\n if (!mode || !theme.modes || !theme.modes[mode]) {\n return theme.colors;\n }\n return {\n ...theme.colors,\n ...theme.modes[mode]\n };\n}\n\n// src/ThemeProvider.tsx\nvar ThemeContext;\nvar getThemeContext = () => {\n if (typeof window !== \"undefined\") {\n const globalWindow = window;\n if (!globalWindow.__principlemd_theme_context__) {\n globalWindow.__principlemd_theme_context__ = createContext(undefined);\n }\n return globalWindow.__principlemd_theme_context__;\n } else {\n if (!ThemeContext) {\n ThemeContext = createContext(undefined);\n }\n return ThemeContext;\n }\n};\nvar ThemeContextSingleton = getThemeContext();\nvar useTheme = () => {\n const context = useContext(ThemeContextSingleton);\n if (!context) {\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n }\n return context;\n};\nvar ThemeProvider = ({\n children,\n theme: customTheme = theme,\n initialMode\n}) => {\n const [mode, setMode] = useState(initialMode);\n const activeTheme = React.useMemo(() => {\n if (!mode || !customTheme.modes || !customTheme.modes[mode]) {\n return customTheme;\n }\n return {\n ...customTheme,\n colors: getMode(customTheme, mode)\n };\n }, [customTheme, mode]);\n useEffect(() => {\n if (!initialMode) {\n const savedMode = localStorage.getItem(\"principlemd-theme-mode\");\n if (savedMode) {\n setMode(savedMode);\n }\n }\n }, [initialMode]);\n useEffect(() => {\n if (mode) {\n localStorage.setItem(\"principlemd-theme-mode\", mode);\n } else {\n localStorage.removeItem(\"principlemd-theme-mode\");\n }\n }, [mode]);\n const value = {\n theme: activeTheme,\n mode,\n setMode\n };\n return /* @__PURE__ */ React.createElement(ThemeContextSingleton.Provider, {\n value\n }, children);\n};\nvar withTheme = (Component) => {\n return (props) => {\n const { theme: theme2 } = useTheme();\n return /* @__PURE__ */ React.createElement(Component, {\n ...props,\n theme: theme2\n });\n };\n};\n// src/utils.ts\nvar getColor = (theme2, colorKey) => {\n const colors = theme2.colors;\n const value = colors[colorKey];\n return typeof value === \"string\" ? value : colorKey;\n};\nvar getSpace = (theme2, index) => {\n return theme2.space[index] || 0;\n};\nvar getFontSize = (theme2, index) => {\n return theme2.fontSizes[index] || theme2.fontSizes[2];\n};\nvar getRadius = (theme2, index) => {\n return theme2.radii[index] || 0;\n};\nvar getShadow = (theme2, index) => {\n return theme2.shadows[index] || \"none\";\n};\nvar getZIndex = (theme2, index) => {\n return theme2.zIndices[index] || 0;\n};\nvar responsive = (values) => {\n return values.reduce((acc, value, index) => {\n if (index === 0) {\n return value;\n }\n return {\n ...acc,\n [`@media screen and (min-width: ${values[index - 1]})`]: value\n };\n }, {});\n};\nvar sx = (styles) => styles;\nvar createStyle = (theme2, styleObj) => {\n const processValue = (value) => {\n if (typeof value === \"string\") {\n if (value in theme2.colors) {\n return getColor(theme2, value);\n }\n return value;\n }\n if (typeof value === \"number\") {\n return value;\n }\n if (Array.isArray(value)) {\n return value.map(processValue);\n }\n if (typeof value === \"object\" && value !== null) {\n const processed2 = {};\n for (const [key, val] of Object.entries(value)) {\n processed2[key] = processValue(val);\n }\n return processed2;\n }\n return value;\n };\n const processed = {};\n for (const [key, val] of Object.entries(styleObj)) {\n processed[key] = processValue(val);\n }\n return processed;\n};\nvar mergeThemes = (baseTheme, ...overrides) => {\n return overrides.reduce((theme2, override) => ({\n space: override.space || theme2.space,\n fonts: { ...theme2.fonts, ...override.fonts || {} },\n fontSizes: override.fontSizes || theme2.fontSizes,\n fontWeights: { ...theme2.fontWeights, ...override.fontWeights || {} },\n lineHeights: { ...theme2.lineHeights, ...override.lineHeights || {} },\n breakpoints: override.breakpoints || theme2.breakpoints,\n sizes: override.sizes || theme2.sizes,\n radii: override.radii || theme2.radii,\n shadows: override.shadows || theme2.shadows,\n zIndices: override.zIndices || theme2.zIndices,\n colors: {\n ...theme2.colors,\n ...override.colors || {}\n },\n buttons: { ...theme2.buttons, ...override.buttons || {} },\n text: { ...theme2.text, ...override.text || {} },\n cards: { ...theme2.cards, ...override.cards || {} }\n }), baseTheme);\n};\n// src/ThemeShowcase.tsx\nimport React2 from \"react\";\nvar ThemeShowcase = ({\n theme: theme2,\n title,\n showValues = true,\n sections = [\"colors\", \"typography\", \"spacing\", \"shadows\", \"radii\"]\n}) => {\n const containerStyle = {\n fontFamily: theme2.fonts.body,\n color: theme2.colors.text,\n backgroundColor: theme2.colors.background,\n padding: theme2.space[4],\n minHeight: \"100vh\"\n };\n const sectionStyle = {\n marginBottom: theme2.space[5],\n padding: theme2.space[4],\n backgroundColor: theme2.colors.surface || theme2.colors.backgroundSecondary,\n borderRadius: theme2.radii[2],\n border: `1px solid ${theme2.colors.border}`\n };\n const headingStyle = {\n fontFamily: theme2.fonts.heading,\n fontSize: theme2.fontSizes[5],\n fontWeight: theme2.fontWeights.heading,\n marginBottom: theme2.space[3],\n color: theme2.colors.primary\n };\n const subheadingStyle = {\n fontFamily: theme2.fonts.heading,\n fontSize: theme2.fontSizes[3],\n fontWeight: theme2.fontWeights.medium,\n marginBottom: theme2.space[2],\n marginTop: theme2.space[3],\n color: theme2.colors.text\n };\n return /* @__PURE__ */ React2.createElement(\"div\", {\n style: containerStyle\n }, title && /* @__PURE__ */ React2.createElement(\"h1\", {\n style: {\n ...headingStyle,\n fontSize: theme2.fontSizes[6],\n marginBottom: theme2.space[4]\n }\n }, title), sections.includes(\"colors\") && /* @__PURE__ */ React2.createElement(\"div\", {\n style: sectionStyle\n }, /* @__PURE__ */ React2.createElement(\"h2\", {\n style: headingStyle\n }, \"Colors\"), /* @__PURE__ */ React2.createElement(\"h3\", {\n style: subheadingStyle\n }, \"Primary Colors\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fill, minmax(200px, 1fr))\",\n gap: theme2.space[3],\n marginBottom: theme2.space[3]\n }\n }, [\"text\", \"background\", \"primary\", \"secondary\", \"accent\", \"muted\"].map((key) => {\n const color = theme2.colors[key];\n if (!color)\n return null;\n return /* @__PURE__ */ React2.createElement(\"div\", {\n key,\n style: {\n display: \"flex\",\n alignItems: \"center\",\n padding: theme2.space[2],\n backgroundColor: theme2.colors.backgroundLight || theme2.colors.backgroundTertiary,\n borderRadius: theme2.radii[1]\n }\n }, /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n width: 40,\n height: 40,\n backgroundColor: color,\n border: `1px solid ${theme2.colors.border}`,\n borderRadius: theme2.radii[1],\n marginRight: theme2.space[2]\n }\n }), /* @__PURE__ */ React2.createElement(\"div\", null, /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[1],\n fontWeight: theme2.fontWeights.medium\n }\n }, key), showValues && /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[0],\n color: theme2.colors.textSecondary\n }\n }, color)));\n })), /* @__PURE__ */ React2.createElement(\"h3\", {\n style: subheadingStyle\n }, \"Status Colors\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fill, minmax(200px, 1fr))\",\n gap: theme2.space[3],\n marginBottom: theme2.space[3]\n }\n }, [\"success\", \"warning\", \"error\", \"info\"].map((key) => {\n const color = theme2.colors[key];\n if (!color)\n return null;\n return /* @__PURE__ */ React2.createElement(\"div\", {\n key,\n style: {\n display: \"flex\",\n alignItems: \"center\",\n padding: theme2.space[2],\n backgroundColor: theme2.colors.backgroundLight || theme2.colors.backgroundTertiary,\n borderRadius: theme2.radii[1]\n }\n }, /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n width: 40,\n height: 40,\n backgroundColor: color,\n border: `1px solid ${theme2.colors.border}`,\n borderRadius: theme2.radii[1],\n marginRight: theme2.space[2]\n }\n }), /* @__PURE__ */ React2.createElement(\"div\", null, /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[1],\n fontWeight: theme2.fontWeights.medium\n }\n }, key), showValues && /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[0],\n color: theme2.colors.textSecondary\n }\n }, color)));\n })), /* @__PURE__ */ React2.createElement(\"h3\", {\n style: subheadingStyle\n }, \"Background Colors\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fill, minmax(200px, 1fr))\",\n gap: theme2.space[3]\n }\n }, [\"backgroundSecondary\", \"backgroundTertiary\", \"backgroundLight\", \"backgroundHover\", \"surface\"].map((key) => {\n const color = theme2.colors[key];\n if (!color)\n return null;\n return /* @__PURE__ */ React2.createElement(\"div\", {\n key,\n style: {\n padding: theme2.space[3],\n backgroundColor: color,\n border: `1px solid ${theme2.colors.border}`,\n borderRadius: theme2.radii[1]\n }\n }, /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[1],\n fontWeight: theme2.fontWeights.medium\n }\n }, key), showValues && /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[0],\n color: theme2.colors.textSecondary,\n marginTop: theme2.space[1]\n }\n }, color));\n }))), sections.includes(\"typography\") && /* @__PURE__ */ React2.createElement(\"div\", {\n style: sectionStyle\n }, /* @__PURE__ */ React2.createElement(\"h2\", {\n style: headingStyle\n }, \"Typography\"), /* @__PURE__ */ React2.createElement(\"h3\", {\n style: subheadingStyle\n }, \"Font Families\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: { marginBottom: theme2.space[4] }\n }, /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.heading,\n fontSize: theme2.fontSizes[4],\n marginBottom: theme2.space[2]\n }\n }, \"Heading Font: \", showValues && /* @__PURE__ */ React2.createElement(\"span\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[1],\n color: theme2.colors.textSecondary\n }\n }, \" \", theme2.fonts.heading)), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.body,\n fontSize: theme2.fontSizes[2],\n marginBottom: theme2.space[2]\n }\n }, \"Body Font: \", showValues && /* @__PURE__ */ React2.createElement(\"span\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[1],\n color: theme2.colors.textSecondary\n }\n }, \" \", theme2.fonts.body)), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[2]\n }\n }, \"Monospace Font: \", showValues && /* @__PURE__ */ React2.createElement(\"span\", {\n style: {\n fontSize: theme2.fontSizes[1],\n color: theme2.colors.textSecondary\n }\n }, \" \", theme2.fonts.monospace))), /* @__PURE__ */ React2.createElement(\"h3\", {\n style: subheadingStyle\n }, \"Font Sizes\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: { marginBottom: theme2.space[4] }\n }, theme2.fontSizes.map((size, index) => /* @__PURE__ */ React2.createElement(\"div\", {\n key: index,\n style: {\n fontSize: size,\n lineHeight: theme2.lineHeights.body,\n marginBottom: theme2.space[1]\n }\n }, \"Size \", index, \": Sample Text \", showValues && `(${size}px)`))), /* @__PURE__ */ React2.createElement(\"h3\", {\n style: subheadingStyle\n }, \"Font Weights\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(150px, 1fr))\",\n gap: theme2.space[2]\n }\n }, Object.entries(theme2.fontWeights).map(([name, weight]) => /* @__PURE__ */ React2.createElement(\"div\", {\n key: name,\n style: {\n fontWeight: weight,\n fontSize: theme2.fontSizes[2]\n }\n }, name, \" \", showValues && `(${weight})`)))), sections.includes(\"spacing\") && /* @__PURE__ */ React2.createElement(\"div\", {\n style: sectionStyle\n }, /* @__PURE__ */ React2.createElement(\"h2\", {\n style: headingStyle\n }, \"Spacing\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: { display: \"flex\", flexDirection: \"column\", gap: theme2.space[2] }\n }, theme2.space.map((space, index) => /* @__PURE__ */ React2.createElement(\"div\", {\n key: index,\n style: { display: \"flex\", alignItems: \"center\" }\n }, /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n width: 60,\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[1],\n color: theme2.colors.textSecondary\n }\n }, \"[\", index, \"]\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n height: 24,\n width: space,\n backgroundColor: theme2.colors.primary,\n borderRadius: theme2.radii[1]\n }\n }), showValues && /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n marginLeft: theme2.space[2],\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[1],\n color: theme2.colors.textSecondary\n }\n }, space, \"px\"))))), sections.includes(\"radii\") && /* @__PURE__ */ React2.createElement(\"div\", {\n style: sectionStyle\n }, /* @__PURE__ */ React2.createElement(\"h2\", {\n style: headingStyle\n }, \"Border Radii\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fill, minmax(100px, 1fr))\",\n gap: theme2.space[3]\n }\n }, theme2.radii.map((radius, index) => /* @__PURE__ */ React2.createElement(\"div\", {\n key: index,\n style: { textAlign: \"center\" }\n }, /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n width: 80,\n height: 80,\n backgroundColor: theme2.colors.primary,\n borderRadius: radius,\n marginBottom: theme2.space[1],\n margin: \"0 auto\"\n }\n }), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[0],\n color: theme2.colors.textSecondary\n }\n }, \"[\", index, \"] \", showValues && `${radius}px`))))), sections.includes(\"shadows\") && /* @__PURE__ */ React2.createElement(\"div\", {\n style: sectionStyle\n }, /* @__PURE__ */ React2.createElement(\"h2\", {\n style: headingStyle\n }, \"Shadows\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fill, minmax(150px, 1fr))\",\n gap: theme2.space[4]\n }\n }, theme2.shadows.map((shadow, index) => /* @__PURE__ */ React2.createElement(\"div\", {\n key: index,\n style: { textAlign: \"center\" }\n }, /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n width: 100,\n height: 100,\n backgroundColor: theme2.colors.background,\n boxShadow: shadow,\n borderRadius: theme2.radii[2],\n margin: \"0 auto\",\n marginBottom: theme2.space[2],\n border: `1px solid ${theme2.colors.border}`\n }\n }), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[0],\n color: theme2.colors.textSecondary\n }\n }, \"Shadow [\", index, \"]\"), showValues && /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[0],\n color: theme2.colors.textMuted,\n marginTop: theme2.space[1]\n }\n }, shadow === \"none\" ? \"none\" : \"...\"))))), theme2.modes && Object.keys(theme2.modes).length > 0 && /* @__PURE__ */ React2.createElement(\"div\", {\n style: sectionStyle\n }, /* @__PURE__ */ React2.createElement(\"h2\", {\n style: headingStyle\n }, \"Available Modes\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n display: \"flex\",\n gap: theme2.space[2],\n flexWrap: \"wrap\"\n }\n }, /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n padding: `${theme2.space[2]}px ${theme2.space[3]}px`,\n backgroundColor: theme2.colors.primary,\n color: \"#ffffff\",\n borderRadius: theme2.radii[2],\n fontFamily: theme2.fonts.body,\n fontSize: theme2.fontSizes[1]\n }\n }, \"default\"), Object.keys(theme2.modes).map((modeName) => /* @__PURE__ */ React2.createElement(\"div\", {\n key: modeName,\n style: {\n padding: `${theme2.space[2]}px ${theme2.space[3]}px`,\n backgroundColor: theme2.colors.secondary,\n color: theme2.colors.text,\n borderRadius: theme2.radii[2],\n fontFamily: theme2.fonts.body,\n fontSize: theme2.fontSizes[1]\n }\n }, modeName)))));\n};\n\n// src/index.ts\nvar theme = terminalTheme;\nfunction scaleThemeFonts(theme2, scale) {\n const currentScale = theme2.fontScale || 1;\n const effectiveScale = scale / currentScale;\n return {\n ...theme2,\n fontSizes: theme2.fontSizes.map((size) => Math.round(size * effectiveScale)),\n fontScale: scale\n };\n}\nfunction increaseFontScale(theme2) {\n const currentScale = theme2.fontScale || 1;\n const newScale = Math.min(currentScale * 1.1, 2);\n return scaleThemeFonts(theme2, newScale);\n}\nfunction decreaseFontScale(theme2) {\n const currentScale = theme2.fontScale || 1;\n const newScale = Math.max(currentScale * 0.9, 0.5);\n return scaleThemeFonts(theme2, newScale);\n}\nfunction resetFontScale(theme2) {\n return scaleThemeFonts(theme2, 1);\n}\nvar src_default = theme;\nexport {\n withTheme,\n useTheme,\n theme,\n terminalTheme,\n sx,\n slateTheme,\n scaleThemeFonts,\n responsive,\n resetFontScale,\n regalTheme,\n overrideColors,\n mergeThemes,\n matrixTheme,\n matrixMinimalTheme,\n makeTheme,\n landingPageTheme,\n landingPageLightTheme,\n increaseFontScale,\n glassmorphismTheme,\n getZIndex,\n getSpace,\n getShadow,\n getRadius,\n getMode,\n getFontSize,\n getColor,\n defaultTerminalTheme,\n defaultMarkdownTheme,\n defaultEditorTheme,\n src_default as default,\n decreaseFontScale,\n createStyle,\n addMode,\n ThemeShowcase,\n ThemeProvider\n};\n","/**\n * Adapter Types\n *\n * Defines the interfaces and types used by the BacklogAdapter\n * to provide a clean abstraction over Backlog.md file access.\n */\n\n/**\n * File access functions provided to the adapter\n */\nexport interface FileAccessFunctions {\n /**\n * Fetch the content of a file by path\n * @param path - Relative path from repository root (e.g., \"backlog/config.yml\")\n * @returns Promise resolving to file content as string\n */\n fetchFile: (path: string) => Promise<string>;\n\n /**\n * List all files in the repository\n * @returns Array of file paths relative to repository root\n */\n listFiles: () => string[];\n}\n\n/**\n * Backlog.md project configuration\n */\nexport interface BacklogConfig {\n project_name: string;\n default_status: string;\n statuses: string[];\n labels?: string[];\n milestones?: string[];\n date_format?: string;\n default_editor?: string;\n auto_commit?: boolean;\n zero_padded_ids?: number;\n}\n\n/**\n * Task metadata from YAML frontmatter\n */\nexport interface TaskMetadata {\n id: string;\n title: string;\n status: string;\n assignee: string[];\n created_date: string;\n updated_date?: string;\n labels: string[];\n dependencies: string[];\n priority?: 'low' | 'medium' | 'high';\n ordinal?: number;\n parent?: string;\n}\n\n/**\n * Complete task with parsed content\n */\nexport interface Task extends TaskMetadata {\n // Normalized field names to match existing backlog-types\n createdDate: string; // Normalized from created_date\n updatedDate?: string; // Normalized from updated_date\n parentTaskId?: string; // Normalized from parent\n\n // Additional fields\n body: string;\n rawContent?: string;\n description?: string;\n acceptanceCriteriaItems?: AcceptanceCriterion[];\n implementationPlan?: string;\n implementationNotes?: string;\n subtasks?: string[];\n reporter?: string;\n milestone?: string;\n branch?: string;\n filePath?: string;\n lastModified?: Date;\n source?: 'local' | 'remote' | 'completed';\n}\n\n/**\n * Acceptance criterion from task\n */\nexport interface AcceptanceCriterion {\n index: number; // 1-based index\n text: string;\n checked: boolean;\n}\n\n/**\n * Main adapter interface\n */\nexport interface IBacklogAdapter {\n /**\n * Get the Backlog.md project configuration\n */\n getConfig(): Promise<BacklogConfig>;\n\n /**\n * Get all tasks from the backlog\n * @param includeCompleted - Whether to include completed tasks (default: true)\n */\n getTasks(includeCompleted?: boolean): Promise<Task[]>;\n\n /**\n * Get the list of status columns from config\n */\n getStatuses(): Promise<string[]>;\n\n /**\n * Get tasks grouped by status\n * @param includeCompleted - Whether to include completed tasks (default: true)\n */\n getTasksByStatus(includeCompleted?: boolean): Promise<Map<string, Task[]>>;\n\n /**\n * Check if the repository is a Backlog.md project\n */\n isBacklogProject(): boolean;\n}\n\n/**\n * Error thrown when Backlog.md files are not found or invalid\n */\nexport class BacklogAdapterError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'BacklogAdapterError';\n }\n}\n","/**\n * Backlog Parser Utilities\n *\n * Functions for parsing Backlog.md YAML frontmatter and markdown content.\n */\n\nimport type {\n Task,\n TaskMetadata,\n BacklogConfig,\n AcceptanceCriterion,\n} from './types';\nimport { BacklogAdapterError } from './types';\n\n/**\n * Simple YAML parser for Backlog.md frontmatter\n * Handles basic YAML types: strings, numbers, booleans, arrays\n */\nexport function parseYaml(yamlString: string): Record<string, unknown> {\n const lines = yamlString.split('\\n');\n const result: Record<string, unknown> = {};\n let currentKey = '';\n let isArray = false;\n let arrayItems: string[] = [];\n\n for (const line of lines) {\n const trimmed = line.trim();\n\n // Skip empty lines and comments\n if (!trimmed || trimmed.startsWith('#')) {\n continue;\n }\n\n // Check for array items\n if (trimmed.startsWith('- ')) {\n if (isArray) {\n const value = trimmed.slice(2).trim();\n // Remove quotes if present\n arrayItems.push(value.replace(/^[\"']|[\"']$/g, ''));\n }\n continue;\n }\n\n // If we were building an array, save it\n if (isArray && !trimmed.startsWith('- ')) {\n result[currentKey] = arrayItems;\n isArray = false;\n arrayItems = [];\n currentKey = '';\n }\n\n // Parse key-value pairs\n const colonIndex = trimmed.indexOf(':');\n if (colonIndex > 0) {\n const key = trimmed.slice(0, colonIndex).trim();\n const valueStr = trimmed.slice(colonIndex + 1).trim();\n\n // Check if this starts an array\n if (valueStr === '' || valueStr === '[]') {\n currentKey = key;\n if (valueStr === '[]') {\n result[key] = [];\n } else {\n isArray = true;\n arrayItems = [];\n }\n continue;\n }\n\n // Parse the value\n result[key] = parseYamlValue(valueStr);\n }\n }\n\n // Save final array if we were building one\n if (isArray && arrayItems.length > 0) {\n result[currentKey] = arrayItems;\n }\n\n return result;\n}\n\n/**\n * Parse a single YAML value\n */\nfunction parseYamlValue(value: string): unknown {\n // Remove quotes\n const unquoted = value.replace(/^[\"']|[\"']$/g, '');\n\n // Boolean\n if (unquoted === 'true') return true;\n if (unquoted === 'false') return false;\n\n // Null/undefined\n if (unquoted === 'null' || unquoted === '~') return null;\n\n // Number\n if (/^-?\\d+\\.?\\d*$/.test(unquoted)) {\n return Number(unquoted);\n }\n\n // String\n return unquoted;\n}\n\n/**\n * Parse Backlog.md config.yml file\n */\nexport function parseBacklogConfig(content: string): BacklogConfig {\n const parsed = parseYaml(content);\n\n // Validate required fields\n if (!parsed.project_name || typeof parsed.project_name !== 'string') {\n throw new BacklogAdapterError(\n 'Invalid config.yml: missing or invalid project_name'\n );\n }\n\n if (!parsed.statuses || !Array.isArray(parsed.statuses)) {\n throw new BacklogAdapterError(\n 'Invalid config.yml: missing or invalid statuses array'\n );\n }\n\n return {\n project_name: parsed.project_name as string,\n default_status: (parsed.default_status as string) || 'To Do',\n statuses: parsed.statuses as string[],\n labels: (parsed.labels as string[]) || [],\n milestones: (parsed.milestones as string[]) || [],\n date_format: (parsed.date_format as string) || 'yyyy-mm-dd hh:mm',\n default_editor: parsed.default_editor as string | undefined,\n auto_commit: parsed.auto_commit as boolean | undefined,\n zero_padded_ids: parsed.zero_padded_ids as number | undefined,\n };\n}\n\n/**\n * Parse a Backlog.md task file\n */\nexport function parseTaskFile(content: string, filepath: string): Task {\n // Extract YAML frontmatter\n const frontmatterMatch = content.match(/^---\\n([\\s\\S]*?)\\n---/);\n\n if (!frontmatterMatch) {\n throw new BacklogAdapterError(\n `Invalid task file: ${filepath} - missing YAML frontmatter`\n );\n }\n\n // Parse YAML frontmatter\n const parsed = parseYaml(frontmatterMatch[1]);\n const metadata = validateTaskMetadata(parsed, filepath);\n\n // Extract body content (everything after frontmatter)\n const body = content.slice(frontmatterMatch[0].length).trim();\n\n // Extract sections from the body\n const description = extractSection(body, 'Description');\n const acceptanceCriteria = extractAcceptanceCriteria(body);\n const implementationPlan = extractSection(body, 'Implementation Plan');\n const notes = extractSection(body, 'Implementation Notes');\n\n return {\n ...metadata,\n // Normalize field names to match existing backlog-types\n createdDate: metadata.created_date,\n updatedDate: metadata.updated_date,\n parentTaskId: metadata.parent,\n // Content fields\n body,\n rawContent: body,\n description,\n acceptanceCriteriaItems: acceptanceCriteria,\n implementationPlan,\n implementationNotes: notes,\n // Set source based on filepath\n source: filepath.includes('/completed/') ? 'completed' as const : 'local' as const,\n filePath: filepath,\n };\n}\n\n/**\n * Validate and normalize task metadata from parsed YAML\n */\nfunction validateTaskMetadata(\n parsed: Record<string, unknown>,\n filepath: string\n): TaskMetadata {\n // Validate required fields\n if (!parsed.id || typeof parsed.id !== 'string') {\n throw new BacklogAdapterError(\n `Invalid task file: ${filepath} - missing or invalid id`\n );\n }\n\n if (!parsed.title || typeof parsed.title !== 'string') {\n throw new BacklogAdapterError(\n `Invalid task file: ${filepath} - missing or invalid title`\n );\n }\n\n if (!parsed.status || typeof parsed.status !== 'string') {\n throw new BacklogAdapterError(\n `Invalid task file: ${filepath} - missing or invalid status`\n );\n }\n\n if (!parsed.created_date || typeof parsed.created_date !== 'string') {\n throw new BacklogAdapterError(\n `Invalid task file: ${filepath} - missing or invalid created_date`\n );\n }\n\n return {\n id: parsed.id as string,\n title: parsed.title as string,\n status: parsed.status as string,\n created_date: parsed.created_date as string,\n assignee: Array.isArray(parsed.assignee) ? (parsed.assignee as string[]) : [],\n updated_date: parsed.updated_date as string | undefined,\n labels: Array.isArray(parsed.labels) ? (parsed.labels as string[]) : [],\n dependencies: Array.isArray(parsed.dependencies) ? (parsed.dependencies as string[]) : [],\n priority: (parsed.priority as 'low' | 'medium' | 'high') || undefined,\n ordinal: parsed.ordinal as number | undefined,\n parent: parsed.parent as string | undefined,\n };\n}\n\n/**\n * Extract a markdown section by heading\n */\nfunction extractSection(\n body: string,\n heading: string\n): string | undefined {\n const regex = new RegExp(\n `## ${heading}\\\\n\\\\n([\\\\s\\\\S]*?)(?=\\\\n## |$)`,\n 'i'\n );\n const match = body.match(regex);\n return match ? match[1].trim() : undefined;\n}\n\n/**\n * Extract acceptance criteria from task body\n */\nfunction extractAcceptanceCriteria(\n body: string\n): AcceptanceCriterion[] | undefined {\n // Match the AC section between markers\n const acMatch = body.match(\n /## Acceptance Criteria\\n<!-- AC:BEGIN -->\\n([\\s\\S]*?)\\n<!-- AC:END -->/\n );\n\n if (!acMatch) {\n return undefined;\n }\n\n const acSection = acMatch[1];\n const lines = acSection.split('\\n');\n const criteria: AcceptanceCriterion[] = [];\n\n for (const line of lines) {\n const trimmed = line.trim();\n\n // Match checkbox items: - [ ] #1 Text or - [x] #1 Text\n const match = trimmed.match(/^- \\[([ x])\\] #(\\d+) (.+)$/);\n\n if (match) {\n const [, checked, idStr, text] = match;\n criteria.push({\n index: parseInt(idStr, 10),\n text: text.trim(),\n checked: checked === 'x',\n });\n }\n }\n\n return criteria.length > 0 ? criteria : undefined;\n}\n\n/**\n * Sort tasks within a status column\n */\nexport function sortTasks(tasks: Task[]): Task[] {\n return tasks.sort((a, b) => {\n // Sort by ordinal if present\n if (a.ordinal !== undefined && b.ordinal !== undefined) {\n return a.ordinal - b.ordinal;\n }\n\n // Then by priority (high > medium > low)\n const priorityOrder = { high: 3, medium: 2, low: 1 };\n const aPriority = priorityOrder[a.priority || 'medium'];\n const bPriority = priorityOrder[b.priority || 'medium'];\n\n if (aPriority !== bPriority) {\n return bPriority - aPriority; // Higher priority first\n }\n\n // Finally by creation date (newest first)\n const aDate = new Date(a.created_date).getTime();\n const bDate = new Date(b.created_date).getTime();\n return bDate - aDate;\n });\n}\n","/**\n * BacklogAdapter\n *\n * Provides a clean interface for accessing Backlog.md data from a repository.\n * Encapsulates all Backlog.md-specific logic and file parsing.\n */\n\nimport type {\n FileAccessFunctions,\n IBacklogAdapter,\n BacklogConfig,\n Task,\n} from './types';\nimport { BacklogAdapterError } from './types';\nimport {\n parseBacklogConfig,\n parseTaskFile,\n sortTasks,\n} from './backlog-parser';\n\nexport class BacklogAdapter implements IBacklogAdapter {\n private fileAccess: FileAccessFunctions;\n private configCache: BacklogConfig | null = null;\n private tasksCache: Task[] | null = null;\n\n constructor(fileAccess: FileAccessFunctions) {\n this.fileAccess = fileAccess;\n }\n\n /**\n * Check if the repository is a Backlog.md project\n */\n public isBacklogProject(): boolean {\n const files = this.fileAccess.listFiles();\n return files.some((path) => path === 'backlog/config.yml');\n }\n\n /**\n * Get the Backlog.md project configuration\n */\n public async getConfig(): Promise<BacklogConfig> {\n // Return cached config if available\n if (this.configCache) {\n return this.configCache;\n }\n\n // Check if config file exists\n if (!this.isBacklogProject()) {\n throw new BacklogAdapterError(\n 'Not a Backlog.md project: backlog/config.yml not found'\n );\n }\n\n try {\n // Fetch and parse config\n const content = await this.fileAccess.fetchFile('backlog/config.yml');\n const config = parseBacklogConfig(content);\n\n // Cache the config\n this.configCache = config;\n\n return config;\n } catch (error) {\n if (error instanceof BacklogAdapterError) {\n throw error;\n }\n throw new BacklogAdapterError(\n `Failed to load config: ${error instanceof Error ? error.message : 'Unknown error'}`\n );\n }\n }\n\n /**\n * Get the list of status columns from config\n */\n public async getStatuses(): Promise<string[]> {\n const config = await this.getConfig();\n return config.statuses;\n }\n\n /**\n * Get all tasks from the backlog\n */\n public async getTasks(includeCompleted = true): Promise<Task[]> {\n // Return cached tasks if available\n if (this.tasksCache) {\n return this.tasksCache;\n }\n\n const files = this.fileAccess.listFiles();\n\n // Find all task files\n const taskPaths = this.findTaskFiles(files, includeCompleted);\n\n if (taskPaths.length === 0) {\n return [];\n }\n\n try {\n // Fetch all task files\n const taskPromises = taskPaths.map(async (path) => {\n try {\n const content = await this.fileAccess.fetchFile(path);\n return parseTaskFile(content, path);\n } catch (error) {\n console.error(`Failed to parse task file ${path}:`, error);\n return null;\n }\n });\n\n const taskResults = await Promise.all(taskPromises);\n\n // Filter out failed parses\n const tasks = taskResults.filter((task): task is Task => task !== null);\n\n // Cache the tasks\n this.tasksCache = tasks;\n\n return tasks;\n } catch (error) {\n throw new BacklogAdapterError(\n `Failed to load tasks: ${error instanceof Error ? error.message : 'Unknown error'}`\n );\n }\n }\n\n /**\n * Get tasks grouped by status\n */\n public async getTasksByStatus(\n includeCompleted = true\n ): Promise<Map<string, Task[]>> {\n const [config, tasks] = await Promise.all([\n this.getConfig(),\n this.getTasks(includeCompleted),\n ]);\n\n const grouped = new Map<string, Task[]>();\n\n // Initialize all status columns\n for (const status of config.statuses) {\n grouped.set(status, []);\n }\n\n // Group tasks by status\n for (const task of tasks) {\n const statusKey = task.status || config.default_status;\n const column = grouped.get(statusKey);\n\n if (column) {\n column.push(task);\n } else {\n // Handle tasks with unknown status\n console.warn(\n `Task ${task.id} has unknown status: ${task.status}. Placing in default status.`\n );\n const defaultColumn = grouped.get(config.default_status);\n if (defaultColumn) {\n defaultColumn.push(task);\n }\n }\n }\n\n // Sort tasks within each column\n grouped.forEach((tasks, status) => {\n grouped.set(status, sortTasks(tasks));\n });\n\n return grouped;\n }\n\n /**\n * Clear all caches (useful for refresh)\n */\n public clearCache(): void {\n this.configCache = null;\n this.tasksCache = null;\n }\n\n /**\n * Find all task files in the repository\n */\n private findTaskFiles(files: string[], includeCompleted: boolean): string[] {\n const taskFiles: string[] = [];\n\n for (const path of files) {\n // Check if it's in the tasks directory\n if (path.startsWith('backlog/tasks/') && this.isTaskFile(path)) {\n taskFiles.push(path);\n continue;\n }\n\n // Check if it's in the completed directory\n if (\n includeCompleted &&\n path.startsWith('backlog/completed/') &&\n this.isTaskFile(path)\n ) {\n taskFiles.push(path);\n continue;\n }\n }\n\n return taskFiles;\n }\n\n /**\n * Check if a file path is a task file\n */\n private isTaskFile(path: string): boolean {\n // Must end with .md\n if (!path.endsWith('.md')) {\n return false;\n }\n\n // Must contain task-<id> pattern (supports dotted IDs like task-24.1)\n const filename = path.split('/').pop() || '';\n return /^task-[\\d.]+/.test(filename);\n }\n}\n\n/**\n * Factory function to create a BacklogAdapter\n */\nexport function createBacklogAdapter(\n fileAccess: FileAccessFunctions\n): IBacklogAdapter {\n return new BacklogAdapter(fileAccess);\n}\n","import { useState, useCallback, useMemo, useEffect, useRef } from 'react';\nimport type { Task } from '../backlog-types';\nimport { createBacklogAdapter, BacklogAdapterError } from '../../../adapters';\nimport type { PanelContextValue, PanelActions } from '../../../types';\n\nexport interface UseKanbanDataResult {\n tasks: Task[];\n statuses: string[];\n isLoading: boolean;\n error: string | null;\n isBacklogProject: boolean;\n tasksByStatus: Map<string, Task[]>;\n refreshData: () => Promise<void>;\n updateTaskStatus: (taskId: string, newStatus: string) => Promise<void>;\n}\n\ninterface UseKanbanDataOptions {\n context?: PanelContextValue;\n actions?: PanelActions;\n}\n\n/**\n * Hook for managing kanban board data\n * Integrates with Backlog.md via the BacklogAdapter\n * Falls back to mock data if no Backlog.md project is detected\n */\nexport function useKanbanData(options?: UseKanbanDataOptions): UseKanbanDataResult {\n const { context, actions } = options || {};\n\n const [tasks, setTasks] = useState<Task[]>([]);\n const [statuses, setStatuses] = useState<string[]>(['To Do', 'In Progress', 'Done']);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n const [isBacklogProject, setIsBacklogProject] = useState(false);\n\n // Keep track of active file fetches to avoid duplicate fetches\n const activeFilePathRef = useRef<string | null>(null);\n\n // Helper function to fetch file content\n const fetchFileContent = useCallback(\n async (path: string): Promise<string> => {\n if (!actions || !context) {\n throw new Error('PanelContext not available');\n }\n\n // Avoid duplicate fetches for the same file\n if (activeFilePathRef.current === path) {\n await new Promise((resolve) => setTimeout(resolve, 100));\n }\n\n activeFilePathRef.current = path;\n\n try {\n // Use panel actions to open the file\n if (actions.openFile) {\n await actions.openFile(path);\n } else {\n throw new Error('openFile action not available');\n }\n\n // Get the active file data from the slice\n const activeFileSlice = context.getRepositorySlice('active-file');\n const fileData = activeFileSlice?.data as any;\n\n if (!fileData?.content) {\n throw new Error(`Failed to fetch content for ${path}`);\n }\n\n return fileData.content;\n } finally {\n activeFilePathRef.current = null;\n }\n },\n [actions, context]\n );\n\n // Load Backlog.md data\n const loadBacklogData = useCallback(async () => {\n if (!context || !actions) {\n // No context/actions provided\n console.log('[useKanbanData] No context provided');\n setIsBacklogProject(false);\n setTasks([]);\n setStatuses(['To Do', 'In Progress', 'Done']);\n setIsLoading(false);\n return;\n }\n\n setIsLoading(true);\n setError(null);\n\n try {\n // Get fileTree slice\n const fileTreeSlice = context.getRepositorySlice<any>('fileTree');\n\n if (!fileTreeSlice?.data) {\n console.log('[useKanbanData] FileTree not available');\n setIsBacklogProject(false);\n setTasks([]);\n setStatuses(['To Do', 'In Progress', 'Done']);\n return;\n }\n\n const files = fileTreeSlice.data.files || [];\n const filePaths = files.map((f: any) => f.path);\n\n // Create adapter\n const adapter = createBacklogAdapter({\n fetchFile: fetchFileContent,\n listFiles: () => filePaths,\n });\n\n // Check if this is a Backlog.md project\n if (!adapter.isBacklogProject()) {\n console.log('[useKanbanData] Not a Backlog.md project');\n setIsBacklogProject(false);\n setTasks([]);\n setStatuses(['To Do', 'In Progress', 'Done']);\n return;\n }\n\n console.log('[useKanbanData] Loading Backlog.md data...');\n setIsBacklogProject(true);\n\n // Load data from Backlog.md\n const [loadedStatuses, tasksByStatus] = await Promise.all([\n adapter.getStatuses(),\n adapter.getTasksByStatus(true),\n ]);\n\n // Flatten tasks from the map\n const allTasks: Task[] = [];\n tasksByStatus.forEach((tasks) => {\n allTasks.push(...tasks);\n });\n\n console.log(\n `[useKanbanData] Loaded ${allTasks.length} tasks with ${loadedStatuses.length} statuses`\n );\n\n setStatuses(loadedStatuses);\n setTasks(allTasks);\n } catch (err) {\n console.error('[useKanbanData] Failed to load Backlog.md data:', err);\n\n if (err instanceof BacklogAdapterError) {\n setError(err.message);\n } else {\n setError(\n err instanceof Error ? err.message : 'Failed to load backlog data'\n );\n }\n\n // On error, show empty state\n setIsBacklogProject(false);\n setTasks([]);\n setStatuses(['To Do', 'In Progress', 'Done']);\n } finally {\n setIsLoading(false);\n }\n }, [context, actions, fetchFileContent]);\n\n // Load data on mount or when context changes\n useEffect(() => {\n loadBacklogData();\n }, [loadBacklogData]);\n\n // Group tasks by status\n const tasksByStatus = useMemo(() => {\n const grouped = new Map<string, Task[]>();\n\n // Initialize all status columns\n for (const status of statuses) {\n grouped.set(status, []);\n }\n\n // Group tasks by status\n for (const task of tasks) {\n const statusKey = task.status ?? '';\n const list = grouped.get(statusKey);\n if (list) {\n list.push(task);\n }\n }\n\n return grouped;\n }, [tasks, statuses]);\n\n // Refresh data\n const refreshData = useCallback(async () => {\n await loadBacklogData();\n }, [loadBacklogData]);\n\n // Update task status\n const updateTaskStatus = useCallback(\n async (taskId: string, newStatus: string) => {\n setError(null);\n\n // TODO: Implement real Backlog.md file updates\n // This would require:\n // 1. Find the task file\n // 2. Parse the YAML frontmatter\n // 3. Update the status field\n // 4. Write back to the file (via GitHub API)\n console.warn(\n '[useKanbanData] Task status updates not yet implemented for Backlog.md'\n );\n setError('Task editing is not yet supported');\n },\n []\n );\n\n return {\n tasks,\n statuses,\n isLoading,\n error,\n isBacklogProject,\n tasksByStatus,\n refreshData,\n updateTaskStatus,\n };\n}\n","import React from 'react';\nimport { useTheme } from '@principal-ade/industry-theme';\nimport type { Task } from '../backlog-types';\n\ninterface KanbanColumnProps {\n status: string;\n tasks: Task[];\n onTaskClick?: (task: Task) => void;\n}\n\nexport const KanbanColumn: React.FC<KanbanColumnProps> = ({\n status,\n tasks,\n onTaskClick,\n}) => {\n const { theme } = useTheme();\n\n const getPriorityColor = (priority?: string) => {\n switch (priority) {\n case 'high':\n return theme.colors.error;\n case 'medium':\n return theme.colors.warning;\n case 'low':\n return theme.colors.info;\n default:\n return theme.colors.border;\n }\n };\n\n return (\n <div\n style={{\n flex: '0 0 320px',\n display: 'flex',\n flexDirection: 'column',\n gap: '12px',\n background: theme.colors.backgroundSecondary,\n borderRadius: theme.radii[2],\n padding: '16px',\n border: `1px solid ${theme.colors.border}`,\n }}\n >\n {/* Column Header */}\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n }}\n >\n <h3\n style={{\n margin: 0,\n fontSize: theme.fontSizes[3],\n color: theme.colors.text,\n fontWeight: theme.fontWeights.semibold,\n }}\n >\n {status}\n </h3>\n <span\n style={{\n fontSize: theme.fontSizes[1],\n color: theme.colors.textSecondary,\n background: theme.colors.background,\n padding: '2px 8px',\n borderRadius: theme.radii[1],\n }}\n >\n {tasks.length}\n </span>\n </div>\n\n {/* Task Cards */}\n <div\n style={{\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n gap: '8px',\n overflowY: 'auto',\n }}\n >\n {tasks.map((task) => (\n <div\n key={task.id}\n onClick={() => onTaskClick?.(task)}\n style={{\n background: theme.colors.surface,\n borderRadius: theme.radii[2],\n padding: '12px',\n border: `1px solid ${theme.colors.border}`,\n borderLeft: `4px solid ${getPriorityColor(task.priority)}`,\n cursor: onTaskClick ? 'pointer' : 'default',\n transition: 'all 0.2s ease',\n }}\n onMouseEnter={(e) => {\n if (onTaskClick) {\n e.currentTarget.style.transform = 'translateY(-2px)';\n e.currentTarget.style.boxShadow = `0 4px 8px ${theme.colors.border}`;\n }\n }}\n onMouseLeave={(e) => {\n if (onTaskClick) {\n e.currentTarget.style.transform = 'translateY(0)';\n e.currentTarget.style.boxShadow = 'none';\n }\n }}\n >\n {/* Task Title */}\n <h4\n style={{\n margin: '0 0 8px 0',\n fontSize: theme.fontSizes[2],\n color: theme.colors.text,\n fontWeight: theme.fontWeights.medium,\n }}\n >\n {task.title}\n </h4>\n\n {/* Task Description */}\n {task.description && (\n <p\n style={{\n margin: '0 0 8px 0',\n fontSize: theme.fontSizes[1],\n color: theme.colors.textSecondary,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n display: '-webkit-box',\n WebkitLineClamp: 2,\n WebkitBoxOrient: 'vertical',\n lineHeight: '1.4',\n }}\n >\n {task.description}\n </p>\n )}\n\n {/* Task Labels */}\n {task.labels && task.labels.length > 0 && (\n <div\n style={{\n display: 'flex',\n gap: '4px',\n flexWrap: 'wrap',\n marginBottom: '8px',\n }}\n >\n {task.labels.map((label) => (\n <span\n key={label}\n style={{\n fontSize: theme.fontSizes[0],\n color: theme.colors.primary,\n background: `${theme.colors.primary}20`,\n padding: '2px 8px',\n borderRadius: theme.radii[1],\n fontWeight: theme.fontWeights.medium,\n }}\n >\n {label}\n </span>\n ))}\n </div>\n )}\n\n {/* Task Footer */}\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n fontSize: theme.fontSizes[0],\n color: theme.colors.textMuted,\n }}\n >\n <span\n style={{\n fontFamily: theme.fonts.monospace,\n }}\n >\n {task.id}\n </span>\n {task.assignee && task.assignee.length > 0 && (\n <span\n style={{\n color: theme.colors.textSecondary,\n }}\n >\n {task.assignee.length} assignee{task.assignee.length !== 1 ? 's' : ''}\n </span>\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport { ExternalLink, FileText } from 'lucide-react';\nimport { useTheme } from '@principal-ade/industry-theme';\n\ninterface EmptyStateProps {\n message?: string;\n description?: string;\n showBacklogLink?: boolean;\n}\n\n/**\n * EmptyState component displayed when no tasks are found\n */\nexport const EmptyState: React.FC<EmptyStateProps> = ({\n message = 'No Backlog.md project detected',\n description = 'This repository does not appear to use Backlog.md for task management.',\n showBacklogLink = true,\n}) => {\n const { theme } = useTheme();\n\n return (\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n height: '100%',\n padding: '48px 24px',\n textAlign: 'center',\n color: theme.colors.textMuted,\n }}\n >\n <FileText\n size={64}\n color={theme.colors.textMuted}\n style={{ marginBottom: '24px', opacity: 0.5 }}\n />\n\n <h3\n style={{\n fontSize: theme.fontSizes[4],\n fontWeight: 600,\n color: theme.colors.text,\n marginBottom: '12px',\n }}\n >\n {message}\n </h3>\n\n <p\n style={{\n fontSize: theme.fontSizes[2],\n color: theme.colors.textMuted,\n marginBottom: '32px',\n maxWidth: '480px',\n lineHeight: 1.6,\n }}\n >\n {description}\n </p>\n\n {showBacklogLink && (\n <a\n href=\"https://github.com/MrLesk/Backlog.md\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: '8px',\n padding: '12px 24px',\n backgroundColor: theme.colors.primary,\n color: '#fff',\n borderRadius: theme.radii[2],\n textDecoration: 'none',\n fontSize: theme.fontSizes[2],\n fontWeight: 500,\n transition: 'opacity 0.2s',\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.opacity = '0.9';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.opacity = '1';\n }}\n >\n <span>Learn about Backlog.md</span>\n <ExternalLink size={16} />\n </a>\n )}\n\n <div\n style={{\n marginTop: '48px',\n padding: '16px',\n backgroundColor: `${theme.colors.primary}10`,\n borderRadius: theme.radii[2],\n maxWidth: '560px',\n }}\n >\n <p\n style={{\n fontSize: theme.fontSizes[1],\n color: theme.colors.textSecondary,\n margin: 0,\n lineHeight: 1.5,\n }}\n >\n <strong style={{ color: theme.colors.text }}>\n Want to use this panel?\n </strong>{' '}\n Initialize Backlog.md in your repository by running{' '}\n <code\n style={{\n padding: '2px 6px',\n backgroundColor: theme.colors.surface,\n borderRadius: '4px',\n fontFamily: theme.fonts.monospace,\n fontSize: '0.9em',\n }}\n >\n backlog init\n </code>{' '}\n in your project directory.\n </p>\n </div>\n </div>\n );\n};\n","import React, { useState } from 'react';\nimport { Kanban, RefreshCw, AlertCircle } from 'lucide-react';\nimport { ThemeProvider, useTheme } from '@principal-ade/industry-theme';\nimport type { PanelComponentProps } from '../types';\nimport { useKanbanData } from './kanban/hooks/useKanbanData';\nimport { KanbanColumn } from './kanban/components/KanbanColumn';\nimport { EmptyState } from './kanban/components/EmptyState';\nimport type { Task } from './kanban/backlog-types';\n\n/**\n * KanbanPanelContent - Internal component that uses theme\n */\nconst KanbanPanelContent: React.FC<PanelComponentProps> = ({\n context,\n actions,\n}) => {\n const { theme } = useTheme();\n const [_selectedTask, setSelectedTask] = useState<Task | null>(null);\n const {\n statuses,\n tasksByStatus,\n isLoading,\n error,\n isBacklogProject,\n refreshData,\n } = useKanbanData({ context, actions });\n\n const handleTaskClick = (task: Task) => {\n setSelectedTask(task);\n // In the future, this will open a task detail modal\n // Task click logged for development\n };\n\n const handleRefresh = async () => {\n await refreshData();\n };\n\n return (\n <div\n style={{\n padding: '20px',\n fontFamily: theme.fonts.body,\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n gap: '16px',\n backgroundColor: theme.colors.background,\n color: theme.colors.text,\n }}\n >\n {/* Header */}\n <div style={{ display: 'flex', alignItems: 'center', gap: '12px' }}>\n <Kanban size={24} color={theme.colors.primary} />\n <h2\n style={{\n margin: 0,\n fontSize: theme.fontSizes[4],\n color: theme.colors.text,\n }}\n >\n Kanban Board\n </h2>\n {context.currentScope.repository && (\n <span\n style={{\n marginLeft: 'auto',\n fontSize: theme.fontSizes[1],\n color: theme.colors.textSecondary,\n fontFamily: theme.fonts.monospace,\n }}\n >\n {context.currentScope.repository.name}\n </span>\n )}\n <button\n onClick={handleRefresh}\n disabled={isLoading}\n style={{\n padding: '8px 12px',\n display: 'flex',\n alignItems: 'center',\n gap: '6px',\n border: `1px solid ${theme.colors.border}`,\n borderRadius: theme.radii[1],\n background: theme.colors.surface,\n color: theme.colors.text,\n cursor: isLoading ? 'not-allowed' : 'pointer',\n opacity: isLoading ? 0.6 : 1,\n }}\n >\n <RefreshCw size={16} style={{ animation: isLoading ? 'spin 1s linear infinite' : 'none' }} />\n Refresh\n </button>\n </div>\n\n {/* Error Message */}\n {error && (\n <div\n style={{\n padding: '12px',\n background: `${theme.colors.error}20`,\n border: `1px solid ${theme.colors.error}`,\n borderRadius: theme.radii[2],\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n color: theme.colors.error,\n }}\n >\n <AlertCircle size={16} />\n <span>{error}</span>\n </div>\n )}\n\n {/* Board Container or Empty State */}\n {!isBacklogProject ? (\n <EmptyState />\n ) : (\n <div\n style={{\n flex: 1,\n display: 'flex',\n gap: '16px',\n overflowX: 'auto',\n paddingBottom: '8px',\n }}\n >\n {statuses.map((status) => {\n const columnTasks = tasksByStatus.get(status) || [];\n return (\n <KanbanColumn\n key={status}\n status={status}\n tasks={columnTasks}\n onTaskClick={handleTaskClick}\n />\n );\n })}\n </div>\n )}\n </div>\n );\n};\n\n/**\n * KanbanPanel - A kanban board panel for visualizing Backlog.md tasks.\n *\n * This panel shows:\n * - Kanban board with configurable status columns\n * - Task cards with priority indicators\n * - Labels and assignee information\n * - Mock data for testing (to be replaced with real data)\n */\nexport const KanbanPanel: React.FC<PanelComponentProps> = (props) => {\n return (\n <ThemeProvider>\n <KanbanPanelContent {...props} />\n </ThemeProvider>\n );\n};\n","import { KanbanPanel } from './panels/KanbanPanel';\nimport type { PanelDefinition, PanelContextValue } from './types';\n\n/**\n * Export array of panel definitions.\n * This is the required export for panel extensions.\n */\nexport const panels: PanelDefinition[] = [\n {\n metadata: {\n id: 'principal-ade.kanban-panel',\n name: 'Kanban Board',\n icon: '📋',\n version: '0.1.0',\n author: 'Principal ADE',\n description: 'Kanban board for visualizing Backlog.md tasks',\n slices: ['fileTree'], // Data slices this panel depends on\n },\n component: KanbanPanel,\n\n // Optional: Called when this specific panel is mounted\n onMount: async (context: PanelContextValue) => {\n // eslint-disable-next-line no-console\n console.log(\n 'Kanban Panel mounted',\n context.currentScope.repository?.path\n );\n },\n\n // Optional: Called when this specific panel is unmounted\n onUnmount: async (_context: PanelContextValue) => {\n // eslint-disable-next-line no-console\n console.log('Kanban Panel unmounting');\n },\n },\n];\n\n/**\n * Optional: Called once when the entire package is loaded.\n * Use this for package-level initialization.\n */\nexport const onPackageLoad = async () => {\n // eslint-disable-next-line no-console\n console.log('Panel package loaded - Kanban Panel Extension');\n};\n\n/**\n * Optional: Called once when the package is unloaded.\n * Use this for package-level cleanup.\n */\nexport const onPackageUnload = async () => {\n // eslint-disable-next-line no-console\n console.log('Panel package unloading - Kanban Panel Extension');\n};\n"],"names":["__iconNode","theme","React","tasks","tasksByStatus","AlertCircle"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9]}
|