@industry-theme/alexandria-panels 0.1.2 → 0.1.3

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.
Files changed (36) hide show
  1. package/dist/index.d.ts +5 -2
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/mocks/panelContext.d.ts.map +1 -1
  4. package/dist/panels/DependenciesPanel/DependenciesPanel.stories.d.ts +59 -0
  5. package/dist/panels/DependenciesPanel/DependenciesPanel.stories.d.ts.map +1 -0
  6. package/dist/panels/DependenciesPanel/components/DependencyInfoModal.d.ts +8 -0
  7. package/dist/panels/DependenciesPanel/components/DependencyInfoModal.d.ts.map +1 -0
  8. package/dist/panels/DependenciesPanel/components/DependencyRow.d.ts +8 -0
  9. package/dist/panels/DependenciesPanel/components/DependencyRow.d.ts.map +1 -0
  10. package/dist/panels/DependenciesPanel/components/FilterBar.d.ts +17 -0
  11. package/dist/panels/DependenciesPanel/components/FilterBar.d.ts.map +1 -0
  12. package/dist/panels/DependenciesPanel/components/index.d.ts +4 -0
  13. package/dist/panels/DependenciesPanel/components/index.d.ts.map +1 -0
  14. package/dist/panels/DependenciesPanel/index.d.ts +7 -0
  15. package/dist/panels/DependenciesPanel/index.d.ts.map +1 -0
  16. package/dist/panels/DependenciesPanel/tools.d.ts +35 -0
  17. package/dist/panels/DependenciesPanel/tools.d.ts.map +1 -0
  18. package/dist/panels/DependenciesPanel/types.d.ts +36 -0
  19. package/dist/panels/DependenciesPanel/types.d.ts.map +1 -0
  20. package/dist/panels/LocalProjectsPanel/LocalProjectCard.d.ts.map +1 -1
  21. package/dist/panels/LocalProjectsPanel/types.d.ts +11 -1
  22. package/dist/panels/LocalProjectsPanel/types.d.ts.map +1 -1
  23. package/dist/panels/WorkspaceRepositoriesPanel/index.d.ts +2 -2
  24. package/dist/panels/WorkspaceRepositoriesPanel/index.d.ts.map +1 -1
  25. package/dist/panels/WorkspaceRepositoriesPanel/types.d.ts +0 -23
  26. package/dist/panels/WorkspaceRepositoriesPanel/types.d.ts.map +1 -1
  27. package/dist/panels.bundle.js +1362 -461
  28. package/dist/panels.bundle.js.map +1 -1
  29. package/dist/tools/index.d.ts +3 -24
  30. package/dist/tools/index.d.ts.map +1 -1
  31. package/dist/tools.bundle.js +194 -2
  32. package/dist/types/index.d.ts +1 -0
  33. package/dist/types/index.d.ts.map +1 -1
  34. package/package.json +1 -1
  35. package/dist/panels/WorkspaceRepositoriesPanel/WorkspaceRepositoryCard.d.ts +0 -10
  36. package/dist/panels/WorkspaceRepositoriesPanel/WorkspaceRepositoryCard.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"panels.bundle.js","sources":["../node_modules/@principal-ade/industry-theme/dist/esm/index.js","../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/building-2.js","../node_modules/lucide-react/dist/esm/icons/check.js","../node_modules/lucide-react/dist/esm/icons/copy.js","../node_modules/lucide-react/dist/esm/icons/focus.js","../node_modules/lucide-react/dist/esm/icons/folder-git-2.js","../node_modules/lucide-react/dist/esm/icons/folder-open.js","../node_modules/lucide-react/dist/esm/icons/folder.js","../node_modules/lucide-react/dist/esm/icons/house.js","../node_modules/lucide-react/dist/esm/icons/loader-circle.js","../node_modules/lucide-react/dist/esm/icons/move-up.js","../node_modules/lucide-react/dist/esm/icons/pencil.js","../node_modules/lucide-react/dist/esm/icons/plus.js","../node_modules/lucide-react/dist/esm/icons/search.js","../node_modules/lucide-react/dist/esm/icons/triangle-alert.js","../node_modules/lucide-react/dist/esm/icons/x.js","../src/panels/LocalProjectsPanel/RepositoryAvatar.tsx","../src/panels/LocalProjectsPanel/LocalProjectCard.tsx","../src/panels/LocalProjectsPanel/index.tsx","../src/panels/WorkspaceRepositoriesPanel/WorkspaceRepositoryCard.tsx","../src/panels/WorkspaceRepositoriesPanel/index.tsx","../src/panels/LocalProjectsPanel/tools.ts","../src/panels/WorkspaceRepositoriesPanel/tools.ts","../src/index.tsx"],"sourcesContent":["// src/glassmorphismTheme.ts\nvar glassmorphismTheme = {\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n fonts: {\n body: '\"Inter\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n heading: '\"Inter\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n monospace: '\"Fira Code\", \"SF Mono\", Monaco, Inconsolata, monospace'\n },\n fontSizes: [12, 14, 16, 18, 20, 24, 32, 48, 64, 96],\n fontScale: 1,\n fontWeights: {\n body: 400,\n heading: 600,\n bold: 700,\n light: 300,\n medium: 500,\n semibold: 600\n },\n lineHeights: {\n body: 1.6,\n heading: 1.3,\n tight: 1.4,\n relaxed: 1.8\n },\n breakpoints: [\"640px\", \"768px\", \"1024px\", \"1280px\"],\n sizes: [16, 32, 64, 128, 256, 512, 768, 1024, 1536],\n radii: [0, 8, 12, 16, 20, 24, 32, 40],\n shadows: [\n \"none\",\n \"0 8px 32px 0 rgba(31, 38, 135, 0.15)\",\n \"0 12px 40px 0 rgba(31, 38, 135, 0.2)\",\n \"0 16px 48px 0 rgba(31, 38, 135, 0.25)\",\n \"0 20px 56px 0 rgba(31, 38, 135, 0.3)\",\n \"0 24px 64px 0 rgba(31, 38, 135, 0.35)\"\n ],\n zIndices: [0, 1, 10, 20, 30, 40, 50],\n colors: {\n text: \"rgba(255, 255, 255, 0.95)\",\n background: \"rgba(255, 255, 255, 0.1)\",\n primary: \"rgba(99, 102, 241, 0.9)\",\n secondary: \"rgba(139, 92, 246, 0.9)\",\n accent: \"rgba(236, 72, 153, 0.9)\",\n highlight: \"rgba(99, 102, 241, 0.2)\",\n muted: \"rgba(255, 255, 255, 0.05)\",\n success: \"rgba(34, 197, 94, 0.9)\",\n warning: \"rgba(251, 146, 60, 0.9)\",\n error: \"rgba(239, 68, 68, 0.9)\",\n info: \"rgba(59, 130, 246, 0.9)\",\n border: \"rgba(255, 255, 255, 0.18)\",\n backgroundSecondary: \"rgba(255, 255, 255, 0.15)\",\n backgroundTertiary: \"rgba(255, 255, 255, 0.2)\",\n backgroundLight: \"rgba(255, 255, 255, 0.08)\",\n backgroundHover: \"rgba(255, 255, 255, 0.25)\",\n surface: \"rgba(255, 255, 255, 0.12)\",\n textSecondary: \"rgba(255, 255, 255, 0.8)\",\n textTertiary: \"rgba(255, 255, 255, 0.6)\",\n textMuted: \"rgba(255, 255, 255, 0.5)\",\n highlightBg: \"rgba(251, 191, 36, 0.3)\",\n highlightBorder: \"rgba(251, 191, 36, 0.5)\"\n },\n modes: {\n dark: {\n text: \"rgba(255, 255, 255, 0.95)\",\n background: \"rgba(0, 0, 0, 0.3)\",\n primary: \"rgba(129, 140, 248, 0.9)\",\n secondary: \"rgba(167, 139, 250, 0.9)\",\n accent: \"rgba(244, 114, 182, 0.9)\",\n highlight: \"rgba(129, 140, 248, 0.25)\",\n muted: \"rgba(0, 0, 0, 0.15)\",\n success: \"rgba(74, 222, 128, 0.9)\",\n warning: \"rgba(251, 191, 36, 0.9)\",\n error: \"rgba(248, 113, 113, 0.9)\",\n info: \"rgba(96, 165, 250, 0.9)\",\n border: \"rgba(255, 255, 255, 0.15)\",\n backgroundSecondary: \"rgba(0, 0, 0, 0.4)\",\n backgroundTertiary: \"rgba(0, 0, 0, 0.5)\",\n backgroundLight: \"rgba(0, 0, 0, 0.2)\",\n backgroundHover: \"rgba(255, 255, 255, 0.1)\",\n surface: \"rgba(0, 0, 0, 0.35)\",\n textSecondary: \"rgba(255, 255, 255, 0.8)\",\n textTertiary: \"rgba(255, 255, 255, 0.6)\",\n textMuted: \"rgba(255, 255, 255, 0.4)\",\n highlightBg: \"rgba(251, 191, 36, 0.35)\",\n highlightBorder: \"rgba(251, 191, 36, 0.6)\"\n },\n frosted: {\n text: \"rgba(31, 41, 55, 0.95)\",\n background: \"rgba(255, 255, 255, 0.3)\",\n primary: \"rgba(79, 70, 229, 0.95)\",\n secondary: \"rgba(124, 58, 237, 0.95)\",\n accent: \"rgba(219, 39, 119, 0.95)\",\n highlight: \"rgba(79, 70, 229, 0.15)\",\n muted: \"rgba(255, 255, 255, 0.4)\",\n success: \"rgba(16, 185, 129, 0.95)\",\n warning: \"rgba(245, 158, 11, 0.95)\",\n error: \"rgba(220, 38, 38, 0.95)\",\n info: \"rgba(37, 99, 235, 0.95)\",\n border: \"rgba(255, 255, 255, 0.5)\",\n backgroundSecondary: \"rgba(255, 255, 255, 0.4)\",\n backgroundTertiary: \"rgba(255, 255, 255, 0.5)\",\n backgroundLight: \"rgba(255, 255, 255, 0.25)\",\n backgroundHover: \"rgba(255, 255, 255, 0.6)\",\n surface: \"rgba(255, 255, 255, 0.35)\",\n textSecondary: \"rgba(31, 41, 55, 0.8)\",\n textTertiary: \"rgba(31, 41, 55, 0.6)\",\n textMuted: \"rgba(31, 41, 55, 0.5)\",\n highlightBg: \"rgba(251, 191, 36, 0.4)\",\n highlightBorder: \"rgba(251, 191, 36, 0.7)\"\n }\n },\n buttons: {\n primary: {\n color: \"white\",\n bg: \"primary\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"rgba(255, 255, 255, 0.2)\",\n \"&:hover\": {\n bg: \"secondary\"\n }\n },\n secondary: {\n color: \"text\",\n bg: \"rgba(255, 255, 255, 0.1)\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"rgba(255, 255, 255, 0.2)\",\n \"&:hover\": {\n bg: \"rgba(255, 255, 255, 0.2)\"\n }\n },\n ghost: {\n color: \"text\",\n bg: \"transparent\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"transparent\",\n \"&:hover\": {\n borderColor: \"rgba(255, 255, 255, 0.2)\",\n bg: \"rgba(255, 255, 255, 0.05)\"\n }\n }\n },\n text: {\n heading: {\n fontFamily: \"heading\",\n fontWeight: \"heading\",\n lineHeight: \"heading\"\n },\n body: {\n fontFamily: \"body\",\n fontWeight: \"body\",\n lineHeight: \"body\"\n },\n caption: {\n fontSize: 1,\n color: \"textSecondary\"\n }\n },\n cards: {\n primary: {\n bg: \"surface\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 3\n },\n secondary: {\n bg: \"backgroundSecondary\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 3\n }\n }\n};\n// src/defaultThemes.ts\nvar defaultMarkdownTheme = {\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n fonts: {\n body: '\"Inter\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n heading: '\"Crimson Text\", \"Georgia\", \"Times New Roman\", serif',\n monospace: '\"Fira Code\", \"SF Mono\", Monaco, Inconsolata, monospace'\n },\n fontSizes: [12, 14, 16, 18, 20, 24, 32, 48, 64, 96],\n fontScale: 1,\n fontWeights: {\n body: 400,\n heading: 600,\n bold: 700,\n light: 300,\n medium: 500,\n semibold: 600\n },\n lineHeights: {\n body: 1.6,\n heading: 1.3,\n tight: 1.25,\n relaxed: 1.75\n },\n breakpoints: [\"640px\", \"768px\", \"1024px\", \"1280px\"],\n sizes: [16, 32, 64, 128, 256, 512, 768, 1024, 1536],\n radii: [0, 2, 4, 6, 8, 12, 16, 24],\n shadows: [\n \"none\",\n \"0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)\",\n \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)\",\n \"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)\",\n \"0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)\",\n \"0 25px 50px -12px rgba(0, 0, 0, 0.25)\"\n ],\n zIndices: [0, 1, 10, 20, 30, 40, 50],\n colors: {\n text: \"#1a1a1a\",\n background: \"#ffffff\",\n primary: \"#007acc\",\n secondary: \"#005a9e\",\n accent: \"#1a1a1a\",\n highlight: \"rgba(0, 122, 204, 0.1)\",\n muted: \"#f0f0f0\",\n success: \"#28a745\",\n warning: \"#ffc107\",\n error: \"#dc3545\",\n info: \"#17a2b8\",\n border: \"rgba(0, 0, 0, 0.1)\",\n backgroundSecondary: \"#f8f9fa\",\n backgroundTertiary: \"#e9ecef\",\n backgroundLight: \"rgba(0, 0, 0, 0.03)\",\n backgroundHover: \"rgba(0, 0, 0, 0.05)\",\n surface: \"#ffffff\",\n textSecondary: \"#555555\",\n textTertiary: \"#888888\",\n textMuted: \"#aaaaaa\",\n highlightBg: \"rgba(255, 235, 59, 0.3)\",\n highlightBorder: \"rgba(255, 235, 59, 0.6)\"\n },\n buttons: {\n primary: {\n color: \"white\",\n bg: \"primary\",\n \"&:hover\": { bg: \"secondary\" }\n },\n secondary: {\n color: \"primary\",\n bg: \"transparent\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"primary\",\n \"&:hover\": { bg: \"highlight\" }\n },\n ghost: {\n color: \"text\",\n bg: \"transparent\",\n \"&:hover\": { bg: \"backgroundHover\" }\n }\n },\n text: {\n heading: {\n fontFamily: \"heading\",\n fontWeight: \"heading\",\n lineHeight: \"heading\"\n },\n body: {\n fontFamily: \"body\",\n fontWeight: \"body\",\n lineHeight: \"body\"\n },\n caption: {\n fontSize: 1,\n color: \"textSecondary\"\n }\n },\n cards: {\n primary: {\n bg: \"surface\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 2\n },\n secondary: {\n bg: \"backgroundSecondary\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 2\n }\n }\n};\nvar defaultTerminalTheme = {\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n fonts: {\n body: '\"Courier New\", Courier, monospace',\n heading: '\"Courier New\", Courier, monospace',\n monospace: '\"Courier New\", Courier, monospace'\n },\n fontSizes: [12, 14, 16, 18, 20, 24, 32, 48, 64, 96],\n fontScale: 1,\n fontWeights: {\n body: 400,\n heading: 500,\n bold: 600,\n light: 300,\n medium: 500,\n semibold: 600\n },\n lineHeights: {\n body: 1.4,\n heading: 1.2,\n tight: 1.3,\n relaxed: 1.6\n },\n breakpoints: [\"640px\", \"768px\", \"1024px\", \"1280px\"],\n sizes: [16, 32, 64, 128, 256, 512, 768, 1024, 1536],\n radii: [0, 2, 4, 6, 8, 12, 16, 24],\n shadows: [\n \"none\",\n \"0 0 5px rgba(255, 193, 7, 0.1)\",\n \"0 0 10px rgba(255, 193, 7, 0.15)\",\n \"0 0 15px rgba(255, 193, 7, 0.2)\",\n \"0 0 20px rgba(255, 193, 7, 0.25)\",\n \"0 0 30px rgba(255, 193, 7, 0.3)\"\n ],\n zIndices: [0, 1, 10, 20, 30, 40, 50],\n colors: {\n text: \"#ffc107\",\n background: \"#000000\",\n primary: \"#ffc107\",\n secondary: \"#ffb300\",\n accent: \"#ffffff\",\n highlight: \"rgba(255, 193, 7, 0.1)\",\n muted: \"#1a1a1a\",\n success: \"#4caf50\",\n warning: \"#ff9800\",\n error: \"#f44336\",\n info: \"#2196f3\",\n border: \"rgba(255, 193, 7, 0.2)\",\n backgroundSecondary: \"#0a0a0a\",\n backgroundTertiary: \"#111111\",\n backgroundLight: \"rgba(255, 193, 7, 0.03)\",\n backgroundHover: \"rgba(255, 193, 7, 0.05)\",\n surface: \"#050505\",\n textSecondary: \"#e0e0e0\",\n textTertiary: \"#b0b0b0\",\n textMuted: \"#808080\",\n highlightBg: \"rgba(255, 193, 7, 0.2)\",\n highlightBorder: \"rgba(255, 193, 7, 0.4)\"\n },\n buttons: {\n primary: {\n color: \"black\",\n bg: \"primary\",\n borderWidth: 0,\n \"&:hover\": { bg: \"secondary\" }\n },\n secondary: {\n color: \"primary\",\n bg: \"transparent\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"primary\",\n \"&:hover\": { bg: \"highlight\" }\n },\n ghost: {\n color: \"text\",\n bg: \"transparent\",\n \"&:hover\": { bg: \"backgroundHover\" }\n }\n },\n text: {\n heading: {\n fontFamily: \"heading\",\n fontWeight: \"heading\",\n lineHeight: \"heading\"\n },\n body: {\n fontFamily: \"body\",\n fontWeight: \"body\",\n lineHeight: \"body\"\n },\n caption: {\n fontSize: 1,\n color: \"textSecondary\"\n }\n },\n cards: {\n primary: {\n bg: \"surface\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 0\n },\n secondary: {\n bg: \"backgroundSecondary\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 0\n }\n }\n};\nvar defaultEditorTheme = {\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n fonts: {\n body: '\"Fira Code\", \"SF Mono\", Monaco, Inconsolata, monospace',\n heading: '\"Inter\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n monospace: '\"Fira Code\", \"SF Mono\", Monaco, Inconsolata, monospace'\n },\n fontSizes: [12, 14, 16, 18, 20, 24, 32, 48, 64, 96],\n fontScale: 1,\n fontWeights: {\n body: 400,\n heading: 600,\n bold: 700,\n light: 300,\n medium: 500,\n semibold: 600\n },\n lineHeights: {\n body: 1.5,\n heading: 1.2,\n tight: 1.3,\n relaxed: 1.7\n },\n breakpoints: [\"640px\", \"768px\", \"1024px\", \"1280px\"],\n sizes: [16, 32, 64, 128, 256, 512, 768, 1024, 1536],\n radii: [0, 2, 4, 6, 8, 12, 16, 24],\n shadows: [\n \"none\",\n \"0 1px 2px rgba(0, 0, 0, 0.05)\",\n \"0 2px 4px rgba(0, 0, 0, 0.1)\",\n \"0 4px 8px rgba(0, 0, 0, 0.15)\",\n \"0 8px 16px rgba(0, 0, 0, 0.2)\",\n \"0 12px 24px rgba(0, 0, 0, 0.25)\"\n ],\n zIndices: [0, 1, 10, 20, 30, 40, 50],\n colors: {\n text: \"#d4d4d4\",\n background: \"#1e1e1e\",\n primary: \"#569cd6\",\n secondary: \"#408ac9\",\n accent: \"#c586c0\",\n highlight: \"rgba(86, 156, 214, 0.1)\",\n muted: \"#2a2a2a\",\n success: \"#6a9955\",\n warning: \"#d18616\",\n error: \"#f44747\",\n info: \"#569cd6\",\n border: \"rgba(255, 255, 255, 0.1)\",\n backgroundSecondary: \"#252526\",\n backgroundTertiary: \"#333333\",\n backgroundLight: \"rgba(255, 255, 255, 0.03)\",\n backgroundHover: \"rgba(255, 255, 255, 0.05)\",\n surface: \"#252526\",\n textSecondary: \"#cccccc\",\n textTertiary: \"#999999\",\n textMuted: \"#666666\",\n highlightBg: \"rgba(255, 235, 59, 0.2)\",\n highlightBorder: \"rgba(255, 235, 59, 0.4)\"\n },\n buttons: {\n primary: {\n color: \"white\",\n bg: \"primary\",\n \"&:hover\": { bg: \"secondary\" }\n },\n secondary: {\n color: \"primary\",\n bg: \"transparent\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"primary\",\n \"&:hover\": { bg: \"highlight\" }\n },\n ghost: {\n color: \"text\",\n bg: \"transparent\",\n \"&:hover\": { bg: \"backgroundHover\" }\n }\n },\n text: {\n heading: {\n fontFamily: \"heading\",\n fontWeight: \"heading\",\n lineHeight: \"heading\"\n },\n body: {\n fontFamily: \"body\",\n fontWeight: \"body\",\n lineHeight: \"body\"\n },\n caption: {\n fontSize: 1,\n color: \"textSecondary\"\n }\n },\n cards: {\n primary: {\n bg: \"surface\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 1\n },\n secondary: {\n bg: \"backgroundSecondary\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 1\n }\n }\n};\n// src/landingPageTheme.ts\nvar landingPageTheme = {\n space: [0, 4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 80, 100, 128],\n fonts: {\n body: 'Inter, \"Geist Sans\", system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif',\n heading: '-apple-system, BlinkMacSystemFont, \"SF Pro Display\", \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif',\n monospace: '\"SF Mono\", Monaco, Inconsolata, \"Fira Code\", monospace'\n },\n fontSizes: [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 24, 28, 32, 36, 48, 56, 68, 84, 96],\n fontScale: 1,\n fontWeights: {\n body: 400,\n heading: 600,\n bold: 700,\n light: 300,\n medium: 500,\n semibold: 600\n },\n lineHeights: {\n body: 1.6,\n heading: 1.2,\n tight: 1.05,\n relaxed: 1.7\n },\n breakpoints: [\"640px\", \"768px\", \"1024px\", \"1280px\", \"1400px\"],\n sizes: [16, 32, 64, 128, 200, 240, 256, 300, 512, 740, 768, 820, 900, 1024, 1200, 1400, 1536],\n radii: [0, 2, 4, 6, 7, 8, 9, 10, 12, 14, 16, 24],\n shadows: [\n \"none\",\n \"0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)\",\n \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)\",\n \"0 4px 12px rgba(0, 194, 255, 0.4)\",\n \"0 6px 24px rgba(0, 194, 255, 0.1)\",\n \"0 8px 32px rgba(0, 0, 0, 0.4)\"\n ],\n zIndices: [0, 1, 10, 20, 30, 40, 50, 1000],\n colors: {\n text: \"#ffffff\",\n background: \"#000000\",\n primary: \"#00C2FF\",\n secondary: \"#0098CC\",\n accent: \"#0066FF\",\n highlight: \"rgba(0, 194, 255, 0.15)\",\n muted: \"#1a1a1a\",\n success: \"#4caf50\",\n warning: \"#ff9800\",\n error: \"#f44336\",\n info: \"#2196f3\",\n border: \"rgba(0, 194, 255, 0.2)\",\n backgroundSecondary: \"#0a1628\",\n backgroundTertiary: \"#0f1c2e\",\n backgroundLight: \"rgba(0, 194, 255, 0.04)\",\n backgroundHover: \"rgba(0, 194, 255, 0.1)\",\n surface: \"rgba(0, 0, 0, 0.4)\",\n textSecondary: \"#d1d5db\",\n textTertiary: \"#9ca3af\",\n textMuted: \"#6b7280\",\n highlightBg: \"rgba(255, 235, 59, 0.25)\",\n highlightBorder: \"rgba(255, 235, 59, 0.5)\"\n },\n buttons: {\n primary: {\n color: \"#000000\",\n bg: \"#00C2FF\",\n borderWidth: 0,\n padding: \"8px 20px\",\n fontSize: 14,\n fontWeight: 600,\n cursor: \"pointer\",\n \"&:hover\": {\n bg: \"#00D9FF\"\n }\n },\n secondary: {\n color: \"#00C2FF\",\n bg: \"transparent\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"rgba(0, 194, 255, 0.3)\",\n padding: \"8px 16px\",\n fontSize: 14,\n fontWeight: 600,\n cursor: \"pointer\",\n \"&:hover\": {\n bg: \"rgba(0, 194, 255, 0.1)\",\n borderColor: \"#00C2FF\"\n }\n },\n ghost: {\n color: \"#00C2FF\",\n bg: \"transparent\",\n borderWidth: 0,\n padding: \"8px 16px\",\n fontSize: 14,\n fontWeight: 500,\n cursor: \"pointer\",\n \"&:hover\": {\n color: \"#00D9FF\",\n bg: \"rgba(0, 194, 255, 0.1)\"\n }\n }\n },\n text: {\n heading: {\n fontFamily: \"heading\",\n fontWeight: \"heading\",\n lineHeight: \"heading\",\n color: \"#ffffff\"\n },\n body: {\n fontFamily: \"body\",\n fontWeight: \"body\",\n lineHeight: \"body\",\n color: \"text\"\n },\n caption: {\n fontSize: 1,\n color: \"textSecondary\"\n }\n },\n cards: {\n primary: {\n bg: \"surface\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 4\n },\n secondary: {\n bg: \"rgba(0, 194, 255, 0.05)\",\n border: \"1px solid\",\n borderColor: \"rgba(0, 194, 255, 0.2)\",\n borderRadius: 4\n }\n }\n};\nvar landingPageLightTheme = {\n ...landingPageTheme,\n colors: {\n text: \"#1a1a1a\",\n background: \"#ffffff\",\n primary: \"#0098CC\",\n secondary: \"#00C2FF\",\n accent: \"#0066FF\",\n highlight: \"rgba(0, 152, 204, 0.1)\",\n muted: \"#f0f0f0\",\n success: \"#4caf50\",\n warning: \"#ff9800\",\n error: \"#f44336\",\n info: \"#2196f3\",\n border: \"rgba(0, 152, 204, 0.2)\",\n backgroundSecondary: \"#f8f9fa\",\n backgroundTertiary: \"#e9ecef\",\n backgroundLight: \"rgba(0, 152, 204, 0.03)\",\n backgroundHover: \"rgba(0, 152, 204, 0.05)\",\n surface: \"rgba(255, 255, 255, 0.95)\",\n textSecondary: \"#555555\",\n textTertiary: \"#888888\",\n textMuted: \"#aaaaaa\",\n highlightBg: \"rgba(255, 235, 59, 0.3)\",\n highlightBorder: \"rgba(255, 235, 59, 0.6)\"\n },\n buttons: {\n primary: {\n color: \"#ffffff\",\n bg: \"#0098CC\",\n borderWidth: 0,\n padding: \"8px 20px\",\n fontSize: 14,\n fontWeight: 600,\n cursor: \"pointer\",\n \"&:hover\": {\n bg: \"#007aa8\"\n }\n },\n secondary: {\n color: \"#0098CC\",\n bg: \"transparent\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"rgba(0, 152, 204, 0.3)\",\n padding: \"8px 16px\",\n fontSize: 14,\n fontWeight: 600,\n cursor: \"pointer\",\n \"&:hover\": {\n bg: \"rgba(0, 152, 204, 0.05)\",\n borderColor: \"#0098CC\"\n }\n },\n ghost: {\n color: \"#0098CC\",\n bg: \"transparent\",\n borderWidth: 0,\n padding: \"8px 16px\",\n fontSize: 14,\n fontWeight: 500,\n cursor: \"pointer\",\n \"&:hover\": {\n color: \"#007aa8\",\n bg: \"rgba(0, 152, 204, 0.05)\"\n }\n }\n }\n};\n\n// src/themes.ts\nvar regalTheme = {\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n fonts: {\n body: '\"Inter\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n heading: '\"Crimson Text\", \"Georgia\", \"Times New Roman\", serif',\n monospace: '\"Fira Code\", \"SF Mono\", Monaco, Inconsolata, monospace'\n },\n fontSizes: [12, 14, 16, 18, 20, 24, 32, 48, 64, 96],\n fontScale: 1,\n fontWeights: {\n body: 400,\n heading: 600,\n bold: 700,\n light: 300,\n medium: 500,\n semibold: 600\n },\n lineHeights: {\n body: 1.5,\n heading: 1.2,\n tight: 1.25,\n relaxed: 1.75\n },\n breakpoints: [\"640px\", \"768px\", \"1024px\", \"1280px\"],\n sizes: [16, 32, 64, 128, 256, 512, 768, 1024, 1536],\n radii: [0, 2, 4, 6, 8, 12, 16, 24],\n shadows: [\n \"none\",\n \"0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)\",\n \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)\",\n \"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)\",\n \"0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)\",\n \"0 25px 50px -12px rgba(0, 0, 0, 0.25)\"\n ],\n zIndices: [0, 1, 10, 20, 30, 40, 50],\n colors: {\n text: \"#f1e8dc\",\n background: \"#1a1f2e\",\n primary: \"#d4a574\",\n secondary: \"#e0b584\",\n accent: \"#c9b8a3\",\n highlight: \"rgba(212, 165, 116, 0.15)\",\n muted: \"#8b7968\",\n success: \"#5c8a72\",\n warning: \"#d4a574\",\n error: \"#a85751\",\n info: \"#d4a574\",\n border: \"rgba(212, 165, 116, 0.2)\",\n backgroundSecondary: \"#212738\",\n backgroundTertiary: \"#2d3446\",\n backgroundLight: \"rgba(212, 165, 116, 0.08)\",\n backgroundHover: \"rgba(212, 165, 116, 0.15)\",\n surface: \"#212738\",\n textSecondary: \"#c9b8a3\",\n textTertiary: \"#8b7968\",\n textMuted: \"#8b7968\",\n highlightBg: \"rgba(255, 193, 7, 0.25)\",\n highlightBorder: \"rgba(255, 193, 7, 0.5)\"\n },\n buttons: {\n primary: {\n color: \"background\",\n bg: \"primary\",\n \"&:hover\": {\n bg: \"secondary\"\n }\n },\n secondary: {\n color: \"text\",\n bg: \"muted\",\n \"&:hover\": {\n bg: \"backgroundSecondary\"\n }\n },\n ghost: {\n color: \"primary\",\n bg: \"transparent\",\n \"&:hover\": {\n bg: \"muted\"\n }\n }\n },\n text: {\n heading: {\n fontFamily: \"heading\",\n fontWeight: \"heading\",\n lineHeight: \"heading\"\n },\n body: {\n fontFamily: \"body\",\n fontWeight: \"body\",\n lineHeight: \"body\"\n },\n caption: {\n fontSize: 1,\n color: \"textSecondary\"\n }\n },\n cards: {\n primary: {\n bg: \"background\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 2\n },\n secondary: {\n bg: \"backgroundSecondary\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 2\n }\n }\n};\nvar terminalTheme = {\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n fonts: {\n body: '\"SF Mono\", \"Monaco\", \"Inconsolata\", \"Fira Code\", monospace',\n heading: '\"SF Mono\", \"Monaco\", \"Inconsolata\", \"Fira Code\", monospace',\n monospace: '\"SF Mono\", \"Monaco\", \"Inconsolata\", \"Fira Code\", monospace'\n },\n fontSizes: [12, 14, 16, 18, 20, 24, 32, 48, 64, 96],\n fontScale: 1,\n fontWeights: {\n body: 400,\n heading: 500,\n bold: 600,\n light: 300,\n medium: 500,\n semibold: 600\n },\n lineHeights: {\n body: 1.6,\n heading: 1.3,\n tight: 1.4,\n relaxed: 1.8\n },\n breakpoints: [\"640px\", \"768px\", \"1024px\", \"1280px\"],\n sizes: [16, 32, 64, 128, 256, 512, 768, 1024, 1536],\n radii: [0, 2, 4, 6, 8, 12, 16, 24],\n shadows: [\n \"none\",\n \"0 1px 2px 0 rgba(0, 0, 0, 0.05)\",\n \"0 2px 4px 0 rgba(0, 0, 0, 0.06)\",\n \"0 4px 6px 0 rgba(0, 0, 0, 0.07)\",\n \"0 8px 12px 0 rgba(0, 0, 0, 0.08)\",\n \"0 16px 24px 0 rgba(0, 0, 0, 0.10)\"\n ],\n zIndices: [0, 1, 10, 20, 30, 40, 50],\n colors: {\n text: \"#e4e4e4\",\n background: \"rgba(10, 10, 10, 0.85)\",\n primary: \"#66b3ff\",\n secondary: \"#80c4ff\",\n accent: \"#66ff99\",\n highlight: \"rgba(102, 179, 255, 0.15)\",\n muted: \"rgba(26, 26, 26, 0.8)\",\n success: \"#66ff99\",\n warning: \"#ffcc66\",\n error: \"#ff6666\",\n info: \"#66b3ff\",\n border: \"rgba(255, 255, 255, 0.1)\",\n backgroundSecondary: \"rgba(15, 15, 15, 0.9)\",\n backgroundTertiary: \"rgba(20, 20, 20, 0.9)\",\n backgroundLight: \"rgba(255, 255, 255, 0.05)\",\n backgroundHover: \"rgba(102, 179, 255, 0.08)\",\n surface: \"rgba(15, 15, 15, 0.95)\",\n textSecondary: \"rgba(255, 255, 255, 0.7)\",\n textTertiary: \"rgba(255, 255, 255, 0.5)\",\n textMuted: \"rgba(255, 255, 255, 0.4)\",\n highlightBg: \"rgba(255, 235, 59, 0.25)\",\n highlightBorder: \"rgba(255, 235, 59, 0.5)\"\n },\n modes: {\n light: {\n text: \"#1a1a1a\",\n background: \"rgba(255, 255, 255, 0.9)\",\n primary: \"#0066cc\",\n secondary: \"#0052a3\",\n accent: \"#00cc88\",\n highlight: \"rgba(0, 102, 204, 0.08)\",\n muted: \"rgba(245, 245, 245, 0.8)\",\n success: \"#00cc88\",\n warning: \"#ffaa00\",\n error: \"#ff3333\",\n info: \"#0066cc\",\n border: \"rgba(0, 0, 0, 0.1)\",\n backgroundSecondary: \"rgba(250, 250, 250, 0.9)\",\n backgroundTertiary: \"rgba(245, 245, 245, 0.9)\",\n backgroundLight: \"rgba(0, 0, 0, 0.02)\",\n backgroundHover: \"rgba(0, 102, 204, 0.04)\",\n surface: \"rgba(255, 255, 255, 0.95)\",\n textSecondary: \"rgba(0, 0, 0, 0.6)\",\n textTertiary: \"rgba(0, 0, 0, 0.4)\",\n textMuted: \"rgba(0, 0, 0, 0.3)\",\n highlightBg: \"rgba(255, 235, 59, 0.3)\",\n highlightBorder: \"rgba(255, 235, 59, 0.6)\"\n }\n },\n buttons: {\n primary: {\n color: \"white\",\n bg: \"primary\",\n borderWidth: 0,\n \"&:hover\": {\n bg: \"secondary\"\n }\n },\n secondary: {\n color: \"primary\",\n bg: \"transparent\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"primary\",\n \"&:hover\": {\n bg: \"highlight\"\n }\n },\n ghost: {\n color: \"text\",\n bg: \"transparent\",\n \"&:hover\": {\n bg: \"backgroundHover\"\n }\n }\n },\n text: {\n heading: {\n fontFamily: \"heading\",\n fontWeight: \"heading\",\n lineHeight: \"heading\"\n },\n body: {\n fontFamily: \"body\",\n fontWeight: \"body\",\n lineHeight: \"body\"\n },\n caption: {\n fontSize: 1,\n color: \"textSecondary\"\n }\n },\n cards: {\n primary: {\n bg: \"surface\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 1\n },\n secondary: {\n bg: \"backgroundSecondary\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 1\n }\n }\n};\nvar matrixTheme = {\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n fonts: {\n body: '\"Courier New\", \"Courier\", \"Lucida Console\", \"Monaco\", monospace',\n heading: '\"Courier New\", \"Courier\", \"Lucida Console\", \"Monaco\", monospace',\n monospace: '\"Courier New\", \"Courier\", \"Lucida Console\", \"Monaco\", monospace'\n },\n fontSizes: [12, 14, 16, 18, 20, 24, 32, 48, 64, 96],\n fontScale: 1,\n fontWeights: {\n body: 400,\n heading: 500,\n bold: 600,\n light: 300,\n medium: 500,\n semibold: 600\n },\n lineHeights: {\n body: 1.5,\n heading: 1.2,\n tight: 1.3,\n relaxed: 1.7\n },\n breakpoints: [\"640px\", \"768px\", \"1024px\", \"1280px\"],\n sizes: [16, 32, 64, 128, 256, 512, 768, 1024, 1536],\n radii: [0, 2, 4, 6, 8, 12, 16, 24],\n shadows: [\n \"none\",\n \"0 0 5px rgba(0, 216, 53, 0.15)\",\n \"0 0 10px rgba(0, 216, 53, 0.2)\",\n \"0 0 15px rgba(0, 216, 53, 0.25)\",\n \"0 0 20px rgba(0, 216, 53, 0.3)\",\n \"0 0 30px rgba(0, 216, 53, 0.4)\"\n ],\n zIndices: [0, 1, 10, 20, 30, 40, 50],\n colors: {\n text: \"#a8a8a8\",\n background: \"#000000\",\n primary: \"#00d835\",\n secondary: \"#00a828\",\n accent: \"#00d835\",\n highlight: \"rgba(0, 216, 53, 0.15)\",\n muted: \"#0a0a0a\",\n success: \"#00d835\",\n warning: \"#d4a000\",\n error: \"#d63333\",\n info: \"#00a8d6\",\n border: \"rgba(0, 216, 53, 0.2)\",\n backgroundSecondary: \"#0a0a0a\",\n backgroundTertiary: \"#111111\",\n backgroundLight: \"rgba(0, 216, 53, 0.03)\",\n backgroundHover: \"rgba(0, 216, 53, 0.08)\",\n surface: \"#050505\",\n textSecondary: \"#808080\",\n textTertiary: \"#606060\",\n textMuted: \"#484848\",\n highlightBg: \"rgba(0, 216, 53, 0.25)\",\n highlightBorder: \"rgba(0, 216, 53, 0.5)\"\n },\n buttons: {\n primary: {\n color: \"black\",\n bg: \"primary\",\n borderWidth: 0,\n \"&:hover\": {\n bg: \"secondary\"\n }\n },\n secondary: {\n color: \"primary\",\n bg: \"transparent\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"primary\",\n \"&:hover\": {\n bg: \"highlight\"\n }\n },\n ghost: {\n color: \"text\",\n bg: \"transparent\",\n \"&:hover\": {\n bg: \"backgroundHover\"\n }\n }\n },\n text: {\n heading: {\n fontFamily: \"heading\",\n fontWeight: \"heading\",\n lineHeight: \"heading\"\n },\n body: {\n fontFamily: \"body\",\n fontWeight: \"body\",\n lineHeight: \"body\"\n },\n caption: {\n fontSize: 1,\n color: \"textSecondary\"\n }\n },\n cards: {\n primary: {\n bg: \"surface\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 0\n },\n secondary: {\n bg: \"backgroundSecondary\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 0\n }\n }\n};\nvar matrixMinimalTheme = {\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n fonts: {\n body: '\"Courier New\", \"Courier\", \"Lucida Console\", \"Monaco\", monospace',\n heading: '\"Courier New\", \"Courier\", \"Lucida Console\", \"Monaco\", monospace',\n monospace: '\"Courier New\", \"Courier\", \"Lucida Console\", \"Monaco\", monospace'\n },\n fontSizes: [12, 14, 16, 18, 20, 24, 32, 48, 64, 96],\n fontScale: 1,\n fontWeights: {\n body: 400,\n heading: 500,\n bold: 600,\n light: 300,\n medium: 500,\n semibold: 600\n },\n lineHeights: {\n body: 1.5,\n heading: 1.2,\n tight: 1.3,\n relaxed: 1.7\n },\n breakpoints: [\"640px\", \"768px\", \"1024px\", \"1280px\"],\n sizes: [16, 32, 64, 128, 256, 512, 768, 1024, 1536],\n radii: [0, 2, 4, 6, 8, 12, 16, 24],\n shadows: [\n \"none\",\n \"0 1px 2px rgba(0, 0, 0, 0.05)\",\n \"0 2px 4px rgba(0, 0, 0, 0.1)\",\n \"0 4px 8px rgba(0, 0, 0, 0.15)\",\n \"0 8px 16px rgba(0, 0, 0, 0.2)\",\n \"0 0 20px rgba(0, 216, 53, 0.1)\"\n ],\n zIndices: [0, 1, 10, 20, 30, 40, 50],\n colors: {\n text: \"#a8a8a8\",\n background: \"#000000\",\n primary: \"#b8b8b8\",\n secondary: \"#909090\",\n accent: \"#00d835\",\n highlight: \"rgba(0, 216, 53, 0.1)\",\n muted: \"#0a0a0a\",\n success: \"#00d835\",\n warning: \"#d4a000\",\n error: \"#d63333\",\n info: \"#00a8d6\",\n border: \"rgba(184, 184, 184, 0.1)\",\n backgroundSecondary: \"#0a0a0a\",\n backgroundTertiary: \"#111111\",\n backgroundLight: \"rgba(184, 184, 184, 0.02)\",\n backgroundHover: \"rgba(0, 216, 53, 0.05)\",\n surface: \"#050505\",\n textSecondary: \"#808080\",\n textTertiary: \"#606060\",\n textMuted: \"#484848\",\n highlightBg: \"rgba(0, 216, 53, 0.2)\",\n highlightBorder: \"rgba(0, 216, 53, 0.4)\"\n },\n buttons: {\n primary: {\n color: \"black\",\n bg: \"primary\",\n borderWidth: 0,\n \"&:hover\": {\n bg: \"secondary\"\n }\n },\n secondary: {\n color: \"primary\",\n bg: \"transparent\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"primary\",\n \"&:hover\": {\n bg: \"backgroundHover\"\n }\n },\n ghost: {\n color: \"text\",\n bg: \"transparent\",\n \"&:hover\": {\n bg: \"backgroundHover\"\n }\n }\n },\n text: {\n heading: {\n fontFamily: \"heading\",\n fontWeight: \"heading\",\n lineHeight: \"heading\"\n },\n body: {\n fontFamily: \"body\",\n fontWeight: \"body\",\n lineHeight: \"body\"\n },\n caption: {\n fontSize: 1,\n color: \"textSecondary\"\n }\n },\n cards: {\n primary: {\n bg: \"surface\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 0\n },\n secondary: {\n bg: \"backgroundSecondary\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 0\n }\n }\n};\nvar slateTheme = {\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n fonts: {\n body: '\"Inter\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n heading: '\"Inter\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n monospace: '\"Fira Code\", \"SF Mono\", Monaco, Inconsolata, monospace'\n },\n fontSizes: [12, 14, 16, 18, 20, 24, 32, 48, 64, 96],\n fontScale: 1,\n fontWeights: {\n body: 400,\n heading: 600,\n bold: 700,\n light: 300,\n medium: 500,\n semibold: 600\n },\n lineHeights: {\n body: 1.6,\n heading: 1.3,\n tight: 1.25,\n relaxed: 1.75\n },\n breakpoints: [\"640px\", \"768px\", \"1024px\", \"1280px\"],\n sizes: [16, 32, 64, 128, 256, 512, 768, 1024, 1536],\n radii: [0, 2, 4, 6, 8, 12, 16, 24],\n shadows: [\n \"none\",\n \"0 1px 3px 0 rgba(0, 0, 0, 0.2)\",\n \"0 4px 6px -1px rgba(0, 0, 0, 0.2)\",\n \"0 10px 15px -3px rgba(0, 0, 0, 0.2)\",\n \"0 20px 25px -5px rgba(0, 0, 0, 0.25)\",\n \"0 25px 50px -12px rgba(0, 0, 0, 0.3)\"\n ],\n zIndices: [0, 1, 10, 20, 30, 40, 50],\n colors: {\n text: \"#9ca3af\",\n background: \"#1a1c1e\",\n primary: \"#d1d5db\",\n secondary: \"#6b7280\",\n accent: \"#f59e0b\",\n highlight: \"rgba(209, 213, 219, 0.15)\",\n muted: \"#2d3134\",\n success: \"#10b981\",\n warning: \"#f59e0b\",\n error: \"#ef4444\",\n info: \"#3b82f6\",\n border: \"rgba(156, 163, 175, 0.15)\",\n backgroundSecondary: \"#22252a\",\n backgroundTertiary: \"#2d3134\",\n backgroundLight: \"rgba(156, 163, 175, 0.05)\",\n backgroundHover: \"rgba(156, 163, 175, 0.1)\",\n surface: \"#1f2124\",\n textSecondary: \"#e5e7eb\",\n textTertiary: \"#6b7280\",\n textMuted: \"#4b5563\",\n highlightBg: \"rgba(245, 158, 11, 0.25)\",\n highlightBorder: \"rgba(245, 158, 11, 0.5)\"\n },\n buttons: {\n primary: {\n color: \"#1a1c1e\",\n bg: \"primary\",\n borderWidth: 0,\n \"&:hover\": {\n bg: \"#9ca3af\"\n }\n },\n secondary: {\n color: \"#e5e7eb\",\n bg: \"secondary\",\n borderWidth: 0,\n \"&:hover\": {\n bg: \"#4b5563\"\n }\n },\n ghost: {\n color: \"textSecondary\",\n bg: \"transparent\",\n \"&:hover\": {\n bg: \"backgroundHover\"\n }\n }\n },\n text: {\n heading: {\n fontFamily: \"heading\",\n fontWeight: \"heading\",\n lineHeight: \"heading\",\n color: \"textSecondary\"\n },\n body: {\n fontFamily: \"body\",\n fontWeight: \"body\",\n lineHeight: \"body\"\n },\n caption: {\n fontSize: 1,\n color: \"textTertiary\"\n }\n },\n cards: {\n primary: {\n bg: \"surface\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 3\n },\n secondary: {\n bg: \"backgroundSecondary\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 3\n }\n }\n};\n// src/ThemeProvider.tsx\nimport React, { createContext, useContext, useState, useEffect } from \"react\";\n\n// src/themeHelpers.ts\nfunction overrideColors(theme, colors) {\n return {\n ...theme,\n colors: {\n ...theme.colors,\n ...colors\n }\n };\n}\nfunction makeTheme(baseTheme, overrides) {\n return {\n ...baseTheme,\n ...overrides,\n colors: {\n ...baseTheme.colors,\n ...overrides.colors\n },\n fonts: {\n ...baseTheme.fonts,\n ...overrides.fonts\n }\n };\n}\nfunction addMode(theme, modeName, colors, baseMode) {\n let baseColors;\n if (baseMode && theme.modes && theme.modes[baseMode]) {\n baseColors = {\n ...theme.colors,\n ...theme.modes[baseMode]\n };\n } else {\n baseColors = theme.colors;\n }\n const newMode = {\n ...baseColors,\n ...colors\n };\n return {\n ...theme,\n modes: {\n ...theme.modes,\n [modeName]: newMode\n }\n };\n}\nfunction getMode(theme, mode) {\n if (!mode || !theme.modes || !theme.modes[mode]) {\n return theme.colors;\n }\n return {\n ...theme.colors,\n ...theme.modes[mode]\n };\n}\n\n// src/ThemeProvider.tsx\nvar ThemeContext;\nvar getThemeContext = () => {\n if (typeof window !== \"undefined\") {\n const globalWindow = window;\n if (!globalWindow.__principlemd_theme_context__) {\n globalWindow.__principlemd_theme_context__ = createContext(undefined);\n }\n return globalWindow.__principlemd_theme_context__;\n } else {\n if (!ThemeContext) {\n ThemeContext = createContext(undefined);\n }\n return ThemeContext;\n }\n};\nvar ThemeContextSingleton = getThemeContext();\nvar useTheme = () => {\n const context = useContext(ThemeContextSingleton);\n if (!context) {\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n }\n return context;\n};\nvar ThemeProvider = ({\n children,\n theme: customTheme = theme,\n initialMode\n}) => {\n const [mode, setMode] = useState(initialMode);\n const activeTheme = React.useMemo(() => {\n if (!mode || !customTheme.modes || !customTheme.modes[mode]) {\n return customTheme;\n }\n return {\n ...customTheme,\n colors: getMode(customTheme, mode)\n };\n }, [customTheme, mode]);\n useEffect(() => {\n if (!initialMode) {\n const savedMode = localStorage.getItem(\"principlemd-theme-mode\");\n if (savedMode) {\n setMode(savedMode);\n }\n }\n }, [initialMode]);\n useEffect(() => {\n if (mode) {\n localStorage.setItem(\"principlemd-theme-mode\", mode);\n } else {\n localStorage.removeItem(\"principlemd-theme-mode\");\n }\n }, [mode]);\n const value = {\n theme: activeTheme,\n mode,\n setMode\n };\n return /* @__PURE__ */ React.createElement(ThemeContextSingleton.Provider, {\n value\n }, children);\n};\nvar withTheme = (Component) => {\n return (props) => {\n const { theme: theme2 } = useTheme();\n return /* @__PURE__ */ React.createElement(Component, {\n ...props,\n theme: theme2\n });\n };\n};\n// src/utils.ts\nvar getColor = (theme2, colorKey) => {\n const colors = theme2.colors;\n const value = colors[colorKey];\n return typeof value === \"string\" ? value : colorKey;\n};\nvar getSpace = (theme2, index) => {\n return theme2.space[index] || 0;\n};\nvar getFontSize = (theme2, index) => {\n return theme2.fontSizes[index] || theme2.fontSizes[2];\n};\nvar getRadius = (theme2, index) => {\n return theme2.radii[index] || 0;\n};\nvar getShadow = (theme2, index) => {\n return theme2.shadows[index] || \"none\";\n};\nvar getZIndex = (theme2, index) => {\n return theme2.zIndices[index] || 0;\n};\nvar responsive = (values) => {\n return values.reduce((acc, value, index) => {\n if (index === 0) {\n return value;\n }\n return {\n ...acc,\n [`@media screen and (min-width: ${values[index - 1]})`]: value\n };\n }, {});\n};\nvar sx = (styles) => styles;\nvar createStyle = (theme2, styleObj) => {\n const processValue = (value) => {\n if (typeof value === \"string\") {\n if (value in theme2.colors) {\n return getColor(theme2, value);\n }\n return value;\n }\n if (typeof value === \"number\") {\n return value;\n }\n if (Array.isArray(value)) {\n return value.map(processValue);\n }\n if (typeof value === \"object\" && value !== null) {\n const processed2 = {};\n for (const [key, val] of Object.entries(value)) {\n processed2[key] = processValue(val);\n }\n return processed2;\n }\n return value;\n };\n const processed = {};\n for (const [key, val] of Object.entries(styleObj)) {\n processed[key] = processValue(val);\n }\n return processed;\n};\nvar mergeThemes = (baseTheme, ...overrides) => {\n return overrides.reduce((theme2, override) => ({\n space: override.space || theme2.space,\n fonts: { ...theme2.fonts, ...override.fonts || {} },\n fontSizes: override.fontSizes || theme2.fontSizes,\n fontWeights: { ...theme2.fontWeights, ...override.fontWeights || {} },\n lineHeights: { ...theme2.lineHeights, ...override.lineHeights || {} },\n breakpoints: override.breakpoints || theme2.breakpoints,\n sizes: override.sizes || theme2.sizes,\n radii: override.radii || theme2.radii,\n shadows: override.shadows || theme2.shadows,\n zIndices: override.zIndices || theme2.zIndices,\n colors: {\n ...theme2.colors,\n ...override.colors || {}\n },\n buttons: { ...theme2.buttons, ...override.buttons || {} },\n text: { ...theme2.text, ...override.text || {} },\n cards: { ...theme2.cards, ...override.cards || {} }\n }), baseTheme);\n};\n// src/ThemeShowcase.tsx\nimport React2 from \"react\";\nvar ThemeShowcase = ({\n theme: theme2,\n title,\n showValues = true,\n sections = [\"colors\", \"typography\", \"spacing\", \"shadows\", \"radii\"]\n}) => {\n const containerStyle = {\n fontFamily: theme2.fonts.body,\n color: theme2.colors.text,\n backgroundColor: theme2.colors.background,\n padding: theme2.space[4],\n minHeight: \"100vh\"\n };\n const sectionStyle = {\n marginBottom: theme2.space[5],\n padding: theme2.space[4],\n backgroundColor: theme2.colors.surface || theme2.colors.backgroundSecondary,\n borderRadius: theme2.radii[2],\n border: `1px solid ${theme2.colors.border}`\n };\n const headingStyle = {\n fontFamily: theme2.fonts.heading,\n fontSize: theme2.fontSizes[5],\n fontWeight: theme2.fontWeights.heading,\n marginBottom: theme2.space[3],\n color: theme2.colors.primary\n };\n const subheadingStyle = {\n fontFamily: theme2.fonts.heading,\n fontSize: theme2.fontSizes[3],\n fontWeight: theme2.fontWeights.medium,\n marginBottom: theme2.space[2],\n marginTop: theme2.space[3],\n color: theme2.colors.text\n };\n return /* @__PURE__ */ React2.createElement(\"div\", {\n style: containerStyle\n }, title && /* @__PURE__ */ React2.createElement(\"h1\", {\n style: {\n ...headingStyle,\n fontSize: theme2.fontSizes[6],\n marginBottom: theme2.space[4]\n }\n }, title), sections.includes(\"colors\") && /* @__PURE__ */ React2.createElement(\"div\", {\n style: sectionStyle\n }, /* @__PURE__ */ React2.createElement(\"h2\", {\n style: headingStyle\n }, \"Colors\"), /* @__PURE__ */ React2.createElement(\"h3\", {\n style: subheadingStyle\n }, \"Primary Colors\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fill, minmax(200px, 1fr))\",\n gap: theme2.space[3],\n marginBottom: theme2.space[3]\n }\n }, [\"text\", \"background\", \"primary\", \"secondary\", \"accent\", \"muted\"].map((key) => {\n const color = theme2.colors[key];\n if (!color)\n return null;\n return /* @__PURE__ */ React2.createElement(\"div\", {\n key,\n style: {\n display: \"flex\",\n alignItems: \"center\",\n padding: theme2.space[2],\n backgroundColor: theme2.colors.backgroundLight || theme2.colors.backgroundTertiary,\n borderRadius: theme2.radii[1]\n }\n }, /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n width: 40,\n height: 40,\n backgroundColor: color,\n border: `1px solid ${theme2.colors.border}`,\n borderRadius: theme2.radii[1],\n marginRight: theme2.space[2]\n }\n }), /* @__PURE__ */ React2.createElement(\"div\", null, /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[1],\n fontWeight: theme2.fontWeights.medium\n }\n }, key), showValues && /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[0],\n color: theme2.colors.textSecondary\n }\n }, color)));\n })), /* @__PURE__ */ React2.createElement(\"h3\", {\n style: subheadingStyle\n }, \"Status Colors\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fill, minmax(200px, 1fr))\",\n gap: theme2.space[3],\n marginBottom: theme2.space[3]\n }\n }, [\"success\", \"warning\", \"error\", \"info\"].map((key) => {\n const color = theme2.colors[key];\n if (!color)\n return null;\n return /* @__PURE__ */ React2.createElement(\"div\", {\n key,\n style: {\n display: \"flex\",\n alignItems: \"center\",\n padding: theme2.space[2],\n backgroundColor: theme2.colors.backgroundLight || theme2.colors.backgroundTertiary,\n borderRadius: theme2.radii[1]\n }\n }, /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n width: 40,\n height: 40,\n backgroundColor: color,\n border: `1px solid ${theme2.colors.border}`,\n borderRadius: theme2.radii[1],\n marginRight: theme2.space[2]\n }\n }), /* @__PURE__ */ React2.createElement(\"div\", null, /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[1],\n fontWeight: theme2.fontWeights.medium\n }\n }, key), showValues && /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[0],\n color: theme2.colors.textSecondary\n }\n }, color)));\n })), /* @__PURE__ */ React2.createElement(\"h3\", {\n style: subheadingStyle\n }, \"Background Colors\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fill, minmax(200px, 1fr))\",\n gap: theme2.space[3]\n }\n }, [\"backgroundSecondary\", \"backgroundTertiary\", \"backgroundLight\", \"backgroundHover\", \"surface\"].map((key) => {\n const color = theme2.colors[key];\n if (!color)\n return null;\n return /* @__PURE__ */ React2.createElement(\"div\", {\n key,\n style: {\n padding: theme2.space[3],\n backgroundColor: color,\n border: `1px solid ${theme2.colors.border}`,\n borderRadius: theme2.radii[1]\n }\n }, /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[1],\n fontWeight: theme2.fontWeights.medium\n }\n }, key), showValues && /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[0],\n color: theme2.colors.textSecondary,\n marginTop: theme2.space[1]\n }\n }, color));\n }))), sections.includes(\"typography\") && /* @__PURE__ */ React2.createElement(\"div\", {\n style: sectionStyle\n }, /* @__PURE__ */ React2.createElement(\"h2\", {\n style: headingStyle\n }, \"Typography\"), /* @__PURE__ */ React2.createElement(\"h3\", {\n style: subheadingStyle\n }, \"Font Families\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: { marginBottom: theme2.space[4] }\n }, /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.heading,\n fontSize: theme2.fontSizes[4],\n marginBottom: theme2.space[2]\n }\n }, \"Heading Font: \", showValues && /* @__PURE__ */ React2.createElement(\"span\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[1],\n color: theme2.colors.textSecondary\n }\n }, \" \", theme2.fonts.heading)), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.body,\n fontSize: theme2.fontSizes[2],\n marginBottom: theme2.space[2]\n }\n }, \"Body Font: \", showValues && /* @__PURE__ */ React2.createElement(\"span\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[1],\n color: theme2.colors.textSecondary\n }\n }, \" \", theme2.fonts.body)), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[2]\n }\n }, \"Monospace Font: \", showValues && /* @__PURE__ */ React2.createElement(\"span\", {\n style: {\n fontSize: theme2.fontSizes[1],\n color: theme2.colors.textSecondary\n }\n }, \" \", theme2.fonts.monospace))), /* @__PURE__ */ React2.createElement(\"h3\", {\n style: subheadingStyle\n }, \"Font Sizes\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: { marginBottom: theme2.space[4] }\n }, theme2.fontSizes.map((size, index) => /* @__PURE__ */ React2.createElement(\"div\", {\n key: index,\n style: {\n fontSize: size,\n lineHeight: theme2.lineHeights.body,\n marginBottom: theme2.space[1]\n }\n }, \"Size \", index, \": Sample Text \", showValues && `(${size}px)`))), /* @__PURE__ */ React2.createElement(\"h3\", {\n style: subheadingStyle\n }, \"Font Weights\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(150px, 1fr))\",\n gap: theme2.space[2]\n }\n }, Object.entries(theme2.fontWeights).map(([name, weight]) => /* @__PURE__ */ React2.createElement(\"div\", {\n key: name,\n style: {\n fontWeight: weight,\n fontSize: theme2.fontSizes[2]\n }\n }, name, \" \", showValues && `(${weight})`)))), sections.includes(\"spacing\") && /* @__PURE__ */ React2.createElement(\"div\", {\n style: sectionStyle\n }, /* @__PURE__ */ React2.createElement(\"h2\", {\n style: headingStyle\n }, \"Spacing\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: { display: \"flex\", flexDirection: \"column\", gap: theme2.space[2] }\n }, theme2.space.map((space, index) => /* @__PURE__ */ React2.createElement(\"div\", {\n key: index,\n style: { display: \"flex\", alignItems: \"center\" }\n }, /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n width: 60,\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[1],\n color: theme2.colors.textSecondary\n }\n }, \"[\", index, \"]\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n height: 24,\n width: space,\n backgroundColor: theme2.colors.primary,\n borderRadius: theme2.radii[1]\n }\n }), showValues && /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n marginLeft: theme2.space[2],\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[1],\n color: theme2.colors.textSecondary\n }\n }, space, \"px\"))))), sections.includes(\"radii\") && /* @__PURE__ */ React2.createElement(\"div\", {\n style: sectionStyle\n }, /* @__PURE__ */ React2.createElement(\"h2\", {\n style: headingStyle\n }, \"Border Radii\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fill, minmax(100px, 1fr))\",\n gap: theme2.space[3]\n }\n }, theme2.radii.map((radius, index) => /* @__PURE__ */ React2.createElement(\"div\", {\n key: index,\n style: { textAlign: \"center\" }\n }, /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n width: 80,\n height: 80,\n backgroundColor: theme2.colors.primary,\n borderRadius: radius,\n marginBottom: theme2.space[1],\n margin: \"0 auto\"\n }\n }), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[0],\n color: theme2.colors.textSecondary\n }\n }, \"[\", index, \"] \", showValues && `${radius}px`))))), sections.includes(\"shadows\") && /* @__PURE__ */ React2.createElement(\"div\", {\n style: sectionStyle\n }, /* @__PURE__ */ React2.createElement(\"h2\", {\n style: headingStyle\n }, \"Shadows\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fill, minmax(150px, 1fr))\",\n gap: theme2.space[4]\n }\n }, theme2.shadows.map((shadow, index) => /* @__PURE__ */ React2.createElement(\"div\", {\n key: index,\n style: { textAlign: \"center\" }\n }, /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n width: 100,\n height: 100,\n backgroundColor: theme2.colors.background,\n boxShadow: shadow,\n borderRadius: theme2.radii[2],\n margin: \"0 auto\",\n marginBottom: theme2.space[2],\n border: `1px solid ${theme2.colors.border}`\n }\n }), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[0],\n color: theme2.colors.textSecondary\n }\n }, \"Shadow [\", index, \"]\"), showValues && /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[0],\n color: theme2.colors.textMuted,\n marginTop: theme2.space[1]\n }\n }, shadow === \"none\" ? \"none\" : \"...\"))))), theme2.modes && Object.keys(theme2.modes).length > 0 && /* @__PURE__ */ React2.createElement(\"div\", {\n style: sectionStyle\n }, /* @__PURE__ */ React2.createElement(\"h2\", {\n style: headingStyle\n }, \"Available Modes\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n display: \"flex\",\n gap: theme2.space[2],\n flexWrap: \"wrap\"\n }\n }, /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n padding: `${theme2.space[2]}px ${theme2.space[3]}px`,\n backgroundColor: theme2.colors.primary,\n color: \"#ffffff\",\n borderRadius: theme2.radii[2],\n fontFamily: theme2.fonts.body,\n fontSize: theme2.fontSizes[1]\n }\n }, \"default\"), Object.keys(theme2.modes).map((modeName) => /* @__PURE__ */ React2.createElement(\"div\", {\n key: modeName,\n style: {\n padding: `${theme2.space[2]}px ${theme2.space[3]}px`,\n backgroundColor: theme2.colors.secondary,\n color: theme2.colors.text,\n borderRadius: theme2.radii[2],\n fontFamily: theme2.fonts.body,\n fontSize: theme2.fontSizes[1]\n }\n }, modeName)))));\n};\n\n// src/index.ts\nvar theme = terminalTheme;\nfunction scaleThemeFonts(theme2, scale) {\n const currentScale = theme2.fontScale || 1;\n const effectiveScale = scale / currentScale;\n return {\n ...theme2,\n fontSizes: theme2.fontSizes.map((size) => Math.round(size * effectiveScale)),\n fontScale: scale\n };\n}\nfunction increaseFontScale(theme2) {\n const currentScale = theme2.fontScale || 1;\n const newScale = Math.min(currentScale * 1.1, 2);\n return scaleThemeFonts(theme2, newScale);\n}\nfunction decreaseFontScale(theme2) {\n const currentScale = theme2.fontScale || 1;\n const newScale = Math.max(currentScale * 0.9, 0.5);\n return scaleThemeFonts(theme2, newScale);\n}\nfunction resetFontScale(theme2) {\n return scaleThemeFonts(theme2, 1);\n}\nvar src_default = theme;\nexport {\n withTheme,\n useTheme,\n theme,\n terminalTheme,\n sx,\n slateTheme,\n scaleThemeFonts,\n responsive,\n resetFontScale,\n regalTheme,\n overrideColors,\n mergeThemes,\n matrixTheme,\n matrixMinimalTheme,\n makeTheme,\n landingPageTheme,\n landingPageLightTheme,\n increaseFontScale,\n glassmorphismTheme,\n getZIndex,\n getSpace,\n getShadow,\n getRadius,\n getMode,\n getFontSize,\n getColor,\n defaultTerminalTheme,\n defaultMarkdownTheme,\n defaultEditorTheme,\n src_default as default,\n decreaseFontScale,\n createStyle,\n addMode,\n ThemeShowcase,\n ThemeProvider\n};\n","/**\n * @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 [\"path\", { d: \"M10 12h4\", key: \"a56b0p\" }],\n [\"path\", { d: \"M10 8h4\", key: \"1sr2af\" }],\n [\"path\", { d: \"M14 21v-3a2 2 0 0 0-4 0v3\", key: \"1rgiei\" }],\n [\n \"path\",\n {\n d: \"M6 10H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-2\",\n key: \"secmi2\"\n }\n ],\n [\"path\", { d: \"M6 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16\", key: \"16ra0t\" }]\n];\nconst Building2 = createLucideIcon(\"building-2\", __iconNode);\n\nexport { __iconNode, Building2 as default };\n//# sourceMappingURL=building-2.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: \"M20 6 9 17l-5-5\", key: \"1gmf2c\" }]];\nconst Check = createLucideIcon(\"check\", __iconNode);\n\nexport { __iconNode, Check as default };\n//# sourceMappingURL=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 [\"rect\", { width: \"14\", height: \"14\", x: \"8\", y: \"8\", rx: \"2\", ry: \"2\", key: \"17jyea\" }],\n [\"path\", { d: \"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\", key: \"zix9uf\" }]\n];\nconst Copy = createLucideIcon(\"copy\", __iconNode);\n\nexport { __iconNode, Copy as default };\n//# sourceMappingURL=copy.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: \"3\", key: \"1v7zrd\" }],\n [\"path\", { d: \"M3 7V5a2 2 0 0 1 2-2h2\", key: \"aa7l1z\" }],\n [\"path\", { d: \"M17 3h2a2 2 0 0 1 2 2v2\", key: \"4qcy5o\" }],\n [\"path\", { d: \"M21 17v2a2 2 0 0 1-2 2h-2\", key: \"6vwrx8\" }],\n [\"path\", { d: \"M7 21H5a2 2 0 0 1-2-2v-2\", key: \"ioqczr\" }]\n];\nconst Focus = createLucideIcon(\"focus\", __iconNode);\n\nexport { __iconNode, Focus as default };\n//# sourceMappingURL=focus.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: \"M9 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v5\",\n key: \"1w6njk\"\n }\n ],\n [\"circle\", { cx: \"13\", cy: \"12\", r: \"2\", key: \"1j92g6\" }],\n [\"path\", { d: \"M18 19c-2.8 0-5-2.2-5-5v8\", key: \"pkpw2h\" }],\n [\"circle\", { cx: \"20\", cy: \"19\", r: \"2\", key: \"1obnsp\" }]\n];\nconst FolderGit2 = createLucideIcon(\"folder-git-2\", __iconNode);\n\nexport { __iconNode, FolderGit2 as default };\n//# sourceMappingURL=folder-git-2.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 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2\",\n key: \"usdka0\"\n }\n ]\n];\nconst FolderOpen = createLucideIcon(\"folder-open\", __iconNode);\n\nexport { __iconNode, FolderOpen as default };\n//# sourceMappingURL=folder-open.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: \"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 Folder = createLucideIcon(\"folder\", __iconNode);\n\nexport { __iconNode, Folder as default };\n//# sourceMappingURL=folder.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 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8\", key: \"5wwlr5\" }],\n [\n \"path\",\n {\n d: \"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\",\n key: \"r6nss1\"\n }\n ]\n];\nconst House = createLucideIcon(\"house\", __iconNode);\n\nexport { __iconNode, House as default };\n//# sourceMappingURL=house.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","/**\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: \"M8 6L12 2L16 6\", key: \"1yvkyx\" }],\n [\"path\", { d: \"M12 2V22\", key: \"r89rzk\" }]\n];\nconst MoveUp = createLucideIcon(\"move-up\", __iconNode);\n\nexport { __iconNode, MoveUp as default };\n//# sourceMappingURL=move-up.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: \"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z\",\n key: \"1a8usu\"\n }\n ],\n [\"path\", { d: \"m15 5 4 4\", key: \"1mk7zo\" }]\n];\nconst Pencil = createLucideIcon(\"pencil\", __iconNode);\n\nexport { __iconNode, Pencil as default };\n//# sourceMappingURL=pencil.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 12h14\", key: \"1ays0h\" }],\n [\"path\", { d: \"M12 5v14\", key: \"s699le\" }]\n];\nconst Plus = createLucideIcon(\"plus\", __iconNode);\n\nexport { __iconNode, Plus as default };\n//# sourceMappingURL=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: \"m21 21-4.34-4.34\", key: \"14j7rj\" }],\n [\"circle\", { cx: \"11\", cy: \"11\", r: \"8\", key: \"4ej97u\" }]\n];\nconst Search = createLucideIcon(\"search\", __iconNode);\n\nexport { __iconNode, Search as default };\n//# sourceMappingURL=search.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: \"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\",\n key: \"wmoenq\"\n }\n ],\n [\"path\", { d: \"M12 9v4\", key: \"juzpu7\" }],\n [\"path\", { d: \"M12 17h.01\", key: \"p32p05\" }]\n];\nconst TriangleAlert = createLucideIcon(\"triangle-alert\", __iconNode);\n\nexport { __iconNode, TriangleAlert as default };\n//# sourceMappingURL=triangle-alert.js.map\n","/**\n * @license lucide-react v0.552.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M18 6 6 18\", key: \"1bl5f8\" }],\n [\"path\", { d: \"m6 6 12 12\", key: \"d8bk6v\" }]\n];\nconst X = createLucideIcon(\"x\", __iconNode);\n\nexport { __iconNode, X as default };\n//# sourceMappingURL=x.js.map\n","import React from 'react';\nimport { useTheme } from '@principal-ade/industry-theme';\nimport type { RepositoryAvatarProps } from './types';\n\n/**\n * RepositoryAvatar - Displays repository owner avatar\n *\n * Priority:\n * 1. customAvatarUrl prop\n * 2. GitHub avatar from owner username\n * 3. Fallback icon or initial\n */\nexport const RepositoryAvatar: React.FC<RepositoryAvatarProps> = ({\n owner,\n customAvatarUrl,\n size = 32,\n fallbackIcon,\n}) => {\n const { theme } = useTheme();\n\n // Use rounded squares for avatar\n const borderRadius = `${Math.min(8, size / 4)}px`;\n\n // Determine avatar URL\n const avatarUrl = customAvatarUrl || (owner ? `https://github.com/${owner}.png` : null);\n\n const getContent = () => {\n if (avatarUrl) {\n return (\n <img\n src={avatarUrl}\n alt={owner || 'Repository'}\n style={{\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n }}\n onError={(e) => {\n // Hide broken image and show fallback\n e.currentTarget.style.display = 'none';\n }}\n />\n );\n }\n\n if (fallbackIcon) {\n return fallbackIcon;\n }\n\n return null;\n };\n\n return (\n <div\n style={{\n width: `${size}px`,\n height: `${size}px`,\n borderRadius,\n backgroundColor: theme.colors.backgroundTertiary,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n overflow: 'hidden',\n flexShrink: 0,\n }}\n >\n {getContent()}\n </div>\n );\n};\n","import React, { useState } from 'react';\nimport { useTheme } from '@principal-ade/industry-theme';\nimport { FolderOpen, Focus, Loader2, X, Copy, Check, Plus } from 'lucide-react';\nimport { RepositoryAvatar } from './RepositoryAvatar';\nimport type { LocalProjectCardProps } from './types';\nimport './LocalProjectsPanel.css';\n\n/**\n * Language color mapping for visual indicators\n */\nconst LANGUAGE_COLORS: Record<string, string> = {\n TypeScript: '#3178c6',\n JavaScript: '#f7df1e',\n Python: '#3776ab',\n Java: '#b07219',\n Go: '#00add8',\n Rust: '#dea584',\n Ruby: '#cc342d',\n PHP: '#777bb4',\n 'C++': '#00599c',\n C: '#555555',\n 'C#': '#239120',\n Swift: '#fa7343',\n Kotlin: '#7f52ff',\n Dart: '#0175c2',\n Vue: '#4fc08d',\n HTML: '#e34c26',\n CSS: '#1572b6',\n Shell: '#89e051',\n PowerShell: '#012456',\n};\n\nconst getLanguageColor = (language: string): string => {\n return LANGUAGE_COLORS[language] || '#6e7681';\n};\n\n/**\n * LocalProjectCard - Individual project card with actions\n *\n * Displays repository info and provides action buttons based on mode:\n * - default: Open and Remove buttons\n * - add-to-workspace: Add button only\n * - minimal: Open button only\n */\nexport const LocalProjectCard: React.FC<LocalProjectCardProps> = ({\n entry,\n actionMode = 'default',\n isSelected = false,\n onSelect,\n onOpen,\n onRemove,\n onAddToWorkspace,\n isLoading = false,\n windowState = 'closed',\n compact: _compact = false,\n}) => {\n const { theme } = useTheme();\n const [copiedPath, setCopiedPath] = useState(false);\n\n const highlightColor = theme.colors.primary;\n\n // Get avatar URL from GitHub owner\n const avatarUrl = entry.github?.owner\n ? `https://github.com/${entry.github.owner}.png`\n : null;\n\n const handleCardClick = () => {\n onSelect?.(entry);\n };\n\n const handleOpenClick = (e: React.MouseEvent) => {\n e.stopPropagation();\n onOpen?.(entry);\n };\n\n const handleRemoveClick = (e: React.MouseEvent) => {\n e.stopPropagation();\n onRemove?.(entry);\n };\n\n const handleAddToWorkspaceClick = (e: React.MouseEvent) => {\n e.stopPropagation();\n onAddToWorkspace?.(entry);\n };\n\n const handleCopyPath = async (e: React.MouseEvent) => {\n e.stopPropagation();\n try {\n await navigator.clipboard.writeText(entry.path);\n setCopiedPath(true);\n setTimeout(() => setCopiedPath(false), 2000);\n } catch (err) {\n console.error('Failed to copy path:', err);\n }\n };\n\n const renderActionButtons = (isCompact = false) => {\n const buttonFlex = isCompact ? 1 : undefined;\n\n if (actionMode === 'add-to-workspace') {\n return (\n <button\n type=\"button\"\n onClick={handleAddToWorkspaceClick}\n disabled={isLoading}\n title=\"Add to workspace\"\n style={{\n flex: buttonFlex,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '6px 10px',\n gap: '4px',\n borderRadius: '4px',\n border: `1px solid ${theme.colors.primary || '#3b82f6'}`,\n backgroundColor: `${theme.colors.primary || '#3b82f6'}15`,\n color: theme.colors.primary || '#3b82f6',\n fontSize: `${theme.fontSizes[0]}px`,\n fontWeight: theme.fontWeights.medium,\n cursor: isLoading ? 'wait' : 'pointer',\n opacity: isLoading ? 0.6 : 1,\n transition: 'all 0.15s ease',\n }}\n >\n {isLoading ? (\n <Loader2 size={12} className=\"animate-spin\" />\n ) : (\n <Plus size={12} />\n )}\n {isLoading ? 'Adding...' : 'Add'}\n </button>\n );\n }\n\n // Default and minimal modes - show Open button\n return (\n <>\n <button\n type=\"button\"\n onClick={handleOpenClick}\n title={\n windowState === 'ready'\n ? 'Focus window'\n : windowState === 'opening'\n ? 'Window is opening...'\n : 'Open locally'\n }\n disabled={windowState === 'opening'}\n style={{\n flex: buttonFlex,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '6px 10px',\n gap: '4px',\n borderRadius: '4px',\n border: `1px solid ${theme.colors.success || '#10b981'}`,\n backgroundColor: `${theme.colors.success || '#10b981'}15`,\n color: theme.colors.success || '#10b981',\n fontSize: `${theme.fontSizes[0]}px`,\n fontWeight: theme.fontWeights.medium,\n cursor: windowState === 'opening' ? 'wait' : 'pointer',\n opacity: windowState === 'opening' ? 0.6 : 1,\n transition: 'all 0.15s ease',\n }}\n >\n {windowState === 'ready' ? (\n <Focus size={12} />\n ) : windowState === 'opening' ? (\n <Loader2 size={12} className=\"animate-spin\" />\n ) : (\n <FolderOpen size={12} />\n )}\n {windowState === 'ready'\n ? 'Focus'\n : windowState === 'opening'\n ? 'Opening...'\n : 'Open'}\n </button>\n\n {/* Remove button - only in default mode */}\n {actionMode === 'default' && onRemove && (\n <button\n type=\"button\"\n onClick={handleRemoveClick}\n disabled={isLoading}\n title=\"Remove from local projects\"\n style={{\n flex: buttonFlex,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n minWidth: isCompact ? undefined : '28px',\n height: '28px',\n padding: isCompact ? '6px 10px' : 0,\n gap: '4px',\n borderRadius: '4px',\n border: isCompact ? `1px solid ${theme.colors.error || '#ef4444'}` : 'none',\n backgroundColor: isCompact ? `${theme.colors.error || '#ef4444'}15` : 'transparent',\n color: isCompact ? theme.colors.error || '#ef4444' : theme.colors.textSecondary,\n fontSize: `${theme.fontSizes[0]}px`,\n fontWeight: theme.fontWeights.medium,\n cursor: isLoading ? 'wait' : 'pointer',\n opacity: isLoading ? 0.6 : 1,\n transition: 'all 0.15s ease',\n }}\n >\n {isLoading ? <Loader2 size={14} className=\"animate-spin\" /> : <X size={14} />}\n {isCompact && (isLoading ? 'Removing...' : 'Remove')}\n </button>\n )}\n </>\n );\n };\n\n return (\n <div\n className=\"local-project-card\"\n style={{\n padding: '8px 12px',\n borderRadius: '4px',\n backgroundColor: isSelected ? `${highlightColor}15` : 'transparent',\n border: isSelected\n ? `1px solid ${highlightColor}40`\n : '1px solid transparent',\n cursor: 'pointer',\n transition: 'background-color 0.15s',\n fontFamily: theme.fonts.body,\n }}\n onClick={handleCardClick}\n >\n {/* Top row: Avatar + Name (+ buttons in non-compact) */}\n <div className=\"local-project-card__content\">\n {/* Owner avatar */}\n <RepositoryAvatar\n customAvatarUrl={avatarUrl}\n size={32}\n fallbackIcon={\n <div\n style={{\n color: theme.colors.textSecondary,\n fontSize: `${theme.fontSizes[0]}px`,\n fontWeight: theme.fontWeights.semibold,\n }}\n >\n {entry.name[0]?.toUpperCase() || '?'}\n </div>\n }\n />\n\n {/* Name and info */}\n <div className=\"local-project-card__info\">\n {/* Name */}\n <span\n style={{\n fontSize: `${theme.fontSizes[2]}px`,\n fontWeight: theme.fontWeights.medium,\n color: theme.colors.text,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n textDecoration: 'underline',\n textDecorationColor: entry.github?.primaryLanguage\n ? getLanguageColor(entry.github.primaryLanguage)\n : theme.colors.textSecondary,\n textUnderlineOffset: '3px',\n }}\n >\n {entry.name}\n </span>\n\n {/* Path with copy - hidden in compact via CSS */}\n <div\n className=\"local-project-card__path\"\n onClick={handleCopyPath}\n style={{\n fontSize: `${theme.fontSizes[0]}px`,\n fontFamily: theme.fonts.monospace,\n color: copiedPath\n ? theme.colors.success || '#10b981'\n : theme.colors.textTertiary || theme.colors.textSecondary,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n cursor: 'pointer',\n alignItems: 'center',\n gap: '4px',\n transition: 'color 0.15s ease',\n }}\n title={copiedPath ? 'Copied!' : `Click to copy: ${entry.path}`}\n >\n {copiedPath ? <Check size={12} /> : <Copy size={12} />}\n {entry.path}\n </div>\n\n {/* Description - hidden in compact via CSS */}\n {entry.github?.description && (\n <div\n className=\"local-project-card__meta\"\n style={{\n alignItems: 'center',\n gap: '12px',\n fontSize: `${theme.fontSizes[0]}px`,\n color: theme.colors.textSecondary,\n }}\n >\n <span\n style={{\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}\n >\n {entry.github.description}\n </span>\n </div>\n )}\n </div>\n\n {/* Action buttons - inline, hidden in compact via CSS */}\n <div className=\"local-project-card__actions\">\n {renderActionButtons(false)}\n </div>\n </div>\n\n {/* Action buttons - stacked below, shown only in compact via CSS */}\n <div className=\"local-project-card__actions--stacked\">\n {renderActionButtons(true)}\n </div>\n </div>\n );\n};\n","import React, { useMemo, useState, useEffect, useCallback } from 'react';\nimport { ThemeProvider, useTheme } from '@principal-ade/industry-theme';\nimport { Search, Plus, Building2, FolderGit2 } from 'lucide-react';\nimport './LocalProjectsPanel.css';\nimport type { AlexandriaEntry } from '@principal-ai/alexandria-core-library/types';\nimport type { PanelComponentProps } from '../../types';\nimport { LocalProjectCard } from './LocalProjectCard';\nimport type {\n AlexandriaRepositoriesSlice,\n LocalProjectsPanelActions,\n RepositoryWindowState,\n} from './types';\n\n// Panel event prefix\nconst PANEL_ID = 'industry-theme.local-projects';\n\n// Helper to create panel events with required fields\nconst createPanelEvent = <T,>(type: string, payload: T) => ({\n type,\n source: PANEL_ID,\n timestamp: Date.now(),\n payload,\n});\n\n/**\n * LocalProjectsPanelContent - Internal component that uses theme\n */\nconst LocalProjectsPanelContent: React.FC<PanelComponentProps> = ({\n context,\n actions,\n events,\n}) => {\n const { theme } = useTheme();\n const [filter, setFilter] = useState('');\n const [isAdding, setIsAdding] = useState(false);\n const [selectedEntry, setSelectedEntry] = useState<AlexandriaEntry | null>(null);\n const [windowStates, setWindowStates] = useState<Map<string, RepositoryWindowState>>(new Map());\n const [sortByOrg, setSortByOrg] = useState(false);\n\n // Get extended actions (type assertion for panel-specific actions)\n const panelActions = actions as LocalProjectsPanelActions;\n\n // Get repositories from context slice\n const repoSlice = context.getSlice<AlexandriaRepositoriesSlice>('alexandriaRepositories');\n const repositories = useMemo(\n () => repoSlice?.data?.repositories || [],\n [repoSlice?.data?.repositories]\n );\n const loading = repoSlice?.loading ?? false;\n\n // Handle open repository\n const handleOpenRepository = useCallback(\n async (entry: AlexandriaEntry) => {\n if (!panelActions.openRepository) {\n console.warn('Open repository action not available');\n return;\n }\n\n // Update window state to opening\n setWindowStates((prev) => new Map(prev).set(entry.path, 'opening'));\n\n try {\n await panelActions.openRepository(entry);\n\n // Update window state to ready\n setWindowStates((prev) => new Map(prev).set(entry.path, 'ready'));\n\n // Emit event\n events.emit(createPanelEvent(`${PANEL_ID}:repository-opened`, { entry }));\n } catch (error) {\n console.error('Error opening repository:', error);\n setWindowStates((prev) => new Map(prev).set(entry.path, 'closed'));\n }\n },\n [panelActions, events]\n );\n\n // Subscribe to panel events\n useEffect(() => {\n const unsubscribers = [\n // Filter event from tools\n events.on<{ filter: string }>(`${PANEL_ID}:filter`, (event) => {\n if (event.payload?.filter !== undefined) {\n setFilter(event.payload.filter);\n }\n }),\n\n // Select repository event from tools\n events.on<{ identifier: string }>(`${PANEL_ID}:select-repository`, (event) => {\n const identifier = event.payload?.identifier;\n if (identifier) {\n const entry = repositories.find(\n (r) => r.name === identifier || r.path === identifier\n );\n if (entry) {\n setSelectedEntry(entry);\n events.emit(createPanelEvent(`${PANEL_ID}:repository-selected`, { entry }));\n }\n }\n }),\n\n // Open repository event from tools\n events.on<{ identifier: string }>(`${PANEL_ID}:open-repository`, (event) => {\n const identifier = event.payload?.identifier;\n if (identifier) {\n const entry = repositories.find(\n (r) => r.name === identifier || r.path === identifier\n );\n if (entry) {\n handleOpenRepository(entry);\n }\n }\n }),\n ];\n\n return () => unsubscribers.forEach((unsub) => unsub());\n }, [events, repositories, handleOpenRepository]);\n\n // Handle add project\n const handleAddProject = async () => {\n if (!panelActions.selectDirectory || !panelActions.registerRepository) {\n console.warn('Add project actions not available');\n return;\n }\n\n try {\n setIsAdding(true);\n const result = await panelActions.selectDirectory();\n\n if (!result) {\n return;\n }\n\n await panelActions.registerRepository(result.name, result.path);\n\n // Refresh the repositories\n await context.refresh('repository', 'alexandriaRepositories');\n } catch (error) {\n console.error('Failed to add project:', error);\n } finally {\n setIsAdding(false);\n }\n };\n\n // Handle remove repository\n const handleRemoveRepository = async (entry: AlexandriaEntry) => {\n if (!panelActions.removeRepository) {\n console.warn('Remove repository action not available');\n return;\n }\n\n try {\n await panelActions.removeRepository(entry.name, false);\n await context.refresh('repository', 'alexandriaRepositories');\n } catch (error) {\n console.error('Failed to remove repository:', error);\n }\n };\n\n // Handle select repository\n const handleSelectRepository = (entry: AlexandriaEntry) => {\n setSelectedEntry(entry);\n events.emit(createPanelEvent(`${PANEL_ID}:repository-selected`, { entry }));\n };\n\n // Filter and sort repositories\n const normalizedFilter = filter.trim().toLowerCase();\n\n const filteredAndSortedRepositories = useMemo(() => {\n // Filter repositories by search term\n const filtered = repositories.filter((entry) => {\n if (!normalizedFilter) return true;\n\n const haystack = [\n entry.name,\n entry.github?.name ?? '',\n entry.github?.owner ?? '',\n entry.remoteUrl ?? '',\n ]\n .join(' ')\n .toLowerCase();\n\n return haystack.includes(normalizedFilter);\n });\n\n // Sort alphabetically\n return filtered.sort((a, b) => {\n if (sortByOrg) {\n // Sort by org/owner first, then by repo name\n const aOrg = (a.github?.owner ?? '').toLowerCase();\n const bOrg = (b.github?.owner ?? '').toLowerCase();\n const orgCompare = aOrg.localeCompare(bOrg);\n if (orgCompare !== 0) return orgCompare;\n }\n // Sort by repo name\n return a.name.toLowerCase().localeCompare(b.name.toLowerCase());\n });\n }, [repositories, normalizedFilter, sortByOrg]);\n\n const baseContainerStyle: React.CSSProperties = {\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n backgroundColor: theme.colors.backgroundSecondary,\n };\n\n const contentContainerStyle: React.CSSProperties = {\n ...baseContainerStyle,\n padding: '16px',\n gap: '12px',\n };\n\n // Loading state\n if (loading) {\n return (\n <div style={baseContainerStyle}>\n <div\n style={{\n flex: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '32px',\n textAlign: 'center',\n }}\n >\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: '16px',\n maxWidth: '360px',\n }}\n >\n <h3\n style={{\n margin: 0,\n color: theme.colors.text,\n fontSize: `${theme.fontSizes[3]}px`,\n fontWeight: theme.fontWeights.semibold,\n fontFamily: theme.fonts.body,\n }}\n >\n Loading local projects...\n </h3>\n </div>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"local-projects-panel\" style={contentContainerStyle}>\n {/* Search bar with sort toggle and add button */}\n <div style={{ display: 'flex', gap: '8px', alignItems: 'center' }}>\n <div style={{ position: 'relative', flex: 1, minWidth: 0 }}>\n <Search\n size={16}\n style={{\n position: 'absolute',\n top: '50%',\n left: '12px',\n transform: 'translateY(-50%)',\n color: theme.colors.textSecondary,\n pointerEvents: 'none',\n zIndex: 1,\n }}\n />\n <input\n type=\"text\"\n value={filter}\n placeholder=\"Filter local projects...\"\n onChange={(event) => setFilter(event.target.value)}\n style={{\n width: '100%',\n boxSizing: 'border-box',\n padding: '8px 12px 8px 36px',\n borderRadius: '6px',\n border: `1px solid ${theme.colors.border}`,\n backgroundColor: theme.colors.background,\n color: theme.colors.text,\n fontSize: `${theme.fontSizes[1]}px`,\n fontFamily: theme.fonts.body,\n outline: 'none',\n }}\n />\n </div>\n <button\n onClick={() => setSortByOrg(!sortByOrg)}\n title={sortByOrg ? 'Sorting by organization' : 'Sorting by repo name'}\n style={{\n padding: '8px',\n borderRadius: '6px',\n border: `1px solid ${theme.colors.border}`,\n backgroundColor: sortByOrg ? `${theme.colors.primary}20` : theme.colors.background,\n color: sortByOrg ? theme.colors.primary : theme.colors.textSecondary,\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n transition: 'all 0.15s',\n flexShrink: 0,\n }}\n >\n {sortByOrg ? <Building2 size={16} /> : <FolderGit2 size={16} />}\n </button>\n {panelActions.selectDirectory && (\n <button\n onClick={handleAddProject}\n disabled={isAdding}\n title=\"Add existing project\"\n style={{\n padding: '8px',\n borderRadius: '6px',\n border: `1px solid ${theme.colors.border}`,\n backgroundColor: theme.colors.primary,\n color: theme.colors.background,\n cursor: isAdding ? 'default' : 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n opacity: isAdding ? 0.6 : 1,\n transition: 'opacity 0.2s',\n flexShrink: 0,\n }}\n >\n <Plus size={16} />\n </button>\n )}\n </div>\n\n {/* Scrollable content */}\n <div\n className=\"local-projects-list\"\n style={{\n flex: 1,\n overflowY: 'auto',\n display: 'flex',\n flexDirection: 'column',\n gap: '4px',\n }}\n >\n {/* Repository list */}\n {filteredAndSortedRepositories.map((entry) => (\n <LocalProjectCard\n key={entry.path}\n entry={entry}\n isSelected={selectedEntry?.path === entry.path}\n onSelect={handleSelectRepository}\n onOpen={handleOpenRepository}\n onRemove={handleRemoveRepository}\n windowState={windowStates.get(entry.path) || 'closed'}\n />\n ))}\n\n {/* No results message */}\n {filteredAndSortedRepositories.length === 0 && !loading && (\n <div\n style={{\n padding: '32px',\n textAlign: 'center',\n color: theme.colors.textSecondary,\n }}\n >\n <p style={{ margin: 0 }}>\n {normalizedFilter\n ? 'No local projects match your filter.'\n : 'No local projects found.'}\n </p>\n </div>\n )}\n </div>\n </div>\n );\n};\n\n/**\n * LocalProjectsPanel - Browse and manage local Alexandria repositories\n *\n * Features:\n * - List all registered local repositories\n * - Search/filter by name, owner, or path\n * - Add new projects via directory picker\n * - Open projects in dev workspace\n * - Remove projects from registry\n *\n * Data Slices:\n * - alexandriaRepositories: List of AlexandriaEntry objects\n *\n * Events Emitted:\n * - industry-theme.local-projects:repository-selected\n * - industry-theme.local-projects:repository-opened\n *\n * Events Listened:\n * - industry-theme.local-projects:filter\n * - industry-theme.local-projects:select-repository\n * - industry-theme.local-projects:open-repository\n */\nexport const LocalProjectsPanel: React.FC<PanelComponentProps> = (props) => {\n return (\n <ThemeProvider>\n <LocalProjectsPanelContent {...props} />\n </ThemeProvider>\n );\n};\n\n/**\n * LocalProjectsPanelPreview - Compact preview for panel tabs/thumbnails\n */\nexport const LocalProjectsPanelPreview: React.FC = () => {\n const { theme } = useTheme();\n\n return (\n <div\n style={{\n padding: '12px',\n fontSize: `${theme.fontSizes[0]}px`,\n fontFamily: theme.fonts.body,\n color: theme.colors.text,\n display: 'flex',\n flexDirection: 'column',\n gap: '8px',\n }}\n >\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '6px',\n fontWeight: theme.fontWeights.semibold,\n }}\n >\n <div\n style={{\n width: '16px',\n height: '16px',\n borderRadius: '2px',\n backgroundColor: `${theme.colors.success || '#10b981'}40`,\n }}\n />\n <span>Local Projects</span>\n </div>\n <div\n style={{\n fontSize: `${theme.fontSizes[0]}px`,\n fontFamily: theme.fonts.body,\n color: theme.colors.textSecondary,\n marginTop: '4px',\n }}\n >\n Browse your cloned repositories sorted by recent activity\n </div>\n </div>\n );\n};\n\n// Re-export types and components\nexport type { LocalProjectCardProps, RepositoryAvatarProps } from './types';\nexport { LocalProjectCard } from './LocalProjectCard';\nexport { RepositoryAvatar } from './RepositoryAvatar';\n","import React, { useState } from 'react';\nimport { useTheme } from '@principal-ade/industry-theme';\nimport { FolderOpen, X, Copy, Check, Loader2, MoveUp } from 'lucide-react';\nimport { RepositoryAvatar } from '../LocalProjectsPanel/RepositoryAvatar';\nimport type { WorkspaceRepositoryCardProps } from './types';\n\n/**\n * WorkspaceRepositoryCard - Repository card for workspace panel\n *\n * Displays repository info with workspace-specific actions like\n * move to workspace directory and remove from workspace.\n */\nexport const WorkspaceRepositoryCard: React.FC<WorkspaceRepositoryCardProps> = ({\n repository,\n workspace,\n actions,\n isEditMode = false,\n isInWorkspaceDirectory,\n onSelect,\n onOpen,\n onRemoveFromWorkspace,\n onMoveToWorkspace,\n}) => {\n const { theme } = useTheme();\n const [isRemoving, setIsRemoving] = useState(false);\n const [copiedPath, setCopiedPath] = useState(false);\n const [isMoving, setIsMoving] = useState(false);\n\n const handleCardClick = () => {\n onSelect?.(repository);\n };\n\n const handleOpenClick = (e: React.MouseEvent) => {\n e.stopPropagation();\n onOpen?.(repository);\n };\n\n const handleRemoveFromWorkspace = async (e: React.MouseEvent) => {\n e.stopPropagation();\n if (!workspace?.id) return;\n\n if (\n !confirm(\n `Remove ${repository.name} from workspace \"${workspace.name}\"?\\n\\nThis will not delete any files, only remove the repository from this workspace.`\n )\n ) {\n return;\n }\n\n try {\n setIsRemoving(true);\n onRemoveFromWorkspace?.(repository);\n } finally {\n setIsRemoving(false);\n }\n };\n\n const handleCopyPath = async (e: React.MouseEvent) => {\n e.stopPropagation();\n try {\n if (actions.copyToClipboard) {\n await actions.copyToClipboard(repository.path);\n } else {\n await navigator.clipboard.writeText(repository.path);\n }\n setCopiedPath(true);\n setTimeout(() => setCopiedPath(false), 2000);\n } catch (err) {\n console.error('Failed to copy path:', err);\n }\n };\n\n const handleMoveToWorkspace = async (e: React.MouseEvent) => {\n e.stopPropagation();\n if (!workspace?.id || !workspace.suggestedClonePath) return;\n\n if (\n !confirm(\n `Move ${repository.name} to ${workspace.suggestedClonePath}?\\n\\nThis will move all files to the workspace directory.`\n )\n ) {\n return;\n }\n\n try {\n setIsMoving(true);\n onMoveToWorkspace?.(repository);\n } finally {\n setIsMoving(false);\n }\n };\n\n // Get avatar URL from GitHub owner\n const avatarUrl = repository.github?.owner\n ? `https://github.com/${repository.github.owner}.png`\n : null;\n\n // Compute display path - show relative path if in workspace directory\n const displayPath = React.useMemo(() => {\n if (isInWorkspaceDirectory && workspace?.suggestedClonePath) {\n const workspacePath = workspace.suggestedClonePath;\n if (repository.path.startsWith(workspacePath)) {\n const relativePath = repository.path.slice(workspacePath.length);\n return relativePath.startsWith('/') ? relativePath.slice(1) : relativePath;\n }\n }\n return repository.path;\n }, [isInWorkspaceDirectory, workspace, repository.path]);\n\n return (\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n padding: '8px 12px',\n borderRadius: '4px',\n backgroundColor: 'transparent',\n border: '1px solid transparent',\n cursor: 'pointer',\n transition: 'background-color 0.15s',\n }}\n onClick={handleCardClick}\n onMouseEnter={(event) => {\n event.currentTarget.style.backgroundColor =\n theme.colors.backgroundTertiary || theme.colors.backgroundSecondary;\n }}\n onMouseLeave={(event) => {\n event.currentTarget.style.backgroundColor = 'transparent';\n }}\n >\n {/* Owner avatar */}\n <RepositoryAvatar\n customAvatarUrl={avatarUrl}\n size={32}\n fallbackIcon={\n <div\n style={{\n color: theme.colors.textSecondary,\n fontSize: `${theme.fontSizes[1]}px`,\n fontWeight: theme.fontWeights.semibold,\n fontFamily: theme.fonts.body,\n }}\n >\n {repository.name[0]?.toUpperCase() || '?'}\n </div>\n }\n />\n\n {/* Main content */}\n <div\n style={{\n flex: 1,\n minWidth: 0,\n display: 'flex',\n flexDirection: 'column',\n gap: '4px',\n }}\n >\n {/* Repository name */}\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '6px',\n flexWrap: 'wrap',\n }}\n >\n <span\n style={{\n fontSize: `${theme.fontSizes[2]}px`,\n fontWeight: theme.fontWeights.medium,\n fontFamily: theme.fonts.body,\n color: theme.colors.text,\n }}\n >\n {repository.name}\n </span>\n </div>\n\n {/* Copy path button */}\n <div\n onClick={handleCopyPath}\n style={{\n fontSize: `${theme.fontSizes[0]}px`,\n fontFamily: theme.fonts.monospace,\n color: copiedPath\n ? theme.colors.success || '#10b981'\n : theme.colors.textTertiary || theme.colors.textSecondary,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n gap: '4px',\n transition: 'color 0.15s ease',\n }}\n title={copiedPath ? 'Copied!' : `Click to copy: ${repository.path}`}\n onMouseEnter={(event) => {\n if (!copiedPath) {\n event.currentTarget.style.color = theme.colors.textSecondary;\n }\n }}\n onMouseLeave={(event) => {\n if (!copiedPath) {\n event.currentTarget.style.color =\n theme.colors.textTertiary || theme.colors.textSecondary;\n }\n }}\n >\n {copiedPath ? <Check size={12} /> : <Copy size={12} />}\n {displayPath}\n </div>\n </div>\n\n {/* Action buttons */}\n <div\n style={{\n display: 'flex',\n gap: '4px',\n flexShrink: 0,\n alignItems: 'center',\n }}\n >\n {/* Move to workspace button - only show in edit mode */}\n {isEditMode &&\n workspace &&\n workspace.suggestedClonePath &&\n isInWorkspaceDirectory === false && (\n <button\n type=\"button\"\n onClick={handleMoveToWorkspace}\n disabled={isMoving}\n title={`Move to ${workspace.suggestedClonePath}`}\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '6px 10px',\n gap: '4px',\n borderRadius: '4px',\n border: `1px solid ${theme.colors.primary || '#3b82f6'}`,\n backgroundColor: `${theme.colors.primary || '#3b82f6'}15`,\n color: theme.colors.primary || '#3b82f6',\n fontSize: `${theme.fontSizes[0]}px`,\n fontWeight: theme.fontWeights.medium,\n fontFamily: theme.fonts.body,\n cursor: isMoving ? 'wait' : 'pointer',\n opacity: isMoving ? 0.6 : 1,\n transition: 'all 0.15s ease',\n }}\n onMouseEnter={(event) => {\n if (!isMoving) {\n event.currentTarget.style.backgroundColor = `${theme.colors.primary || '#3b82f6'}25`;\n }\n }}\n onMouseLeave={(event) => {\n event.currentTarget.style.backgroundColor = `${theme.colors.primary || '#3b82f6'}15`;\n }}\n >\n {isMoving ? <Loader2 size={12} className=\"animate-spin\" /> : <MoveUp size={12} />}\n {isMoving ? 'Moving...' : 'Move'}\n </button>\n )}\n\n {/* Open button - always visible */}\n <button\n type=\"button\"\n onClick={handleOpenClick}\n title=\"Open repository\"\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '6px 10px',\n gap: '4px',\n borderRadius: '4px',\n border: `1px solid ${theme.colors.success || '#10b981'}`,\n backgroundColor: `${theme.colors.success || '#10b981'}15`,\n color: theme.colors.success || '#10b981',\n fontSize: `${theme.fontSizes[0]}px`,\n fontWeight: theme.fontWeights.medium,\n fontFamily: theme.fonts.body,\n cursor: 'pointer',\n transition: 'all 0.15s ease',\n }}\n onMouseEnter={(event) => {\n event.currentTarget.style.backgroundColor = `${theme.colors.success || '#10b981'}25`;\n }}\n onMouseLeave={(event) => {\n event.currentTarget.style.backgroundColor = `${theme.colors.success || '#10b981'}15`;\n }}\n >\n <FolderOpen size={12} />\n Open\n </button>\n\n {/* Remove from workspace button - only show in edit mode */}\n {isEditMode && workspace && (\n <button\n type=\"button\"\n onClick={handleRemoveFromWorkspace}\n disabled={isRemoving}\n title={`Remove from workspace \"${workspace.name}\"`}\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '28px',\n height: '28px',\n padding: 0,\n borderRadius: '4px',\n border: 'none',\n backgroundColor: 'transparent',\n color: theme.colors.textSecondary,\n cursor: isRemoving ? 'wait' : 'pointer',\n opacity: isRemoving ? 0.6 : 1,\n transition: 'all 0.15s ease',\n }}\n onMouseEnter={(event) => {\n if (!isRemoving) {\n event.currentTarget.style.backgroundColor = theme.colors.error || '#ef4444';\n event.currentTarget.style.color = '#fff';\n }\n }}\n onMouseLeave={(event) => {\n event.currentTarget.style.backgroundColor = 'transparent';\n event.currentTarget.style.color = theme.colors.textSecondary;\n }}\n >\n {isRemoving ? <Loader2 size={14} className=\"animate-spin\" /> : <X size={14} />}\n </button>\n )}\n </div>\n </div>\n );\n};\n","import React, { useMemo, useEffect, useCallback } from 'react';\nimport { ThemeProvider, useTheme } from '@principal-ade/industry-theme';\nimport { Folder, Home, Pencil, AlertTriangle } from 'lucide-react';\nimport type { AlexandriaEntry } from '@principal-ai/alexandria-core-library/types';\nimport type { PanelComponentProps, PanelEventEmitter } from '../../types';\nimport { WorkspaceRepositoryCard } from './WorkspaceRepositoryCard';\nimport type { Workspace, WorkspaceRepositoriesPanelActions } from './types';\n\n// Panel event prefix\nconst PANEL_ID = 'industry-theme.workspace-repositories';\n\n// Helper to create panel events\nconst createPanelEvent = <T,>(type: string, payload: T) => ({\n type,\n source: PANEL_ID,\n timestamp: Date.now(),\n payload,\n});\n\n/**\n * WorkspaceRepositoriesPanelContent - Internal component that uses theme\n */\nconst WorkspaceRepositoriesPanelContent: React.FC<PanelComponentProps> = ({\n context,\n actions,\n events,\n}) => {\n const { theme } = useTheme();\n const [isEditMode, setIsEditMode] = React.useState(false);\n const [repositoryLocations, setRepositoryLocations] = React.useState<Map<string, boolean>>(\n new Map()\n );\n\n // Get extended actions\n const panelActions = actions as WorkspaceRepositoriesPanelActions;\n\n // Get data from context using framework's getSlice pattern\n const workspaceSlice = context.getSlice<Workspace>('workspace');\n const repositoriesSlice = context.getSlice<AlexandriaEntry[]>('workspaceRepositories');\n\n const workspace = workspaceSlice?.data ?? null;\n const isLoading = workspaceSlice?.loading || repositoriesSlice?.loading || false;\n\n // Sort repositories alphabetically by name\n const sortedRepositories = useMemo(() => {\n const repos = repositoriesSlice?.data ?? [];\n return [...repos].sort((a, b) => a.name.localeCompare(b.name));\n }, [repositoriesSlice?.data]);\n\n // Check locations for all repositories\n useEffect(() => {\n const checkLocations = async () => {\n if (!workspace?.id || !panelActions.isRepositoryInWorkspaceDirectory || !sortedRepositories.length) {\n return;\n }\n\n const locationMap = new Map<string, boolean>();\n await Promise.all(\n sortedRepositories.map(async (repo) => {\n try {\n const isInWorkspace = await panelActions.isRepositoryInWorkspaceDirectory!(repo, workspace.id);\n if (isInWorkspace !== null) {\n locationMap.set(repo.path, isInWorkspace);\n }\n } catch (error) {\n console.error(`Failed to check location for ${repo.name}:`, error);\n }\n })\n );\n setRepositoryLocations(locationMap);\n };\n\n checkLocations();\n }, [workspace, sortedRepositories, panelActions]);\n\n // Group repositories by location\n const { repositoriesInWorkspace, repositoriesOutsideWorkspace } = useMemo(() => {\n const inWorkspace: AlexandriaEntry[] = [];\n const outsideWorkspace: AlexandriaEntry[] = [];\n\n sortedRepositories.forEach((repo) => {\n const isInWorkspace = repositoryLocations.get(repo.path);\n if (isInWorkspace === true) {\n inWorkspace.push(repo);\n } else if (isInWorkspace === false) {\n outsideWorkspace.push(repo);\n }\n });\n\n return { repositoriesInWorkspace: inWorkspace, repositoriesOutsideWorkspace: outsideWorkspace };\n }, [sortedRepositories, repositoryLocations]);\n\n // Event handlers\n const handleSelectRepository = useCallback(\n (repository: AlexandriaEntry) => {\n events.emit(\n createPanelEvent('repository:selected', {\n repositoryId: repository.github?.id || repository.name,\n repository,\n repositoryPath: repository.path,\n })\n );\n },\n [events]\n );\n\n const handleOpenRepository = useCallback(\n (repository: AlexandriaEntry) => {\n events.emit(\n createPanelEvent('repository:opened', {\n repositoryId: repository.github?.id || repository.name,\n repository,\n })\n );\n },\n [events]\n );\n\n const handleRemoveFromWorkspace = useCallback(\n async (repository: AlexandriaEntry) => {\n if (!workspace?.id || !panelActions.removeRepositoryFromWorkspace) return;\n try {\n const repositoryId = repository.github?.id || repository.name;\n await panelActions.removeRepositoryFromWorkspace(repositoryId, workspace.id);\n } catch (error) {\n console.error('Failed to remove repository from workspace:', error);\n alert(\n `Failed to remove repository: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n },\n [workspace, panelActions]\n );\n\n const handleMoveToWorkspace = useCallback(\n async (repository: AlexandriaEntry) => {\n if (!workspace?.id || !panelActions.moveRepositoryToWorkspaceDirectory) return;\n try {\n await panelActions.moveRepositoryToWorkspaceDirectory(repository, workspace.id);\n setRepositoryLocations((prev) => new Map(prev).set(repository.path, true));\n } catch (error) {\n console.error('Failed to move repository:', error);\n alert(\n `Failed to move repository: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n },\n [workspace, panelActions]\n );\n\n // Subscribe to panel events\n useEffect(() => {\n const unsubscribers = [\n events.on<{ repositoryPath: string }>(`${PANEL_ID}:select-repository`, (event) => {\n const path = event.payload?.repositoryPath;\n if (path) {\n const repository = sortedRepositories.find((r) => r.path === path);\n if (repository) {\n handleSelectRepository(repository);\n }\n }\n }),\n\n events.on<{ repositoryPath: string }>(`${PANEL_ID}:open-repository`, (event) => {\n const path = event.payload?.repositoryPath;\n if (path) {\n const repository = sortedRepositories.find((r) => r.path === path);\n if (repository) {\n handleOpenRepository(repository);\n }\n }\n }),\n ];\n\n return () => unsubscribers.forEach((unsub) => unsub());\n }, [events, sortedRepositories, handleSelectRepository, handleOpenRepository]);\n\n const baseContainerStyle: React.CSSProperties = {\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n backgroundColor: theme.colors.backgroundSecondary,\n };\n\n const contentContainerStyle: React.CSSProperties = {\n ...baseContainerStyle,\n padding: '16px',\n gap: '12px',\n };\n\n // No workspace selected\n if (!workspace) {\n return (\n <div style={baseContainerStyle}>\n <div\n style={{\n flex: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '32px',\n textAlign: 'center',\n }}\n >\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: '16px',\n maxWidth: '360px',\n }}\n >\n <Folder\n size={48}\n style={{\n color: theme.colors.textSecondary,\n opacity: 0.5,\n }}\n />\n <div>\n <h3\n style={{\n margin: '0 0 8px 0',\n color: theme.colors.text,\n fontSize: `${theme.fontSizes[3]}px`,\n fontWeight: theme.fontWeights.semibold,\n fontFamily: theme.fonts.body,\n }}\n >\n No Workspace Selected\n </h3>\n <p\n style={{\n margin: 0,\n color: theme.colors.textSecondary,\n fontSize: `${theme.fontSizes[1]}px`,\n fontFamily: theme.fonts.body,\n }}\n >\n Select a workspace to see its repositories.\n </p>\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n // Loading state\n if (isLoading) {\n return (\n <div style={baseContainerStyle}>\n <div\n style={{\n flex: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '32px',\n textAlign: 'center',\n }}\n >\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: '16px',\n maxWidth: '360px',\n }}\n >\n <h3\n style={{\n margin: 0,\n color: theme.colors.text,\n fontSize: `${theme.fontSizes[3]}px`,\n fontWeight: theme.fontWeights.semibold,\n fontFamily: theme.fonts.body,\n }}\n >\n Loading repositories...\n </h3>\n </div>\n </div>\n </div>\n );\n }\n\n const handleToggleEditMode = () => {\n setIsEditMode(!isEditMode);\n };\n\n return (\n <div style={contentContainerStyle}>\n {/* Workspace header */}\n <div>\n <div\n style={{\n display: 'flex',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n gap: '16px',\n marginBottom: '4px',\n }}\n >\n {/* Left: Workspace name with edit button */}\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n }}\n >\n <h3\n style={{\n margin: 0,\n fontSize: `${theme.fontSizes[2]}px`,\n fontWeight: theme.fontWeights.semibold,\n color: theme.colors.text,\n fontFamily: theme.fonts.body,\n }}\n >\n {workspace.name}\n </h3>\n <button\n type=\"button\"\n onClick={handleToggleEditMode}\n title={isEditMode ? 'Exit edit mode' : 'Edit workspace'}\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '24px',\n height: '24px',\n padding: 0,\n borderRadius: '4px',\n border: 'none',\n backgroundColor: isEditMode\n ? theme.colors.backgroundTertiary || theme.colors.backgroundSecondary\n : 'transparent',\n color: isEditMode ? theme.colors.primary : theme.colors.textSecondary,\n cursor: 'pointer',\n transition: 'all 0.15s ease',\n }}\n onMouseEnter={(event) => {\n if (!isEditMode) {\n event.currentTarget.style.backgroundColor =\n theme.colors.backgroundTertiary || theme.colors.backgroundSecondary;\n event.currentTarget.style.color = theme.colors.text;\n }\n }}\n onMouseLeave={(event) => {\n if (!isEditMode) {\n event.currentTarget.style.backgroundColor = 'transparent';\n event.currentTarget.style.color = theme.colors.textSecondary;\n }\n }}\n >\n <Pencil size={14} />\n </button>\n </div>\n\n {/* Right: Home directory */}\n {workspace.suggestedClonePath && (\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '6px',\n minWidth: 0,\n }}\n >\n <Home\n size={14}\n style={{\n color: theme.colors.textSecondary,\n flexShrink: 0,\n }}\n />\n <span\n style={{\n fontSize: `${theme.fontSizes[0]}px`,\n color: theme.colors.textSecondary,\n fontFamily: theme.fonts.monospace,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n }}\n title={workspace.suggestedClonePath}\n >\n {workspace.suggestedClonePath}\n </span>\n </div>\n )}\n </div>\n\n {/* Workspace description */}\n {workspace.description && (\n <p\n style={{\n margin: 0,\n fontSize: `${theme.fontSizes[1]}px`,\n color: theme.colors.textSecondary,\n fontFamily: theme.fonts.body,\n }}\n >\n {workspace.description}\n </p>\n )}\n </div>\n\n {/* Scrollable content */}\n <div\n style={{\n flex: 1,\n overflowY: 'auto',\n display: 'flex',\n flexDirection: 'column',\n gap: '12px',\n }}\n >\n {/* Empty state */}\n {sortedRepositories.length === 0 && !isLoading && (\n <div\n style={{\n padding: '32px',\n textAlign: 'center',\n color: theme.colors.textSecondary,\n }}\n >\n <p style={{ margin: 0 }}>No repositories in this workspace.</p>\n </div>\n )}\n\n {/* Repositories in workspace directory */}\n {repositoriesInWorkspace.length > 0 && (\n <div style={{ display: 'flex', flexDirection: 'column', gap: '8px' }}>\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '6px',\n paddingBottom: '4px',\n }}\n >\n <Home\n size={14}\n style={{\n color: theme.colors.success || '#10b981',\n flexShrink: 0,\n }}\n />\n <h4\n style={{\n margin: 0,\n fontSize: `${theme.fontSizes[1]}px`,\n fontWeight: theme.fontWeights.semibold,\n color: theme.colors.textSecondary,\n fontFamily: theme.fonts.body,\n textTransform: 'uppercase',\n letterSpacing: '0.5px',\n }}\n >\n In Workspace Directory\n </h4>\n <span\n style={{\n fontSize: `${theme.fontSizes[0]}px`,\n color: theme.colors.textTertiary || theme.colors.textSecondary,\n fontWeight: theme.fontWeights.medium,\n }}\n >\n {repositoriesInWorkspace.length}\n </span>\n </div>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '4px' }}>\n {repositoriesInWorkspace.map((repository) => (\n <WorkspaceRepositoryCard\n key={repository.path}\n repository={repository}\n workspace={workspace}\n actions={panelActions}\n isEditMode={isEditMode}\n isInWorkspaceDirectory={true}\n onSelect={handleSelectRepository}\n onOpen={handleOpenRepository}\n onRemoveFromWorkspace={handleRemoveFromWorkspace}\n onMoveToWorkspace={handleMoveToWorkspace}\n />\n ))}\n </div>\n </div>\n )}\n\n {/* Repositories outside workspace directory */}\n {repositoriesOutsideWorkspace.length > 0 && (\n <div style={{ display: 'flex', flexDirection: 'column', gap: '8px' }}>\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '6px',\n paddingBottom: '4px',\n }}\n >\n <AlertTriangle\n size={14}\n style={{\n color: theme.colors.warning || '#f59e0b',\n flexShrink: 0,\n }}\n />\n <h4\n style={{\n margin: 0,\n fontSize: `${theme.fontSizes[1]}px`,\n fontWeight: theme.fontWeights.semibold,\n color: theme.colors.textSecondary,\n fontFamily: theme.fonts.body,\n textTransform: 'uppercase',\n letterSpacing: '0.5px',\n }}\n >\n Outside Workspace Directory\n </h4>\n <span\n style={{\n fontSize: `${theme.fontSizes[0]}px`,\n color: theme.colors.textTertiary || theme.colors.textSecondary,\n fontWeight: theme.fontWeights.medium,\n }}\n >\n {repositoriesOutsideWorkspace.length}\n </span>\n </div>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '4px' }}>\n {repositoriesOutsideWorkspace.map((repository) => (\n <WorkspaceRepositoryCard\n key={repository.path}\n repository={repository}\n workspace={workspace}\n actions={panelActions}\n isEditMode={isEditMode}\n isInWorkspaceDirectory={false}\n onSelect={handleSelectRepository}\n onOpen={handleOpenRepository}\n onRemoveFromWorkspace={handleRemoveFromWorkspace}\n onMoveToWorkspace={handleMoveToWorkspace}\n />\n ))}\n </div>\n </div>\n )}\n </div>\n </div>\n );\n};\n\n/**\n * WorkspaceRepositoriesPanel - Workspace repository management panel\n *\n * Features:\n * - List all repositories in a workspace\n * - Group by in/outside workspace directory\n * - Move repositories to workspace directory\n * - Remove repositories from workspace\n *\n * Data Slices:\n * - workspace: Workspace object\n * - workspaceRepositories: AlexandriaEntry[]\n *\n * Events Emitted:\n * - repository:selected\n * - repository:opened\n */\nexport const WorkspaceRepositoriesPanel: React.FC<PanelComponentProps> = (props) => {\n return (\n <ThemeProvider>\n <WorkspaceRepositoriesPanelContent {...props} />\n </ThemeProvider>\n );\n};\n\n// Re-export components and types\nexport { WorkspaceRepositoryCard } from './WorkspaceRepositoryCard';\nexport type {\n Workspace,\n WorkspaceRepositoriesPanelActions,\n WorkspaceRepositoryCardProps,\n RepositorySelectedPayload,\n RepositoryOpenedPayload,\n} from './types';\n","/**\n * UTCP Tools for LocalProjectsPanel\n *\n * These tools allow AI agents to interact with the Local Projects panel\n * through the Universal Tool Communication Protocol.\n */\n\nimport type { PanelTool, PanelToolsMetadata } from '../../types';\n\nconst PANEL_ID = 'industry-theme.local-projects';\n\n/**\n * Filter projects tool\n * Allows filtering the project list by search term\n */\nexport const filterProjectsTool: PanelTool = {\n name: 'filter_projects',\n description: 'Filter the local projects list by name, owner, or path',\n inputs: {\n type: 'object',\n properties: {\n filter: {\n type: 'string',\n description: 'Search term to filter projects (matches name, owner, or path)',\n },\n },\n required: ['filter'],\n },\n outputs: {\n type: 'object',\n properties: {\n success: { type: 'boolean' },\n message: { type: 'string' },\n },\n },\n tags: ['filter', 'search', 'projects'],\n tool_call_template: {\n call_template_type: 'panel_event',\n event_type: `${PANEL_ID}:filter`,\n },\n};\n\n/**\n * Select project tool\n * Allows selecting a specific project in the list\n */\nexport const selectProjectTool: PanelTool = {\n name: 'select_project',\n description: 'Select a project by name or path to view its details',\n inputs: {\n type: 'object',\n properties: {\n identifier: {\n type: 'string',\n description: 'Project name or full path to select',\n },\n },\n required: ['identifier'],\n },\n outputs: {\n type: 'object',\n properties: {\n success: { type: 'boolean' },\n selectedProject: { type: 'string' },\n },\n },\n tags: ['select', 'project', 'navigation'],\n tool_call_template: {\n call_template_type: 'panel_event',\n event_type: `${PANEL_ID}:select-repository`,\n },\n};\n\n/**\n * Open project tool\n * Allows opening a project in the dev workspace\n */\nexport const openProjectTool: PanelTool = {\n name: 'open_project',\n description: 'Open a local project in the development workspace',\n inputs: {\n type: 'object',\n properties: {\n identifier: {\n type: 'string',\n description: 'Project name or full path to open',\n },\n },\n required: ['identifier'],\n },\n outputs: {\n type: 'object',\n properties: {\n success: { type: 'boolean' },\n message: { type: 'string' },\n },\n },\n tags: ['open', 'project', 'workspace'],\n tool_call_template: {\n call_template_type: 'panel_event',\n event_type: `${PANEL_ID}:open-repository`,\n },\n};\n\n/**\n * All tools for the LocalProjectsPanel\n */\nexport const localProjectsPanelTools: PanelTool[] = [\n filterProjectsTool,\n selectProjectTool,\n openProjectTool,\n];\n\n/**\n * Tools metadata for registration\n */\nexport const localProjectsPanelToolsMetadata: PanelToolsMetadata = {\n id: PANEL_ID,\n name: 'Local Projects Panel',\n description: 'Tools for browsing and managing local Alexandria repositories',\n tools: localProjectsPanelTools,\n};\n","/**\n * Workspace Repositories Panel Tools\n *\n * UTCP-compatible tools for the Workspace Repositories panel.\n */\n\nimport type { PanelTool, PanelToolsMetadata } from '@principal-ade/panel-framework-core';\n\nconst PANEL_ID = 'industry-theme.workspace-repositories';\n\n/**\n * Tool: Select Repository\n */\nexport const selectRepositoryTool: PanelTool = {\n name: 'select_workspace_repository',\n description: 'Selects a repository in the workspace panel',\n inputs: {\n type: 'object',\n properties: {\n repositoryPath: {\n type: 'string',\n description: 'Path to the repository to select',\n },\n },\n required: ['repositoryPath'],\n },\n outputs: {\n type: 'object',\n properties: {\n success: { type: 'boolean' },\n message: { type: 'string' },\n },\n },\n tags: ['workspace', 'repository', 'select'],\n tool_call_template: {\n call_template_type: 'panel_event',\n event_type: `${PANEL_ID}:select-repository`,\n },\n};\n\n/**\n * Tool: Refresh Workspace\n */\nexport const refreshWorkspaceTool: PanelTool = {\n name: 'refresh_workspace',\n description: 'Refreshes the workspace repositories list',\n inputs: {\n type: 'object',\n properties: {\n force: {\n type: 'boolean',\n description: 'Force refresh even if data is fresh',\n },\n },\n },\n outputs: {\n type: 'object',\n properties: {\n success: { type: 'boolean' },\n repositoryCount: { type: 'number' },\n },\n },\n tags: ['workspace', 'refresh'],\n tool_call_template: {\n call_template_type: 'panel_event',\n event_type: `${PANEL_ID}:refresh-workspace`,\n },\n};\n\n/**\n * Tool: Open Repository\n */\nexport const openRepositoryTool: PanelTool = {\n name: 'open_workspace_repository',\n description: 'Opens a repository from the workspace',\n inputs: {\n type: 'object',\n properties: {\n repositoryPath: {\n type: 'string',\n description: 'Path to the repository to open',\n },\n },\n required: ['repositoryPath'],\n },\n outputs: {\n type: 'object',\n properties: {\n success: { type: 'boolean' },\n message: { type: 'string' },\n },\n },\n tags: ['workspace', 'repository', 'open'],\n tool_call_template: {\n call_template_type: 'panel_event',\n event_type: `${PANEL_ID}:open-repository`,\n },\n};\n\n/**\n * All tools exported as an array.\n */\nexport const workspaceRepositoriesPanelTools: PanelTool[] = [\n selectRepositoryTool,\n refreshWorkspaceTool,\n openRepositoryTool,\n];\n\n/**\n * Panel tools metadata for registration.\n */\nexport const workspaceRepositoriesPanelToolsMetadata: PanelToolsMetadata = {\n id: PANEL_ID,\n name: 'Workspace Repositories Panel',\n description: 'Tools provided by the workspace repositories panel',\n tools: workspaceRepositoriesPanelTools,\n};\n","import { LocalProjectsPanel } from './panels/LocalProjectsPanel';\nimport { WorkspaceRepositoriesPanel } from './panels/WorkspaceRepositoriesPanel';\nimport type { PanelDefinition, PanelContextValue } from './types';\nimport { localProjectsPanelTools } from './panels/LocalProjectsPanel/tools';\nimport { workspaceRepositoriesPanelTools } from './panels/WorkspaceRepositoriesPanel/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: 'industry-theme.local-projects',\n name: 'Local Projects',\n icon: 'Folder',\n version: '0.1.0',\n author: 'Industry Theme',\n description: 'Browse and manage local Alexandria repositories',\n slices: ['alexandriaRepositories'],\n tools: localProjectsPanelTools,\n },\n component: LocalProjectsPanel,\n\n onMount: async (context: PanelContextValue) => {\n // eslint-disable-next-line no-console\n console.log('Local Projects Panel mounted');\n\n // Refresh Alexandria repositories if available\n if (\n context.hasSlice('alexandriaRepositories') &&\n !context.isSliceLoading('alexandriaRepositories')\n ) {\n await context.refresh('repository', 'alexandriaRepositories');\n }\n },\n\n onUnmount: async (_context: PanelContextValue) => {\n // eslint-disable-next-line no-console\n console.log('Local Projects Panel unmounting');\n },\n },\n {\n metadata: {\n id: 'industry-theme.workspace-repositories',\n name: 'Workspace Repositories',\n icon: 'FolderGit2',\n version: '0.1.0',\n author: 'Industry Theme',\n description: 'Workspace and repository management panel',\n slices: ['workspace', 'workspaceRepositories'],\n tools: workspaceRepositoriesPanelTools,\n },\n component: WorkspaceRepositoriesPanel,\n\n onMount: async (context: PanelContextValue) => {\n // eslint-disable-next-line no-console\n console.log('Workspace Repositories Panel mounted');\n // eslint-disable-next-line no-console\n console.log('Current scope:', context.currentScope.type);\n },\n\n onUnmount: async (_context: PanelContextValue) => {\n // eslint-disable-next-line no-console\n console.log('Workspace Repositories Panel unmounting');\n },\n },\n];\n\n/**\n * Optional: Called once when the entire package is loaded.\n */\nexport const onPackageLoad = async () => {\n // eslint-disable-next-line no-console\n console.log('Alexandria Panels package loaded');\n};\n\n/**\n * Optional: Called once when the package is unloaded.\n */\nexport const onPackageUnload = async () => {\n // eslint-disable-next-line no-console\n console.log('Alexandria Panels package unloading');\n};\n\n/**\n * Export tools for server-safe imports.\n * Use '@industry-theme/alexandria-panels/tools' to import without React dependencies.\n */\nexport {\n localProjectsPanelTools,\n localProjectsPanelToolsMetadata,\n filterProjectsTool,\n selectProjectTool,\n openProjectTool,\n} from './panels/LocalProjectsPanel/tools';\n\nexport {\n workspaceRepositoriesPanelTools,\n workspaceRepositoriesPanelToolsMetadata,\n selectRepositoryTool,\n refreshWorkspaceTool,\n openRepositoryTool,\n} from './panels/WorkspaceRepositoriesPanel/tools';\n\n/**\n * Export panel components for direct use\n */\nexport {\n LocalProjectsPanel,\n LocalProjectsPanelPreview,\n LocalProjectCard,\n RepositoryAvatar,\n} from './panels/LocalProjectsPanel';\n\nexport {\n WorkspaceRepositoriesPanel,\n WorkspaceRepositoryCard,\n} from './panels/WorkspaceRepositoriesPanel';\n\n/**\n * Export types\n */\nexport type {\n LocalProjectCardProps,\n RepositoryAvatarProps,\n AlexandriaRepositoriesSlice,\n LocalProjectsPanelActions,\n CardActionMode,\n RepositoryWindowState,\n} from './panels/LocalProjectsPanel/types';\n\nexport type {\n Workspace,\n WorkspaceRepositoriesPanelActions,\n WorkspaceRepositoryCardProps,\n RepositorySelectedPayload,\n RepositoryOpenedPayload,\n} from './panels/WorkspaceRepositoriesPanel/types';\n"],"names":["theme","React","__iconNode","Loader2","PANEL_ID","createPanelEvent","_a","Home","AlertTriangle"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]}
