@industry-theme/github-panels 0.1.7 → 0.1.8

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,4 +1,4 @@
1
- import type { StoryObj } from '@storybook/react';
1
+ import type { StoryObj } from '@storybook/react-vite';
2
2
  /**
3
3
  * GitHubProjectCard displays a single GitHub repository with metadata
4
4
  * and action buttons.
@@ -15,7 +15,7 @@ declare const meta: {
15
15
  };
16
16
  };
17
17
  tags: string[];
18
- decorators: ((Story: import("@storybook/core/csf").PartialStoryFn<import("@storybook/react").ReactRenderer, {
18
+ decorators: ((Story: import("storybook/internal/csf").PartialStoryFn<import("@storybook/react").ReactRenderer, {
19
19
  repository: import("..").GitHubRepository;
20
20
  isSelected?: boolean | undefined;
21
21
  onSelect?: ((repository: import("..").GitHubRepository) => void) | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"GitHubProjectCard.stories.d.ts","sourceRoot":"","sources":["../../src/components/GitHubProjectCard.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAQvD;;;GAGG;AACH,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BgC,CAAC;AAE3C,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAQnC;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,KAKrB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAK/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,KAKtB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAK/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,KAK3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,KAmBvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,KAkBzB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,KAazB,CAAC"}
1
+ {"version":3,"file":"GitHubProjectCard.stories.d.ts","sourceRoot":"","sources":["../../src/components/GitHubProjectCard.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAQ5D;;;GAGG;AACH,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BgC,CAAC;AAE3C,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAQnC;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,KAKrB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAK/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,KAKtB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAK/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,KAK3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,KAmBvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,KAkBzB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,KAazB,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { StoryObj } from '@storybook/react';
1
+ import type { StoryObj } from '@storybook/react-vite';
2
2
  /**
3
3
  * GitHubProjectsPanel displays a browsable list of GitHub repositories
4
4
  * organized by owned, organization, and starred sections.
@@ -15,7 +15,7 @@ declare const meta: {
15
15
  };
16
16
  };
17
17
  tags: string[];
18
- decorators: ((Story: import("@storybook/core/csf").PartialStoryFn<import("@storybook/react").ReactRenderer, {
18
+ decorators: ((Story: import("storybook/internal/csf").PartialStoryFn<import("@storybook/react").ReactRenderer, {
19
19
  context: import("@principal-ade/panel-framework-core").PanelContextValue;
20
20
  actions: import("@principal-ade/panel-framework-core").PanelActions;
21
21
  events: import("@principal-ade/panel-framework-core").PanelEventEmitter;
@@ -1 +1 @@
1
- {"version":3,"file":"GitHubProjectsPanel.stories.d.ts","sourceRoot":"","sources":["../../src/panels/GitHubProjectsPanel.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAkBvD;;;GAGG;AACH,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;CA6BkC,CAAC;AAE7C,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAkCnC;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,KAMrB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,KAMrB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAM9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAM/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,KAWvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,KAWzB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAkB9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,KAWzB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,KA4BzB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAa/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,KAoB3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,KAoB5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAYhC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAwD/B,CAAC"}
1
+ {"version":3,"file":"GitHubProjectsPanel.stories.d.ts","sourceRoot":"","sources":["../../src/panels/GitHubProjectsPanel.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAkB5D;;;GAGG;AACH,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;CA6BkC,CAAC;AAE7C,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAkCnC;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,KAMrB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,KAMrB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAM9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAM/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,KAWvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,KAWzB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAkB9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,KAWzB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,KA4BzB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAa/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,KAoB3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,KAoB5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAYhC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAwD/B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"panels.bundle.js","sources":["../node_modules/@principal-ade/industry-theme/dist/esm/index.js","../node_modules/lucide-react/dist/esm/shared/src/utils.js","../node_modules/lucide-react/dist/esm/defaultAttributes.js","../node_modules/lucide-react/dist/esm/Icon.js","../node_modules/lucide-react/dist/esm/createLucideIcon.js","../node_modules/lucide-react/dist/esm/icons/building-2.js","../node_modules/lucide-react/dist/esm/icons/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/git-fork.js","../node_modules/lucide-react/dist/esm/icons/github.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/search.js","../node_modules/lucide-react/dist/esm/icons/star.js","../src/components/GitHubProjectCard.tsx","../src/panels/GitHubProjectsPanel.tsx","../src/panels/GitHubSearchPanel.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\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 increaseFontScale,\n glassmorphismTheme,\n getZIndex,\n getSpace,\n getShadow,\n getRadius,\n getMode,\n getFontSize,\n getColor,\n defaultTerminalTheme,\n defaultMarkdownTheme,\n defaultEditorTheme,\n src_default as default,\n decreaseFontScale,\n createStyle,\n addMode,\n ThemeShowcase,\n ThemeProvider\n};\n","/**\n * @license lucide-react v0.552.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\nconst toCamelCase = (string) => string.replace(\n /^([A-Z])|[\\s-_]+(\\w)/g,\n (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()\n);\nconst toPascalCase = (string) => {\n const camelCase = toCamelCase(string);\n return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\n};\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\nconst hasA11yProp = (props) => {\n for (const prop in props) {\n if (prop.startsWith(\"aria-\") || prop === \"role\" || prop === \"title\") {\n return true;\n }\n }\n};\n\nexport { hasA11yProp, mergeClasses, toCamelCase, toKebabCase, toPascalCase };\n//# sourceMappingURL=utils.js.map\n","/**\n * @license lucide-react v0.552.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nvar defaultAttributes = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.js.map\n","/**\n * @license lucide-react v0.552.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport defaultAttributes from './defaultAttributes.js';\nimport { mergeClasses, hasA11yProp } from './shared/src/utils.js';\n\nconst Icon = forwardRef(\n ({\n color = \"currentColor\",\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = \"\",\n children,\n iconNode,\n ...rest\n }, ref) => createElement(\n \"svg\",\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,\n className: mergeClasses(\"lucide\", className),\n ...!children && !hasA11yProp(rest) && { \"aria-hidden\": \"true\" },\n ...rest\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...Array.isArray(children) ? children : [children]\n ]\n )\n);\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.js.map\n","/**\n * @license lucide-react v0.552.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from './shared/src/utils.js';\nimport Icon from './Icon.js';\n\nconst createLucideIcon = (iconName, iconNode) => {\n const Component = forwardRef(\n ({ className, ...props }, ref) => createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className\n ),\n ...props\n })\n );\n Component.displayName = toPascalCase(iconName);\n return Component;\n};\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.js.map\n","/**\n * @license lucide-react v0.552.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M10 12h4\", key: \"a56b0p\" }],\n [\"path\", { d: \"M10 8h4\", key: \"1sr2af\" }],\n [\"path\", { d: \"M14 21v-3a2 2 0 0 0-4 0v3\", key: \"1rgiei\" }],\n [\n \"path\",\n {\n d: \"M6 10H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-2\",\n key: \"secmi2\"\n }\n ],\n [\"path\", { d: \"M6 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16\", key: \"16ra0t\" }]\n];\nconst Building2 = createLucideIcon(\"building-2\", __iconNode);\n\nexport { __iconNode, Building2 as default };\n//# sourceMappingURL=building-2.js.map\n","/**\n * @license lucide-react v0.552.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"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 [\"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 [\"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 [\"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","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","/**\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 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\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';\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"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]}
1
+ {"version":3,"file":"panels.bundle.js","sources":["../node_modules/@principal-ade/industry-theme/dist/esm/index.js","../node_modules/lucide-react/dist/esm/shared/src/utils.js","../node_modules/lucide-react/dist/esm/defaultAttributes.js","../node_modules/lucide-react/dist/esm/Icon.js","../node_modules/lucide-react/dist/esm/createLucideIcon.js","../node_modules/lucide-react/dist/esm/icons/building-2.js","../node_modules/lucide-react/dist/esm/icons/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/git-fork.js","../node_modules/lucide-react/dist/esm/icons/github.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/search.js","../node_modules/lucide-react/dist/esm/icons/star.js","../src/components/GitHubProjectCard.tsx","../src/panels/GitHubProjectsPanel.tsx","../src/panels/GitHubSearchPanel.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: \"M10 12h4\", key: \"a56b0p\" }],\n [\"path\", { d: \"M10 8h4\", key: \"1sr2af\" }],\n [\"path\", { d: \"M14 21v-3a2 2 0 0 0-4 0v3\", key: \"1rgiei\" }],\n [\n \"path\",\n {\n d: \"M6 10H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-2\",\n key: \"secmi2\"\n }\n ],\n [\"path\", { d: \"M6 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16\", key: \"16ra0t\" }]\n];\nconst Building2 = createLucideIcon(\"building-2\", __iconNode);\n\nexport { __iconNode, Building2 as default };\n//# sourceMappingURL=building-2.js.map\n","/**\n * @license lucide-react v0.552.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"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 [\"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 [\"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 [\"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","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","/**\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 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\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';\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"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@industry-theme/github-panels",
3
- "version": "0.1.7",
3
+ "version": "0.1.8",
4
4
  "description": "GitHub repository browser panel for panel-framework-core with industry theming",
5
5
  "type": "module",
6
6
  "main": "dist/panels.bundle.js",
@@ -52,23 +52,19 @@
52
52
  }
53
53
  },
54
54
  "dependencies": {
55
- "@principal-ade/industry-theme": "^0.1.2",
56
- "@principal-ade/panel-framework-core": "0.1.5",
55
+ "@principal-ade/industry-theme": "^0.1.3",
56
+ "@principal-ade/panel-framework-core": "^0.1.5",
57
57
  "@principal-ade/utcp-panel-event": "^0.1.0",
58
58
  "clsx": "^2.1.1",
59
59
  "lucide-react": "^0.552.0"
60
60
  },
61
61
  "devDependencies": {
62
- "@chromatic-com/storybook": "^3.2.2",
62
+ "@chromatic-com/storybook": "^4.1.3",
63
63
  "@eslint/js": "^9.32.0",
64
- "@storybook/addon-essentials": "^8.5.0",
65
- "@storybook/addon-interactions": "^8.5.0",
66
- "@storybook/addon-links": "^8.5.0",
67
- "@storybook/addon-onboarding": "^8.5.0",
68
- "@storybook/blocks": "^8.5.0",
69
- "@storybook/react": "^8.5.0",
70
- "@storybook/react-vite": "^8.5.0",
71
- "@storybook/test": "^8.5.0",
64
+ "@storybook/addon-docs": "10.1.2",
65
+ "@storybook/addon-links": "10.1.2",
66
+ "@storybook/addon-onboarding": "10.1.2",
67
+ "@storybook/react-vite": "10.1.2",
72
68
  "@types/bun": "latest",
73
69
  "@types/node": "^22.15.26",
74
70
  "@types/react": "^19.0.0",
@@ -81,11 +77,11 @@
81
77
  "eslint-config-prettier": "^10.1.8",
82
78
  "eslint-plugin-react": "^7.37.2",
83
79
  "eslint-plugin-react-hooks": "^5.0.0",
84
- "eslint-plugin-storybook": "^0.11.1",
80
+ "eslint-plugin-storybook": "10.1.2",
85
81
  "prettier": "^3.6.2",
86
82
  "react": "^19.0.0",
87
83
  "react-dom": "^19.0.0",
88
- "storybook": "^8.5.0",
84
+ "storybook": "10.1.2",
89
85
  "typescript": "^5.0.4",
90
86
  "typescript-eslint": "^8.38.0",
91
87
  "vite": "^6.0.7"