@industry-theme/github-panels 0.1.13 → 0.1.15

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.
@@ -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/arrow-right.js","../node_modules/lucide-react/dist/esm/icons/arrow-up-down.js","../node_modules/lucide-react/dist/esm/icons/book-open.js","../node_modules/lucide-react/dist/esm/icons/building-2.js","../node_modules/lucide-react/dist/esm/icons/calendar.js","../node_modules/lucide-react/dist/esm/icons/chevron-down.js","../node_modules/lucide-react/dist/esm/icons/chevron-right.js","../node_modules/lucide-react/dist/esm/icons/external-link.js","../node_modules/lucide-react/dist/esm/icons/folder.js","../node_modules/lucide-react/dist/esm/icons/funnel.js","../node_modules/lucide-react/dist/esm/icons/git-branch.js","../node_modules/lucide-react/dist/esm/icons/git-fork.js","../node_modules/lucide-react/dist/esm/icons/github.js","../node_modules/lucide-react/dist/esm/icons/history.js","../node_modules/lucide-react/dist/esm/icons/lock.js","../node_modules/lucide-react/dist/esm/icons/log-in.js","../node_modules/lucide-react/dist/esm/icons/message-square.js","../node_modules/lucide-react/dist/esm/icons/network.js","../node_modules/lucide-react/dist/esm/icons/refresh-cw.js","../node_modules/lucide-react/dist/esm/icons/search.js","../node_modules/lucide-react/dist/esm/icons/star.js","../node_modules/lucide-react/dist/esm/icons/trash-2.js","../node_modules/lucide-react/dist/esm/icons/user.js","../node_modules/lucide-react/dist/esm/icons/x.js","../src/components/GitHubProjectCard.tsx","../src/panels/GitHubProjectsPanel.tsx","../src/panels/GitHubSearchPanel.tsx","../src/panels/OwnerRepositoriesPanel.tsx","../src/panels/RecentRepositoriesPanel.tsx","../node_modules/@principal-ai/logo-component/dist/Logo.js","../src/panels/WelcomePanel.tsx","../src/tools/index.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: \"M5 12h14\", key: \"1ays0h\" }],\n [\"path\", { d: \"m12 5 7 7-7 7\", key: \"xquz4c\" }]\n];\nconst ArrowRight = createLucideIcon(\"arrow-right\", __iconNode);\n\nexport { __iconNode, ArrowRight as default };\n//# sourceMappingURL=arrow-right.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 16-4 4-4-4\", key: \"f6ql7i\" }],\n [\"path\", { d: \"M17 20V4\", key: \"1ejh1v\" }],\n [\"path\", { d: \"m3 8 4-4 4 4\", key: \"11wl7u\" }],\n [\"path\", { d: \"M7 4v16\", key: \"1glfcx\" }]\n];\nconst ArrowUpDown = createLucideIcon(\"arrow-up-down\", __iconNode);\n\nexport { __iconNode, ArrowUpDown as default };\n//# sourceMappingURL=arrow-up-down.js.map\n","/**\n * @license lucide-react v0.552.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M12 7v14\", key: \"1akyts\" }],\n [\n \"path\",\n {\n d: \"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z\",\n key: \"ruj8y\"\n }\n ]\n];\nconst BookOpen = createLucideIcon(\"book-open\", __iconNode);\n\nexport { __iconNode, BookOpen as default };\n//# sourceMappingURL=book-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 [\"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 = [\n [\"path\", { d: \"M8 2v4\", key: \"1cmpym\" }],\n [\"path\", { d: \"M16 2v4\", key: \"4m81vk\" }],\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"4\", rx: \"2\", key: \"1hopcy\" }],\n [\"path\", { d: \"M3 10h18\", key: \"8toen8\" }]\n];\nconst Calendar = createLucideIcon(\"calendar\", __iconNode);\n\nexport { __iconNode, Calendar as default };\n//# sourceMappingURL=calendar.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: \"m6 9 6 6 6-6\", key: \"qrunsl\" }]];\nconst ChevronDown = createLucideIcon(\"chevron-down\", __iconNode);\n\nexport { __iconNode, ChevronDown as default };\n//# sourceMappingURL=chevron-down.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: \"m9 18 6-6-6-6\", key: \"mthhwq\" }]];\nconst ChevronRight = createLucideIcon(\"chevron-right\", __iconNode);\n\nexport { __iconNode, ChevronRight as default };\n//# sourceMappingURL=chevron-right.js.map\n","/**\n * @license lucide-react v0.552.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M15 3h6v6\", key: \"1q9fwt\" }],\n [\"path\", { d: \"M10 14 21 3\", key: \"gplh6r\" }],\n [\"path\", { d: \"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\", key: \"a6xqqp\" }]\n];\nconst ExternalLink = createLucideIcon(\"external-link\", __iconNode);\n\nexport { __iconNode, ExternalLink as default };\n//# sourceMappingURL=external-link.js.map\n","/**\n * @license lucide-react v0.552.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"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 [\n \"path\",\n {\n d: \"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z\",\n key: \"sc7q7i\"\n }\n ]\n];\nconst Funnel = createLucideIcon(\"funnel\", __iconNode);\n\nexport { __iconNode, Funnel as default };\n//# sourceMappingURL=funnel.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 [\"line\", { x1: \"6\", x2: \"6\", y1: \"3\", y2: \"15\", key: \"17qcm7\" }],\n [\"circle\", { cx: \"18\", cy: \"6\", r: \"3\", key: \"1h7g24\" }],\n [\"circle\", { cx: \"6\", cy: \"18\", r: \"3\", key: \"fqmcym\" }],\n [\"path\", { d: \"M18 9a9 9 0 0 1-9 9\", key: \"n2h4wq\" }]\n];\nconst GitBranch = createLucideIcon(\"git-branch\", __iconNode);\n\nexport { __iconNode, GitBranch as default };\n//# sourceMappingURL=git-branch.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: \"18\", r: \"3\", key: \"1mpf1b\" }],\n [\"circle\", { cx: \"6\", cy: \"6\", r: \"3\", key: \"1lh9wr\" }],\n [\"circle\", { cx: \"18\", cy: \"6\", r: \"3\", key: \"1h7g24\" }],\n [\"path\", { d: \"M18 9v2c0 .6-.4 1-1 1H7c-.6 0-1-.4-1-1V9\", key: \"1uq4wg\" }],\n [\"path\", { d: \"M12 12v3\", key: \"158kv8\" }]\n];\nconst GitFork = createLucideIcon(\"git-fork\", __iconNode);\n\nexport { __iconNode, GitFork as default };\n//# sourceMappingURL=git-fork.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: \"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4\",\n key: \"tonef\"\n }\n ],\n [\"path\", { d: \"M9 18c-4.51 2-5-2-7-2\", key: \"9comsn\" }]\n];\nconst Github = createLucideIcon(\"github\", __iconNode);\n\nexport { __iconNode, Github as default };\n//# sourceMappingURL=github.js.map\n","/**\n * @license lucide-react v0.552.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\", key: \"1357e3\" }],\n [\"path\", { d: \"M3 3v5h5\", key: \"1xhq8a\" }],\n [\"path\", { d: \"M12 7v5l4 2\", key: \"1fdv2h\" }]\n];\nconst History = createLucideIcon(\"history\", __iconNode);\n\nexport { __iconNode, History as default };\n//# sourceMappingURL=history.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: \"18\", height: \"11\", x: \"3\", y: \"11\", rx: \"2\", ry: \"2\", key: \"1w4ew1\" }],\n [\"path\", { d: \"M7 11V7a5 5 0 0 1 10 0v4\", key: \"fwvmzm\" }]\n];\nconst Lock = createLucideIcon(\"lock\", __iconNode);\n\nexport { __iconNode, Lock as default };\n//# sourceMappingURL=lock.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 17 5-5-5-5\", key: \"1bsop3\" }],\n [\"path\", { d: \"M15 12H3\", key: \"6jk70r\" }],\n [\"path\", { d: \"M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4\", key: \"u53s6r\" }]\n];\nconst LogIn = createLucideIcon(\"log-in\", __iconNode);\n\nexport { __iconNode, LogIn as default };\n//# sourceMappingURL=log-in.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: \"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z\",\n key: \"18887p\"\n }\n ]\n];\nconst MessageSquare = createLucideIcon(\"message-square\", __iconNode);\n\nexport { __iconNode, MessageSquare as default };\n//# sourceMappingURL=message-square.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\", { x: \"16\", y: \"16\", width: \"6\", height: \"6\", rx: \"1\", key: \"4q2zg0\" }],\n [\"rect\", { x: \"2\", y: \"16\", width: \"6\", height: \"6\", rx: \"1\", key: \"8cvhb9\" }],\n [\"rect\", { x: \"9\", y: \"2\", width: \"6\", height: \"6\", rx: \"1\", key: \"1egb70\" }],\n [\"path\", { d: \"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3\", key: \"1jsf9p\" }],\n [\"path\", { d: \"M12 12V8\", key: \"2874zd\" }]\n];\nconst Network = createLucideIcon(\"network\", __iconNode);\n\nexport { __iconNode, Network as default };\n//# sourceMappingURL=network.js.map\n","/**\n * @license lucide-react v0.552.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\", key: \"v9h5vc\" }],\n [\"path\", { d: \"M21 3v5h-5\", key: \"1q7to0\" }],\n [\"path\", { d: \"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\", key: \"3uifl3\" }],\n [\"path\", { d: \"M8 16H3v5\", key: \"1cv678\" }]\n];\nconst RefreshCw = createLucideIcon(\"refresh-cw\", __iconNode);\n\nexport { __iconNode, RefreshCw as default };\n//# sourceMappingURL=refresh-cw.js.map\n","/**\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: \"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z\",\n key: \"r04s7s\"\n }\n ]\n];\nconst Star = createLucideIcon(\"star\", __iconNode);\n\nexport { __iconNode, Star as default };\n//# sourceMappingURL=star.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 11v6\", key: \"nco0om\" }],\n [\"path\", { d: \"M14 11v6\", key: \"outv1u\" }],\n [\"path\", { d: \"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6\", key: \"miytrc\" }],\n [\"path\", { d: \"M3 6h18\", key: \"d0wm0j\" }],\n [\"path\", { d: \"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\", key: \"e791ji\" }]\n];\nconst Trash2 = createLucideIcon(\"trash-2\", __iconNode);\n\nexport { __iconNode, Trash2 as default };\n//# sourceMappingURL=trash-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 [\"path\", { d: \"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\", key: \"975kel\" }],\n [\"circle\", { cx: \"12\", cy: \"7\", r: \"4\", key: \"17ys0d\" }]\n];\nconst User = createLucideIcon(\"user\", __iconNode);\n\nexport { __iconNode, User as default };\n//# sourceMappingURL=user.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, { useState } from 'react';\nimport { useTheme } from '@principal-ade/industry-theme';\nimport {\n ExternalLink,\n Star,\n GitFork,\n Lock,\n} from 'lucide-react';\n\nimport type { GitHubRepository } from '../types/github';\n\nexport interface GitHubProjectCardProps {\n /** The repository data to display */\n repository: GitHubRepository;\n /** Whether this card is currently selected/highlighted */\n isSelected?: boolean;\n /** Callback when card is clicked (selects the repository) */\n onSelect?: (repository: GitHubRepository) => void;\n /** Callback when \"Open in GitHub\" is clicked */\n onOpenInGitHub?: (repository: GitHubRepository) => void;\n}\n\n/**\n * Get color for programming language\n */\nfunction getLanguageColor(language: string): string {\n const 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\n return colors[language] || '#6e7681';\n}\n\n/**\n * Format large numbers (e.g., 1234 -> 1.2k)\n */\nfunction formatCount(count: number): string {\n if (count >= 1000000) {\n return `${(count / 1000000).toFixed(1)}m`;\n }\n if (count >= 1000) {\n return `${(count / 1000).toFixed(1)}k`;\n }\n return count.toString();\n}\n\n/**\n * GitHubProjectCard - Displays a GitHub repository card\n *\n * Features:\n * - Repository name with owner avatar\n * - Language indicator with color coding\n * - Star and fork counts\n * - Private/fork indicators\n * - GitHub link button\n */\nexport const GitHubProjectCard: React.FC<GitHubProjectCardProps> = ({\n repository,\n isSelected = false,\n onSelect,\n onOpenInGitHub,\n}) => {\n const { theme } = useTheme();\n const [isHovered, setIsHovered] = useState(false);\n\n const highlightColor = theme.colors.primary;\n\n const handleCardClick = () => {\n onSelect?.(repository);\n };\n\n const handleOpenInGitHub = (e: React.MouseEvent) => {\n e.stopPropagation();\n if (onOpenInGitHub) {\n onOpenInGitHub(repository);\n } else {\n window.open(repository.html_url, '_blank');\n }\n };\n\n const starCount = repository.stargazers_count ?? 0;\n const forkCount = repository.forks_count ?? 0;\n\n return (\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n padding: '10px 12px',\n borderRadius: '6px',\n backgroundColor: isSelected\n ? `${highlightColor}15`\n : isHovered\n ? theme.colors.backgroundTertiary || theme.colors.backgroundSecondary\n : 'transparent',\n border: isSelected\n ? `1px solid ${highlightColor}40`\n : '1px solid transparent',\n cursor: 'pointer',\n transition: 'all 0.15s ease',\n }}\n onClick={handleCardClick}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n {/* Owner avatar */}\n {repository.owner.avatar_url ? (\n <img\n src={repository.owner.avatar_url}\n alt={repository.owner.login}\n style={{\n width: '32px',\n height: '32px',\n borderRadius: '50%',\n flexShrink: 0,\n }}\n />\n ) : (\n <div\n style={{\n width: '32px',\n height: '32px',\n borderRadius: '50%',\n flexShrink: 0,\n backgroundColor: theme.colors.backgroundTertiary || theme.colors.backgroundSecondary,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: `${theme.fontSizes[1]}px`,\n fontWeight: theme.fontWeights.semibold,\n color: theme.colors.textSecondary,\n }}\n >\n {repository.owner.login[0]?.toUpperCase() || '?'}\n </div>\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 row */}\n <div style={{ display: 'flex', alignItems: 'center', gap: '8px' }}>\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 }}\n >\n {repository.name}\n </span>\n {repository.private && (\n <Lock size={12} color={theme.colors.warning || '#f59e0b'} />\n )}\n {repository.fork && (\n <GitFork size={12} color={theme.colors.textSecondary} />\n )}\n </div>\n\n {/* Metadata row */}\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n fontSize: `${theme.fontSizes[0]}px`,\n color: theme.colors.textSecondary,\n flexWrap: 'wrap',\n }}\n >\n {/* Language */}\n {repository.language && (\n <div style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <span\n style={{\n display: 'inline-block',\n width: '8px',\n height: '8px',\n borderRadius: '50%',\n backgroundColor: getLanguageColor(repository.language),\n }}\n />\n <span>{repository.language}</span>\n </div>\n )}\n\n {/* Stars */}\n <div style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <Star size={12} />\n <span>{formatCount(starCount)}</span>\n </div>\n\n {/* Forks */}\n {forkCount > 0 && (\n <div style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <GitFork size={12} />\n <span>{formatCount(forkCount)}</span>\n </div>\n )}\n </div>\n\n {/* Description */}\n {repository.description && (\n <div\n style={{\n fontSize: `${theme.fontSizes[0]}px`,\n color: theme.colors.textSecondary,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}\n >\n {repository.description}\n </div>\n )}\n </div>\n\n {/* GitHub link button */}\n <button\n type=\"button\"\n onClick={handleOpenInGitHub}\n title=\"View on GitHub\"\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '6px',\n borderRadius: '4px',\n border: `1px solid ${theme.colors.border}`,\n backgroundColor: theme.colors.background,\n color: theme.colors.textSecondary,\n cursor: 'pointer',\n transition: 'all 0.15s ease',\n flexShrink: 0,\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor =\n theme.colors.backgroundTertiary || theme.colors.backgroundSecondary;\n e.currentTarget.style.color = theme.colors.text;\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = theme.colors.background;\n e.currentTarget.style.color = theme.colors.textSecondary;\n }}\n >\n <ExternalLink size={14} />\n </button>\n </div>\n );\n};\n","import React, { useState, useMemo, useEffect, useRef, useCallback } from 'react';\nimport { ThemeProvider, useTheme } from '@principal-ade/industry-theme';\nimport {\n Github,\n Search,\n ChevronDown,\n ChevronRight,\n Folder,\n Star,\n LogIn,\n Building2,\n} from 'lucide-react';\n\nimport type { PanelComponentProps } from '../types';\nimport type {\n GitHubRepositoriesSliceData,\n GitHubRepository,\n RepositoryPreviewEventPayload,\n} from '../types/github';\nimport { GitHubProjectCard } from '../components/GitHubProjectCard';\n\n/** Layout mode based on available width */\ntype LayoutMode = 'compact' | 'expanded';\n\n/** Breakpoint for switching layouts (in pixels) */\nconst EXPANDED_BREAKPOINT = 600;\n\n/**\n * Section component for collapsible repository groups\n */\ninterface SectionProps {\n id: string;\n title: string;\n icon: React.ReactNode;\n count: number;\n isExpanded: boolean;\n onToggle: () => void;\n children: React.ReactNode;\n layoutMode: LayoutMode;\n}\n\nconst Section: React.FC<SectionProps> = ({\n title,\n icon,\n count,\n isExpanded,\n onToggle,\n children,\n layoutMode,\n}) => {\n const { theme } = useTheme();\n\n // In expanded mode, sections are columns - always show content (no collapse)\n // In compact mode, sections are collapsible\n const showContent = layoutMode === 'expanded' || isExpanded;\n\n return (\n <div\n style={{\n marginBottom: layoutMode === 'compact' ? '8px' : '0',\n flex: layoutMode === 'expanded' ? '1 1 0' : undefined,\n minWidth: layoutMode === 'expanded' ? '280px' : undefined,\n display: 'flex',\n flexDirection: 'column',\n borderRight: layoutMode === 'expanded' ? `1px solid ${theme.colors.border}` : undefined,\n overflow: 'hidden',\n }}\n >\n <button\n type=\"button\"\n onClick={layoutMode === 'compact' ? onToggle : undefined}\n style={{\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n padding: '10px 12px',\n border: 'none',\n background: 'none',\n cursor: layoutMode === 'compact' ? 'pointer' : 'default',\n color: theme.colors.text,\n fontSize: `${theme.fontSizes[2]}px`,\n fontWeight: theme.fontWeights.semibold,\n borderBottom: layoutMode === 'expanded' ? `1px solid ${theme.colors.border}` : undefined,\n }}\n >\n {layoutMode === 'compact' && (isExpanded ? <ChevronDown size={16} /> : <ChevronRight size={16} />)}\n {icon}\n <span>{title}</span>\n <span\n style={{\n marginLeft: 'auto',\n fontSize: `${theme.fontSizes[0]}px`,\n color: theme.colors.textSecondary,\n backgroundColor: theme.colors.backgroundTertiary || theme.colors.backgroundSecondary,\n padding: '2px 8px',\n borderRadius: '10px',\n }}\n >\n {count}\n </span>\n </button>\n {showContent && (\n <div\n style={{\n padding: '4px',\n display: 'flex',\n flexDirection: 'column',\n gap: '0',\n flex: layoutMode === 'expanded' ? 1 : undefined,\n overflowY: layoutMode === 'expanded' ? 'auto' : undefined,\n }}\n >\n {children}\n </div>\n )}\n </div>\n );\n};\n\n/**\n * GitHubProjectsPanelContent - Internal component that uses theme\n */\nconst GitHubProjectsPanelContent: React.FC<PanelComponentProps> = ({\n context,\n events,\n}) => {\n const { theme } = useTheme();\n const containerRef = useRef<HTMLDivElement>(null);\n const [layoutMode, setLayoutMode] = useState<LayoutMode>('compact');\n const [searchQuery, setSearchQuery] = useState('');\n const [selectedRepoId, setSelectedRepoId] = useState<number | null>(null);\n const [expandedSections, setExpandedSections] = useState<Set<string>>(\n new Set(['owned', 'starred'])\n );\n\n // Get GitHub repositories slice\n const githubSlice = context.getSlice<GitHubRepositoriesSliceData>('github-repositories');\n const isLoading = context.isSliceLoading('github-repositories');\n const hasData = context.hasSlice('github-repositories');\n\n const data = githubSlice?.data;\n\n // Observe container width for responsive layout\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const observer = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const width = entry.contentRect.width;\n setLayoutMode(width >= EXPANDED_BREAKPOINT ? 'expanded' : 'compact');\n }\n });\n\n observer.observe(container);\n return () => observer.disconnect();\n }, []);\n\n // Filter repositories by search query\n const filterRepos = useCallback((repos: GitHubRepository[]) => {\n if (!searchQuery) return repos;\n const query = searchQuery.toLowerCase();\n return repos.filter(\n (repo) =>\n repo.name.toLowerCase().includes(query) ||\n repo.full_name.toLowerCase().includes(query) ||\n repo.description?.toLowerCase().includes(query) ||\n repo.language?.toLowerCase().includes(query)\n );\n }, [searchQuery]);\n\n const filteredOwned = useMemo(() => filterRepos(data?.owned || []), [data?.owned, filterRepos]);\n const filteredStarred = useMemo(() => filterRepos(data?.starred || []), [data?.starred, filterRepos]);\n const filteredOrgs = useMemo(() => {\n if (!data?.organizations) return [];\n return data.organizations.map((org) => ({\n ...org,\n repositories: filterRepos(org.repositories),\n })).filter((org) => org.repositories.length > 0 || !searchQuery);\n }, [data?.organizations, filterRepos, searchQuery]);\n\n // Toggle section expansion\n const toggleSection = (section: string) => {\n setExpandedSections((prev) => {\n const next = new Set(prev);\n if (next.has(section)) {\n next.delete(section);\n } else {\n next.add(section);\n }\n return next;\n });\n };\n\n // Handle repository preview (click to show README)\n const handleSelectRepository = (repo: GitHubRepository) => {\n setSelectedRepoId(repo.id);\n\n events.emit<RepositoryPreviewEventPayload>({\n type: 'repository:preview',\n source: 'github-projects-panel',\n timestamp: Date.now(),\n payload: {\n repository: repo,\n source: 'click',\n },\n });\n };\n\n // Render empty state for a section\n const renderEmptyState = (message: string) => (\n <div\n style={{\n padding: '16px',\n textAlign: 'center',\n color: theme.colors.textSecondary,\n fontSize: `${theme.fontSizes[1]}px`,\n gridColumn: layoutMode === 'expanded' ? '1 / -1' : undefined,\n }}\n >\n {message}\n </div>\n );\n\n // Render repository cards\n const renderCards = (repos: GitHubRepository[]) =>\n repos.map((repo) => (\n <GitHubProjectCard\n key={repo.id}\n repository={repo}\n isSelected={selectedRepoId === repo.id}\n onSelect={handleSelectRepository}\n />\n ));\n\n // Not authenticated state\n if (hasData && data && !data.isAuthenticated) {\n return (\n <div\n ref={containerRef}\n style={{\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '16px',\n padding: '24px',\n color: theme.colors.textSecondary,\n }}\n >\n <LogIn size={48} color={theme.colors.textSecondary} />\n <h3\n style={{\n margin: 0,\n fontSize: `${theme.fontSizes[3]}px`,\n color: theme.colors.text,\n }}\n >\n Sign in to GitHub\n </h3>\n <p style={{ margin: 0, textAlign: 'center' }}>\n Connect your GitHub account to see your repositories\n </p>\n <button\n type=\"button\"\n onClick={() => {\n events.emit({\n type: 'github:login-requested',\n source: 'github-projects-panel',\n timestamp: Date.now(),\n payload: {},\n });\n }}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n padding: '10px 20px',\n borderRadius: '6px',\n border: 'none',\n backgroundColor: theme.colors.primary,\n color: theme.colors.background,\n fontSize: `${theme.fontSizes[2]}px`,\n fontWeight: theme.fontWeights.medium,\n cursor: 'pointer',\n }}\n >\n <Github size={18} />\n Sign in with GitHub\n </button>\n </div>\n );\n }\n\n // Loading state\n if (isLoading) {\n return (\n <div\n ref={containerRef}\n style={{\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: theme.colors.textSecondary,\n }}\n >\n Loading repositories...\n </div>\n );\n }\n\n // No data state - show sign in prompt\n if (!hasData || !data) {\n return (\n <div\n ref={containerRef}\n style={{\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '16px',\n padding: '24px',\n color: theme.colors.textSecondary,\n }}\n >\n <LogIn size={48} color={theme.colors.textSecondary} />\n <h3\n style={{\n margin: 0,\n fontSize: `${theme.fontSizes[3]}px`,\n color: theme.colors.text,\n }}\n >\n Sign in to GitHub\n </h3>\n <p style={{ margin: 0, textAlign: 'center' }}>\n Connect your GitHub account to browse your repositories\n </p>\n <button\n type=\"button\"\n onClick={() => {\n events.emit({\n type: 'github:login-requested',\n source: 'github-projects-panel',\n timestamp: Date.now(),\n payload: {},\n });\n }}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n padding: '10px 20px',\n borderRadius: '6px',\n border: 'none',\n backgroundColor: theme.colors.primary,\n color: theme.colors.background,\n fontSize: `${theme.fontSizes[2]}px`,\n fontWeight: theme.fontWeights.medium,\n cursor: 'pointer',\n }}\n >\n <Github size={18} />\n Sign in with GitHub\n </button>\n </div>\n );\n }\n\n return (\n <div\n ref={containerRef}\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 }}\n >\n {/* Header */}\n <div\n style={{\n padding: '12px 16px',\n borderBottom: `1px solid ${theme.colors.border}`,\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n flexWrap: 'wrap',\n }}\n >\n <Github size={20} color={theme.colors.primary} />\n <h2\n style={{\n margin: 0,\n fontSize: `${theme.fontSizes[3]}px`,\n fontWeight: theme.fontWeights.semibold,\n }}\n >\n GitHub Projects\n </h2>\n {data.username && (\n <span\n style={{\n fontSize: `${theme.fontSizes[1]}px`,\n color: theme.colors.textSecondary,\n }}\n >\n @{data.username}\n </span>\n )}\n </div>\n\n {/* Search */}\n <div style={{ padding: '12px 16px' }}>\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n padding: '8px 12px',\n borderRadius: '6px',\n backgroundColor: theme.colors.backgroundSecondary,\n border: `1px solid ${theme.colors.border}`,\n }}\n >\n <Search size={16} color={theme.colors.textSecondary} />\n <input\n type=\"text\"\n placeholder=\"Search repositories...\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n style={{\n flex: 1,\n border: 'none',\n background: 'none',\n outline: 'none',\n fontSize: `${theme.fontSizes[2]}px`,\n color: theme.colors.text,\n }}\n />\n </div>\n </div>\n\n {/* Repository sections */}\n <div\n style={{\n flex: 1,\n overflow: 'hidden',\n display: 'flex',\n flexDirection: layoutMode === 'expanded' ? 'row' : 'column',\n overflowY: layoutMode === 'compact' ? 'auto' : undefined,\n overflowX: layoutMode === 'expanded' ? 'auto' : undefined,\n }}\n >\n {/* Personal repositories */}\n <Section\n id=\"owned\"\n title=\"Your Repositories\"\n icon={<Folder size={16} color={theme.colors.primary} />}\n count={filteredOwned.length}\n isExpanded={expandedSections.has('owned')}\n onToggle={() => toggleSection('owned')}\n layoutMode={layoutMode}\n >\n {filteredOwned.length === 0\n ? renderEmptyState(searchQuery ? 'No repositories match your search' : 'No repositories found')\n : renderCards(filteredOwned)}\n </Section>\n\n {/* Organization repositories */}\n {filteredOrgs.map((org) => (\n <Section\n key={org.id}\n id={`org-${org.id}`}\n title={org.login}\n icon={\n org.avatar_url ? (\n <img\n src={org.avatar_url}\n alt={org.login}\n style={{ width: 16, height: 16, borderRadius: 4 }}\n />\n ) : (\n <Building2 size={16} color={theme.colors.info || '#3b82f6'} />\n )\n }\n count={org.repositories.length}\n isExpanded={expandedSections.has(`org-${org.id}`)}\n onToggle={() => toggleSection(`org-${org.id}`)}\n layoutMode={layoutMode}\n >\n {org.repositories.length === 0\n ? renderEmptyState(searchQuery ? 'No repositories match your search' : 'No repositories')\n : renderCards(org.repositories)}\n </Section>\n ))}\n\n {/* Starred repositories */}\n <Section\n id=\"starred\"\n title=\"Starred\"\n icon={<Star size={16} color={theme.colors.warning || '#f59e0b'} />}\n count={filteredStarred.length}\n isExpanded={expandedSections.has('starred')}\n onToggle={() => toggleSection('starred')}\n layoutMode={layoutMode}\n >\n {filteredStarred.length === 0\n ? renderEmptyState(searchQuery ? 'No repositories match your search' : 'No starred repositories')\n : renderCards(filteredStarred)}\n </Section>\n </div>\n </div>\n );\n};\n\n/**\n * GitHubProjectsPanel - A panel for browsing GitHub repositories\n *\n * Features:\n * - Lists personal, organization, and starred repositories\n * - Responsive layout: compact (dropdown) for narrow, columns for wide\n * - Search/filter functionality\n * - Emits repository:selected events when a repo is clicked\n *\n * Required data slice: 'github-repositories' (GitHubRepositoriesSliceData)\n */\nexport const GitHubProjectsPanel: React.FC<PanelComponentProps> = (props) => {\n return (\n <ThemeProvider>\n <GitHubProjectsPanelContent {...props} />\n </ThemeProvider>\n );\n};\n\n/**\n * Panel metadata for registration\n */\nexport const GitHubProjectsPanelMetadata = {\n id: 'github-projects',\n name: 'GitHub Projects',\n description: 'Browse and manage your GitHub repositories',\n icon: 'github',\n version: '0.1.0',\n slices: ['github-repositories'],\n surfaces: ['sidebar', 'panel'],\n};\n","import React, { useState, useRef, useEffect, useCallback } from 'react';\nimport { ThemeProvider, useTheme } from '@principal-ade/industry-theme';\nimport { Search, Github, Star, GitFork, ExternalLink } from 'lucide-react';\n\nimport type { PanelComponentProps } from '../types';\nimport type { GitHubRepository, RepositoryPreviewEventPayload } from '../types/github';\n\n/** Search result from GitHub API */\ninterface GitHubSearchResult {\n total_count: number;\n incomplete_results: boolean;\n items: GitHubRepository[];\n}\n\n/**\n * GitHubSearchPanelContent - Internal component that uses theme\n */\nconst GitHubSearchPanelContent: React.FC<PanelComponentProps> = ({ events }) => {\n const { theme } = useTheme();\n const [searchQuery, setSearchQuery] = useState('');\n const [results, setResults] = useState<GitHubRepository[]>([]);\n const [totalCount, setTotalCount] = useState(0);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [selectedRepoId, setSelectedRepoId] = useState<number | null>(null);\n const searchTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n\n // Focus input on mount\n useEffect(() => {\n inputRef.current?.focus();\n }, []);\n\n // Debounced search\n const performSearch = useCallback(async (query: string) => {\n if (!query.trim()) {\n setResults([]);\n setTotalCount(0);\n setError(null);\n return;\n }\n\n setIsLoading(true);\n setError(null);\n\n try {\n const response = await fetch(\n `/api/github/search?q=${encodeURIComponent(query)}&per_page=30`\n );\n\n if (!response.ok) {\n const errorData = await response.json().catch(() => ({}));\n throw new Error(errorData.error || 'Search failed');\n }\n\n const data: GitHubSearchResult = await response.json();\n setResults(data.items || []);\n setTotalCount(data.total_count || 0);\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Search failed');\n setResults([]);\n setTotalCount(0);\n } finally {\n setIsLoading(false);\n }\n }, []);\n\n // Handle search input change with debounce\n const handleSearchChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const query = e.target.value;\n setSearchQuery(query);\n\n // Clear existing timeout\n if (searchTimeoutRef.current) {\n clearTimeout(searchTimeoutRef.current);\n }\n\n // Debounce search\n searchTimeoutRef.current = setTimeout(() => {\n performSearch(query);\n }, 300);\n };\n\n // Handle form submit (immediate search)\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n if (searchTimeoutRef.current) {\n clearTimeout(searchTimeoutRef.current);\n }\n performSearch(searchQuery);\n };\n\n // Handle repository preview (click to show README)\n const handleSelectRepository = (repo: GitHubRepository) => {\n setSelectedRepoId(repo.id);\n\n events.emit<RepositoryPreviewEventPayload>({\n type: 'repository:preview',\n source: 'github-search-panel',\n timestamp: Date.now(),\n payload: {\n repository: repo,\n source: 'search',\n },\n });\n };\n\n // Format number with K/M suffix\n const formatNumber = (num: number): string => {\n if (num >= 1000000) return `${(num / 1000000).toFixed(1)}M`;\n if (num >= 1000) return `${(num / 1000).toFixed(1)}K`;\n return num.toString();\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 }}\n >\n {/* Header */}\n <div\n style={{\n padding: '12px 16px',\n borderBottom: `1px solid ${theme.colors.border}`,\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n }}\n >\n <Github size={20} color={theme.colors.primary} />\n <h2\n style={{\n margin: 0,\n fontSize: `${theme.fontSizes[3]}px`,\n fontWeight: theme.fontWeights.semibold,\n }}\n >\n Search GitHub\n </h2>\n </div>\n\n {/* Search Input */}\n <form onSubmit={handleSubmit} style={{ padding: '12px 16px' }}>\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n padding: '10px 12px',\n borderRadius: '6px',\n backgroundColor: theme.colors.backgroundSecondary,\n border: `1px solid ${theme.colors.border}`,\n }}\n >\n <Search size={18} color={theme.colors.textSecondary} />\n <input\n ref={inputRef}\n type=\"text\"\n placeholder=\"Search repositories on GitHub...\"\n value={searchQuery}\n onChange={handleSearchChange}\n style={{\n flex: 1,\n border: 'none',\n background: 'none',\n outline: 'none',\n fontSize: `${theme.fontSizes[2]}px`,\n color: theme.colors.text,\n }}\n />\n {isLoading && (\n <div\n style={{\n width: 16,\n height: 16,\n border: `2px solid ${theme.colors.border}`,\n borderTopColor: theme.colors.primary,\n borderRadius: '50%',\n animation: 'spin 1s linear infinite',\n }}\n />\n )}\n </div>\n </form>\n\n {/* Results Count */}\n {totalCount > 0 && !isLoading && (\n <div\n style={{\n padding: '0 16px 8px',\n fontSize: `${theme.fontSizes[1]}px`,\n color: theme.colors.textSecondary,\n }}\n >\n {formatNumber(totalCount)} repositories found\n </div>\n )}\n\n {/* Error State */}\n {error && (\n <div\n style={{\n padding: '16px',\n margin: '0 16px',\n borderRadius: '6px',\n backgroundColor: `${theme.colors.error}15`,\n color: theme.colors.error,\n fontSize: `${theme.fontSizes[2]}px`,\n }}\n >\n {error}\n </div>\n )}\n\n {/* Results List */}\n <div\n style={{\n flex: 1,\n overflowY: 'auto',\n padding: '0 8px 8px',\n }}\n >\n {results.length === 0 && !isLoading && searchQuery && !error && (\n <div\n style={{\n padding: '32px 16px',\n textAlign: 'center',\n color: theme.colors.textSecondary,\n }}\n >\n No repositories found for \"{searchQuery}\"\n </div>\n )}\n\n {results.length === 0 && !searchQuery && (\n <div\n style={{\n padding: '32px 16px',\n textAlign: 'center',\n color: theme.colors.textSecondary,\n }}\n >\n <Search size={48} color={theme.colors.border} style={{ marginBottom: 16 }} />\n <p style={{ margin: 0 }}>\n Search for repositories by name, description, or topic\n </p>\n </div>\n )}\n\n {results.map((repo) => (\n <button\n key={repo.id}\n type=\"button\"\n onClick={() => handleSelectRepository(repo)}\n style={{\n width: '100%',\n padding: '12px',\n margin: '4px 0',\n borderRadius: '6px',\n border: selectedRepoId === repo.id\n ? `2px solid ${theme.colors.primary}`\n : `1px solid ${theme.colors.border}`,\n backgroundColor: selectedRepoId === repo.id\n ? `${theme.colors.primary}10`\n : theme.colors.surface,\n cursor: 'pointer',\n textAlign: 'left',\n display: 'flex',\n flexDirection: 'column',\n gap: '8px',\n }}\n >\n {/* Repo name and owner */}\n <div style={{ display: 'flex', alignItems: 'center', gap: '8px' }}>\n {repo.owner?.avatar_url && (\n <img\n src={repo.owner.avatar_url}\n alt={repo.owner.login}\n style={{ width: 20, height: 20, borderRadius: 4 }}\n />\n )}\n <span\n style={{\n fontSize: `${theme.fontSizes[2]}px`,\n fontWeight: theme.fontWeights.semibold,\n color: theme.colors.primary,\n }}\n >\n {repo.full_name}\n </span>\n {repo.private && (\n <span\n style={{\n fontSize: `${theme.fontSizes[0]}px`,\n padding: '2px 6px',\n borderRadius: '4px',\n backgroundColor: theme.colors.backgroundTertiary,\n color: theme.colors.textSecondary,\n }}\n >\n Private\n </span>\n )}\n </div>\n\n {/* Description */}\n {repo.description && (\n <p\n style={{\n margin: 0,\n fontSize: `${theme.fontSizes[1]}px`,\n color: theme.colors.textSecondary,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n display: '-webkit-box',\n WebkitLineClamp: 2,\n WebkitBoxOrient: 'vertical',\n }}\n >\n {repo.description}\n </p>\n )}\n\n {/* Stats */}\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '16px',\n fontSize: `${theme.fontSizes[1]}px`,\n color: theme.colors.textSecondary,\n }}\n >\n {repo.language && (\n <span style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <span\n style={{\n width: 10,\n height: 10,\n borderRadius: '50%',\n backgroundColor: theme.colors.info,\n }}\n />\n {repo.language}\n </span>\n )}\n <span style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <Star size={14} />\n {formatNumber(repo.stargazers_count || 0)}\n </span>\n <span style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <GitFork size={14} />\n {formatNumber(repo.forks_count || 0)}\n </span>\n <a\n href={repo.html_url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onClick={(e) => e.stopPropagation()}\n style={{\n marginLeft: 'auto',\n color: theme.colors.textSecondary,\n display: 'flex',\n alignItems: 'center',\n }}\n >\n <ExternalLink size={14} />\n </a>\n </div>\n </button>\n ))}\n </div>\n\n {/* CSS for spinner animation */}\n <style>{`\n @keyframes spin {\n to { transform: rotate(360deg); }\n }\n `}</style>\n </div>\n );\n};\n\n/**\n * GitHubSearchPanel - A panel for searching GitHub repositories\n *\n * Features:\n * - Real-time search with debouncing\n * - Shows stars, forks, language\n * - Emits repository:selected events when a repo is clicked\n */\nexport const GitHubSearchPanel: React.FC<PanelComponentProps> = (props) => {\n return (\n <ThemeProvider>\n <GitHubSearchPanelContent {...props} />\n </ThemeProvider>\n );\n};\n\n/**\n * Panel metadata for registration\n */\nexport const GitHubSearchPanelMetadata = {\n id: 'github-search',\n name: 'GitHub Search',\n description: 'Search for repositories on GitHub',\n icon: 'search',\n version: '0.1.0',\n slices: [],\n surfaces: ['panel'],\n};\n","import React, { useState, useEffect, useCallback } from 'react';\nimport { ThemeProvider, useTheme } from '@principal-ade/industry-theme';\nimport {\n Github,\n Star,\n GitFork,\n ExternalLink,\n Calendar,\n ArrowUpDown,\n Filter,\n Building2,\n User,\n RefreshCw,\n} from 'lucide-react';\n\nimport type { PanelComponentProps } from '../types';\nimport type { GitHubRepository, RepositoryPreviewEventPayload } from '../types/github';\n\ntype SortField = 'updated' | 'stars' | 'name' | 'created';\ntype SortOrder = 'asc' | 'desc';\n\ninterface OwnerInfo {\n login: string;\n avatar_url: string;\n name?: string;\n bio?: string;\n type: 'User' | 'Organization';\n public_repos: number;\n followers?: number;\n following?: number;\n}\n\n/**\n * OwnerRepositoriesPanelContent - Internal component that uses theme\n */\nconst OwnerRepositoriesPanelContent: React.FC<PanelComponentProps & { owner?: string }> = ({\n events,\n context,\n owner: propOwner,\n}) => {\n const { theme } = useTheme();\n const [repositories, setRepositories] = useState<GitHubRepository[]>([]);\n const [ownerInfo, setOwnerInfo] = useState<OwnerInfo | null>(null);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n const [selectedRepoId, setSelectedRepoId] = useState<number | null>(null);\n const [sortField, setSortField] = useState<SortField>('updated');\n const [sortOrder, setSortOrder] = useState<SortOrder>('desc');\n const [languageFilter, setLanguageFilter] = useState<string | null>(null);\n const [languages, setLanguages] = useState<string[]>([]);\n\n // Get owner from prop or context\n const owner = propOwner || (context?.currentScope?.repository as { name?: string })?.name;\n\n // Fetch owner info and repositories\n const fetchOwnerData = useCallback(async () => {\n if (!owner) {\n setError('No owner specified');\n setIsLoading(false);\n return;\n }\n\n setIsLoading(true);\n setError(null);\n\n try {\n // Fetch owner info (user or org)\n const userResponse = await fetch(`https://api.github.com/users/${owner}`);\n\n if (!userResponse.ok) {\n if (userResponse.status === 404) {\n throw new Error(`User or organization \"${owner}\" not found`);\n }\n throw new Error('Failed to fetch owner info');\n }\n\n const userData = await userResponse.json();\n setOwnerInfo({\n login: userData.login,\n avatar_url: userData.avatar_url,\n name: userData.name,\n bio: userData.bio,\n type: userData.type,\n public_repos: userData.public_repos,\n followers: userData.followers,\n following: userData.following,\n });\n\n // Fetch repositories (handles pagination up to 100)\n const reposResponse = await fetch(\n `https://api.github.com/users/${owner}/repos?per_page=100&sort=updated`\n );\n\n if (!reposResponse.ok) {\n throw new Error('Failed to fetch repositories');\n }\n\n const reposData: GitHubRepository[] = await reposResponse.json();\n setRepositories(reposData);\n\n // Extract unique languages\n const uniqueLanguages = [...new Set(\n reposData\n .map(r => r.language)\n .filter((lang): lang is string => lang !== null)\n )].sort();\n setLanguages(uniqueLanguages);\n\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to load data');\n } finally {\n setIsLoading(false);\n }\n }, [owner]);\n\n // Fetch on mount and when owner changes\n useEffect(() => {\n fetchOwnerData();\n }, [fetchOwnerData]);\n\n // Sort and filter repositories\n const sortedAndFilteredRepos = React.useMemo(() => {\n let filtered = repositories;\n\n // Apply language filter\n if (languageFilter) {\n filtered = filtered.filter(r => r.language === languageFilter);\n }\n\n // Apply sorting\n return [...filtered].sort((a, b) => {\n let comparison = 0;\n\n switch (sortField) {\n case 'updated':\n comparison = new Date(b.updated_at || 0).getTime() - new Date(a.updated_at || 0).getTime();\n break;\n case 'stars':\n comparison = (b.stargazers_count || 0) - (a.stargazers_count || 0);\n break;\n case 'name':\n comparison = a.name.localeCompare(b.name);\n break;\n case 'created':\n comparison = new Date(b.created_at || 0).getTime() - new Date(a.created_at || 0).getTime();\n break;\n }\n\n return sortOrder === 'desc' ? comparison : -comparison;\n });\n }, [repositories, sortField, sortOrder, languageFilter]);\n\n // Handle repository preview (click to show README)\n const handleSelectRepository = (repo: GitHubRepository) => {\n setSelectedRepoId(repo.id);\n\n events.emit<RepositoryPreviewEventPayload>({\n type: 'repository:preview',\n source: 'owner-repositories-panel',\n timestamp: Date.now(),\n payload: {\n repository: repo,\n source: 'click',\n },\n });\n };\n\n // Handle repository open (double-click or button)\n const handleOpenRepository = (repo: GitHubRepository) => {\n events.emit({\n type: 'repository:selected',\n source: 'owner-repositories-panel',\n timestamp: Date.now(),\n payload: {\n repository: repo,\n source: 'click',\n },\n });\n };\n\n // Format number with K/M suffix\n const formatNumber = (num: number): string => {\n if (num >= 1000000) return `${(num / 1000000).toFixed(1)}M`;\n if (num >= 1000) return `${(num / 1000).toFixed(1)}K`;\n return num.toString();\n };\n\n // Format relative time\n const formatRelativeTime = (dateString: string): string => {\n const date = new Date(dateString);\n const now = new Date();\n const diffMs = now.getTime() - date.getTime();\n const diffDays = Math.floor(diffMs / (1000 * 60 * 60 * 24));\n\n if (diffDays === 0) return 'today';\n if (diffDays === 1) return 'yesterday';\n if (diffDays < 7) return `${diffDays} days ago`;\n if (diffDays < 30) return `${Math.floor(diffDays / 7)} weeks ago`;\n if (diffDays < 365) return `${Math.floor(diffDays / 30)} months ago`;\n return `${Math.floor(diffDays / 365)} years ago`;\n };\n\n // Toggle sort\n const handleSort = (field: SortField) => {\n if (sortField === field) {\n setSortOrder(prev => prev === 'desc' ? 'asc' : 'desc');\n } else {\n setSortField(field);\n setSortOrder('desc');\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 }}\n >\n {/* Header with owner info */}\n <div\n style={{\n padding: '16px',\n borderBottom: `1px solid ${theme.colors.border}`,\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n }}\n >\n {ownerInfo ? (\n <>\n <img\n src={ownerInfo.avatar_url}\n alt={ownerInfo.login}\n style={{\n width: 48,\n height: 48,\n borderRadius: ownerInfo.type === 'Organization' ? 8 : '50%',\n border: `2px solid ${theme.colors.border}`,\n }}\n />\n <div style={{ flex: 1 }}>\n <div style={{ display: 'flex', alignItems: 'center', gap: '8px' }}>\n <h2\n style={{\n margin: 0,\n fontSize: `${theme.fontSizes[4]}px`,\n fontWeight: theme.fontWeights.bold,\n }}\n >\n {ownerInfo.name || ownerInfo.login}\n </h2>\n {ownerInfo.type === 'Organization' ? (\n <Building2 size={16} color={theme.colors.textSecondary} />\n ) : (\n <User size={16} color={theme.colors.textSecondary} />\n )}\n </div>\n {ownerInfo.bio && (\n <p\n style={{\n margin: '4px 0 0',\n fontSize: `${theme.fontSizes[1]}px`,\n color: theme.colors.textSecondary,\n }}\n >\n {ownerInfo.bio}\n </p>\n )}\n <div\n style={{\n display: 'flex',\n gap: '12px',\n marginTop: '4px',\n fontSize: `${theme.fontSizes[1]}px`,\n color: theme.colors.textSecondary,\n }}\n >\n <span>{ownerInfo.public_repos} repositories</span>\n {ownerInfo.followers !== undefined && (\n <span>{formatNumber(ownerInfo.followers)} followers</span>\n )}\n </div>\n </div>\n <button\n onClick={fetchOwnerData}\n style={{\n padding: '8px',\n borderRadius: '6px',\n border: `1px solid ${theme.colors.border}`,\n background: 'transparent',\n cursor: 'pointer',\n color: theme.colors.textSecondary,\n }}\n title=\"Refresh\"\n >\n <RefreshCw size={16} />\n </button>\n </>\n ) : (\n <div style={{ display: 'flex', alignItems: 'center', gap: '12px' }}>\n <Github size={24} color={theme.colors.primary} />\n <h2\n style={{\n margin: 0,\n fontSize: `${theme.fontSizes[3]}px`,\n fontWeight: theme.fontWeights.semibold,\n }}\n >\n {owner || 'Repositories'}\n </h2>\n </div>\n )}\n </div>\n\n {/* Sort and Filter Controls */}\n {!isLoading && !error && repositories.length > 0 && (\n <div\n style={{\n padding: '8px 16px',\n borderBottom: `1px solid ${theme.colors.border}`,\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n flexWrap: 'wrap',\n }}\n >\n {/* Sort buttons */}\n <div style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <ArrowUpDown size={14} color={theme.colors.textSecondary} />\n {(['updated', 'stars', 'name'] as SortField[]).map((field) => (\n <button\n key={field}\n onClick={() => handleSort(field)}\n style={{\n padding: '4px 8px',\n borderRadius: '4px',\n border: 'none',\n background: sortField === field ? theme.colors.primary : theme.colors.backgroundSecondary,\n color: sortField === field ? theme.colors.background : theme.colors.text,\n fontSize: `${theme.fontSizes[1]}px`,\n cursor: 'pointer',\n textTransform: 'capitalize',\n }}\n >\n {field}\n {sortField === field && (sortOrder === 'desc' ? ' ↓' : ' ↑')}\n </button>\n ))}\n </div>\n\n {/* Language filter */}\n {languages.length > 0 && (\n <div style={{ display: 'flex', alignItems: 'center', gap: '4px', marginLeft: 'auto' }}>\n <Filter size={14} color={theme.colors.textSecondary} />\n <select\n value={languageFilter || ''}\n onChange={(e) => setLanguageFilter(e.target.value || null)}\n style={{\n padding: '4px 8px',\n borderRadius: '4px',\n border: `1px solid ${theme.colors.border}`,\n background: theme.colors.backgroundSecondary,\n color: theme.colors.text,\n fontSize: `${theme.fontSizes[1]}px`,\n cursor: 'pointer',\n }}\n >\n <option value=\"\">All languages</option>\n {languages.map((lang) => (\n <option key={lang} value={lang}>{lang}</option>\n ))}\n </select>\n </div>\n )}\n </div>\n )}\n\n {/* Loading State */}\n {isLoading && (\n <div\n style={{\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '16px',\n color: theme.colors.textSecondary,\n }}\n >\n <div\n style={{\n width: 32,\n height: 32,\n border: `3px solid ${theme.colors.border}`,\n borderTopColor: theme.colors.primary,\n borderRadius: '50%',\n animation: 'spin 1s linear infinite',\n }}\n />\n <span>Loading repositories...</span>\n </div>\n )}\n\n {/* Error State */}\n {error && (\n <div\n style={{\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '32px',\n textAlign: 'center',\n }}\n >\n <div\n style={{\n padding: '16px 24px',\n borderRadius: '8px',\n backgroundColor: `${theme.colors.error}15`,\n color: theme.colors.error,\n marginBottom: '16px',\n }}\n >\n {error}\n </div>\n <button\n onClick={fetchOwnerData}\n style={{\n padding: '8px 16px',\n borderRadius: '6px',\n border: 'none',\n background: theme.colors.primary,\n color: theme.colors.background,\n cursor: 'pointer',\n fontWeight: theme.fontWeights.medium,\n }}\n >\n Try Again\n </button>\n </div>\n )}\n\n {/* Empty State */}\n {!isLoading && !error && repositories.length === 0 && (\n <div\n style={{\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '32px',\n color: theme.colors.textSecondary,\n }}\n >\n <Github size={48} color={theme.colors.border} style={{ marginBottom: 16 }} />\n <p style={{ margin: 0 }}>No public repositories found</p>\n </div>\n )}\n\n {/* Repository List */}\n {!isLoading && !error && sortedAndFilteredRepos.length > 0 && (\n <div\n style={{\n flex: 1,\n overflowY: 'auto',\n padding: '8px',\n }}\n >\n {sortedAndFilteredRepos.map((repo) => (\n <button\n key={repo.id}\n type=\"button\"\n onClick={() => handleSelectRepository(repo)}\n onDoubleClick={() => handleOpenRepository(repo)}\n style={{\n width: '100%',\n padding: '12px',\n margin: '4px 0',\n borderRadius: '8px',\n border: selectedRepoId === repo.id\n ? `2px solid ${theme.colors.primary}`\n : `1px solid ${theme.colors.border}`,\n backgroundColor: selectedRepoId === repo.id\n ? `${theme.colors.primary}10`\n : theme.colors.surface,\n cursor: 'pointer',\n textAlign: 'left',\n display: 'flex',\n flexDirection: 'column',\n gap: '8px',\n transition: 'all 0.15s ease',\n }}\n >\n {/* Repo name */}\n <div style={{ display: 'flex', alignItems: 'center', gap: '8px' }}>\n <span\n style={{\n fontSize: `${theme.fontSizes[2]}px`,\n fontWeight: theme.fontWeights.semibold,\n color: theme.colors.primary,\n }}\n >\n {repo.name}\n </span>\n {repo.archived && (\n <span\n style={{\n fontSize: `${theme.fontSizes[0]}px`,\n padding: '2px 6px',\n borderRadius: '4px',\n backgroundColor: theme.colors.warning + '20',\n color: theme.colors.warning,\n }}\n >\n Archived\n </span>\n )}\n {repo.fork && (\n <span\n style={{\n fontSize: `${theme.fontSizes[0]}px`,\n padding: '2px 6px',\n borderRadius: '4px',\n backgroundColor: theme.colors.backgroundTertiary,\n color: theme.colors.textSecondary,\n }}\n >\n Fork\n </span>\n )}\n </div>\n\n {/* Description */}\n {repo.description && (\n <p\n style={{\n margin: 0,\n fontSize: `${theme.fontSizes[1]}px`,\n color: theme.colors.textSecondary,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n display: '-webkit-box',\n WebkitLineClamp: 2,\n WebkitBoxOrient: 'vertical',\n }}\n >\n {repo.description}\n </p>\n )}\n\n {/* Stats row */}\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '16px',\n fontSize: `${theme.fontSizes[1]}px`,\n color: theme.colors.textSecondary,\n }}\n >\n {repo.language && (\n <span style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <span\n style={{\n width: 10,\n height: 10,\n borderRadius: '50%',\n backgroundColor: theme.colors.info,\n }}\n />\n {repo.language}\n </span>\n )}\n <span style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <Star size={14} />\n {formatNumber(repo.stargazers_count || 0)}\n </span>\n <span style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <GitFork size={14} />\n {formatNumber(repo.forks_count || 0)}\n </span>\n {repo.updated_at && (\n <span style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <Calendar size={14} />\n {formatRelativeTime(repo.updated_at)}\n </span>\n )}\n <a\n href={repo.html_url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onClick={(e) => e.stopPropagation()}\n style={{\n marginLeft: 'auto',\n color: theme.colors.textSecondary,\n display: 'flex',\n alignItems: 'center',\n }}\n >\n <ExternalLink size={14} />\n </a>\n </div>\n </button>\n ))}\n </div>\n )}\n\n {/* Filtered empty state */}\n {!isLoading && !error && repositories.length > 0 && sortedAndFilteredRepos.length === 0 && (\n <div\n style={{\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '32px',\n color: theme.colors.textSecondary,\n }}\n >\n <Filter size={48} color={theme.colors.border} style={{ marginBottom: 16 }} />\n <p style={{ margin: 0 }}>No repositories match the current filter</p>\n <button\n onClick={() => setLanguageFilter(null)}\n style={{\n marginTop: '12px',\n padding: '8px 16px',\n borderRadius: '6px',\n border: `1px solid ${theme.colors.border}`,\n background: 'transparent',\n color: theme.colors.text,\n cursor: 'pointer',\n }}\n >\n Clear filter\n </button>\n </div>\n )}\n\n {/* CSS for spinner animation */}\n <style>{`\n @keyframes spin {\n to { transform: rotate(360deg); }\n }\n `}</style>\n </div>\n );\n};\n\n/**\n * OwnerRepositoriesPanel - A panel for browsing a GitHub user or organization's repositories\n *\n * Features:\n * - Shows all public repositories for a user/org\n * - Displays owner info (avatar, bio, repo count)\n * - Sort by updated, stars, or name\n * - Filter by programming language\n * - Click to preview README, double-click to open\n */\nexport const OwnerRepositoriesPanel: React.FC<PanelComponentProps & { owner?: string }> = (props) => {\n return (\n <ThemeProvider>\n <OwnerRepositoriesPanelContent {...props} />\n </ThemeProvider>\n );\n};\n\n/**\n * Panel metadata for registration\n */\nexport const OwnerRepositoriesPanelMetadata = {\n id: 'owner-repositories',\n name: 'Owner Repositories',\n description: 'Browse repositories for a GitHub user or organization',\n icon: 'github',\n version: '0.1.0',\n slices: [],\n surfaces: ['panel'],\n};\n","import React, { useState, useEffect, useCallback } from 'react';\nimport { ThemeProvider, useTheme } from '@principal-ade/industry-theme';\nimport {\n History,\n Star,\n GitFork,\n ExternalLink,\n Calendar,\n Trash2,\n X,\n Github,\n Building2,\n User,\n BookOpen,\n} from 'lucide-react';\n\nimport type { PanelComponentProps } from '../types';\nimport type { GitHubRepository, RepositoryPreviewEventPayload } from '../types/github';\n\nconst STORAGE_KEY = 'recent-repositories';\nconst OWNERS_STORAGE_KEY = 'recent-owners';\nconst MAX_RECENT_ITEMS = 50;\n\n/**\n * A simplified repository record stored in localStorage\n */\ninterface RecentRepository {\n type: 'repository';\n id: number;\n name: string;\n full_name: string;\n owner: {\n login: string;\n avatar_url?: string;\n };\n description: string | null;\n language: string | null;\n html_url: string;\n stargazers_count?: number;\n forks_count?: number;\n visitedAt: number;\n}\n\n/**\n * A simplified owner record stored in localStorage\n */\ninterface RecentOwner {\n type: 'owner';\n id: number;\n login: string;\n avatar_url?: string;\n name?: string;\n bio?: string;\n ownerType: 'User' | 'Organization';\n public_repos?: number;\n followers?: number;\n visitedAt: number;\n}\n\ntype RecentItem = RecentRepository | RecentOwner;\n\n/**\n * Load recent repositories from localStorage\n */\nfunction loadRecentRepositories(): RecentRepository[] {\n try {\n const stored = localStorage.getItem(STORAGE_KEY);\n if (stored) {\n const items = JSON.parse(stored);\n // Add type field if missing (migration from old format)\n return items.map((item: RecentRepository) => ({ ...item, type: 'repository' as const }));\n }\n } catch (err) {\n console.error('Failed to load recent repositories:', err);\n }\n return [];\n}\n\n/**\n * Load recent owners from localStorage\n */\nfunction loadRecentOwners(): RecentOwner[] {\n try {\n const stored = localStorage.getItem(OWNERS_STORAGE_KEY);\n if (stored) {\n return JSON.parse(stored);\n }\n } catch (err) {\n console.error('Failed to load recent owners:', err);\n }\n return [];\n}\n\n/**\n * Save recent repositories to localStorage\n */\nfunction saveRecentRepositories(repos: RecentRepository[]): void {\n try {\n localStorage.setItem(STORAGE_KEY, JSON.stringify(repos));\n } catch (err) {\n console.error('Failed to save recent repositories:', err);\n }\n}\n\n/**\n * Save recent owners to localStorage\n */\nfunction saveRecentOwners(owners: RecentOwner[]): void {\n try {\n localStorage.setItem(OWNERS_STORAGE_KEY, JSON.stringify(owners));\n } catch (err) {\n console.error('Failed to save recent owners:', err);\n }\n}\n\n/**\n * Add a repository to the recent list\n */\nexport function addRecentRepository(repo: GitHubRepository): void {\n const recent = loadRecentRepositories();\n\n // Remove if already exists\n const filtered = recent.filter(r => r.id !== repo.id);\n\n // Add to front with current timestamp\n const newEntry: RecentRepository = {\n type: 'repository',\n id: repo.id,\n name: repo.name,\n full_name: repo.full_name,\n owner: {\n login: repo.owner.login,\n avatar_url: repo.owner.avatar_url,\n },\n description: repo.description,\n language: repo.language,\n html_url: repo.html_url,\n stargazers_count: repo.stargazers_count,\n forks_count: repo.forks_count,\n visitedAt: Date.now(),\n };\n\n // Keep only MAX_RECENT_ITEMS\n const updated = [newEntry, ...filtered].slice(0, MAX_RECENT_ITEMS);\n saveRecentRepositories(updated);\n\n // Dispatch event so panels can update\n window.dispatchEvent(new CustomEvent('recent-items-updated'));\n}\n\n/**\n * Owner info structure for addRecentOwner\n */\nexport interface OwnerInfo {\n id: number;\n login: string;\n avatar_url?: string;\n name?: string;\n bio?: string;\n type: 'User' | 'Organization';\n public_repos?: number;\n followers?: number;\n}\n\n/**\n * Add an owner to the recent list\n */\nexport function addRecentOwner(owner: OwnerInfo): void {\n const recent = loadRecentOwners();\n\n // Remove if already exists\n const filtered = recent.filter(o => o.id !== owner.id);\n\n // Add to front with current timestamp\n const newEntry: RecentOwner = {\n type: 'owner',\n id: owner.id,\n login: owner.login,\n avatar_url: owner.avatar_url,\n name: owner.name,\n bio: owner.bio,\n ownerType: owner.type,\n public_repos: owner.public_repos,\n followers: owner.followers,\n visitedAt: Date.now(),\n };\n\n // Keep only MAX_RECENT_ITEMS\n const updated = [newEntry, ...filtered].slice(0, MAX_RECENT_ITEMS);\n saveRecentOwners(updated);\n\n // Dispatch event so panels can update\n window.dispatchEvent(new CustomEvent('recent-items-updated'));\n}\n\n/**\n * RecentRepositoriesPanelContent - Internal component that uses theme\n */\nconst RecentRepositoriesPanelContent: React.FC<PanelComponentProps & {\n onNavigate?: (path: string) => void;\n}> = ({\n events,\n onNavigate,\n}) => {\n const { theme } = useTheme();\n const [items, setItems] = useState<RecentItem[]>([]);\n const [selectedId, setSelectedId] = useState<string | null>(null);\n const [hoveredId, setHoveredId] = useState<string | null>(null);\n const [filter, setFilter] = useState<'all' | 'repos' | 'owners'>('all');\n\n // Create unique ID for an item\n const getItemId = (item: RecentItem): string => {\n return item.type === 'repository' ? `repo-${item.id}` : `owner-${item.id}`;\n };\n\n // Load and merge items on mount\n useEffect(() => {\n const loadItems = () => {\n const repos = loadRecentRepositories();\n const owners = loadRecentOwners();\n\n // Merge and sort by visitedAt\n const merged: RecentItem[] = [...repos, ...owners].sort(\n (a, b) => b.visitedAt - a.visitedAt\n );\n setItems(merged);\n };\n\n loadItems();\n\n // Listen for updates\n const handleUpdate = () => loadItems();\n window.addEventListener('recent-items-updated', handleUpdate);\n // Legacy event for backward compatibility\n window.addEventListener('recent-repositories-updated', handleUpdate);\n\n return () => {\n window.removeEventListener('recent-items-updated', handleUpdate);\n window.removeEventListener('recent-repositories-updated', handleUpdate);\n };\n }, []);\n\n // Filtered items\n const filteredItems = items.filter(item => {\n if (filter === 'all') return true;\n if (filter === 'repos') return item.type === 'repository';\n if (filter === 'owners') return item.type === 'owner';\n return true;\n });\n\n // Format relative time\n const formatRelativeTime = (timestamp: number): string => {\n const now = Date.now();\n const diffMs = now - timestamp;\n const diffMins = Math.floor(diffMs / (1000 * 60));\n const diffHours = Math.floor(diffMs / (1000 * 60 * 60));\n const diffDays = Math.floor(diffMs / (1000 * 60 * 60 * 24));\n\n if (diffMins < 1) return 'just now';\n if (diffMins < 60) return `${diffMins}m ago`;\n if (diffHours < 24) return `${diffHours}h ago`;\n if (diffDays === 1) return 'yesterday';\n if (diffDays < 7) return `${diffDays}d ago`;\n if (diffDays < 30) return `${Math.floor(diffDays / 7)}w ago`;\n return `${Math.floor(diffDays / 30)}mo ago`;\n };\n\n // Format number with K/M suffix\n const formatNumber = (num: number): string => {\n if (num >= 1000000) return `${(num / 1000000).toFixed(1)}M`;\n if (num >= 1000) return `${(num / 1000).toFixed(1)}K`;\n return num.toString();\n };\n\n // Handle repository click\n const handleSelectRepository = useCallback((repo: RecentRepository) => {\n setSelectedId(getItemId(repo));\n\n const githubRepo: GitHubRepository = {\n id: repo.id,\n name: repo.name,\n full_name: repo.full_name,\n owner: {\n login: repo.owner.login,\n avatar_url: repo.owner.avatar_url,\n },\n private: false,\n html_url: repo.html_url,\n description: repo.description,\n fork: false,\n clone_url: `https://github.com/${repo.full_name}.git`,\n language: repo.language,\n default_branch: 'main',\n stargazers_count: repo.stargazers_count,\n forks_count: repo.forks_count,\n };\n\n events.emit<RepositoryPreviewEventPayload>({\n type: 'repository:preview',\n source: 'recent-repositories-panel',\n timestamp: Date.now(),\n payload: {\n repository: githubRepo,\n source: 'click',\n },\n });\n }, [events]);\n\n // Handle repository double-click (open)\n const handleOpenRepository = useCallback((repo: RecentRepository) => {\n if (onNavigate) {\n onNavigate(`/${repo.full_name}`);\n } else {\n const githubRepo: GitHubRepository = {\n id: repo.id,\n name: repo.name,\n full_name: repo.full_name,\n owner: {\n login: repo.owner.login,\n avatar_url: repo.owner.avatar_url,\n },\n private: false,\n html_url: repo.html_url,\n description: repo.description,\n fork: false,\n clone_url: `https://github.com/${repo.full_name}.git`,\n language: repo.language,\n default_branch: 'main',\n stargazers_count: repo.stargazers_count,\n forks_count: repo.forks_count,\n };\n\n events.emit({\n type: 'repository:selected',\n source: 'recent-repositories-panel',\n timestamp: Date.now(),\n payload: {\n repository: githubRepo,\n source: 'click',\n },\n });\n }\n }, [events, onNavigate]);\n\n // Handle owner click\n const handleSelectOwner = useCallback((owner: RecentOwner) => {\n setSelectedId(getItemId(owner));\n\n events.emit({\n type: 'owner:preview',\n source: 'recent-repositories-panel',\n timestamp: Date.now(),\n payload: { owner },\n });\n }, [events]);\n\n // Handle owner double-click (open)\n const handleOpenOwner = useCallback((owner: RecentOwner) => {\n if (onNavigate) {\n onNavigate(`/${owner.login}`);\n } else {\n events.emit({\n type: 'owner:selected',\n source: 'recent-repositories-panel',\n timestamp: Date.now(),\n payload: { owner },\n });\n }\n }, [events, onNavigate]);\n\n // Remove a single item\n const handleRemoveItem = useCallback((item: RecentItem, e: React.MouseEvent) => {\n e.stopPropagation();\n\n if (item.type === 'repository') {\n const repos = loadRecentRepositories().filter(r => r.id !== item.id);\n saveRecentRepositories(repos);\n } else {\n const owners = loadRecentOwners().filter(o => o.id !== item.id);\n saveRecentOwners(owners);\n }\n\n setItems(prev => prev.filter(i => getItemId(i) !== getItemId(item)));\n\n if (selectedId === getItemId(item)) {\n setSelectedId(null);\n }\n }, [selectedId]);\n\n // Clear all history\n const handleClearAll = useCallback(() => {\n if (filter === 'all' || filter === 'repos') {\n saveRecentRepositories([]);\n }\n if (filter === 'all' || filter === 'owners') {\n saveRecentOwners([]);\n }\n\n if (filter === 'all') {\n setItems([]);\n } else {\n setItems(prev => prev.filter(item =>\n filter === 'repos' ? item.type !== 'repository' : item.type !== 'owner'\n ));\n }\n setSelectedId(null);\n }, [filter]);\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 }}\n >\n {/* Header */}\n <div\n style={{\n padding: '16px',\n borderBottom: `1px solid ${theme.colors.border}`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n }}\n >\n <div style={{ display: 'flex', alignItems: 'center', gap: '12px' }}>\n <History size={24} color={theme.colors.primary} />\n <h2\n style={{\n margin: 0,\n fontSize: `${theme.fontSizes[3]}px`,\n fontWeight: theme.fontWeights.semibold,\n }}\n >\n Recent\n </h2>\n </div>\n {items.length > 0 && (\n <button\n onClick={handleClearAll}\n style={{\n padding: '6px 12px',\n borderRadius: '6px',\n border: `1px solid ${theme.colors.border}`,\n background: 'transparent',\n cursor: 'pointer',\n color: theme.colors.textSecondary,\n fontSize: `${theme.fontSizes[1]}px`,\n display: 'flex',\n alignItems: 'center',\n gap: '6px',\n }}\n title=\"Clear history\"\n >\n <Trash2 size={14} />\n Clear\n </button>\n )}\n </div>\n\n {/* Filter tabs */}\n {items.length > 0 && (\n <div\n style={{\n padding: '8px 16px',\n borderBottom: `1px solid ${theme.colors.border}`,\n display: 'flex',\n gap: '4px',\n }}\n >\n {[\n { key: 'all', label: 'All' },\n { key: 'repos', label: 'Repositories' },\n { key: 'owners', label: 'Owners' },\n ].map(({ key, label }) => (\n <button\n key={key}\n onClick={() => setFilter(key as typeof filter)}\n style={{\n padding: '6px 12px',\n borderRadius: '6px',\n border: 'none',\n background: filter === key ? theme.colors.primary : theme.colors.backgroundSecondary,\n color: filter === key ? '#fff' : theme.colors.text,\n fontSize: `${theme.fontSizes[1]}px`,\n cursor: 'pointer',\n fontWeight: filter === key ? theme.fontWeights.semibold : theme.fontWeights.body,\n }}\n >\n {label}\n </button>\n ))}\n </div>\n )}\n\n {/* Empty State */}\n {filteredItems.length === 0 && (\n <div\n style={{\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '32px',\n color: theme.colors.textSecondary,\n }}\n >\n <Github size={48} color={theme.colors.border} style={{ marginBottom: 16 }} />\n <p style={{ margin: 0, fontSize: `${theme.fontSizes[2]}px` }}>\n {items.length === 0 ? 'No recent activity' : 'No items match filter'}\n </p>\n <p style={{ margin: '8px 0 0', fontSize: `${theme.fontSizes[1]}px` }}>\n {items.length === 0\n ? 'Repositories and owners you visit will appear here'\n : 'Try a different filter'}\n </p>\n </div>\n )}\n\n {/* Items List */}\n {filteredItems.length > 0 && (\n <div\n style={{\n flex: 1,\n overflowY: 'auto',\n padding: '8px',\n }}\n >\n {filteredItems.map((item) => {\n const itemId = getItemId(item);\n const isSelected = selectedId === itemId;\n const isHovered = hoveredId === itemId;\n\n if (item.type === 'repository') {\n return (\n <button\n key={itemId}\n type=\"button\"\n onClick={() => handleSelectRepository(item)}\n onDoubleClick={() => handleOpenRepository(item)}\n onMouseEnter={() => setHoveredId(itemId)}\n onMouseLeave={() => setHoveredId(null)}\n style={{\n width: '100%',\n padding: '12px',\n margin: '4px 0',\n borderRadius: '8px',\n border: isSelected\n ? `2px solid ${theme.colors.primary}`\n : `1px solid ${theme.colors.border}`,\n backgroundColor: isSelected\n ? `${theme.colors.primary}10`\n : theme.colors.surface,\n cursor: 'pointer',\n textAlign: 'left',\n display: 'flex',\n flexDirection: 'column',\n gap: '8px',\n transition: 'all 0.15s ease',\n position: 'relative',\n }}\n >\n {isHovered && (\n <button\n onClick={(e) => handleRemoveItem(item, e)}\n style={{\n position: 'absolute',\n top: '8px',\n right: '8px',\n padding: '4px',\n borderRadius: '4px',\n border: 'none',\n background: theme.colors.backgroundSecondary,\n cursor: 'pointer',\n color: theme.colors.textSecondary,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n title=\"Remove from history\"\n >\n <X size={14} />\n </button>\n )}\n\n <div style={{ display: 'flex', alignItems: 'center', gap: '10px' }}>\n <BookOpen size={16} color={theme.colors.textSecondary} />\n {item.owner.avatar_url && (\n <img\n src={item.owner.avatar_url}\n alt={item.owner.login}\n style={{\n width: 24,\n height: 24,\n borderRadius: '50%',\n border: `1px solid ${theme.colors.border}`,\n }}\n />\n )}\n <div style={{ display: 'flex', flexDirection: 'column', minWidth: 0 }}>\n <span\n style={{\n fontSize: `${theme.fontSizes[1]}px`,\n color: theme.colors.textSecondary,\n }}\n >\n {item.owner.login}\n </span>\n <span\n style={{\n fontSize: `${theme.fontSizes[2]}px`,\n fontWeight: theme.fontWeights.semibold,\n color: theme.colors.primary,\n }}\n >\n {item.name}\n </span>\n </div>\n </div>\n\n {item.description && (\n <p\n style={{\n margin: 0,\n fontSize: `${theme.fontSizes[1]}px`,\n color: theme.colors.textSecondary,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n display: '-webkit-box',\n WebkitLineClamp: 2,\n WebkitBoxOrient: 'vertical',\n }}\n >\n {item.description}\n </p>\n )}\n\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '16px',\n fontSize: `${theme.fontSizes[1]}px`,\n color: theme.colors.textSecondary,\n }}\n >\n {item.language && (\n <span style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <span\n style={{\n width: 10,\n height: 10,\n borderRadius: '50%',\n backgroundColor: theme.colors.info,\n }}\n />\n {item.language}\n </span>\n )}\n {item.stargazers_count !== undefined && (\n <span style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <Star size={14} />\n {formatNumber(item.stargazers_count)}\n </span>\n )}\n {item.forks_count !== undefined && (\n <span style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <GitFork size={14} />\n {formatNumber(item.forks_count)}\n </span>\n )}\n <span style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <Calendar size={14} />\n {formatRelativeTime(item.visitedAt)}\n </span>\n <a\n href={item.html_url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onClick={(e) => e.stopPropagation()}\n style={{\n marginLeft: 'auto',\n color: theme.colors.textSecondary,\n display: 'flex',\n alignItems: 'center',\n }}\n >\n <ExternalLink size={14} />\n </a>\n </div>\n </button>\n );\n }\n\n // Owner item\n return (\n <button\n key={itemId}\n type=\"button\"\n onClick={() => handleSelectOwner(item)}\n onDoubleClick={() => handleOpenOwner(item)}\n onMouseEnter={() => setHoveredId(itemId)}\n onMouseLeave={() => setHoveredId(null)}\n style={{\n width: '100%',\n padding: '12px',\n margin: '4px 0',\n borderRadius: '8px',\n border: isSelected\n ? `2px solid ${theme.colors.primary}`\n : `1px solid ${theme.colors.border}`,\n backgroundColor: isSelected\n ? `${theme.colors.primary}10`\n : theme.colors.surface,\n cursor: 'pointer',\n textAlign: 'left',\n display: 'flex',\n flexDirection: 'column',\n gap: '8px',\n transition: 'all 0.15s ease',\n position: 'relative',\n }}\n >\n {isHovered && (\n <button\n onClick={(e) => handleRemoveItem(item, e)}\n style={{\n position: 'absolute',\n top: '8px',\n right: '8px',\n padding: '4px',\n borderRadius: '4px',\n border: 'none',\n background: theme.colors.backgroundSecondary,\n cursor: 'pointer',\n color: theme.colors.textSecondary,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n title=\"Remove from history\"\n >\n <X size={14} />\n </button>\n )}\n\n <div style={{ display: 'flex', alignItems: 'center', gap: '10px' }}>\n {item.ownerType === 'Organization' ? (\n <Building2 size={16} color={theme.colors.textSecondary} />\n ) : (\n <User size={16} color={theme.colors.textSecondary} />\n )}\n {item.avatar_url && (\n <img\n src={item.avatar_url}\n alt={item.login}\n style={{\n width: 32,\n height: 32,\n borderRadius: item.ownerType === 'Organization' ? 8 : '50%',\n border: `1px solid ${theme.colors.border}`,\n }}\n />\n )}\n <div style={{ display: 'flex', flexDirection: 'column', minWidth: 0 }}>\n <span\n style={{\n fontSize: `${theme.fontSizes[2]}px`,\n fontWeight: theme.fontWeights.semibold,\n color: theme.colors.primary,\n }}\n >\n {item.name || item.login}\n </span>\n {item.name && (\n <span\n style={{\n fontSize: `${theme.fontSizes[1]}px`,\n color: theme.colors.textSecondary,\n }}\n >\n @{item.login}\n </span>\n )}\n </div>\n </div>\n\n {item.bio && (\n <p\n style={{\n margin: 0,\n fontSize: `${theme.fontSizes[1]}px`,\n color: theme.colors.textSecondary,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n display: '-webkit-box',\n WebkitLineClamp: 2,\n WebkitBoxOrient: 'vertical',\n }}\n >\n {item.bio}\n </p>\n )}\n\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '16px',\n fontSize: `${theme.fontSizes[1]}px`,\n color: theme.colors.textSecondary,\n }}\n >\n {item.public_repos !== undefined && (\n <span style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <BookOpen size={14} />\n {formatNumber(item.public_repos)} repos\n </span>\n )}\n {item.followers !== undefined && (\n <span style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <User size={14} />\n {formatNumber(item.followers)} followers\n </span>\n )}\n <span style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <Calendar size={14} />\n {formatRelativeTime(item.visitedAt)}\n </span>\n <a\n href={`https://github.com/${item.login}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onClick={(e) => e.stopPropagation()}\n style={{\n marginLeft: 'auto',\n color: theme.colors.textSecondary,\n display: 'flex',\n alignItems: 'center',\n }}\n >\n <ExternalLink size={14} />\n </a>\n </div>\n </button>\n );\n })}\n </div>\n )}\n </div>\n );\n};\n\n/**\n * RecentRepositoriesPanel - A panel for displaying recently visited repositories and owners\n *\n * Features:\n * - Persists visited repos and owners in localStorage\n * - Shows owner avatar, repo name, description\n * - Displays stars, forks, language, and last visited time\n * - Filter by repositories or owners\n * - Click to preview, double-click to open\n * - Remove individual items or clear all history\n */\nexport const RecentRepositoriesPanel: React.FC<PanelComponentProps & {\n onNavigate?: (path: string) => void;\n}> = (props) => {\n return (\n <ThemeProvider>\n <RecentRepositoriesPanelContent {...props} />\n </ThemeProvider>\n );\n};\n\n/**\n * Panel metadata for registration\n */\nexport const RecentRepositoriesPanelMetadata = {\n id: 'recent-repositories',\n name: 'Recent',\n description: 'View and navigate to recently visited repositories and owners',\n icon: 'history',\n version: '0.1.0',\n slices: [],\n surfaces: ['panel'],\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Logo = void 0;\nconst react_1 = __importDefault(require(\"react\"));\nconst Logo = ({ width = 150, height = 150, color = \"currentColor\", particleColor, opacity = 0.9, }) => {\n const finalParticleColor = particleColor || color;\n return (react_1.default.createElement(\"svg\", { width: width, height: height, viewBox: \"0 0 200 200\", xmlns: \"http://www.w3.org/2000/svg\", style: { opacity } },\n react_1.default.createElement(\"defs\", null,\n react_1.default.createElement(\"radialGradient\", { id: \"sphereGlow\", cx: \"50%\", cy: \"50%\", r: \"50%\" },\n react_1.default.createElement(\"stop\", { offset: \"0%\", style: { stopColor: color, stopOpacity: 0.3 } }),\n react_1.default.createElement(\"stop\", { offset: \"100%\", style: { stopColor: color, stopOpacity: 0 } })),\n react_1.default.createElement(\"radialGradient\", { id: \"centerPulse\", cx: \"50%\", cy: \"50%\", r: \"50%\" },\n react_1.default.createElement(\"stop\", { offset: \"0%\", style: { stopColor: color, stopOpacity: 0.8 } },\n react_1.default.createElement(\"animate\", { attributeName: \"stop-opacity\", values: \"0.8;0.3;0.8\", dur: \"2s\", repeatCount: \"indefinite\" })),\n react_1.default.createElement(\"stop\", { offset: \"100%\", style: { stopColor: color, stopOpacity: 0 } }))),\n react_1.default.createElement(\"circle\", { cx: \"100\", cy: \"100\", r: \"80\", fill: \"url(#sphereGlow)\", opacity: \"0.5\" }),\n react_1.default.createElement(\"circle\", { r: \"2.5\", fill: finalParticleColor, cx: \"167\", cy: \"100\", opacity: \"0\" },\n react_1.default.createElement(\"animateMotion\", { dur: \"8s\", repeatCount: \"indefinite\", begin: \"1s\", path: \"M 0,0 A 67,27 0 1,0 -134,0 A 67,27 0 1,0 0,0\" }),\n react_1.default.createElement(\"animate\", { attributeName: \"opacity\", values: \"0;1;0.5;0;0\", keyTimes: \"0;0.2;0.4;0.5;1\", dur: \"8s\", begin: \"1s\", repeatCount: \"indefinite\" })),\n react_1.default.createElement(\"circle\", { r: \"2.5\", fill: finalParticleColor, cx: \"167\", cy: \"100\", opacity: \"0\" },\n react_1.default.createElement(\"animateMotion\", { dur: \"8s\", repeatCount: \"indefinite\", begin: \"2s\", path: \"M 0,0 A 67,40 0 1,0 -134,0 A 67,40 0 1,0 0,0\" }),\n react_1.default.createElement(\"animate\", { attributeName: \"opacity\", values: \"0;1;0.5;0;0\", keyTimes: \"0;0.2;0.4;0.5;1\", dur: \"8s\", begin: \"2s\", repeatCount: \"indefinite\" })),\n react_1.default.createElement(\"circle\", { r: \"2.5\", fill: finalParticleColor, cx: \"167\", cy: \"100\", opacity: \"0\" },\n react_1.default.createElement(\"animateMotion\", { dur: \"8s\", repeatCount: \"indefinite\", begin: \"3s\", path: \"M 0,0 A 67,53 0 1,0 -134,0 A 67,53 0 1,0 0,0\" }),\n react_1.default.createElement(\"animate\", { attributeName: \"opacity\", values: \"0;1;0.5;0;0\", keyTimes: \"0;0.2;0.4;0.5;1\", dur: \"8s\", begin: \"3s\", repeatCount: \"indefinite\" })),\n react_1.default.createElement(\"circle\", { r: \"2.5\", fill: finalParticleColor, cx: \"100\", cy: \"167\", opacity: \"0\" },\n react_1.default.createElement(\"animateMotion\", { dur: \"8s\", repeatCount: \"indefinite\", begin: \"1.5s\", path: \"M 0,0 A 27,67 0 1,0 0,-134 A 27,67 0 1,0 0,0\" }),\n react_1.default.createElement(\"animate\", { attributeName: \"opacity\", values: \"0;1;0.5;0;0\", keyTimes: \"0;0.2;0.4;0.5;1\", dur: \"8s\", begin: \"1.5s\", repeatCount: \"indefinite\" })),\n react_1.default.createElement(\"circle\", { r: \"2.5\", fill: finalParticleColor, cx: \"100\", cy: \"167\", opacity: \"0\" },\n react_1.default.createElement(\"animateMotion\", { dur: \"8s\", repeatCount: \"indefinite\", begin: \"2.5s\", path: \"M 0,0 A 40,67 0 1,0 0,-134 A 40,67 0 1,0 0,0\" }),\n react_1.default.createElement(\"animate\", { attributeName: \"opacity\", values: \"0;1;0.5;0;0\", keyTimes: \"0;0.2;0.4;0.5;1\", dur: \"8s\", begin: \"2.5s\", repeatCount: \"indefinite\" })),\n react_1.default.createElement(\"circle\", { r: \"2.5\", fill: finalParticleColor, cx: \"100\", cy: \"167\", opacity: \"0\" },\n react_1.default.createElement(\"animateMotion\", { dur: \"8s\", repeatCount: \"indefinite\", begin: \"3.5s\", path: \"M 0,0 A 53,67 0 1,0 0,-134 A 53,67 0 1,0 0,0\" }),\n react_1.default.createElement(\"animate\", { attributeName: \"opacity\", values: \"0;1;0.5;0;0\", keyTimes: \"0;0.2;0.4;0.5;1\", dur: \"8s\", begin: \"3.5s\", repeatCount: \"indefinite\" })),\n react_1.default.createElement(\"circle\", { cx: \"93\", cy: \"85\", r: \"2\", fill: finalParticleColor, opacity: \"0.9\" }),\n react_1.default.createElement(\"circle\", { cx: \"93\", cy: \"90\", r: \"2\", fill: finalParticleColor, opacity: \"0.9\" }),\n react_1.default.createElement(\"circle\", { cx: \"93\", cy: \"95\", r: \"2\", fill: finalParticleColor, opacity: \"0.9\" }),\n react_1.default.createElement(\"circle\", { cx: \"93\", cy: \"100\", r: \"2\", fill: finalParticleColor, opacity: \"0.9\" }),\n react_1.default.createElement(\"circle\", { cx: \"93\", cy: \"105\", r: \"2\", fill: finalParticleColor, opacity: \"0.9\" }),\n react_1.default.createElement(\"circle\", { cx: \"93\", cy: \"110\", r: \"2\", fill: finalParticleColor, opacity: \"0.9\" }),\n react_1.default.createElement(\"circle\", { cx: \"93\", cy: \"115\", r: \"2\", fill: finalParticleColor, opacity: \"0.9\" }),\n react_1.default.createElement(\"circle\", { cx: \"98\", cy: \"85\", r: \"2\", fill: finalParticleColor, opacity: \"0.9\" }),\n react_1.default.createElement(\"circle\", { cx: \"103\", cy: \"85\", r: \"2\", fill: finalParticleColor, opacity: \"0.9\" }),\n react_1.default.createElement(\"circle\", { cx: \"108\", cy: \"90\", r: \"2\", fill: finalParticleColor, opacity: \"0.9\" }),\n react_1.default.createElement(\"circle\", { cx: \"108\", cy: \"95\", r: \"2\", fill: finalParticleColor, opacity: \"0.9\" }),\n react_1.default.createElement(\"circle\", { cx: \"103\", cy: \"100\", r: \"2\", fill: finalParticleColor, opacity: \"0.9\" }),\n react_1.default.createElement(\"circle\", { cx: \"98\", cy: \"100\", r: \"2\", fill: finalParticleColor, opacity: \"0.9\" }),\n react_1.default.createElement(\"circle\", { cx: \"100\", cy: \"100\", r: \"67\", fill: \"none\", stroke: color, strokeWidth: \"1.5\", opacity: \"0.9\" }),\n react_1.default.createElement(\"path\", { d: \"M 33,100 A 67,13 0 0,1 73,88.1\", fill: \"none\", stroke: color, strokeWidth: \"1\", opacity: \"0.7\" }),\n react_1.default.createElement(\"path\", { d: \"M 127,88.1 A 67,13 0 0,1 167,100\", fill: \"none\", stroke: color, strokeWidth: \"1\", opacity: \"0.7\" }),\n react_1.default.createElement(\"path\", { d: \"M 33,100 A 67,13 0 0,0 73,111.9\", fill: \"none\", stroke: color, strokeWidth: \"1\", opacity: \"0.7\" }),\n react_1.default.createElement(\"path\", { d: \"M 127,111.9 A 67,13 0 0,0 167,100\", fill: \"none\", stroke: color, strokeWidth: \"1\", opacity: \"0.7\" }),\n react_1.default.createElement(\"ellipse\", { cx: \"100\", cy: \"100\", rx: \"67\", ry: \"27\", fill: \"none\", stroke: color, strokeWidth: \"1\", opacity: \"0.7\" }),\n react_1.default.createElement(\"ellipse\", { cx: \"100\", cy: \"100\", rx: \"67\", ry: \"40\", fill: \"none\", stroke: color, strokeWidth: \"1\", opacity: \"0.7\" }),\n react_1.default.createElement(\"ellipse\", { cx: \"100\", cy: \"100\", rx: \"67\", ry: \"53\", fill: \"none\", stroke: color, strokeWidth: \"1\", opacity: \"0.7\" }),\n react_1.default.createElement(\"path\", { d: \"M 100,33 A 13,67 0 0,0 87,73\", fill: \"none\", stroke: color, strokeWidth: \"1\", opacity: \"0.7\" }),\n react_1.default.createElement(\"path\", { d: \"M 113,73 A 13,67 0 0,0 100,33\", fill: \"none\", stroke: color, strokeWidth: \"1\", opacity: \"0.7\" }),\n react_1.default.createElement(\"path\", { d: \"M 100,167 A 13,67 0 0,1 87,127\", fill: \"none\", stroke: color, strokeWidth: \"1\", opacity: \"0.7\" }),\n react_1.default.createElement(\"path\", { d: \"M 113,127 A 13,67 0 0,1 100,167\", fill: \"none\", stroke: color, strokeWidth: \"1\", opacity: \"0.7\" }),\n react_1.default.createElement(\"ellipse\", { cx: \"100\", cy: \"100\", rx: \"27\", ry: \"67\", fill: \"none\", stroke: color, strokeWidth: \"1\", opacity: \"0.7\" }),\n react_1.default.createElement(\"ellipse\", { cx: \"100\", cy: \"100\", rx: \"40\", ry: \"67\", fill: \"none\", stroke: color, strokeWidth: \"1\", opacity: \"0.7\" }),\n react_1.default.createElement(\"ellipse\", { cx: \"100\", cy: \"100\", rx: \"53\", ry: \"67\", fill: \"none\", stroke: color, strokeWidth: \"1\", opacity: \"0.7\" }),\n react_1.default.createElement(\"ellipse\", { cx: \"100\", cy: \"100\", rx: \"67\", ry: \"33\", fill: \"none\", stroke: color, strokeWidth: \"1\", opacity: \"0.6\", transform: \"rotate(30 100 100)\" }),\n react_1.default.createElement(\"ellipse\", { cx: \"100\", cy: \"100\", rx: \"67\", ry: \"33\", fill: \"none\", stroke: color, strokeWidth: \"1\", opacity: \"0.6\", transform: \"rotate(60 100 100)\" }),\n react_1.default.createElement(\"ellipse\", { cx: \"100\", cy: \"100\", rx: \"67\", ry: \"33\", fill: \"none\", stroke: color, strokeWidth: \"1\", opacity: \"0.6\", transform: \"rotate(120 100 100)\" }),\n react_1.default.createElement(\"ellipse\", { cx: \"100\", cy: \"100\", rx: \"67\", ry: \"33\", fill: \"none\", stroke: color, strokeWidth: \"1\", opacity: \"0.6\", transform: \"rotate(150 100 100)\" }),\n react_1.default.createElement(\"line\", { x1: \"33\", y1: \"100\", x2: \"73\", y2: \"100\", stroke: color, strokeWidth: \"1.5\", opacity: \"0.8\" }),\n react_1.default.createElement(\"line\", { x1: \"127\", y1: \"100\", x2: \"167\", y2: \"100\", stroke: color, strokeWidth: \"1.5\", opacity: \"0.8\" }),\n react_1.default.createElement(\"line\", { x1: \"100\", y1: \"33\", x2: \"100\", y2: \"73\", stroke: color, strokeWidth: \"1.5\", opacity: \"0.8\" }),\n react_1.default.createElement(\"line\", { x1: \"100\", y1: \"127\", x2: \"100\", y2: \"167\", stroke: color, strokeWidth: \"1.5\", opacity: \"0.8\" }),\n react_1.default.createElement(\"circle\", { r: \"2.5\", fill: finalParticleColor, cx: \"167\", cy: \"100\", opacity: \"0\" },\n react_1.default.createElement(\"animateMotion\", { dur: \"8s\", repeatCount: \"indefinite\", begin: \"1s\", path: \"M 0,0 A 67,27 0 1,0 -134,0 A 67,27 0 1,0 0,0\" }),\n react_1.default.createElement(\"animate\", { attributeName: \"opacity\", values: \"0;0;0.5;1;1;0.5;0\", keyTimes: \"0;0.5;0.6;0.75;0.9;0.95;1\", dur: \"8s\", begin: \"1s\", repeatCount: \"indefinite\" })),\n react_1.default.createElement(\"circle\", { r: \"2.5\", fill: finalParticleColor, cx: \"167\", cy: \"100\", opacity: \"0\" },\n react_1.default.createElement(\"animateMotion\", { dur: \"8s\", repeatCount: \"indefinite\", begin: \"2s\", path: \"M 0,0 A 67,40 0 1,0 -134,0 A 67,40 0 1,0 0,0\" }),\n react_1.default.createElement(\"animate\", { attributeName: \"opacity\", values: \"0;0;0.5;1;1;0.5;0\", keyTimes: \"0;0.5;0.6;0.75;0.9;0.95;1\", dur: \"8s\", begin: \"2s\", repeatCount: \"indefinite\" })),\n react_1.default.createElement(\"circle\", { r: \"2.5\", fill: finalParticleColor, cx: \"167\", cy: \"100\", opacity: \"0\" },\n react_1.default.createElement(\"animateMotion\", { dur: \"8s\", repeatCount: \"indefinite\", begin: \"3s\", path: \"M 0,0 A 67,53 0 1,0 -134,0 A 67,53 0 1,0 0,0\" }),\n react_1.default.createElement(\"animate\", { attributeName: \"opacity\", values: \"0;0;0.5;1;1;0.5;0\", keyTimes: \"0;0.5;0.6;0.75;0.9;0.95;1\", dur: \"8s\", begin: \"3s\", repeatCount: \"indefinite\" })),\n react_1.default.createElement(\"circle\", { r: \"2.5\", fill: finalParticleColor, cx: \"100\", cy: \"167\", opacity: \"0\" },\n react_1.default.createElement(\"animateMotion\", { dur: \"8s\", repeatCount: \"indefinite\", begin: \"1.5s\", path: \"M 0,0 A 27,67 0 1,0 0,-134 A 27,67 0 1,0 0,0\" }),\n react_1.default.createElement(\"animate\", { attributeName: \"opacity\", values: \"0;0;0.5;1;1;0.5;0\", keyTimes: \"0;0.5;0.6;0.75;0.9;0.95;1\", dur: \"8s\", begin: \"1.5s\", repeatCount: \"indefinite\" })),\n react_1.default.createElement(\"circle\", { r: \"2.5\", fill: finalParticleColor, cx: \"100\", cy: \"167\", opacity: \"0\" },\n react_1.default.createElement(\"animateMotion\", { dur: \"8s\", repeatCount: \"indefinite\", begin: \"2.5s\", path: \"M 0,0 A 40,67 0 1,0 0,-134 A 40,67 0 1,0 0,0\" }),\n react_1.default.createElement(\"animate\", { attributeName: \"opacity\", values: \"0;0;0.5;1;1;0.5;0\", keyTimes: \"0;0.5;0.6;0.75;0.9;0.95;1\", dur: \"8s\", begin: \"2.5s\", repeatCount: \"indefinite\" })),\n react_1.default.createElement(\"circle\", { r: \"2.5\", fill: finalParticleColor, cx: \"100\", cy: \"167\", opacity: \"0\" },\n react_1.default.createElement(\"animateMotion\", { dur: \"8s\", repeatCount: \"indefinite\", begin: \"3.5s\", path: \"M 0,0 A 53,67 0 1,0 0,-134 A 53,67 0 1,0 0,0\" }),\n react_1.default.createElement(\"animate\", { attributeName: \"opacity\", values: \"0;0;0.5;1;1;0.5;0\", keyTimes: \"0;0.5;0.6;0.75;0.9;0.95;1\", dur: \"8s\", begin: \"3.5s\", repeatCount: \"indefinite\" }))));\n};\nexports.Logo = Logo;\n","import React, { useState, useCallback } from 'react';\nimport { ThemeProvider, useTheme } from '@principal-ade/industry-theme';\nimport { Logo } from '@principal-ai/logo-component';\nimport {\n GitBranch,\n MessageSquare,\n Network,\n ArrowRight,\n Github,\n} from 'lucide-react';\n\nimport type { PanelComponentProps } from '../types';\n\n/**\n * Parse a GitHub URL or owner/repo string\n */\nfunction parseGitHubInput(input: string): { owner: string; repo: string } | null {\n const trimmed = input.trim();\n\n // Try full URL: https://github.com/owner/repo\n const urlMatch = trimmed.match(/github\\.com\\/([^/]+)\\/([^/]+)/);\n if (urlMatch) {\n return { owner: urlMatch[1], repo: urlMatch[2].replace(/\\.git$/, '') };\n }\n\n // Try owner/repo format\n const shortMatch = trimmed.match(/^([^/]+)\\/([^/]+)$/);\n if (shortMatch) {\n return { owner: shortMatch[1], repo: shortMatch[2] };\n }\n\n return null;\n}\n\n/**\n * Feature card component\n */\nconst FeatureCard: React.FC<{\n icon: React.ReactNode;\n title: string;\n description: string;\n theme: ReturnType<typeof useTheme>['theme'];\n}> = ({ icon, title, description, theme }) => (\n <div\n style={{\n padding: '24px',\n borderRadius: '12px',\n backgroundColor: theme.colors.surface,\n border: `1px solid ${theme.colors.border}`,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: '12px',\n flex: 1,\n minWidth: '200px',\n textAlign: 'center',\n }}\n >\n <div\n style={{\n width: 48,\n height: 48,\n borderRadius: '10px',\n backgroundColor: `${theme.colors.primary}15`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: theme.colors.primary,\n }}\n >\n {icon}\n </div>\n <h3\n style={{\n margin: 0,\n fontSize: `${theme.fontSizes[3]}px`,\n fontWeight: theme.fontWeights.semibold,\n color: theme.colors.text,\n }}\n >\n {title}\n </h3>\n <p\n style={{\n margin: 0,\n fontSize: `${theme.fontSizes[2]}px`,\n color: theme.colors.textSecondary,\n lineHeight: 1.5,\n }}\n >\n {description}\n </p>\n </div>\n);\n\n/**\n * WelcomePanelContent - Internal component that uses theme\n */\nconst WelcomePanelContent: React.FC<PanelComponentProps & { onNavigate?: (owner: string, repo: string) => void }> = ({\n onNavigate,\n}) => {\n const { theme } = useTheme();\n const [repoInput, setRepoInput] = useState('');\n const [error, setError] = useState<string | null>(null);\n\n const handleSubmit = useCallback((e: React.FormEvent) => {\n e.preventDefault();\n setError(null);\n\n const parsed = parseGitHubInput(repoInput);\n if (!parsed) {\n setError('Enter a valid format: owner/repo or GitHub URL');\n return;\n }\n\n if (onNavigate) {\n onNavigate(parsed.owner, parsed.repo);\n } else {\n // Default: navigate via window.location\n window.location.href = `/${parsed.owner}/${parsed.repo}`;\n }\n }, [repoInput, onNavigate]);\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 overflowY: 'auto',\n }}\n >\n {/* Hero Section */}\n <div\n style={{\n padding: '48px 32px',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n textAlign: 'center',\n borderBottom: `1px solid ${theme.colors.border}`,\n }}\n >\n {/* Logo/Brand */}\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '16px',\n marginBottom: '24px',\n }}\n >\n <Logo\n width={56}\n height={56}\n color={theme.colors.primary}\n />\n <span\n style={{\n fontSize: `${theme.fontSizes[5]}px`,\n fontWeight: theme.fontWeights.bold,\n color: theme.colors.text,\n }}\n >\n Principal AI\n </span>\n <Logo\n width={56}\n height={56}\n color={theme.colors.primary}\n />\n </div>\n\n {/* Tagline */}\n <h1\n style={{\n margin: '0 0 16px',\n fontSize: `${theme.fontSizes[6] || 32}px`,\n fontWeight: theme.fontWeights.bold,\n color: theme.colors.text,\n }}\n >\n Explore software like never before\n </h1>\n\n {/* Search Input */}\n <form\n onSubmit={handleSubmit}\n style={{\n width: '100%',\n maxWidth: '500px',\n }}\n >\n <div\n style={{\n display: 'flex',\n gap: '8px',\n padding: '6px',\n borderRadius: '12px',\n backgroundColor: theme.colors.surface,\n border: `2px solid ${error ? theme.colors.error : theme.colors.border}`,\n }}\n >\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n paddingLeft: '12px',\n color: theme.colors.textSecondary,\n }}\n >\n <Github size={20} />\n </div>\n <input\n type=\"text\"\n value={repoInput}\n onChange={(e) => {\n setRepoInput(e.target.value);\n setError(null);\n }}\n placeholder=\"owner/repo or paste GitHub URL\"\n style={{\n flex: 1,\n padding: '12px 8px',\n border: 'none',\n background: 'transparent',\n color: theme.colors.text,\n fontSize: `${theme.fontSizes[2]}px`,\n outline: 'none',\n }}\n />\n <button\n type=\"submit\"\n style={{\n padding: '12px 20px',\n borderRadius: '8px',\n border: 'none',\n backgroundColor: theme.colors.primary,\n color: '#fff',\n fontSize: `${theme.fontSizes[2]}px`,\n fontWeight: theme.fontWeights.semibold,\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n }}\n >\n Explore\n <ArrowRight size={18} />\n </button>\n </div>\n {error && (\n <p\n style={{\n margin: '8px 0 0',\n fontSize: `${theme.fontSizes[1]}px`,\n color: theme.colors.error,\n }}\n >\n {error}\n </p>\n )}\n </form>\n </div>\n\n {/* Features Section */}\n <div\n style={{\n padding: '48px 32px',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n }}\n >\n <div\n style={{\n display: 'flex',\n gap: '20px',\n flexWrap: 'wrap',\n justifyContent: 'center',\n maxWidth: '900px',\n }}\n >\n <FeatureCard\n icon={<Network size={24} />}\n title=\"Interactive Diagrams\"\n description=\"Visualize repository structure, dependencies, and architecture with auto-generated diagrams you can explore.\"\n theme={theme}\n />\n <FeatureCard\n icon={<MessageSquare size={24} />}\n title=\"Chat with Code\"\n description=\"Ask questions about any repository and get instant, context-aware answers powered by AI.\"\n theme={theme}\n />\n <FeatureCard\n icon={<GitBranch size={24} />}\n title=\"Deep Git Insights\"\n description=\"Explore commits, branches, and history with visual timelines and contributor analytics.\"\n theme={theme}\n />\n </div>\n </div>\n\n {/* Quick Start Hint */}\n <div\n style={{\n padding: '24px 32px 48px',\n display: 'flex',\n justifyContent: 'center',\n }}\n >\n <p\n style={{\n margin: 0,\n fontSize: `${theme.fontSizes[1]}px`,\n color: theme.colors.textSecondary,\n }}\n >\n Try it with{' '}\n <button\n onClick={() => {\n if (onNavigate) {\n onNavigate('facebook', 'react');\n } else {\n window.location.href = '/facebook/react';\n }\n }}\n style={{\n background: 'none',\n border: 'none',\n color: theme.colors.primary,\n cursor: 'pointer',\n padding: 0,\n fontSize: 'inherit',\n fontWeight: theme.fontWeights.medium,\n textDecoration: 'underline',\n }}\n >\n facebook/react\n </button>\n {' '}or{' '}\n <button\n onClick={() => {\n if (onNavigate) {\n onNavigate('vercel', 'next.js');\n } else {\n window.location.href = '/vercel/next.js';\n }\n }}\n style={{\n background: 'none',\n border: 'none',\n color: theme.colors.primary,\n cursor: 'pointer',\n padding: 0,\n fontSize: 'inherit',\n fontWeight: theme.fontWeights.medium,\n textDecoration: 'underline',\n }}\n >\n vercel/next.js\n </button>\n </p>\n </div>\n </div>\n );\n};\n\n/**\n * WelcomePanel - A landing panel with branding and repo search\n *\n * Features:\n * - Brand introduction with tagline\n * - Search input for owner/repo or GitHub URLs\n * - Feature highlights (diagrams, chat, git insights)\n * - Quick start links to popular repos\n */\nexport const WelcomePanel: React.FC<PanelComponentProps & { onNavigate?: (owner: string, repo: string) => void }> = (props) => {\n return (\n <ThemeProvider>\n <WelcomePanelContent {...props} />\n </ThemeProvider>\n );\n};\n\n/**\n * Panel metadata for registration\n */\nexport const WelcomePanelMetadata = {\n id: 'welcome',\n name: 'Welcome',\n description: 'Landing page with branding and repository search',\n icon: 'home',\n version: '0.1.0',\n slices: [],\n surfaces: ['panel'],\n};\n","/**\n * GitHub Panel Tools\n *\n * UTCP-compatible tools for GitHub repository operations.\n * These tools emit events that the GitHub panels listen for.\n */\n\nimport type { PanelTool, PanelToolsMetadata } from '@principal-ade/utcp-panel-event';\n\n/**\n * Tool: List Repositories\n *\n * Triggers a refresh of the user's GitHub repositories.\n * The panel will emit repository data when available.\n */\nexport const listRepositoriesTool: PanelTool = {\n name: 'list_repositories',\n description: 'Get a list of GitHub repositories the user has access to, including owned repos, starred repos, and organization repos.',\n inputs: {\n type: 'object',\n properties: {},\n required: [],\n },\n outputs: {\n type: 'object',\n properties: {\n success: { type: 'boolean' },\n },\n },\n tags: ['github', 'repository', 'list', 'browse'],\n tool_call_template: {\n call_template_type: 'panel_event',\n event_type: 'github:list-repositories',\n },\n};\n\n/**\n * Tool: Select Repository\n *\n * Select a repository to view its details and README.\n */\nexport const selectRepositoryTool: PanelTool = {\n name: 'select_repository',\n description: 'Select a GitHub repository to view its details, README, and files. Use the full repository name in \"owner/repo\" format.',\n inputs: {\n type: 'object',\n properties: {\n repository: {\n type: 'string',\n description: 'The full repository name in \"owner/repo\" format (e.g., \"facebook/react\")',\n },\n },\n required: ['repository'],\n },\n outputs: {\n type: 'object',\n properties: {\n success: { type: 'boolean' },\n repository: { type: 'string' },\n },\n },\n tags: ['github', 'repository', 'select', 'navigate'],\n tool_call_template: {\n call_template_type: 'panel_event',\n event_type: 'repository:selected',\n },\n};\n\n/**\n * Tool: Preview Repository\n *\n * Preview a repository's README without fully selecting it.\n */\nexport const previewRepositoryTool: PanelTool = {\n name: 'preview_repository',\n description: 'Preview a GitHub repository\\'s README in the viewer without navigating to it.',\n inputs: {\n type: 'object',\n properties: {\n repository: {\n type: 'string',\n description: 'The full repository name in \"owner/repo\" format (e.g., \"facebook/react\")',\n },\n },\n required: ['repository'],\n },\n outputs: {\n type: 'object',\n properties: {\n success: { type: 'boolean' },\n },\n },\n tags: ['github', 'repository', 'preview', 'readme'],\n tool_call_template: {\n call_template_type: 'panel_event',\n event_type: 'repository:preview',\n },\n};\n\n/**\n * Tool: Search Repositories\n *\n * Search through the user's repositories.\n */\nexport const searchRepositoriesTool: PanelTool = {\n name: 'search_repositories',\n description: 'Search through the user\\'s GitHub repositories by name, description, or language.',\n inputs: {\n type: 'object',\n properties: {\n query: {\n type: 'string',\n description: 'The search query to filter repositories',\n },\n },\n required: ['query'],\n },\n outputs: {\n type: 'object',\n properties: {\n success: { type: 'boolean' },\n },\n },\n tags: ['github', 'repository', 'search', 'filter'],\n tool_call_template: {\n call_template_type: 'panel_event',\n event_type: 'github:search-repositories',\n },\n};\n\n/**\n * Tool: Open Repository Switcher\n *\n * Open the repository switcher modal.\n */\nexport const openRepositorySwitcherTool: PanelTool = {\n name: 'open_repository_switcher',\n description: 'Open the repository switcher modal to browse and select a different repository.',\n inputs: {\n type: 'object',\n properties: {},\n required: [],\n },\n outputs: {\n type: 'object',\n properties: {\n success: { type: 'boolean' },\n },\n },\n tags: ['github', 'repository', 'switch', 'modal'],\n tool_call_template: {\n call_template_type: 'panel_event',\n event_type: 'repository:open-switcher',\n },\n};\n\n/**\n * Tool: Request GitHub Login\n *\n * Prompt the user to sign in to GitHub.\n */\nexport const requestGitHubLoginTool: PanelTool = {\n name: 'request_github_login',\n description: 'Prompt the user to sign in to their GitHub account to access repositories.',\n inputs: {\n type: 'object',\n properties: {},\n required: [],\n },\n outputs: {\n type: 'object',\n properties: {\n success: { type: 'boolean' },\n },\n },\n tags: ['github', 'auth', 'login', 'sign-in'],\n tool_call_template: {\n call_template_type: 'panel_event',\n event_type: 'github:login-requested',\n },\n};\n\n/**\n * All GitHub tools exported as an array.\n */\nexport const githubTools: PanelTool[] = [\n listRepositoriesTool,\n selectRepositoryTool,\n previewRepositoryTool,\n searchRepositoriesTool,\n openRepositorySwitcherTool,\n requestGitHubLoginTool,\n];\n\n/**\n * GitHub tools metadata for registration.\n */\nexport const githubToolsMetadata: PanelToolsMetadata = {\n id: 'github-panels',\n name: 'GitHub Panels',\n description: 'Tools for browsing and managing GitHub repositories',\n tools: githubTools,\n};\n","import { GitHubProjectsPanel, GitHubProjectsPanelMetadata } from './panels/GitHubProjectsPanel';\nimport { GitHubSearchPanel, GitHubSearchPanelMetadata } from './panels/GitHubSearchPanel';\nimport { OwnerRepositoriesPanel, OwnerRepositoriesPanelMetadata } from './panels/OwnerRepositoriesPanel';\nimport { RecentRepositoriesPanel, RecentRepositoriesPanelMetadata } from './panels/RecentRepositoriesPanel';\nimport { WelcomePanel, WelcomePanelMetadata } from './panels/WelcomePanel';\nimport type { PanelDefinition, PanelContextValue, PanelTool } from './types';\nimport { githubTools, githubToolsMetadata } from './tools';\n\n/**\n * Export array of panel definitions.\n * This is the required export for panel extensions.\n */\nexport const panels: PanelDefinition[] = [\n {\n metadata: {\n ...GitHubProjectsPanelMetadata,\n tools: githubTools, // Add tools to panel metadata\n },\n component: GitHubProjectsPanel,\n\n onMount: async (context: PanelContextValue) => {\n // eslint-disable-next-line no-console\n console.log('GitHub Projects Panel mounted');\n\n // Refresh GitHub data if available\n const slice = context.getSlice('github-repositories');\n if (slice && !slice.loading) {\n await slice.refresh();\n }\n },\n\n onUnmount: async (_context: PanelContextValue) => {\n // eslint-disable-next-line no-console\n console.log('GitHub Projects Panel unmounting');\n },\n },\n {\n metadata: GitHubSearchPanelMetadata,\n component: GitHubSearchPanel,\n\n onMount: async (_context: PanelContextValue) => {\n // eslint-disable-next-line no-console\n console.log('GitHub Search Panel mounted');\n },\n\n onUnmount: async (_context: PanelContextValue) => {\n // eslint-disable-next-line no-console\n console.log('GitHub Search Panel unmounting');\n },\n },\n {\n metadata: OwnerRepositoriesPanelMetadata,\n component: OwnerRepositoriesPanel,\n\n onMount: async (_context: PanelContextValue) => {\n // eslint-disable-next-line no-console\n console.log('Owner Repositories Panel mounted');\n },\n\n onUnmount: async (_context: PanelContextValue) => {\n // eslint-disable-next-line no-console\n console.log('Owner Repositories Panel unmounting');\n },\n },\n {\n metadata: RecentRepositoriesPanelMetadata,\n component: RecentRepositoriesPanel,\n\n onMount: async (_context: PanelContextValue) => {\n // eslint-disable-next-line no-console\n console.log('Recent Repositories Panel mounted');\n },\n\n onUnmount: async (_context: PanelContextValue) => {\n // eslint-disable-next-line no-console\n console.log('Recent Repositories Panel unmounting');\n },\n },\n {\n metadata: WelcomePanelMetadata,\n component: WelcomePanel,\n\n onMount: async (_context: PanelContextValue) => {\n // eslint-disable-next-line no-console\n console.log('Welcome Panel mounted');\n },\n\n onUnmount: async (_context: PanelContextValue) => {\n // eslint-disable-next-line no-console\n console.log('Welcome Panel unmounting');\n },\n },\n];\n\n/**\n * Optional: Called once when the entire package is loaded.\n * Use this for package-level initialization.\n */\nexport const onPackageLoad = async () => {\n // eslint-disable-next-line no-console\n console.log('Panel package loaded - GitHub Panels Extension');\n};\n\n/**\n * Optional: Called once when the package is unloaded.\n * Use this for package-level cleanup.\n */\nexport const onPackageUnload = async () => {\n // eslint-disable-next-line no-console\n console.log('Panel package unloading - GitHub Panels Extension');\n};\n\n// Export components for direct use\nexport { GitHubProjectCard } from './components/GitHubProjectCard';\nexport { GitHubProjectsPanel } from './panels/GitHubProjectsPanel';\nexport { GitHubSearchPanel } from './panels/GitHubSearchPanel';\nexport { OwnerRepositoriesPanel } from './panels/OwnerRepositoriesPanel';\nexport { RecentRepositoriesPanel, addRecentRepository, addRecentOwner } from './panels/RecentRepositoriesPanel';\nexport type { OwnerInfo } from './panels/RecentRepositoriesPanel';\nexport { WelcomePanel } from './panels/WelcomePanel';\n\n// Export types\nexport type {\n GitHubOwner,\n GitHubRepository,\n GitHubOrganization,\n GitHubRepositoriesSliceData,\n RepositorySelectedEventPayload,\n RepositoryPreviewEventPayload,\n GitHubPanelEventType,\n} from './types/github';\n\n// Export tools\nexport {\n githubTools,\n githubToolsMetadata,\n listRepositoriesTool,\n selectRepositoryTool,\n previewRepositoryTool,\n searchRepositoriesTool,\n openRepositorySwitcherTool,\n requestGitHubLoginTool,\n} from './tools';\n"],"names":["theme","React","__iconNode","Filter","this","Logo_1","require$$0","Logo"],"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,25,26,27,28,34]}
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/arrow-right.js","../node_modules/lucide-react/dist/esm/icons/arrow-up-down.js","../node_modules/lucide-react/dist/esm/icons/book-open.js","../node_modules/lucide-react/dist/esm/icons/building-2.js","../node_modules/lucide-react/dist/esm/icons/calendar.js","../node_modules/lucide-react/dist/esm/icons/chevron-down.js","../node_modules/lucide-react/dist/esm/icons/chevron-right.js","../node_modules/lucide-react/dist/esm/icons/external-link.js","../node_modules/lucide-react/dist/esm/icons/folder.js","../node_modules/lucide-react/dist/esm/icons/funnel.js","../node_modules/lucide-react/dist/esm/icons/git-branch.js","../node_modules/lucide-react/dist/esm/icons/git-fork.js","../node_modules/lucide-react/dist/esm/icons/github.js","../node_modules/lucide-react/dist/esm/icons/history.js","../node_modules/lucide-react/dist/esm/icons/lock.js","../node_modules/lucide-react/dist/esm/icons/log-in.js","../node_modules/lucide-react/dist/esm/icons/message-square.js","../node_modules/lucide-react/dist/esm/icons/network.js","../node_modules/lucide-react/dist/esm/icons/refresh-cw.js","../node_modules/lucide-react/dist/esm/icons/search.js","../node_modules/lucide-react/dist/esm/icons/star.js","../node_modules/lucide-react/dist/esm/icons/trash-2.js","../node_modules/lucide-react/dist/esm/icons/user.js","../node_modules/lucide-react/dist/esm/icons/x.js","../src/components/GitHubProjectCard.tsx","../src/panels/GitHubProjectsPanel.tsx","../src/panels/GitHubSearchPanel.tsx","../src/panels/OwnerRepositoriesPanel.tsx","../src/panels/RecentRepositoriesPanel.tsx","../node_modules/@principal-ai/logo-component/dist/Logo.js","../src/panels/WelcomePanel.tsx","../src/tools/index.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: \"M5 12h14\", key: \"1ays0h\" }],\n [\"path\", { d: \"m12 5 7 7-7 7\", key: \"xquz4c\" }]\n];\nconst ArrowRight = createLucideIcon(\"arrow-right\", __iconNode);\n\nexport { __iconNode, ArrowRight as default };\n//# sourceMappingURL=arrow-right.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 16-4 4-4-4\", key: \"f6ql7i\" }],\n [\"path\", { d: \"M17 20V4\", key: \"1ejh1v\" }],\n [\"path\", { d: \"m3 8 4-4 4 4\", key: \"11wl7u\" }],\n [\"path\", { d: \"M7 4v16\", key: \"1glfcx\" }]\n];\nconst ArrowUpDown = createLucideIcon(\"arrow-up-down\", __iconNode);\n\nexport { __iconNode, ArrowUpDown as default };\n//# sourceMappingURL=arrow-up-down.js.map\n","/**\n * @license lucide-react v0.552.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M12 7v14\", key: \"1akyts\" }],\n [\n \"path\",\n {\n d: \"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z\",\n key: \"ruj8y\"\n }\n ]\n];\nconst BookOpen = createLucideIcon(\"book-open\", __iconNode);\n\nexport { __iconNode, BookOpen as default };\n//# sourceMappingURL=book-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 [\"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 = [\n [\"path\", { d: \"M8 2v4\", key: \"1cmpym\" }],\n [\"path\", { d: \"M16 2v4\", key: \"4m81vk\" }],\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"4\", rx: \"2\", key: \"1hopcy\" }],\n [\"path\", { d: \"M3 10h18\", key: \"8toen8\" }]\n];\nconst Calendar = createLucideIcon(\"calendar\", __iconNode);\n\nexport { __iconNode, Calendar as default };\n//# sourceMappingURL=calendar.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: \"m6 9 6 6 6-6\", key: \"qrunsl\" }]];\nconst ChevronDown = createLucideIcon(\"chevron-down\", __iconNode);\n\nexport { __iconNode, ChevronDown as default };\n//# sourceMappingURL=chevron-down.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: \"m9 18 6-6-6-6\", key: \"mthhwq\" }]];\nconst ChevronRight = createLucideIcon(\"chevron-right\", __iconNode);\n\nexport { __iconNode, ChevronRight as default };\n//# sourceMappingURL=chevron-right.js.map\n","/**\n * @license lucide-react v0.552.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M15 3h6v6\", key: \"1q9fwt\" }],\n [\"path\", { d: \"M10 14 21 3\", key: \"gplh6r\" }],\n [\"path\", { d: \"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\", key: \"a6xqqp\" }]\n];\nconst ExternalLink = createLucideIcon(\"external-link\", __iconNode);\n\nexport { __iconNode, ExternalLink as default };\n//# sourceMappingURL=external-link.js.map\n","/**\n * @license lucide-react v0.552.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"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 [\n \"path\",\n {\n d: \"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z\",\n key: \"sc7q7i\"\n }\n ]\n];\nconst Funnel = createLucideIcon(\"funnel\", __iconNode);\n\nexport { __iconNode, Funnel as default };\n//# sourceMappingURL=funnel.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 [\"line\", { x1: \"6\", x2: \"6\", y1: \"3\", y2: \"15\", key: \"17qcm7\" }],\n [\"circle\", { cx: \"18\", cy: \"6\", r: \"3\", key: \"1h7g24\" }],\n [\"circle\", { cx: \"6\", cy: \"18\", r: \"3\", key: \"fqmcym\" }],\n [\"path\", { d: \"M18 9a9 9 0 0 1-9 9\", key: \"n2h4wq\" }]\n];\nconst GitBranch = createLucideIcon(\"git-branch\", __iconNode);\n\nexport { __iconNode, GitBranch as default };\n//# sourceMappingURL=git-branch.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: \"18\", r: \"3\", key: \"1mpf1b\" }],\n [\"circle\", { cx: \"6\", cy: \"6\", r: \"3\", key: \"1lh9wr\" }],\n [\"circle\", { cx: \"18\", cy: \"6\", r: \"3\", key: \"1h7g24\" }],\n [\"path\", { d: \"M18 9v2c0 .6-.4 1-1 1H7c-.6 0-1-.4-1-1V9\", key: \"1uq4wg\" }],\n [\"path\", { d: \"M12 12v3\", key: \"158kv8\" }]\n];\nconst GitFork = createLucideIcon(\"git-fork\", __iconNode);\n\nexport { __iconNode, GitFork as default };\n//# sourceMappingURL=git-fork.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: \"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4\",\n key: \"tonef\"\n }\n ],\n [\"path\", { d: \"M9 18c-4.51 2-5-2-7-2\", key: \"9comsn\" }]\n];\nconst Github = createLucideIcon(\"github\", __iconNode);\n\nexport { __iconNode, Github as default };\n//# sourceMappingURL=github.js.map\n","/**\n * @license lucide-react v0.552.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\", key: \"1357e3\" }],\n [\"path\", { d: \"M3 3v5h5\", key: \"1xhq8a\" }],\n [\"path\", { d: \"M12 7v5l4 2\", key: \"1fdv2h\" }]\n];\nconst History = createLucideIcon(\"history\", __iconNode);\n\nexport { __iconNode, History as default };\n//# sourceMappingURL=history.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: \"18\", height: \"11\", x: \"3\", y: \"11\", rx: \"2\", ry: \"2\", key: \"1w4ew1\" }],\n [\"path\", { d: \"M7 11V7a5 5 0 0 1 10 0v4\", key: \"fwvmzm\" }]\n];\nconst Lock = createLucideIcon(\"lock\", __iconNode);\n\nexport { __iconNode, Lock as default };\n//# sourceMappingURL=lock.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 17 5-5-5-5\", key: \"1bsop3\" }],\n [\"path\", { d: \"M15 12H3\", key: \"6jk70r\" }],\n [\"path\", { d: \"M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4\", key: \"u53s6r\" }]\n];\nconst LogIn = createLucideIcon(\"log-in\", __iconNode);\n\nexport { __iconNode, LogIn as default };\n//# sourceMappingURL=log-in.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: \"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z\",\n key: \"18887p\"\n }\n ]\n];\nconst MessageSquare = createLucideIcon(\"message-square\", __iconNode);\n\nexport { __iconNode, MessageSquare as default };\n//# sourceMappingURL=message-square.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\", { x: \"16\", y: \"16\", width: \"6\", height: \"6\", rx: \"1\", key: \"4q2zg0\" }],\n [\"rect\", { x: \"2\", y: \"16\", width: \"6\", height: \"6\", rx: \"1\", key: \"8cvhb9\" }],\n [\"rect\", { x: \"9\", y: \"2\", width: \"6\", height: \"6\", rx: \"1\", key: \"1egb70\" }],\n [\"path\", { d: \"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3\", key: \"1jsf9p\" }],\n [\"path\", { d: \"M12 12V8\", key: \"2874zd\" }]\n];\nconst Network = createLucideIcon(\"network\", __iconNode);\n\nexport { __iconNode, Network as default };\n//# sourceMappingURL=network.js.map\n","/**\n * @license lucide-react v0.552.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\", key: \"v9h5vc\" }],\n [\"path\", { d: \"M21 3v5h-5\", key: \"1q7to0\" }],\n [\"path\", { d: \"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\", key: \"3uifl3\" }],\n [\"path\", { d: \"M8 16H3v5\", key: \"1cv678\" }]\n];\nconst RefreshCw = createLucideIcon(\"refresh-cw\", __iconNode);\n\nexport { __iconNode, RefreshCw as default };\n//# sourceMappingURL=refresh-cw.js.map\n","/**\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: \"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z\",\n key: \"r04s7s\"\n }\n ]\n];\nconst Star = createLucideIcon(\"star\", __iconNode);\n\nexport { __iconNode, Star as default };\n//# sourceMappingURL=star.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 11v6\", key: \"nco0om\" }],\n [\"path\", { d: \"M14 11v6\", key: \"outv1u\" }],\n [\"path\", { d: \"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6\", key: \"miytrc\" }],\n [\"path\", { d: \"M3 6h18\", key: \"d0wm0j\" }],\n [\"path\", { d: \"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\", key: \"e791ji\" }]\n];\nconst Trash2 = createLucideIcon(\"trash-2\", __iconNode);\n\nexport { __iconNode, Trash2 as default };\n//# sourceMappingURL=trash-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 [\"path\", { d: \"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\", key: \"975kel\" }],\n [\"circle\", { cx: \"12\", cy: \"7\", r: \"4\", key: \"17ys0d\" }]\n];\nconst User = createLucideIcon(\"user\", __iconNode);\n\nexport { __iconNode, User as default };\n//# sourceMappingURL=user.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, { useState } from 'react';\nimport { useTheme } from '@principal-ade/industry-theme';\nimport {\n ExternalLink,\n Star,\n GitFork,\n Lock,\n} from 'lucide-react';\n\nimport type { GitHubRepository } from '../types/github';\n\nexport interface GitHubProjectCardProps {\n /** The repository data to display */\n repository: GitHubRepository;\n /** Whether this card is currently selected/highlighted */\n isSelected?: boolean;\n /** Callback when card is clicked (selects the repository) */\n onSelect?: (repository: GitHubRepository) => void;\n /** Callback when \"Open in GitHub\" is clicked */\n onOpenInGitHub?: (repository: GitHubRepository) => void;\n}\n\n/**\n * Get color for programming language\n */\nfunction getLanguageColor(language: string): string {\n const 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\n return colors[language] || '#6e7681';\n}\n\n/**\n * Format large numbers (e.g., 1234 -> 1.2k)\n */\nfunction formatCount(count: number): string {\n if (count >= 1000000) {\n return `${(count / 1000000).toFixed(1)}m`;\n }\n if (count >= 1000) {\n return `${(count / 1000).toFixed(1)}k`;\n }\n return count.toString();\n}\n\n/**\n * GitHubProjectCard - Displays a GitHub repository card\n *\n * Features:\n * - Repository name with owner avatar\n * - Language indicator with color coding\n * - Star and fork counts\n * - Private/fork indicators\n * - GitHub link button\n */\nexport const GitHubProjectCard: React.FC<GitHubProjectCardProps> = ({\n repository,\n isSelected = false,\n onSelect,\n onOpenInGitHub,\n}) => {\n const { theme } = useTheme();\n const [isHovered, setIsHovered] = useState(false);\n\n const highlightColor = theme.colors.primary;\n\n const handleCardClick = () => {\n onSelect?.(repository);\n };\n\n const handleOpenInGitHub = (e: React.MouseEvent) => {\n e.stopPropagation();\n if (onOpenInGitHub) {\n onOpenInGitHub(repository);\n } else {\n window.open(repository.html_url, '_blank');\n }\n };\n\n const starCount = repository.stargazers_count ?? 0;\n const forkCount = repository.forks_count ?? 0;\n\n return (\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n padding: '10px 12px',\n borderRadius: '6px',\n backgroundColor: isSelected\n ? `${highlightColor}15`\n : isHovered\n ? theme.colors.backgroundTertiary || theme.colors.backgroundSecondary\n : 'transparent',\n border: isSelected\n ? `1px solid ${highlightColor}40`\n : '1px solid transparent',\n cursor: 'pointer',\n transition: 'all 0.15s ease',\n }}\n onClick={handleCardClick}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n {/* Owner avatar */}\n {repository.owner.avatar_url ? (\n <img\n src={repository.owner.avatar_url}\n alt={repository.owner.login}\n style={{\n width: '32px',\n height: '32px',\n borderRadius: '50%',\n flexShrink: 0,\n }}\n />\n ) : (\n <div\n style={{\n width: '32px',\n height: '32px',\n borderRadius: '50%',\n flexShrink: 0,\n backgroundColor: theme.colors.backgroundTertiary || theme.colors.backgroundSecondary,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: `${theme.fontSizes[1]}px`,\n fontWeight: theme.fontWeights.semibold,\n color: theme.colors.textSecondary,\n }}\n >\n {repository.owner.login[0]?.toUpperCase() || '?'}\n </div>\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 row */}\n <div style={{ display: 'flex', alignItems: 'center', gap: '8px' }}>\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 }}\n >\n {repository.name}\n </span>\n {repository.private && (\n <Lock size={12} color={theme.colors.warning || '#f59e0b'} />\n )}\n {repository.fork && (\n <GitFork size={12} color={theme.colors.textSecondary} />\n )}\n </div>\n\n {/* Metadata row */}\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n fontSize: `${theme.fontSizes[0]}px`,\n color: theme.colors.textSecondary,\n flexWrap: 'wrap',\n }}\n >\n {/* Language */}\n {repository.language && (\n <div style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <span\n style={{\n display: 'inline-block',\n width: '8px',\n height: '8px',\n borderRadius: '50%',\n backgroundColor: getLanguageColor(repository.language),\n }}\n />\n <span>{repository.language}</span>\n </div>\n )}\n\n {/* Stars */}\n <div style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <Star size={12} />\n <span>{formatCount(starCount)}</span>\n </div>\n\n {/* Forks */}\n {forkCount > 0 && (\n <div style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <GitFork size={12} />\n <span>{formatCount(forkCount)}</span>\n </div>\n )}\n </div>\n\n {/* Description */}\n {repository.description && (\n <div\n style={{\n fontSize: `${theme.fontSizes[0]}px`,\n color: theme.colors.textSecondary,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}\n >\n {repository.description}\n </div>\n )}\n </div>\n\n {/* GitHub link button */}\n <button\n type=\"button\"\n onClick={handleOpenInGitHub}\n title=\"View on GitHub\"\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '6px',\n borderRadius: '4px',\n border: `1px solid ${theme.colors.border}`,\n backgroundColor: theme.colors.background,\n color: theme.colors.textSecondary,\n cursor: 'pointer',\n transition: 'all 0.15s ease',\n flexShrink: 0,\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor =\n theme.colors.backgroundTertiary || theme.colors.backgroundSecondary;\n e.currentTarget.style.color = theme.colors.text;\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = theme.colors.background;\n e.currentTarget.style.color = theme.colors.textSecondary;\n }}\n >\n <ExternalLink size={14} />\n </button>\n </div>\n );\n};\n","import React, { useState, useMemo, useEffect, useRef, useCallback } from 'react';\nimport { ThemeProvider, useTheme } from '@principal-ade/industry-theme';\nimport {\n Github,\n Search,\n ChevronDown,\n ChevronRight,\n Folder,\n Star,\n LogIn,\n Building2,\n} from 'lucide-react';\n\nimport type { PanelComponentProps } from '../types';\nimport type {\n GitHubRepositoriesSliceData,\n GitHubRepository,\n RepositoryPreviewEventPayload,\n} from '../types/github';\nimport { GitHubProjectCard } from '../components/GitHubProjectCard';\n\n/** Layout mode based on available width */\ntype LayoutMode = 'compact' | 'expanded';\n\n/** Breakpoint for switching layouts (in pixels) */\nconst EXPANDED_BREAKPOINT = 600;\n\n/**\n * Section component for collapsible repository groups\n */\ninterface SectionProps {\n id: string;\n title: string;\n icon: React.ReactNode;\n count: number;\n isExpanded: boolean;\n onToggle: () => void;\n children: React.ReactNode;\n layoutMode: LayoutMode;\n}\n\nconst Section: React.FC<SectionProps> = ({\n title,\n icon,\n count,\n isExpanded,\n onToggle,\n children,\n layoutMode,\n}) => {\n const { theme } = useTheme();\n\n // In expanded mode, sections are columns - always show content (no collapse)\n // In compact mode, sections are collapsible\n const showContent = layoutMode === 'expanded' || isExpanded;\n\n return (\n <div\n style={{\n marginBottom: layoutMode === 'compact' ? '8px' : '0',\n flex: layoutMode === 'expanded' ? '1 1 0' : undefined,\n minWidth: layoutMode === 'expanded' ? '280px' : undefined,\n display: 'flex',\n flexDirection: 'column',\n borderRight: layoutMode === 'expanded' ? `1px solid ${theme.colors.border}` : undefined,\n overflow: 'hidden',\n }}\n >\n <button\n type=\"button\"\n onClick={layoutMode === 'compact' ? onToggle : undefined}\n style={{\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n padding: '10px 12px',\n border: 'none',\n background: 'none',\n cursor: layoutMode === 'compact' ? 'pointer' : 'default',\n color: theme.colors.text,\n fontSize: `${theme.fontSizes[2]}px`,\n fontWeight: theme.fontWeights.semibold,\n borderBottom: layoutMode === 'expanded' ? `1px solid ${theme.colors.border}` : undefined,\n }}\n >\n {layoutMode === 'compact' && (isExpanded ? <ChevronDown size={16} /> : <ChevronRight size={16} />)}\n {icon}\n <span>{title}</span>\n <span\n style={{\n marginLeft: 'auto',\n fontSize: `${theme.fontSizes[0]}px`,\n color: theme.colors.textSecondary,\n backgroundColor: theme.colors.backgroundTertiary || theme.colors.backgroundSecondary,\n padding: '2px 8px',\n borderRadius: '10px',\n }}\n >\n {count}\n </span>\n </button>\n {showContent && (\n <div\n style={{\n padding: '4px',\n display: 'flex',\n flexDirection: 'column',\n gap: '0',\n flex: layoutMode === 'expanded' ? 1 : undefined,\n overflowY: layoutMode === 'expanded' ? 'auto' : undefined,\n }}\n >\n {children}\n </div>\n )}\n </div>\n );\n};\n\n/**\n * GitHubProjectsPanelContent - Internal component that uses theme\n */\nconst GitHubProjectsPanelContent: React.FC<PanelComponentProps> = ({\n context,\n events,\n}) => {\n const { theme } = useTheme();\n const containerRef = useRef<HTMLDivElement>(null);\n const [layoutMode, setLayoutMode] = useState<LayoutMode>('compact');\n const [searchQuery, setSearchQuery] = useState('');\n const [selectedRepoId, setSelectedRepoId] = useState<number | null>(null);\n const [expandedSections, setExpandedSections] = useState<Set<string>>(\n new Set(['owned', 'starred'])\n );\n\n // Get GitHub repositories slice\n const githubSlice = context.getSlice<GitHubRepositoriesSliceData>('github-repositories');\n const isLoading = context.isSliceLoading('github-repositories');\n const hasData = context.hasSlice('github-repositories');\n\n const data = githubSlice?.data;\n\n // Observe container width for responsive layout\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const observer = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const width = entry.contentRect.width;\n setLayoutMode(width >= EXPANDED_BREAKPOINT ? 'expanded' : 'compact');\n }\n });\n\n observer.observe(container);\n return () => observer.disconnect();\n }, []);\n\n // Filter repositories by search query\n const filterRepos = useCallback((repos: GitHubRepository[]) => {\n if (!searchQuery) return repos;\n const query = searchQuery.toLowerCase();\n return repos.filter(\n (repo) =>\n repo.name.toLowerCase().includes(query) ||\n repo.full_name.toLowerCase().includes(query) ||\n repo.description?.toLowerCase().includes(query) ||\n repo.language?.toLowerCase().includes(query)\n );\n }, [searchQuery]);\n\n const filteredOwned = useMemo(() => filterRepos(data?.owned || []), [data?.owned, filterRepos]);\n const filteredStarred = useMemo(() => filterRepos(data?.starred || []), [data?.starred, filterRepos]);\n const filteredOrgs = useMemo(() => {\n if (!data?.organizations) return [];\n return data.organizations.map((org) => ({\n ...org,\n repositories: filterRepos(org.repositories),\n })).filter((org) => org.repositories.length > 0 || !searchQuery);\n }, [data?.organizations, filterRepos, searchQuery]);\n\n // Toggle section expansion\n const toggleSection = (section: string) => {\n setExpandedSections((prev) => {\n const next = new Set(prev);\n if (next.has(section)) {\n next.delete(section);\n } else {\n next.add(section);\n }\n return next;\n });\n };\n\n // Handle repository preview (click to show README)\n const handleSelectRepository = (repo: GitHubRepository) => {\n setSelectedRepoId(repo.id);\n\n events.emit<RepositoryPreviewEventPayload>({\n type: 'repository:preview',\n source: 'github-projects-panel',\n timestamp: Date.now(),\n payload: {\n repository: repo,\n source: 'click',\n },\n });\n };\n\n // Render empty state for a section\n const renderEmptyState = (message: string) => (\n <div\n style={{\n padding: '16px',\n textAlign: 'center',\n color: theme.colors.textSecondary,\n fontSize: `${theme.fontSizes[1]}px`,\n gridColumn: layoutMode === 'expanded' ? '1 / -1' : undefined,\n }}\n >\n {message}\n </div>\n );\n\n // Render repository cards\n const renderCards = (repos: GitHubRepository[]) =>\n repos.map((repo) => (\n <GitHubProjectCard\n key={repo.id}\n repository={repo}\n isSelected={selectedRepoId === repo.id}\n onSelect={handleSelectRepository}\n />\n ));\n\n // Not authenticated state\n if (hasData && data && !data.isAuthenticated) {\n return (\n <div\n ref={containerRef}\n style={{\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '16px',\n padding: '24px',\n color: theme.colors.textSecondary,\n }}\n >\n <LogIn size={48} color={theme.colors.textSecondary} />\n <h3\n style={{\n margin: 0,\n fontSize: `${theme.fontSizes[3]}px`,\n color: theme.colors.text,\n }}\n >\n Sign in to GitHub\n </h3>\n <p style={{ margin: 0, textAlign: 'center' }}>\n Connect your GitHub account to see your repositories\n </p>\n <button\n type=\"button\"\n onClick={() => {\n events.emit({\n type: 'github:login-requested',\n source: 'github-projects-panel',\n timestamp: Date.now(),\n payload: {},\n });\n }}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n padding: '10px 20px',\n borderRadius: '6px',\n border: 'none',\n backgroundColor: theme.colors.primary,\n color: theme.colors.background,\n fontSize: `${theme.fontSizes[2]}px`,\n fontWeight: theme.fontWeights.medium,\n cursor: 'pointer',\n }}\n >\n <Github size={18} />\n Sign in with GitHub\n </button>\n </div>\n );\n }\n\n // Loading state\n if (isLoading) {\n return (\n <div\n ref={containerRef}\n style={{\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: theme.colors.textSecondary,\n }}\n >\n Loading repositories...\n </div>\n );\n }\n\n // No data state - show sign in prompt\n if (!hasData || !data) {\n return (\n <div\n ref={containerRef}\n style={{\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '16px',\n padding: '24px',\n color: theme.colors.textSecondary,\n }}\n >\n <LogIn size={48} color={theme.colors.textSecondary} />\n <h3\n style={{\n margin: 0,\n fontSize: `${theme.fontSizes[3]}px`,\n color: theme.colors.text,\n }}\n >\n Sign in to GitHub\n </h3>\n <p style={{ margin: 0, textAlign: 'center' }}>\n Connect your GitHub account to browse your repositories\n </p>\n <button\n type=\"button\"\n onClick={() => {\n events.emit({\n type: 'github:login-requested',\n source: 'github-projects-panel',\n timestamp: Date.now(),\n payload: {},\n });\n }}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n padding: '10px 20px',\n borderRadius: '6px',\n border: 'none',\n backgroundColor: theme.colors.primary,\n color: theme.colors.background,\n fontSize: `${theme.fontSizes[2]}px`,\n fontWeight: theme.fontWeights.medium,\n cursor: 'pointer',\n }}\n >\n <Github size={18} />\n Sign in with GitHub\n </button>\n </div>\n );\n }\n\n return (\n <div\n ref={containerRef}\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 }}\n >\n {/* Header */}\n <div\n style={{\n padding: '12px 16px',\n borderBottom: `1px solid ${theme.colors.border}`,\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n flexWrap: 'wrap',\n }}\n >\n <Github size={20} color={theme.colors.primary} />\n <h2\n style={{\n margin: 0,\n fontSize: `${theme.fontSizes[3]}px`,\n fontWeight: theme.fontWeights.semibold,\n }}\n >\n GitHub Projects\n </h2>\n {data.username && (\n <span\n style={{\n fontSize: `${theme.fontSizes[1]}px`,\n color: theme.colors.textSecondary,\n }}\n >\n @{data.username}\n </span>\n )}\n </div>\n\n {/* Search */}\n <div style={{ padding: '12px 16px' }}>\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n padding: '8px 12px',\n borderRadius: '6px',\n backgroundColor: theme.colors.backgroundSecondary,\n border: `1px solid ${theme.colors.border}`,\n }}\n >\n <Search size={16} color={theme.colors.textSecondary} />\n <input\n type=\"text\"\n placeholder=\"Search repositories...\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n style={{\n flex: 1,\n border: 'none',\n background: 'none',\n outline: 'none',\n fontSize: `${theme.fontSizes[2]}px`,\n color: theme.colors.text,\n }}\n />\n </div>\n </div>\n\n {/* Repository sections */}\n <div\n style={{\n flex: 1,\n overflow: 'hidden',\n display: 'flex',\n flexDirection: layoutMode === 'expanded' ? 'row' : 'column',\n overflowY: layoutMode === 'compact' ? 'auto' : undefined,\n overflowX: layoutMode === 'expanded' ? 'auto' : undefined,\n }}\n >\n {/* Personal repositories */}\n <Section\n id=\"owned\"\n title=\"Your Repositories\"\n icon={<Folder size={16} color={theme.colors.primary} />}\n count={filteredOwned.length}\n isExpanded={expandedSections.has('owned')}\n onToggle={() => toggleSection('owned')}\n layoutMode={layoutMode}\n >\n {filteredOwned.length === 0\n ? renderEmptyState(searchQuery ? 'No repositories match your search' : 'No repositories found')\n : renderCards(filteredOwned)}\n </Section>\n\n {/* Organization repositories */}\n {filteredOrgs.map((org) => (\n <Section\n key={org.id}\n id={`org-${org.id}`}\n title={org.login}\n icon={\n org.avatar_url ? (\n <img\n src={org.avatar_url}\n alt={org.login}\n style={{ width: 16, height: 16, borderRadius: 4 }}\n />\n ) : (\n <Building2 size={16} color={theme.colors.info || '#3b82f6'} />\n )\n }\n count={org.repositories.length}\n isExpanded={expandedSections.has(`org-${org.id}`)}\n onToggle={() => toggleSection(`org-${org.id}`)}\n layoutMode={layoutMode}\n >\n {org.repositories.length === 0\n ? renderEmptyState(searchQuery ? 'No repositories match your search' : 'No repositories')\n : renderCards(org.repositories)}\n </Section>\n ))}\n\n {/* Starred repositories */}\n <Section\n id=\"starred\"\n title=\"Starred\"\n icon={<Star size={16} color={theme.colors.warning || '#f59e0b'} />}\n count={filteredStarred.length}\n isExpanded={expandedSections.has('starred')}\n onToggle={() => toggleSection('starred')}\n layoutMode={layoutMode}\n >\n {filteredStarred.length === 0\n ? renderEmptyState(searchQuery ? 'No repositories match your search' : 'No starred repositories')\n : renderCards(filteredStarred)}\n </Section>\n </div>\n </div>\n );\n};\n\n/**\n * GitHubProjectsPanel - A panel for browsing GitHub repositories\n *\n * Features:\n * - Lists personal, organization, and starred repositories\n * - Responsive layout: compact (dropdown) for narrow, columns for wide\n * - Search/filter functionality\n * - Emits repository:selected events when a repo is clicked\n *\n * Required data slice: 'github-repositories' (GitHubRepositoriesSliceData)\n */\nexport const GitHubProjectsPanel: React.FC<PanelComponentProps> = (props) => {\n return (\n <ThemeProvider>\n <GitHubProjectsPanelContent {...props} />\n </ThemeProvider>\n );\n};\n\n/**\n * Panel metadata for registration\n */\nexport const GitHubProjectsPanelMetadata = {\n id: 'github-projects',\n name: 'GitHub Projects',\n description: 'Browse and manage your GitHub repositories',\n icon: 'github',\n version: '0.1.0',\n slices: ['github-repositories'],\n surfaces: ['sidebar', 'panel'],\n};\n","import React, { useState, useRef, useEffect, useCallback } from 'react';\nimport { ThemeProvider, useTheme } from '@principal-ade/industry-theme';\nimport { Search, Github, Star, GitFork, ExternalLink } from 'lucide-react';\n\nimport type { PanelComponentProps } from '../types';\nimport type { GitHubRepository, RepositoryPreviewEventPayload } from '../types/github';\n\n/** Search result from GitHub API */\ninterface GitHubSearchResult {\n total_count: number;\n incomplete_results: boolean;\n items: GitHubRepository[];\n}\n\n/**\n * GitHubSearchPanelContent - Internal component that uses theme\n */\nconst GitHubSearchPanelContent: React.FC<PanelComponentProps> = ({ events }) => {\n const { theme } = useTheme();\n const [searchQuery, setSearchQuery] = useState('');\n const [results, setResults] = useState<GitHubRepository[]>([]);\n const [totalCount, setTotalCount] = useState(0);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [selectedRepoId, setSelectedRepoId] = useState<number | null>(null);\n const searchTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n\n // Focus input on mount\n useEffect(() => {\n inputRef.current?.focus();\n }, []);\n\n // Debounced search\n const performSearch = useCallback(async (query: string) => {\n if (!query.trim()) {\n setResults([]);\n setTotalCount(0);\n setError(null);\n return;\n }\n\n setIsLoading(true);\n setError(null);\n\n try {\n const response = await fetch(\n `/api/github/search?q=${encodeURIComponent(query)}&per_page=30`\n );\n\n if (!response.ok) {\n const errorData = await response.json().catch(() => ({}));\n throw new Error(errorData.error || 'Search failed');\n }\n\n const data: GitHubSearchResult = await response.json();\n setResults(data.items || []);\n setTotalCount(data.total_count || 0);\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Search failed');\n setResults([]);\n setTotalCount(0);\n } finally {\n setIsLoading(false);\n }\n }, []);\n\n // Handle search input change with debounce\n const handleSearchChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const query = e.target.value;\n setSearchQuery(query);\n\n // Clear existing timeout\n if (searchTimeoutRef.current) {\n clearTimeout(searchTimeoutRef.current);\n }\n\n // Debounce search\n searchTimeoutRef.current = setTimeout(() => {\n performSearch(query);\n }, 300);\n };\n\n // Handle form submit (immediate search)\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n if (searchTimeoutRef.current) {\n clearTimeout(searchTimeoutRef.current);\n }\n performSearch(searchQuery);\n };\n\n // Handle repository preview (click to show README)\n const handleSelectRepository = (repo: GitHubRepository) => {\n setSelectedRepoId(repo.id);\n\n events.emit<RepositoryPreviewEventPayload>({\n type: 'repository:preview',\n source: 'github-search-panel',\n timestamp: Date.now(),\n payload: {\n repository: repo,\n source: 'search',\n },\n });\n };\n\n // Format number with K/M suffix\n const formatNumber = (num: number): string => {\n if (num >= 1000000) return `${(num / 1000000).toFixed(1)}M`;\n if (num >= 1000) return `${(num / 1000).toFixed(1)}K`;\n return num.toString();\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 }}\n >\n {/* Header */}\n <div\n style={{\n padding: '12px 16px',\n borderBottom: `1px solid ${theme.colors.border}`,\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n }}\n >\n <Github size={20} color={theme.colors.primary} />\n <h2\n style={{\n margin: 0,\n fontSize: `${theme.fontSizes[3]}px`,\n fontWeight: theme.fontWeights.semibold,\n }}\n >\n Search GitHub\n </h2>\n </div>\n\n {/* Search Input */}\n <form onSubmit={handleSubmit} style={{ padding: '12px 16px' }}>\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n padding: '10px 12px',\n borderRadius: '6px',\n backgroundColor: theme.colors.backgroundSecondary,\n border: `1px solid ${theme.colors.border}`,\n }}\n >\n <Search size={18} color={theme.colors.textSecondary} />\n <input\n ref={inputRef}\n type=\"text\"\n placeholder=\"Search repositories on GitHub...\"\n value={searchQuery}\n onChange={handleSearchChange}\n style={{\n flex: 1,\n border: 'none',\n background: 'none',\n outline: 'none',\n fontSize: `${theme.fontSizes[2]}px`,\n color: theme.colors.text,\n }}\n />\n {isLoading && (\n <div\n style={{\n width: 16,\n height: 16,\n border: `2px solid ${theme.colors.border}`,\n borderTopColor: theme.colors.primary,\n borderRadius: '50%',\n animation: 'spin 1s linear infinite',\n }}\n />\n )}\n </div>\n </form>\n\n {/* Results Count */}\n {totalCount > 0 && !isLoading && (\n <div\n style={{\n padding: '0 16px 8px',\n fontSize: `${theme.fontSizes[1]}px`,\n color: theme.colors.textSecondary,\n }}\n >\n {formatNumber(totalCount)} repositories found\n </div>\n )}\n\n {/* Error State */}\n {error && (\n <div\n style={{\n padding: '16px',\n margin: '0 16px',\n borderRadius: '6px',\n backgroundColor: `${theme.colors.error}15`,\n color: theme.colors.error,\n fontSize: `${theme.fontSizes[2]}px`,\n }}\n >\n {error}\n </div>\n )}\n\n {/* Results List */}\n <div\n style={{\n flex: 1,\n overflowY: 'auto',\n padding: '0 8px 8px',\n }}\n >\n {results.length === 0 && !isLoading && searchQuery && !error && (\n <div\n style={{\n padding: '32px 16px',\n textAlign: 'center',\n color: theme.colors.textSecondary,\n }}\n >\n No repositories found for \"{searchQuery}\"\n </div>\n )}\n\n {results.length === 0 && !searchQuery && (\n <div\n style={{\n padding: '32px 16px',\n textAlign: 'center',\n color: theme.colors.textSecondary,\n }}\n >\n <Search size={48} color={theme.colors.border} style={{ marginBottom: 16 }} />\n <p style={{ margin: 0 }}>\n Search for repositories by name, description, or topic\n </p>\n </div>\n )}\n\n {results.map((repo) => (\n <button\n key={repo.id}\n type=\"button\"\n onClick={() => handleSelectRepository(repo)}\n style={{\n width: '100%',\n padding: '12px',\n margin: '4px 0',\n borderRadius: '6px',\n border: selectedRepoId === repo.id\n ? `2px solid ${theme.colors.primary}`\n : `1px solid ${theme.colors.border}`,\n backgroundColor: selectedRepoId === repo.id\n ? `${theme.colors.primary}10`\n : theme.colors.surface,\n cursor: 'pointer',\n textAlign: 'left',\n display: 'flex',\n flexDirection: 'column',\n gap: '8px',\n }}\n >\n {/* Repo name and owner */}\n <div style={{ display: 'flex', alignItems: 'center', gap: '8px' }}>\n {repo.owner?.avatar_url && (\n <img\n src={repo.owner.avatar_url}\n alt={repo.owner.login}\n style={{ width: 20, height: 20, borderRadius: 4 }}\n />\n )}\n <span\n style={{\n fontSize: `${theme.fontSizes[2]}px`,\n fontWeight: theme.fontWeights.semibold,\n color: theme.colors.primary,\n }}\n >\n {repo.full_name}\n </span>\n {repo.private && (\n <span\n style={{\n fontSize: `${theme.fontSizes[0]}px`,\n padding: '2px 6px',\n borderRadius: '4px',\n backgroundColor: theme.colors.backgroundTertiary,\n color: theme.colors.textSecondary,\n }}\n >\n Private\n </span>\n )}\n </div>\n\n {/* Description */}\n {repo.description && (\n <p\n style={{\n margin: 0,\n fontSize: `${theme.fontSizes[1]}px`,\n color: theme.colors.textSecondary,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n display: '-webkit-box',\n WebkitLineClamp: 2,\n WebkitBoxOrient: 'vertical',\n }}\n >\n {repo.description}\n </p>\n )}\n\n {/* Stats */}\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '16px',\n fontSize: `${theme.fontSizes[1]}px`,\n color: theme.colors.textSecondary,\n }}\n >\n {repo.language && (\n <span style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <span\n style={{\n width: 10,\n height: 10,\n borderRadius: '50%',\n backgroundColor: theme.colors.info,\n }}\n />\n {repo.language}\n </span>\n )}\n <span style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <Star size={14} />\n {formatNumber(repo.stargazers_count || 0)}\n </span>\n <span style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <GitFork size={14} />\n {formatNumber(repo.forks_count || 0)}\n </span>\n <a\n href={repo.html_url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onClick={(e) => e.stopPropagation()}\n style={{\n marginLeft: 'auto',\n color: theme.colors.textSecondary,\n display: 'flex',\n alignItems: 'center',\n }}\n >\n <ExternalLink size={14} />\n </a>\n </div>\n </button>\n ))}\n </div>\n\n {/* CSS for spinner animation */}\n <style>{`\n @keyframes spin {\n to { transform: rotate(360deg); }\n }\n `}</style>\n </div>\n );\n};\n\n/**\n * GitHubSearchPanel - A panel for searching GitHub repositories\n *\n * Features:\n * - Real-time search with debouncing\n * - Shows stars, forks, language\n * - Emits repository:selected events when a repo is clicked\n */\nexport const GitHubSearchPanel: React.FC<PanelComponentProps> = (props) => {\n return (\n <ThemeProvider>\n <GitHubSearchPanelContent {...props} />\n </ThemeProvider>\n );\n};\n\n/**\n * Panel metadata for registration\n */\nexport const GitHubSearchPanelMetadata = {\n id: 'github-search',\n name: 'GitHub Search',\n description: 'Search for repositories on GitHub',\n icon: 'search',\n version: '0.1.0',\n slices: [],\n surfaces: ['panel'],\n};\n","import React, { useState, useEffect, useCallback } from 'react';\nimport { ThemeProvider, useTheme } from '@principal-ade/industry-theme';\nimport {\n Github,\n Star,\n GitFork,\n ExternalLink,\n Calendar,\n ArrowUpDown,\n Filter,\n Building2,\n User,\n RefreshCw,\n} from 'lucide-react';\n\nimport type { PanelComponentProps } from '../types';\nimport type { GitHubRepository, RepositoryPreviewEventPayload } from '../types/github';\n\ntype SortField = 'updated' | 'stars' | 'name' | 'created';\ntype SortOrder = 'asc' | 'desc';\n\ninterface OwnerInfo {\n login: string;\n avatar_url: string;\n name?: string;\n bio?: string;\n type: 'User' | 'Organization';\n public_repos: number;\n followers?: number;\n following?: number;\n}\n\n/**\n * OwnerRepositoriesPanelContent - Internal component that uses theme\n */\nconst OwnerRepositoriesPanelContent: React.FC<PanelComponentProps & { owner?: string }> = ({\n events,\n context,\n owner: propOwner,\n}) => {\n const { theme } = useTheme();\n const [repositories, setRepositories] = useState<GitHubRepository[]>([]);\n const [ownerInfo, setOwnerInfo] = useState<OwnerInfo | null>(null);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n const [selectedRepoId, setSelectedRepoId] = useState<number | null>(null);\n const [sortField, setSortField] = useState<SortField>('updated');\n const [sortOrder, setSortOrder] = useState<SortOrder>('desc');\n const [languageFilter, setLanguageFilter] = useState<string | null>(null);\n const [languages, setLanguages] = useState<string[]>([]);\n\n // Get owner from prop or context\n const owner = propOwner || (context?.currentScope?.repository as { name?: string })?.name;\n\n // Fetch owner info and repositories\n const fetchOwnerData = useCallback(async () => {\n if (!owner) {\n setError('No owner specified');\n setIsLoading(false);\n return;\n }\n\n setIsLoading(true);\n setError(null);\n\n try {\n // Fetch owner info (user or org)\n const userResponse = await fetch(`https://api.github.com/users/${owner}`);\n\n if (!userResponse.ok) {\n if (userResponse.status === 404) {\n throw new Error(`User or organization \"${owner}\" not found`);\n }\n throw new Error('Failed to fetch owner info');\n }\n\n const userData = await userResponse.json();\n setOwnerInfo({\n login: userData.login,\n avatar_url: userData.avatar_url,\n name: userData.name,\n bio: userData.bio,\n type: userData.type,\n public_repos: userData.public_repos,\n followers: userData.followers,\n following: userData.following,\n });\n\n // Fetch repositories (handles pagination up to 100)\n const reposResponse = await fetch(\n `https://api.github.com/users/${owner}/repos?per_page=100&sort=updated`\n );\n\n if (!reposResponse.ok) {\n throw new Error('Failed to fetch repositories');\n }\n\n const reposData: GitHubRepository[] = await reposResponse.json();\n setRepositories(reposData);\n\n // Extract unique languages\n const uniqueLanguages = [...new Set(\n reposData\n .map(r => r.language)\n .filter((lang): lang is string => lang !== null)\n )].sort();\n setLanguages(uniqueLanguages);\n\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to load data');\n } finally {\n setIsLoading(false);\n }\n }, [owner]);\n\n // Fetch on mount and when owner changes\n useEffect(() => {\n fetchOwnerData();\n }, [fetchOwnerData]);\n\n // Sort and filter repositories\n const sortedAndFilteredRepos = React.useMemo(() => {\n let filtered = repositories;\n\n // Apply language filter\n if (languageFilter) {\n filtered = filtered.filter(r => r.language === languageFilter);\n }\n\n // Apply sorting\n return [...filtered].sort((a, b) => {\n let comparison = 0;\n\n switch (sortField) {\n case 'updated':\n comparison = new Date(b.updated_at || 0).getTime() - new Date(a.updated_at || 0).getTime();\n break;\n case 'stars':\n comparison = (b.stargazers_count || 0) - (a.stargazers_count || 0);\n break;\n case 'name':\n comparison = a.name.localeCompare(b.name);\n break;\n case 'created':\n comparison = new Date(b.created_at || 0).getTime() - new Date(a.created_at || 0).getTime();\n break;\n }\n\n return sortOrder === 'desc' ? comparison : -comparison;\n });\n }, [repositories, sortField, sortOrder, languageFilter]);\n\n // Handle repository preview (click to show README)\n const handleSelectRepository = (repo: GitHubRepository) => {\n setSelectedRepoId(repo.id);\n\n events.emit<RepositoryPreviewEventPayload>({\n type: 'repository:preview',\n source: 'owner-repositories-panel',\n timestamp: Date.now(),\n payload: {\n repository: repo,\n source: 'click',\n },\n });\n };\n\n // Handle repository open (double-click or button)\n const handleOpenRepository = (repo: GitHubRepository) => {\n events.emit({\n type: 'repository:selected',\n source: 'owner-repositories-panel',\n timestamp: Date.now(),\n payload: {\n repository: repo,\n source: 'click',\n },\n });\n };\n\n // Format number with K/M suffix\n const formatNumber = (num: number): string => {\n if (num >= 1000000) return `${(num / 1000000).toFixed(1)}M`;\n if (num >= 1000) return `${(num / 1000).toFixed(1)}K`;\n return num.toString();\n };\n\n // Format relative time\n const formatRelativeTime = (dateString: string): string => {\n const date = new Date(dateString);\n const now = new Date();\n const diffMs = now.getTime() - date.getTime();\n const diffDays = Math.floor(diffMs / (1000 * 60 * 60 * 24));\n\n if (diffDays === 0) return 'today';\n if (diffDays === 1) return 'yesterday';\n if (diffDays < 7) return `${diffDays} days ago`;\n if (diffDays < 30) return `${Math.floor(diffDays / 7)} weeks ago`;\n if (diffDays < 365) return `${Math.floor(diffDays / 30)} months ago`;\n return `${Math.floor(diffDays / 365)} years ago`;\n };\n\n // Toggle sort\n const handleSort = (field: SortField) => {\n if (sortField === field) {\n setSortOrder(prev => prev === 'desc' ? 'asc' : 'desc');\n } else {\n setSortField(field);\n setSortOrder('desc');\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 }}\n >\n {/* Header with owner info */}\n <div\n style={{\n padding: '16px',\n borderBottom: `1px solid ${theme.colors.border}`,\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n }}\n >\n {ownerInfo ? (\n <>\n <img\n src={ownerInfo.avatar_url}\n alt={ownerInfo.login}\n style={{\n width: 48,\n height: 48,\n borderRadius: ownerInfo.type === 'Organization' ? 8 : '50%',\n border: `2px solid ${theme.colors.border}`,\n }}\n />\n <div style={{ flex: 1 }}>\n <div style={{ display: 'flex', alignItems: 'center', gap: '8px' }}>\n <h2\n style={{\n margin: 0,\n fontSize: `${theme.fontSizes[4]}px`,\n fontWeight: theme.fontWeights.bold,\n }}\n >\n {ownerInfo.name || ownerInfo.login}\n </h2>\n {ownerInfo.type === 'Organization' ? (\n <Building2 size={16} color={theme.colors.textSecondary} />\n ) : (\n <User size={16} color={theme.colors.textSecondary} />\n )}\n </div>\n {ownerInfo.bio && (\n <p\n style={{\n margin: '4px 0 0',\n fontSize: `${theme.fontSizes[1]}px`,\n color: theme.colors.textSecondary,\n }}\n >\n {ownerInfo.bio}\n </p>\n )}\n <div\n style={{\n display: 'flex',\n gap: '12px',\n marginTop: '4px',\n fontSize: `${theme.fontSizes[1]}px`,\n color: theme.colors.textSecondary,\n }}\n >\n <span>{ownerInfo.public_repos} repositories</span>\n {ownerInfo.followers !== undefined && (\n <span>{formatNumber(ownerInfo.followers)} followers</span>\n )}\n </div>\n </div>\n <button\n onClick={fetchOwnerData}\n style={{\n padding: '8px',\n borderRadius: '6px',\n border: `1px solid ${theme.colors.border}`,\n background: 'transparent',\n cursor: 'pointer',\n color: theme.colors.textSecondary,\n }}\n title=\"Refresh\"\n >\n <RefreshCw size={16} />\n </button>\n </>\n ) : (\n <div style={{ display: 'flex', alignItems: 'center', gap: '12px' }}>\n <Github size={24} color={theme.colors.primary} />\n <h2\n style={{\n margin: 0,\n fontSize: `${theme.fontSizes[3]}px`,\n fontWeight: theme.fontWeights.semibold,\n }}\n >\n {owner || 'Repositories'}\n </h2>\n </div>\n )}\n </div>\n\n {/* Sort and Filter Controls */}\n {!isLoading && !error && repositories.length > 0 && (\n <div\n style={{\n padding: '8px 16px',\n borderBottom: `1px solid ${theme.colors.border}`,\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n flexWrap: 'wrap',\n }}\n >\n {/* Sort buttons */}\n <div style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <ArrowUpDown size={14} color={theme.colors.textSecondary} />\n {(['updated', 'stars', 'name'] as SortField[]).map((field) => (\n <button\n key={field}\n onClick={() => handleSort(field)}\n style={{\n padding: '4px 8px',\n borderRadius: '4px',\n border: 'none',\n background: sortField === field ? theme.colors.primary : theme.colors.backgroundSecondary,\n color: sortField === field ? theme.colors.background : theme.colors.text,\n fontSize: `${theme.fontSizes[1]}px`,\n cursor: 'pointer',\n textTransform: 'capitalize',\n }}\n >\n {field}\n {sortField === field && (sortOrder === 'desc' ? ' ↓' : ' ↑')}\n </button>\n ))}\n </div>\n\n {/* Language filter */}\n {languages.length > 0 && (\n <div style={{ display: 'flex', alignItems: 'center', gap: '4px', marginLeft: 'auto' }}>\n <Filter size={14} color={theme.colors.textSecondary} />\n <select\n value={languageFilter || ''}\n onChange={(e) => setLanguageFilter(e.target.value || null)}\n style={{\n padding: '4px 8px',\n borderRadius: '4px',\n border: `1px solid ${theme.colors.border}`,\n background: theme.colors.backgroundSecondary,\n color: theme.colors.text,\n fontSize: `${theme.fontSizes[1]}px`,\n cursor: 'pointer',\n }}\n >\n <option value=\"\">All languages</option>\n {languages.map((lang) => (\n <option key={lang} value={lang}>{lang}</option>\n ))}\n </select>\n </div>\n )}\n </div>\n )}\n\n {/* Loading State */}\n {isLoading && (\n <div\n style={{\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '16px',\n color: theme.colors.textSecondary,\n }}\n >\n <div\n style={{\n width: 32,\n height: 32,\n border: `3px solid ${theme.colors.border}`,\n borderTopColor: theme.colors.primary,\n borderRadius: '50%',\n animation: 'spin 1s linear infinite',\n }}\n />\n <span>Loading repositories...</span>\n </div>\n )}\n\n {/* Error State */}\n {error && (\n <div\n style={{\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '32px',\n textAlign: 'center',\n }}\n >\n <div\n style={{\n padding: '16px 24px',\n borderRadius: '8px',\n backgroundColor: `${theme.colors.error}15`,\n color: theme.colors.error,\n marginBottom: '16px',\n }}\n >\n {error}\n </div>\n <button\n onClick={fetchOwnerData}\n style={{\n padding: '8px 16px',\n borderRadius: '6px',\n border: 'none',\n background: theme.colors.primary,\n color: theme.colors.background,\n cursor: 'pointer',\n fontWeight: theme.fontWeights.medium,\n }}\n >\n Try Again\n </button>\n </div>\n )}\n\n {/* Empty State */}\n {!isLoading && !error && repositories.length === 0 && (\n <div\n style={{\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '32px',\n color: theme.colors.textSecondary,\n }}\n >\n <Github size={48} color={theme.colors.border} style={{ marginBottom: 16 }} />\n <p style={{ margin: 0 }}>No public repositories found</p>\n </div>\n )}\n\n {/* Repository List */}\n {!isLoading && !error && sortedAndFilteredRepos.length > 0 && (\n <div\n style={{\n flex: 1,\n overflowY: 'auto',\n padding: '8px',\n }}\n >\n {sortedAndFilteredRepos.map((repo) => (\n <button\n key={repo.id}\n type=\"button\"\n onClick={() => handleSelectRepository(repo)}\n onDoubleClick={() => handleOpenRepository(repo)}\n style={{\n width: '100%',\n padding: '12px',\n margin: '4px 0',\n borderRadius: '8px',\n border: selectedRepoId === repo.id\n ? `2px solid ${theme.colors.primary}`\n : `1px solid ${theme.colors.border}`,\n backgroundColor: selectedRepoId === repo.id\n ? `${theme.colors.primary}10`\n : theme.colors.surface,\n cursor: 'pointer',\n textAlign: 'left',\n display: 'flex',\n flexDirection: 'column',\n gap: '8px',\n transition: 'all 0.15s ease',\n }}\n >\n {/* Repo name */}\n <div style={{ display: 'flex', alignItems: 'center', gap: '8px' }}>\n <span\n style={{\n fontSize: `${theme.fontSizes[2]}px`,\n fontWeight: theme.fontWeights.semibold,\n color: theme.colors.primary,\n }}\n >\n {repo.name}\n </span>\n {repo.archived && (\n <span\n style={{\n fontSize: `${theme.fontSizes[0]}px`,\n padding: '2px 6px',\n borderRadius: '4px',\n backgroundColor: theme.colors.warning + '20',\n color: theme.colors.warning,\n }}\n >\n Archived\n </span>\n )}\n {repo.fork && (\n <span\n style={{\n fontSize: `${theme.fontSizes[0]}px`,\n padding: '2px 6px',\n borderRadius: '4px',\n backgroundColor: theme.colors.backgroundTertiary,\n color: theme.colors.textSecondary,\n }}\n >\n Fork\n </span>\n )}\n </div>\n\n {/* Description */}\n {repo.description && (\n <p\n style={{\n margin: 0,\n fontSize: `${theme.fontSizes[1]}px`,\n color: theme.colors.textSecondary,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n display: '-webkit-box',\n WebkitLineClamp: 2,\n WebkitBoxOrient: 'vertical',\n }}\n >\n {repo.description}\n </p>\n )}\n\n {/* Stats row */}\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '16px',\n fontSize: `${theme.fontSizes[1]}px`,\n color: theme.colors.textSecondary,\n }}\n >\n {repo.language && (\n <span style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <span\n style={{\n width: 10,\n height: 10,\n borderRadius: '50%',\n backgroundColor: theme.colors.info,\n }}\n />\n {repo.language}\n </span>\n )}\n <span style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <Star size={14} />\n {formatNumber(repo.stargazers_count || 0)}\n </span>\n <span style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <GitFork size={14} />\n {formatNumber(repo.forks_count || 0)}\n </span>\n {repo.updated_at && (\n <span style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <Calendar size={14} />\n {formatRelativeTime(repo.updated_at)}\n </span>\n )}\n <a\n href={repo.html_url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onClick={(e) => e.stopPropagation()}\n style={{\n marginLeft: 'auto',\n color: theme.colors.textSecondary,\n display: 'flex',\n alignItems: 'center',\n }}\n >\n <ExternalLink size={14} />\n </a>\n </div>\n </button>\n ))}\n </div>\n )}\n\n {/* Filtered empty state */}\n {!isLoading && !error && repositories.length > 0 && sortedAndFilteredRepos.length === 0 && (\n <div\n style={{\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '32px',\n color: theme.colors.textSecondary,\n }}\n >\n <Filter size={48} color={theme.colors.border} style={{ marginBottom: 16 }} />\n <p style={{ margin: 0 }}>No repositories match the current filter</p>\n <button\n onClick={() => setLanguageFilter(null)}\n style={{\n marginTop: '12px',\n padding: '8px 16px',\n borderRadius: '6px',\n border: `1px solid ${theme.colors.border}`,\n background: 'transparent',\n color: theme.colors.text,\n cursor: 'pointer',\n }}\n >\n Clear filter\n </button>\n </div>\n )}\n\n {/* CSS for spinner animation */}\n <style>{`\n @keyframes spin {\n to { transform: rotate(360deg); }\n }\n `}</style>\n </div>\n );\n};\n\n/**\n * OwnerRepositoriesPanel - A panel for browsing a GitHub user or organization's repositories\n *\n * Features:\n * - Shows all public repositories for a user/org\n * - Displays owner info (avatar, bio, repo count)\n * - Sort by updated, stars, or name\n * - Filter by programming language\n * - Click to preview README, double-click to open\n */\nexport const OwnerRepositoriesPanel: React.FC<PanelComponentProps & { owner?: string }> = (props) => {\n return (\n <ThemeProvider>\n <OwnerRepositoriesPanelContent {...props} />\n </ThemeProvider>\n );\n};\n\n/**\n * Panel metadata for registration\n */\nexport const OwnerRepositoriesPanelMetadata = {\n id: 'owner-repositories',\n name: 'Owner Repositories',\n description: 'Browse repositories for a GitHub user or organization',\n icon: 'github',\n version: '0.1.0',\n slices: [],\n surfaces: ['panel'],\n};\n","import React, { useState, useEffect, useCallback } from 'react';\nimport { ThemeProvider, useTheme } from '@principal-ade/industry-theme';\nimport {\n History,\n Star,\n GitFork,\n ExternalLink,\n Calendar,\n Trash2,\n X,\n Github,\n Building2,\n User,\n BookOpen,\n} from 'lucide-react';\n\nimport type { PanelComponentProps } from '../types';\nimport type { GitHubRepository, RepositoryPreviewEventPayload } from '../types/github';\n\nconst STORAGE_KEY = 'recent-repositories';\nconst OWNERS_STORAGE_KEY = 'recent-owners';\nconst MAX_RECENT_ITEMS = 50;\n\n/**\n * A simplified repository record stored in localStorage\n */\ninterface RecentRepository {\n type: 'repository';\n id: number;\n name: string;\n full_name: string;\n owner: {\n login: string;\n avatar_url?: string;\n };\n description: string | null;\n language: string | null;\n html_url: string;\n stargazers_count?: number;\n forks_count?: number;\n visitedAt: number;\n}\n\n/**\n * A simplified owner record stored in localStorage\n */\ninterface RecentOwner {\n type: 'owner';\n id: number;\n login: string;\n avatar_url?: string;\n name?: string;\n bio?: string;\n ownerType: 'User' | 'Organization';\n public_repos?: number;\n followers?: number;\n visitedAt: number;\n}\n\ntype RecentItem = RecentRepository | RecentOwner;\n\n/**\n * Load recent repositories from localStorage\n */\nfunction loadRecentRepositories(): RecentRepository[] {\n try {\n const stored = localStorage.getItem(STORAGE_KEY);\n if (stored) {\n const items = JSON.parse(stored);\n // Add type field if missing (migration from old format)\n return items.map((item: RecentRepository) => ({ ...item, type: 'repository' as const }));\n }\n } catch (err) {\n console.error('Failed to load recent repositories:', err);\n }\n return [];\n}\n\n/**\n * Load recent owners from localStorage\n */\nfunction loadRecentOwners(): RecentOwner[] {\n try {\n const stored = localStorage.getItem(OWNERS_STORAGE_KEY);\n if (stored) {\n return JSON.parse(stored);\n }\n } catch (err) {\n console.error('Failed to load recent owners:', err);\n }\n return [];\n}\n\n/**\n * Save recent repositories to localStorage\n */\nfunction saveRecentRepositories(repos: RecentRepository[]): void {\n try {\n localStorage.setItem(STORAGE_KEY, JSON.stringify(repos));\n } catch (err) {\n console.error('Failed to save recent repositories:', err);\n }\n}\n\n/**\n * Save recent owners to localStorage\n */\nfunction saveRecentOwners(owners: RecentOwner[]): void {\n try {\n localStorage.setItem(OWNERS_STORAGE_KEY, JSON.stringify(owners));\n } catch (err) {\n console.error('Failed to save recent owners:', err);\n }\n}\n\n/**\n * Add a repository to the recent list\n */\nexport function addRecentRepository(repo: GitHubRepository): void {\n const recent = loadRecentRepositories();\n\n // Remove if already exists\n const filtered = recent.filter(r => r.id !== repo.id);\n\n // Add to front with current timestamp\n const newEntry: RecentRepository = {\n type: 'repository',\n id: repo.id,\n name: repo.name,\n full_name: repo.full_name,\n owner: {\n login: repo.owner.login,\n avatar_url: repo.owner.avatar_url,\n },\n description: repo.description,\n language: repo.language,\n html_url: repo.html_url,\n stargazers_count: repo.stargazers_count,\n forks_count: repo.forks_count,\n visitedAt: Date.now(),\n };\n\n // Keep only MAX_RECENT_ITEMS\n const updated = [newEntry, ...filtered].slice(0, MAX_RECENT_ITEMS);\n saveRecentRepositories(updated);\n\n // Dispatch event so panels can update\n window.dispatchEvent(new CustomEvent('recent-items-updated'));\n}\n\n/**\n * Owner info structure for addRecentOwner\n */\nexport interface OwnerInfo {\n id: number;\n login: string;\n avatar_url?: string;\n name?: string;\n bio?: string;\n type: 'User' | 'Organization';\n public_repos?: number;\n followers?: number;\n}\n\n/**\n * Add an owner to the recent list\n */\nexport function addRecentOwner(owner: OwnerInfo): void {\n const recent = loadRecentOwners();\n\n // Remove if already exists\n const filtered = recent.filter(o => o.id !== owner.id);\n\n // Add to front with current timestamp\n const newEntry: RecentOwner = {\n type: 'owner',\n id: owner.id,\n login: owner.login,\n avatar_url: owner.avatar_url,\n name: owner.name,\n bio: owner.bio,\n ownerType: owner.type,\n public_repos: owner.public_repos,\n followers: owner.followers,\n visitedAt: Date.now(),\n };\n\n // Keep only MAX_RECENT_ITEMS\n const updated = [newEntry, ...filtered].slice(0, MAX_RECENT_ITEMS);\n saveRecentOwners(updated);\n\n // Dispatch event so panels can update\n window.dispatchEvent(new CustomEvent('recent-items-updated'));\n}\n\n/**\n * RecentRepositoriesPanelContent - Internal component that uses theme\n */\nconst RecentRepositoriesPanelContent: React.FC<PanelComponentProps & {\n onNavigate?: (path: string) => void;\n}> = ({\n events,\n onNavigate,\n}) => {\n const { theme } = useTheme();\n const [items, setItems] = useState<RecentItem[]>([]);\n const [selectedId, setSelectedId] = useState<string | null>(null);\n const [hoveredId, setHoveredId] = useState<string | null>(null);\n const [filter, setFilter] = useState<'all' | 'repos' | 'owners'>('all');\n\n // Create unique ID for an item\n const getItemId = (item: RecentItem): string => {\n return item.type === 'repository' ? `repo-${item.id}` : `owner-${item.id}`;\n };\n\n // Load and merge items on mount\n useEffect(() => {\n const loadItems = () => {\n const repos = loadRecentRepositories();\n const owners = loadRecentOwners();\n\n // Merge and sort by visitedAt\n const merged: RecentItem[] = [...repos, ...owners].sort(\n (a, b) => b.visitedAt - a.visitedAt\n );\n setItems(merged);\n };\n\n loadItems();\n\n // Listen for updates\n const handleUpdate = () => loadItems();\n window.addEventListener('recent-items-updated', handleUpdate);\n // Legacy event for backward compatibility\n window.addEventListener('recent-repositories-updated', handleUpdate);\n\n return () => {\n window.removeEventListener('recent-items-updated', handleUpdate);\n window.removeEventListener('recent-repositories-updated', handleUpdate);\n };\n }, []);\n\n // Filtered items\n const filteredItems = items.filter(item => {\n if (filter === 'all') return true;\n if (filter === 'repos') return item.type === 'repository';\n if (filter === 'owners') return item.type === 'owner';\n return true;\n });\n\n // Format relative time\n const formatRelativeTime = (timestamp: number): string => {\n const now = Date.now();\n const diffMs = now - timestamp;\n const diffMins = Math.floor(diffMs / (1000 * 60));\n const diffHours = Math.floor(diffMs / (1000 * 60 * 60));\n const diffDays = Math.floor(diffMs / (1000 * 60 * 60 * 24));\n\n if (diffMins < 1) return 'just now';\n if (diffMins < 60) return `${diffMins}m ago`;\n if (diffHours < 24) return `${diffHours}h ago`;\n if (diffDays === 1) return 'yesterday';\n if (diffDays < 7) return `${diffDays}d ago`;\n if (diffDays < 30) return `${Math.floor(diffDays / 7)}w ago`;\n return `${Math.floor(diffDays / 30)}mo ago`;\n };\n\n // Format number with K/M suffix\n const formatNumber = (num: number): string => {\n if (num >= 1000000) return `${(num / 1000000).toFixed(1)}M`;\n if (num >= 1000) return `${(num / 1000).toFixed(1)}K`;\n return num.toString();\n };\n\n // Handle repository click\n const handleSelectRepository = useCallback((repo: RecentRepository) => {\n setSelectedId(getItemId(repo));\n\n const githubRepo: GitHubRepository = {\n id: repo.id,\n name: repo.name,\n full_name: repo.full_name,\n owner: {\n login: repo.owner.login,\n avatar_url: repo.owner.avatar_url,\n },\n private: false,\n html_url: repo.html_url,\n description: repo.description,\n fork: false,\n clone_url: `https://github.com/${repo.full_name}.git`,\n language: repo.language,\n default_branch: 'main',\n stargazers_count: repo.stargazers_count,\n forks_count: repo.forks_count,\n };\n\n events.emit<RepositoryPreviewEventPayload>({\n type: 'repository:preview',\n source: 'recent-repositories-panel',\n timestamp: Date.now(),\n payload: {\n repository: githubRepo,\n source: 'click',\n },\n });\n }, [events]);\n\n // Handle repository double-click (open)\n const handleOpenRepository = useCallback((repo: RecentRepository) => {\n if (onNavigate) {\n onNavigate(`/${repo.full_name}`);\n } else {\n const githubRepo: GitHubRepository = {\n id: repo.id,\n name: repo.name,\n full_name: repo.full_name,\n owner: {\n login: repo.owner.login,\n avatar_url: repo.owner.avatar_url,\n },\n private: false,\n html_url: repo.html_url,\n description: repo.description,\n fork: false,\n clone_url: `https://github.com/${repo.full_name}.git`,\n language: repo.language,\n default_branch: 'main',\n stargazers_count: repo.stargazers_count,\n forks_count: repo.forks_count,\n };\n\n events.emit({\n type: 'repository:selected',\n source: 'recent-repositories-panel',\n timestamp: Date.now(),\n payload: {\n repository: githubRepo,\n source: 'click',\n },\n });\n }\n }, [events, onNavigate]);\n\n // Handle owner click\n const handleSelectOwner = useCallback((owner: RecentOwner) => {\n setSelectedId(getItemId(owner));\n\n events.emit({\n type: 'owner:preview',\n source: 'recent-repositories-panel',\n timestamp: Date.now(),\n payload: { owner },\n });\n }, [events]);\n\n // Handle owner double-click (open)\n const handleOpenOwner = useCallback((owner: RecentOwner) => {\n if (onNavigate) {\n onNavigate(`/${owner.login}`);\n } else {\n events.emit({\n type: 'owner:selected',\n source: 'recent-repositories-panel',\n timestamp: Date.now(),\n payload: { owner },\n });\n }\n }, [events, onNavigate]);\n\n // Remove a single item\n const handleRemoveItem = useCallback((item: RecentItem, e: React.MouseEvent) => {\n e.stopPropagation();\n\n if (item.type === 'repository') {\n const repos = loadRecentRepositories().filter(r => r.id !== item.id);\n saveRecentRepositories(repos);\n } else {\n const owners = loadRecentOwners().filter(o => o.id !== item.id);\n saveRecentOwners(owners);\n }\n\n setItems(prev => prev.filter(i => getItemId(i) !== getItemId(item)));\n\n if (selectedId === getItemId(item)) {\n setSelectedId(null);\n }\n }, [selectedId]);\n\n // Clear all history\n const handleClearAll = useCallback(() => {\n if (filter === 'all' || filter === 'repos') {\n saveRecentRepositories([]);\n }\n if (filter === 'all' || filter === 'owners') {\n saveRecentOwners([]);\n }\n\n if (filter === 'all') {\n setItems([]);\n } else {\n setItems(prev => prev.filter(item =>\n filter === 'repos' ? item.type !== 'repository' : item.type !== 'owner'\n ));\n }\n setSelectedId(null);\n }, [filter]);\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 }}\n >\n {/* Header */}\n <div\n style={{\n padding: '16px',\n borderBottom: `1px solid ${theme.colors.border}`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n }}\n >\n <div style={{ display: 'flex', alignItems: 'center', gap: '12px' }}>\n <History size={24} color={theme.colors.primary} />\n <h2\n style={{\n margin: 0,\n fontSize: `${theme.fontSizes[3]}px`,\n fontWeight: theme.fontWeights.semibold,\n }}\n >\n Recent\n </h2>\n </div>\n {items.length > 0 && (\n <button\n onClick={handleClearAll}\n style={{\n padding: '6px 12px',\n borderRadius: '6px',\n border: `1px solid ${theme.colors.border}`,\n background: 'transparent',\n cursor: 'pointer',\n color: theme.colors.textSecondary,\n fontSize: `${theme.fontSizes[1]}px`,\n display: 'flex',\n alignItems: 'center',\n gap: '6px',\n }}\n title=\"Clear history\"\n >\n <Trash2 size={14} />\n Clear\n </button>\n )}\n </div>\n\n {/* Filter tabs */}\n {items.length > 0 && (\n <div\n style={{\n padding: '8px 16px',\n borderBottom: `1px solid ${theme.colors.border}`,\n display: 'flex',\n gap: '4px',\n }}\n >\n {[\n { key: 'all', label: 'All' },\n { key: 'repos', label: 'Repositories' },\n { key: 'owners', label: 'Owners' },\n ].map(({ key, label }) => (\n <button\n key={key}\n onClick={() => setFilter(key as typeof filter)}\n style={{\n padding: '6px 12px',\n borderRadius: '6px',\n border: 'none',\n background: filter === key ? theme.colors.primary : theme.colors.backgroundSecondary,\n color: filter === key ? '#fff' : theme.colors.text,\n fontSize: `${theme.fontSizes[1]}px`,\n cursor: 'pointer',\n fontWeight: filter === key ? theme.fontWeights.semibold : theme.fontWeights.body,\n }}\n >\n {label}\n </button>\n ))}\n </div>\n )}\n\n {/* Empty State */}\n {filteredItems.length === 0 && (\n <div\n style={{\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '32px',\n color: theme.colors.textSecondary,\n }}\n >\n <Github size={48} color={theme.colors.border} style={{ marginBottom: 16 }} />\n <p style={{ margin: 0, fontSize: `${theme.fontSizes[2]}px` }}>\n {items.length === 0 ? 'No recent activity' : 'No items match filter'}\n </p>\n <p style={{ margin: '8px 0 0', fontSize: `${theme.fontSizes[1]}px` }}>\n {items.length === 0\n ? 'Repositories and owners you visit will appear here'\n : 'Try a different filter'}\n </p>\n </div>\n )}\n\n {/* Items List */}\n {filteredItems.length > 0 && (\n <div\n style={{\n flex: 1,\n overflowY: 'auto',\n padding: '8px',\n }}\n >\n {filteredItems.map((item) => {\n const itemId = getItemId(item);\n const isSelected = selectedId === itemId;\n const isHovered = hoveredId === itemId;\n\n if (item.type === 'repository') {\n return (\n <button\n key={itemId}\n type=\"button\"\n onClick={() => handleSelectRepository(item)}\n onDoubleClick={() => handleOpenRepository(item)}\n onMouseEnter={() => setHoveredId(itemId)}\n onMouseLeave={() => setHoveredId(null)}\n style={{\n width: '100%',\n padding: '12px',\n margin: '4px 0',\n borderRadius: '8px',\n border: isSelected\n ? `2px solid ${theme.colors.primary}`\n : `1px solid ${theme.colors.border}`,\n backgroundColor: isSelected\n ? `${theme.colors.primary}10`\n : theme.colors.surface,\n cursor: 'pointer',\n textAlign: 'left',\n display: 'flex',\n flexDirection: 'column',\n gap: '8px',\n transition: 'all 0.15s ease',\n position: 'relative',\n }}\n >\n {isHovered && (\n <button\n onClick={(e) => handleRemoveItem(item, e)}\n style={{\n position: 'absolute',\n top: '8px',\n right: '8px',\n padding: '4px',\n borderRadius: '4px',\n border: 'none',\n background: theme.colors.backgroundSecondary,\n cursor: 'pointer',\n color: theme.colors.textSecondary,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n title=\"Remove from history\"\n >\n <X size={14} />\n </button>\n )}\n\n <div style={{ display: 'flex', alignItems: 'center', gap: '10px' }}>\n <BookOpen size={16} color={theme.colors.textSecondary} />\n {item.owner.avatar_url && (\n <img\n src={item.owner.avatar_url}\n alt={item.owner.login}\n style={{\n width: 24,\n height: 24,\n borderRadius: '50%',\n border: `1px solid ${theme.colors.border}`,\n }}\n />\n )}\n <div style={{ display: 'flex', flexDirection: 'column', minWidth: 0 }}>\n <span\n style={{\n fontSize: `${theme.fontSizes[1]}px`,\n color: theme.colors.textSecondary,\n }}\n >\n {item.owner.login}\n </span>\n <span\n style={{\n fontSize: `${theme.fontSizes[2]}px`,\n fontWeight: theme.fontWeights.semibold,\n color: theme.colors.primary,\n }}\n >\n {item.name}\n </span>\n </div>\n </div>\n\n {item.description && (\n <p\n style={{\n margin: 0,\n fontSize: `${theme.fontSizes[1]}px`,\n color: theme.colors.textSecondary,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n display: '-webkit-box',\n WebkitLineClamp: 2,\n WebkitBoxOrient: 'vertical',\n }}\n >\n {item.description}\n </p>\n )}\n\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '16px',\n fontSize: `${theme.fontSizes[1]}px`,\n color: theme.colors.textSecondary,\n }}\n >\n {item.language && (\n <span style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <span\n style={{\n width: 10,\n height: 10,\n borderRadius: '50%',\n backgroundColor: theme.colors.info,\n }}\n />\n {item.language}\n </span>\n )}\n {item.stargazers_count !== undefined && (\n <span style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <Star size={14} />\n {formatNumber(item.stargazers_count)}\n </span>\n )}\n {item.forks_count !== undefined && (\n <span style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <GitFork size={14} />\n {formatNumber(item.forks_count)}\n </span>\n )}\n <span style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <Calendar size={14} />\n {formatRelativeTime(item.visitedAt)}\n </span>\n <a\n href={item.html_url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onClick={(e) => e.stopPropagation()}\n style={{\n marginLeft: 'auto',\n color: theme.colors.textSecondary,\n display: 'flex',\n alignItems: 'center',\n }}\n >\n <ExternalLink size={14} />\n </a>\n </div>\n </button>\n );\n }\n\n // Owner item\n return (\n <button\n key={itemId}\n type=\"button\"\n onClick={() => handleSelectOwner(item)}\n onDoubleClick={() => handleOpenOwner(item)}\n onMouseEnter={() => setHoveredId(itemId)}\n onMouseLeave={() => setHoveredId(null)}\n style={{\n width: '100%',\n padding: '12px',\n margin: '4px 0',\n borderRadius: '8px',\n border: isSelected\n ? `2px solid ${theme.colors.primary}`\n : `1px solid ${theme.colors.border}`,\n backgroundColor: isSelected\n ? `${theme.colors.primary}10`\n : theme.colors.surface,\n cursor: 'pointer',\n textAlign: 'left',\n display: 'flex',\n flexDirection: 'column',\n gap: '8px',\n transition: 'all 0.15s ease',\n position: 'relative',\n }}\n >\n {isHovered && (\n <button\n onClick={(e) => handleRemoveItem(item, e)}\n style={{\n position: 'absolute',\n top: '8px',\n right: '8px',\n padding: '4px',\n borderRadius: '4px',\n border: 'none',\n background: theme.colors.backgroundSecondary,\n cursor: 'pointer',\n color: theme.colors.textSecondary,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n title=\"Remove from history\"\n >\n <X size={14} />\n </button>\n )}\n\n <div style={{ display: 'flex', alignItems: 'center', gap: '10px' }}>\n {item.ownerType === 'Organization' ? (\n <Building2 size={16} color={theme.colors.textSecondary} />\n ) : (\n <User size={16} color={theme.colors.textSecondary} />\n )}\n {item.avatar_url && (\n <img\n src={item.avatar_url}\n alt={item.login}\n style={{\n width: 32,\n height: 32,\n borderRadius: item.ownerType === 'Organization' ? 8 : '50%',\n border: `1px solid ${theme.colors.border}`,\n }}\n />\n )}\n <div style={{ display: 'flex', flexDirection: 'column', minWidth: 0 }}>\n <span\n style={{\n fontSize: `${theme.fontSizes[2]}px`,\n fontWeight: theme.fontWeights.semibold,\n color: theme.colors.primary,\n }}\n >\n {item.name || item.login}\n </span>\n {item.name && (\n <span\n style={{\n fontSize: `${theme.fontSizes[1]}px`,\n color: theme.colors.textSecondary,\n }}\n >\n @{item.login}\n </span>\n )}\n </div>\n </div>\n\n {item.bio && (\n <p\n style={{\n margin: 0,\n fontSize: `${theme.fontSizes[1]}px`,\n color: theme.colors.textSecondary,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n display: '-webkit-box',\n WebkitLineClamp: 2,\n WebkitBoxOrient: 'vertical',\n }}\n >\n {item.bio}\n </p>\n )}\n\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '16px',\n fontSize: `${theme.fontSizes[1]}px`,\n color: theme.colors.textSecondary,\n }}\n >\n {item.public_repos !== undefined && (\n <span style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <BookOpen size={14} />\n {formatNumber(item.public_repos)} repos\n </span>\n )}\n {item.followers !== undefined && (\n <span style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <User size={14} />\n {formatNumber(item.followers)} followers\n </span>\n )}\n <span style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <Calendar size={14} />\n {formatRelativeTime(item.visitedAt)}\n </span>\n <a\n href={`https://github.com/${item.login}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onClick={(e) => e.stopPropagation()}\n style={{\n marginLeft: 'auto',\n color: theme.colors.textSecondary,\n display: 'flex',\n alignItems: 'center',\n }}\n >\n <ExternalLink size={14} />\n </a>\n </div>\n </button>\n );\n })}\n </div>\n )}\n </div>\n );\n};\n\n/**\n * RecentRepositoriesPanel - A panel for displaying recently visited repositories and owners\n *\n * Features:\n * - Persists visited repos and owners in localStorage\n * - Shows owner avatar, repo name, description\n * - Displays stars, forks, language, and last visited time\n * - Filter by repositories or owners\n * - Click to preview, double-click to open\n * - Remove individual items or clear all history\n */\nexport const RecentRepositoriesPanel: React.FC<PanelComponentProps & {\n onNavigate?: (path: string) => void;\n}> = (props) => {\n return (\n <ThemeProvider>\n <RecentRepositoriesPanelContent {...props} />\n </ThemeProvider>\n );\n};\n\n/**\n * Panel metadata for registration\n */\nexport const RecentRepositoriesPanelMetadata = {\n id: 'recent-repositories',\n name: 'Recent',\n description: 'View and navigate to recently visited repositories and owners',\n icon: 'history',\n version: '0.1.0',\n slices: [],\n surfaces: ['panel'],\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Logo = void 0;\nconst react_1 = __importDefault(require(\"react\"));\nconst Logo = ({ width = 150, height = 150, color = \"currentColor\", particleColor, opacity = 0.9, }) => {\n const finalParticleColor = particleColor || color;\n return (react_1.default.createElement(\"svg\", { width: width, height: height, viewBox: \"0 0 200 200\", xmlns: \"http://www.w3.org/2000/svg\", style: { opacity } },\n react_1.default.createElement(\"defs\", null,\n react_1.default.createElement(\"radialGradient\", { id: \"sphereGlow\", cx: \"50%\", cy: \"50%\", r: \"50%\" },\n react_1.default.createElement(\"stop\", { offset: \"0%\", style: { stopColor: color, stopOpacity: 0.3 } }),\n react_1.default.createElement(\"stop\", { offset: \"100%\", style: { stopColor: color, stopOpacity: 0 } })),\n react_1.default.createElement(\"radialGradient\", { id: \"centerPulse\", cx: \"50%\", cy: \"50%\", r: \"50%\" },\n react_1.default.createElement(\"stop\", { offset: \"0%\", style: { stopColor: color, stopOpacity: 0.8 } },\n react_1.default.createElement(\"animate\", { attributeName: \"stop-opacity\", values: \"0.8;0.3;0.8\", dur: \"2s\", repeatCount: \"indefinite\" })),\n react_1.default.createElement(\"stop\", { offset: \"100%\", style: { stopColor: color, stopOpacity: 0 } }))),\n react_1.default.createElement(\"circle\", { cx: \"100\", cy: \"100\", r: \"80\", fill: \"url(#sphereGlow)\", opacity: \"0.5\" }),\n react_1.default.createElement(\"circle\", { r: \"2.5\", fill: finalParticleColor, cx: \"167\", cy: \"100\", opacity: \"0\" },\n react_1.default.createElement(\"animateMotion\", { dur: \"8s\", repeatCount: \"indefinite\", begin: \"1s\", path: \"M 0,0 A 67,27 0 1,0 -134,0 A 67,27 0 1,0 0,0\" }),\n react_1.default.createElement(\"animate\", { attributeName: \"opacity\", values: \"0;1;0.5;0;0\", keyTimes: \"0;0.2;0.4;0.5;1\", dur: \"8s\", begin: \"1s\", repeatCount: \"indefinite\" })),\n react_1.default.createElement(\"circle\", { r: \"2.5\", fill: finalParticleColor, cx: \"167\", cy: \"100\", opacity: \"0\" },\n react_1.default.createElement(\"animateMotion\", { dur: \"8s\", repeatCount: \"indefinite\", begin: \"2s\", path: \"M 0,0 A 67,40 0 1,0 -134,0 A 67,40 0 1,0 0,0\" }),\n react_1.default.createElement(\"animate\", { attributeName: \"opacity\", values: \"0;1;0.5;0;0\", keyTimes: \"0;0.2;0.4;0.5;1\", dur: \"8s\", begin: \"2s\", repeatCount: \"indefinite\" })),\n react_1.default.createElement(\"circle\", { r: \"2.5\", fill: finalParticleColor, cx: \"167\", cy: \"100\", opacity: \"0\" },\n react_1.default.createElement(\"animateMotion\", { dur: \"8s\", repeatCount: \"indefinite\", begin: \"3s\", path: \"M 0,0 A 67,53 0 1,0 -134,0 A 67,53 0 1,0 0,0\" }),\n react_1.default.createElement(\"animate\", { attributeName: \"opacity\", values: \"0;1;0.5;0;0\", keyTimes: \"0;0.2;0.4;0.5;1\", dur: \"8s\", begin: \"3s\", repeatCount: \"indefinite\" })),\n react_1.default.createElement(\"circle\", { r: \"2.5\", fill: finalParticleColor, cx: \"100\", cy: \"167\", opacity: \"0\" },\n react_1.default.createElement(\"animateMotion\", { dur: \"8s\", repeatCount: \"indefinite\", begin: \"1.5s\", path: \"M 0,0 A 27,67 0 1,0 0,-134 A 27,67 0 1,0 0,0\" }),\n react_1.default.createElement(\"animate\", { attributeName: \"opacity\", values: \"0;1;0.5;0;0\", keyTimes: \"0;0.2;0.4;0.5;1\", dur: \"8s\", begin: \"1.5s\", repeatCount: \"indefinite\" })),\n react_1.default.createElement(\"circle\", { r: \"2.5\", fill: finalParticleColor, cx: \"100\", cy: \"167\", opacity: \"0\" },\n react_1.default.createElement(\"animateMotion\", { dur: \"8s\", repeatCount: \"indefinite\", begin: \"2.5s\", path: \"M 0,0 A 40,67 0 1,0 0,-134 A 40,67 0 1,0 0,0\" }),\n react_1.default.createElement(\"animate\", { attributeName: \"opacity\", values: \"0;1;0.5;0;0\", keyTimes: \"0;0.2;0.4;0.5;1\", dur: \"8s\", begin: \"2.5s\", repeatCount: \"indefinite\" })),\n react_1.default.createElement(\"circle\", { r: \"2.5\", fill: finalParticleColor, cx: \"100\", cy: \"167\", opacity: \"0\" },\n react_1.default.createElement(\"animateMotion\", { dur: \"8s\", repeatCount: \"indefinite\", begin: \"3.5s\", path: \"M 0,0 A 53,67 0 1,0 0,-134 A 53,67 0 1,0 0,0\" }),\n react_1.default.createElement(\"animate\", { attributeName: \"opacity\", values: \"0;1;0.5;0;0\", keyTimes: \"0;0.2;0.4;0.5;1\", dur: \"8s\", begin: \"3.5s\", repeatCount: \"indefinite\" })),\n react_1.default.createElement(\"circle\", { cx: \"93\", cy: \"85\", r: \"2\", fill: finalParticleColor, opacity: \"0.9\" }),\n react_1.default.createElement(\"circle\", { cx: \"93\", cy: \"90\", r: \"2\", fill: finalParticleColor, opacity: \"0.9\" }),\n react_1.default.createElement(\"circle\", { cx: \"93\", cy: \"95\", r: \"2\", fill: finalParticleColor, opacity: \"0.9\" }),\n react_1.default.createElement(\"circle\", { cx: \"93\", cy: \"100\", r: \"2\", fill: finalParticleColor, opacity: \"0.9\" }),\n react_1.default.createElement(\"circle\", { cx: \"93\", cy: \"105\", r: \"2\", fill: finalParticleColor, opacity: \"0.9\" }),\n react_1.default.createElement(\"circle\", { cx: \"93\", cy: \"110\", r: \"2\", fill: finalParticleColor, opacity: \"0.9\" }),\n react_1.default.createElement(\"circle\", { cx: \"93\", cy: \"115\", r: \"2\", fill: finalParticleColor, opacity: \"0.9\" }),\n react_1.default.createElement(\"circle\", { cx: \"98\", cy: \"85\", r: \"2\", fill: finalParticleColor, opacity: \"0.9\" }),\n react_1.default.createElement(\"circle\", { cx: \"103\", cy: \"85\", r: \"2\", fill: finalParticleColor, opacity: \"0.9\" }),\n react_1.default.createElement(\"circle\", { cx: \"108\", cy: \"90\", r: \"2\", fill: finalParticleColor, opacity: \"0.9\" }),\n react_1.default.createElement(\"circle\", { cx: \"108\", cy: \"95\", r: \"2\", fill: finalParticleColor, opacity: \"0.9\" }),\n react_1.default.createElement(\"circle\", { cx: \"103\", cy: \"100\", r: \"2\", fill: finalParticleColor, opacity: \"0.9\" }),\n react_1.default.createElement(\"circle\", { cx: \"98\", cy: \"100\", r: \"2\", fill: finalParticleColor, opacity: \"0.9\" }),\n react_1.default.createElement(\"circle\", { cx: \"100\", cy: \"100\", r: \"67\", fill: \"none\", stroke: color, strokeWidth: \"1.5\", opacity: \"0.9\" }),\n react_1.default.createElement(\"path\", { d: \"M 33,100 A 67,13 0 0,1 73,88.1\", fill: \"none\", stroke: color, strokeWidth: \"1\", opacity: \"0.7\" }),\n react_1.default.createElement(\"path\", { d: \"M 127,88.1 A 67,13 0 0,1 167,100\", fill: \"none\", stroke: color, strokeWidth: \"1\", opacity: \"0.7\" }),\n react_1.default.createElement(\"path\", { d: \"M 33,100 A 67,13 0 0,0 73,111.9\", fill: \"none\", stroke: color, strokeWidth: \"1\", opacity: \"0.7\" }),\n react_1.default.createElement(\"path\", { d: \"M 127,111.9 A 67,13 0 0,0 167,100\", fill: \"none\", stroke: color, strokeWidth: \"1\", opacity: \"0.7\" }),\n react_1.default.createElement(\"ellipse\", { cx: \"100\", cy: \"100\", rx: \"67\", ry: \"27\", fill: \"none\", stroke: color, strokeWidth: \"1\", opacity: \"0.7\" }),\n react_1.default.createElement(\"ellipse\", { cx: \"100\", cy: \"100\", rx: \"67\", ry: \"40\", fill: \"none\", stroke: color, strokeWidth: \"1\", opacity: \"0.7\" }),\n react_1.default.createElement(\"ellipse\", { cx: \"100\", cy: \"100\", rx: \"67\", ry: \"53\", fill: \"none\", stroke: color, strokeWidth: \"1\", opacity: \"0.7\" }),\n react_1.default.createElement(\"path\", { d: \"M 100,33 A 13,67 0 0,0 87,73\", fill: \"none\", stroke: color, strokeWidth: \"1\", opacity: \"0.7\" }),\n react_1.default.createElement(\"path\", { d: \"M 113,73 A 13,67 0 0,0 100,33\", fill: \"none\", stroke: color, strokeWidth: \"1\", opacity: \"0.7\" }),\n react_1.default.createElement(\"path\", { d: \"M 100,167 A 13,67 0 0,1 87,127\", fill: \"none\", stroke: color, strokeWidth: \"1\", opacity: \"0.7\" }),\n react_1.default.createElement(\"path\", { d: \"M 113,127 A 13,67 0 0,1 100,167\", fill: \"none\", stroke: color, strokeWidth: \"1\", opacity: \"0.7\" }),\n react_1.default.createElement(\"ellipse\", { cx: \"100\", cy: \"100\", rx: \"27\", ry: \"67\", fill: \"none\", stroke: color, strokeWidth: \"1\", opacity: \"0.7\" }),\n react_1.default.createElement(\"ellipse\", { cx: \"100\", cy: \"100\", rx: \"40\", ry: \"67\", fill: \"none\", stroke: color, strokeWidth: \"1\", opacity: \"0.7\" }),\n react_1.default.createElement(\"ellipse\", { cx: \"100\", cy: \"100\", rx: \"53\", ry: \"67\", fill: \"none\", stroke: color, strokeWidth: \"1\", opacity: \"0.7\" }),\n react_1.default.createElement(\"ellipse\", { cx: \"100\", cy: \"100\", rx: \"67\", ry: \"33\", fill: \"none\", stroke: color, strokeWidth: \"1\", opacity: \"0.6\", transform: \"rotate(30 100 100)\" }),\n react_1.default.createElement(\"ellipse\", { cx: \"100\", cy: \"100\", rx: \"67\", ry: \"33\", fill: \"none\", stroke: color, strokeWidth: \"1\", opacity: \"0.6\", transform: \"rotate(60 100 100)\" }),\n react_1.default.createElement(\"ellipse\", { cx: \"100\", cy: \"100\", rx: \"67\", ry: \"33\", fill: \"none\", stroke: color, strokeWidth: \"1\", opacity: \"0.6\", transform: \"rotate(120 100 100)\" }),\n react_1.default.createElement(\"ellipse\", { cx: \"100\", cy: \"100\", rx: \"67\", ry: \"33\", fill: \"none\", stroke: color, strokeWidth: \"1\", opacity: \"0.6\", transform: \"rotate(150 100 100)\" }),\n react_1.default.createElement(\"line\", { x1: \"33\", y1: \"100\", x2: \"73\", y2: \"100\", stroke: color, strokeWidth: \"1.5\", opacity: \"0.8\" }),\n react_1.default.createElement(\"line\", { x1: \"127\", y1: \"100\", x2: \"167\", y2: \"100\", stroke: color, strokeWidth: \"1.5\", opacity: \"0.8\" }),\n react_1.default.createElement(\"line\", { x1: \"100\", y1: \"33\", x2: \"100\", y2: \"73\", stroke: color, strokeWidth: \"1.5\", opacity: \"0.8\" }),\n react_1.default.createElement(\"line\", { x1: \"100\", y1: \"127\", x2: \"100\", y2: \"167\", stroke: color, strokeWidth: \"1.5\", opacity: \"0.8\" }),\n react_1.default.createElement(\"circle\", { r: \"2.5\", fill: finalParticleColor, cx: \"167\", cy: \"100\", opacity: \"0\" },\n react_1.default.createElement(\"animateMotion\", { dur: \"8s\", repeatCount: \"indefinite\", begin: \"1s\", path: \"M 0,0 A 67,27 0 1,0 -134,0 A 67,27 0 1,0 0,0\" }),\n react_1.default.createElement(\"animate\", { attributeName: \"opacity\", values: \"0;0;0.5;1;1;0.5;0\", keyTimes: \"0;0.5;0.6;0.75;0.9;0.95;1\", dur: \"8s\", begin: \"1s\", repeatCount: \"indefinite\" })),\n react_1.default.createElement(\"circle\", { r: \"2.5\", fill: finalParticleColor, cx: \"167\", cy: \"100\", opacity: \"0\" },\n react_1.default.createElement(\"animateMotion\", { dur: \"8s\", repeatCount: \"indefinite\", begin: \"2s\", path: \"M 0,0 A 67,40 0 1,0 -134,0 A 67,40 0 1,0 0,0\" }),\n react_1.default.createElement(\"animate\", { attributeName: \"opacity\", values: \"0;0;0.5;1;1;0.5;0\", keyTimes: \"0;0.5;0.6;0.75;0.9;0.95;1\", dur: \"8s\", begin: \"2s\", repeatCount: \"indefinite\" })),\n react_1.default.createElement(\"circle\", { r: \"2.5\", fill: finalParticleColor, cx: \"167\", cy: \"100\", opacity: \"0\" },\n react_1.default.createElement(\"animateMotion\", { dur: \"8s\", repeatCount: \"indefinite\", begin: \"3s\", path: \"M 0,0 A 67,53 0 1,0 -134,0 A 67,53 0 1,0 0,0\" }),\n react_1.default.createElement(\"animate\", { attributeName: \"opacity\", values: \"0;0;0.5;1;1;0.5;0\", keyTimes: \"0;0.5;0.6;0.75;0.9;0.95;1\", dur: \"8s\", begin: \"3s\", repeatCount: \"indefinite\" })),\n react_1.default.createElement(\"circle\", { r: \"2.5\", fill: finalParticleColor, cx: \"100\", cy: \"167\", opacity: \"0\" },\n react_1.default.createElement(\"animateMotion\", { dur: \"8s\", repeatCount: \"indefinite\", begin: \"1.5s\", path: \"M 0,0 A 27,67 0 1,0 0,-134 A 27,67 0 1,0 0,0\" }),\n react_1.default.createElement(\"animate\", { attributeName: \"opacity\", values: \"0;0;0.5;1;1;0.5;0\", keyTimes: \"0;0.5;0.6;0.75;0.9;0.95;1\", dur: \"8s\", begin: \"1.5s\", repeatCount: \"indefinite\" })),\n react_1.default.createElement(\"circle\", { r: \"2.5\", fill: finalParticleColor, cx: \"100\", cy: \"167\", opacity: \"0\" },\n react_1.default.createElement(\"animateMotion\", { dur: \"8s\", repeatCount: \"indefinite\", begin: \"2.5s\", path: \"M 0,0 A 40,67 0 1,0 0,-134 A 40,67 0 1,0 0,0\" }),\n react_1.default.createElement(\"animate\", { attributeName: \"opacity\", values: \"0;0;0.5;1;1;0.5;0\", keyTimes: \"0;0.5;0.6;0.75;0.9;0.95;1\", dur: \"8s\", begin: \"2.5s\", repeatCount: \"indefinite\" })),\n react_1.default.createElement(\"circle\", { r: \"2.5\", fill: finalParticleColor, cx: \"100\", cy: \"167\", opacity: \"0\" },\n react_1.default.createElement(\"animateMotion\", { dur: \"8s\", repeatCount: \"indefinite\", begin: \"3.5s\", path: \"M 0,0 A 53,67 0 1,0 0,-134 A 53,67 0 1,0 0,0\" }),\n react_1.default.createElement(\"animate\", { attributeName: \"opacity\", values: \"0;0;0.5;1;1;0.5;0\", keyTimes: \"0;0.5;0.6;0.75;0.9;0.95;1\", dur: \"8s\", begin: \"3.5s\", repeatCount: \"indefinite\" }))));\n};\nexports.Logo = Logo;\n","import React, { useState, useCallback } from 'react';\nimport { ThemeProvider, useTheme } from '@principal-ade/industry-theme';\nimport { Logo } from '@principal-ai/logo-component';\nimport {\n GitBranch,\n MessageSquare,\n Network,\n ArrowRight,\n Github,\n} from 'lucide-react';\n\nimport type { PanelComponentProps } from '../types';\n\n/**\n * Parse a GitHub URL or owner/repo string\n */\nfunction parseGitHubInput(input: string): { owner: string; repo: string } | null {\n const trimmed = input.trim();\n\n // Try full URL: https://github.com/owner/repo\n const urlMatch = trimmed.match(/github\\.com\\/([^/]+)\\/([^/]+)/);\n if (urlMatch) {\n return { owner: urlMatch[1], repo: urlMatch[2].replace(/\\.git$/, '') };\n }\n\n // Try owner/repo format\n const shortMatch = trimmed.match(/^([^/]+)\\/([^/]+)$/);\n if (shortMatch) {\n return { owner: shortMatch[1], repo: shortMatch[2] };\n }\n\n return null;\n}\n\n/**\n * Feature card component\n */\nconst FeatureCard: React.FC<{\n icon: React.ReactNode;\n title: string;\n description: string;\n theme: ReturnType<typeof useTheme>['theme'];\n}> = ({ icon, title, description, theme }) => (\n <div\n style={{\n padding: '24px',\n borderRadius: '12px',\n backgroundColor: theme.colors.surface,\n border: `1px solid ${theme.colors.border}`,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: '12px',\n flex: 1,\n minWidth: '200px',\n textAlign: 'center',\n }}\n >\n <div\n style={{\n width: 48,\n height: 48,\n borderRadius: '10px',\n backgroundColor: `${theme.colors.primary}15`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: theme.colors.primary,\n }}\n >\n {icon}\n </div>\n <h3\n style={{\n margin: 0,\n fontSize: `${theme.fontSizes[3]}px`,\n fontWeight: theme.fontWeights.semibold,\n color: theme.colors.text,\n }}\n >\n {title}\n </h3>\n <p\n style={{\n margin: 0,\n fontSize: `${theme.fontSizes[2]}px`,\n color: theme.colors.textSecondary,\n lineHeight: 1.5,\n }}\n >\n {description}\n </p>\n </div>\n);\n\n/**\n * WelcomePanelContent - Internal component that uses theme\n */\nconst WelcomePanelContent: React.FC<PanelComponentProps & { onNavigate?: (owner: string, repo: string) => void }> = ({\n onNavigate,\n}) => {\n const { theme } = useTheme();\n const [repoInput, setRepoInput] = useState('');\n const [error, setError] = useState<string | null>(null);\n\n const handleSubmit = useCallback((e: React.FormEvent) => {\n e.preventDefault();\n setError(null);\n\n const parsed = parseGitHubInput(repoInput);\n if (!parsed) {\n setError('Enter a valid format: owner/repo or GitHub URL');\n return;\n }\n\n if (onNavigate) {\n onNavigate(parsed.owner, parsed.repo);\n } else {\n // Default: navigate via window.location\n window.location.href = `/${parsed.owner}/${parsed.repo}`;\n }\n }, [repoInput, onNavigate]);\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 overflowY: 'auto',\n }}\n >\n {/* Hero Section */}\n <div\n style={{\n padding: '48px 32px',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n textAlign: 'center',\n borderBottom: `1px solid ${theme.colors.border}`,\n }}\n >\n {/* Logo/Brand */}\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '16px',\n marginBottom: '24px',\n }}\n >\n <Logo\n width={56}\n height={56}\n color={theme.colors.primary}\n />\n <span\n style={{\n fontSize: `${theme.fontSizes[6] || 32}px`,\n fontWeight: theme.fontWeights.bold,\n color: theme.colors.text,\n }}\n >\n Principal AI\n </span>\n <Logo\n width={56}\n height={56}\n color={theme.colors.primary}\n />\n </div>\n\n {/* Tagline */}\n <h1\n style={{\n margin: '0 0 32px',\n fontSize: `${theme.fontSizes[6] || 32}px`,\n fontWeight: theme.fontWeights.bold,\n color: theme.colors.text,\n }}\n >\n Explore software like never before\n </h1>\n\n {/* Search Input */}\n <form\n onSubmit={handleSubmit}\n style={{\n width: '100%',\n maxWidth: '500px',\n }}\n >\n <div\n style={{\n display: 'flex',\n gap: '8px',\n padding: '6px',\n borderRadius: '12px',\n backgroundColor: theme.colors.surface,\n border: `2px solid ${error ? theme.colors.error : theme.colors.border}`,\n }}\n >\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n paddingLeft: '12px',\n color: theme.colors.textSecondary,\n }}\n >\n <Github size={20} />\n </div>\n <input\n type=\"text\"\n value={repoInput}\n onChange={(e) => {\n setRepoInput(e.target.value);\n setError(null);\n }}\n placeholder=\"owner/repo or paste GitHub URL\"\n style={{\n flex: 1,\n padding: '12px 8px',\n border: 'none',\n background: 'transparent',\n color: theme.colors.text,\n fontSize: `${theme.fontSizes[2]}px`,\n outline: 'none',\n }}\n />\n <button\n type=\"submit\"\n style={{\n padding: '12px 20px',\n borderRadius: '8px',\n border: 'none',\n backgroundColor: theme.colors.primary,\n color: '#fff',\n fontSize: `${theme.fontSizes[2]}px`,\n fontWeight: theme.fontWeights.semibold,\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n }}\n >\n Explore\n <ArrowRight size={18} />\n </button>\n </div>\n {error && (\n <p\n style={{\n margin: '8px 0 0',\n fontSize: `${theme.fontSizes[1]}px`,\n color: theme.colors.error,\n }}\n >\n {error}\n </p>\n )}\n </form>\n </div>\n\n {/* Features Section */}\n <div\n style={{\n padding: '48px 32px',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n }}\n >\n <div\n style={{\n display: 'flex',\n gap: '20px',\n flexWrap: 'wrap',\n justifyContent: 'center',\n maxWidth: '900px',\n }}\n >\n <FeatureCard\n icon={<Network size={24} />}\n title=\"Interactive Diagrams\"\n description=\"Visualize repository structure, dependencies, and architecture with auto-generated diagrams you can explore.\"\n theme={theme}\n />\n <FeatureCard\n icon={<MessageSquare size={24} />}\n title=\"Chat with Code\"\n description=\"Ask questions about any repository and get instant, context-aware answers powered by AI.\"\n theme={theme}\n />\n <FeatureCard\n icon={<GitBranch size={24} />}\n title=\"Reliable Documentation\"\n description=\"Always up-to-date documentation generated directly from your codebase, never out of sync.\"\n theme={theme}\n />\n </div>\n </div>\n\n {/* Quick Start Hint */}\n <div\n style={{\n padding: '24px 32px 48px',\n display: 'flex',\n justifyContent: 'center',\n }}\n >\n <p\n style={{\n margin: 0,\n fontSize: `${theme.fontSizes[1]}px`,\n color: theme.colors.textSecondary,\n }}\n >\n Try it with{' '}\n <button\n onClick={() => {\n if (onNavigate) {\n onNavigate('facebook', 'react');\n } else {\n window.location.href = '/facebook/react';\n }\n }}\n style={{\n background: 'none',\n border: 'none',\n color: theme.colors.primary,\n cursor: 'pointer',\n padding: 0,\n fontSize: 'inherit',\n fontWeight: theme.fontWeights.medium,\n textDecoration: 'underline',\n }}\n >\n facebook/react\n </button>\n {' '}or{' '}\n <button\n onClick={() => {\n if (onNavigate) {\n onNavigate('vercel', 'next.js');\n } else {\n window.location.href = '/vercel/next.js';\n }\n }}\n style={{\n background: 'none',\n border: 'none',\n color: theme.colors.primary,\n cursor: 'pointer',\n padding: 0,\n fontSize: 'inherit',\n fontWeight: theme.fontWeights.medium,\n textDecoration: 'underline',\n }}\n >\n vercel/next.js\n </button>\n </p>\n </div>\n </div>\n );\n};\n\n/**\n * WelcomePanel - A landing panel with branding and repo search\n *\n * Features:\n * - Brand introduction with tagline\n * - Search input for owner/repo or GitHub URLs\n * - Feature highlights (diagrams, chat, git insights)\n * - Quick start links to popular repos\n */\nexport const WelcomePanel: React.FC<PanelComponentProps & { onNavigate?: (owner: string, repo: string) => void }> = (props) => {\n return (\n <ThemeProvider>\n <WelcomePanelContent {...props} />\n </ThemeProvider>\n );\n};\n\n/**\n * Panel metadata for registration\n */\nexport const WelcomePanelMetadata = {\n id: 'welcome',\n name: 'Welcome',\n description: 'Landing page with branding and repository search',\n icon: 'home',\n version: '0.1.0',\n slices: [],\n surfaces: ['panel'],\n};\n","/**\n * GitHub Panel Tools\n *\n * UTCP-compatible tools for GitHub repository operations.\n * These tools emit events that the GitHub panels listen for.\n */\n\nimport type { PanelTool, PanelToolsMetadata } from '@principal-ade/utcp-panel-event';\n\n/**\n * Tool: List Repositories\n *\n * Triggers a refresh of the user's GitHub repositories.\n * The panel will emit repository data when available.\n */\nexport const listRepositoriesTool: PanelTool = {\n name: 'list_repositories',\n description: 'Get a list of GitHub repositories the user has access to, including owned repos, starred repos, and organization repos.',\n inputs: {\n type: 'object',\n properties: {},\n required: [],\n },\n outputs: {\n type: 'object',\n properties: {\n success: { type: 'boolean' },\n },\n },\n tags: ['github', 'repository', 'list', 'browse'],\n tool_call_template: {\n call_template_type: 'panel_event',\n event_type: 'github:list-repositories',\n },\n};\n\n/**\n * Tool: Select Repository\n *\n * Select a repository to view its details and README.\n */\nexport const selectRepositoryTool: PanelTool = {\n name: 'select_repository',\n description: 'Select a GitHub repository to view its details, README, and files. Use the full repository name in \"owner/repo\" format.',\n inputs: {\n type: 'object',\n properties: {\n repository: {\n type: 'string',\n description: 'The full repository name in \"owner/repo\" format (e.g., \"facebook/react\")',\n },\n },\n required: ['repository'],\n },\n outputs: {\n type: 'object',\n properties: {\n success: { type: 'boolean' },\n repository: { type: 'string' },\n },\n },\n tags: ['github', 'repository', 'select', 'navigate'],\n tool_call_template: {\n call_template_type: 'panel_event',\n event_type: 'repository:selected',\n },\n};\n\n/**\n * Tool: Preview Repository\n *\n * Preview a repository's README without fully selecting it.\n */\nexport const previewRepositoryTool: PanelTool = {\n name: 'preview_repository',\n description: 'Preview a GitHub repository\\'s README in the viewer without navigating to it.',\n inputs: {\n type: 'object',\n properties: {\n repository: {\n type: 'string',\n description: 'The full repository name in \"owner/repo\" format (e.g., \"facebook/react\")',\n },\n },\n required: ['repository'],\n },\n outputs: {\n type: 'object',\n properties: {\n success: { type: 'boolean' },\n },\n },\n tags: ['github', 'repository', 'preview', 'readme'],\n tool_call_template: {\n call_template_type: 'panel_event',\n event_type: 'repository:preview',\n },\n};\n\n/**\n * Tool: Search Repositories\n *\n * Search through the user's repositories.\n */\nexport const searchRepositoriesTool: PanelTool = {\n name: 'search_repositories',\n description: 'Search through the user\\'s GitHub repositories by name, description, or language.',\n inputs: {\n type: 'object',\n properties: {\n query: {\n type: 'string',\n description: 'The search query to filter repositories',\n },\n },\n required: ['query'],\n },\n outputs: {\n type: 'object',\n properties: {\n success: { type: 'boolean' },\n },\n },\n tags: ['github', 'repository', 'search', 'filter'],\n tool_call_template: {\n call_template_type: 'panel_event',\n event_type: 'github:search-repositories',\n },\n};\n\n/**\n * Tool: Open Repository Switcher\n *\n * Open the repository switcher modal.\n */\nexport const openRepositorySwitcherTool: PanelTool = {\n name: 'open_repository_switcher',\n description: 'Open the repository switcher modal to browse and select a different repository.',\n inputs: {\n type: 'object',\n properties: {},\n required: [],\n },\n outputs: {\n type: 'object',\n properties: {\n success: { type: 'boolean' },\n },\n },\n tags: ['github', 'repository', 'switch', 'modal'],\n tool_call_template: {\n call_template_type: 'panel_event',\n event_type: 'repository:open-switcher',\n },\n};\n\n/**\n * Tool: Request GitHub Login\n *\n * Prompt the user to sign in to GitHub.\n */\nexport const requestGitHubLoginTool: PanelTool = {\n name: 'request_github_login',\n description: 'Prompt the user to sign in to their GitHub account to access repositories.',\n inputs: {\n type: 'object',\n properties: {},\n required: [],\n },\n outputs: {\n type: 'object',\n properties: {\n success: { type: 'boolean' },\n },\n },\n tags: ['github', 'auth', 'login', 'sign-in'],\n tool_call_template: {\n call_template_type: 'panel_event',\n event_type: 'github:login-requested',\n },\n};\n\n/**\n * All GitHub tools exported as an array.\n */\nexport const githubTools: PanelTool[] = [\n listRepositoriesTool,\n selectRepositoryTool,\n previewRepositoryTool,\n searchRepositoriesTool,\n openRepositorySwitcherTool,\n requestGitHubLoginTool,\n];\n\n/**\n * GitHub tools metadata for registration.\n */\nexport const githubToolsMetadata: PanelToolsMetadata = {\n id: 'github-panels',\n name: 'GitHub Panels',\n description: 'Tools for browsing and managing GitHub repositories',\n tools: githubTools,\n};\n","import { GitHubProjectsPanel, GitHubProjectsPanelMetadata } from './panels/GitHubProjectsPanel';\nimport { GitHubSearchPanel, GitHubSearchPanelMetadata } from './panels/GitHubSearchPanel';\nimport { OwnerRepositoriesPanel, OwnerRepositoriesPanelMetadata } from './panels/OwnerRepositoriesPanel';\nimport { RecentRepositoriesPanel, RecentRepositoriesPanelMetadata } from './panels/RecentRepositoriesPanel';\nimport { WelcomePanel, WelcomePanelMetadata } from './panels/WelcomePanel';\nimport type { PanelDefinition, PanelContextValue, PanelTool } from './types';\nimport { githubTools, githubToolsMetadata } from './tools';\n\n/**\n * Export array of panel definitions.\n * This is the required export for panel extensions.\n */\nexport const panels: PanelDefinition[] = [\n {\n metadata: {\n ...GitHubProjectsPanelMetadata,\n tools: githubTools, // Add tools to panel metadata\n },\n component: GitHubProjectsPanel,\n\n onMount: async (context: PanelContextValue) => {\n // eslint-disable-next-line no-console\n console.log('GitHub Projects Panel mounted');\n\n // Refresh GitHub data if available\n const slice = context.getSlice('github-repositories');\n if (slice && !slice.loading) {\n await slice.refresh();\n }\n },\n\n onUnmount: async (_context: PanelContextValue) => {\n // eslint-disable-next-line no-console\n console.log('GitHub Projects Panel unmounting');\n },\n },\n {\n metadata: GitHubSearchPanelMetadata,\n component: GitHubSearchPanel,\n\n onMount: async (_context: PanelContextValue) => {\n // eslint-disable-next-line no-console\n console.log('GitHub Search Panel mounted');\n },\n\n onUnmount: async (_context: PanelContextValue) => {\n // eslint-disable-next-line no-console\n console.log('GitHub Search Panel unmounting');\n },\n },\n {\n metadata: OwnerRepositoriesPanelMetadata,\n component: OwnerRepositoriesPanel,\n\n onMount: async (_context: PanelContextValue) => {\n // eslint-disable-next-line no-console\n console.log('Owner Repositories Panel mounted');\n },\n\n onUnmount: async (_context: PanelContextValue) => {\n // eslint-disable-next-line no-console\n console.log('Owner Repositories Panel unmounting');\n },\n },\n {\n metadata: RecentRepositoriesPanelMetadata,\n component: RecentRepositoriesPanel,\n\n onMount: async (_context: PanelContextValue) => {\n // eslint-disable-next-line no-console\n console.log('Recent Repositories Panel mounted');\n },\n\n onUnmount: async (_context: PanelContextValue) => {\n // eslint-disable-next-line no-console\n console.log('Recent Repositories Panel unmounting');\n },\n },\n {\n metadata: WelcomePanelMetadata,\n component: WelcomePanel,\n\n onMount: async (_context: PanelContextValue) => {\n // eslint-disable-next-line no-console\n console.log('Welcome Panel mounted');\n },\n\n onUnmount: async (_context: PanelContextValue) => {\n // eslint-disable-next-line no-console\n console.log('Welcome Panel unmounting');\n },\n },\n];\n\n/**\n * Optional: Called once when the entire package is loaded.\n * Use this for package-level initialization.\n */\nexport const onPackageLoad = async () => {\n // eslint-disable-next-line no-console\n console.log('Panel package loaded - GitHub Panels Extension');\n};\n\n/**\n * Optional: Called once when the package is unloaded.\n * Use this for package-level cleanup.\n */\nexport const onPackageUnload = async () => {\n // eslint-disable-next-line no-console\n console.log('Panel package unloading - GitHub Panels Extension');\n};\n\n// Export components for direct use\nexport { GitHubProjectCard } from './components/GitHubProjectCard';\nexport { GitHubProjectsPanel } from './panels/GitHubProjectsPanel';\nexport { GitHubSearchPanel } from './panels/GitHubSearchPanel';\nexport { OwnerRepositoriesPanel } from './panels/OwnerRepositoriesPanel';\nexport { RecentRepositoriesPanel, addRecentRepository, addRecentOwner } from './panels/RecentRepositoriesPanel';\nexport type { OwnerInfo } from './panels/RecentRepositoriesPanel';\nexport { WelcomePanel } from './panels/WelcomePanel';\n\n// Export types\nexport type {\n GitHubOwner,\n GitHubRepository,\n GitHubOrganization,\n GitHubRepositoriesSliceData,\n RepositorySelectedEventPayload,\n RepositoryPreviewEventPayload,\n GitHubPanelEventType,\n} from './types/github';\n\n// Export tools\nexport {\n githubTools,\n githubToolsMetadata,\n listRepositoriesTool,\n selectRepositoryTool,\n previewRepositoryTool,\n searchRepositoriesTool,\n openRepositorySwitcherTool,\n requestGitHubLoginTool,\n} from './tools';\n"],"names":["theme","React","__iconNode","Filter","this","Logo_1","require$$0","Logo"],"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,25,26,27,28,34]}