1
+ {"version":3,"file":"panels.bundle.js","sources":["../node_modules/@principal-ade/industry-theme/dist/esm/index.js","../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/boxes.js","../node_modules/lucide-react/dist/esm/icons/building-2.js","../node_modules/lucide-react/dist/esm/icons/check.js","../node_modules/lucide-react/dist/esm/icons/circle-question-mark.js","../node_modules/lucide-react/dist/esm/icons/copy.js","../node_modules/lucide-react/dist/esm/icons/external-link.js","../node_modules/lucide-react/dist/esm/icons/focus.js","../node_modules/lucide-react/dist/esm/icons/folder-git-2.js","../node_modules/lucide-react/dist/esm/icons/folder-open.js","../node_modules/lucide-react/dist/esm/icons/folder.js","../node_modules/lucide-react/dist/esm/icons/house.js","../node_modules/lucide-react/dist/esm/icons/loader-circle.js","../node_modules/lucide-react/dist/esm/icons/move-up.js","../node_modules/lucide-react/dist/esm/icons/package.js","../node_modules/lucide-react/dist/esm/icons/pencil.js","../node_modules/lucide-react/dist/esm/icons/plus.js","../node_modules/lucide-react/dist/esm/icons/scale.js","../node_modules/lucide-react/dist/esm/icons/search.js","../node_modules/lucide-react/dist/esm/icons/triangle-alert.js","../node_modules/lucide-react/dist/esm/icons/x.js","../src/panels/LocalProjectsPanel/RepositoryAvatar.tsx","../src/panels/LocalProjectsPanel/LocalProjectCard.tsx","../src/panels/LocalProjectsPanel/index.tsx","../src/panels/WorkspaceRepositoriesPanel/index.tsx","../src/panels/DependenciesPanel/components/DependencyInfoModal.tsx","../src/panels/DependenciesPanel/components/DependencyRow.tsx","../src/panels/DependenciesPanel/components/FilterBar.tsx","../src/panels/DependenciesPanel/index.tsx","../src/panels/LocalProjectsPanel/tools.ts","../src/panels/WorkspaceRepositoriesPanel/tools.ts","../src/panels/DependenciesPanel/tools.ts","../src/index.tsx"],"sourcesContent":["// src/glassmorphismTheme.ts\nvar glassmorphismTheme = {\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n fonts: {\n body: '\"Inter\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n heading: '\"Inter\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n monospace: '\"Fira Code\", \"SF Mono\", Monaco, Inconsolata, monospace'\n },\n fontSizes: [12, 14, 16, 18, 20, 24, 32, 48, 64, 96],\n fontScale: 1,\n fontWeights: {\n body: 400,\n heading: 600,\n bold: 700,\n light: 300,\n medium: 500,\n semibold: 600\n },\n lineHeights: {\n body: 1.6,\n heading: 1.3,\n tight: 1.4,\n relaxed: 1.8\n },\n breakpoints: [\"640px\", \"768px\", \"1024px\", \"1280px\"],\n sizes: [16, 32, 64, 128, 256, 512, 768, 1024, 1536],\n radii: [0, 8, 12, 16, 20, 24, 32, 40],\n shadows: [\n \"none\",\n \"0 8px 32px 0 rgba(31, 38, 135, 0.15)\",\n \"0 12px 40px 0 rgba(31, 38, 135, 0.2)\",\n \"0 16px 48px 0 rgba(31, 38, 135, 0.25)\",\n \"0 20px 56px 0 rgba(31, 38, 135, 0.3)\",\n \"0 24px 64px 0 rgba(31, 38, 135, 0.35)\"\n ],\n zIndices: [0, 1, 10, 20, 30, 40, 50],\n colors: {\n text: \"rgba(255, 255, 255, 0.95)\",\n background: \"rgba(255, 255, 255, 0.1)\",\n primary: \"rgba(99, 102, 241, 0.9)\",\n secondary: \"rgba(139, 92, 246, 0.9)\",\n accent: \"rgba(236, 72, 153, 0.9)\",\n highlight: \"rgba(99, 102, 241, 0.2)\",\n muted: \"rgba(255, 255, 255, 0.05)\",\n success: \"rgba(34, 197, 94, 0.9)\",\n warning: \"rgba(251, 146, 60, 0.9)\",\n error: \"rgba(239, 68, 68, 0.9)\",\n info: \"rgba(59, 130, 246, 0.9)\",\n border: \"rgba(255, 255, 255, 0.18)\",\n backgroundSecondary: \"rgba(255, 255, 255, 0.15)\",\n backgroundTertiary: \"rgba(255, 255, 255, 0.2)\",\n backgroundLight: \"rgba(255, 255, 255, 0.08)\",\n backgroundHover: \"rgba(255, 255, 255, 0.25)\",\n surface: \"rgba(255, 255, 255, 0.12)\",\n textSecondary: \"rgba(255, 255, 255, 0.8)\",\n textTertiary: \"rgba(255, 255, 255, 0.6)\",\n textMuted: \"rgba(255, 255, 255, 0.5)\",\n highlightBg: \"rgba(251, 191, 36, 0.3)\",\n highlightBorder: \"rgba(251, 191, 36, 0.5)\"\n },\n modes: {\n dark: {\n text: \"rgba(255, 255, 255, 0.95)\",\n background: \"rgba(0, 0, 0, 0.3)\",\n primary: \"rgba(129, 140, 248, 0.9)\",\n secondary: \"rgba(167, 139, 250, 0.9)\",\n accent: \"rgba(244, 114, 182, 0.9)\",\n highlight: \"rgba(129, 140, 248, 0.25)\",\n muted: \"rgba(0, 0, 0, 0.15)\",\n success: \"rgba(74, 222, 128, 0.9)\",\n warning: \"rgba(251, 191, 36, 0.9)\",\n error: \"rgba(248, 113, 113, 0.9)\",\n info: \"rgba(96, 165, 250, 0.9)\",\n border: \"rgba(255, 255, 255, 0.15)\",\n backgroundSecondary: \"rgba(0, 0, 0, 0.4)\",\n backgroundTertiary: \"rgba(0, 0, 0, 0.5)\",\n backgroundLight: \"rgba(0, 0, 0, 0.2)\",\n backgroundHover: \"rgba(255, 255, 255, 0.1)\",\n surface: \"rgba(0, 0, 0, 0.35)\",\n textSecondary: \"rgba(255, 255, 255, 0.8)\",\n textTertiary: \"rgba(255, 255, 255, 0.6)\",\n textMuted: \"rgba(255, 255, 255, 0.4)\",\n highlightBg: \"rgba(251, 191, 36, 0.35)\",\n highlightBorder: \"rgba(251, 191, 36, 0.6)\"\n },\n frosted: {\n text: \"rgba(31, 41, 55, 0.95)\",\n background: \"rgba(255, 255, 255, 0.3)\",\n primary: \"rgba(79, 70, 229, 0.95)\",\n secondary: \"rgba(124, 58, 237, 0.95)\",\n accent: \"rgba(219, 39, 119, 0.95)\",\n highlight: \"rgba(79, 70, 229, 0.15)\",\n muted: \"rgba(255, 255, 255, 0.4)\",\n success: \"rgba(16, 185, 129, 0.95)\",\n warning: \"rgba(245, 158, 11, 0.95)\",\n error: \"rgba(220, 38, 38, 0.95)\",\n info: \"rgba(37, 99, 235, 0.95)\",\n border: \"rgba(255, 255, 255, 0.5)\",\n backgroundSecondary: \"rgba(255, 255, 255, 0.4)\",\n backgroundTertiary: \"rgba(255, 255, 255, 0.5)\",\n backgroundLight: \"rgba(255, 255, 255, 0.25)\",\n backgroundHover: \"rgba(255, 255, 255, 0.6)\",\n surface: \"rgba(255, 255, 255, 0.35)\",\n textSecondary: \"rgba(31, 41, 55, 0.8)\",\n textTertiary: \"rgba(31, 41, 55, 0.6)\",\n textMuted: \"rgba(31, 41, 55, 0.5)\",\n highlightBg: \"rgba(251, 191, 36, 0.4)\",\n highlightBorder: \"rgba(251, 191, 36, 0.7)\"\n }\n },\n buttons: {\n primary: {\n color: \"white\",\n bg: \"primary\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"rgba(255, 255, 255, 0.2)\",\n \"&:hover\": {\n bg: \"secondary\"\n }\n },\n secondary: {\n color: \"text\",\n bg: \"rgba(255, 255, 255, 0.1)\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"rgba(255, 255, 255, 0.2)\",\n \"&:hover\": {\n bg: \"rgba(255, 255, 255, 0.2)\"\n }\n },\n ghost: {\n color: \"text\",\n bg: \"transparent\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"transparent\",\n \"&:hover\": {\n borderColor: \"rgba(255, 255, 255, 0.2)\",\n bg: \"rgba(255, 255, 255, 0.05)\"\n }\n }\n },\n text: {\n heading: {\n fontFamily: \"heading\",\n fontWeight: \"heading\",\n lineHeight: \"heading\"\n },\n body: {\n fontFamily: \"body\",\n fontWeight: \"body\",\n lineHeight: \"body\"\n },\n caption: {\n fontSize: 1,\n color: \"textSecondary\"\n }\n },\n cards: {\n primary: {\n bg: \"surface\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 3\n },\n secondary: {\n bg: \"backgroundSecondary\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 3\n }\n }\n};\n// src/defaultThemes.ts\nvar defaultMarkdownTheme = {\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n fonts: {\n body: '\"Inter\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n heading: '\"Crimson Text\", \"Georgia\", \"Times New Roman\", serif',\n monospace: '\"Fira Code\", \"SF Mono\", Monaco, Inconsolata, monospace'\n },\n fontSizes: [12, 14, 16, 18, 20, 24, 32, 48, 64, 96],\n fontScale: 1,\n fontWeights: {\n body: 400,\n heading: 600,\n bold: 700,\n light: 300,\n medium: 500,\n semibold: 600\n },\n lineHeights: {\n body: 1.6,\n heading: 1.3,\n tight: 1.25,\n relaxed: 1.75\n },\n breakpoints: [\"640px\", \"768px\", \"1024px\", \"1280px\"],\n sizes: [16, 32, 64, 128, 256, 512, 768, 1024, 1536],\n radii: [0, 2, 4, 6, 8, 12, 16, 24],\n shadows: [\n \"none\",\n \"0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)\",\n \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)\",\n \"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)\",\n \"0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)\",\n \"0 25px 50px -12px rgba(0, 0, 0, 0.25)\"\n ],\n zIndices: [0, 1, 10, 20, 30, 40, 50],\n colors: {\n text: \"#1a1a1a\",\n background: \"#ffffff\",\n primary: \"#007acc\",\n secondary: \"#005a9e\",\n accent: \"#1a1a1a\",\n highlight: \"rgba(0, 122, 204, 0.1)\",\n muted: \"#f0f0f0\",\n success: \"#28a745\",\n warning: \"#ffc107\",\n error: \"#dc3545\",\n info: \"#17a2b8\",\n border: \"rgba(0, 0, 0, 0.1)\",\n backgroundSecondary: \"#f8f9fa\",\n backgroundTertiary: \"#e9ecef\",\n backgroundLight: \"rgba(0, 0, 0, 0.03)\",\n backgroundHover: \"rgba(0, 0, 0, 0.05)\",\n surface: \"#ffffff\",\n textSecondary: \"#555555\",\n textTertiary: \"#888888\",\n textMuted: \"#aaaaaa\",\n highlightBg: \"rgba(255, 235, 59, 0.3)\",\n highlightBorder: \"rgba(255, 235, 59, 0.6)\"\n },\n buttons: {\n primary: {\n color: \"white\",\n bg: \"primary\",\n \"&:hover\": { bg: \"secondary\" }\n },\n secondary: {\n color: \"primary\",\n bg: \"transparent\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"primary\",\n \"&:hover\": { bg: \"highlight\" }\n },\n ghost: {\n color: \"text\",\n bg: \"transparent\",\n \"&:hover\": { bg: \"backgroundHover\" }\n }\n },\n text: {\n heading: {\n fontFamily: \"heading\",\n fontWeight: \"heading\",\n lineHeight: \"heading\"\n },\n body: {\n fontFamily: \"body\",\n fontWeight: \"body\",\n lineHeight: \"body\"\n },\n caption: {\n fontSize: 1,\n color: \"textSecondary\"\n }\n },\n cards: {\n primary: {\n bg: \"surface\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 2\n },\n secondary: {\n bg: \"backgroundSecondary\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 2\n }\n }\n};\nvar defaultTerminalTheme = {\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n fonts: {\n body: '\"Courier New\", Courier, monospace',\n heading: '\"Courier New\", Courier, monospace',\n monospace: '\"Courier New\", Courier, monospace'\n },\n fontSizes: [12, 14, 16, 18, 20, 24, 32, 48, 64, 96],\n fontScale: 1,\n fontWeights: {\n body: 400,\n heading: 500,\n bold: 600,\n light: 300,\n medium: 500,\n semibold: 600\n },\n lineHeights: {\n body: 1.4,\n heading: 1.2,\n tight: 1.3,\n relaxed: 1.6\n },\n breakpoints: [\"640px\", \"768px\", \"1024px\", \"1280px\"],\n sizes: [16, 32, 64, 128, 256, 512, 768, 1024, 1536],\n radii: [0, 2, 4, 6, 8, 12, 16, 24],\n shadows: [\n \"none\",\n \"0 0 5px rgba(255, 193, 7, 0.1)\",\n \"0 0 10px rgba(255, 193, 7, 0.15)\",\n \"0 0 15px rgba(255, 193, 7, 0.2)\",\n \"0 0 20px rgba(255, 193, 7, 0.25)\",\n \"0 0 30px rgba(255, 193, 7, 0.3)\"\n ],\n zIndices: [0, 1, 10, 20, 30, 40, 50],\n colors: {\n text: \"#ffc107\",\n background: \"#000000\",\n primary: \"#ffc107\",\n secondary: \"#ffb300\",\n accent: \"#ffffff\",\n highlight: \"rgba(255, 193, 7, 0.1)\",\n muted: \"#1a1a1a\",\n success: \"#4caf50\",\n warning: \"#ff9800\",\n error: \"#f44336\",\n info: \"#2196f3\",\n border: \"rgba(255, 193, 7, 0.2)\",\n backgroundSecondary: \"#0a0a0a\",\n backgroundTertiary: \"#111111\",\n backgroundLight: \"rgba(255, 193, 7, 0.03)\",\n backgroundHover: \"rgba(255, 193, 7, 0.05)\",\n surface: \"#050505\",\n textSecondary: \"#e0e0e0\",\n textTertiary: \"#b0b0b0\",\n textMuted: \"#808080\",\n highlightBg: \"rgba(255, 193, 7, 0.2)\",\n highlightBorder: \"rgba(255, 193, 7, 0.4)\"\n },\n buttons: {\n primary: {\n color: \"black\",\n bg: \"primary\",\n borderWidth: 0,\n \"&:hover\": { bg: \"secondary\" }\n },\n secondary: {\n color: \"primary\",\n bg: \"transparent\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"primary\",\n \"&:hover\": { bg: \"highlight\" }\n },\n ghost: {\n color: \"text\",\n bg: \"transparent\",\n \"&:hover\": { bg: \"backgroundHover\" }\n }\n },\n text: {\n heading: {\n fontFamily: \"heading\",\n fontWeight: \"heading\",\n lineHeight: \"heading\"\n },\n body: {\n fontFamily: \"body\",\n fontWeight: \"body\",\n lineHeight: \"body\"\n },\n caption: {\n fontSize: 1,\n color: \"textSecondary\"\n }\n },\n cards: {\n primary: {\n bg: \"surface\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 0\n },\n secondary: {\n bg: \"backgroundSecondary\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 0\n }\n }\n};\nvar defaultEditorTheme = {\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n fonts: {\n body: '\"Fira Code\", \"SF Mono\", Monaco, Inconsolata, monospace',\n heading: '\"Inter\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n monospace: '\"Fira Code\", \"SF Mono\", Monaco, Inconsolata, monospace'\n },\n fontSizes: [12, 14, 16, 18, 20, 24, 32, 48, 64, 96],\n fontScale: 1,\n fontWeights: {\n body: 400,\n heading: 600,\n bold: 700,\n light: 300,\n medium: 500,\n semibold: 600\n },\n lineHeights: {\n body: 1.5,\n heading: 1.2,\n tight: 1.3,\n relaxed: 1.7\n },\n breakpoints: [\"640px\", \"768px\", \"1024px\", \"1280px\"],\n sizes: [16, 32, 64, 128, 256, 512, 768, 1024, 1536],\n radii: [0, 2, 4, 6, 8, 12, 16, 24],\n shadows: [\n \"none\",\n \"0 1px 2px rgba(0, 0, 0, 0.05)\",\n \"0 2px 4px rgba(0, 0, 0, 0.1)\",\n \"0 4px 8px rgba(0, 0, 0, 0.15)\",\n \"0 8px 16px rgba(0, 0, 0, 0.2)\",\n \"0 12px 24px rgba(0, 0, 0, 0.25)\"\n ],\n zIndices: [0, 1, 10, 20, 30, 40, 50],\n colors: {\n text: \"#d4d4d4\",\n background: \"#1e1e1e\",\n primary: \"#569cd6\",\n secondary: \"#408ac9\",\n accent: \"#c586c0\",\n highlight: \"rgba(86, 156, 214, 0.1)\",\n muted: \"#2a2a2a\",\n success: \"#6a9955\",\n warning: \"#d18616\",\n error: \"#f44747\",\n info: \"#569cd6\",\n border: \"rgba(255, 255, 255, 0.1)\",\n backgroundSecondary: \"#252526\",\n backgroundTertiary: \"#333333\",\n backgroundLight: \"rgba(255, 255, 255, 0.03)\",\n backgroundHover: \"rgba(255, 255, 255, 0.05)\",\n surface: \"#252526\",\n textSecondary: \"#cccccc\",\n textTertiary: \"#999999\",\n textMuted: \"#666666\",\n highlightBg: \"rgba(255, 235, 59, 0.2)\",\n highlightBorder: \"rgba(255, 235, 59, 0.4)\"\n },\n buttons: {\n primary: {\n color: \"white\",\n bg: \"primary\",\n \"&:hover\": { bg: \"secondary\" }\n },\n secondary: {\n color: \"primary\",\n bg: \"transparent\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"primary\",\n \"&:hover\": { bg: \"highlight\" }\n },\n ghost: {\n color: \"text\",\n bg: \"transparent\",\n \"&:hover\": { bg: \"backgroundHover\" }\n }\n },\n text: {\n heading: {\n fontFamily: \"heading\",\n fontWeight: \"heading\",\n lineHeight: \"heading\"\n },\n body: {\n fontFamily: \"body\",\n fontWeight: \"body\",\n lineHeight: \"body\"\n },\n caption: {\n fontSize: 1,\n color: \"textSecondary\"\n }\n },\n cards: {\n primary: {\n bg: \"surface\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 1\n },\n secondary: {\n bg: \"backgroundSecondary\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 1\n }\n }\n};\n// src/landingPageTheme.ts\nvar landingPageTheme = {\n space: [0, 4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 80, 100, 128],\n fonts: {\n body: 'Inter, \"Geist Sans\", system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif',\n heading: '-apple-system, BlinkMacSystemFont, \"SF Pro Display\", \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif',\n monospace: '\"SF Mono\", Monaco, Inconsolata, \"Fira Code\", monospace'\n },\n fontSizes: [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 24, 28, 32, 36, 48, 56, 68, 84, 96],\n fontScale: 1,\n fontWeights: {\n body: 400,\n heading: 600,\n bold: 700,\n light: 300,\n medium: 500,\n semibold: 600\n },\n lineHeights: {\n body: 1.6,\n heading: 1.2,\n tight: 1.05,\n relaxed: 1.7\n },\n breakpoints: [\"640px\", \"768px\", \"1024px\", \"1280px\", \"1400px\"],\n sizes: [16, 32, 64, 128, 200, 240, 256, 300, 512, 740, 768, 820, 900, 1024, 1200, 1400, 1536],\n radii: [0, 2, 4, 6, 7, 8, 9, 10, 12, 14, 16, 24],\n shadows: [\n \"none\",\n \"0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)\",\n \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)\",\n \"0 4px 12px rgba(0, 194, 255, 0.4)\",\n \"0 6px 24px rgba(0, 194, 255, 0.1)\",\n \"0 8px 32px rgba(0, 0, 0, 0.4)\"\n ],\n zIndices: [0, 1, 10, 20, 30, 40, 50, 1000],\n colors: {\n text: \"#ffffff\",\n background: \"#000000\",\n primary: \"#00C2FF\",\n secondary: \"#0098CC\",\n accent: \"#0066FF\",\n highlight: \"rgba(0, 194, 255, 0.15)\",\n muted: \"#1a1a1a\",\n success: \"#4caf50\",\n warning: \"#ff9800\",\n error: \"#f44336\",\n info: \"#2196f3\",\n border: \"rgba(0, 194, 255, 0.2)\",\n backgroundSecondary: \"#0a1628\",\n backgroundTertiary: \"#0f1c2e\",\n backgroundLight: \"rgba(0, 194, 255, 0.04)\",\n backgroundHover: \"rgba(0, 194, 255, 0.1)\",\n surface: \"rgba(0, 0, 0, 0.4)\",\n textSecondary: \"#d1d5db\",\n textTertiary: \"#9ca3af\",\n textMuted: \"#6b7280\",\n highlightBg: \"rgba(255, 235, 59, 0.25)\",\n highlightBorder: \"rgba(255, 235, 59, 0.5)\"\n },\n buttons: {\n primary: {\n color: \"#000000\",\n bg: \"#00C2FF\",\n borderWidth: 0,\n padding: \"8px 20px\",\n fontSize: 14,\n fontWeight: 600,\n cursor: \"pointer\",\n \"&:hover\": {\n bg: \"#00D9FF\"\n }\n },\n secondary: {\n color: \"#00C2FF\",\n bg: \"transparent\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"rgba(0, 194, 255, 0.3)\",\n padding: \"8px 16px\",\n fontSize: 14,\n fontWeight: 600,\n cursor: \"pointer\",\n \"&:hover\": {\n bg: \"rgba(0, 194, 255, 0.1)\",\n borderColor: \"#00C2FF\"\n }\n },\n ghost: {\n color: \"#00C2FF\",\n bg: \"transparent\",\n borderWidth: 0,\n padding: \"8px 16px\",\n fontSize: 14,\n fontWeight: 500,\n cursor: \"pointer\",\n \"&:hover\": {\n color: \"#00D9FF\",\n bg: \"rgba(0, 194, 255, 0.1)\"\n }\n }\n },\n text: {\n heading: {\n fontFamily: \"heading\",\n fontWeight: \"heading\",\n lineHeight: \"heading\",\n color: \"#ffffff\"\n },\n body: {\n fontFamily: \"body\",\n fontWeight: \"body\",\n lineHeight: \"body\",\n color: \"text\"\n },\n caption: {\n fontSize: 1,\n color: \"textSecondary\"\n }\n },\n cards: {\n primary: {\n bg: \"surface\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 4\n },\n secondary: {\n bg: \"rgba(0, 194, 255, 0.05)\",\n border: \"1px solid\",\n borderColor: \"rgba(0, 194, 255, 0.2)\",\n borderRadius: 4\n }\n }\n};\nvar landingPageLightTheme = {\n ...landingPageTheme,\n colors: {\n text: \"#1a1a1a\",\n background: \"#ffffff\",\n primary: \"#0098CC\",\n secondary: \"#00C2FF\",\n accent: \"#0066FF\",\n highlight: \"rgba(0, 152, 204, 0.1)\",\n muted: \"#f0f0f0\",\n success: \"#4caf50\",\n warning: \"#ff9800\",\n error: \"#f44336\",\n info: \"#2196f3\",\n border: \"rgba(0, 152, 204, 0.2)\",\n backgroundSecondary: \"#f8f9fa\",\n backgroundTertiary: \"#e9ecef\",\n backgroundLight: \"rgba(0, 152, 204, 0.03)\",\n backgroundHover: \"rgba(0, 152, 204, 0.05)\",\n surface: \"rgba(255, 255, 255, 0.95)\",\n textSecondary: \"#555555\",\n textTertiary: \"#888888\",\n textMuted: \"#aaaaaa\",\n highlightBg: \"rgba(255, 235, 59, 0.3)\",\n highlightBorder: \"rgba(255, 235, 59, 0.6)\"\n },\n buttons: {\n primary: {\n color: \"#ffffff\",\n bg: \"#0098CC\",\n borderWidth: 0,\n padding: \"8px 20px\",\n fontSize: 14,\n fontWeight: 600,\n cursor: \"pointer\",\n \"&:hover\": {\n bg: \"#007aa8\"\n }\n },\n secondary: {\n color: \"#0098CC\",\n bg: \"transparent\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"rgba(0, 152, 204, 0.3)\",\n padding: \"8px 16px\",\n fontSize: 14,\n fontWeight: 600,\n cursor: \"pointer\",\n \"&:hover\": {\n bg: \"rgba(0, 152, 204, 0.05)\",\n borderColor: \"#0098CC\"\n }\n },\n ghost: {\n color: \"#0098CC\",\n bg: \"transparent\",\n borderWidth: 0,\n padding: \"8px 16px\",\n fontSize: 14,\n fontWeight: 500,\n cursor: \"pointer\",\n \"&:hover\": {\n color: \"#007aa8\",\n bg: \"rgba(0, 152, 204, 0.05)\"\n }\n }\n }\n};\n\n// src/themes.ts\nvar regalTheme = {\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n fonts: {\n body: '\"Inter\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n heading: '\"Crimson Text\", \"Georgia\", \"Times New Roman\", serif',\n monospace: '\"Fira Code\", \"SF Mono\", Monaco, Inconsolata, monospace'\n },\n fontSizes: [12, 14, 16, 18, 20, 24, 32, 48, 64, 96],\n fontScale: 1,\n fontWeights: {\n body: 400,\n heading: 600,\n bold: 700,\n light: 300,\n medium: 500,\n semibold: 600\n },\n lineHeights: {\n body: 1.5,\n heading: 1.2,\n tight: 1.25,\n relaxed: 1.75\n },\n breakpoints: [\"640px\", \"768px\", \"1024px\", \"1280px\"],\n sizes: [16, 32, 64, 128, 256, 512, 768, 1024, 1536],\n radii: [0, 2, 4, 6, 8, 12, 16, 24],\n shadows: [\n \"none\",\n \"0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)\",\n \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)\",\n \"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)\",\n \"0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)\",\n \"0 25px 50px -12px rgba(0, 0, 0, 0.25)\"\n ],\n zIndices: [0, 1, 10, 20, 30, 40, 50],\n colors: {\n text: \"#f1e8dc\",\n background: \"#1a1f2e\",\n primary: \"#d4a574\",\n secondary: \"#e0b584\",\n accent: \"#c9b8a3\",\n highlight: \"rgba(212, 165, 116, 0.15)\",\n muted: \"#8b7968\",\n success: \"#5c8a72\",\n warning: \"#d4a574\",\n error: \"#a85751\",\n info: \"#d4a574\",\n border: \"rgba(212, 165, 116, 0.2)\",\n backgroundSecondary: \"#212738\",\n backgroundTertiary: \"#2d3446\",\n backgroundLight: \"rgba(212, 165, 116, 0.08)\",\n backgroundHover: \"rgba(212, 165, 116, 0.15)\",\n surface: \"#212738\",\n textSecondary: \"#c9b8a3\",\n textTertiary: \"#8b7968\",\n textMuted: \"#8b7968\",\n highlightBg: \"rgba(255, 193, 7, 0.25)\",\n highlightBorder: \"rgba(255, 193, 7, 0.5)\"\n },\n buttons: {\n primary: {\n color: \"background\",\n bg: \"primary\",\n \"&:hover\": {\n bg: \"secondary\"\n }\n },\n secondary: {\n color: \"text\",\n bg: \"muted\",\n \"&:hover\": {\n bg: \"backgroundSecondary\"\n }\n },\n ghost: {\n color: \"primary\",\n bg: \"transparent\",\n \"&:hover\": {\n bg: \"muted\"\n }\n }\n },\n text: {\n heading: {\n fontFamily: \"heading\",\n fontWeight: \"heading\",\n lineHeight: \"heading\"\n },\n body: {\n fontFamily: \"body\",\n fontWeight: \"body\",\n lineHeight: \"body\"\n },\n caption: {\n fontSize: 1,\n color: \"textSecondary\"\n }\n },\n cards: {\n primary: {\n bg: \"background\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 2\n },\n secondary: {\n bg: \"backgroundSecondary\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 2\n }\n }\n};\nvar terminalTheme = {\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n fonts: {\n body: '\"SF Mono\", \"Monaco\", \"Inconsolata\", \"Fira Code\", monospace',\n heading: '\"SF Mono\", \"Monaco\", \"Inconsolata\", \"Fira Code\", monospace',\n monospace: '\"SF Mono\", \"Monaco\", \"Inconsolata\", \"Fira Code\", monospace'\n },\n fontSizes: [12, 14, 16, 18, 20, 24, 32, 48, 64, 96],\n fontScale: 1,\n fontWeights: {\n body: 400,\n heading: 500,\n bold: 600,\n light: 300,\n medium: 500,\n semibold: 600\n },\n lineHeights: {\n body: 1.6,\n heading: 1.3,\n tight: 1.4,\n relaxed: 1.8\n },\n breakpoints: [\"640px\", \"768px\", \"1024px\", \"1280px\"],\n sizes: [16, 32, 64, 128, 256, 512, 768, 1024, 1536],\n radii: [0, 2, 4, 6, 8, 12, 16, 24],\n shadows: [\n \"none\",\n \"0 1px 2px 0 rgba(0, 0, 0, 0.05)\",\n \"0 2px 4px 0 rgba(0, 0, 0, 0.06)\",\n \"0 4px 6px 0 rgba(0, 0, 0, 0.07)\",\n \"0 8px 12px 0 rgba(0, 0, 0, 0.08)\",\n \"0 16px 24px 0 rgba(0, 0, 0, 0.10)\"\n ],\n zIndices: [0, 1, 10, 20, 30, 40, 50],\n colors: {\n text: \"#e4e4e4\",\n background: \"rgba(10, 10, 10, 0.85)\",\n primary: \"#66b3ff\",\n secondary: \"#80c4ff\",\n accent: \"#66ff99\",\n highlight: \"rgba(102, 179, 255, 0.15)\",\n muted: \"rgba(26, 26, 26, 0.8)\",\n success: \"#66ff99\",\n warning: \"#ffcc66\",\n error: \"#ff6666\",\n info: \"#66b3ff\",\n border: \"rgba(255, 255, 255, 0.1)\",\n backgroundSecondary: \"rgba(15, 15, 15, 0.9)\",\n backgroundTertiary: \"rgba(20, 20, 20, 0.9)\",\n backgroundLight: \"rgba(255, 255, 255, 0.05)\",\n backgroundHover: \"rgba(102, 179, 255, 0.08)\",\n surface: \"rgba(15, 15, 15, 0.95)\",\n textSecondary: \"rgba(255, 255, 255, 0.7)\",\n textTertiary: \"rgba(255, 255, 255, 0.5)\",\n textMuted: \"rgba(255, 255, 255, 0.4)\",\n highlightBg: \"rgba(255, 235, 59, 0.25)\",\n highlightBorder: \"rgba(255, 235, 59, 0.5)\"\n },\n modes: {\n light: {\n text: \"#1a1a1a\",\n background: \"rgba(255, 255, 255, 0.9)\",\n primary: \"#0066cc\",\n secondary: \"#0052a3\",\n accent: \"#00cc88\",\n highlight: \"rgba(0, 102, 204, 0.08)\",\n muted: \"rgba(245, 245, 245, 0.8)\",\n success: \"#00cc88\",\n warning: \"#ffaa00\",\n error: \"#ff3333\",\n info: \"#0066cc\",\n border: \"rgba(0, 0, 0, 0.1)\",\n backgroundSecondary: \"rgba(250, 250, 250, 0.9)\",\n backgroundTertiary: \"rgba(245, 245, 245, 0.9)\",\n backgroundLight: \"rgba(0, 0, 0, 0.02)\",\n backgroundHover: \"rgba(0, 102, 204, 0.04)\",\n surface: \"rgba(255, 255, 255, 0.95)\",\n textSecondary: \"rgba(0, 0, 0, 0.6)\",\n textTertiary: \"rgba(0, 0, 0, 0.4)\",\n textMuted: \"rgba(0, 0, 0, 0.3)\",\n highlightBg: \"rgba(255, 235, 59, 0.3)\",\n highlightBorder: \"rgba(255, 235, 59, 0.6)\"\n }\n },\n buttons: {\n primary: {\n color: \"white\",\n bg: \"primary\",\n borderWidth: 0,\n \"&:hover\": {\n bg: \"secondary\"\n }\n },\n secondary: {\n color: \"primary\",\n bg: \"transparent\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"primary\",\n \"&:hover\": {\n bg: \"highlight\"\n }\n },\n ghost: {\n color: \"text\",\n bg: \"transparent\",\n \"&:hover\": {\n bg: \"backgroundHover\"\n }\n }\n },\n text: {\n heading: {\n fontFamily: \"heading\",\n fontWeight: \"heading\",\n lineHeight: \"heading\"\n },\n body: {\n fontFamily: \"body\",\n fontWeight: \"body\",\n lineHeight: \"body\"\n },\n caption: {\n fontSize: 1,\n color: \"textSecondary\"\n }\n },\n cards: {\n primary: {\n bg: \"surface\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 1\n },\n secondary: {\n bg: \"backgroundSecondary\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 1\n }\n }\n};\nvar matrixTheme = {\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n fonts: {\n body: '\"Courier New\", \"Courier\", \"Lucida Console\", \"Monaco\", monospace',\n heading: '\"Courier New\", \"Courier\", \"Lucida Console\", \"Monaco\", monospace',\n monospace: '\"Courier New\", \"Courier\", \"Lucida Console\", \"Monaco\", monospace'\n },\n fontSizes: [12, 14, 16, 18, 20, 24, 32, 48, 64, 96],\n fontScale: 1,\n fontWeights: {\n body: 400,\n heading: 500,\n bold: 600,\n light: 300,\n medium: 500,\n semibold: 600\n },\n lineHeights: {\n body: 1.5,\n heading: 1.2,\n tight: 1.3,\n relaxed: 1.7\n },\n breakpoints: [\"640px\", \"768px\", \"1024px\", \"1280px\"],\n sizes: [16, 32, 64, 128, 256, 512, 768, 1024, 1536],\n radii: [0, 2, 4, 6, 8, 12, 16, 24],\n shadows: [\n \"none\",\n \"0 0 5px rgba(0, 216, 53, 0.15)\",\n \"0 0 10px rgba(0, 216, 53, 0.2)\",\n \"0 0 15px rgba(0, 216, 53, 0.25)\",\n \"0 0 20px rgba(0, 216, 53, 0.3)\",\n \"0 0 30px rgba(0, 216, 53, 0.4)\"\n ],\n zIndices: [0, 1, 10, 20, 30, 40, 50],\n colors: {\n text: \"#a8a8a8\",\n background: \"#000000\",\n primary: \"#00d835\",\n secondary: \"#00a828\",\n accent: \"#00d835\",\n highlight: \"rgba(0, 216, 53, 0.15)\",\n muted: \"#0a0a0a\",\n success: \"#00d835\",\n warning: \"#d4a000\",\n error: \"#d63333\",\n info: \"#00a8d6\",\n border: \"rgba(0, 216, 53, 0.2)\",\n backgroundSecondary: \"#0a0a0a\",\n backgroundTertiary: \"#111111\",\n backgroundLight: \"rgba(0, 216, 53, 0.03)\",\n backgroundHover: \"rgba(0, 216, 53, 0.08)\",\n surface: \"#050505\",\n textSecondary: \"#808080\",\n textTertiary: \"#606060\",\n textMuted: \"#484848\",\n highlightBg: \"rgba(0, 216, 53, 0.25)\",\n highlightBorder: \"rgba(0, 216, 53, 0.5)\"\n },\n buttons: {\n primary: {\n color: \"black\",\n bg: \"primary\",\n borderWidth: 0,\n \"&:hover\": {\n bg: \"secondary\"\n }\n },\n secondary: {\n color: \"primary\",\n bg: \"transparent\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"primary\",\n \"&:hover\": {\n bg: \"highlight\"\n }\n },\n ghost: {\n color: \"text\",\n bg: \"transparent\",\n \"&:hover\": {\n bg: \"backgroundHover\"\n }\n }\n },\n text: {\n heading: {\n fontFamily: \"heading\",\n fontWeight: \"heading\",\n lineHeight: \"heading\"\n },\n body: {\n fontFamily: \"body\",\n fontWeight: \"body\",\n lineHeight: \"body\"\n },\n caption: {\n fontSize: 1,\n color: \"textSecondary\"\n }\n },\n cards: {\n primary: {\n bg: \"surface\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 0\n },\n secondary: {\n bg: \"backgroundSecondary\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 0\n }\n }\n};\nvar matrixMinimalTheme = {\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n fonts: {\n body: '\"Courier New\", \"Courier\", \"Lucida Console\", \"Monaco\", monospace',\n heading: '\"Courier New\", \"Courier\", \"Lucida Console\", \"Monaco\", monospace',\n monospace: '\"Courier New\", \"Courier\", \"Lucida Console\", \"Monaco\", monospace'\n },\n fontSizes: [12, 14, 16, 18, 20, 24, 32, 48, 64, 96],\n fontScale: 1,\n fontWeights: {\n body: 400,\n heading: 500,\n bold: 600,\n light: 300,\n medium: 500,\n semibold: 600\n },\n lineHeights: {\n body: 1.5,\n heading: 1.2,\n tight: 1.3,\n relaxed: 1.7\n },\n breakpoints: [\"640px\", \"768px\", \"1024px\", \"1280px\"],\n sizes: [16, 32, 64, 128, 256, 512, 768, 1024, 1536],\n radii: [0, 2, 4, 6, 8, 12, 16, 24],\n shadows: [\n \"none\",\n \"0 1px 2px rgba(0, 0, 0, 0.05)\",\n \"0 2px 4px rgba(0, 0, 0, 0.1)\",\n \"0 4px 8px rgba(0, 0, 0, 0.15)\",\n \"0 8px 16px rgba(0, 0, 0, 0.2)\",\n \"0 0 20px rgba(0, 216, 53, 0.1)\"\n ],\n zIndices: [0, 1, 10, 20, 30, 40, 50],\n colors: {\n text: \"#a8a8a8\",\n background: \"#000000\",\n primary: \"#b8b8b8\",\n secondary: \"#909090\",\n accent: \"#00d835\",\n highlight: \"rgba(0, 216, 53, 0.1)\",\n muted: \"#0a0a0a\",\n success: \"#00d835\",\n warning: \"#d4a000\",\n error: \"#d63333\",\n info: \"#00a8d6\",\n border: \"rgba(184, 184, 184, 0.1)\",\n backgroundSecondary: \"#0a0a0a\",\n backgroundTertiary: \"#111111\",\n backgroundLight: \"rgba(184, 184, 184, 0.02)\",\n backgroundHover: \"rgba(0, 216, 53, 0.05)\",\n surface: \"#050505\",\n textSecondary: \"#808080\",\n textTertiary: \"#606060\",\n textMuted: \"#484848\",\n highlightBg: \"rgba(0, 216, 53, 0.2)\",\n highlightBorder: \"rgba(0, 216, 53, 0.4)\"\n },\n buttons: {\n primary: {\n color: \"black\",\n bg: \"primary\",\n borderWidth: 0,\n \"&:hover\": {\n bg: \"secondary\"\n }\n },\n secondary: {\n color: \"primary\",\n bg: \"transparent\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"primary\",\n \"&:hover\": {\n bg: \"backgroundHover\"\n }\n },\n ghost: {\n color: \"text\",\n bg: \"transparent\",\n \"&:hover\": {\n bg: \"backgroundHover\"\n }\n }\n },\n text: {\n heading: {\n fontFamily: \"heading\",\n fontWeight: \"heading\",\n lineHeight: \"heading\"\n },\n body: {\n fontFamily: \"body\",\n fontWeight: \"body\",\n lineHeight: \"body\"\n },\n caption: {\n fontSize: 1,\n color: \"textSecondary\"\n }\n },\n cards: {\n primary: {\n bg: \"surface\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 0\n },\n secondary: {\n bg: \"backgroundSecondary\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 0\n }\n }\n};\nvar slateTheme = {\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n fonts: {\n body: '\"Inter\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n heading: '\"Inter\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n monospace: '\"Fira Code\", \"SF Mono\", Monaco, Inconsolata, monospace'\n },\n fontSizes: [12, 14, 16, 18, 20, 24, 32, 48, 64, 96],\n fontScale: 1,\n fontWeights: {\n body: 400,\n heading: 600,\n bold: 700,\n light: 300,\n medium: 500,\n semibold: 600\n },\n lineHeights: {\n body: 1.6,\n heading: 1.3,\n tight: 1.25,\n relaxed: 1.75\n },\n breakpoints: [\"640px\", \"768px\", \"1024px\", \"1280px\"],\n sizes: [16, 32, 64, 128, 256, 512, 768, 1024, 1536],\n radii: [0, 2, 4, 6, 8, 12, 16, 24],\n shadows: [\n \"none\",\n \"0 1px 3px 0 rgba(0, 0, 0, 0.2)\",\n \"0 4px 6px -1px rgba(0, 0, 0, 0.2)\",\n \"0 10px 15px -3px rgba(0, 0, 0, 0.2)\",\n \"0 20px 25px -5px rgba(0, 0, 0, 0.25)\",\n \"0 25px 50px -12px rgba(0, 0, 0, 0.3)\"\n ],\n zIndices: [0, 1, 10, 20, 30, 40, 50],\n colors: {\n text: \"#9ca3af\",\n background: \"#1a1c1e\",\n primary: \"#d1d5db\",\n secondary: \"#6b7280\",\n accent: \"#f59e0b\",\n highlight: \"rgba(209, 213, 219, 0.15)\",\n muted: \"#2d3134\",\n success: \"#10b981\",\n warning: \"#f59e0b\",\n error: \"#ef4444\",\n info: \"#3b82f6\",\n border: \"rgba(156, 163, 175, 0.15)\",\n backgroundSecondary: \"#22252a\",\n backgroundTertiary: \"#2d3134\",\n backgroundLight: \"rgba(156, 163, 175, 0.05)\",\n backgroundHover: \"rgba(156, 163, 175, 0.1)\",\n surface: \"#1f2124\",\n textSecondary: \"#e5e7eb\",\n textTertiary: \"#6b7280\",\n textMuted: \"#4b5563\",\n highlightBg: \"rgba(245, 158, 11, 0.25)\",\n highlightBorder: \"rgba(245, 158, 11, 0.5)\"\n },\n buttons: {\n primary: {\n color: \"#1a1c1e\",\n bg: \"primary\",\n borderWidth: 0,\n \"&:hover\": {\n bg: \"#9ca3af\"\n }\n },\n secondary: {\n color: \"#e5e7eb\",\n bg: \"secondary\",\n borderWidth: 0,\n \"&:hover\": {\n bg: \"#4b5563\"\n }\n },\n ghost: {\n color: \"textSecondary\",\n bg: \"transparent\",\n \"&:hover\": {\n bg: \"backgroundHover\"\n }\n }\n },\n text: {\n heading: {\n fontFamily: \"heading\",\n fontWeight: \"heading\",\n lineHeight: \"heading\",\n color: \"textSecondary\"\n },\n body: {\n fontFamily: \"body\",\n fontWeight: \"body\",\n lineHeight: \"body\"\n },\n caption: {\n fontSize: 1,\n color: \"textTertiary\"\n }\n },\n cards: {\n primary: {\n bg: \"surface\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 3\n },\n secondary: {\n bg: \"backgroundSecondary\",\n border: \"1px solid\",\n borderColor: \"border\",\n borderRadius: 3\n }\n }\n};\n// src/ThemeProvider.tsx\nimport React, { createContext, useContext, useState, useEffect } from \"react\";\n\n// src/themeHelpers.ts\nfunction overrideColors(theme, colors) {\n return {\n ...theme,\n colors: {\n ...theme.colors,\n ...colors\n }\n };\n}\nfunction makeTheme(baseTheme, overrides) {\n return {\n ...baseTheme,\n ...overrides,\n colors: {\n ...baseTheme.colors,\n ...overrides.colors\n },\n fonts: {\n ...baseTheme.fonts,\n ...overrides.fonts\n }\n };\n}\nfunction addMode(theme, modeName, colors, baseMode) {\n let baseColors;\n if (baseMode && theme.modes && theme.modes[baseMode]) {\n baseColors = {\n ...theme.colors,\n ...theme.modes[baseMode]\n };\n } else {\n baseColors = theme.colors;\n }\n const newMode = {\n ...baseColors,\n ...colors\n };\n return {\n ...theme,\n modes: {\n ...theme.modes,\n [modeName]: newMode\n }\n };\n}\nfunction getMode(theme, mode) {\n if (!mode || !theme.modes || !theme.modes[mode]) {\n return theme.colors;\n }\n return {\n ...theme.colors,\n ...theme.modes[mode]\n };\n}\n\n// src/ThemeProvider.tsx\nvar ThemeContext;\nvar getThemeContext = () => {\n if (typeof window !== \"undefined\") {\n const globalWindow = window;\n if (!globalWindow.__principlemd_theme_context__) {\n globalWindow.__principlemd_theme_context__ = createContext(undefined);\n }\n return globalWindow.__principlemd_theme_context__;\n } else {\n if (!ThemeContext) {\n ThemeContext = createContext(undefined);\n }\n return ThemeContext;\n }\n};\nvar ThemeContextSingleton = getThemeContext();\nvar useTheme = () => {\n const context = useContext(ThemeContextSingleton);\n if (!context) {\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n }\n return context;\n};\nvar ThemeProvider = ({\n children,\n theme: customTheme = theme,\n initialMode\n}) => {\n const [mode, setMode] = useState(initialMode);\n const activeTheme = React.useMemo(() => {\n if (!mode || !customTheme.modes || !customTheme.modes[mode]) {\n return customTheme;\n }\n return {\n ...customTheme,\n colors: getMode(customTheme, mode)\n };\n }, [customTheme, mode]);\n useEffect(() => {\n if (!initialMode) {\n const savedMode = localStorage.getItem(\"principlemd-theme-mode\");\n if (savedMode) {\n setMode(savedMode);\n }\n }\n }, [initialMode]);\n useEffect(() => {\n if (mode) {\n localStorage.setItem(\"principlemd-theme-mode\", mode);\n } else {\n localStorage.removeItem(\"principlemd-theme-mode\");\n }\n }, [mode]);\n const value = {\n theme: activeTheme,\n mode,\n setMode\n };\n return /* @__PURE__ */ React.createElement(ThemeContextSingleton.Provider, {\n value\n }, children);\n};\nvar withTheme = (Component) => {\n return (props) => {\n const { theme: theme2 } = useTheme();\n return /* @__PURE__ */ React.createElement(Component, {\n ...props,\n theme: theme2\n });\n };\n};\n// src/utils.ts\nvar getColor = (theme2, colorKey) => {\n const colors = theme2.colors;\n const value = colors[colorKey];\n return typeof value === \"string\" ? value : colorKey;\n};\nvar getSpace = (theme2, index) => {\n return theme2.space[index] || 0;\n};\nvar getFontSize = (theme2, index) => {\n return theme2.fontSizes[index] || theme2.fontSizes[2];\n};\nvar getRadius = (theme2, index) => {\n return theme2.radii[index] || 0;\n};\nvar getShadow = (theme2, index) => {\n return theme2.shadows[index] || \"none\";\n};\nvar getZIndex = (theme2, index) => {\n return theme2.zIndices[index] || 0;\n};\nvar responsive = (values) => {\n return values.reduce((acc, value, index) => {\n if (index === 0) {\n return value;\n }\n return {\n ...acc,\n [`@media screen and (min-width: ${values[index - 1]})`]: value\n };\n }, {});\n};\nvar sx = (styles) => styles;\nvar createStyle = (theme2, styleObj) => {\n const processValue = (value) => {\n if (typeof value === \"string\") {\n if (value in theme2.colors) {\n return getColor(theme2, value);\n }\n return value;\n }\n if (typeof value === \"number\") {\n return value;\n }\n if (Array.isArray(value)) {\n return value.map(processValue);\n }\n if (typeof value === \"object\" && value !== null) {\n const processed2 = {};\n for (const [key, val] of Object.entries(value)) {\n processed2[key] = processValue(val);\n }\n return processed2;\n }\n return value;\n };\n const processed = {};\n for (const [key, val] of Object.entries(styleObj)) {\n processed[key] = processValue(val);\n }\n return processed;\n};\nvar mergeThemes = (baseTheme, ...overrides) => {\n return overrides.reduce((theme2, override) => ({\n space: override.space || theme2.space,\n fonts: { ...theme2.fonts, ...override.fonts || {} },\n fontSizes: override.fontSizes || theme2.fontSizes,\n fontWeights: { ...theme2.fontWeights, ...override.fontWeights || {} },\n lineHeights: { ...theme2.lineHeights, ...override.lineHeights || {} },\n breakpoints: override.breakpoints || theme2.breakpoints,\n sizes: override.sizes || theme2.sizes,\n radii: override.radii || theme2.radii,\n shadows: override.shadows || theme2.shadows,\n zIndices: override.zIndices || theme2.zIndices,\n colors: {\n ...theme2.colors,\n ...override.colors || {}\n },\n buttons: { ...theme2.buttons, ...override.buttons || {} },\n text: { ...theme2.text, ...override.text || {} },\n cards: { ...theme2.cards, ...override.cards || {} }\n }), baseTheme);\n};\n// src/ThemeShowcase.tsx\nimport React2 from \"react\";\nvar ThemeShowcase = ({\n theme: theme2,\n title,\n showValues = true,\n sections = [\"colors\", \"typography\", \"spacing\", \"shadows\", \"radii\"]\n}) => {\n const containerStyle = {\n fontFamily: theme2.fonts.body,\n color: theme2.colors.text,\n backgroundColor: theme2.colors.background,\n padding: theme2.space[4],\n minHeight: \"100vh\"\n };\n const sectionStyle = {\n marginBottom: theme2.space[5],\n padding: theme2.space[4],\n backgroundColor: theme2.colors.surface || theme2.colors.backgroundSecondary,\n borderRadius: theme2.radii[2],\n border: `1px solid ${theme2.colors.border}`\n };\n const headingStyle = {\n fontFamily: theme2.fonts.heading,\n fontSize: theme2.fontSizes[5],\n fontWeight: theme2.fontWeights.heading,\n marginBottom: theme2.space[3],\n color: theme2.colors.primary\n };\n const subheadingStyle = {\n fontFamily: theme2.fonts.heading,\n fontSize: theme2.fontSizes[3],\n fontWeight: theme2.fontWeights.medium,\n marginBottom: theme2.space[2],\n marginTop: theme2.space[3],\n color: theme2.colors.text\n };\n return /* @__PURE__ */ React2.createElement(\"div\", {\n style: containerStyle\n }, title && /* @__PURE__ */ React2.createElement(\"h1\", {\n style: {\n ...headingStyle,\n fontSize: theme2.fontSizes[6],\n marginBottom: theme2.space[4]\n }\n }, title), sections.includes(\"colors\") && /* @__PURE__ */ React2.createElement(\"div\", {\n style: sectionStyle\n }, /* @__PURE__ */ React2.createElement(\"h2\", {\n style: headingStyle\n }, \"Colors\"), /* @__PURE__ */ React2.createElement(\"h3\", {\n style: subheadingStyle\n }, \"Primary Colors\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fill, minmax(200px, 1fr))\",\n gap: theme2.space[3],\n marginBottom: theme2.space[3]\n }\n }, [\"text\", \"background\", \"primary\", \"secondary\", \"accent\", \"muted\"].map((key) => {\n const color = theme2.colors[key];\n if (!color)\n return null;\n return /* @__PURE__ */ React2.createElement(\"div\", {\n key,\n style: {\n display: \"flex\",\n alignItems: \"center\",\n padding: theme2.space[2],\n backgroundColor: theme2.colors.backgroundLight || theme2.colors.backgroundTertiary,\n borderRadius: theme2.radii[1]\n }\n }, /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n width: 40,\n height: 40,\n backgroundColor: color,\n border: `1px solid ${theme2.colors.border}`,\n borderRadius: theme2.radii[1],\n marginRight: theme2.space[2]\n }\n }), /* @__PURE__ */ React2.createElement(\"div\", null, /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[1],\n fontWeight: theme2.fontWeights.medium\n }\n }, key), showValues && /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[0],\n color: theme2.colors.textSecondary\n }\n }, color)));\n })), /* @__PURE__ */ React2.createElement(\"h3\", {\n style: subheadingStyle\n }, \"Status Colors\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fill, minmax(200px, 1fr))\",\n gap: theme2.space[3],\n marginBottom: theme2.space[3]\n }\n }, [\"success\", \"warning\", \"error\", \"info\"].map((key) => {\n const color = theme2.colors[key];\n if (!color)\n return null;\n return /* @__PURE__ */ React2.createElement(\"div\", {\n key,\n style: {\n display: \"flex\",\n alignItems: \"center\",\n padding: theme2.space[2],\n backgroundColor: theme2.colors.backgroundLight || theme2.colors.backgroundTertiary,\n borderRadius: theme2.radii[1]\n }\n }, /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n width: 40,\n height: 40,\n backgroundColor: color,\n border: `1px solid ${theme2.colors.border}`,\n borderRadius: theme2.radii[1],\n marginRight: theme2.space[2]\n }\n }), /* @__PURE__ */ React2.createElement(\"div\", null, /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[1],\n fontWeight: theme2.fontWeights.medium\n }\n }, key), showValues && /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[0],\n color: theme2.colors.textSecondary\n }\n }, color)));\n })), /* @__PURE__ */ React2.createElement(\"h3\", {\n style: subheadingStyle\n }, \"Background Colors\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fill, minmax(200px, 1fr))\",\n gap: theme2.space[3]\n }\n }, [\"backgroundSecondary\", \"backgroundTertiary\", \"backgroundLight\", \"backgroundHover\", \"surface\"].map((key) => {\n const color = theme2.colors[key];\n if (!color)\n return null;\n return /* @__PURE__ */ React2.createElement(\"div\", {\n key,\n style: {\n padding: theme2.space[3],\n backgroundColor: color,\n border: `1px solid ${theme2.colors.border}`,\n borderRadius: theme2.radii[1]\n }\n }, /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[1],\n fontWeight: theme2.fontWeights.medium\n }\n }, key), showValues && /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[0],\n color: theme2.colors.textSecondary,\n marginTop: theme2.space[1]\n }\n }, color));\n }))), sections.includes(\"typography\") && /* @__PURE__ */ React2.createElement(\"div\", {\n style: sectionStyle\n }, /* @__PURE__ */ React2.createElement(\"h2\", {\n style: headingStyle\n }, \"Typography\"), /* @__PURE__ */ React2.createElement(\"h3\", {\n style: subheadingStyle\n }, \"Font Families\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: { marginBottom: theme2.space[4] }\n }, /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.heading,\n fontSize: theme2.fontSizes[4],\n marginBottom: theme2.space[2]\n }\n }, \"Heading Font: \", showValues && /* @__PURE__ */ React2.createElement(\"span\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[1],\n color: theme2.colors.textSecondary\n }\n }, \" \", theme2.fonts.heading)), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.body,\n fontSize: theme2.fontSizes[2],\n marginBottom: theme2.space[2]\n }\n }, \"Body Font: \", showValues && /* @__PURE__ */ React2.createElement(\"span\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[1],\n color: theme2.colors.textSecondary\n }\n }, \" \", theme2.fonts.body)), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[2]\n }\n }, \"Monospace Font: \", showValues && /* @__PURE__ */ React2.createElement(\"span\", {\n style: {\n fontSize: theme2.fontSizes[1],\n color: theme2.colors.textSecondary\n }\n }, \" \", theme2.fonts.monospace))), /* @__PURE__ */ React2.createElement(\"h3\", {\n style: subheadingStyle\n }, \"Font Sizes\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: { marginBottom: theme2.space[4] }\n }, theme2.fontSizes.map((size, index) => /* @__PURE__ */ React2.createElement(\"div\", {\n key: index,\n style: {\n fontSize: size,\n lineHeight: theme2.lineHeights.body,\n marginBottom: theme2.space[1]\n }\n }, \"Size \", index, \": Sample Text \", showValues && `(${size}px)`))), /* @__PURE__ */ React2.createElement(\"h3\", {\n style: subheadingStyle\n }, \"Font Weights\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(150px, 1fr))\",\n gap: theme2.space[2]\n }\n }, Object.entries(theme2.fontWeights).map(([name, weight]) => /* @__PURE__ */ React2.createElement(\"div\", {\n key: name,\n style: {\n fontWeight: weight,\n fontSize: theme2.fontSizes[2]\n }\n }, name, \" \", showValues && `(${weight})`)))), sections.includes(\"spacing\") && /* @__PURE__ */ React2.createElement(\"div\", {\n style: sectionStyle\n }, /* @__PURE__ */ React2.createElement(\"h2\", {\n style: headingStyle\n }, \"Spacing\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: { display: \"flex\", flexDirection: \"column\", gap: theme2.space[2] }\n }, theme2.space.map((space, index) => /* @__PURE__ */ React2.createElement(\"div\", {\n key: index,\n style: { display: \"flex\", alignItems: \"center\" }\n }, /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n width: 60,\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[1],\n color: theme2.colors.textSecondary\n }\n }, \"[\", index, \"]\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n height: 24,\n width: space,\n backgroundColor: theme2.colors.primary,\n borderRadius: theme2.radii[1]\n }\n }), showValues && /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n marginLeft: theme2.space[2],\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[1],\n color: theme2.colors.textSecondary\n }\n }, space, \"px\"))))), sections.includes(\"radii\") && /* @__PURE__ */ React2.createElement(\"div\", {\n style: sectionStyle\n }, /* @__PURE__ */ React2.createElement(\"h2\", {\n style: headingStyle\n }, \"Border Radii\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fill, minmax(100px, 1fr))\",\n gap: theme2.space[3]\n }\n }, theme2.radii.map((radius, index) => /* @__PURE__ */ React2.createElement(\"div\", {\n key: index,\n style: { textAlign: \"center\" }\n }, /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n width: 80,\n height: 80,\n backgroundColor: theme2.colors.primary,\n borderRadius: radius,\n marginBottom: theme2.space[1],\n margin: \"0 auto\"\n }\n }), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[0],\n color: theme2.colors.textSecondary\n }\n }, \"[\", index, \"] \", showValues && `${radius}px`))))), sections.includes(\"shadows\") && /* @__PURE__ */ React2.createElement(\"div\", {\n style: sectionStyle\n }, /* @__PURE__ */ React2.createElement(\"h2\", {\n style: headingStyle\n }, \"Shadows\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fill, minmax(150px, 1fr))\",\n gap: theme2.space[4]\n }\n }, theme2.shadows.map((shadow, index) => /* @__PURE__ */ React2.createElement(\"div\", {\n key: index,\n style: { textAlign: \"center\" }\n }, /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n width: 100,\n height: 100,\n backgroundColor: theme2.colors.background,\n boxShadow: shadow,\n borderRadius: theme2.radii[2],\n margin: \"0 auto\",\n marginBottom: theme2.space[2],\n border: `1px solid ${theme2.colors.border}`\n }\n }), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[0],\n color: theme2.colors.textSecondary\n }\n }, \"Shadow [\", index, \"]\"), showValues && /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n fontFamily: theme2.fonts.monospace,\n fontSize: theme2.fontSizes[0],\n color: theme2.colors.textMuted,\n marginTop: theme2.space[1]\n }\n }, shadow === \"none\" ? \"none\" : \"...\"))))), theme2.modes && Object.keys(theme2.modes).length > 0 && /* @__PURE__ */ React2.createElement(\"div\", {\n style: sectionStyle\n }, /* @__PURE__ */ React2.createElement(\"h2\", {\n style: headingStyle\n }, \"Available Modes\"), /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n display: \"flex\",\n gap: theme2.space[2],\n flexWrap: \"wrap\"\n }\n }, /* @__PURE__ */ React2.createElement(\"div\", {\n style: {\n padding: `${theme2.space[2]}px ${theme2.space[3]}px`,\n backgroundColor: theme2.colors.primary,\n color: \"#ffffff\",\n borderRadius: theme2.radii[2],\n fontFamily: theme2.fonts.body,\n fontSize: theme2.fontSizes[1]\n }\n }, \"default\"), Object.keys(theme2.modes).map((modeName) => /* @__PURE__ */ React2.createElement(\"div\", {\n key: modeName,\n style: {\n padding: `${theme2.space[2]}px ${theme2.space[3]}px`,\n backgroundColor: theme2.colors.secondary,\n color: theme2.colors.text,\n borderRadius: theme2.radii[2],\n fontFamily: theme2.fonts.body,\n fontSize: theme2.fontSizes[1]\n }\n }, modeName)))));\n};\n\n// src/index.ts\nvar theme = terminalTheme;\nfunction scaleThemeFonts(theme2, scale) {\n const currentScale = theme2.fontScale || 1;\n const effectiveScale = scale / currentScale;\n return {\n ...theme2,\n fontSizes: theme2.fontSizes.map((size) => Math.round(size * effectiveScale)),\n fontScale: scale\n };\n}\nfunction increaseFontScale(theme2) {\n const currentScale = theme2.fontScale || 1;\n const newScale = Math.min(currentScale * 1.1, 2);\n return scaleThemeFonts(theme2, newScale);\n}\nfunction decreaseFontScale(theme2) {\n const currentScale = theme2.fontScale || 1;\n const newScale = Math.max(currentScale * 0.9, 0.5);\n return scaleThemeFonts(theme2, newScale);\n}\nfunction resetFontScale(theme2) {\n return scaleThemeFonts(theme2, 1);\n}\nvar src_default = theme;\nexport {\n withTheme,\n useTheme,\n theme,\n terminalTheme,\n sx,\n slateTheme,\n scaleThemeFonts,\n responsive,\n resetFontScale,\n regalTheme,\n overrideColors,\n mergeThemes,\n matrixTheme,\n matrixMinimalTheme,\n makeTheme,\n landingPageTheme,\n landingPageLightTheme,\n increaseFontScale,\n glassmorphismTheme,\n getZIndex,\n getSpace,\n getShadow,\n getRadius,\n getMode,\n getFontSize,\n getColor,\n defaultTerminalTheme,\n defaultMarkdownTheme,\n defaultEditorTheme,\n src_default as default,\n decreaseFontScale,\n createStyle,\n addMode,\n ThemeShowcase,\n ThemeProvider\n};\n","/**\n * @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 [\n \"path\",\n {\n d: \"M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z\",\n key: \"lc1i9w\"\n }\n ],\n [\"path\", { d: \"m7 16.5-4.74-2.85\", key: \"1o9zyk\" }],\n [\"path\", { d: \"m7 16.5 5-3\", key: \"va8pkn\" }],\n [\"path\", { d: \"M7 16.5v5.17\", key: \"jnp8gn\" }],\n [\n \"path\",\n {\n d: \"M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z\",\n key: \"8zsnat\"\n }\n ],\n [\"path\", { d: \"m17 16.5-5-3\", key: \"8arw3v\" }],\n [\"path\", { d: \"m17 16.5 4.74-2.85\", key: \"8rfmw\" }],\n [\"path\", { d: \"M17 16.5v5.17\", key: \"k6z78m\" }],\n [\n \"path\",\n {\n d: \"M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z\",\n key: \"1xygjf\"\n }\n ],\n [\"path\", { d: \"M12 8 7.26 5.15\", key: \"1vbdud\" }],\n [\"path\", { d: \"m12 8 4.74-2.85\", key: \"3rx089\" }],\n [\"path\", { d: \"M12 13.5V8\", key: \"1io7kd\" }]\n];\nconst Boxes = createLucideIcon(\"boxes\", __iconNode);\n\nexport { __iconNode, Boxes as default };\n//# sourceMappingURL=boxes.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: \"M10 12h4\", key: \"a56b0p\" }],\n [\"path\", { d: \"M10 8h4\", key: \"1sr2af\" }],\n [\"path\", { d: \"M14 21v-3a2 2 0 0 0-4 0v3\", key: \"1rgiei\" }],\n [\n \"path\",\n {\n d: \"M6 10H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-2\",\n key: \"secmi2\"\n }\n ],\n [\"path\", { d: \"M6 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16\", key: \"16ra0t\" }]\n];\nconst Building2 = createLucideIcon(\"building-2\", __iconNode);\n\nexport { __iconNode, Building2 as default };\n//# sourceMappingURL=building-2.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: \"M20 6 9 17l-5-5\", key: \"1gmf2c\" }]];\nconst Check = createLucideIcon(\"check\", __iconNode);\n\nexport { __iconNode, Check as default };\n//# sourceMappingURL=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 [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\", key: \"1u773s\" }],\n [\"path\", { d: \"M12 17h.01\", key: \"p32p05\" }]\n];\nconst CircleQuestionMark = createLucideIcon(\"circle-question-mark\", __iconNode);\n\nexport { __iconNode, CircleQuestionMark as default };\n//# sourceMappingURL=circle-question-mark.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 [\"rect\", { width: \"14\", height: \"14\", x: \"8\", y: \"8\", rx: \"2\", ry: \"2\", key: \"17jyea\" }],\n [\"path\", { d: \"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\", key: \"zix9uf\" }]\n];\nconst Copy = createLucideIcon(\"copy\", __iconNode);\n\nexport { __iconNode, Copy as default };\n//# sourceMappingURL=copy.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 [\"circle\", { cx: \"12\", cy: \"12\", r: \"3\", key: \"1v7zrd\" }],\n [\"path\", { d: \"M3 7V5a2 2 0 0 1 2-2h2\", key: \"aa7l1z\" }],\n [\"path\", { d: \"M17 3h2a2 2 0 0 1 2 2v2\", key: \"4qcy5o\" }],\n [\"path\", { d: \"M21 17v2a2 2 0 0 1-2 2h-2\", key: \"6vwrx8\" }],\n [\"path\", { d: \"M7 21H5a2 2 0 0 1-2-2v-2\", key: \"ioqczr\" }]\n];\nconst Focus = createLucideIcon(\"focus\", __iconNode);\n\nexport { __iconNode, Focus as default };\n//# sourceMappingURL=focus.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: \"M9 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v5\",\n key: \"1w6njk\"\n }\n ],\n [\"circle\", { cx: \"13\", cy: \"12\", r: \"2\", key: \"1j92g6\" }],\n [\"path\", { d: \"M18 19c-2.8 0-5-2.2-5-5v8\", key: \"pkpw2h\" }],\n [\"circle\", { cx: \"20\", cy: \"19\", r: \"2\", key: \"1obnsp\" }]\n];\nconst FolderGit2 = createLucideIcon(\"folder-git-2\", __iconNode);\n\nexport { __iconNode, FolderGit2 as default };\n//# sourceMappingURL=folder-git-2.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 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2\",\n key: \"usdka0\"\n }\n ]\n];\nconst FolderOpen = createLucideIcon(\"folder-open\", __iconNode);\n\nexport { __iconNode, FolderOpen as default };\n//# sourceMappingURL=folder-open.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: \"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 Folder = createLucideIcon(\"folder\", __iconNode);\n\nexport { __iconNode, Folder as default };\n//# sourceMappingURL=folder.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 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8\", key: \"5wwlr5\" }],\n [\n \"path\",\n {\n d: \"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\",\n key: \"r6nss1\"\n }\n ]\n];\nconst House = createLucideIcon(\"house\", __iconNode);\n\nexport { __iconNode, House as default };\n//# sourceMappingURL=house.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","/**\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: \"M8 6L12 2L16 6\", key: \"1yvkyx\" }],\n [\"path\", { d: \"M12 2V22\", key: \"r89rzk\" }]\n];\nconst MoveUp = createLucideIcon(\"move-up\", __iconNode);\n\nexport { __iconNode, MoveUp as default };\n//# sourceMappingURL=move-up.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: \"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z\",\n key: \"1a0edw\"\n }\n ],\n [\"path\", { d: \"M12 22V12\", key: \"d0xqtd\" }],\n [\"polyline\", { points: \"3.29 7 12 12 20.71 7\", key: \"ousv84\" }],\n [\"path\", { d: \"m7.5 4.27 9 5.15\", key: \"1c824w\" }]\n];\nconst Package = createLucideIcon(\"package\", __iconNode);\n\nexport { __iconNode, Package as default };\n//# sourceMappingURL=package.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: \"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z\",\n key: \"1a8usu\"\n }\n ],\n [\"path\", { d: \"m15 5 4 4\", key: \"1mk7zo\" }]\n];\nconst Pencil = createLucideIcon(\"pencil\", __iconNode);\n\nexport { __iconNode, Pencil as default };\n//# sourceMappingURL=pencil.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 12h14\", key: \"1ays0h\" }],\n [\"path\", { d: \"M12 5v14\", key: \"s699le\" }]\n];\nconst Plus = createLucideIcon(\"plus\", __iconNode);\n\nexport { __iconNode, Plus as default };\n//# sourceMappingURL=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: \"m16 16 3-8 3 8c-.87.65-1.92 1-3 1s-2.13-.35-3-1Z\", key: \"7g6ntu\" }],\n [\"path\", { d: \"m2 16 3-8 3 8c-.87.65-1.92 1-3 1s-2.13-.35-3-1Z\", key: \"ijws7r\" }],\n [\"path\", { d: \"M7 21h10\", key: \"1b0cd5\" }],\n [\"path\", { d: \"M12 3v18\", key: \"108xh3\" }],\n [\"path\", { d: \"M3 7h2c2 0 5-1 7-2 2 1 5 2 7 2h2\", key: \"3gwbw2\" }]\n];\nconst Scale = createLucideIcon(\"scale\", __iconNode);\n\nexport { __iconNode, Scale as default };\n//# sourceMappingURL=scale.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: \"m21 21-4.34-4.34\", key: \"14j7rj\" }],\n [\"circle\", { cx: \"11\", cy: \"11\", r: \"8\", key: \"4ej97u\" }]\n];\nconst Search = createLucideIcon(\"search\", __iconNode);\n\nexport { __iconNode, Search as default };\n//# sourceMappingURL=search.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: \"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\",\n key: \"wmoenq\"\n }\n ],\n [\"path\", { d: \"M12 9v4\", key: \"juzpu7\" }],\n [\"path\", { d: \"M12 17h.01\", key: \"p32p05\" }]\n];\nconst TriangleAlert = createLucideIcon(\"triangle-alert\", __iconNode);\n\nexport { __iconNode, TriangleAlert as default };\n//# sourceMappingURL=triangle-alert.js.map\n","/**\n * @license lucide-react v0.552.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M18 6 6 18\", key: \"1bl5f8\" }],\n [\"path\", { d: \"m6 6 12 12\", key: \"d8bk6v\" }]\n];\nconst X = createLucideIcon(\"x\", __iconNode);\n\nexport { __iconNode, X as default };\n//# sourceMappingURL=x.js.map\n","import React from 'react';\nimport { useTheme } from '@principal-ade/industry-theme';\nimport type { RepositoryAvatarProps } from './types';\n\n/**\n * RepositoryAvatar - Displays repository owner avatar\n *\n * Priority:\n * 1. customAvatarUrl prop\n * 2. GitHub avatar from owner username\n * 3. Fallback icon or initial\n */\nexport const RepositoryAvatar: React.FC<RepositoryAvatarProps> = ({\n owner,\n customAvatarUrl,\n size = 32,\n fallbackIcon,\n}) => {\n const { theme } = useTheme();\n\n // Use rounded squares for avatar\n const borderRadius = `${Math.min(8, size / 4)}px`;\n\n // Determine avatar URL\n const avatarUrl = customAvatarUrl || (owner ? `https://github.com/${owner}.png` : null);\n\n const getContent = () => {\n if (avatarUrl) {\n return (\n <img\n src={avatarUrl}\n alt={owner || 'Repository'}\n style={{\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n }}\n onError={(e) => {\n // Hide broken image and show fallback\n e.currentTarget.style.display = 'none';\n }}\n />\n );\n }\n\n if (fallbackIcon) {\n return fallbackIcon;\n }\n\n return null;\n };\n\n return (\n <div\n style={{\n width: `${size}px`,\n height: `${size}px`,\n borderRadius,\n backgroundColor: theme.colors.backgroundTertiary,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n overflow: 'hidden',\n flexShrink: 0,\n }}\n >\n {getContent()}\n </div>\n );\n};\n","import React, { useState, useMemo } from 'react';\nimport { useTheme } from '@principal-ade/industry-theme';\nimport { FolderOpen, Focus, Loader2, X, Copy, Check, Plus, MoveUp } from 'lucide-react';\nimport { RepositoryAvatar } from './RepositoryAvatar';\nimport type { LocalProjectCardProps } from './types';\nimport './LocalProjectsPanel.css';\n\n/**\n * Language color mapping for visual indicators\n */\nconst LANGUAGE_COLORS: Record<string, string> = {\n TypeScript: '#3178c6',\n JavaScript: '#f7df1e',\n Python: '#3776ab',\n Java: '#b07219',\n Go: '#00add8',\n Rust: '#dea584',\n Ruby: '#cc342d',\n PHP: '#777bb4',\n 'C++': '#00599c',\n C: '#555555',\n 'C#': '#239120',\n Swift: '#fa7343',\n Kotlin: '#7f52ff',\n Dart: '#0175c2',\n Vue: '#4fc08d',\n HTML: '#e34c26',\n CSS: '#1572b6',\n Shell: '#89e051',\n PowerShell: '#012456',\n};\n\nconst getLanguageColor = (language: string): string => {\n return LANGUAGE_COLORS[language] || '#6e7681';\n};\n\n/**\n * LocalProjectCard - Individual project card with actions\n *\n * Displays repository info and provides action buttons based on mode:\n * - default: Open and Remove buttons\n * - add-to-workspace: Add button only\n * - minimal: Open button only\n */\nexport const LocalProjectCard: React.FC<LocalProjectCardProps> = ({\n entry,\n actionMode = 'default',\n isSelected = false,\n onSelect,\n onOpen,\n onRemove,\n onAddToWorkspace,\n onRemoveFromWorkspace,\n onMoveToWorkspace,\n isLoading = false,\n windowState = 'closed',\n compact: _compact = false,\n isEditMode = false,\n isInWorkspaceDirectory,\n workspacePath,\n}) => {\n const { theme } = useTheme();\n const [copiedPath, setCopiedPath] = useState(false);\n const [isMoving, setIsMoving] = useState(false);\n const [isRemoving, setIsRemoving] = useState(false);\n\n const highlightColor = theme.colors.primary;\n\n // Get avatar URL from GitHub owner\n const avatarUrl = entry.github?.owner\n ? `https://github.com/${entry.github.owner}.png`\n : null;\n\n const handleCardClick = () => {\n onSelect?.(entry);\n };\n\n const handleOpenClick = (e: React.MouseEvent) => {\n e.stopPropagation();\n onOpen?.(entry);\n };\n\n const handleRemoveClick = (e: React.MouseEvent) => {\n e.stopPropagation();\n onRemove?.(entry);\n };\n\n const handleAddToWorkspaceClick = (e: React.MouseEvent) => {\n e.stopPropagation();\n onAddToWorkspace?.(entry);\n };\n\n const handleRemoveFromWorkspaceClick = async (e: React.MouseEvent) => {\n e.stopPropagation();\n try {\n setIsRemoving(true);\n onRemoveFromWorkspace?.(entry);\n } finally {\n setIsRemoving(false);\n }\n };\n\n const handleMoveToWorkspaceClick = async (e: React.MouseEvent) => {\n e.stopPropagation();\n try {\n setIsMoving(true);\n onMoveToWorkspace?.(entry);\n } finally {\n setIsMoving(false);\n }\n };\n\n // Compute display path - show relative path if in workspace directory\n const displayPath = useMemo(() => {\n if (actionMode === 'workspace' && isInWorkspaceDirectory && workspacePath) {\n if (entry.path.startsWith(workspacePath)) {\n const relativePath = entry.path.slice(workspacePath.length);\n return relativePath.startsWith('/') ? relativePath.slice(1) : relativePath;\n }\n }\n return entry.path;\n }, [actionMode, isInWorkspaceDirectory, workspacePath, entry.path]);\n\n const handleCopyPath = async (e: React.MouseEvent) => {\n e.stopPropagation();\n try {\n await navigator.clipboard.writeText(entry.path);\n setCopiedPath(true);\n setTimeout(() => setCopiedPath(false), 2000);\n } catch (err) {\n console.error('Failed to copy path:', err);\n }\n };\n\n const renderActionButtons = (isCompact = false) => {\n const buttonFlex = isCompact ? 1 : undefined;\n\n if (actionMode === 'add-to-workspace') {\n return (\n <button\n type=\"button\"\n onClick={handleAddToWorkspaceClick}\n disabled={isLoading}\n title=\"Add to workspace\"\n style={{\n flex: buttonFlex,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '6px 10px',\n gap: '4px',\n borderRadius: '4px',\n border: `1px solid ${theme.colors.primary || '#3b82f6'}`,\n backgroundColor: `${theme.colors.primary || '#3b82f6'}15`,\n color: theme.colors.primary || '#3b82f6',\n fontSize: `${theme.fontSizes[0]}px`,\n fontWeight: theme.fontWeights.medium,\n cursor: isLoading ? 'wait' : 'pointer',\n opacity: isLoading ? 0.6 : 1,\n transition: 'all 0.15s ease',\n }}\n >\n {isLoading ? (\n <Loader2 size={12} className=\"animate-spin\" />\n ) : (\n <Plus size={12} />\n )}\n {isLoading ? 'Adding...' : 'Add'}\n </button>\n );\n }\n\n // Workspace mode - show Move (if outside), Open, and Remove buttons\n if (actionMode === 'workspace') {\n return (\n <>\n {/* Move to workspace button - only in edit mode and if outside workspace */}\n {isEditMode && isInWorkspaceDirectory === false && onMoveToWorkspace && (\n <button\n type=\"button\"\n onClick={handleMoveToWorkspaceClick}\n disabled={isMoving}\n title=\"Move to workspace directory\"\n style={{\n flex: buttonFlex,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '6px 10px',\n gap: '4px',\n borderRadius: '4px',\n border: `1px solid ${theme.colors.primary || '#3b82f6'}`,\n backgroundColor: `${theme.colors.primary || '#3b82f6'}15`,\n color: theme.colors.primary || '#3b82f6',\n fontSize: `${theme.fontSizes[0]}px`,\n fontWeight: theme.fontWeights.medium,\n cursor: isMoving ? 'wait' : 'pointer',\n opacity: isMoving ? 0.6 : 1,\n transition: 'all 0.15s ease',\n }}\n >\n {isMoving ? <Loader2 size={12} className=\"animate-spin\" /> : <MoveUp size={12} />}\n {isMoving ? 'Moving...' : 'Move'}\n </button>\n )}\n\n {/* Open button */}\n <button\n type=\"button\"\n onClick={handleOpenClick}\n title=\"Open repository\"\n style={{\n flex: buttonFlex,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '6px 10px',\n gap: '4px',\n borderRadius: '4px',\n border: `1px solid ${theme.colors.success || '#10b981'}`,\n backgroundColor: `${theme.colors.success || '#10b981'}15`,\n color: theme.colors.success || '#10b981',\n fontSize: `${theme.fontSizes[0]}px`,\n fontWeight: theme.fontWeights.medium,\n cursor: 'pointer',\n transition: 'all 0.15s ease',\n }}\n >\n <FolderOpen size={12} />\n Open\n </button>\n\n {/* Remove from workspace button - only in edit mode */}\n {isEditMode && onRemoveFromWorkspace && (\n <button\n type=\"button\"\n onClick={handleRemoveFromWorkspaceClick}\n disabled={isRemoving}\n title=\"Remove from workspace\"\n style={{\n flex: buttonFlex,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n minWidth: isCompact ? undefined : '28px',\n height: '28px',\n padding: isCompact ? '6px 10px' : 0,\n gap: '4px',\n borderRadius: '4px',\n border: isCompact ? `1px solid ${theme.colors.error || '#ef4444'}` : 'none',\n backgroundColor: isCompact ? `${theme.colors.error || '#ef4444'}15` : 'transparent',\n color: isCompact ? theme.colors.error || '#ef4444' : theme.colors.textSecondary,\n fontSize: `${theme.fontSizes[0]}px`,\n fontWeight: theme.fontWeights.medium,\n cursor: isRemoving ? 'wait' : 'pointer',\n opacity: isRemoving ? 0.6 : 1,\n transition: 'all 0.15s ease',\n }}\n >\n {isRemoving ? <Loader2 size={14} className=\"animate-spin\" /> : <X size={14} />}\n {isCompact && (isRemoving ? 'Removing...' : 'Remove')}\n </button>\n )}\n </>\n );\n }\n\n // Default and minimal modes - show Open button\n return (\n <>\n <button\n type=\"button\"\n onClick={handleOpenClick}\n title={\n windowState === 'ready'\n ? 'Focus window'\n : windowState === 'opening'\n ? 'Window is opening...'\n : 'Open locally'\n }\n disabled={windowState === 'opening'}\n style={{\n flex: buttonFlex,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '6px 10px',\n gap: '4px',\n borderRadius: '4px',\n border: `1px solid ${theme.colors.success || '#10b981'}`,\n backgroundColor: `${theme.colors.success || '#10b981'}15`,\n color: theme.colors.success || '#10b981',\n fontSize: `${theme.fontSizes[0]}px`,\n fontWeight: theme.fontWeights.medium,\n cursor: windowState === 'opening' ? 'wait' : 'pointer',\n opacity: windowState === 'opening' ? 0.6 : 1,\n transition: 'all 0.15s ease',\n }}\n >\n {windowState === 'ready' ? (\n <Focus size={12} />\n ) : windowState === 'opening' ? (\n <Loader2 size={12} className=\"animate-spin\" />\n ) : (\n <FolderOpen size={12} />\n )}\n {windowState === 'ready'\n ? 'Focus'\n : windowState === 'opening'\n ? 'Opening...'\n : 'Open'}\n </button>\n\n {/* Remove button - only in default mode */}\n {actionMode === 'default' && onRemove && (\n <button\n type=\"button\"\n onClick={handleRemoveClick}\n disabled={isLoading}\n title=\"Remove from local projects\"\n style={{\n flex: buttonFlex,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n minWidth: isCompact ? undefined : '28px',\n height: '28px',\n padding: isCompact ? '6px 10px' : 0,\n gap: '4px',\n borderRadius: '4px',\n border: isCompact ? `1px solid ${theme.colors.error || '#ef4444'}` : 'none',\n backgroundColor: isCompact ? `${theme.colors.error || '#ef4444'}15` : 'transparent',\n color: isCompact ? theme.colors.error || '#ef4444' : theme.colors.textSecondary,\n fontSize: `${theme.fontSizes[0]}px`,\n fontWeight: theme.fontWeights.medium,\n cursor: isLoading ? 'wait' : 'pointer',\n opacity: isLoading ? 0.6 : 1,\n transition: 'all 0.15s ease',\n }}\n >\n {isLoading ? <Loader2 size={14} className=\"animate-spin\" /> : <X size={14} />}\n {isCompact && (isLoading ? 'Removing...' : 'Remove')}\n </button>\n )}\n </>\n );\n };\n\n return (\n <div\n className=\"local-project-card\"\n style={{\n padding: '8px 12px',\n borderRadius: '4px',\n backgroundColor: isSelected ? `${highlightColor}15` : 'transparent',\n border: isSelected\n ? `1px solid ${highlightColor}40`\n : '1px solid transparent',\n cursor: 'pointer',\n transition: 'background-color 0.15s',\n fontFamily: theme.fonts.body,\n }}\n onClick={handleCardClick}\n >\n {/* Top row: Avatar + Name (+ buttons in non-compact) */}\n <div className=\"local-project-card__content\">\n {/* Owner avatar */}\n <RepositoryAvatar\n customAvatarUrl={avatarUrl}\n size={32}\n fallbackIcon={\n <div\n style={{\n color: theme.colors.textSecondary,\n fontSize: `${theme.fontSizes[0]}px`,\n fontWeight: theme.fontWeights.semibold,\n }}\n >\n {entry.name[0]?.toUpperCase() || '?'}\n </div>\n }\n />\n\n {/* Name and info */}\n <div className=\"local-project-card__info\">\n {/* Name */}\n <span\n style={{\n fontSize: `${theme.fontSizes[2]}px`,\n fontWeight: theme.fontWeights.medium,\n color: theme.colors.text,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n textDecoration: 'underline',\n textDecorationColor: entry.github?.primaryLanguage\n ? getLanguageColor(entry.github.primaryLanguage)\n : theme.colors.textSecondary,\n textUnderlineOffset: '3px',\n }}\n >\n {entry.name}\n </span>\n\n {/* Path with copy - hidden in compact via CSS */}\n <div\n className=\"local-project-card__path\"\n onClick={handleCopyPath}\n style={{\n fontSize: `${theme.fontSizes[0]}px`,\n fontFamily: theme.fonts.monospace,\n color: copiedPath\n ? theme.colors.success || '#10b981'\n : theme.colors.textTertiary || theme.colors.textSecondary,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n cursor: 'pointer',\n alignItems: 'center',\n gap: '4px',\n transition: 'color 0.15s ease',\n }}\n title={copiedPath ? 'Copied!' : `Click to copy: ${entry.path}`}\n >\n {copiedPath ? <Check size={12} /> : <Copy size={12} />}\n {displayPath}\n </div>\n\n {/* Description - hidden in compact via CSS */}\n {entry.github?.description && (\n <div\n className=\"local-project-card__meta\"\n style={{\n alignItems: 'center',\n gap: '12px',\n fontSize: `${theme.fontSizes[0]}px`,\n color: theme.colors.textSecondary,\n }}\n >\n <span\n style={{\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}\n >\n {entry.github.description}\n </span>\n </div>\n )}\n </div>\n\n {/* Action buttons - inline, hidden in compact via CSS */}\n <div className=\"local-project-card__actions\">\n {renderActionButtons(false)}\n </div>\n </div>\n\n {/* Action buttons - stacked below, shown only in compact via CSS */}\n <div className=\"local-project-card__actions--stacked\">\n {renderActionButtons(true)}\n </div>\n </div>\n );\n};\n","import React, { useMemo, useState, useEffect, useCallback } from 'react';\nimport { ThemeProvider, useTheme } from '@principal-ade/industry-theme';\nimport { Search, Plus, Building2, FolderGit2 } from 'lucide-react';\nimport './LocalProjectsPanel.css';\nimport type { AlexandriaEntry } from '@principal-ai/alexandria-core-library/types';\nimport type { PanelComponentProps } from '../../types';\nimport { LocalProjectCard } from './LocalProjectCard';\nimport type {\n AlexandriaRepositoriesSlice,\n LocalProjectsPanelActions,\n RepositoryWindowState,\n} from './types';\n\n// Panel event prefix\nconst PANEL_ID = 'industry-theme.local-projects';\n\n// Helper to create panel events with required fields\nconst createPanelEvent = <T,>(type: string, payload: T) => ({\n type,\n source: PANEL_ID,\n timestamp: Date.now(),\n payload,\n});\n\n/**\n * LocalProjectsPanelContent - Internal component that uses theme\n */\nconst LocalProjectsPanelContent: React.FC<PanelComponentProps> = ({\n context,\n actions,\n events,\n}) => {\n const { theme } = useTheme();\n const [filter, setFilter] = useState('');\n const [isAdding, setIsAdding] = useState(false);\n const [selectedEntry, setSelectedEntry] = useState<AlexandriaEntry | null>(null);\n const [windowStates, setWindowStates] = useState<Map<string, RepositoryWindowState>>(new Map());\n const [sortByOrg, setSortByOrg] = useState(false);\n\n // Get extended actions (type assertion for panel-specific actions)\n const panelActions = actions as LocalProjectsPanelActions;\n\n // Get repositories from context slice\n const repoSlice = context.getSlice<AlexandriaRepositoriesSlice>('alexandriaRepositories');\n const repositories = useMemo(\n () => repoSlice?.data?.repositories || [],\n [repoSlice?.data?.repositories]\n );\n const loading = repoSlice?.loading ?? false;\n\n // Handle open repository\n const handleOpenRepository = useCallback(\n async (entry: AlexandriaEntry) => {\n if (!panelActions.openRepository) {\n console.warn('Open repository action not available');\n return;\n }\n\n // Update window state to opening\n setWindowStates((prev) => new Map(prev).set(entry.path, 'opening'));\n\n try {\n await panelActions.openRepository(entry);\n\n // Update window state to ready\n setWindowStates((prev) => new Map(prev).set(entry.path, 'ready'));\n\n // Emit event\n events.emit(createPanelEvent(`${PANEL_ID}:repository-opened`, { entry }));\n } catch (error) {\n console.error('Error opening repository:', error);\n setWindowStates((prev) => new Map(prev).set(entry.path, 'closed'));\n }\n },\n [panelActions, events]\n );\n\n // Subscribe to panel events\n useEffect(() => {\n const unsubscribers = [\n // Filter event from tools\n events.on<{ filter: string }>(`${PANEL_ID}:filter`, (event) => {\n if (event.payload?.filter !== undefined) {\n setFilter(event.payload.filter);\n }\n }),\n\n // Select repository event from tools\n events.on<{ identifier: string }>(`${PANEL_ID}:select-repository`, (event) => {\n const identifier = event.payload?.identifier;\n if (identifier) {\n const entry = repositories.find(\n (r) => r.name === identifier || r.path === identifier\n );\n if (entry) {\n setSelectedEntry(entry);\n events.emit(createPanelEvent(`${PANEL_ID}:repository-selected`, { entry }));\n }\n }\n }),\n\n // Open repository event from tools\n events.on<{ identifier: string }>(`${PANEL_ID}:open-repository`, (event) => {\n const identifier = event.payload?.identifier;\n if (identifier) {\n const entry = repositories.find(\n (r) => r.name === identifier || r.path === identifier\n );\n if (entry) {\n handleOpenRepository(entry);\n }\n }\n }),\n ];\n\n return () => unsubscribers.forEach((unsub) => unsub());\n }, [events, repositories, handleOpenRepository]);\n\n // Handle add project\n const handleAddProject = async () => {\n if (!panelActions.selectDirectory || !panelActions.registerRepository) {\n console.warn('Add project actions not available');\n return;\n }\n\n try {\n setIsAdding(true);\n const result = await panelActions.selectDirectory();\n\n if (!result) {\n return;\n }\n\n await panelActions.registerRepository(result.name, result.path);\n\n // Refresh the repositories\n await context.refresh('repository', 'alexandriaRepositories');\n } catch (error) {\n console.error('Failed to add project:', error);\n } finally {\n setIsAdding(false);\n }\n };\n\n // Handle remove repository\n const handleRemoveRepository = async (entry: AlexandriaEntry) => {\n if (!panelActions.removeRepository) {\n console.warn('Remove repository action not available');\n return;\n }\n\n try {\n await panelActions.removeRepository(entry.name, false);\n await context.refresh('repository', 'alexandriaRepositories');\n } catch (error) {\n console.error('Failed to remove repository:', error);\n }\n };\n\n // Handle select repository\n const handleSelectRepository = (entry: AlexandriaEntry) => {\n setSelectedEntry(entry);\n events.emit(createPanelEvent(`${PANEL_ID}:repository-selected`, { entry }));\n };\n\n // Filter and sort repositories\n const normalizedFilter = filter.trim().toLowerCase();\n\n const filteredAndSortedRepositories = useMemo(() => {\n // Filter repositories by search term\n const filtered = repositories.filter((entry) => {\n if (!normalizedFilter) return true;\n\n const haystack = [\n entry.name,\n entry.github?.name ?? '',\n entry.github?.owner ?? '',\n entry.remoteUrl ?? '',\n ]\n .join(' ')\n .toLowerCase();\n\n return haystack.includes(normalizedFilter);\n });\n\n // Sort alphabetically\n return filtered.sort((a, b) => {\n if (sortByOrg) {\n // Sort by org/owner first, then by repo name\n const aOrg = (a.github?.owner ?? '').toLowerCase();\n const bOrg = (b.github?.owner ?? '').toLowerCase();\n const orgCompare = aOrg.localeCompare(bOrg);\n if (orgCompare !== 0) return orgCompare;\n }\n // Sort by repo name\n return a.name.toLowerCase().localeCompare(b.name.toLowerCase());\n });\n }, [repositories, normalizedFilter, sortByOrg]);\n\n const baseContainerStyle: React.CSSProperties = {\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n backgroundColor: theme.colors.backgroundSecondary,\n };\n\n const contentContainerStyle: React.CSSProperties = {\n ...baseContainerStyle,\n padding: '16px',\n gap: '12px',\n };\n\n // Loading state\n if (loading) {\n return (\n <div style={baseContainerStyle}>\n <div\n style={{\n flex: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '32px',\n textAlign: 'center',\n }}\n >\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: '16px',\n maxWidth: '360px',\n }}\n >\n <h3\n style={{\n margin: 0,\n color: theme.colors.text,\n fontSize: `${theme.fontSizes[3]}px`,\n fontWeight: theme.fontWeights.semibold,\n fontFamily: theme.fonts.body,\n }}\n >\n Loading local projects...\n </h3>\n </div>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"local-projects-panel\" style={contentContainerStyle}>\n {/* Search bar with sort toggle and add button */}\n <div style={{ display: 'flex', gap: '8px', alignItems: 'center' }}>\n <div style={{ position: 'relative', flex: 1, minWidth: 0 }}>\n <Search\n size={16}\n style={{\n position: 'absolute',\n top: '50%',\n left: '12px',\n transform: 'translateY(-50%)',\n color: theme.colors.textSecondary,\n pointerEvents: 'none',\n zIndex: 1,\n }}\n />\n <input\n type=\"text\"\n value={filter}\n placeholder=\"Filter local projects...\"\n onChange={(event) => setFilter(event.target.value)}\n style={{\n width: '100%',\n boxSizing: 'border-box',\n padding: '8px 12px 8px 36px',\n borderRadius: '6px',\n border: `1px solid ${theme.colors.border}`,\n backgroundColor: theme.colors.background,\n color: theme.colors.text,\n fontSize: `${theme.fontSizes[1]}px`,\n fontFamily: theme.fonts.body,\n outline: 'none',\n }}\n />\n </div>\n <button\n onClick={() => setSortByOrg(!sortByOrg)}\n title={sortByOrg ? 'Sorting by organization' : 'Sorting by repo name'}\n style={{\n padding: '8px',\n borderRadius: '6px',\n border: `1px solid ${theme.colors.border}`,\n backgroundColor: sortByOrg ? `${theme.colors.primary}20` : theme.colors.background,\n color: sortByOrg ? theme.colors.primary : theme.colors.textSecondary,\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n transition: 'all 0.15s',\n flexShrink: 0,\n }}\n >\n {sortByOrg ? <Building2 size={16} /> : <FolderGit2 size={16} />}\n </button>\n {panelActions.selectDirectory && (\n <button\n onClick={handleAddProject}\n disabled={isAdding}\n title=\"Add existing project\"\n style={{\n padding: '8px',\n borderRadius: '6px',\n border: `1px solid ${theme.colors.border}`,\n backgroundColor: theme.colors.primary,\n color: theme.colors.background,\n cursor: isAdding ? 'default' : 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n opacity: isAdding ? 0.6 : 1,\n transition: 'opacity 0.2s',\n flexShrink: 0,\n }}\n >\n <Plus size={16} />\n </button>\n )}\n </div>\n\n {/* Scrollable content */}\n <div\n className=\"local-projects-list\"\n style={{\n flex: 1,\n overflowY: 'auto',\n display: 'flex',\n flexDirection: 'column',\n gap: '4px',\n }}\n >\n {/* Repository list */}\n {filteredAndSortedRepositories.map((entry) => (\n <LocalProjectCard\n key={entry.path}\n entry={entry}\n isSelected={selectedEntry?.path === entry.path}\n onSelect={handleSelectRepository}\n onOpen={handleOpenRepository}\n onRemove={handleRemoveRepository}\n windowState={windowStates.get(entry.path) || 'closed'}\n />\n ))}\n\n {/* No results message */}\n {filteredAndSortedRepositories.length === 0 && !loading && (\n <div\n style={{\n padding: '32px',\n textAlign: 'center',\n color: theme.colors.textSecondary,\n }}\n >\n <p style={{ margin: 0 }}>\n {normalizedFilter\n ? 'No local projects match your filter.'\n : 'No local projects found.'}\n </p>\n </div>\n )}\n </div>\n </div>\n );\n};\n\n/**\n * LocalProjectsPanel - Browse and manage local Alexandria repositories\n *\n * Features:\n * - List all registered local repositories\n * - Search/filter by name, owner, or path\n * - Add new projects via directory picker\n * - Open projects in dev workspace\n * - Remove projects from registry\n *\n * Data Slices:\n * - alexandriaRepositories: List of AlexandriaEntry objects\n *\n * Events Emitted:\n * - industry-theme.local-projects:repository-selected\n * - industry-theme.local-projects:repository-opened\n *\n * Events Listened:\n * - industry-theme.local-projects:filter\n * - industry-theme.local-projects:select-repository\n * - industry-theme.local-projects:open-repository\n */\nexport const LocalProjectsPanel: React.FC<PanelComponentProps> = (props) => {\n return (\n <ThemeProvider>\n <LocalProjectsPanelContent {...props} />\n </ThemeProvider>\n );\n};\n\n/**\n * LocalProjectsPanelPreview - Compact preview for panel tabs/thumbnails\n */\nexport const LocalProjectsPanelPreview: React.FC = () => {\n const { theme } = useTheme();\n\n return (\n <div\n style={{\n padding: '12px',\n fontSize: `${theme.fontSizes[0]}px`,\n fontFamily: theme.fonts.body,\n color: theme.colors.text,\n display: 'flex',\n flexDirection: 'column',\n gap: '8px',\n }}\n >\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '6px',\n fontWeight: theme.fontWeights.semibold,\n }}\n >\n <div\n style={{\n width: '16px',\n height: '16px',\n borderRadius: '2px',\n backgroundColor: `${theme.colors.success || '#10b981'}40`,\n }}\n />\n <span>Local Projects</span>\n </div>\n <div\n style={{\n fontSize: `${theme.fontSizes[0]}px`,\n fontFamily: theme.fonts.body,\n color: theme.colors.textSecondary,\n marginTop: '4px',\n }}\n >\n Browse your cloned repositories sorted by recent activity\n </div>\n </div>\n );\n};\n\n// Re-export types and components\nexport type { LocalProjectCardProps, RepositoryAvatarProps } from './types';\nexport { LocalProjectCard } from './LocalProjectCard';\nexport { RepositoryAvatar } from './RepositoryAvatar';\n","import React, { useMemo, useEffect, useCallback } from 'react';\nimport { ThemeProvider, useTheme } from '@principal-ade/industry-theme';\nimport { Folder, Home, Pencil, AlertTriangle } from 'lucide-react';\nimport type { AlexandriaEntry } from '@principal-ai/alexandria-core-library/types';\nimport type { PanelComponentProps } from '../../types';\nimport { LocalProjectCard } from '../LocalProjectsPanel/LocalProjectCard';\nimport '../LocalProjectsPanel/LocalProjectsPanel.css';\nimport type { Workspace, WorkspaceRepositoriesPanelActions } from './types';\n\n// Panel event prefix\nconst PANEL_ID = 'industry-theme.workspace-repositories';\n\n// Helper to create panel events\nconst createPanelEvent = <T,>(type: string, payload: T) => ({\n type,\n source: PANEL_ID,\n timestamp: Date.now(),\n payload,\n});\n\n/**\n * WorkspaceRepositoriesPanelContent - Internal component that uses theme\n */\nconst WorkspaceRepositoriesPanelContent: React.FC<PanelComponentProps> = ({\n context,\n actions,\n events,\n}) => {\n const { theme } = useTheme();\n const [isEditMode, setIsEditMode] = React.useState(false);\n const [repositoryLocations, setRepositoryLocations] = React.useState<Map<string, boolean>>(\n new Map()\n );\n\n // Get extended actions\n const panelActions = actions as WorkspaceRepositoriesPanelActions;\n\n // Get data from context using framework's getSlice pattern\n const workspaceSlice = context.getSlice<Workspace>('workspace');\n const repositoriesSlice = context.getSlice<AlexandriaEntry[]>('workspaceRepositories');\n\n const workspace = workspaceSlice?.data ?? null;\n const isLoading = workspaceSlice?.loading || repositoriesSlice?.loading || false;\n\n // Sort repositories alphabetically by name\n const sortedRepositories = useMemo(() => {\n const repos = repositoriesSlice?.data ?? [];\n return [...repos].sort((a, b) => a.name.localeCompare(b.name));\n }, [repositoriesSlice?.data]);\n\n // Check locations for all repositories\n useEffect(() => {\n const checkLocations = async () => {\n if (!workspace?.id || !panelActions.isRepositoryInWorkspaceDirectory || !sortedRepositories.length) {\n return;\n }\n\n const locationMap = new Map<string, boolean>();\n await Promise.all(\n sortedRepositories.map(async (repo) => {\n try {\n const isInWorkspace = await panelActions.isRepositoryInWorkspaceDirectory!(repo, workspace.id);\n if (isInWorkspace !== null) {\n locationMap.set(repo.path, isInWorkspace);\n }\n } catch (error) {\n console.error(`Failed to check location for ${repo.name}:`, error);\n }\n })\n );\n setRepositoryLocations(locationMap);\n };\n\n checkLocations();\n }, [workspace, sortedRepositories, panelActions]);\n\n // Group repositories by location\n const { repositoriesInWorkspace, repositoriesOutsideWorkspace } = useMemo(() => {\n const inWorkspace: AlexandriaEntry[] = [];\n const outsideWorkspace: AlexandriaEntry[] = [];\n\n sortedRepositories.forEach((repo) => {\n const isInWorkspace = repositoryLocations.get(repo.path);\n if (isInWorkspace === true) {\n inWorkspace.push(repo);\n } else if (isInWorkspace === false) {\n outsideWorkspace.push(repo);\n }\n });\n\n return { repositoriesInWorkspace: inWorkspace, repositoriesOutsideWorkspace: outsideWorkspace };\n }, [sortedRepositories, repositoryLocations]);\n\n // Event handlers\n const handleSelectRepository = useCallback(\n (repository: AlexandriaEntry) => {\n events.emit(\n createPanelEvent('repository:selected', {\n repositoryId: repository.github?.id || repository.name,\n repository,\n repositoryPath: repository.path,\n })\n );\n },\n [events]\n );\n\n const handleOpenRepository = useCallback(\n (repository: AlexandriaEntry) => {\n events.emit(\n createPanelEvent('repository:opened', {\n repositoryId: repository.github?.id || repository.name,\n repository,\n })\n );\n },\n [events]\n );\n\n const handleRemoveFromWorkspace = useCallback(\n async (repository: AlexandriaEntry) => {\n if (!workspace?.id || !panelActions.removeRepositoryFromWorkspace) return;\n try {\n const repositoryId = repository.github?.id || repository.name;\n await panelActions.removeRepositoryFromWorkspace(repositoryId, workspace.id);\n } catch (error) {\n console.error('Failed to remove repository from workspace:', error);\n alert(\n `Failed to remove repository: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n },\n [workspace, panelActions]\n );\n\n const handleMoveToWorkspace = useCallback(\n async (repository: AlexandriaEntry) => {\n if (!workspace?.id || !panelActions.moveRepositoryToWorkspaceDirectory) return;\n try {\n await panelActions.moveRepositoryToWorkspaceDirectory(repository, workspace.id);\n setRepositoryLocations((prev) => new Map(prev).set(repository.path, true));\n } catch (error) {\n console.error('Failed to move repository:', error);\n alert(\n `Failed to move repository: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n },\n [workspace, panelActions]\n );\n\n // Subscribe to panel events\n useEffect(() => {\n const unsubscribers = [\n events.on<{ repositoryPath: string }>(`${PANEL_ID}:select-repository`, (event) => {\n const path = event.payload?.repositoryPath;\n if (path) {\n const repository = sortedRepositories.find((r) => r.path === path);\n if (repository) {\n handleSelectRepository(repository);\n }\n }\n }),\n\n events.on<{ repositoryPath: string }>(`${PANEL_ID}:open-repository`, (event) => {\n const path = event.payload?.repositoryPath;\n if (path) {\n const repository = sortedRepositories.find((r) => r.path === path);\n if (repository) {\n handleOpenRepository(repository);\n }\n }\n }),\n ];\n\n return () => unsubscribers.forEach((unsub) => unsub());\n }, [events, sortedRepositories, handleSelectRepository, handleOpenRepository]);\n\n const baseContainerStyle: React.CSSProperties = {\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n backgroundColor: theme.colors.backgroundSecondary,\n };\n\n const contentContainerStyle: React.CSSProperties = {\n ...baseContainerStyle,\n padding: '16px',\n gap: '12px',\n };\n\n // No workspace selected\n if (!workspace) {\n return (\n <div style={baseContainerStyle}>\n <div\n style={{\n flex: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '32px',\n textAlign: 'center',\n }}\n >\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: '16px',\n maxWidth: '360px',\n }}\n >\n <Folder\n size={48}\n style={{\n color: theme.colors.textSecondary,\n opacity: 0.5,\n }}\n />\n <div>\n <h3\n style={{\n margin: '0 0 8px 0',\n color: theme.colors.text,\n fontSize: `${theme.fontSizes[3]}px`,\n fontWeight: theme.fontWeights.semibold,\n fontFamily: theme.fonts.body,\n }}\n >\n No Workspace Selected\n </h3>\n <p\n style={{\n margin: 0,\n color: theme.colors.textSecondary,\n fontSize: `${theme.fontSizes[1]}px`,\n fontFamily: theme.fonts.body,\n }}\n >\n Select a workspace to see its repositories.\n </p>\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n // Loading state\n if (isLoading) {\n return (\n <div style={baseContainerStyle}>\n <div\n style={{\n flex: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '32px',\n textAlign: 'center',\n }}\n >\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: '16px',\n maxWidth: '360px',\n }}\n >\n <h3\n style={{\n margin: 0,\n color: theme.colors.text,\n fontSize: `${theme.fontSizes[3]}px`,\n fontWeight: theme.fontWeights.semibold,\n fontFamily: theme.fonts.body,\n }}\n >\n Loading repositories...\n </h3>\n </div>\n </div>\n </div>\n );\n }\n\n const handleToggleEditMode = () => {\n setIsEditMode(!isEditMode);\n };\n\n return (\n <div style={contentContainerStyle}>\n {/* Workspace header */}\n <div>\n <div\n style={{\n display: 'flex',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n gap: '16px',\n marginBottom: '4px',\n }}\n >\n {/* Left: Workspace name with edit button */}\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n }}\n >\n <h3\n style={{\n margin: 0,\n fontSize: `${theme.fontSizes[2]}px`,\n fontWeight: theme.fontWeights.semibold,\n color: theme.colors.text,\n fontFamily: theme.fonts.body,\n }}\n >\n {workspace.name}\n </h3>\n <button\n type=\"button\"\n onClick={handleToggleEditMode}\n title={isEditMode ? 'Exit edit mode' : 'Edit workspace'}\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '24px',\n height: '24px',\n padding: 0,\n borderRadius: '4px',\n border: 'none',\n backgroundColor: isEditMode\n ? theme.colors.backgroundTertiary || theme.colors.backgroundSecondary\n : 'transparent',\n color: isEditMode ? theme.colors.primary : theme.colors.textSecondary,\n cursor: 'pointer',\n transition: 'all 0.15s ease',\n }}\n onMouseEnter={(event) => {\n if (!isEditMode) {\n event.currentTarget.style.backgroundColor =\n theme.colors.backgroundTertiary || theme.colors.backgroundSecondary;\n event.currentTarget.style.color = theme.colors.text;\n }\n }}\n onMouseLeave={(event) => {\n if (!isEditMode) {\n event.currentTarget.style.backgroundColor = 'transparent';\n event.currentTarget.style.color = theme.colors.textSecondary;\n }\n }}\n >\n <Pencil size={14} />\n </button>\n </div>\n\n {/* Right: Home directory */}\n {workspace.suggestedClonePath && (\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '6px',\n minWidth: 0,\n }}\n >\n <Home\n size={14}\n style={{\n color: theme.colors.textSecondary,\n flexShrink: 0,\n }}\n />\n <span\n style={{\n fontSize: `${theme.fontSizes[0]}px`,\n color: theme.colors.textSecondary,\n fontFamily: theme.fonts.monospace,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n }}\n title={workspace.suggestedClonePath}\n >\n {workspace.suggestedClonePath}\n </span>\n </div>\n )}\n </div>\n\n {/* Workspace description */}\n {workspace.description && (\n <p\n style={{\n margin: 0,\n fontSize: `${theme.fontSizes[1]}px`,\n color: theme.colors.textSecondary,\n fontFamily: theme.fonts.body,\n }}\n >\n {workspace.description}\n </p>\n )}\n </div>\n\n {/* Scrollable content */}\n <div\n style={{\n flex: 1,\n overflowY: 'auto',\n display: 'flex',\n flexDirection: 'column',\n gap: '12px',\n }}\n >\n {/* Empty state */}\n {sortedRepositories.length === 0 && !isLoading && (\n <div\n style={{\n padding: '32px',\n textAlign: 'center',\n color: theme.colors.textSecondary,\n }}\n >\n <p style={{ margin: 0 }}>No repositories in this workspace.</p>\n </div>\n )}\n\n {/* Repositories in workspace directory */}\n {repositoriesInWorkspace.length > 0 && (\n <div style={{ display: 'flex', flexDirection: 'column', gap: '8px' }}>\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '6px',\n paddingBottom: '4px',\n }}\n >\n <Home\n size={14}\n style={{\n color: theme.colors.success || '#10b981',\n flexShrink: 0,\n }}\n />\n <h4\n style={{\n margin: 0,\n fontSize: `${theme.fontSizes[1]}px`,\n fontWeight: theme.fontWeights.semibold,\n color: theme.colors.textSecondary,\n fontFamily: theme.fonts.body,\n textTransform: 'uppercase',\n letterSpacing: '0.5px',\n }}\n >\n In Workspace Directory\n </h4>\n <span\n style={{\n fontSize: `${theme.fontSizes[0]}px`,\n color: theme.colors.textTertiary || theme.colors.textSecondary,\n fontWeight: theme.fontWeights.medium,\n }}\n >\n {repositoriesInWorkspace.length}\n </span>\n </div>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '4px' }}>\n {repositoriesInWorkspace.map((repository) => (\n <LocalProjectCard\n key={repository.path}\n entry={repository}\n actionMode=\"workspace\"\n isEditMode={isEditMode}\n isInWorkspaceDirectory={true}\n workspacePath={workspace.suggestedClonePath}\n onSelect={handleSelectRepository}\n onOpen={handleOpenRepository}\n onRemoveFromWorkspace={handleRemoveFromWorkspace}\n onMoveToWorkspace={handleMoveToWorkspace}\n />\n ))}\n </div>\n </div>\n )}\n\n {/* Repositories outside workspace directory */}\n {repositoriesOutsideWorkspace.length > 0 && (\n <div style={{ display: 'flex', flexDirection: 'column', gap: '8px' }}>\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '6px',\n paddingBottom: '4px',\n }}\n >\n <AlertTriangle\n size={14}\n style={{\n color: theme.colors.warning || '#f59e0b',\n flexShrink: 0,\n }}\n />\n <h4\n style={{\n margin: 0,\n fontSize: `${theme.fontSizes[1]}px`,\n fontWeight: theme.fontWeights.semibold,\n color: theme.colors.textSecondary,\n fontFamily: theme.fonts.body,\n textTransform: 'uppercase',\n letterSpacing: '0.5px',\n }}\n >\n Outside Workspace Directory\n </h4>\n <span\n style={{\n fontSize: `${theme.fontSizes[0]}px`,\n color: theme.colors.textTertiary || theme.colors.textSecondary,\n fontWeight: theme.fontWeights.medium,\n }}\n >\n {repositoriesOutsideWorkspace.length}\n </span>\n </div>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '4px' }}>\n {repositoriesOutsideWorkspace.map((repository) => (\n <LocalProjectCard\n key={repository.path}\n entry={repository}\n actionMode=\"workspace\"\n isEditMode={isEditMode}\n isInWorkspaceDirectory={false}\n workspacePath={workspace.suggestedClonePath}\n onSelect={handleSelectRepository}\n onOpen={handleOpenRepository}\n onRemoveFromWorkspace={handleRemoveFromWorkspace}\n onMoveToWorkspace={handleMoveToWorkspace}\n />\n ))}\n </div>\n </div>\n )}\n </div>\n </div>\n );\n};\n\n/**\n * WorkspaceRepositoriesPanel - Workspace repository management panel\n *\n * Features:\n * - List all repositories in a workspace\n * - Group by in/outside workspace directory\n * - Move repositories to workspace directory\n * - Remove repositories from workspace\n *\n * Data Slices:\n * - workspace: Workspace object\n * - workspaceRepositories: AlexandriaEntry[]\n *\n * Events Emitted:\n * - repository:selected\n * - repository:opened\n */\nexport const WorkspaceRepositoriesPanel: React.FC<PanelComponentProps> = (props) => {\n return (\n <ThemeProvider>\n <WorkspaceRepositoriesPanelContent {...props} />\n </ThemeProvider>\n );\n};\n\n// Re-export types\nexport type {\n Workspace,\n WorkspaceRepositoriesPanelActions,\n RepositorySelectedPayload,\n RepositoryOpenedPayload,\n} from './types';\n","import React from 'react';\nimport { X, Package, Scale, HelpCircle } from 'lucide-react';\nimport { useTheme, type Theme } from '@principal-ade/industry-theme';\n\ninterface DependencyInfoModalProps {\n isOpen: boolean;\n onClose: () => void;\n}\n\nexport const DependencyInfoModal: React.FC<DependencyInfoModalProps> = ({\n isOpen,\n onClose,\n}) => {\n const { theme } = useTheme();\n\n if (!isOpen) return null;\n\n return (\n <>\n {/* Backdrop */}\n <div\n style={{\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: theme.colors.muted,\n zIndex: theme.zIndices[4],\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n onClick={onClose}\n >\n {/* Modal */}\n <div\n style={{\n backgroundColor: theme.colors.background,\n borderRadius: `${theme.radii[3]}px`,\n maxWidth: '600px',\n maxHeight: '80vh',\n width: '90%',\n overflow: 'hidden',\n display: 'flex',\n flexDirection: 'column',\n boxShadow: theme.shadows[3],\n }}\n onClick={(e) => e.stopPropagation()}\n >\n {/* Header */}\n <div\n style={{\n padding: `${theme.space[4]}px`,\n borderBottom: `1px solid ${theme.colors.border}`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n }}\n >\n <h2\n style={{\n fontSize: `${theme.fontSizes[4]}px`,\n fontWeight: theme.fontWeights.semibold,\n color: theme.colors.text,\n display: 'flex',\n alignItems: 'center',\n gap: `${theme.space[2]}px`,\n margin: 0,\n }}\n >\n <HelpCircle size={20} />\n Understanding Dependencies\n </h2>\n <button\n onClick={onClose}\n style={{\n background: 'none',\n border: 'none',\n color: theme.colors.textSecondary,\n cursor: 'pointer',\n padding: `${theme.space[1]}px`,\n }}\n >\n <X size={20} />\n </button>\n </div>\n\n {/* Content */}\n <div\n style={{\n padding: `${theme.space[4]}px`,\n overflow: 'auto',\n flex: 1,\n }}\n >\n {/* Dependency Types */}\n <Section\n icon={<Package size={18} />}\n title=\"Dependency Types\"\n theme={theme}\n >\n <InfoItem\n badge={{ text: 'prod', color: theme.colors.primary }}\n title=\"Production Dependencies\"\n description=\"Required for your application to run in production. These are bundled with your app and affect its size and security.\"\n theme={theme}\n />\n <InfoItem\n badge={{ text: 'dev', color: theme.colors.secondary }}\n title=\"Development Dependencies\"\n description=\"Only needed during development (build tools, testing, linters). Not included in production builds.\"\n theme={theme}\n />\n <InfoItem\n badge={{ text: 'peer', color: theme.colors.accent }}\n title=\"Peer Dependencies\"\n description=\"Expected to be provided by the consumer of your package. Important for library authors to specify compatibility.\"\n theme={theme}\n />\n </Section>\n\n {/* Licenses */}\n <Section\n icon={<Scale size={18} />}\n title=\"Common Licenses\"\n theme={theme}\n >\n <InfoItem\n badge={{ text: 'MIT', color: theme.colors.success }}\n title=\"Permissive Licenses (MIT, Apache, BSD)\"\n description=\"Few restrictions. Can use in commercial projects. Must include copyright notice.\"\n theme={theme}\n />\n <InfoItem\n badge={{ text: 'GPL', color: theme.colors.warning }}\n title=\"Copyleft Licenses (GPL, LGPL, AGPL)\"\n description=\"Requires sharing source code of derivative works. Can impact your project's licensing.\"\n theme={theme}\n />\n </Section>\n </div>\n </div>\n </div>\n </>\n );\n};\n\n// Helper Components\nconst Section: React.FC<{\n icon: React.ReactNode;\n title: string;\n theme: Theme;\n children: React.ReactNode;\n}> = ({ icon, title, theme, children }) => (\n <div style={{ marginBottom: `${theme.space[5]}px` }}>\n <h3\n style={{\n fontSize: `${theme.fontSizes[2]}px`,\n fontWeight: theme.fontWeights.semibold,\n color: theme.colors.text,\n marginBottom: `${theme.space[3]}px`,\n display: 'flex',\n alignItems: 'center',\n gap: `${theme.space[2]}px`,\n }}\n >\n {icon}\n {title}\n </h3>\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n gap: `${theme.space[2]}px`,\n }}\n >\n {children}\n </div>\n </div>\n);\n\nconst InfoItem: React.FC<{\n badge: { text: string; color: string };\n title: string;\n description: string;\n theme: Theme;\n}> = ({ badge, title, description, theme }) => (\n <div\n style={{\n padding: `${theme.space[3]}px`,\n backgroundColor: theme.colors.backgroundSecondary,\n borderRadius: `${theme.radii[2]}px`,\n border: `1px solid ${theme.colors.border}`,\n }}\n >\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: `${theme.space[2]}px`,\n marginBottom: `${theme.space[1]}px`,\n }}\n >\n <span\n style={{\n padding: `${theme.space[1]}px ${theme.space[2]}px`,\n borderRadius: `${theme.radii[1]}px`,\n fontSize: `${theme.fontSizes[0]}px`,\n fontWeight: theme.fontWeights.medium,\n backgroundColor: `${badge.color}20`,\n color: badge.color,\n }}\n >\n {badge.text}\n </span>\n <span\n style={{\n fontSize: `${theme.fontSizes[1]}px`,\n fontWeight: theme.fontWeights.medium,\n color: theme.colors.text,\n }}\n >\n {title}\n </span>\n </div>\n <div\n style={{\n fontSize: `${theme.fontSizes[1]}px`,\n color: theme.colors.textSecondary,\n lineHeight: theme.lineHeights.relaxed,\n }}\n >\n {description}\n </div>\n </div>\n);\n","import React from 'react';\nimport { ExternalLink } from 'lucide-react';\nimport { useTheme } from '@principal-ade/industry-theme';\nimport type { DependencyItem } from '../types';\n\ninterface DependencyRowProps {\n dependency: DependencyItem;\n}\n\nexport const DependencyRow: React.FC<DependencyRowProps> = ({ dependency }) => {\n const { theme } = useTheme();\n\n const getDependencyTypeBadgeStyle = (type: string) => {\n const baseStyle = {\n padding: `${theme.space[1]}px ${theme.space[2]}px`,\n borderRadius: `${theme.radii[1]}px`,\n fontSize: `${theme.fontSizes[0]}px`,\n fontWeight: theme.fontWeights.medium,\n minWidth: '36px',\n textAlign: 'center' as const,\n };\n\n switch (type) {\n case 'production':\n return {\n ...baseStyle,\n backgroundColor: `${theme.colors.primary}20`,\n color: theme.colors.primary,\n };\n case 'development':\n return {\n ...baseStyle,\n backgroundColor: `${theme.colors.secondary}20`,\n color: theme.colors.secondary,\n };\n case 'peer':\n return {\n ...baseStyle,\n backgroundColor: `${theme.colors.accent}20`,\n color: theme.colors.accent,\n };\n default:\n return {\n ...baseStyle,\n backgroundColor: theme.colors.backgroundLight,\n color: theme.colors.textSecondary,\n };\n }\n };\n\n return (\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: `${theme.space[2]}px ${theme.space[3]}px`,\n backgroundColor: theme.colors.background,\n borderRadius: `${theme.radii[1]}px`,\n fontSize: `${theme.fontSizes[1]}px`,\n border: `1px solid ${theme.colors.border}`,\n transition: 'all 0.2s',\n }}\n >\n {/* Type badge and package name */}\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: `${theme.space[2]}px`,\n flex: 1,\n minWidth: 0,\n }}\n >\n <span style={getDependencyTypeBadgeStyle(dependency.dependencyType)}>\n {dependency.dependencyType === 'production'\n ? 'prod'\n : dependency.dependencyType === 'development'\n ? 'dev'\n : 'peer'}\n </span>\n <span\n style={{\n fontWeight: theme.fontWeights.medium,\n color: theme.colors.text,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}\n >\n {dependency.name}\n </span>\n </div>\n\n {/* Version and npm link */}\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n }}\n >\n <span style={{ color: theme.colors.textSecondary }}>\n {dependency.version}\n </span>\n\n {/* NPM link */}\n <a\n href={`https://www.npmjs.com/package/${dependency.name}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n style={{\n padding: `${theme.space[1]}px`,\n borderRadius: `${theme.radii[1]}px`,\n display: 'flex',\n alignItems: 'center',\n transition: 'background-color 0.2s',\n }}\n title=\"View on npm\"\n >\n <ExternalLink size={12} color={theme.colors.textSecondary} />\n </a>\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport { Search, X } from 'lucide-react';\nimport { useTheme } from '@principal-ade/industry-theme';\n\ntype ToggleableFilterType = 'production' | 'development' | 'peer';\n\ninterface FilterBarProps {\n activeFilters: Set<ToggleableFilterType>;\n onToggleFilter: (type: ToggleableFilterType) => void;\n searchQuery: string;\n onSearchChange: (query: string) => void;\n counts: {\n all: number;\n production: number;\n development: number;\n peer: number;\n };\n}\n\nexport const FilterBar: React.FC<FilterBarProps> = ({\n activeFilters,\n onToggleFilter,\n searchQuery,\n onSearchChange,\n counts,\n}) => {\n const { theme } = useTheme();\n\n // Only show filter buttons for types that have dependencies\n const availableFilters: ToggleableFilterType[] = [\n ...(counts.peer > 0 ? (['peer'] as const) : []),\n ...(counts.production > 0 ? (['production'] as const) : []),\n ...(counts.development > 0 ? (['development'] as const) : []),\n ];\n\n // Don't show filters if there's only one type\n const showFilters = availableFilters.length > 1;\n\n return (\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n gap: `${theme.space[2]}px`,\n }}\n >\n {/* Search Bar */}\n <div\n style={{\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n }}\n >\n <Search\n size={14}\n style={{\n position: 'absolute',\n left: `${theme.space[3]}px`,\n color: theme.colors.textSecondary,\n pointerEvents: 'none',\n }}\n />\n <input\n type=\"text\"\n placeholder=\"Search dependencies...\"\n value={searchQuery}\n onChange={(e) => onSearchChange(e.target.value)}\n style={{\n width: '100%',\n padding: `${theme.space[2]}px ${theme.space[5]}px`,\n borderRadius: `${theme.radii[2]}px`,\n border: `1px solid ${theme.colors.border}`,\n backgroundColor: theme.colors.backgroundSecondary,\n color: theme.colors.text,\n fontSize: `${theme.fontSizes[1]}px`,\n fontFamily: theme.fonts.body,\n outline: 'none',\n transition: 'all 0.2s',\n }}\n />\n {searchQuery && (\n <button\n onClick={() => onSearchChange('')}\n style={{\n position: 'absolute',\n right: `${theme.space[2]}px`,\n padding: `${theme.space[1]}px`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: 'transparent',\n border: 'none',\n cursor: 'pointer',\n borderRadius: `${theme.radii[1]}px`,\n }}\n title=\"Clear search\"\n >\n <X size={14} color={theme.colors.textSecondary} />\n </button>\n )}\n </div>\n\n {/* Type Filter Toggles */}\n {showFilters && (\n <div style={{ display: 'flex', gap: `${theme.space[1]}px`, width: '100%' }}>\n {availableFilters.map((type) => {\n const isActive = activeFilters.has(type);\n return (\n <button\n key={type}\n onClick={() => onToggleFilter(type)}\n style={{\n flex: 1,\n padding: `${theme.space[1]}px ${theme.space[2]}px`,\n fontSize: `${theme.fontSizes[0]}px`,\n fontWeight: theme.fontWeights.medium,\n fontFamily: theme.fonts.body,\n borderRadius: `${theme.radii[1]}px`,\n border: `1px solid ${isActive ? theme.colors.primary : theme.colors.border}`,\n backgroundColor: isActive\n ? `${theme.colors.primary}20`\n : theme.colors.backgroundSecondary,\n color: isActive ? theme.colors.primary : theme.colors.text,\n cursor: 'pointer',\n transition: 'all 0.2s',\n }}\n >\n {type === 'production'\n ? 'Prod'\n : type === 'development'\n ? 'Dev'\n : 'Peer'}\n <span\n style={{ marginLeft: `${theme.space[1]}px`, opacity: 0.7 }}\n >\n ({counts[type]})\n </span>\n </button>\n );\n })}\n </div>\n )}\n </div>\n );\n};\n","import React, { useState, useMemo } from 'react';\nimport { Package, HelpCircle, Boxes } from 'lucide-react';\nimport { ThemeProvider, useTheme } from '@principal-ade/industry-theme';\nimport type { PanelComponentProps } from '../../types';\nimport type {\n PackageLayer,\n DependencyItem,\n PackagesSliceData,\n} from './types';\nimport { DependencyInfoModal, DependencyRow, FilterBar } from './components';\n\n/**\n * Sort order for dependency types: peer, production, development\n */\nconst dependencyTypeOrder: Record<DependencyItem['dependencyType'], number> = {\n peer: 0,\n production: 1,\n development: 2,\n};\n\n/**\n * Extract dependencies from a PackageLayer into DependencyItems\n */\nfunction extractDependencies(packageLayer: PackageLayer): DependencyItem[] {\n const { dependencies, devDependencies, peerDependencies } =\n packageLayer.packageData;\n\n const items: DependencyItem[] = [];\n\n if (dependencies) {\n Object.entries(dependencies).forEach(([name, version]) => {\n items.push({ name, version, dependencyType: 'production' });\n });\n }\n\n if (devDependencies) {\n Object.entries(devDependencies).forEach(([name, version]) => {\n items.push({ name, version, dependencyType: 'development' });\n });\n }\n\n if (peerDependencies) {\n Object.entries(peerDependencies).forEach(([name, version]) => {\n items.push({ name, version, dependencyType: 'peer' });\n });\n }\n\n // Sort by type (peer, prod, dev) then by name\n return items.sort((a, b) => {\n const typeCompare = dependencyTypeOrder[a.dependencyType] - dependencyTypeOrder[b.dependencyType];\n if (typeCompare !== 0) return typeCompare;\n return a.name.localeCompare(b.name);\n });\n}\n\n/**\n * DependenciesPanelContent - Internal component that uses theme\n */\nconst DependenciesPanelContent: React.FC<PanelComponentProps> = ({\n context,\n}) => {\n const { theme } = useTheme();\n\n // State\n const [selectedPackagePath, setSelectedPackagePath] = useState<string | null>(\n null\n );\n const [activeFilters, setActiveFilters] = useState<Set<'production' | 'development' | 'peer'>>(new Set());\n const [searchQuery, setSearchQuery] = useState('');\n const [showInfoModal, setShowInfoModal] = useState(false);\n\n // Get packages slice data\n const packagesSlice = context.getSlice<PackagesSliceData>('packages');\n const isLoading = context.isSliceLoading('packages');\n const hasPackages = context.hasSlice('packages');\n\n const packages = useMemo(() => {\n return packagesSlice?.data?.packages ?? [];\n }, [packagesSlice?.data?.packages]);\n\n // Auto-select: single package, or root package in monorepo\n const effectiveSelectedPath = useMemo(() => {\n if (selectedPackagePath !== null) return selectedPackagePath;\n if (packages.length === 1) return packages[0].packageData.path;\n // For monorepos, auto-select root package (path: '')\n const rootPackage = packages.find((p) => p.packageData.path === '');\n if (rootPackage) return '';\n return null;\n }, [selectedPackagePath, packages]);\n\n // Get selected package\n const selectedPackage = useMemo(() => {\n if (effectiveSelectedPath === null) return null;\n return packages.find((p) => p.packageData.path === effectiveSelectedPath);\n }, [effectiveSelectedPath, packages]);\n\n // Extract dependencies from selected package\n const dependencyItems = useMemo(() => {\n if (!selectedPackage) return [];\n return extractDependencies(selectedPackage);\n }, [selectedPackage]);\n\n // Calculate counts\n const counts = useMemo(() => {\n return {\n all: dependencyItems.length,\n production: dependencyItems.filter((d) => d.dependencyType === 'production')\n .length,\n development: dependencyItems.filter(\n (d) => d.dependencyType === 'development'\n ).length,\n peer: dependencyItems.filter((d) => d.dependencyType === 'peer').length,\n };\n }, [dependencyItems]);\n\n // Handle filter toggle\n const handleToggleFilter = (type: 'production' | 'development' | 'peer') => {\n setActiveFilters((prev) => {\n const next = new Set(prev);\n if (next.has(type)) {\n next.delete(type);\n } else {\n next.add(type);\n }\n return next;\n });\n };\n\n // Filter dependencies\n const filteredDependencies = useMemo(() => {\n let filtered = [...dependencyItems];\n\n // Apply search\n if (searchQuery.trim()) {\n const query = searchQuery.toLowerCase();\n filtered = filtered.filter((dep) =>\n dep.name.toLowerCase().includes(query)\n );\n }\n\n // Apply type filter: empty set or all types selected = show all\n const allTypes: Array<'production' | 'development' | 'peer'> = ['production', 'development', 'peer'];\n const availableTypes = allTypes.filter((t) => counts[t] > 0);\n const isAllSelected = activeFilters.size === 0 || availableTypes.every((t) => activeFilters.has(t));\n\n if (!isAllSelected && activeFilters.size > 0) {\n filtered = filtered.filter((dep) => activeFilters.has(dep.dependencyType));\n }\n\n return filtered;\n }, [dependencyItems, searchQuery, activeFilters, counts]);\n\n // Loading state\n if (isLoading) {\n return (\n <div\n style={{\n padding: `${theme.space[3]}px`,\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: theme.colors.textSecondary,\n backgroundColor: theme.colors.background,\n fontFamily: theme.fonts.body,\n }}\n >\n Loading packages...\n </div>\n );\n }\n\n // No packages available\n if (!hasPackages || packages.length === 0) {\n return (\n <div\n style={{\n padding: `${theme.space[3]}px`,\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n gap: `${theme.space[2]}px`,\n color: theme.colors.textSecondary,\n backgroundColor: theme.colors.background,\n fontFamily: theme.fonts.body,\n }}\n >\n <Package size={32} />\n <p style={{ margin: 0 }}>No package data available</p>\n </div>\n );\n }\n\n return (\n <div\n style={{\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: theme.colors.background,\n color: theme.colors.text,\n fontFamily: theme.fonts.body,\n overflow: 'hidden',\n }}\n >\n {/* Fixed Header Section */}\n <div\n style={{\n flexShrink: 0,\n padding: `${theme.space[3]}px`,\n paddingBottom: `${theme.space[2]}px`,\n display: 'flex',\n flexDirection: 'column',\n gap: `${theme.space[2]}px`,\n borderBottom: `1px solid ${theme.colors.border}`,\n }}\n >\n {/* Title Row */}\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n }}\n >\n <h3\n style={{\n fontSize: `${theme.fontSizes[2]}px`,\n fontWeight: theme.fontWeights.semibold,\n color: theme.colors.text,\n display: 'flex',\n alignItems: 'center',\n gap: `${theme.space[2]}px`,\n margin: 0,\n }}\n >\n {packages.length > 1 ? (\n <>\n <Boxes size={16} />\n Monorepo Dependencies\n <span\n style={{\n fontSize: `${theme.fontSizes[0]}px`,\n fontWeight: theme.fontWeights.body,\n color: theme.colors.textSecondary,\n }}\n >\n ({packages.length})\n </span>\n </>\n ) : (\n <>\n <Package size={16} />\n Dependencies\n </>\n )}\n </h3>\n <button\n onClick={() => setShowInfoModal(true)}\n style={{\n padding: `${theme.space[1]}px ${theme.space[2]}px`,\n fontSize: `${theme.fontSizes[0]}px`,\n fontWeight: theme.fontWeights.medium,\n fontFamily: theme.fonts.body,\n borderRadius: `${theme.radii[1]}px`,\n border: `1px solid ${theme.colors.border}`,\n backgroundColor: theme.colors.backgroundSecondary,\n color: theme.colors.primary,\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n gap: `${theme.space[1]}px`,\n transition: 'all 0.2s',\n }}\n >\n <HelpCircle size={12} />\n Learn More\n </button>\n </div>\n\n {/* Package Selection (only if multiple packages) */}\n {packages.length > 1 && (\n <select\n value={effectiveSelectedPath ?? '__none__'}\n onChange={(e) => setSelectedPackagePath(e.target.value === '__none__' ? null : e.target.value)}\n style={{\n width: '100%',\n padding: `${theme.space[2]}px`,\n borderRadius: `${theme.radii[1]}px`,\n border: `1px solid ${theme.colors.border}`,\n backgroundColor: theme.colors.backgroundSecondary,\n color: theme.colors.text,\n fontSize: `${theme.fontSizes[1]}px`,\n fontFamily: theme.fonts.body,\n cursor: 'pointer',\n }}\n >\n {packages.map((pkg) => (\n <option key={pkg.packageData.path || '__root__'} value={pkg.packageData.path}>\n {pkg.packageData.name} ({pkg.packageData.path || 'root'})\n </option>\n ))}\n </select>\n )}\n\n {/* Package Info (single package) */}\n {packages.length === 1 && selectedPackage && (\n <div\n style={{\n fontSize: `${theme.fontSizes[0]}px`,\n color: theme.colors.textSecondary,\n }}\n >\n {selectedPackage.packageData.name} • {dependencyItems.length} dependencies\n </div>\n )}\n\n {/* Filter Bar */}\n {selectedPackage && dependencyItems.length > 0 && (\n <FilterBar\n activeFilters={activeFilters}\n onToggleFilter={handleToggleFilter}\n searchQuery={searchQuery}\n onSearchChange={setSearchQuery}\n counts={counts}\n />\n )}\n </div>\n\n {/* Scrollable Dependencies List */}\n {selectedPackage && dependencyItems.length > 0 && (\n <div\n style={{\n flex: 1,\n overflow: 'auto',\n padding: `${theme.space[2]}px ${theme.space[3]}px ${theme.space[3]}px`,\n }}\n >\n {/* Results Count */}\n <div\n style={{\n fontSize: `${theme.fontSizes[0]}px`,\n color: theme.colors.textSecondary,\n marginBottom: `${theme.space[2]}px`,\n }}\n >\n Showing {filteredDependencies.length} of {dependencyItems.length} dependencies\n </div>\n\n {/* Dependency Items */}\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n gap: `${theme.space[1]}px`,\n }}\n >\n {filteredDependencies.length === 0 ? (\n <div\n style={{\n padding: `${theme.space[3]}px`,\n textAlign: 'center',\n color: theme.colors.textSecondary,\n fontSize: `${theme.fontSizes[1]}px`,\n }}\n >\n No dependencies match your filters\n </div>\n ) : (\n filteredDependencies.map((dep) => (\n <DependencyRow\n key={`${dep.name}-${dep.dependencyType}`}\n dependency={dep}\n />\n ))\n )}\n </div>\n </div>\n )}\n\n {/* No package selected */}\n {!selectedPackage && packages.length > 1 && (\n <div\n style={{\n flex: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: theme.colors.textSecondary,\n fontSize: `${theme.fontSizes[1]}px`,\n }}\n >\n Select a package to view its dependencies\n </div>\n )}\n\n {/* Info Modal */}\n <DependencyInfoModal\n isOpen={showInfoModal}\n onClose={() => setShowInfoModal(false)}\n />\n </div>\n );\n};\n\n/**\n * DependenciesPanel - Main panel component with ThemeProvider wrapper\n */\nexport const DependenciesPanel: React.FC<PanelComponentProps> = (props) => {\n return (\n <ThemeProvider>\n <DependenciesPanelContent {...props} />\n </ThemeProvider>\n );\n};\n","/**\n * UTCP Tools for LocalProjectsPanel\n *\n * These tools allow AI agents to interact with the Local Projects panel\n * through the Universal Tool Communication Protocol.\n */\n\nimport type { PanelTool, PanelToolsMetadata } from '../../types';\n\nconst PANEL_ID = 'industry-theme.local-projects';\n\n/**\n * Filter projects tool\n * Allows filtering the project list by search term\n */\nexport const filterProjectsTool: PanelTool = {\n name: 'filter_projects',\n description: 'Filter the local projects list by name, owner, or path',\n inputs: {\n type: 'object',\n properties: {\n filter: {\n type: 'string',\n description: 'Search term to filter projects (matches name, owner, or path)',\n },\n },\n required: ['filter'],\n },\n outputs: {\n type: 'object',\n properties: {\n success: { type: 'boolean' },\n message: { type: 'string' },\n },\n },\n tags: ['filter', 'search', 'projects'],\n tool_call_template: {\n call_template_type: 'panel_event',\n event_type: `${PANEL_ID}:filter`,\n },\n};\n\n/**\n * Select project tool\n * Allows selecting a specific project in the list\n */\nexport const selectProjectTool: PanelTool = {\n name: 'select_project',\n description: 'Select a project by name or path to view its details',\n inputs: {\n type: 'object',\n properties: {\n identifier: {\n type: 'string',\n description: 'Project name or full path to select',\n },\n },\n required: ['identifier'],\n },\n outputs: {\n type: 'object',\n properties: {\n success: { type: 'boolean' },\n selectedProject: { type: 'string' },\n },\n },\n tags: ['select', 'project', 'navigation'],\n tool_call_template: {\n call_template_type: 'panel_event',\n event_type: `${PANEL_ID}:select-repository`,\n },\n};\n\n/**\n * Open project tool\n * Allows opening a project in the dev workspace\n */\nexport const openProjectTool: PanelTool = {\n name: 'open_project',\n description: 'Open a local project in the development workspace',\n inputs: {\n type: 'object',\n properties: {\n identifier: {\n type: 'string',\n description: 'Project name or full path to open',\n },\n },\n required: ['identifier'],\n },\n outputs: {\n type: 'object',\n properties: {\n success: { type: 'boolean' },\n message: { type: 'string' },\n },\n },\n tags: ['open', 'project', 'workspace'],\n tool_call_template: {\n call_template_type: 'panel_event',\n event_type: `${PANEL_ID}:open-repository`,\n },\n};\n\n/**\n * All tools for the LocalProjectsPanel\n */\nexport const localProjectsPanelTools: PanelTool[] = [\n filterProjectsTool,\n selectProjectTool,\n openProjectTool,\n];\n\n/**\n * Tools metadata for registration\n */\nexport const localProjectsPanelToolsMetadata: PanelToolsMetadata = {\n id: PANEL_ID,\n name: 'Local Projects Panel',\n description: 'Tools for browsing and managing local Alexandria repositories',\n tools: localProjectsPanelTools,\n};\n","/**\n * Workspace Repositories Panel Tools\n *\n * UTCP-compatible tools for the Workspace Repositories panel.\n */\n\nimport type { PanelTool, PanelToolsMetadata } from '@principal-ade/panel-framework-core';\n\nconst PANEL_ID = 'industry-theme.workspace-repositories';\n\n/**\n * Tool: Select Repository\n */\nexport const selectRepositoryTool: PanelTool = {\n name: 'select_workspace_repository',\n description: 'Selects a repository in the workspace panel',\n inputs: {\n type: 'object',\n properties: {\n repositoryPath: {\n type: 'string',\n description: 'Path to the repository to select',\n },\n },\n required: ['repositoryPath'],\n },\n outputs: {\n type: 'object',\n properties: {\n success: { type: 'boolean' },\n message: { type: 'string' },\n },\n },\n tags: ['workspace', 'repository', 'select'],\n tool_call_template: {\n call_template_type: 'panel_event',\n event_type: `${PANEL_ID}:select-repository`,\n },\n};\n\n/**\n * Tool: Refresh Workspace\n */\nexport const refreshWorkspaceTool: PanelTool = {\n name: 'refresh_workspace',\n description: 'Refreshes the workspace repositories list',\n inputs: {\n type: 'object',\n properties: {\n force: {\n type: 'boolean',\n description: 'Force refresh even if data is fresh',\n },\n },\n },\n outputs: {\n type: 'object',\n properties: {\n success: { type: 'boolean' },\n repositoryCount: { type: 'number' },\n },\n },\n tags: ['workspace', 'refresh'],\n tool_call_template: {\n call_template_type: 'panel_event',\n event_type: `${PANEL_ID}:refresh-workspace`,\n },\n};\n\n/**\n * Tool: Open Repository\n */\nexport const openRepositoryTool: PanelTool = {\n name: 'open_workspace_repository',\n description: 'Opens a repository from the workspace',\n inputs: {\n type: 'object',\n properties: {\n repositoryPath: {\n type: 'string',\n description: 'Path to the repository to open',\n },\n },\n required: ['repositoryPath'],\n },\n outputs: {\n type: 'object',\n properties: {\n success: { type: 'boolean' },\n message: { type: 'string' },\n },\n },\n tags: ['workspace', 'repository', 'open'],\n tool_call_template: {\n call_template_type: 'panel_event',\n event_type: `${PANEL_ID}:open-repository`,\n },\n};\n\n/**\n * All tools exported as an array.\n */\nexport const workspaceRepositoriesPanelTools: PanelTool[] = [\n selectRepositoryTool,\n refreshWorkspaceTool,\n openRepositoryTool,\n];\n\n/**\n * Panel tools metadata for registration.\n */\nexport const workspaceRepositoriesPanelToolsMetadata: PanelToolsMetadata = {\n id: PANEL_ID,\n name: 'Workspace Repositories Panel',\n description: 'Tools provided by the workspace repositories panel',\n tools: workspaceRepositoriesPanelTools,\n};\n","/**\n * Dependencies Panel Tools\n *\n * UTCP-compatible tools for the Dependencies 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 { PanelTool, PanelToolsMetadata } from '@principal-ade/utcp-panel-event';\n\nconst PANEL_ID = 'principal-ade.dependencies-panel';\n\n/**\n * Tool: Filter Dependencies\n * Allows filtering the dependency list by search term\n */\nexport const filterDependenciesTool: PanelTool = {\n name: 'filter_dependencies',\n description: 'Filter the dependencies list by package name',\n inputs: {\n type: 'object',\n properties: {\n filter: {\n type: 'string',\n description: 'Search term to filter dependencies by name',\n },\n },\n required: ['filter'],\n },\n outputs: {\n type: 'object',\n properties: {\n success: { type: 'boolean' },\n message: { type: 'string' },\n },\n },\n tags: ['filter', 'search', 'dependencies'],\n tool_call_template: {\n call_template_type: 'panel_event',\n event_type: `${PANEL_ID}:filter`,\n },\n};\n\n/**\n * Tool: Select Dependency Type\n * Allows selecting a specific dependency type to filter\n */\nexport const selectDependencyTypeTool: PanelTool = {\n name: 'select_dependency_type',\n description: 'Filter dependencies by type (production, development, or peer)',\n inputs: {\n type: 'object',\n properties: {\n type: {\n type: 'string',\n enum: ['production', 'development', 'peer', 'all'],\n description: 'The dependency type to filter by',\n },\n },\n required: ['type'],\n },\n outputs: {\n type: 'object',\n properties: {\n success: { type: 'boolean' },\n selectedType: { type: 'string' },\n },\n },\n tags: ['filter', 'type', 'dependencies'],\n tool_call_template: {\n call_template_type: 'panel_event',\n event_type: `${PANEL_ID}:select-type`,\n },\n};\n\n/**\n * Tool: Select Package (for monorepos)\n * Allows selecting a specific package in a monorepo\n */\nexport const selectPackageTool: PanelTool = {\n name: 'select_package',\n description: 'Select a package to view its dependencies (for monorepos)',\n inputs: {\n type: 'object',\n properties: {\n packagePath: {\n type: 'string',\n description: 'The path of the package to select',\n },\n },\n required: ['packagePath'],\n },\n outputs: {\n type: 'object',\n properties: {\n success: { type: 'boolean' },\n selectedPackage: { type: 'string' },\n },\n },\n tags: ['select', 'package', 'monorepo'],\n tool_call_template: {\n call_template_type: 'panel_event',\n event_type: `${PANEL_ID}:select-package`,\n },\n};\n\n/**\n * All tools exported as an array.\n */\nexport const dependenciesPanelTools: PanelTool[] = [\n filterDependenciesTool,\n selectDependencyTypeTool,\n selectPackageTool,\n];\n\n/**\n * Panel tools metadata for registration with PanelToolRegistry.\n */\nexport const dependenciesPanelToolsMetadata: PanelToolsMetadata = {\n id: PANEL_ID,\n name: 'Dependencies Panel',\n description: 'Tools for viewing and exploring package dependencies',\n tools: dependenciesPanelTools,\n};\n","import { LocalProjectsPanel } from './panels/LocalProjectsPanel';\nimport { WorkspaceRepositoriesPanel } from './panels/WorkspaceRepositoriesPanel';\nimport { DependenciesPanel } from './panels/DependenciesPanel';\nimport type { PanelDefinition, PanelContextValue } from './types';\nimport { localProjectsPanelTools } from './panels/LocalProjectsPanel/tools';\nimport { workspaceRepositoriesPanelTools } from './panels/WorkspaceRepositoriesPanel/tools';\nimport { dependenciesPanelTools } from './panels/DependenciesPanel/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: 'industry-theme.local-projects',\n name: 'Local Projects',\n icon: 'Folder',\n version: '0.1.0',\n author: 'Industry Theme',\n description: 'Browse and manage local Alexandria repositories',\n slices: ['alexandriaRepositories'],\n tools: localProjectsPanelTools,\n },\n component: LocalProjectsPanel,\n\n onMount: async (context: PanelContextValue) => {\n // eslint-disable-next-line no-console\n console.log('Local Projects Panel mounted');\n\n // Refresh Alexandria repositories if available\n if (\n context.hasSlice('alexandriaRepositories') &&\n !context.isSliceLoading('alexandriaRepositories')\n ) {\n await context.refresh('repository', 'alexandriaRepositories');\n }\n },\n\n onUnmount: async (_context: PanelContextValue) => {\n // eslint-disable-next-line no-console\n console.log('Local Projects Panel unmounting');\n },\n },\n {\n metadata: {\n id: 'industry-theme.workspace-repositories',\n name: 'Workspace Repositories',\n icon: 'FolderGit2',\n version: '0.1.0',\n author: 'Industry Theme',\n description: 'Workspace and repository management panel',\n slices: ['workspace', 'workspaceRepositories'],\n tools: workspaceRepositoriesPanelTools,\n },\n component: WorkspaceRepositoriesPanel,\n\n onMount: async (context: PanelContextValue) => {\n // eslint-disable-next-line no-console\n console.log('Workspace Repositories Panel mounted');\n // eslint-disable-next-line no-console\n console.log('Current scope:', context.currentScope.type);\n },\n\n onUnmount: async (_context: PanelContextValue) => {\n // eslint-disable-next-line no-console\n console.log('Workspace Repositories Panel unmounting');\n },\n },\n {\n metadata: {\n id: 'principal-ade.dependencies-panel',\n name: 'Dependencies',\n icon: 'Package',\n version: '0.1.0',\n author: 'Principal ADE',\n description: 'View and explore package dependencies',\n slices: ['packages'],\n tools: dependenciesPanelTools,\n },\n component: DependenciesPanel,\n\n onMount: async (_context: PanelContextValue) => {\n // eslint-disable-next-line no-console\n console.log('Dependencies Panel mounted');\n },\n\n onUnmount: async (_context: PanelContextValue) => {\n // eslint-disable-next-line no-console\n console.log('Dependencies Panel unmounting');\n },\n },\n];\n\n/**\n * Optional: Called once when the entire package is loaded.\n */\nexport const onPackageLoad = async () => {\n // eslint-disable-next-line no-console\n console.log('Alexandria Panels package loaded');\n};\n\n/**\n * Optional: Called once when the package is unloaded.\n */\nexport const onPackageUnload = async () => {\n // eslint-disable-next-line no-console\n console.log('Alexandria Panels package unloading');\n};\n\n/**\n * Export tools for server-safe imports.\n * Use '@industry-theme/alexandria-panels/tools' to import without React dependencies.\n */\nexport {\n localProjectsPanelTools,\n localProjectsPanelToolsMetadata,\n filterProjectsTool,\n selectProjectTool,\n openProjectTool,\n} from './panels/LocalProjectsPanel/tools';\n\nexport {\n workspaceRepositoriesPanelTools,\n workspaceRepositoriesPanelToolsMetadata,\n selectRepositoryTool,\n refreshWorkspaceTool,\n openRepositoryTool,\n} from './panels/WorkspaceRepositoriesPanel/tools';\n\nexport {\n dependenciesPanelTools,\n dependenciesPanelToolsMetadata,\n filterDependenciesTool,\n selectDependencyTypeTool,\n selectPackageTool,\n} from './panels/DependenciesPanel/tools';\n\n/**\n * Export panel components for direct use\n */\nexport {\n LocalProjectsPanel,\n LocalProjectsPanelPreview,\n LocalProjectCard,\n RepositoryAvatar,\n} from './panels/LocalProjectsPanel';\n\nexport { WorkspaceRepositoriesPanel } from './panels/WorkspaceRepositoriesPanel';\n\nexport { DependenciesPanel } from './panels/DependenciesPanel';\n\n/**\n * Export types\n */\nexport type {\n LocalProjectCardProps,\n RepositoryAvatarProps,\n AlexandriaRepositoriesSlice,\n LocalProjectsPanelActions,\n CardActionMode,\n RepositoryWindowState,\n} from './panels/LocalProjectsPanel/types';\n\nexport type {\n Workspace,\n WorkspaceRepositoriesPanelActions,\n RepositorySelectedPayload,\n RepositoryOpenedPayload,\n} from './panels/WorkspaceRepositoriesPanel/types';\n\nexport type {\n PackageLayer,\n DependencyItem,\n PackageSummary,\n PackagesSliceData,\n} from './panels/DependenciesPanel/types';\n"],"names":["theme","React","__iconNode","Loader2","PANEL_ID","createPanelEvent","_a","Home","AlertTriangle","HelpCircle"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]}