@industry-theme/backlogmd-kanban-panel 1.0.1 → 1.0.2
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/panels.bundle.js
CHANGED
|
@@ -1081,7 +1081,7 @@ function useKanbanData(options) {
|
|
|
1081
1081
|
setError(null);
|
|
1082
1082
|
try {
|
|
1083
1083
|
const fileTreeSlice = context.getRepositorySlice("fileTree");
|
|
1084
|
-
if (!((_a = fileTreeSlice == null ? void 0 : fileTreeSlice.data) == null ? void 0 : _a.
|
|
1084
|
+
if (!((_a = fileTreeSlice == null ? void 0 : fileTreeSlice.data) == null ? void 0 : _a.allFiles)) {
|
|
1085
1085
|
console.log("[useKanbanData] FileTree not available");
|
|
1086
1086
|
setIsBacklogProject(false);
|
|
1087
1087
|
setTasks([]);
|
|
@@ -1089,7 +1089,7 @@ function useKanbanData(options) {
|
|
|
1089
1089
|
setTasksByStatus(/* @__PURE__ */ new Map());
|
|
1090
1090
|
return;
|
|
1091
1091
|
}
|
|
1092
|
-
const files = fileTreeSlice.data.
|
|
1092
|
+
const files = fileTreeSlice.data.allFiles;
|
|
1093
1093
|
const filePaths = files.map((f) => f.path);
|
|
1094
1094
|
const fs = new PanelFileSystemAdapter({
|
|
1095
1095
|
fetchFile: fetchFileContent,
|
|
@@ -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/circle-check.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/folder-plus.js","../node_modules/lucide-react/dist/esm/icons/kanban.js","../node_modules/lucide-react/dist/esm/icons/loader-circle.js","../node_modules/@principal-ade/industry-theme/dist/esm/index.js","../node_modules/@backlog-md/core/dist/markdown/index.js","../node_modules/@backlog-md/core/dist/core/config-parser.js","../node_modules/@backlog-md/core/dist/utils/sorting.js","../node_modules/@backlog-md/core/dist/core/Core.js","../src/adapters/PanelFileSystemAdapter.ts","../src/panels/kanban/hooks/useKanbanData.ts","../src/panels/kanban/components/KanbanColumn.tsx","../src/panels/kanban/components/EmptyState.tsx","../src/panels/KanbanPanel.tsx","../src/tools/index.ts","../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 [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"m9 12 2 2 4-4\", key: \"dzmm74\" }]\n];\nconst CircleCheck = createLucideIcon(\"circle-check\", __iconNode);\n\nexport { __iconNode, CircleCheck as default };\n//# sourceMappingURL=circle-check.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: \"M12 10v6\", key: \"1bos4e\" }],\n [\"path\", { d: \"M9 13h6\", key: \"1uhe8q\" }],\n [\n \"path\",\n {\n d: \"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\",\n key: \"1kt360\"\n }\n ]\n];\nconst FolderPlus = createLucideIcon(\"folder-plus\", __iconNode);\n\nexport { __iconNode, FolderPlus as default };\n//# sourceMappingURL=folder-plus.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 = [[\"path\", { d: \"M21 12a9 9 0 1 1-6.219-8.56\", key: \"13zald\" }]];\nconst LoaderCircle = createLucideIcon(\"loader-circle\", __iconNode);\n\nexport { __iconNode, LoaderCircle as default };\n//# sourceMappingURL=loader-circle.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, 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.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 * Markdown parsing and serialization for @backlog-md/core\n *\n * This module handles conversion between markdown files and Task objects.\n */\n/**\n * Parse task markdown content into a Task object\n *\n * @param content - Raw markdown content\n * @param filePath - Path to the file (for extracting ID from filename)\n * @returns Parsed task object\n */\nexport function parseTaskMarkdown(content, filePath) {\n const { frontmatter, title, rawContent, acceptanceCriteria, description } = parseMarkdownContent(content);\n const id = extractIdFromPath(filePath);\n return {\n id,\n title: title || `Task ${id}`,\n status: frontmatter.status || \"backlog\",\n priority: frontmatter.priority,\n assignee: frontmatter.assignee || [],\n reporter: frontmatter.reporter,\n createdDate: frontmatter.createdDate || new Date().toISOString().split(\"T\")[0],\n updatedDate: frontmatter.updatedDate,\n labels: frontmatter.labels || [],\n milestone: frontmatter.milestone,\n dependencies: frontmatter.dependencies || [],\n parentTaskId: frontmatter.parentTaskId,\n subtasks: frontmatter.subtasks,\n branch: frontmatter.branch,\n ordinal: frontmatter.ordinal,\n rawContent,\n description,\n acceptanceCriteriaItems: acceptanceCriteria,\n filePath,\n };\n}\n/**\n * Serialize a Task object to markdown content\n *\n * @param task - Task to serialize\n * @returns Markdown string\n */\nexport function serializeTaskMarkdown(task) {\n const lines = [];\n // Frontmatter\n lines.push(\"---\");\n lines.push(`status: ${task.status}`);\n if (task.priority) {\n lines.push(`priority: ${task.priority}`);\n }\n if (task.assignee && task.assignee.length > 0) {\n lines.push(`assignee: [${task.assignee.join(\", \")}]`);\n }\n if (task.reporter) {\n lines.push(`reporter: ${task.reporter}`);\n }\n if (task.labels && task.labels.length > 0) {\n lines.push(`labels: [${task.labels.join(\", \")}]`);\n }\n if (task.milestone) {\n lines.push(`milestone: ${task.milestone}`);\n }\n if (task.dependencies && task.dependencies.length > 0) {\n lines.push(`dependencies: [${task.dependencies.join(\", \")}]`);\n }\n if (task.parentTaskId) {\n lines.push(`parentTaskId: ${task.parentTaskId}`);\n }\n if (task.subtasks && task.subtasks.length > 0) {\n lines.push(`subtasks: [${task.subtasks.join(\", \")}]`);\n }\n if (task.branch) {\n lines.push(`branch: ${task.branch}`);\n }\n if (task.ordinal !== undefined) {\n lines.push(`ordinal: ${task.ordinal}`);\n }\n if (task.createdDate) {\n lines.push(`createdDate: ${task.createdDate}`);\n }\n if (task.updatedDate) {\n lines.push(`updatedDate: ${task.updatedDate}`);\n }\n lines.push(\"---\");\n lines.push(\"\");\n // Title\n lines.push(`# ${task.title}`);\n lines.push(\"\");\n // Description/Body\n if (task.description) {\n lines.push(task.description);\n lines.push(\"\");\n }\n // Acceptance Criteria\n if (task.acceptanceCriteriaItems && task.acceptanceCriteriaItems.length > 0) {\n lines.push(\"## Acceptance Criteria\");\n lines.push(\"\");\n for (const criterion of task.acceptanceCriteriaItems) {\n const checkbox = criterion.checked ? \"[x]\" : \"[ ]\";\n lines.push(`- ${checkbox} ${criterion.text}`);\n }\n lines.push(\"\");\n }\n // Implementation Plan\n if (task.implementationPlan) {\n lines.push(\"## Implementation Plan\");\n lines.push(\"\");\n lines.push(task.implementationPlan);\n lines.push(\"\");\n }\n // Implementation Notes\n if (task.implementationNotes) {\n lines.push(\"## Implementation Notes\");\n lines.push(\"\");\n lines.push(task.implementationNotes);\n lines.push(\"\");\n }\n return lines.join(\"\\n\");\n}\n// --- Internal helpers ---\nfunction parseMarkdownContent(content) {\n let frontmatter = {};\n let remaining = content;\n // Extract frontmatter\n const frontmatterMatch = content.match(/^---\\n([\\s\\S]*?)\\n---\\n/);\n if (frontmatterMatch) {\n frontmatter = parseFrontmatter(frontmatterMatch[1]);\n remaining = content.slice(frontmatterMatch[0].length);\n }\n // Extract title (first h1)\n let title = \"\";\n const titleMatch = remaining.match(/^#\\s+(.+)$/m);\n if (titleMatch) {\n title = titleMatch[1].trim();\n }\n // Extract acceptance criteria\n const acceptanceCriteria = parseAcceptanceCriteria(remaining);\n // Raw content is everything after frontmatter\n const rawContent = remaining.trim();\n // Description is the body text between title and first section\n const description = extractDescription(remaining, title);\n return { frontmatter, title, rawContent, description, acceptanceCriteria };\n}\nfunction parseFrontmatter(raw) {\n const result = {};\n for (const line of raw.split(\"\\n\")) {\n const match = line.match(/^(\\w+):\\s*(.+)$/);\n if (!match)\n continue;\n const [, key, value] = match;\n switch (key) {\n case \"status\":\n result.status = value.trim();\n break;\n case \"priority\":\n result.priority = value.trim();\n break;\n case \"ordinal\":\n result.ordinal = parseInt(value.trim(), 10);\n break;\n case \"reporter\":\n case \"milestone\":\n case \"parentTaskId\":\n case \"branch\":\n case \"createdDate\":\n case \"updatedDate\":\n result[key] = value.trim();\n break;\n case \"assignee\":\n case \"labels\":\n case \"dependencies\":\n case \"subtasks\":\n result[key] = parseArrayValue(value);\n break;\n }\n }\n return result;\n}\nfunction parseArrayValue(value) {\n // Handle [item1, item2] or item1, item2\n const cleaned = value.replace(/^\\[|\\]$/g, \"\").trim();\n if (!cleaned)\n return [];\n return cleaned\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean);\n}\nfunction parseAcceptanceCriteria(content) {\n const criteria = [];\n // Look for AC section or just checkbox items\n const checkboxPattern = /^-\\s*\\[([ xX])\\]\\s*(.+)$/gm;\n let match;\n let index = 1; // 1-based index as per AcceptanceCriterion\n while ((match = checkboxPattern.exec(content)) !== null) {\n criteria.push({\n index: index++,\n checked: match[1].toLowerCase() === \"x\",\n text: match[2].trim(),\n });\n }\n return criteria;\n}\nfunction extractDescription(content, title) {\n let body = content;\n // Remove title line\n if (title) {\n body = body.replace(new RegExp(`^#\\\\s+${escapeRegex(title)}\\\\s*$`, \"m\"), \"\");\n }\n // Remove known sections\n body = body.replace(/^##\\s+Acceptance Criteria[\\s\\S]*?(?=^##|\\z)/m, \"\");\n body = body.replace(/^##\\s+Implementation Plan[\\s\\S]*?(?=^##|\\z)/m, \"\");\n body = body.replace(/^##\\s+Implementation Notes[\\s\\S]*?(?=^##|\\z)/m, \"\");\n return body.trim();\n}\nfunction extractIdFromPath(filePath) {\n // Extract from pattern: task-{id} - {title}.md or {id} - {title}.md\n const filename = filePath.split(\"/\").pop() || \"\";\n const match = filename.match(/^(?:task-)?(\\d+(?:\\.\\d+)?)\\s*-/);\n if (match) {\n return match[1];\n }\n // Fallback: use filename without extension\n return filename.replace(/\\.md$/, \"\");\n}\nfunction escapeRegex(str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n//# sourceMappingURL=index.js.map","/**\n * Backlog.md Config Parser\n *\n * Parses config.yml using a line-by-line approach matching the official Backlog.md\n * implementation. This is more reliable than a generic YAML parser for this format.\n */\nconst DEFAULT_STATUSES = [\"To Do\", \"In Progress\", \"Done\"];\n/**\n * Parse Backlog.md config.yml content\n */\nexport function parseBacklogConfig(content) {\n const config = {};\n const lines = content.split(\"\\n\");\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed || trimmed.startsWith(\"#\"))\n continue;\n const colonIndex = trimmed.indexOf(\":\");\n if (colonIndex === -1)\n continue;\n const key = trimmed.substring(0, colonIndex).trim();\n const value = trimmed.substring(colonIndex + 1).trim();\n switch (key) {\n case \"project_name\":\n config.projectName = value.replace(/['\"]/g, \"\");\n break;\n case \"default_assignee\":\n config.defaultAssignee = value.replace(/['\"]/g, \"\");\n break;\n case \"default_reporter\":\n config.defaultReporter = value.replace(/['\"]/g, \"\");\n break;\n case \"default_status\":\n config.defaultStatus = value.replace(/['\"]/g, \"\");\n break;\n case \"statuses\":\n case \"labels\":\n case \"milestones\":\n if (value.startsWith(\"[\") && value.endsWith(\"]\")) {\n const arrayContent = value.slice(1, -1);\n config[key] = arrayContent\n .split(\",\")\n .map((item) => item.trim().replace(/['\"]/g, \"\"))\n .filter(Boolean);\n }\n break;\n case \"date_format\":\n config.dateFormat = value.replace(/['\"]/g, \"\");\n break;\n case \"max_column_width\":\n config.maxColumnWidth = parseInt(value, 10);\n break;\n case \"task_resolution_strategy\":\n config.taskResolutionStrategy = value.replace(/['\"]/g, \"\");\n break;\n case \"default_editor\":\n config.defaultEditor = value.replace(/[\"']/g, \"\");\n break;\n case \"auto_open_browser\":\n config.autoOpenBrowser = value.toLowerCase() === \"true\";\n break;\n case \"default_port\":\n config.defaultPort = parseInt(value, 10);\n break;\n case \"remote_operations\":\n config.remoteOperations = value.toLowerCase() === \"true\";\n break;\n case \"auto_commit\":\n config.autoCommit = value.toLowerCase() === \"true\";\n break;\n case \"zero_padded_ids\":\n config.zeroPaddedIds = parseInt(value, 10);\n break;\n case \"timezone_preference\":\n config.timezonePreference = value.replace(/['\"]/g, \"\");\n break;\n case \"include_date_time_in_dates\":\n config.includeDateTimeInDates = value.toLowerCase() === \"true\";\n break;\n case \"bypass_git_hooks\":\n config.bypassGitHooks = value.toLowerCase() === \"true\";\n break;\n case \"check_active_branches\":\n config.checkActiveBranches = value.toLowerCase() === \"true\";\n break;\n case \"active_branch_days\":\n config.activeBranchDays = parseInt(value, 10);\n break;\n }\n }\n // Apply defaults\n return {\n projectName: config.projectName || \"Backlog\",\n statuses: config.statuses || [...DEFAULT_STATUSES],\n labels: config.labels || [],\n milestones: config.milestones || [],\n defaultStatus: config.defaultStatus || DEFAULT_STATUSES[0],\n dateFormat: config.dateFormat || \"YYYY-MM-DD\",\n defaultAssignee: config.defaultAssignee,\n defaultReporter: config.defaultReporter,\n maxColumnWidth: config.maxColumnWidth,\n taskResolutionStrategy: config.taskResolutionStrategy,\n defaultEditor: config.defaultEditor,\n autoOpenBrowser: config.autoOpenBrowser,\n defaultPort: config.defaultPort,\n remoteOperations: config.remoteOperations,\n autoCommit: config.autoCommit,\n zeroPaddedIds: config.zeroPaddedIds,\n timezonePreference: config.timezonePreference,\n includeDateTimeInDates: config.includeDateTimeInDates,\n bypassGitHooks: config.bypassGitHooks,\n checkActiveBranches: config.checkActiveBranches,\n activeBranchDays: config.activeBranchDays,\n };\n}\n/**\n * Serialize BacklogConfig to config.yml format\n */\nexport function serializeBacklogConfig(config) {\n const lines = [];\n lines.push(`project_name: \"${config.projectName}\"`);\n if (config.defaultStatus) {\n lines.push(`default_status: \"${config.defaultStatus}\"`);\n }\n lines.push(`statuses: [${config.statuses.map((s) => `\"${s}\"`).join(\", \")}]`);\n lines.push(`labels: [${(config.labels || []).map((l) => `\"${l}\"`).join(\", \")}]`);\n lines.push(`milestones: [${(config.milestones || []).map((m) => `\"${m}\"`).join(\", \")}]`);\n if (config.dateFormat) {\n lines.push(`date_format: \"${config.dateFormat}\"`);\n }\n if (config.defaultAssignee) {\n lines.push(`default_assignee: \"${config.defaultAssignee}\"`);\n }\n if (config.defaultReporter) {\n lines.push(`default_reporter: \"${config.defaultReporter}\"`);\n }\n if (config.defaultEditor) {\n lines.push(`default_editor: \"${config.defaultEditor}\"`);\n }\n if (typeof config.autoCommit === \"boolean\") {\n lines.push(`auto_commit: ${config.autoCommit}`);\n }\n if (typeof config.zeroPaddedIds === \"number\") {\n lines.push(`zero_padded_ids: ${config.zeroPaddedIds}`);\n }\n if (typeof config.autoOpenBrowser === \"boolean\") {\n lines.push(`auto_open_browser: ${config.autoOpenBrowser}`);\n }\n if (typeof config.defaultPort === \"number\") {\n lines.push(`default_port: ${config.defaultPort}`);\n }\n if (typeof config.remoteOperations === \"boolean\") {\n lines.push(`remote_operations: ${config.remoteOperations}`);\n }\n if (typeof config.bypassGitHooks === \"boolean\") {\n lines.push(`bypass_git_hooks: ${config.bypassGitHooks}`);\n }\n if (typeof config.checkActiveBranches === \"boolean\") {\n lines.push(`check_active_branches: ${config.checkActiveBranches}`);\n }\n if (typeof config.activeBranchDays === \"number\") {\n lines.push(`active_branch_days: ${config.activeBranchDays}`);\n }\n return `${lines.join(\"\\n\")}\\n`;\n}\n//# sourceMappingURL=config-parser.js.map","/**\n * Task sorting utilities\n */\nconst PRIORITY_ORDER = {\n high: 0,\n medium: 1,\n low: 2,\n};\n/**\n * Sort tasks by: ordinal → priority → createdDate\n *\n * - Tasks with ordinal are sorted first by ordinal\n * - Then by priority (high → medium → low)\n * - Finally by createdDate (newest first)\n */\nexport function sortTasks(tasks) {\n return [...tasks].sort((a, b) => {\n // 1. Ordinal (if both have it)\n if (a.ordinal !== undefined && b.ordinal !== undefined) {\n return a.ordinal - b.ordinal;\n }\n // Tasks with ordinal come before tasks without\n if (a.ordinal !== undefined)\n return -1;\n if (b.ordinal !== undefined)\n return 1;\n // 2. Priority (high → medium → low → undefined)\n const aPri = a.priority ? PRIORITY_ORDER[a.priority] : 3;\n const bPri = b.priority ? PRIORITY_ORDER[b.priority] : 3;\n if (aPri !== bPri)\n return aPri - bPri;\n // 3. Created date (newest first)\n return b.createdDate.localeCompare(a.createdDate);\n });\n}\n/**\n * Group tasks by status\n *\n * @param tasks - Tasks to group\n * @param statuses - Ordered list of statuses (for column ordering)\n * @returns Map with status as key and sorted tasks as value\n */\nexport function groupTasksByStatus(tasks, statuses) {\n const grouped = new Map();\n // Initialize with all configured statuses (preserves column order)\n for (const status of statuses) {\n grouped.set(status, []);\n }\n // Group tasks\n for (const task of tasks) {\n const list = grouped.get(task.status);\n if (list) {\n list.push(task);\n }\n else {\n // Task has a status not in the config - add it anyway\n grouped.set(task.status, [task]);\n }\n }\n // Sort tasks within each status\n for (const [status, statusTasks] of grouped) {\n grouped.set(status, sortTasks(statusTasks));\n }\n return grouped;\n}\n//# sourceMappingURL=sorting.js.map","/**\n * Core - Main entry point for @backlog-md/core\n *\n * Provides a runtime-agnostic API for managing Backlog.md projects\n * by accepting adapter implementations for I/O operations.\n */\nimport { parseBacklogConfig, serializeBacklogConfig } from \"./config-parser\";\nimport { parseTaskMarkdown } from \"../markdown\";\nimport { sortTasks, groupTasksByStatus } from \"../utils\";\n/**\n * Core class for Backlog.md operations\n *\n * @example\n * ```typescript\n * const core = new Core({\n * projectRoot: '/path/to/project',\n * adapters: { fs: new NodeFileSystemAdapter() }\n * });\n *\n * await core.initialize();\n * const tasks = core.listTasks();\n * const grouped = core.getTasksByStatus();\n * ```\n */\nexport class Core {\n projectRoot;\n fs;\n config = null;\n tasks = new Map();\n initialized = false;\n constructor(options) {\n this.projectRoot = options.projectRoot;\n this.fs = options.adapters.fs;\n }\n /**\n * Check if projectRoot contains a valid Backlog.md project\n */\n async isBacklogProject() {\n const configPath = this.fs.join(this.projectRoot, \"backlog\", \"config.yml\");\n return this.fs.exists(configPath);\n }\n /**\n * Initialize a new Backlog.md project in the projectRoot directory\n *\n * Creates the backlog/ directory and config.yml file.\n * Task directories (tasks/, completed/) are created lazily when needed.\n *\n * @param options - Optional configuration for the new project\n * @throws Error if project already exists\n *\n * @example\n * ```typescript\n * const core = new Core({ projectRoot: '/path/to/project', adapters: { fs } });\n *\n * // Initialize with defaults\n * await core.initProject();\n *\n * // Or with custom options\n * await core.initProject({\n * projectName: 'My Project',\n * statuses: ['Backlog', 'In Progress', 'Review', 'Done'],\n * labels: ['bug', 'feature', 'docs']\n * });\n * ```\n */\n async initProject(options = {}) {\n // Check if already a backlog project\n if (await this.isBacklogProject()) {\n throw new Error(`Already a Backlog.md project: config.yml exists at ${this.fs.join(this.projectRoot, \"backlog\", \"config.yml\")}`);\n }\n // Derive project name from directory if not provided\n const dirName = this.projectRoot.split(\"/\").pop() || \"Backlog\";\n const projectName = options.projectName || dirName;\n // Build config with defaults\n const statuses = options.statuses || [\"To Do\", \"In Progress\", \"Done\"];\n const config = {\n projectName,\n statuses,\n labels: options.labels || [],\n milestones: [],\n defaultStatus: options.defaultStatus || statuses[0],\n dateFormat: \"YYYY-MM-DD\",\n };\n // Create backlog directory\n const backlogDir = this.fs.join(this.projectRoot, \"backlog\");\n await this.fs.createDir(backlogDir, { recursive: true });\n // Write config.yml\n const configPath = this.fs.join(backlogDir, \"config.yml\");\n const configContent = serializeBacklogConfig(config);\n await this.fs.writeFile(configPath, configContent);\n }\n /**\n * Initialize the Core instance\n *\n * Loads configuration and discovers all tasks.\n * Must be called before using other methods.\n */\n async initialize() {\n if (this.initialized)\n return;\n // Load config\n const configPath = this.fs.join(this.projectRoot, \"backlog\", \"config.yml\");\n const configExists = await this.fs.exists(configPath);\n if (!configExists) {\n throw new Error(`Not a Backlog.md project: config.yml not found at ${configPath}`);\n }\n const configContent = await this.fs.readFile(configPath);\n this.config = parseBacklogConfig(configContent);\n // Load tasks from tasks/ directory\n const tasksDir = this.fs.join(this.projectRoot, \"backlog\", \"tasks\");\n if (await this.fs.exists(tasksDir)) {\n await this.loadTasksFromDirectory(tasksDir, \"local\");\n }\n // Load tasks from completed/ directory\n const completedDir = this.fs.join(this.projectRoot, \"backlog\", \"completed\");\n if (await this.fs.exists(completedDir)) {\n await this.loadTasksFromDirectory(completedDir, \"completed\");\n }\n this.initialized = true;\n }\n /**\n * Get the loaded configuration\n *\n * @throws Error if not initialized\n */\n getConfig() {\n this.ensureInitialized();\n return this.config;\n }\n /**\n * List all tasks, optionally filtered\n *\n * @param filter - Optional filter criteria\n * @returns Sorted array of tasks\n */\n listTasks(filter) {\n this.ensureInitialized();\n let tasks = Array.from(this.tasks.values());\n if (filter?.status) {\n tasks = tasks.filter((t) => t.status === filter.status);\n }\n if (filter?.assignee) {\n tasks = tasks.filter((t) => t.assignee.includes(filter.assignee));\n }\n if (filter?.priority) {\n tasks = tasks.filter((t) => t.priority === filter.priority);\n }\n if (filter?.labels && filter.labels.length > 0) {\n tasks = tasks.filter((t) => filter.labels.some((label) => t.labels.includes(label)));\n }\n if (filter?.parentTaskId) {\n tasks = tasks.filter((t) => t.parentTaskId === filter.parentTaskId);\n }\n return sortTasks(tasks);\n }\n /**\n * Get tasks grouped by status\n *\n * This is the primary method for kanban-style displays.\n * Returns a Map with status as key and sorted tasks as value.\n * The Map preserves the order of statuses from config.\n */\n getTasksByStatus() {\n this.ensureInitialized();\n const tasks = Array.from(this.tasks.values());\n return groupTasksByStatus(tasks, this.config.statuses);\n }\n /**\n * Get a single task by ID\n *\n * @param id - Task ID\n * @returns Task or undefined if not found\n */\n getTask(id) {\n this.ensureInitialized();\n return this.tasks.get(id);\n }\n /**\n * Reload all tasks from disk\n *\n * Useful after external changes to task files.\n */\n async reload() {\n this.tasks.clear();\n this.initialized = false;\n await this.initialize();\n }\n // --- Private methods ---\n ensureInitialized() {\n if (!this.initialized) {\n throw new Error(\"Core not initialized. Call initialize() first.\");\n }\n }\n async loadTasksFromDirectory(dir, source) {\n const entries = await this.fs.readDir(dir);\n for (const entry of entries) {\n const fullPath = this.fs.join(dir, entry);\n // Skip directories\n if (await this.fs.isDirectory(fullPath)) {\n continue;\n }\n // Only process markdown files\n if (!entry.endsWith(\".md\")) {\n continue;\n }\n try {\n const content = await this.fs.readFile(fullPath);\n const task = parseTaskMarkdown(content, fullPath);\n // Set source based on directory\n task.source = source;\n this.tasks.set(task.id, task);\n }\n catch (error) {\n // Log but don't fail on individual task parse errors\n console.warn(`Failed to parse task file ${fullPath}:`, error);\n }\n }\n }\n}\n//# sourceMappingURL=Core.js.map","/**\n * PanelFileSystemAdapter\n *\n * Implements FileSystemAdapter interface by wrapping the panel framework's\n * file access APIs (fileTree slice and openFile action).\n */\n\nimport type { FileSystemAdapter } from '@backlog-md/core';\n\nexport interface PanelFileAccess {\n /** Function to fetch file content by path */\n fetchFile: (path: string) => Promise<string>;\n /** List of all file paths in the repository */\n filePaths: string[];\n}\n\n/**\n * FileSystemAdapter implementation for the panel framework\n *\n * This adapter wraps the panel's file access mechanisms to provide\n * a standard FileSystemAdapter interface for @backlog-md/core.\n */\nexport class PanelFileSystemAdapter implements FileSystemAdapter {\n private readonly filePaths: Set<string>;\n private readonly directories: Set<string>;\n private readonly fetchFile: (path: string) => Promise<string>;\n\n constructor(access: PanelFileAccess) {\n this.fetchFile = access.fetchFile;\n this.filePaths = new Set(access.filePaths);\n\n // Build directory set from file paths\n this.directories = new Set<string>();\n for (const filePath of access.filePaths) {\n const parts = filePath.split('/');\n // Add all parent directories\n for (let i = 1; i < parts.length; i++) {\n this.directories.add(parts.slice(0, i).join('/'));\n }\n }\n // Root directory\n this.directories.add('');\n }\n\n async exists(path: string): Promise<boolean> {\n const normalized = this.normalizePath(path);\n return this.filePaths.has(normalized) || this.directories.has(normalized);\n }\n\n async readFile(path: string): Promise<string> {\n const normalized = this.normalizePath(path);\n if (!this.filePaths.has(normalized)) {\n throw new Error(`File not found: ${path}`);\n }\n return this.fetchFile(normalized);\n }\n\n async writeFile(_path: string, _content: string): Promise<void> {\n throw new Error('Write operations not supported in panel context');\n }\n\n async deleteFile(_path: string): Promise<void> {\n throw new Error('Delete operations not supported in panel context');\n }\n\n async createDir(_path: string, _options?: { recursive?: boolean }): Promise<void> {\n throw new Error('Directory creation not supported in panel context');\n }\n\n async readDir(path: string): Promise<string[]> {\n const normalized = this.normalizePath(path);\n const prefix = normalized ? `${normalized}/` : '';\n const entries = new Set<string>();\n\n for (const filePath of this.filePaths) {\n if (filePath.startsWith(prefix)) {\n // Get the next path segment after the prefix\n const remaining = filePath.slice(prefix.length);\n const nextSlash = remaining.indexOf('/');\n const entry = nextSlash === -1 ? remaining : remaining.slice(0, nextSlash);\n if (entry) {\n entries.add(entry);\n }\n }\n }\n\n return Array.from(entries);\n }\n\n async isDirectory(path: string): Promise<boolean> {\n const normalized = this.normalizePath(path);\n return this.directories.has(normalized) && !this.filePaths.has(normalized);\n }\n\n async rename(_from: string, _to: string): Promise<void> {\n throw new Error('Rename operations not supported in panel context');\n }\n\n async stat(path: string): Promise<{ mtime: Date; isDirectory: boolean; size: number }> {\n const normalized = this.normalizePath(path);\n const isDir = await this.isDirectory(normalized);\n const exists = await this.exists(normalized);\n\n if (!exists) {\n throw new Error(`Path not found: ${path}`);\n }\n\n return {\n mtime: new Date(),\n isDirectory: isDir,\n size: 0, // Size not available from fileTree\n };\n }\n\n // Path utilities (synchronous, pure string manipulation)\n\n join(...paths: string[]): string {\n return paths\n .filter(Boolean)\n .join('/')\n .replace(/\\/+/g, '/')\n .replace(/^\\//, '');\n }\n\n dirname(path: string): string {\n const parts = path.split('/');\n parts.pop();\n return parts.join('/');\n }\n\n basename(path: string, ext?: string): string {\n const base = path.split('/').pop() || '';\n if (ext && base.endsWith(ext)) {\n return base.slice(0, -ext.length);\n }\n return base;\n }\n\n extname(path: string): string {\n const base = this.basename(path);\n const dotIndex = base.lastIndexOf('.');\n return dotIndex === -1 ? '' : base.slice(dotIndex);\n }\n\n relative(from: string, to: string): string {\n const fromParts = from.split('/').filter(Boolean);\n const toParts = to.split('/').filter(Boolean);\n\n // Find common prefix\n let commonLength = 0;\n while (\n commonLength < fromParts.length &&\n commonLength < toParts.length &&\n fromParts[commonLength] === toParts[commonLength]\n ) {\n commonLength++;\n }\n\n // Build relative path\n const upCount = fromParts.length - commonLength;\n const relativeParts = [\n ...Array(upCount).fill('..'),\n ...toParts.slice(commonLength),\n ];\n\n return relativeParts.join('/') || '.';\n }\n\n isAbsolute(path: string): boolean {\n return path.startsWith('/');\n }\n\n normalize(path: string): string {\n return this.normalizePath(path);\n }\n\n homedir(): string {\n return '';\n }\n\n // Private helpers\n\n private normalizePath(path: string): string {\n return path\n .replace(/^\\/+/, '') // Remove leading slashes\n .replace(/\\/+$/, '') // Remove trailing slashes\n .replace(/\\/+/g, '/'); // Collapse multiple slashes\n }\n}\n","import { useState, useCallback, useEffect, useRef } from 'react';\nimport { Core, type Task } from '@backlog-md/core';\nimport { PanelFileSystemAdapter } from '../../../adapters/PanelFileSystemAdapter';\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\nconst DEFAULT_STATUSES = ['To Do', 'In Progress', 'Done'];\n\n/**\n * Hook for managing kanban board data\n * Integrates with Backlog.md via @backlog-md/core\n */\nexport function useKanbanData(\n options?: UseKanbanDataOptions\n): UseKanbanDataResult {\n const { context, actions } = options || {};\n\n const [tasks, setTasks] = useState<Task[]>([]);\n const [statuses, setStatuses] = useState<string[]>(DEFAULT_STATUSES);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n const [isBacklogProject, setIsBacklogProject] = useState(false);\n const [tasksByStatus, setTasksByStatus] = useState<Map<string, Task[]>>(\n new Map()\n );\n\n // Keep track of active file fetches to avoid duplicate fetches\n const activeFilePathRef = useRef<string | null>(null);\n\n // Store stable references to context and actions\n const contextRef = useRef(context);\n const actionsRef = useRef(actions);\n\n useEffect(() => {\n contextRef.current = context;\n actionsRef.current = actions;\n }, [context, actions]);\n\n // Helper function to fetch file content\n const fetchFileContent = useCallback(async (path: string): Promise<string> => {\n const currentContext = contextRef.current;\n const currentActions = actionsRef.current;\n\n if (!currentActions || !currentContext) {\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 if (currentActions.openFile) {\n const result = await currentActions.openFile(path);\n if (typeof result === 'string') {\n return result;\n }\n } else {\n throw new Error('openFile action not available');\n }\n\n // Get the active file data from the slice\n const activeFileSlice = currentContext.getRepositorySlice('active-file');\n const fileData = activeFileSlice?.data as { content?: string };\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\n // Load Backlog.md data using Core\n const loadBacklogData = useCallback(async () => {\n if (!context || !actions) {\n console.log('[useKanbanData] No context provided');\n setIsBacklogProject(false);\n setTasks([]);\n setStatuses(DEFAULT_STATUSES);\n setTasksByStatus(new Map());\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('fileTree') as\n | { data?: { files?: Array<{ path: string }> } }\n | undefined;\n\n if (!fileTreeSlice?.data?.files) {\n console.log('[useKanbanData] FileTree not available');\n setIsBacklogProject(false);\n setTasks([]);\n setStatuses(DEFAULT_STATUSES);\n setTasksByStatus(new Map());\n return;\n }\n\n const files = fileTreeSlice.data.files;\n const filePaths = files.map((f: { path: string }) => f.path);\n\n // Create FileSystemAdapter for the panel\n const fs = new PanelFileSystemAdapter({\n fetchFile: fetchFileContent,\n filePaths,\n });\n\n // Create Core instance\n const core = new Core({\n projectRoot: '',\n adapters: { fs },\n });\n\n // Check if this is a Backlog.md project\n const isProject = await core.isBacklogProject();\n if (!isProject) {\n console.log('[useKanbanData] Not a Backlog.md project');\n setIsBacklogProject(false);\n setTasks([]);\n setStatuses(DEFAULT_STATUSES);\n setTasksByStatus(new Map());\n return;\n }\n\n console.log('[useKanbanData] Loading Backlog.md data...');\n setIsBacklogProject(true);\n\n // Initialize and load data\n await core.initialize();\n\n const config = core.getConfig();\n const grouped = core.getTasksByStatus();\n const allTasks = core.listTasks();\n\n console.log(\n `[useKanbanData] Loaded ${allTasks.length} tasks with ${config.statuses.length} statuses`\n );\n\n setStatuses(config.statuses);\n setTasks(allTasks);\n setTasksByStatus(grouped);\n } catch (err) {\n console.error('[useKanbanData] Failed to load Backlog.md data:', err);\n setError(err instanceof Error ? err.message : 'Failed to load backlog data');\n setIsBacklogProject(false);\n setTasks([]);\n setStatuses(DEFAULT_STATUSES);\n setTasksByStatus(new Map());\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 // Refresh data\n const refreshData = useCallback(async () => {\n await loadBacklogData();\n }, [loadBacklogData]);\n\n // Update task status (not yet implemented)\n const updateTaskStatus = useCallback(\n async (_taskId: string, _newStatus: string) => {\n setError(null);\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-md/core';\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: '1',\n minWidth: 'min(280px, 85vw)', // Responsive width for mobile\n display: 'flex',\n flexDirection: 'column',\n gap: '12px',\n background: theme.colors.backgroundSecondary,\n borderRadius: theme.radii[2],\n padding: 'clamp(12px, 3vw, 16px)', // Responsive padding for mobile\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 WebkitOverflowScrolling: 'touch',\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 minHeight: '44px', // Minimum touch target size for mobile\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\n {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 { ExternalLink, FileText, FolderPlus, Loader2, CheckCircle2 } from 'lucide-react';\nimport { useTheme } from '@principal-ade/industry-theme';\n\ninterface EmptyStateProps {\n message?: string;\n description?: string;\n showBacklogLink?: boolean;\n onInitialize?: () => Promise<void>;\n canInitialize?: 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 onInitialize,\n canInitialize = false,\n}) => {\n const { theme } = useTheme();\n const [isInitializing, setIsInitializing] = useState(false);\n const [initError, setInitError] = useState<string | null>(null);\n const [initSuccess, setInitSuccess] = useState(false);\n\n const handleInitialize = async () => {\n if (!onInitialize) return;\n setIsInitializing(true);\n setInitError(null);\n try {\n await onInitialize();\n setInitSuccess(true);\n } catch (err) {\n setInitError(err instanceof Error ? err.message : 'Failed to initialize');\n } finally {\n setIsInitializing(false);\n }\n };\n\n return (\n <>\n {/* Keyframe animation for spinner */}\n <style>{`\n @keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n `}</style>\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 {/* Action buttons */}\n <div\n style={{\n display: 'flex',\n gap: '12px',\n flexWrap: 'wrap',\n justifyContent: 'center',\n }}\n >\n {canInitialize && onInitialize && (\n <button\n onClick={handleInitialize}\n disabled={isInitializing}\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 border: 'none',\n fontSize: theme.fontSizes[2],\n fontWeight: 500,\n cursor: isInitializing ? 'wait' : 'pointer',\n opacity: isInitializing ? 0.7 : 1,\n transition: 'opacity 0.2s',\n }}\n onMouseEnter={(e) => {\n if (!isInitializing) e.currentTarget.style.opacity = '0.9';\n }}\n onMouseLeave={(e) => {\n if (!isInitializing) e.currentTarget.style.opacity = '1';\n }}\n >\n {isInitializing ? (\n <>\n <Loader2 size={16} style={{ animation: 'spin 1s linear infinite' }} />\n <span>Initializing...</span>\n </>\n ) : (\n <>\n <FolderPlus size={16} />\n <span>Initialize Backlog.md</span>\n </>\n )}\n </button>\n )}\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: canInitialize ? 'transparent' : theme.colors.primary,\n color: canInitialize ? theme.colors.primary : '#fff',\n border: canInitialize ? `1px solid ${theme.colors.primary}` : 'none',\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 </div>\n\n {/* Success message */}\n {initSuccess && (\n <div\n style={{\n marginTop: '16px',\n padding: '16px 20px',\n backgroundColor: `${theme.colors.success || '#22c55e'}15`,\n border: `1px solid ${theme.colors.success || '#22c55e'}`,\n borderRadius: theme.radii[2],\n display: 'flex',\n alignItems: 'flex-start',\n gap: '12px',\n maxWidth: '480px',\n }}\n >\n <CheckCircle2 size={20} color={theme.colors.success || '#22c55e'} style={{ flexShrink: 0, marginTop: '2px' }} />\n <div style={{ textAlign: 'left' }}>\n <p style={{ margin: 0, fontWeight: 600, color: theme.colors.text, fontSize: theme.fontSizes[2] }}>\n Backlog.md initialized!\n </p>\n <p style={{ margin: '8px 0 0', color: theme.colors.textSecondary, fontSize: theme.fontSizes[1], lineHeight: 1.5 }}>\n Created <code style={{ padding: '2px 6px', backgroundColor: theme.colors.surface, borderRadius: '4px', fontFamily: theme.fonts.monospace, fontSize: '0.9em' }}>backlog/config.yml</code>.\n Refresh the panel or reopen the repository to see your kanban board.\n </p>\n </div>\n </div>\n )}\n\n {/* Error message */}\n {initError && (\n <div\n style={{\n marginTop: '16px',\n padding: '12px 16px',\n backgroundColor: `${theme.colors.error}15`,\n border: `1px solid ${theme.colors.error}`,\n borderRadius: theme.radii[2],\n color: theme.colors.error,\n fontSize: theme.fontSizes[1],\n }}\n >\n {initError}\n </div>\n )}\n\n {!initSuccess && <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};\n","import React, { useState, useCallback } from 'react';\nimport { Kanban, 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 { Core, type Task } from '@backlog-md/core';\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 { statuses, tasksByStatus, error, isBacklogProject, refreshData } = useKanbanData({\n context,\n actions,\n });\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 // Check if we can initialize (need file system adapter with write capability)\n const fileSystem = context.adapters?.fileSystem;\n const canInitialize = Boolean(\n fileSystem?.writeFile && fileSystem?.createDir && context.currentScope.repository?.path\n );\n\n // Initialize Backlog.md project\n const handleInitialize = useCallback(async () => {\n if (!fileSystem?.writeFile || !fileSystem?.createDir) {\n throw new Error('File system adapter not available');\n }\n\n const repoPath = context.currentScope.repository?.path;\n if (!repoPath) {\n throw new Error('Repository path not available');\n }\n\n // Create a minimal adapter for Core that wraps the panel's fileSystem\n // Only the methods used by initProject need real implementations\n const notImplemented = () => { throw new Error('Not implemented'); };\n const fsAdapter = {\n // Used by initProject\n exists: async (path: string) => {\n try {\n await fileSystem.readFile(path);\n return true;\n } catch {\n return false;\n }\n },\n writeFile: async (path: string, content: string) => { await fileSystem.writeFile(path, content); },\n createDir: async (path: string, _options?: { recursive?: boolean }) => { await fileSystem.createDir!(path); },\n join: (...paths: string[]) => paths.join('/').replace(/\\/+/g, '/'),\n // Not used by initProject - stubs\n readFile: async (path: string) => fileSystem.readFile(path) as Promise<string>,\n deleteFile: async () => notImplemented(),\n readDir: async () => [] as string[],\n isDirectory: async () => false,\n rename: async () => notImplemented(),\n stat: async () => ({ mtime: new Date(), isDirectory: false, size: 0 }),\n dirname: (path: string) => path.split('/').slice(0, -1).join('/') || '/',\n basename: (path: string) => path.split('/').pop() || '',\n extname: (path: string) => {\n const base = path.split('/').pop() || '';\n const dot = base.lastIndexOf('.');\n return dot > 0 ? base.slice(dot) : '';\n },\n relative: (_from: string, to: string) => to,\n isAbsolute: (path: string) => path.startsWith('/'),\n normalize: (path: string) => path.replace(/\\/+/g, '/'),\n homedir: () => '/',\n };\n\n const core = new Core({\n projectRoot: repoPath,\n adapters: { fs: fsAdapter },\n });\n\n // Get project name from repo\n const projectName = context.currentScope.repository?.name || 'Backlog';\n\n await core.initProject({ projectName });\n\n // Refresh to pick up the new project\n await refreshData();\n }, [fileSystem, context.currentScope.repository, refreshData]);\n\n return (\n <div\n style={{\n padding: 'clamp(12px, 3vw, 20px)', // Responsive padding for mobile\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\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n flexWrap: 'wrap',\n }}\n >\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 </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 fontSize: theme.fontSizes[1],\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 canInitialize={canInitialize}\n onInitialize={handleInitialize}\n />\n ) : (\n <div\n style={{\n flex: 1,\n display: 'flex',\n gap: '16px',\n overflowX: 'auto',\n overflowY: 'hidden',\n paddingBottom: '8px',\n WebkitOverflowScrolling: 'touch', // Smooth scrolling on iOS\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","/**\n * Kanban Panel Tools\n *\n * UTCP-compatible tools for the Kanban panel extension.\n * These tools can be invoked by AI agents and emit events that panels listen for.\n *\n * IMPORTANT: This file should NOT import any React components to ensure\n * it can be imported server-side without pulling in React dependencies.\n * Use the './tools' subpath export for server-safe imports.\n */\n\nimport type {\n PanelTool,\n PanelToolsMetadata,\n} from '@principal-ade/utcp-panel-event';\n\n/**\n * Tool: Move Task\n */\nexport const moveTaskTool: PanelTool = {\n name: 'move_task',\n description: 'Moves a task to a different status column on the kanban board',\n inputs: {\n type: 'object',\n properties: {\n taskId: {\n type: 'string',\n description: 'The ID of the task to move',\n },\n targetStatus: {\n type: 'string',\n description:\n 'The target status column (e.g., \"To Do\", \"In Progress\", \"Done\")',\n },\n },\n required: ['taskId', 'targetStatus'],\n },\n outputs: {\n type: 'object',\n properties: {\n success: { type: 'boolean' },\n message: { type: 'string' },\n },\n },\n tags: ['kanban', 'task', 'move', 'status'],\n tool_call_template: {\n call_template_type: 'panel_event',\n event_type: 'industry-theme.kanban-panel:move-task',\n },\n};\n\n/**\n * Tool: Select Task\n */\nexport const selectTaskTool: PanelTool = {\n name: 'select_task',\n description: 'Selects a task to view its details',\n inputs: {\n type: 'object',\n properties: {\n taskId: {\n type: 'string',\n description: 'The ID of the task to select',\n },\n },\n required: ['taskId'],\n },\n outputs: {\n type: 'object',\n properties: {\n success: { type: 'boolean' },\n task: { type: 'object' },\n },\n },\n tags: ['kanban', 'task', 'select', 'view'],\n tool_call_template: {\n call_template_type: 'panel_event',\n event_type: 'industry-theme.kanban-panel:select-task',\n },\n};\n\n/**\n * Tool: Refresh Board\n */\nexport const refreshBoardTool: PanelTool = {\n name: 'refresh_board',\n description: 'Refreshes the kanban board to reload tasks from the backlog',\n inputs: {\n type: 'object',\n properties: {},\n },\n outputs: {\n type: 'object',\n properties: {\n success: { type: 'boolean' },\n },\n },\n tags: ['kanban', 'board', 'refresh'],\n tool_call_template: {\n call_template_type: 'panel_event',\n event_type: 'industry-theme.kanban-panel:refresh-board',\n },\n};\n\n/**\n * Tool: Filter Tasks\n */\nexport const filterTasksTool: PanelTool = {\n name: 'filter_tasks',\n description:\n 'Filters tasks on the kanban board by labels, assignee, or priority',\n inputs: {\n type: 'object',\n properties: {\n labels: {\n type: 'array',\n items: { type: 'string' },\n description: 'Filter by task labels',\n },\n assignee: {\n type: 'string',\n description: 'Filter by assignee name',\n },\n priority: {\n type: 'string',\n description: 'Filter by priority level',\n },\n },\n },\n outputs: {\n type: 'object',\n properties: {\n success: { type: 'boolean' },\n count: { type: 'number' },\n },\n },\n tags: ['kanban', 'task', 'filter', 'search'],\n tool_call_template: {\n call_template_type: 'panel_event',\n event_type: 'industry-theme.kanban-panel:filter-tasks',\n },\n};\n\n/**\n * All tools exported as an array.\n */\nexport const kanbanPanelTools: PanelTool[] = [\n moveTaskTool,\n selectTaskTool,\n refreshBoardTool,\n filterTasksTool,\n];\n\n/**\n * Panel tools metadata for registration with PanelToolRegistry.\n */\nexport const kanbanPanelToolsMetadata: PanelToolsMetadata = {\n id: 'industry-theme.kanban-panel',\n name: 'Kanban Panel',\n description: 'Tools provided by the backlogmd kanban panel extension',\n tools: kanbanPanelTools,\n};\n","import { KanbanPanel } from './panels/KanbanPanel';\nimport type { PanelDefinition, PanelContextValue } from './types';\nimport { kanbanPanelTools, kanbanPanelToolsMetadata } from './tools';\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 tools: kanbanPanelTools,\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\n/**\n * Export tools for server-safe imports.\n * Use '@industry-theme/backlogmd-kanban-panel/tools' to import without React dependencies.\n */\nexport {\n kanbanPanelTools,\n kanbanPanelToolsMetadata,\n moveTaskTool,\n selectTaskTool,\n refreshBoardTool,\n filterTasksTool,\n} from './tools';\n"],"names":["__iconNode","theme","React","DEFAULT_STATUSES","Loader2","CheckCircle2","_a","_b","AlertCircle"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]}
|
|
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/circle-check.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/folder-plus.js","../node_modules/lucide-react/dist/esm/icons/kanban.js","../node_modules/lucide-react/dist/esm/icons/loader-circle.js","../node_modules/@principal-ade/industry-theme/dist/esm/index.js","../node_modules/@backlog-md/core/dist/markdown/index.js","../node_modules/@backlog-md/core/dist/core/config-parser.js","../node_modules/@backlog-md/core/dist/utils/sorting.js","../node_modules/@backlog-md/core/dist/core/Core.js","../src/adapters/PanelFileSystemAdapter.ts","../src/panels/kanban/hooks/useKanbanData.ts","../src/panels/kanban/components/KanbanColumn.tsx","../src/panels/kanban/components/EmptyState.tsx","../src/panels/KanbanPanel.tsx","../src/tools/index.ts","../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 [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"m9 12 2 2 4-4\", key: \"dzmm74\" }]\n];\nconst CircleCheck = createLucideIcon(\"circle-check\", __iconNode);\n\nexport { __iconNode, CircleCheck as default };\n//# sourceMappingURL=circle-check.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: \"M12 10v6\", key: \"1bos4e\" }],\n [\"path\", { d: \"M9 13h6\", key: \"1uhe8q\" }],\n [\n \"path\",\n {\n d: \"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\",\n key: \"1kt360\"\n }\n ]\n];\nconst FolderPlus = createLucideIcon(\"folder-plus\", __iconNode);\n\nexport { __iconNode, FolderPlus as default };\n//# sourceMappingURL=folder-plus.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 = [[\"path\", { d: \"M21 12a9 9 0 1 1-6.219-8.56\", key: \"13zald\" }]];\nconst LoaderCircle = createLucideIcon(\"loader-circle\", __iconNode);\n\nexport { __iconNode, LoaderCircle as default };\n//# sourceMappingURL=loader-circle.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, 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.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 * Markdown parsing and serialization for @backlog-md/core\n *\n * This module handles conversion between markdown files and Task objects.\n */\n/**\n * Parse task markdown content into a Task object\n *\n * @param content - Raw markdown content\n * @param filePath - Path to the file (for extracting ID from filename)\n * @returns Parsed task object\n */\nexport function parseTaskMarkdown(content, filePath) {\n const { frontmatter, title, rawContent, acceptanceCriteria, description } = parseMarkdownContent(content);\n const id = extractIdFromPath(filePath);\n return {\n id,\n title: title || `Task ${id}`,\n status: frontmatter.status || \"backlog\",\n priority: frontmatter.priority,\n assignee: frontmatter.assignee || [],\n reporter: frontmatter.reporter,\n createdDate: frontmatter.createdDate || new Date().toISOString().split(\"T\")[0],\n updatedDate: frontmatter.updatedDate,\n labels: frontmatter.labels || [],\n milestone: frontmatter.milestone,\n dependencies: frontmatter.dependencies || [],\n parentTaskId: frontmatter.parentTaskId,\n subtasks: frontmatter.subtasks,\n branch: frontmatter.branch,\n ordinal: frontmatter.ordinal,\n rawContent,\n description,\n acceptanceCriteriaItems: acceptanceCriteria,\n filePath,\n };\n}\n/**\n * Serialize a Task object to markdown content\n *\n * @param task - Task to serialize\n * @returns Markdown string\n */\nexport function serializeTaskMarkdown(task) {\n const lines = [];\n // Frontmatter\n lines.push(\"---\");\n lines.push(`status: ${task.status}`);\n if (task.priority) {\n lines.push(`priority: ${task.priority}`);\n }\n if (task.assignee && task.assignee.length > 0) {\n lines.push(`assignee: [${task.assignee.join(\", \")}]`);\n }\n if (task.reporter) {\n lines.push(`reporter: ${task.reporter}`);\n }\n if (task.labels && task.labels.length > 0) {\n lines.push(`labels: [${task.labels.join(\", \")}]`);\n }\n if (task.milestone) {\n lines.push(`milestone: ${task.milestone}`);\n }\n if (task.dependencies && task.dependencies.length > 0) {\n lines.push(`dependencies: [${task.dependencies.join(\", \")}]`);\n }\n if (task.parentTaskId) {\n lines.push(`parentTaskId: ${task.parentTaskId}`);\n }\n if (task.subtasks && task.subtasks.length > 0) {\n lines.push(`subtasks: [${task.subtasks.join(\", \")}]`);\n }\n if (task.branch) {\n lines.push(`branch: ${task.branch}`);\n }\n if (task.ordinal !== undefined) {\n lines.push(`ordinal: ${task.ordinal}`);\n }\n if (task.createdDate) {\n lines.push(`createdDate: ${task.createdDate}`);\n }\n if (task.updatedDate) {\n lines.push(`updatedDate: ${task.updatedDate}`);\n }\n lines.push(\"---\");\n lines.push(\"\");\n // Title\n lines.push(`# ${task.title}`);\n lines.push(\"\");\n // Description/Body\n if (task.description) {\n lines.push(task.description);\n lines.push(\"\");\n }\n // Acceptance Criteria\n if (task.acceptanceCriteriaItems && task.acceptanceCriteriaItems.length > 0) {\n lines.push(\"## Acceptance Criteria\");\n lines.push(\"\");\n for (const criterion of task.acceptanceCriteriaItems) {\n const checkbox = criterion.checked ? \"[x]\" : \"[ ]\";\n lines.push(`- ${checkbox} ${criterion.text}`);\n }\n lines.push(\"\");\n }\n // Implementation Plan\n if (task.implementationPlan) {\n lines.push(\"## Implementation Plan\");\n lines.push(\"\");\n lines.push(task.implementationPlan);\n lines.push(\"\");\n }\n // Implementation Notes\n if (task.implementationNotes) {\n lines.push(\"## Implementation Notes\");\n lines.push(\"\");\n lines.push(task.implementationNotes);\n lines.push(\"\");\n }\n return lines.join(\"\\n\");\n}\n// --- Internal helpers ---\nfunction parseMarkdownContent(content) {\n let frontmatter = {};\n let remaining = content;\n // Extract frontmatter\n const frontmatterMatch = content.match(/^---\\n([\\s\\S]*?)\\n---\\n/);\n if (frontmatterMatch) {\n frontmatter = parseFrontmatter(frontmatterMatch[1]);\n remaining = content.slice(frontmatterMatch[0].length);\n }\n // Extract title (first h1)\n let title = \"\";\n const titleMatch = remaining.match(/^#\\s+(.+)$/m);\n if (titleMatch) {\n title = titleMatch[1].trim();\n }\n // Extract acceptance criteria\n const acceptanceCriteria = parseAcceptanceCriteria(remaining);\n // Raw content is everything after frontmatter\n const rawContent = remaining.trim();\n // Description is the body text between title and first section\n const description = extractDescription(remaining, title);\n return { frontmatter, title, rawContent, description, acceptanceCriteria };\n}\nfunction parseFrontmatter(raw) {\n const result = {};\n for (const line of raw.split(\"\\n\")) {\n const match = line.match(/^(\\w+):\\s*(.+)$/);\n if (!match)\n continue;\n const [, key, value] = match;\n switch (key) {\n case \"status\":\n result.status = value.trim();\n break;\n case \"priority\":\n result.priority = value.trim();\n break;\n case \"ordinal\":\n result.ordinal = parseInt(value.trim(), 10);\n break;\n case \"reporter\":\n case \"milestone\":\n case \"parentTaskId\":\n case \"branch\":\n case \"createdDate\":\n case \"updatedDate\":\n result[key] = value.trim();\n break;\n case \"assignee\":\n case \"labels\":\n case \"dependencies\":\n case \"subtasks\":\n result[key] = parseArrayValue(value);\n break;\n }\n }\n return result;\n}\nfunction parseArrayValue(value) {\n // Handle [item1, item2] or item1, item2\n const cleaned = value.replace(/^\\[|\\]$/g, \"\").trim();\n if (!cleaned)\n return [];\n return cleaned\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean);\n}\nfunction parseAcceptanceCriteria(content) {\n const criteria = [];\n // Look for AC section or just checkbox items\n const checkboxPattern = /^-\\s*\\[([ xX])\\]\\s*(.+)$/gm;\n let match;\n let index = 1; // 1-based index as per AcceptanceCriterion\n while ((match = checkboxPattern.exec(content)) !== null) {\n criteria.push({\n index: index++,\n checked: match[1].toLowerCase() === \"x\",\n text: match[2].trim(),\n });\n }\n return criteria;\n}\nfunction extractDescription(content, title) {\n let body = content;\n // Remove title line\n if (title) {\n body = body.replace(new RegExp(`^#\\\\s+${escapeRegex(title)}\\\\s*$`, \"m\"), \"\");\n }\n // Remove known sections\n body = body.replace(/^##\\s+Acceptance Criteria[\\s\\S]*?(?=^##|\\z)/m, \"\");\n body = body.replace(/^##\\s+Implementation Plan[\\s\\S]*?(?=^##|\\z)/m, \"\");\n body = body.replace(/^##\\s+Implementation Notes[\\s\\S]*?(?=^##|\\z)/m, \"\");\n return body.trim();\n}\nfunction extractIdFromPath(filePath) {\n // Extract from pattern: task-{id} - {title}.md or {id} - {title}.md\n const filename = filePath.split(\"/\").pop() || \"\";\n const match = filename.match(/^(?:task-)?(\\d+(?:\\.\\d+)?)\\s*-/);\n if (match) {\n return match[1];\n }\n // Fallback: use filename without extension\n return filename.replace(/\\.md$/, \"\");\n}\nfunction escapeRegex(str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n//# sourceMappingURL=index.js.map","/**\n * Backlog.md Config Parser\n *\n * Parses config.yml using a line-by-line approach matching the official Backlog.md\n * implementation. This is more reliable than a generic YAML parser for this format.\n */\nconst DEFAULT_STATUSES = [\"To Do\", \"In Progress\", \"Done\"];\n/**\n * Parse Backlog.md config.yml content\n */\nexport function parseBacklogConfig(content) {\n const config = {};\n const lines = content.split(\"\\n\");\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed || trimmed.startsWith(\"#\"))\n continue;\n const colonIndex = trimmed.indexOf(\":\");\n if (colonIndex === -1)\n continue;\n const key = trimmed.substring(0, colonIndex).trim();\n const value = trimmed.substring(colonIndex + 1).trim();\n switch (key) {\n case \"project_name\":\n config.projectName = value.replace(/['\"]/g, \"\");\n break;\n case \"default_assignee\":\n config.defaultAssignee = value.replace(/['\"]/g, \"\");\n break;\n case \"default_reporter\":\n config.defaultReporter = value.replace(/['\"]/g, \"\");\n break;\n case \"default_status\":\n config.defaultStatus = value.replace(/['\"]/g, \"\");\n break;\n case \"statuses\":\n case \"labels\":\n case \"milestones\":\n if (value.startsWith(\"[\") && value.endsWith(\"]\")) {\n const arrayContent = value.slice(1, -1);\n config[key] = arrayContent\n .split(\",\")\n .map((item) => item.trim().replace(/['\"]/g, \"\"))\n .filter(Boolean);\n }\n break;\n case \"date_format\":\n config.dateFormat = value.replace(/['\"]/g, \"\");\n break;\n case \"max_column_width\":\n config.maxColumnWidth = parseInt(value, 10);\n break;\n case \"task_resolution_strategy\":\n config.taskResolutionStrategy = value.replace(/['\"]/g, \"\");\n break;\n case \"default_editor\":\n config.defaultEditor = value.replace(/[\"']/g, \"\");\n break;\n case \"auto_open_browser\":\n config.autoOpenBrowser = value.toLowerCase() === \"true\";\n break;\n case \"default_port\":\n config.defaultPort = parseInt(value, 10);\n break;\n case \"remote_operations\":\n config.remoteOperations = value.toLowerCase() === \"true\";\n break;\n case \"auto_commit\":\n config.autoCommit = value.toLowerCase() === \"true\";\n break;\n case \"zero_padded_ids\":\n config.zeroPaddedIds = parseInt(value, 10);\n break;\n case \"timezone_preference\":\n config.timezonePreference = value.replace(/['\"]/g, \"\");\n break;\n case \"include_date_time_in_dates\":\n config.includeDateTimeInDates = value.toLowerCase() === \"true\";\n break;\n case \"bypass_git_hooks\":\n config.bypassGitHooks = value.toLowerCase() === \"true\";\n break;\n case \"check_active_branches\":\n config.checkActiveBranches = value.toLowerCase() === \"true\";\n break;\n case \"active_branch_days\":\n config.activeBranchDays = parseInt(value, 10);\n break;\n }\n }\n // Apply defaults\n return {\n projectName: config.projectName || \"Backlog\",\n statuses: config.statuses || [...DEFAULT_STATUSES],\n labels: config.labels || [],\n milestones: config.milestones || [],\n defaultStatus: config.defaultStatus || DEFAULT_STATUSES[0],\n dateFormat: config.dateFormat || \"YYYY-MM-DD\",\n defaultAssignee: config.defaultAssignee,\n defaultReporter: config.defaultReporter,\n maxColumnWidth: config.maxColumnWidth,\n taskResolutionStrategy: config.taskResolutionStrategy,\n defaultEditor: config.defaultEditor,\n autoOpenBrowser: config.autoOpenBrowser,\n defaultPort: config.defaultPort,\n remoteOperations: config.remoteOperations,\n autoCommit: config.autoCommit,\n zeroPaddedIds: config.zeroPaddedIds,\n timezonePreference: config.timezonePreference,\n includeDateTimeInDates: config.includeDateTimeInDates,\n bypassGitHooks: config.bypassGitHooks,\n checkActiveBranches: config.checkActiveBranches,\n activeBranchDays: config.activeBranchDays,\n };\n}\n/**\n * Serialize BacklogConfig to config.yml format\n */\nexport function serializeBacklogConfig(config) {\n const lines = [];\n lines.push(`project_name: \"${config.projectName}\"`);\n if (config.defaultStatus) {\n lines.push(`default_status: \"${config.defaultStatus}\"`);\n }\n lines.push(`statuses: [${config.statuses.map((s) => `\"${s}\"`).join(\", \")}]`);\n lines.push(`labels: [${(config.labels || []).map((l) => `\"${l}\"`).join(\", \")}]`);\n lines.push(`milestones: [${(config.milestones || []).map((m) => `\"${m}\"`).join(\", \")}]`);\n if (config.dateFormat) {\n lines.push(`date_format: \"${config.dateFormat}\"`);\n }\n if (config.defaultAssignee) {\n lines.push(`default_assignee: \"${config.defaultAssignee}\"`);\n }\n if (config.defaultReporter) {\n lines.push(`default_reporter: \"${config.defaultReporter}\"`);\n }\n if (config.defaultEditor) {\n lines.push(`default_editor: \"${config.defaultEditor}\"`);\n }\n if (typeof config.autoCommit === \"boolean\") {\n lines.push(`auto_commit: ${config.autoCommit}`);\n }\n if (typeof config.zeroPaddedIds === \"number\") {\n lines.push(`zero_padded_ids: ${config.zeroPaddedIds}`);\n }\n if (typeof config.autoOpenBrowser === \"boolean\") {\n lines.push(`auto_open_browser: ${config.autoOpenBrowser}`);\n }\n if (typeof config.defaultPort === \"number\") {\n lines.push(`default_port: ${config.defaultPort}`);\n }\n if (typeof config.remoteOperations === \"boolean\") {\n lines.push(`remote_operations: ${config.remoteOperations}`);\n }\n if (typeof config.bypassGitHooks === \"boolean\") {\n lines.push(`bypass_git_hooks: ${config.bypassGitHooks}`);\n }\n if (typeof config.checkActiveBranches === \"boolean\") {\n lines.push(`check_active_branches: ${config.checkActiveBranches}`);\n }\n if (typeof config.activeBranchDays === \"number\") {\n lines.push(`active_branch_days: ${config.activeBranchDays}`);\n }\n return `${lines.join(\"\\n\")}\\n`;\n}\n//# sourceMappingURL=config-parser.js.map","/**\n * Task sorting utilities\n */\nconst PRIORITY_ORDER = {\n high: 0,\n medium: 1,\n low: 2,\n};\n/**\n * Sort tasks by: ordinal → priority → createdDate\n *\n * - Tasks with ordinal are sorted first by ordinal\n * - Then by priority (high → medium → low)\n * - Finally by createdDate (newest first)\n */\nexport function sortTasks(tasks) {\n return [...tasks].sort((a, b) => {\n // 1. Ordinal (if both have it)\n if (a.ordinal !== undefined && b.ordinal !== undefined) {\n return a.ordinal - b.ordinal;\n }\n // Tasks with ordinal come before tasks without\n if (a.ordinal !== undefined)\n return -1;\n if (b.ordinal !== undefined)\n return 1;\n // 2. Priority (high → medium → low → undefined)\n const aPri = a.priority ? PRIORITY_ORDER[a.priority] : 3;\n const bPri = b.priority ? PRIORITY_ORDER[b.priority] : 3;\n if (aPri !== bPri)\n return aPri - bPri;\n // 3. Created date (newest first)\n return b.createdDate.localeCompare(a.createdDate);\n });\n}\n/**\n * Group tasks by status\n *\n * @param tasks - Tasks to group\n * @param statuses - Ordered list of statuses (for column ordering)\n * @returns Map with status as key and sorted tasks as value\n */\nexport function groupTasksByStatus(tasks, statuses) {\n const grouped = new Map();\n // Initialize with all configured statuses (preserves column order)\n for (const status of statuses) {\n grouped.set(status, []);\n }\n // Group tasks\n for (const task of tasks) {\n const list = grouped.get(task.status);\n if (list) {\n list.push(task);\n }\n else {\n // Task has a status not in the config - add it anyway\n grouped.set(task.status, [task]);\n }\n }\n // Sort tasks within each status\n for (const [status, statusTasks] of grouped) {\n grouped.set(status, sortTasks(statusTasks));\n }\n return grouped;\n}\n//# sourceMappingURL=sorting.js.map","/**\n * Core - Main entry point for @backlog-md/core\n *\n * Provides a runtime-agnostic API for managing Backlog.md projects\n * by accepting adapter implementations for I/O operations.\n */\nimport { parseBacklogConfig, serializeBacklogConfig } from \"./config-parser\";\nimport { parseTaskMarkdown } from \"../markdown\";\nimport { sortTasks, groupTasksByStatus } from \"../utils\";\n/**\n * Core class for Backlog.md operations\n *\n * @example\n * ```typescript\n * const core = new Core({\n * projectRoot: '/path/to/project',\n * adapters: { fs: new NodeFileSystemAdapter() }\n * });\n *\n * await core.initialize();\n * const tasks = core.listTasks();\n * const grouped = core.getTasksByStatus();\n * ```\n */\nexport class Core {\n projectRoot;\n fs;\n config = null;\n tasks = new Map();\n initialized = false;\n constructor(options) {\n this.projectRoot = options.projectRoot;\n this.fs = options.adapters.fs;\n }\n /**\n * Check if projectRoot contains a valid Backlog.md project\n */\n async isBacklogProject() {\n const configPath = this.fs.join(this.projectRoot, \"backlog\", \"config.yml\");\n return this.fs.exists(configPath);\n }\n /**\n * Initialize a new Backlog.md project in the projectRoot directory\n *\n * Creates the backlog/ directory and config.yml file.\n * Task directories (tasks/, completed/) are created lazily when needed.\n *\n * @param options - Optional configuration for the new project\n * @throws Error if project already exists\n *\n * @example\n * ```typescript\n * const core = new Core({ projectRoot: '/path/to/project', adapters: { fs } });\n *\n * // Initialize with defaults\n * await core.initProject();\n *\n * // Or with custom options\n * await core.initProject({\n * projectName: 'My Project',\n * statuses: ['Backlog', 'In Progress', 'Review', 'Done'],\n * labels: ['bug', 'feature', 'docs']\n * });\n * ```\n */\n async initProject(options = {}) {\n // Check if already a backlog project\n if (await this.isBacklogProject()) {\n throw new Error(`Already a Backlog.md project: config.yml exists at ${this.fs.join(this.projectRoot, \"backlog\", \"config.yml\")}`);\n }\n // Derive project name from directory if not provided\n const dirName = this.projectRoot.split(\"/\").pop() || \"Backlog\";\n const projectName = options.projectName || dirName;\n // Build config with defaults\n const statuses = options.statuses || [\"To Do\", \"In Progress\", \"Done\"];\n const config = {\n projectName,\n statuses,\n labels: options.labels || [],\n milestones: [],\n defaultStatus: options.defaultStatus || statuses[0],\n dateFormat: \"YYYY-MM-DD\",\n };\n // Create backlog directory\n const backlogDir = this.fs.join(this.projectRoot, \"backlog\");\n await this.fs.createDir(backlogDir, { recursive: true });\n // Write config.yml\n const configPath = this.fs.join(backlogDir, \"config.yml\");\n const configContent = serializeBacklogConfig(config);\n await this.fs.writeFile(configPath, configContent);\n }\n /**\n * Initialize the Core instance\n *\n * Loads configuration and discovers all tasks.\n * Must be called before using other methods.\n */\n async initialize() {\n if (this.initialized)\n return;\n // Load config\n const configPath = this.fs.join(this.projectRoot, \"backlog\", \"config.yml\");\n const configExists = await this.fs.exists(configPath);\n if (!configExists) {\n throw new Error(`Not a Backlog.md project: config.yml not found at ${configPath}`);\n }\n const configContent = await this.fs.readFile(configPath);\n this.config = parseBacklogConfig(configContent);\n // Load tasks from tasks/ directory\n const tasksDir = this.fs.join(this.projectRoot, \"backlog\", \"tasks\");\n if (await this.fs.exists(tasksDir)) {\n await this.loadTasksFromDirectory(tasksDir, \"local\");\n }\n // Load tasks from completed/ directory\n const completedDir = this.fs.join(this.projectRoot, \"backlog\", \"completed\");\n if (await this.fs.exists(completedDir)) {\n await this.loadTasksFromDirectory(completedDir, \"completed\");\n }\n this.initialized = true;\n }\n /**\n * Get the loaded configuration\n *\n * @throws Error if not initialized\n */\n getConfig() {\n this.ensureInitialized();\n return this.config;\n }\n /**\n * List all tasks, optionally filtered\n *\n * @param filter - Optional filter criteria\n * @returns Sorted array of tasks\n */\n listTasks(filter) {\n this.ensureInitialized();\n let tasks = Array.from(this.tasks.values());\n if (filter?.status) {\n tasks = tasks.filter((t) => t.status === filter.status);\n }\n if (filter?.assignee) {\n tasks = tasks.filter((t) => t.assignee.includes(filter.assignee));\n }\n if (filter?.priority) {\n tasks = tasks.filter((t) => t.priority === filter.priority);\n }\n if (filter?.labels && filter.labels.length > 0) {\n tasks = tasks.filter((t) => filter.labels.some((label) => t.labels.includes(label)));\n }\n if (filter?.parentTaskId) {\n tasks = tasks.filter((t) => t.parentTaskId === filter.parentTaskId);\n }\n return sortTasks(tasks);\n }\n /**\n * Get tasks grouped by status\n *\n * This is the primary method for kanban-style displays.\n * Returns a Map with status as key and sorted tasks as value.\n * The Map preserves the order of statuses from config.\n */\n getTasksByStatus() {\n this.ensureInitialized();\n const tasks = Array.from(this.tasks.values());\n return groupTasksByStatus(tasks, this.config.statuses);\n }\n /**\n * Get a single task by ID\n *\n * @param id - Task ID\n * @returns Task or undefined if not found\n */\n getTask(id) {\n this.ensureInitialized();\n return this.tasks.get(id);\n }\n /**\n * Reload all tasks from disk\n *\n * Useful after external changes to task files.\n */\n async reload() {\n this.tasks.clear();\n this.initialized = false;\n await this.initialize();\n }\n // --- Private methods ---\n ensureInitialized() {\n if (!this.initialized) {\n throw new Error(\"Core not initialized. Call initialize() first.\");\n }\n }\n async loadTasksFromDirectory(dir, source) {\n const entries = await this.fs.readDir(dir);\n for (const entry of entries) {\n const fullPath = this.fs.join(dir, entry);\n // Skip directories\n if (await this.fs.isDirectory(fullPath)) {\n continue;\n }\n // Only process markdown files\n if (!entry.endsWith(\".md\")) {\n continue;\n }\n try {\n const content = await this.fs.readFile(fullPath);\n const task = parseTaskMarkdown(content, fullPath);\n // Set source based on directory\n task.source = source;\n this.tasks.set(task.id, task);\n }\n catch (error) {\n // Log but don't fail on individual task parse errors\n console.warn(`Failed to parse task file ${fullPath}:`, error);\n }\n }\n }\n}\n//# sourceMappingURL=Core.js.map","/**\n * PanelFileSystemAdapter\n *\n * Implements FileSystemAdapter interface by wrapping the panel framework's\n * file access APIs (fileTree slice and openFile action).\n */\n\nimport type { FileSystemAdapter } from '@backlog-md/core';\n\nexport interface PanelFileAccess {\n /** Function to fetch file content by path */\n fetchFile: (path: string) => Promise<string>;\n /** List of all file paths in the repository */\n filePaths: string[];\n}\n\n/**\n * FileSystemAdapter implementation for the panel framework\n *\n * This adapter wraps the panel's file access mechanisms to provide\n * a standard FileSystemAdapter interface for @backlog-md/core.\n */\nexport class PanelFileSystemAdapter implements FileSystemAdapter {\n private readonly filePaths: Set<string>;\n private readonly directories: Set<string>;\n private readonly fetchFile: (path: string) => Promise<string>;\n\n constructor(access: PanelFileAccess) {\n this.fetchFile = access.fetchFile;\n this.filePaths = new Set(access.filePaths);\n\n // Build directory set from file paths\n this.directories = new Set<string>();\n for (const filePath of access.filePaths) {\n const parts = filePath.split('/');\n // Add all parent directories\n for (let i = 1; i < parts.length; i++) {\n this.directories.add(parts.slice(0, i).join('/'));\n }\n }\n // Root directory\n this.directories.add('');\n }\n\n async exists(path: string): Promise<boolean> {\n const normalized = this.normalizePath(path);\n return this.filePaths.has(normalized) || this.directories.has(normalized);\n }\n\n async readFile(path: string): Promise<string> {\n const normalized = this.normalizePath(path);\n if (!this.filePaths.has(normalized)) {\n throw new Error(`File not found: ${path}`);\n }\n return this.fetchFile(normalized);\n }\n\n async writeFile(_path: string, _content: string): Promise<void> {\n throw new Error('Write operations not supported in panel context');\n }\n\n async deleteFile(_path: string): Promise<void> {\n throw new Error('Delete operations not supported in panel context');\n }\n\n async createDir(_path: string, _options?: { recursive?: boolean }): Promise<void> {\n throw new Error('Directory creation not supported in panel context');\n }\n\n async readDir(path: string): Promise<string[]> {\n const normalized = this.normalizePath(path);\n const prefix = normalized ? `${normalized}/` : '';\n const entries = new Set<string>();\n\n for (const filePath of this.filePaths) {\n if (filePath.startsWith(prefix)) {\n // Get the next path segment after the prefix\n const remaining = filePath.slice(prefix.length);\n const nextSlash = remaining.indexOf('/');\n const entry = nextSlash === -1 ? remaining : remaining.slice(0, nextSlash);\n if (entry) {\n entries.add(entry);\n }\n }\n }\n\n return Array.from(entries);\n }\n\n async isDirectory(path: string): Promise<boolean> {\n const normalized = this.normalizePath(path);\n return this.directories.has(normalized) && !this.filePaths.has(normalized);\n }\n\n async rename(_from: string, _to: string): Promise<void> {\n throw new Error('Rename operations not supported in panel context');\n }\n\n async stat(path: string): Promise<{ mtime: Date; isDirectory: boolean; size: number }> {\n const normalized = this.normalizePath(path);\n const isDir = await this.isDirectory(normalized);\n const exists = await this.exists(normalized);\n\n if (!exists) {\n throw new Error(`Path not found: ${path}`);\n }\n\n return {\n mtime: new Date(),\n isDirectory: isDir,\n size: 0, // Size not available from fileTree\n };\n }\n\n // Path utilities (synchronous, pure string manipulation)\n\n join(...paths: string[]): string {\n return paths\n .filter(Boolean)\n .join('/')\n .replace(/\\/+/g, '/')\n .replace(/^\\//, '');\n }\n\n dirname(path: string): string {\n const parts = path.split('/');\n parts.pop();\n return parts.join('/');\n }\n\n basename(path: string, ext?: string): string {\n const base = path.split('/').pop() || '';\n if (ext && base.endsWith(ext)) {\n return base.slice(0, -ext.length);\n }\n return base;\n }\n\n extname(path: string): string {\n const base = this.basename(path);\n const dotIndex = base.lastIndexOf('.');\n return dotIndex === -1 ? '' : base.slice(dotIndex);\n }\n\n relative(from: string, to: string): string {\n const fromParts = from.split('/').filter(Boolean);\n const toParts = to.split('/').filter(Boolean);\n\n // Find common prefix\n let commonLength = 0;\n while (\n commonLength < fromParts.length &&\n commonLength < toParts.length &&\n fromParts[commonLength] === toParts[commonLength]\n ) {\n commonLength++;\n }\n\n // Build relative path\n const upCount = fromParts.length - commonLength;\n const relativeParts = [\n ...Array(upCount).fill('..'),\n ...toParts.slice(commonLength),\n ];\n\n return relativeParts.join('/') || '.';\n }\n\n isAbsolute(path: string): boolean {\n return path.startsWith('/');\n }\n\n normalize(path: string): string {\n return this.normalizePath(path);\n }\n\n homedir(): string {\n return '';\n }\n\n // Private helpers\n\n private normalizePath(path: string): string {\n return path\n .replace(/^\\/+/, '') // Remove leading slashes\n .replace(/\\/+$/, '') // Remove trailing slashes\n .replace(/\\/+/g, '/'); // Collapse multiple slashes\n }\n}\n","import { useState, useCallback, useEffect, useRef } from 'react';\nimport { Core, type Task } from '@backlog-md/core';\nimport { PanelFileSystemAdapter } from '../../../adapters/PanelFileSystemAdapter';\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\nconst DEFAULT_STATUSES = ['To Do', 'In Progress', 'Done'];\n\n/**\n * Hook for managing kanban board data\n * Integrates with Backlog.md via @backlog-md/core\n */\nexport function useKanbanData(\n options?: UseKanbanDataOptions\n): UseKanbanDataResult {\n const { context, actions } = options || {};\n\n const [tasks, setTasks] = useState<Task[]>([]);\n const [statuses, setStatuses] = useState<string[]>(DEFAULT_STATUSES);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n const [isBacklogProject, setIsBacklogProject] = useState(false);\n const [tasksByStatus, setTasksByStatus] = useState<Map<string, Task[]>>(\n new Map()\n );\n\n // Keep track of active file fetches to avoid duplicate fetches\n const activeFilePathRef = useRef<string | null>(null);\n\n // Store stable references to context and actions\n const contextRef = useRef(context);\n const actionsRef = useRef(actions);\n\n useEffect(() => {\n contextRef.current = context;\n actionsRef.current = actions;\n }, [context, actions]);\n\n // Helper function to fetch file content\n const fetchFileContent = useCallback(async (path: string): Promise<string> => {\n const currentContext = contextRef.current;\n const currentActions = actionsRef.current;\n\n if (!currentActions || !currentContext) {\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 if (currentActions.openFile) {\n const result = await currentActions.openFile(path);\n if (typeof result === 'string') {\n return result;\n }\n } else {\n throw new Error('openFile action not available');\n }\n\n // Get the active file data from the slice\n const activeFileSlice = currentContext.getRepositorySlice('active-file');\n const fileData = activeFileSlice?.data as { content?: string };\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\n // Load Backlog.md data using Core\n const loadBacklogData = useCallback(async () => {\n if (!context || !actions) {\n console.log('[useKanbanData] No context provided');\n setIsBacklogProject(false);\n setTasks([]);\n setStatuses(DEFAULT_STATUSES);\n setTasksByStatus(new Map());\n setIsLoading(false);\n return;\n }\n\n setIsLoading(true);\n setError(null);\n\n try {\n // Get fileTree slice - FileTree uses allFiles (not files)\n const fileTreeSlice = context.getRepositorySlice('fileTree') as\n | { data?: { allFiles?: Array<{ path: string }> } }\n | undefined;\n\n if (!fileTreeSlice?.data?.allFiles) {\n console.log('[useKanbanData] FileTree not available');\n setIsBacklogProject(false);\n setTasks([]);\n setStatuses(DEFAULT_STATUSES);\n setTasksByStatus(new Map());\n return;\n }\n\n const files = fileTreeSlice.data.allFiles;\n const filePaths = files.map((f: { path: string }) => f.path);\n\n // Create FileSystemAdapter for the panel\n const fs = new PanelFileSystemAdapter({\n fetchFile: fetchFileContent,\n filePaths,\n });\n\n // Create Core instance\n const core = new Core({\n projectRoot: '',\n adapters: { fs },\n });\n\n // Check if this is a Backlog.md project\n const isProject = await core.isBacklogProject();\n if (!isProject) {\n console.log('[useKanbanData] Not a Backlog.md project');\n setIsBacklogProject(false);\n setTasks([]);\n setStatuses(DEFAULT_STATUSES);\n setTasksByStatus(new Map());\n return;\n }\n\n console.log('[useKanbanData] Loading Backlog.md data...');\n setIsBacklogProject(true);\n\n // Initialize and load data\n await core.initialize();\n\n const config = core.getConfig();\n const grouped = core.getTasksByStatus();\n const allTasks = core.listTasks();\n\n console.log(\n `[useKanbanData] Loaded ${allTasks.length} tasks with ${config.statuses.length} statuses`\n );\n\n setStatuses(config.statuses);\n setTasks(allTasks);\n setTasksByStatus(grouped);\n } catch (err) {\n console.error('[useKanbanData] Failed to load Backlog.md data:', err);\n setError(err instanceof Error ? err.message : 'Failed to load backlog data');\n setIsBacklogProject(false);\n setTasks([]);\n setStatuses(DEFAULT_STATUSES);\n setTasksByStatus(new Map());\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 // Refresh data\n const refreshData = useCallback(async () => {\n await loadBacklogData();\n }, [loadBacklogData]);\n\n // Update task status (not yet implemented)\n const updateTaskStatus = useCallback(\n async (_taskId: string, _newStatus: string) => {\n setError(null);\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-md/core';\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: '1',\n minWidth: 'min(280px, 85vw)', // Responsive width for mobile\n display: 'flex',\n flexDirection: 'column',\n gap: '12px',\n background: theme.colors.backgroundSecondary,\n borderRadius: theme.radii[2],\n padding: 'clamp(12px, 3vw, 16px)', // Responsive padding for mobile\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 WebkitOverflowScrolling: 'touch',\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 minHeight: '44px', // Minimum touch target size for mobile\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\n {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 { ExternalLink, FileText, FolderPlus, Loader2, CheckCircle2 } from 'lucide-react';\nimport { useTheme } from '@principal-ade/industry-theme';\n\ninterface EmptyStateProps {\n message?: string;\n description?: string;\n showBacklogLink?: boolean;\n onInitialize?: () => Promise<void>;\n canInitialize?: 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 onInitialize,\n canInitialize = false,\n}) => {\n const { theme } = useTheme();\n const [isInitializing, setIsInitializing] = useState(false);\n const [initError, setInitError] = useState<string | null>(null);\n const [initSuccess, setInitSuccess] = useState(false);\n\n const handleInitialize = async () => {\n if (!onInitialize) return;\n setIsInitializing(true);\n setInitError(null);\n try {\n await onInitialize();\n setInitSuccess(true);\n } catch (err) {\n setInitError(err instanceof Error ? err.message : 'Failed to initialize');\n } finally {\n setIsInitializing(false);\n }\n };\n\n return (\n <>\n {/* Keyframe animation for spinner */}\n <style>{`\n @keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n `}</style>\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 {/* Action buttons */}\n <div\n style={{\n display: 'flex',\n gap: '12px',\n flexWrap: 'wrap',\n justifyContent: 'center',\n }}\n >\n {canInitialize && onInitialize && (\n <button\n onClick={handleInitialize}\n disabled={isInitializing}\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 border: 'none',\n fontSize: theme.fontSizes[2],\n fontWeight: 500,\n cursor: isInitializing ? 'wait' : 'pointer',\n opacity: isInitializing ? 0.7 : 1,\n transition: 'opacity 0.2s',\n }}\n onMouseEnter={(e) => {\n if (!isInitializing) e.currentTarget.style.opacity = '0.9';\n }}\n onMouseLeave={(e) => {\n if (!isInitializing) e.currentTarget.style.opacity = '1';\n }}\n >\n {isInitializing ? (\n <>\n <Loader2 size={16} style={{ animation: 'spin 1s linear infinite' }} />\n <span>Initializing...</span>\n </>\n ) : (\n <>\n <FolderPlus size={16} />\n <span>Initialize Backlog.md</span>\n </>\n )}\n </button>\n )}\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: canInitialize ? 'transparent' : theme.colors.primary,\n color: canInitialize ? theme.colors.primary : '#fff',\n border: canInitialize ? `1px solid ${theme.colors.primary}` : 'none',\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 </div>\n\n {/* Success message */}\n {initSuccess && (\n <div\n style={{\n marginTop: '16px',\n padding: '16px 20px',\n backgroundColor: `${theme.colors.success || '#22c55e'}15`,\n border: `1px solid ${theme.colors.success || '#22c55e'}`,\n borderRadius: theme.radii[2],\n display: 'flex',\n alignItems: 'flex-start',\n gap: '12px',\n maxWidth: '480px',\n }}\n >\n <CheckCircle2 size={20} color={theme.colors.success || '#22c55e'} style={{ flexShrink: 0, marginTop: '2px' }} />\n <div style={{ textAlign: 'left' }}>\n <p style={{ margin: 0, fontWeight: 600, color: theme.colors.text, fontSize: theme.fontSizes[2] }}>\n Backlog.md initialized!\n </p>\n <p style={{ margin: '8px 0 0', color: theme.colors.textSecondary, fontSize: theme.fontSizes[1], lineHeight: 1.5 }}>\n Created <code style={{ padding: '2px 6px', backgroundColor: theme.colors.surface, borderRadius: '4px', fontFamily: theme.fonts.monospace, fontSize: '0.9em' }}>backlog/config.yml</code>.\n Refresh the panel or reopen the repository to see your kanban board.\n </p>\n </div>\n </div>\n )}\n\n {/* Error message */}\n {initError && (\n <div\n style={{\n marginTop: '16px',\n padding: '12px 16px',\n backgroundColor: `${theme.colors.error}15`,\n border: `1px solid ${theme.colors.error}`,\n borderRadius: theme.radii[2],\n color: theme.colors.error,\n fontSize: theme.fontSizes[1],\n }}\n >\n {initError}\n </div>\n )}\n\n {!initSuccess && <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};\n","import React, { useState, useCallback } from 'react';\nimport { Kanban, 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 { Core, type Task } from '@backlog-md/core';\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 { statuses, tasksByStatus, error, isBacklogProject, refreshData } = useKanbanData({\n context,\n actions,\n });\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 // Check if we can initialize (need file system adapter with write capability)\n const fileSystem = context.adapters?.fileSystem;\n const canInitialize = Boolean(\n fileSystem?.writeFile && fileSystem?.createDir && context.currentScope.repository?.path\n );\n\n // Initialize Backlog.md project\n const handleInitialize = useCallback(async () => {\n if (!fileSystem?.writeFile || !fileSystem?.createDir) {\n throw new Error('File system adapter not available');\n }\n\n const repoPath = context.currentScope.repository?.path;\n if (!repoPath) {\n throw new Error('Repository path not available');\n }\n\n // Create a minimal adapter for Core that wraps the panel's fileSystem\n // Only the methods used by initProject need real implementations\n const notImplemented = () => { throw new Error('Not implemented'); };\n const fsAdapter = {\n // Used by initProject\n exists: async (path: string) => {\n try {\n await fileSystem.readFile(path);\n return true;\n } catch {\n return false;\n }\n },\n writeFile: async (path: string, content: string) => { await fileSystem.writeFile(path, content); },\n createDir: async (path: string, _options?: { recursive?: boolean }) => { await fileSystem.createDir!(path); },\n join: (...paths: string[]) => paths.join('/').replace(/\\/+/g, '/'),\n // Not used by initProject - stubs\n readFile: async (path: string) => fileSystem.readFile(path) as Promise<string>,\n deleteFile: async () => notImplemented(),\n readDir: async () => [] as string[],\n isDirectory: async () => false,\n rename: async () => notImplemented(),\n stat: async () => ({ mtime: new Date(), isDirectory: false, size: 0 }),\n dirname: (path: string) => path.split('/').slice(0, -1).join('/') || '/',\n basename: (path: string) => path.split('/').pop() || '',\n extname: (path: string) => {\n const base = path.split('/').pop() || '';\n const dot = base.lastIndexOf('.');\n return dot > 0 ? base.slice(dot) : '';\n },\n relative: (_from: string, to: string) => to,\n isAbsolute: (path: string) => path.startsWith('/'),\n normalize: (path: string) => path.replace(/\\/+/g, '/'),\n homedir: () => '/',\n };\n\n const core = new Core({\n projectRoot: repoPath,\n adapters: { fs: fsAdapter },\n });\n\n // Get project name from repo\n const projectName = context.currentScope.repository?.name || 'Backlog';\n\n await core.initProject({ projectName });\n\n // Refresh to pick up the new project\n await refreshData();\n }, [fileSystem, context.currentScope.repository, refreshData]);\n\n return (\n <div\n style={{\n padding: 'clamp(12px, 3vw, 20px)', // Responsive padding for mobile\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\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n flexWrap: 'wrap',\n }}\n >\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 </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 fontSize: theme.fontSizes[1],\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 canInitialize={canInitialize}\n onInitialize={handleInitialize}\n />\n ) : (\n <div\n style={{\n flex: 1,\n display: 'flex',\n gap: '16px',\n overflowX: 'auto',\n overflowY: 'hidden',\n paddingBottom: '8px',\n WebkitOverflowScrolling: 'touch', // Smooth scrolling on iOS\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","/**\n * Kanban Panel Tools\n *\n * UTCP-compatible tools for the Kanban panel extension.\n * These tools can be invoked by AI agents and emit events that panels listen for.\n *\n * IMPORTANT: This file should NOT import any React components to ensure\n * it can be imported server-side without pulling in React dependencies.\n * Use the './tools' subpath export for server-safe imports.\n */\n\nimport type {\n PanelTool,\n PanelToolsMetadata,\n} from '@principal-ade/utcp-panel-event';\n\n/**\n * Tool: Move Task\n */\nexport const moveTaskTool: PanelTool = {\n name: 'move_task',\n description: 'Moves a task to a different status column on the kanban board',\n inputs: {\n type: 'object',\n properties: {\n taskId: {\n type: 'string',\n description: 'The ID of the task to move',\n },\n targetStatus: {\n type: 'string',\n description:\n 'The target status column (e.g., \"To Do\", \"In Progress\", \"Done\")',\n },\n },\n required: ['taskId', 'targetStatus'],\n },\n outputs: {\n type: 'object',\n properties: {\n success: { type: 'boolean' },\n message: { type: 'string' },\n },\n },\n tags: ['kanban', 'task', 'move', 'status'],\n tool_call_template: {\n call_template_type: 'panel_event',\n event_type: 'industry-theme.kanban-panel:move-task',\n },\n};\n\n/**\n * Tool: Select Task\n */\nexport const selectTaskTool: PanelTool = {\n name: 'select_task',\n description: 'Selects a task to view its details',\n inputs: {\n type: 'object',\n properties: {\n taskId: {\n type: 'string',\n description: 'The ID of the task to select',\n },\n },\n required: ['taskId'],\n },\n outputs: {\n type: 'object',\n properties: {\n success: { type: 'boolean' },\n task: { type: 'object' },\n },\n },\n tags: ['kanban', 'task', 'select', 'view'],\n tool_call_template: {\n call_template_type: 'panel_event',\n event_type: 'industry-theme.kanban-panel:select-task',\n },\n};\n\n/**\n * Tool: Refresh Board\n */\nexport const refreshBoardTool: PanelTool = {\n name: 'refresh_board',\n description: 'Refreshes the kanban board to reload tasks from the backlog',\n inputs: {\n type: 'object',\n properties: {},\n },\n outputs: {\n type: 'object',\n properties: {\n success: { type: 'boolean' },\n },\n },\n tags: ['kanban', 'board', 'refresh'],\n tool_call_template: {\n call_template_type: 'panel_event',\n event_type: 'industry-theme.kanban-panel:refresh-board',\n },\n};\n\n/**\n * Tool: Filter Tasks\n */\nexport const filterTasksTool: PanelTool = {\n name: 'filter_tasks',\n description:\n 'Filters tasks on the kanban board by labels, assignee, or priority',\n inputs: {\n type: 'object',\n properties: {\n labels: {\n type: 'array',\n items: { type: 'string' },\n description: 'Filter by task labels',\n },\n assignee: {\n type: 'string',\n description: 'Filter by assignee name',\n },\n priority: {\n type: 'string',\n description: 'Filter by priority level',\n },\n },\n },\n outputs: {\n type: 'object',\n properties: {\n success: { type: 'boolean' },\n count: { type: 'number' },\n },\n },\n tags: ['kanban', 'task', 'filter', 'search'],\n tool_call_template: {\n call_template_type: 'panel_event',\n event_type: 'industry-theme.kanban-panel:filter-tasks',\n },\n};\n\n/**\n * All tools exported as an array.\n */\nexport const kanbanPanelTools: PanelTool[] = [\n moveTaskTool,\n selectTaskTool,\n refreshBoardTool,\n filterTasksTool,\n];\n\n/**\n * Panel tools metadata for registration with PanelToolRegistry.\n */\nexport const kanbanPanelToolsMetadata: PanelToolsMetadata = {\n id: 'industry-theme.kanban-panel',\n name: 'Kanban Panel',\n description: 'Tools provided by the backlogmd kanban panel extension',\n tools: kanbanPanelTools,\n};\n","import { KanbanPanel } from './panels/KanbanPanel';\nimport type { PanelDefinition, PanelContextValue } from './types';\nimport { kanbanPanelTools, kanbanPanelToolsMetadata } from './tools';\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 tools: kanbanPanelTools,\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\n/**\n * Export tools for server-safe imports.\n * Use '@industry-theme/backlogmd-kanban-panel/tools' to import without React dependencies.\n */\nexport {\n kanbanPanelTools,\n kanbanPanelToolsMetadata,\n moveTaskTool,\n selectTaskTool,\n refreshBoardTool,\n filterTasksTool,\n} from './tools';\n"],"names":["__iconNode","theme","React","DEFAULT_STATUSES","Loader2","CheckCircle2","_a","_b","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,UAAU,EAAE,IAAI,MAAM,IAAI,MAAM,GAAG,MAAM,KAAK,UAAU;AAAA,EACzD,CAAC,QAAQ,EAAE,GAAG,iBAAiB,KAAK,SAAQ,CAAE;AAChD;AACA,MAAM,cAAc,iBAAiB,gBAAgBA,YAAU;ACb/D;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,MAAMA,eAAa;AAAA,EACjB,CAAC,QAAQ,EAAE,GAAG,aAAa,KAAK,SAAQ,CAAE;AAAA,EAC1C,CAAC,QAAQ,EAAE,GAAG,eAAe,KAAK,SAAQ,CAAE;AAAA,EAC5C,CAAC,QAAQ,EAAE,GAAG,4DAA4D,KAAK,SAAQ,CAAE;AAC3F;AACA,MAAM,eAAe,iBAAiB,iBAAiBA,YAAU;ACdjE;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,MAAMA,eAAa;AAAA,EACjB;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,KAAK;AAAA,IACX;AAAA,EACA;AAAA,EACE,CAAC,QAAQ,EAAE,GAAG,2BAA2B,KAAK,SAAQ,CAAE;AAAA,EACxD,CAAC,QAAQ,EAAE,GAAG,WAAW,KAAK,SAAQ,CAAE;AAAA,EACxC,CAAC,QAAQ,EAAE,GAAG,YAAY,KAAK,SAAQ,CAAE;AAAA,EACzC,CAAC,QAAQ,EAAE,GAAG,YAAY,KAAK,SAAQ,CAAE;AAC3C;AACA,MAAM,WAAW,iBAAiB,aAAaA,YAAU;ACtBzD;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,MAAMA,eAAa;AAAA,EACjB,CAAC,QAAQ,EAAE,GAAG,YAAY,KAAK,SAAQ,CAAE;AAAA,EACzC,CAAC,QAAQ,EAAE,GAAG,WAAW,KAAK,SAAQ,CAAE;AAAA,EACxC;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,KAAK;AAAA,IACX;AAAA,EACA;AACA;AACA,MAAM,aAAa,iBAAiB,eAAeA,YAAU;ACpB7D;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,CAAC,CAAC,QAAQ,EAAE,GAAG,+BAA+B,KAAK,SAAQ,CAAE,CAAC;AACjF,MAAM,eAAe,iBAAiB,iBAAiB,UAAU;AC+yBjE,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,kBAAkB,SAAS,UAAU;AACjD,QAAM,EAAE,aAAa,OAAO,YAAY,oBAAoB,YAAW,IAAK,qBAAqB,OAAO;AACxG,QAAM,KAAK,kBAAkB,QAAQ;AACrC,SAAO;AAAA,IACH;AAAA,IACA,OAAO,SAAS,QAAQ,EAAE;AAAA,IAC1B,QAAQ,YAAY,UAAU;AAAA,IAC9B,UAAU,YAAY;AAAA,IACtB,UAAU,YAAY,YAAY,CAAA;AAAA,IAClC,UAAU,YAAY;AAAA,IACtB,aAAa,YAAY,gBAAe,oBAAI,KAAI,GAAG,YAAW,EAAG,MAAM,GAAG,EAAE,CAAC;AAAA,IAC7E,aAAa,YAAY;AAAA,IACzB,QAAQ,YAAY,UAAU,CAAA;AAAA,IAC9B,WAAW,YAAY;AAAA,IACvB,cAAc,YAAY,gBAAgB,CAAA;AAAA,IAC1C,cAAc,YAAY;AAAA,IAC1B,UAAU,YAAY;AAAA,IACtB,QAAQ,YAAY;AAAA,IACpB,SAAS,YAAY;AAAA,IACrB;AAAA,IACA;AAAA,IACA,yBAAyB;AAAA,IACzB;AAAA,EACR;AACA;AAqFA,SAAS,qBAAqB,SAAS;AACnC,MAAI,cAAc,CAAA;AAClB,MAAI,YAAY;AAEhB,QAAM,mBAAmB,QAAQ,MAAM,yBAAyB;AAChE,MAAI,kBAAkB;AAClB,kBAAc,iBAAiB,iBAAiB,CAAC,CAAC;AAClD,gBAAY,QAAQ,MAAM,iBAAiB,CAAC,EAAE,MAAM;AAAA,EACxD;AAEA,MAAI,QAAQ;AACZ,QAAM,aAAa,UAAU,MAAM,aAAa;AAChD,MAAI,YAAY;AACZ,YAAQ,WAAW,CAAC,EAAE,KAAI;AAAA,EAC9B;AAEA,QAAM,qBAAqB,wBAAwB,SAAS;AAE5D,QAAM,aAAa,UAAU,KAAI;AAEjC,QAAM,cAAc,mBAAmB,WAAW,KAAK;AACvD,SAAO,EAAE,aAAa,OAAO,YAAY,aAAa,mBAAkB;AAC5E;AACA,SAAS,iBAAiB,KAAK;AAC3B,QAAM,SAAS,CAAA;AACf,aAAW,QAAQ,IAAI,MAAM,IAAI,GAAG;AAChC,UAAM,QAAQ,KAAK,MAAM,iBAAiB;AAC1C,QAAI,CAAC;AACD;AACJ,UAAM,CAAA,EAAG,KAAK,KAAK,IAAI;AACvB,YAAQ,KAAG;AAAA,MACP,KAAK;AACD,eAAO,SAAS,MAAM,KAAI;AAC1B;AAAA,MACJ,KAAK;AACD,eAAO,WAAW,MAAM,KAAI;AAC5B;AAAA,MACJ,KAAK;AACD,eAAO,UAAU,SAAS,MAAM,KAAI,GAAI,EAAE;AAC1C;AAAA,MACJ,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACD,eAAO,GAAG,IAAI,MAAM,KAAI;AACxB;AAAA,MACJ,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACD,eAAO,GAAG,IAAI,gBAAgB,KAAK;AACnC;AAAA,IAChB;AAAA,EACI;AACA,SAAO;AACX;AACA,SAAS,gBAAgB,OAAO;AAE5B,QAAM,UAAU,MAAM,QAAQ,YAAY,EAAE,EAAE,KAAI;AAClD,MAAI,CAAC;AACD,WAAO,CAAA;AACX,SAAO,QACF,MAAM,GAAG,EACT,IAAI,CAAC,MAAM,EAAE,KAAI,CAAE,EACnB,OAAO,OAAO;AACvB;AACA,SAAS,wBAAwB,SAAS;AACtC,QAAM,WAAW,CAAA;AAEjB,QAAM,kBAAkB;AACxB,MAAI;AACJ,MAAI,QAAQ;AACZ,UAAQ,QAAQ,gBAAgB,KAAK,OAAO,OAAO,MAAM;AACrD,aAAS,KAAK;AAAA,MACV,OAAO;AAAA,MACP,SAAS,MAAM,CAAC,EAAE,YAAW,MAAO;AAAA,MACpC,MAAM,MAAM,CAAC,EAAE,KAAI;AAAA,IAC/B,CAAS;AAAA,EACL;AACA,SAAO;AACX;AACA,SAAS,mBAAmB,SAAS,OAAO;AACxC,MAAI,OAAO;AAEX,MAAI,OAAO;AACP,WAAO,KAAK,QAAQ,IAAI,OAAO,SAAS,YAAY,KAAK,CAAC,SAAS,GAAG,GAAG,EAAE;AAAA,EAC/E;AAEA,SAAO,KAAK,QAAQ,gDAAgD,EAAE;AACtE,SAAO,KAAK,QAAQ,gDAAgD,EAAE;AACtE,SAAO,KAAK,QAAQ,iDAAiD,EAAE;AACvE,SAAO,KAAK,KAAI;AACpB;AACA,SAAS,kBAAkB,UAAU;AAEjC,QAAM,WAAW,SAAS,MAAM,GAAG,EAAE,IAAG,KAAM;AAC9C,QAAM,QAAQ,SAAS,MAAM,gCAAgC;AAC7D,MAAI,OAAO;AACP,WAAO,MAAM,CAAC;AAAA,EAClB;AAEA,SAAO,SAAS,QAAQ,SAAS,EAAE;AACvC;AACA,SAAS,YAAY,KAAK;AACtB,SAAO,IAAI,QAAQ,uBAAuB,MAAM;AACpD;AC9NA,MAAMC,qBAAmB,CAAC,SAAS,eAAe,MAAM;AAIjD,SAAS,mBAAmB,SAAS;AACxC,QAAM,SAAS,CAAA;AACf,QAAM,QAAQ,QAAQ,MAAM,IAAI;AAChC,aAAW,QAAQ,OAAO;AACtB,UAAM,UAAU,KAAK,KAAI;AACzB,QAAI,CAAC,WAAW,QAAQ,WAAW,GAAG;AAClC;AACJ,UAAM,aAAa,QAAQ,QAAQ,GAAG;AACtC,QAAI,eAAe;AACf;AACJ,UAAM,MAAM,QAAQ,UAAU,GAAG,UAAU,EAAE,KAAI;AACjD,UAAM,QAAQ,QAAQ,UAAU,aAAa,CAAC,EAAE,KAAI;AACpD,YAAQ,KAAG;AAAA,MACP,KAAK;AACD,eAAO,cAAc,MAAM,QAAQ,SAAS,EAAE;AAC9C;AAAA,MACJ,KAAK;AACD,eAAO,kBAAkB,MAAM,QAAQ,SAAS,EAAE;AAClD;AAAA,MACJ,KAAK;AACD,eAAO,kBAAkB,MAAM,QAAQ,SAAS,EAAE;AAClD;AAAA,MACJ,KAAK;AACD,eAAO,gBAAgB,MAAM,QAAQ,SAAS,EAAE;AAChD;AAAA,MACJ,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACD,YAAI,MAAM,WAAW,GAAG,KAAK,MAAM,SAAS,GAAG,GAAG;AAC9C,gBAAM,eAAe,MAAM,MAAM,GAAG,EAAE;AACtC,iBAAO,GAAG,IAAI,aACT,MAAM,GAAG,EACT,IAAI,CAAC,SAAS,KAAK,KAAI,EAAG,QAAQ,SAAS,EAAE,CAAC,EAC9C,OAAO,OAAO;AAAA,QACvB;AACA;AAAA,MACJ,KAAK;AACD,eAAO,aAAa,MAAM,QAAQ,SAAS,EAAE;AAC7C;AAAA,MACJ,KAAK;AACD,eAAO,iBAAiB,SAAS,OAAO,EAAE;AAC1C;AAAA,MACJ,KAAK;AACD,eAAO,yBAAyB,MAAM,QAAQ,SAAS,EAAE;AACzD;AAAA,MACJ,KAAK;AACD,eAAO,gBAAgB,MAAM,QAAQ,SAAS,EAAE;AAChD;AAAA,MACJ,KAAK;AACD,eAAO,kBAAkB,MAAM,YAAW,MAAO;AACjD;AAAA,MACJ,KAAK;AACD,eAAO,cAAc,SAAS,OAAO,EAAE;AACvC;AAAA,MACJ,KAAK;AACD,eAAO,mBAAmB,MAAM,YAAW,MAAO;AAClD;AAAA,MACJ,KAAK;AACD,eAAO,aAAa,MAAM,YAAW,MAAO;AAC5C;AAAA,MACJ,KAAK;AACD,eAAO,gBAAgB,SAAS,OAAO,EAAE;AACzC;AAAA,MACJ,KAAK;AACD,eAAO,qBAAqB,MAAM,QAAQ,SAAS,EAAE;AACrD;AAAA,MACJ,KAAK;AACD,eAAO,yBAAyB,MAAM,YAAW,MAAO;AACxD;AAAA,MACJ,KAAK;AACD,eAAO,iBAAiB,MAAM,YAAW,MAAO;AAChD;AAAA,MACJ,KAAK;AACD,eAAO,sBAAsB,MAAM,YAAW,MAAO;AACrD;AAAA,MACJ,KAAK;AACD,eAAO,mBAAmB,SAAS,OAAO,EAAE;AAC5C;AAAA,IAChB;AAAA,EACI;AAEA,SAAO;AAAA,IACH,aAAa,OAAO,eAAe;AAAA,IACnC,UAAU,OAAO,YAAY,CAAC,GAAGA,kBAAgB;AAAA,IACjD,QAAQ,OAAO,UAAU,CAAA;AAAA,IACzB,YAAY,OAAO,cAAc,CAAA;AAAA,IACjC,eAAe,OAAO,iBAAiBA,mBAAiB,CAAC;AAAA,IACzD,YAAY,OAAO,cAAc;AAAA,IACjC,iBAAiB,OAAO;AAAA,IACxB,iBAAiB,OAAO;AAAA,IACxB,gBAAgB,OAAO;AAAA,IACvB,wBAAwB,OAAO;AAAA,IAC/B,eAAe,OAAO;AAAA,IACtB,iBAAiB,OAAO;AAAA,IACxB,aAAa,OAAO;AAAA,IACpB,kBAAkB,OAAO;AAAA,IACzB,YAAY,OAAO;AAAA,IACnB,eAAe,OAAO;AAAA,IACtB,oBAAoB,OAAO;AAAA,IAC3B,wBAAwB,OAAO;AAAA,IAC/B,gBAAgB,OAAO;AAAA,IACvB,qBAAqB,OAAO;AAAA,IAC5B,kBAAkB,OAAO;AAAA,EACjC;AACA;AAIO,SAAS,uBAAuB,QAAQ;AAC3C,QAAM,QAAQ,CAAA;AACd,QAAM,KAAK,kBAAkB,OAAO,WAAW,GAAG;AAClD,MAAI,OAAO,eAAe;AACtB,UAAM,KAAK,oBAAoB,OAAO,aAAa,GAAG;AAAA,EAC1D;AACA,QAAM,KAAK,cAAc,OAAO,SAAS,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,KAAK,IAAI,CAAC,GAAG;AAC3E,QAAM,KAAK,aAAa,OAAO,UAAU,CAAA,GAAI,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,KAAK,IAAI,CAAC,GAAG;AAC/E,QAAM,KAAK,iBAAiB,OAAO,cAAc,CAAA,GAAI,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,KAAK,IAAI,CAAC,GAAG;AACvF,MAAI,OAAO,YAAY;AACnB,UAAM,KAAK,iBAAiB,OAAO,UAAU,GAAG;AAAA,EACpD;AACA,MAAI,OAAO,iBAAiB;AACxB,UAAM,KAAK,sBAAsB,OAAO,eAAe,GAAG;AAAA,EAC9D;AACA,MAAI,OAAO,iBAAiB;AACxB,UAAM,KAAK,sBAAsB,OAAO,eAAe,GAAG;AAAA,EAC9D;AACA,MAAI,OAAO,eAAe;AACtB,UAAM,KAAK,oBAAoB,OAAO,aAAa,GAAG;AAAA,EAC1D;AACA,MAAI,OAAO,OAAO,eAAe,WAAW;AACxC,UAAM,KAAK,gBAAgB,OAAO,UAAU,EAAE;AAAA,EAClD;AACA,MAAI,OAAO,OAAO,kBAAkB,UAAU;AAC1C,UAAM,KAAK,oBAAoB,OAAO,aAAa,EAAE;AAAA,EACzD;AACA,MAAI,OAAO,OAAO,oBAAoB,WAAW;AAC7C,UAAM,KAAK,sBAAsB,OAAO,eAAe,EAAE;AAAA,EAC7D;AACA,MAAI,OAAO,OAAO,gBAAgB,UAAU;AACxC,UAAM,KAAK,iBAAiB,OAAO,WAAW,EAAE;AAAA,EACpD;AACA,MAAI,OAAO,OAAO,qBAAqB,WAAW;AAC9C,UAAM,KAAK,sBAAsB,OAAO,gBAAgB,EAAE;AAAA,EAC9D;AACA,MAAI,OAAO,OAAO,mBAAmB,WAAW;AAC5C,UAAM,KAAK,qBAAqB,OAAO,cAAc,EAAE;AAAA,EAC3D;AACA,MAAI,OAAO,OAAO,wBAAwB,WAAW;AACjD,UAAM,KAAK,0BAA0B,OAAO,mBAAmB,EAAE;AAAA,EACrE;AACA,MAAI,OAAO,OAAO,qBAAqB,UAAU;AAC7C,UAAM,KAAK,uBAAuB,OAAO,gBAAgB,EAAE;AAAA,EAC/D;AACA,SAAO,GAAG,MAAM,KAAK,IAAI,CAAC;AAAA;AAC9B;ACjKA,MAAM,iBAAiB;AAAA,EACnB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,KAAK;AACT;AAQO,SAAS,UAAU,OAAO;AAC7B,SAAO,CAAC,GAAG,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM;AAE7B,QAAI,EAAE,YAAY,UAAa,EAAE,YAAY,QAAW;AACpD,aAAO,EAAE,UAAU,EAAE;AAAA,IACzB;AAEA,QAAI,EAAE,YAAY;AACd,aAAO;AACX,QAAI,EAAE,YAAY;AACd,aAAO;AAEX,UAAM,OAAO,EAAE,WAAW,eAAe,EAAE,QAAQ,IAAI;AACvD,UAAM,OAAO,EAAE,WAAW,eAAe,EAAE,QAAQ,IAAI;AACvD,QAAI,SAAS;AACT,aAAO,OAAO;AAElB,WAAO,EAAE,YAAY,cAAc,EAAE,WAAW;AAAA,EACpD,CAAC;AACL;AAQO,SAAS,mBAAmB,OAAO,UAAU;AAChD,QAAM,UAAU,oBAAI,IAAG;AAEvB,aAAW,UAAU,UAAU;AAC3B,YAAQ,IAAI,QAAQ,EAAE;AAAA,EAC1B;AAEA,aAAW,QAAQ,OAAO;AACtB,UAAM,OAAO,QAAQ,IAAI,KAAK,MAAM;AACpC,QAAI,MAAM;AACN,WAAK,KAAK,IAAI;AAAA,IAClB,OACK;AAED,cAAQ,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC;AAAA,IACnC;AAAA,EACJ;AAEA,aAAW,CAAC,QAAQ,WAAW,KAAK,SAAS;AACzC,YAAQ,IAAI,QAAQ,UAAU,WAAW,CAAC;AAAA,EAC9C;AACA,SAAO;AACX;ACxCO,MAAM,KAAK;AAAA,EAMd,YAAY,SAAS;AALrB;AACA;AACA,kCAAS;AACT,iCAAQ,oBAAI,IAAG;AACf,uCAAc;AAEV,SAAK,cAAc,QAAQ;AAC3B,SAAK,KAAK,QAAQ,SAAS;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA,EAIA,MAAM,mBAAmB;AACrB,UAAM,aAAa,KAAK,GAAG,KAAK,KAAK,aAAa,WAAW,YAAY;AACzE,WAAO,KAAK,GAAG,OAAO,UAAU;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAyBA,MAAM,YAAY,UAAU,IAAI;AAE5B,QAAI,MAAM,KAAK,oBAAoB;AAC/B,YAAM,IAAI,MAAM,sDAAsD,KAAK,GAAG,KAAK,KAAK,aAAa,WAAW,YAAY,CAAC,EAAE;AAAA,IACnI;AAEA,UAAM,UAAU,KAAK,YAAY,MAAM,GAAG,EAAE,IAAG,KAAM;AACrD,UAAM,cAAc,QAAQ,eAAe;AAE3C,UAAM,WAAW,QAAQ,YAAY,CAAC,SAAS,eAAe,MAAM;AACpE,UAAM,SAAS;AAAA,MACX;AAAA,MACA;AAAA,MACA,QAAQ,QAAQ,UAAU,CAAA;AAAA,MAC1B,YAAY,CAAA;AAAA,MACZ,eAAe,QAAQ,iBAAiB,SAAS,CAAC;AAAA,MAClD,YAAY;AAAA,IACxB;AAEQ,UAAM,aAAa,KAAK,GAAG,KAAK,KAAK,aAAa,SAAS;AAC3D,UAAM,KAAK,GAAG,UAAU,YAAY,EAAE,WAAW,MAAM;AAEvD,UAAM,aAAa,KAAK,GAAG,KAAK,YAAY,YAAY;AACxD,UAAM,gBAAgB,uBAAuB,MAAM;AACnD,UAAM,KAAK,GAAG,UAAU,YAAY,aAAa;AAAA,EACrD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,aAAa;AACf,QAAI,KAAK;AACL;AAEJ,UAAM,aAAa,KAAK,GAAG,KAAK,KAAK,aAAa,WAAW,YAAY;AACzE,UAAM,eAAe,MAAM,KAAK,GAAG,OAAO,UAAU;AACpD,QAAI,CAAC,cAAc;AACf,YAAM,IAAI,MAAM,qDAAqD,UAAU,EAAE;AAAA,IACrF;AACA,UAAM,gBAAgB,MAAM,KAAK,GAAG,SAAS,UAAU;AACvD,SAAK,SAAS,mBAAmB,aAAa;AAE9C,UAAM,WAAW,KAAK,GAAG,KAAK,KAAK,aAAa,WAAW,OAAO;AAClE,QAAI,MAAM,KAAK,GAAG,OAAO,QAAQ,GAAG;AAChC,YAAM,KAAK,uBAAuB,UAAU,OAAO;AAAA,IACvD;AAEA,UAAM,eAAe,KAAK,GAAG,KAAK,KAAK,aAAa,WAAW,WAAW;AAC1E,QAAI,MAAM,KAAK,GAAG,OAAO,YAAY,GAAG;AACpC,YAAM,KAAK,uBAAuB,cAAc,WAAW;AAAA,IAC/D;AACA,SAAK,cAAc;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,YAAY;AACR,SAAK,kBAAiB;AACtB,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,UAAU,QAAQ;AACd,SAAK,kBAAiB;AACtB,QAAI,QAAQ,MAAM,KAAK,KAAK,MAAM,QAAQ;AAC1C,QAAI,iCAAQ,QAAQ;AAChB,cAAQ,MAAM,OAAO,CAAC,MAAM,EAAE,WAAW,OAAO,MAAM;AAAA,IAC1D;AACA,QAAI,iCAAQ,UAAU;AAClB,cAAQ,MAAM,OAAO,CAAC,MAAM,EAAE,SAAS,SAAS,OAAO,QAAQ,CAAC;AAAA,IACpE;AACA,QAAI,iCAAQ,UAAU;AAClB,cAAQ,MAAM,OAAO,CAAC,MAAM,EAAE,aAAa,OAAO,QAAQ;AAAA,IAC9D;AACA,SAAI,iCAAQ,WAAU,OAAO,OAAO,SAAS,GAAG;AAC5C,cAAQ,MAAM,OAAO,CAAC,MAAM,OAAO,OAAO,KAAK,CAAC,UAAU,EAAE,OAAO,SAAS,KAAK,CAAC,CAAC;AAAA,IACvF;AACA,QAAI,iCAAQ,cAAc;AACtB,cAAQ,MAAM,OAAO,CAAC,MAAM,EAAE,iBAAiB,OAAO,YAAY;AAAA,IACtE;AACA,WAAO,UAAU,KAAK;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,mBAAmB;AACf,SAAK,kBAAiB;AACtB,UAAM,QAAQ,MAAM,KAAK,KAAK,MAAM,QAAQ;AAC5C,WAAO,mBAAmB,OAAO,KAAK,OAAO,QAAQ;AAAA,EACzD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,QAAQ,IAAI;AACR,SAAK,kBAAiB;AACtB,WAAO,KAAK,MAAM,IAAI,EAAE;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,SAAS;AACX,SAAK,MAAM,MAAK;AAChB,SAAK,cAAc;AACnB,UAAM,KAAK,WAAU;AAAA,EACzB;AAAA;AAAA,EAEA,oBAAoB;AAChB,QAAI,CAAC,KAAK,aAAa;AACnB,YAAM,IAAI,MAAM,gDAAgD;AAAA,IACpE;AAAA,EACJ;AAAA,EACA,MAAM,uBAAuB,KAAK,QAAQ;AACtC,UAAM,UAAU,MAAM,KAAK,GAAG,QAAQ,GAAG;AACzC,eAAW,SAAS,SAAS;AACzB,YAAM,WAAW,KAAK,GAAG,KAAK,KAAK,KAAK;AAExC,UAAI,MAAM,KAAK,GAAG,YAAY,QAAQ,GAAG;AACrC;AAAA,MACJ;AAEA,UAAI,CAAC,MAAM,SAAS,KAAK,GAAG;AACxB;AAAA,MACJ;AACA,UAAI;AACA,cAAM,UAAU,MAAM,KAAK,GAAG,SAAS,QAAQ;AAC/C,cAAM,OAAO,kBAAkB,SAAS,QAAQ;AAEhD,aAAK,SAAS;AACd,aAAK,MAAM,IAAI,KAAK,IAAI,IAAI;AAAA,MAChC,SACO,OAAO;AAEV,gBAAQ,KAAK,6BAA6B,QAAQ,KAAK,KAAK;AAAA,MAChE;AAAA,IACJ;AAAA,EACJ;AACJ;ACpMO,MAAM,uBAAoD;AAAA,EAK/D,YAAY,QAAyB;AACnC,SAAK,YAAY,OAAO;AACxB,SAAK,YAAY,IAAI,IAAI,OAAO,SAAS;AAGzC,SAAK,kCAAkB,IAAA;AACvB,eAAW,YAAY,OAAO,WAAW;AACvC,YAAM,QAAQ,SAAS,MAAM,GAAG;AAEhC,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,aAAK,YAAY,IAAI,MAAM,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC;AAAA,MAClD;AAAA,IACF;AAEA,SAAK,YAAY,IAAI,EAAE;AAAA,EACzB;AAAA,EAEA,MAAM,OAAO,MAAgC;AAC3C,UAAM,aAAa,KAAK,cAAc,IAAI;AAC1C,WAAO,KAAK,UAAU,IAAI,UAAU,KAAK,KAAK,YAAY,IAAI,UAAU;AAAA,EAC1E;AAAA,EAEA,MAAM,SAAS,MAA+B;AAC5C,UAAM,aAAa,KAAK,cAAc,IAAI;AAC1C,QAAI,CAAC,KAAK,UAAU,IAAI,UAAU,GAAG;AACnC,YAAM,IAAI,MAAM,mBAAmB,IAAI,EAAE;AAAA,IAC3C;AACA,WAAO,KAAK,UAAU,UAAU;AAAA,EAClC;AAAA,EAEA,MAAM,UAAU,OAAe,UAAiC;AAC9D,UAAM,IAAI,MAAM,iDAAiD;AAAA,EACnE;AAAA,EAEA,MAAM,WAAW,OAA8B;AAC7C,UAAM,IAAI,MAAM,kDAAkD;AAAA,EACpE;AAAA,EAEA,MAAM,UAAU,OAAe,UAAmD;AAChF,UAAM,IAAI,MAAM,mDAAmD;AAAA,EACrE;AAAA,EAEA,MAAM,QAAQ,MAAiC;AAC7C,UAAM,aAAa,KAAK,cAAc,IAAI;AAC1C,UAAM,SAAS,aAAa,GAAG,UAAU,MAAM;AAC/C,UAAM,8BAAc,IAAA;AAEpB,eAAW,YAAY,KAAK,WAAW;AACrC,UAAI,SAAS,WAAW,MAAM,GAAG;AAE/B,cAAM,YAAY,SAAS,MAAM,OAAO,MAAM;AAC9C,cAAM,YAAY,UAAU,QAAQ,GAAG;AACvC,cAAM,QAAQ,cAAc,KAAK,YAAY,UAAU,MAAM,GAAG,SAAS;AACzE,YAAI,OAAO;AACT,kBAAQ,IAAI,KAAK;AAAA,QACnB;AAAA,MACF;AAAA,IACF;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,EAC3B;AAAA,EAEA,MAAM,YAAY,MAAgC;AAChD,UAAM,aAAa,KAAK,cAAc,IAAI;AAC1C,WAAO,KAAK,YAAY,IAAI,UAAU,KAAK,CAAC,KAAK,UAAU,IAAI,UAAU;AAAA,EAC3E;AAAA,EAEA,MAAM,OAAO,OAAe,KAA4B;AACtD,UAAM,IAAI,MAAM,kDAAkD;AAAA,EACpE;AAAA,EAEA,MAAM,KAAK,MAA4E;AACrF,UAAM,aAAa,KAAK,cAAc,IAAI;AAC1C,UAAM,QAAQ,MAAM,KAAK,YAAY,UAAU;AAC/C,UAAM,SAAS,MAAM,KAAK,OAAO,UAAU;AAE3C,QAAI,CAAC,QAAQ;AACX,YAAM,IAAI,MAAM,mBAAmB,IAAI,EAAE;AAAA,IAC3C;AAEA,WAAO;AAAA,MACL,2BAAW,KAAA;AAAA,MACX,aAAa;AAAA,MACb,MAAM;AAAA;AAAA,IAAA;AAAA,EAEV;AAAA;AAAA,EAIA,QAAQ,OAAyB;AAC/B,WAAO,MACJ,OAAO,OAAO,EACd,KAAK,GAAG,EACR,QAAQ,QAAQ,GAAG,EACnB,QAAQ,OAAO,EAAE;AAAA,EACtB;AAAA,EAEA,QAAQ,MAAsB;AAC5B,UAAM,QAAQ,KAAK,MAAM,GAAG;AAC5B,UAAM,IAAA;AACN,WAAO,MAAM,KAAK,GAAG;AAAA,EACvB;AAAA,EAEA,SAAS,MAAc,KAAsB;AAC3C,UAAM,OAAO,KAAK,MAAM,GAAG,EAAE,SAAS;AACtC,QAAI,OAAO,KAAK,SAAS,GAAG,GAAG;AAC7B,aAAO,KAAK,MAAM,GAAG,CAAC,IAAI,MAAM;AAAA,IAClC;AACA,WAAO;AAAA,EACT;AAAA,EAEA,QAAQ,MAAsB;AAC5B,UAAM,OAAO,KAAK,SAAS,IAAI;AAC/B,UAAM,WAAW,KAAK,YAAY,GAAG;AACrC,WAAO,aAAa,KAAK,KAAK,KAAK,MAAM,QAAQ;AAAA,EACnD;AAAA,EAEA,SAAS,MAAc,IAAoB;AACzC,UAAM,YAAY,KAAK,MAAM,GAAG,EAAE,OAAO,OAAO;AAChD,UAAM,UAAU,GAAG,MAAM,GAAG,EAAE,OAAO,OAAO;AAG5C,QAAI,eAAe;AACnB,WACE,eAAe,UAAU,UACzB,eAAe,QAAQ,UACvB,UAAU,YAAY,MAAM,QAAQ,YAAY,GAChD;AACA;AAAA,IACF;AAGA,UAAM,UAAU,UAAU,SAAS;AACnC,UAAM,gBAAgB;AAAA,MACpB,GAAG,MAAM,OAAO,EAAE,KAAK,IAAI;AAAA,MAC3B,GAAG,QAAQ,MAAM,YAAY;AAAA,IAAA;AAG/B,WAAO,cAAc,KAAK,GAAG,KAAK;AAAA,EACpC;AAAA,EAEA,WAAW,MAAuB;AAChC,WAAO,KAAK,WAAW,GAAG;AAAA,EAC5B;AAAA,EAEA,UAAU,MAAsB;AAC9B,WAAO,KAAK,cAAc,IAAI;AAAA,EAChC;AAAA,EAEA,UAAkB;AAChB,WAAO;AAAA,EACT;AAAA;AAAA,EAIQ,cAAc,MAAsB;AAC1C,WAAO,KACJ,QAAQ,QAAQ,EAAE,EAClB,QAAQ,QAAQ,EAAE,EAClB,QAAQ,QAAQ,GAAG;AAAA,EACxB;AACF;ACvKA,MAAM,mBAAmB,CAAC,SAAS,eAAe,MAAM;AAMjD,SAAS,cACd,SACqB;AACrB,QAAM,EAAE,SAAS,QAAA,IAAY,WAAW,CAAA;AAExC,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAiB,CAAA,CAAE;AAC7C,QAAM,CAAC,UAAU,WAAW,IAAI,SAAmB,gBAAgB;AACnE,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,IAAI;AAC/C,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAwB,IAAI;AACtD,QAAM,CAAC,kBAAkB,mBAAmB,IAAI,SAAS,KAAK;AAC9D,QAAM,CAAC,eAAe,gBAAgB,IAAI;AAAA,wBACpC,IAAA;AAAA,EAAI;AAIV,QAAM,oBAAoB,OAAsB,IAAI;AAGpD,QAAM,aAAa,OAAO,OAAO;AACjC,QAAM,aAAa,OAAO,OAAO;AAEjC,YAAU,MAAM;AACd,eAAW,UAAU;AACrB,eAAW,UAAU;AAAA,EACvB,GAAG,CAAC,SAAS,OAAO,CAAC;AAGrB,QAAM,mBAAmB,YAAY,OAAO,SAAkC;AAC5E,UAAM,iBAAiB,WAAW;AAClC,UAAM,iBAAiB,WAAW;AAElC,QAAI,CAAC,kBAAkB,CAAC,gBAAgB;AACtC,YAAM,IAAI,MAAM,4BAA4B;AAAA,IAC9C;AAGA,QAAI,kBAAkB,YAAY,MAAM;AACtC,YAAM,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,GAAG,CAAC;AAAA,IACzD;AAEA,sBAAkB,UAAU;AAE5B,QAAI;AACF,UAAI,eAAe,UAAU;AAC3B,cAAM,SAAS,MAAM,eAAe,SAAS,IAAI;AACjD,YAAI,OAAO,WAAW,UAAU;AAC9B,iBAAO;AAAA,QACT;AAAA,MACF,OAAO;AACL,cAAM,IAAI,MAAM,+BAA+B;AAAA,MACjD;AAGA,YAAM,kBAAkB,eAAe,mBAAmB,aAAa;AACvE,YAAM,WAAW,mDAAiB;AAElC,UAAI,EAAC,qCAAU,UAAS;AACtB,cAAM,IAAI,MAAM,+BAA+B,IAAI,EAAE;AAAA,MACvD;AAEA,aAAO,SAAS;AAAA,IAClB,UAAA;AACE,wBAAkB,UAAU;AAAA,IAC9B;AAAA,EACF,GAAG,CAAA,CAAE;AAGL,QAAM,kBAAkB,YAAY,YAAY;;AAC9C,QAAI,CAAC,WAAW,CAAC,SAAS;AACxB,cAAQ,IAAI,qCAAqC;AACjD,0BAAoB,KAAK;AACzB,eAAS,CAAA,CAAE;AACX,kBAAY,gBAAgB;AAC5B,uBAAiB,oBAAI,KAAK;AAC1B,mBAAa,KAAK;AAClB;AAAA,IACF;AAEA,iBAAa,IAAI;AACjB,aAAS,IAAI;AAEb,QAAI;AAEF,YAAM,gBAAgB,QAAQ,mBAAmB,UAAU;AAI3D,UAAI,GAAC,oDAAe,SAAf,mBAAqB,WAAU;AAClC,gBAAQ,IAAI,wCAAwC;AACpD,4BAAoB,KAAK;AACzB,iBAAS,CAAA,CAAE;AACX,oBAAY,gBAAgB;AAC5B,yBAAiB,oBAAI,KAAK;AAC1B;AAAA,MACF;AAEA,YAAM,QAAQ,cAAc,KAAK;AACjC,YAAM,YAAY,MAAM,IAAI,CAAC,MAAwB,EAAE,IAAI;AAG3D,YAAM,KAAK,IAAI,uBAAuB;AAAA,QACpC,WAAW;AAAA,QACX;AAAA,MAAA,CACD;AAGD,YAAM,OAAO,IAAI,KAAK;AAAA,QACpB,aAAa;AAAA,QACb,UAAU,EAAE,GAAA;AAAA,MAAG,CAChB;AAGD,YAAM,YAAY,MAAM,KAAK,iBAAA;AAC7B,UAAI,CAAC,WAAW;AACd,gBAAQ,IAAI,0CAA0C;AACtD,4BAAoB,KAAK;AACzB,iBAAS,CAAA,CAAE;AACX,oBAAY,gBAAgB;AAC5B,yBAAiB,oBAAI,KAAK;AAC1B;AAAA,MACF;AAEA,cAAQ,IAAI,4CAA4C;AACxD,0BAAoB,IAAI;AAGxB,YAAM,KAAK,WAAA;AAEX,YAAM,SAAS,KAAK,UAAA;AACpB,YAAM,UAAU,KAAK,iBAAA;AACrB,YAAM,WAAW,KAAK,UAAA;AAEtB,cAAQ;AAAA,QACN,0BAA0B,SAAS,MAAM,eAAe,OAAO,SAAS,MAAM;AAAA,MAAA;AAGhF,kBAAY,OAAO,QAAQ;AAC3B,eAAS,QAAQ;AACjB,uBAAiB,OAAO;AAAA,IAC1B,SAAS,KAAK;AACZ,cAAQ,MAAM,mDAAmD,GAAG;AACpE,eAAS,eAAe,QAAQ,IAAI,UAAU,6BAA6B;AAC3E,0BAAoB,KAAK;AACzB,eAAS,CAAA,CAAE;AACX,kBAAY,gBAAgB;AAC5B,uBAAiB,oBAAI,KAAK;AAAA,IAC5B,UAAA;AACE,mBAAa,KAAK;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,SAAS,SAAS,gBAAgB,CAAC;AAGvC,YAAU,MAAM;AACd,oBAAA;AAAA,EACF,GAAG,CAAC,eAAe,CAAC;AAGpB,QAAM,cAAc,YAAY,YAAY;AAC1C,UAAM,gBAAA;AAAA,EACR,GAAG,CAAC,eAAe,CAAC;AAGpB,QAAM,mBAAmB;AAAA,IACvB,OAAO,SAAiB,eAAuB;AAC7C,eAAS,IAAI;AACb,cAAQ;AAAA,QACN;AAAA,MAAA;AAEF,eAAS,mCAAmC;AAAA,IAC9C;AAAA,IACA,CAAA;AAAA,EAAC;AAGH,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;ACxMO,MAAM,eAA4C,CAAC;AAAA,EACxD;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,EAAE,OAAAF,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,UAAU;AAAA;AAAA,QACV,SAAS;AAAA,QACT,eAAe;AAAA,QACf,KAAK;AAAA,QACL,YAAYA,OAAM,OAAO;AAAA,QACzB,cAAcA,OAAM,MAAM,CAAC;AAAA,QAC3B,SAAS;AAAA;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,cACX,yBAAyB;AAAA,YAAA;AAAA,YAG1B,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,kBACZ,WAAW;AAAA;AAAA,gBAAA;AAAA,gBAEb,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,8BACrB,KAAK,SAAS,WAAW,IAAI,MAAM;AAAA,4BAAA;AAAA,0BAAA;AAAA,wBAAA;AAAA,sBACtC;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAEJ;AAAA,cAAA;AAAA,cA/GK,KAAK;AAAA,YAAA,CAiHb;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EAAA;AAGN;AC9LO,MAAM,aAAwC,CAAC;AAAA,EACpD,UAAU;AAAA,EACV,cAAc;AAAA,EACd,kBAAkB;AAAA,EAClB;AAAA,EACA,gBAAgB;AAClB,MAAM;AACJ,QAAM,EAAE,OAAAA,OAAA,IAAU,SAAA;AAClB,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAS,KAAK;AAC1D,QAAM,CAAC,WAAW,YAAY,IAAI,SAAwB,IAAI;AAC9D,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS,KAAK;AAEpD,QAAM,mBAAmB,YAAY;AACnC,QAAI,CAAC,aAAc;AACnB,sBAAkB,IAAI;AACtB,iBAAa,IAAI;AACjB,QAAI;AACF,YAAM,aAAA;AACN,qBAAe,IAAI;AAAA,IACrB,SAAS,KAAK;AACZ,mBAAa,eAAe,QAAQ,IAAI,UAAU,sBAAsB;AAAA,IAC1E,UAAA;AACE,wBAAkB,KAAK;AAAA,IACzB;AAAA,EACF;AAEA,SACE,qBAAA,UAAA,EAEE,UAAA;AAAA,IAAA,oBAAC,SAAA,EAAO,UAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAKN;AAAA,IACF;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAO;AAAA,UACL,SAAS;AAAA,UACT,eAAe;AAAA,UACf,YAAY;AAAA,UACZ,gBAAgB;AAAA,UAChB,QAAQ;AAAA,UACR,SAAS;AAAA,UACT,WAAW;AAAA,UACX,OAAOA,OAAM,OAAO;AAAA,QAAA;AAAA,QAGxB,UAAA;AAAA,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAM;AAAA,cACN,OAAOA,OAAM,OAAO;AAAA,cACpB,OAAO,EAAE,cAAc,QAAQ,SAAS,IAAA;AAAA,YAAI;AAAA,UAAA;AAAA,UAG9C;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,OAAO;AAAA,gBACL,UAAUA,OAAM,UAAU,CAAC;AAAA,gBAC3B,YAAY;AAAA,gBACZ,OAAOA,OAAM,OAAO;AAAA,gBACpB,cAAc;AAAA,cAAA;AAAA,cAGf,UAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAGH;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,OAAO;AAAA,gBACL,UAAUA,OAAM,UAAU,CAAC;AAAA,gBAC3B,OAAOA,OAAM,OAAO;AAAA,gBACpB,cAAc;AAAA,gBACd,UAAU;AAAA,gBACV,YAAY;AAAA,cAAA;AAAA,cAGb,UAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAIH;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,OAAO;AAAA,gBACL,SAAS;AAAA,gBACT,KAAK;AAAA,gBACL,UAAU;AAAA,gBACV,gBAAgB;AAAA,cAAA;AAAA,cAGjB,UAAA;AAAA,gBAAA,iBAAiB,gBAChB;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,SAAS;AAAA,oBACT,UAAU;AAAA,oBACV,OAAO;AAAA,sBACL,SAAS;AAAA,sBACT,YAAY;AAAA,sBACZ,KAAK;AAAA,sBACL,SAAS;AAAA,sBACT,iBAAiBA,OAAM,OAAO;AAAA,sBAC9B,OAAO;AAAA,sBACP,cAAcA,OAAM,MAAM,CAAC;AAAA,sBAC3B,QAAQ;AAAA,sBACR,UAAUA,OAAM,UAAU,CAAC;AAAA,sBAC3B,YAAY;AAAA,sBACZ,QAAQ,iBAAiB,SAAS;AAAA,sBAClC,SAAS,iBAAiB,MAAM;AAAA,sBAChC,YAAY;AAAA,oBAAA;AAAA,oBAEd,cAAc,CAAC,MAAM;AACnB,0BAAI,CAAC,eAAgB,GAAE,cAAc,MAAM,UAAU;AAAA,oBACvD;AAAA,oBACA,cAAc,CAAC,MAAM;AACnB,0BAAI,CAAC,eAAgB,GAAE,cAAc,MAAM,UAAU;AAAA,oBACvD;AAAA,oBAEC,2BACC,qBAAA,UAAA,EACE,UAAA;AAAA,sBAAA,oBAACG,gBAAQ,MAAM,IAAI,OAAO,EAAE,WAAW,6BAA6B;AAAA,sBACpE,oBAAC,UAAK,UAAA,kBAAA,CAAe;AAAA,oBAAA,EAAA,CACvB,IAEA,qBAAA,UAAA,EACE,UAAA;AAAA,sBAAA,oBAAC,YAAA,EAAW,MAAM,GAAA,CAAI;AAAA,sBACtB,oBAAC,UAAK,UAAA,wBAAA,CAAqB;AAAA,oBAAA,EAAA,CAC7B;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAKL,mBACC;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,QAAO;AAAA,oBACP,KAAI;AAAA,oBACJ,OAAO;AAAA,sBACL,SAAS;AAAA,sBACT,YAAY;AAAA,sBACZ,KAAK;AAAA,sBACL,SAAS;AAAA,sBACT,iBAAiB,gBAAgB,gBAAgBH,OAAM,OAAO;AAAA,sBAC9D,OAAO,gBAAgBA,OAAM,OAAO,UAAU;AAAA,sBAC9C,QAAQ,gBAAgB,aAAaA,OAAM,OAAO,OAAO,KAAK;AAAA,sBAC9D,cAAcA,OAAM,MAAM,CAAC;AAAA,sBAC3B,gBAAgB;AAAA,sBAChB,UAAUA,OAAM,UAAU,CAAC;AAAA,sBAC3B,YAAY;AAAA,sBACZ,YAAY;AAAA,oBAAA;AAAA,oBAEd,cAAc,CAAC,MAAM;AACnB,wBAAE,cAAc,MAAM,UAAU;AAAA,oBAClC;AAAA,oBACA,cAAc,CAAC,MAAM;AACnB,wBAAE,cAAc,MAAM,UAAU;AAAA,oBAClC;AAAA,oBAEA,UAAA;AAAA,sBAAA,oBAAC,UAAK,UAAA,yBAAA,CAAsB;AAAA,sBAC5B,oBAAC,cAAA,EAAa,MAAM,GAAA,CAAI;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAC1B;AAAA,YAAA;AAAA,UAAA;AAAA,UAKH,eACC;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,OAAO;AAAA,gBACL,WAAW;AAAA,gBACX,SAAS;AAAA,gBACT,iBAAiB,GAAGA,OAAM,OAAO,WAAW,SAAS;AAAA,gBACrD,QAAQ,aAAaA,OAAM,OAAO,WAAW,SAAS;AAAA,gBACtD,cAAcA,OAAM,MAAM,CAAC;AAAA,gBAC3B,SAAS;AAAA,gBACT,YAAY;AAAA,gBACZ,KAAK;AAAA,gBACL,UAAU;AAAA,cAAA;AAAA,cAGZ,UAAA;AAAA,gBAAA,oBAACI,aAAA,EAAa,MAAM,IAAI,OAAOJ,OAAM,OAAO,WAAW,WAAW,OAAO,EAAE,YAAY,GAAG,WAAW,SAAS;AAAA,qCAC7G,OAAA,EAAI,OAAO,EAAE,WAAW,UACvB,UAAA;AAAA,kBAAA,oBAAC,OAAE,OAAO,EAAE,QAAQ,GAAG,YAAY,KAAK,OAAOA,OAAM,OAAO,MAAM,UAAUA,OAAM,UAAU,CAAC,EAAA,GAAK,UAAA,2BAElG;AAAA,uCACC,KAAA,EAAE,OAAO,EAAE,QAAQ,WAAW,OAAOA,OAAM,OAAO,eAAe,UAAUA,OAAM,UAAU,CAAC,GAAG,YAAY,OAAO,UAAA;AAAA,oBAAA;AAAA,wCACxG,QAAA,EAAK,OAAO,EAAE,SAAS,WAAW,iBAAiBA,OAAM,OAAO,SAAS,cAAc,OAAO,YAAYA,OAAM,MAAM,WAAW,UAAU,QAAA,GAAW,UAAA,sBAAkB;AAAA,oBAAO;AAAA,kBAAA,EAAA,CAE1L;AAAA,gBAAA,EAAA,CACF;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAKH,aACC;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,OAAO;AAAA,gBACL,WAAW;AAAA,gBACX,SAAS;AAAA,gBACT,iBAAiB,GAAGA,OAAM,OAAO,KAAK;AAAA,gBACtC,QAAQ,aAAaA,OAAM,OAAO,KAAK;AAAA,gBACvC,cAAcA,OAAM,MAAM,CAAC;AAAA,gBAC3B,OAAOA,OAAM,OAAO;AAAA,gBACpB,UAAUA,OAAM,UAAU,CAAC;AAAA,cAAA;AAAA,cAG5B,UAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAIJ,CAAC,eAAe;AAAA,YAAC;AAAA,YAAA;AAAA,cAChB,OAAO;AAAA,gBACL,WAAW;AAAA,gBACX,SAAS;AAAA,gBACT,iBAAiB,GAAGA,OAAM,OAAO,OAAO;AAAA,gBACxC,cAAcA,OAAM,MAAM,CAAC;AAAA,gBAC3B,UAAU;AAAA,cAAA;AAAA,cAGZ,UAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,OAAO;AAAA,oBACL,UAAUA,OAAM,UAAU,CAAC;AAAA,oBAC3B,OAAOA,OAAM,OAAO;AAAA,oBACpB,QAAQ;AAAA,oBACR,YAAY;AAAA,kBAAA;AAAA,kBAGd,UAAA;AAAA,oBAAA,oBAAC,UAAA,EAAO,OAAO,EAAE,OAAOA,OAAM,OAAO,KAAA,GAAQ,UAAA,0BAAA,CAE7C;AAAA,oBAAU;AAAA,oBAAI;AAAA,oBACsC;AAAA,oBACpD;AAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,OAAO;AAAA,0BACL,SAAS;AAAA,0BACT,iBAAiBA,OAAM,OAAO;AAAA,0BAC9B,cAAc;AAAA,0BACd,YAAYA,OAAM,MAAM;AAAA,0BACxB,UAAU;AAAA,wBAAA;AAAA,wBAEb,UAAA;AAAA,sBAAA;AAAA,oBAAA;AAAA,oBAEO;AAAA,oBAAI;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAAA;AAAA,YAEd;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IAAA;AAAA,EACF,GACA;AAEJ;ACnPA,MAAM,qBAAoD,CAAC;AAAA,EACzD;AAAA,EACA;AACF,MAAM;;AACJ,QAAM,EAAE,OAAAA,OAAA,IAAU,SAAA;AAClB,QAAM,CAAC,eAAe,eAAe,IAAI,SAAsB,IAAI;AACnE,QAAM,EAAE,UAAU,eAAe,OAAO,kBAAkB,YAAA,IAAgB,cAAc;AAAA,IACtF;AAAA,IACA;AAAA,EAAA,CACD;AAED,QAAM,kBAAkB,CAAC,SAAe;AACtC,oBAAgB,IAAI;AAAA,EAGtB;AAGA,QAAM,cAAa,aAAQ,aAAR,mBAAkB;AACrC,QAAM,gBAAgB;AAAA,KACpB,yCAAY,eAAa,yCAAY,gBAAa,aAAQ,aAAa,eAArB,mBAAiC;AAAA,EAAA;AAIrF,QAAM,mBAAmB,YAAY,YAAY;;AAC/C,QAAI,EAAC,yCAAY,cAAa,EAAC,yCAAY,YAAW;AACpD,YAAM,IAAI,MAAM,mCAAmC;AAAA,IACrD;AAEA,UAAM,YAAWK,MAAA,QAAQ,aAAa,eAArB,gBAAAA,IAAiC;AAClD,QAAI,CAAC,UAAU;AACb,YAAM,IAAI,MAAM,+BAA+B;AAAA,IACjD;AAIA,UAAM,iBAAiB,MAAM;AAAE,YAAM,IAAI,MAAM,iBAAiB;AAAA,IAAG;AACnE,UAAM,YAAY;AAAA;AAAA,MAEhB,QAAQ,OAAO,SAAiB;AAC9B,YAAI;AACF,gBAAM,WAAW,SAAS,IAAI;AAC9B,iBAAO;AAAA,QACT,QAAQ;AACN,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,MACA,WAAW,OAAO,MAAc,YAAoB;AAAE,cAAM,WAAW,UAAU,MAAM,OAAO;AAAA,MAAG;AAAA,MACjG,WAAW,OAAO,MAAc,aAAuC;AAAE,cAAM,WAAW,UAAW,IAAI;AAAA,MAAG;AAAA,MAC5G,MAAM,IAAI,UAAoB,MAAM,KAAK,GAAG,EAAE,QAAQ,QAAQ,GAAG;AAAA;AAAA,MAEjE,UAAU,OAAO,SAAiB,WAAW,SAAS,IAAI;AAAA,MAC1D,YAAY,YAAY,eAAA;AAAA,MACxB,SAAS,YAAY,CAAA;AAAA,MACrB,aAAa,YAAY;AAAA,MACzB,QAAQ,YAAY,eAAA;AAAA,MACpB,MAAM,aAAa,EAAE,OAAO,oBAAI,QAAQ,aAAa,OAAO,MAAM;MAClE,SAAS,CAAC,SAAiB,KAAK,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,EAAE,KAAK,GAAG,KAAK;AAAA,MACrE,UAAU,CAAC,SAAiB,KAAK,MAAM,GAAG,EAAE,SAAS;AAAA,MACrD,SAAS,CAAC,SAAiB;AACzB,cAAM,OAAO,KAAK,MAAM,GAAG,EAAE,SAAS;AACtC,cAAM,MAAM,KAAK,YAAY,GAAG;AAChC,eAAO,MAAM,IAAI,KAAK,MAAM,GAAG,IAAI;AAAA,MACrC;AAAA,MACA,UAAU,CAAC,OAAe,OAAe;AAAA,MACzC,YAAY,CAAC,SAAiB,KAAK,WAAW,GAAG;AAAA,MACjD,WAAW,CAAC,SAAiB,KAAK,QAAQ,QAAQ,GAAG;AAAA,MACrD,SAAS,MAAM;AAAA,IAAA;AAGjB,UAAM,OAAO,IAAI,KAAK;AAAA,MACpB,aAAa;AAAA,MACb,UAAU,EAAE,IAAI,UAAA;AAAA,IAAU,CAC3B;AAGD,UAAM,gBAAcC,MAAA,QAAQ,aAAa,eAArB,gBAAAA,IAAiC,SAAQ;AAE7D,UAAM,KAAK,YAAY,EAAE,aAAa;AAGtC,UAAM,YAAA;AAAA,EACR,GAAG,CAAC,YAAY,QAAQ,aAAa,YAAY,WAAW,CAAC;AAE7D,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACL,SAAS;AAAA;AAAA,QACT,YAAYN,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;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAO;AAAA,cACL,SAAS;AAAA,cACT,YAAY;AAAA,cACZ,KAAK;AAAA,cACL,UAAU;AAAA,YAAA;AAAA,YAGZ,UAAA;AAAA,cAAA,oBAAC,UAAO,MAAM,IAAI,OAAOA,OAAM,OAAO,SAAS;AAAA,cAC/C;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,OAAO;AAAA,oBACL,QAAQ;AAAA,oBACR,UAAUA,OAAM,UAAU,CAAC;AAAA,oBAC3B,OAAOA,OAAM,OAAO;AAAA,kBAAA;AAAA,kBAEvB,UAAA;AAAA,gBAAA;AAAA,cAAA;AAAA,YAED;AAAA,UAAA;AAAA,QAAA;AAAA,QAID,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,cACpB,UAAUA,OAAM,UAAU,CAAC;AAAA,YAAA;AAAA,YAG7B,UAAA;AAAA,cAAA,oBAACO,aAAA,EAAY,MAAM,GAAA,CAAI;AAAA,cACvB,oBAAC,UAAM,UAAA,MAAA,CAAM;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAKhB,CAAC,mBACA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC;AAAA,YACA,cAAc;AAAA,UAAA;AAAA,QAAA,IAGhB;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAO;AAAA,cACL,MAAM;AAAA,cACN,SAAS;AAAA,cACT,KAAK;AAAA,cACL,WAAW;AAAA,cACX,WAAW;AAAA,cACX,eAAe;AAAA,cACf,yBAAyB;AAAA;AAAA,YAAA;AAAA,YAG1B,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;AAIR;AAWO,MAAM,cAA6C,CAAC,UAAU;AACnE,6BACG,eAAA,EACC,UAAA,oBAAC,oBAAA,EAAoB,GAAG,OAAO,GACjC;AAEJ;ACrLO,MAAM,eAA0B;AAAA,EACrC,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,IACN,MAAM;AAAA,IACN,YAAY;AAAA,MACV,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,aAAa;AAAA,MAAA;AAAA,MAEf,cAAc;AAAA,QACZ,MAAM;AAAA,QACN,aACE;AAAA,MAAA;AAAA,IACJ;AAAA,IAEF,UAAU,CAAC,UAAU,cAAc;AAAA,EAAA;AAAA,EAErC,SAAS;AAAA,IACP,MAAM;AAAA,IACN,YAAY;AAAA,MACV,SAAS,EAAE,MAAM,UAAA;AAAA,MACjB,SAAS,EAAE,MAAM,SAAA;AAAA,IAAS;AAAA,EAC5B;AAAA,EAEF,MAAM,CAAC,UAAU,QAAQ,QAAQ,QAAQ;AAAA,EACzC,oBAAoB;AAAA,IAClB,oBAAoB;AAAA,IACpB,YAAY;AAAA,EAAA;AAEhB;AAKO,MAAM,iBAA4B;AAAA,EACvC,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,IACN,MAAM;AAAA,IACN,YAAY;AAAA,MACV,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,aAAa;AAAA,MAAA;AAAA,IACf;AAAA,IAEF,UAAU,CAAC,QAAQ;AAAA,EAAA;AAAA,EAErB,SAAS;AAAA,IACP,MAAM;AAAA,IACN,YAAY;AAAA,MACV,SAAS,EAAE,MAAM,UAAA;AAAA,MACjB,MAAM,EAAE,MAAM,SAAA;AAAA,IAAS;AAAA,EACzB;AAAA,EAEF,MAAM,CAAC,UAAU,QAAQ,UAAU,MAAM;AAAA,EACzC,oBAAoB;AAAA,IAClB,oBAAoB;AAAA,IACpB,YAAY;AAAA,EAAA;AAEhB;AAKO,MAAM,mBAA8B;AAAA,EACzC,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,IACN,MAAM;AAAA,IACN,YAAY,CAAA;AAAA,EAAC;AAAA,EAEf,SAAS;AAAA,IACP,MAAM;AAAA,IACN,YAAY;AAAA,MACV,SAAS,EAAE,MAAM,UAAA;AAAA,IAAU;AAAA,EAC7B;AAAA,EAEF,MAAM,CAAC,UAAU,SAAS,SAAS;AAAA,EACnC,oBAAoB;AAAA,IAClB,oBAAoB;AAAA,IACpB,YAAY;AAAA,EAAA;AAEhB;AAKO,MAAM,kBAA6B;AAAA,EACxC,MAAM;AAAA,EACN,aACE;AAAA,EACF,QAAQ;AAAA,IACN,MAAM;AAAA,IACN,YAAY;AAAA,MACV,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO,EAAE,MAAM,SAAA;AAAA,QACf,aAAa;AAAA,MAAA;AAAA,MAEf,UAAU;AAAA,QACR,MAAM;AAAA,QACN,aAAa;AAAA,MAAA;AAAA,MAEf,UAAU;AAAA,QACR,MAAM;AAAA,QACN,aAAa;AAAA,MAAA;AAAA,IACf;AAAA,EACF;AAAA,EAEF,SAAS;AAAA,IACP,MAAM;AAAA,IACN,YAAY;AAAA,MACV,SAAS,EAAE,MAAM,UAAA;AAAA,MACjB,OAAO,EAAE,MAAM,SAAA;AAAA,IAAS;AAAA,EAC1B;AAAA,EAEF,MAAM,CAAC,UAAU,QAAQ,UAAU,QAAQ;AAAA,EAC3C,oBAAoB;AAAA,IAClB,oBAAoB;AAAA,IACpB,YAAY;AAAA,EAAA;AAEhB;AAKO,MAAM,mBAAgC;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAKO,MAAM,2BAA+C;AAAA,EAC1D,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,aAAa;AAAA,EACb,OAAO;AACT;ACzJO,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,MACnB,OAAO;AAAA,IAAA;AAAA,IAET,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,8,9,10,11,12,13,14,15]}
|
package/package.json
CHANGED