@industry-theme/github-panels 0.1.22 → 0.1.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -21,7 +21,7 @@ export { OwnerRepositoriesPanel } from './panels/OwnerRepositoriesPanel';
21
21
  export { RecentRepositoriesPanel, addRecentRepository, addRecentOwner } from './panels/RecentRepositoriesPanel';
22
22
  export type { OwnerInfo } from './panels/RecentRepositoriesPanel';
23
23
  export { WelcomePanel } from './panels/WelcomePanel';
24
- export type { WelcomePanelProps, HighlightedProject } from './panels/WelcomePanel';
24
+ export type { WelcomePanelProps, HighlightedProject, FeaturedOrganization } from './panels/WelcomePanel';
25
25
  export type { GitHubOwner, GitHubRepository, GitHubOrganization, GitHubRepositoriesSliceData, RepositorySelectedEventPayload, RepositoryPreviewEventPayload, GitHubPanelEventType, } from './types/github';
26
26
  export { githubTools, githubToolsMetadata, listRepositoriesTool, selectRepositoryTool, previewRepositoryTool, searchRepositoriesTool, openRepositorySwitcherTool, requestGitHubLoginTool, } from './tools';
27
27
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAgC,MAAM,SAAS,CAAC;AAG7E;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,eAAe,EAgFnC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,qBAGzB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,qBAG3B,CAAC;AAGF,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAChH,YAAY,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAGnF,YAAY,EACV,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,2BAA2B,EAC3B,8BAA8B,EAC9B,6BAA6B,EAC7B,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAgC,MAAM,SAAS,CAAC;AAG7E;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,eAAe,EAgFnC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,qBAGzB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,qBAG3B,CAAC;AAGF,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAChH,YAAY,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAGzG,YAAY,EACV,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,2BAA2B,EAC3B,8BAA8B,EAC9B,6BAA6B,EAC7B,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,SAAS,CAAC"}
@@ -8,12 +8,21 @@ export interface HighlightedProject {
8
8
  repo: string;
9
9
  label?: string;
10
10
  }
11
+ /**
12
+ * Featured organization for the organizations section
13
+ */
14
+ export interface FeaturedOrganization {
15
+ login: string;
16
+ description?: string;
17
+ }
11
18
  /**
12
19
  * Props for the WelcomePanel
13
20
  */
14
21
  export interface WelcomePanelProps extends PanelComponentProps {
15
22
  onNavigate?: (owner: string, repo: string) => void;
16
23
  highlightedProjects?: HighlightedProject[];
24
+ featuredOrganizations?: FeaturedOrganization[];
25
+ onOrganizationClick?: (org: string) => void;
17
26
  }
18
27
  /**
19
28
  * WelcomePanel - A landing panel with branding and repo search
@@ -1 +1 @@
1
- {"version":3,"file":"WelcomePanel.d.ts","sourceRoot":"","sources":["../../src/panels/WelcomePanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAYrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,mBAAmB;IAC5D,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAC5C;AA4HD;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAyQpD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;CAQhC,CAAC"}
1
+ {"version":3,"file":"WelcomePanel.d.ts","sourceRoot":"","sources":["../../src/panels/WelcomePanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAWrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,mBAAmB;IAC5D,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC3C,qBAAqB,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAC/C,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C;AA+MD;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA8RpD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;CAQhC,CAAC"}
@@ -0,0 +1,59 @@
1
+ import type { StoryObj } from '@storybook/react';
2
+ declare const meta: {
3
+ title: string;
4
+ component: import("react").FC<import("./WelcomePanel").WelcomePanelProps>;
5
+ parameters: {
6
+ layout: string;
7
+ docs: {
8
+ description: {
9
+ component: string;
10
+ };
11
+ };
12
+ };
13
+ tags: string[];
14
+ decorators: ((Story: import("storybook/internal/csf").PartialStoryFn<import("@storybook/react").ReactRenderer, {
15
+ onNavigate?: ((owner: string, repo: string) => void) | undefined;
16
+ highlightedProjects?: import("./WelcomePanel").HighlightedProject[] | undefined;
17
+ featuredOrganizations?: import("./WelcomePanel").FeaturedOrganization[] | undefined;
18
+ onOrganizationClick?: ((org: string) => void) | undefined;
19
+ context: import("@principal-ade/panel-framework-core").PanelContextValue;
20
+ actions: import("@principal-ade/panel-framework-core").PanelActions;
21
+ events: import("@principal-ade/panel-framework-core").PanelEventEmitter;
22
+ }>) => import("react/jsx-runtime").JSX.Element)[];
23
+ args: {
24
+ context: import("@principal-ade/panel-framework-core").PanelContextValue;
25
+ events: import("@principal-ade/panel-framework-core").PanelEventEmitter;
26
+ actions: import("@principal-ade/panel-framework-core").PanelActions;
27
+ };
28
+ };
29
+ export default meta;
30
+ type Story = StoryObj<typeof meta>;
31
+ /**
32
+ * Default state with no featured organizations
33
+ */
34
+ export declare const Default: Story;
35
+ /**
36
+ * With highlighted projects (legacy feature)
37
+ */
38
+ export declare const WithHighlightedProjects: Story;
39
+ /**
40
+ * With featured organizations - the main use case
41
+ */
42
+ export declare const WithFeaturedOrganizations: Story;
43
+ /**
44
+ * With both organizations and highlighted projects
45
+ */
46
+ export declare const WithOrganizationsAndProjects: Story;
47
+ /**
48
+ * Single organization
49
+ */
50
+ export declare const SingleOrganization: Story;
51
+ /**
52
+ * Organizations without descriptions
53
+ */
54
+ export declare const OrganizationsNoDescriptions: Story;
55
+ /**
56
+ * Interactive with navigation handler
57
+ */
58
+ export declare const Interactive: Story;
59
+ //# sourceMappingURL=WelcomePanel.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WelcomePanel.stories.d.ts","sourceRoot":"","sources":["../../src/panels/WelcomePanel.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAKvD,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;CA0B2B,CAAC;AAEtC,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,KAKrB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,KAQrC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,EAAE,KASvC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,4BAA4B,EAAE,KAY1C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAOhC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,2BAA2B,EAAE,KASzC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,KAkBzB,CAAC"}
@@ -2839,157 +2839,6 @@ const RecentRepositoriesPanelMetadata = {
2839
2839
  slices: [],
2840
2840
  surfaces: ["panel"]
2841
2841
  };
2842
- var Logo = {};
2843
- var hasRequiredLogo;
2844
- function requireLogo() {
2845
- if (hasRequiredLogo) return Logo;
2846
- hasRequiredLogo = 1;
2847
- var __importDefault = Logo && Logo.__importDefault || function(mod) {
2848
- return mod && mod.__esModule ? mod : { "default": mod };
2849
- };
2850
- Object.defineProperty(Logo, "__esModule", { value: true });
2851
- Logo.Logo = void 0;
2852
- const react_1 = __importDefault(React2);
2853
- const Logo$1 = ({ width = 150, height = 150, color = "currentColor", particleColor, opacity = 0.9 }) => {
2854
- const finalParticleColor = particleColor || color;
2855
- return react_1.default.createElement(
2856
- "svg",
2857
- { width, height, viewBox: "0 0 200 200", xmlns: "http://www.w3.org/2000/svg", style: { opacity } },
2858
- react_1.default.createElement(
2859
- "defs",
2860
- null,
2861
- react_1.default.createElement(
2862
- "radialGradient",
2863
- { id: "sphereGlow", cx: "50%", cy: "50%", r: "50%" },
2864
- react_1.default.createElement("stop", { offset: "0%", style: { stopColor: color, stopOpacity: 0.3 } }),
2865
- react_1.default.createElement("stop", { offset: "100%", style: { stopColor: color, stopOpacity: 0 } })
2866
- ),
2867
- react_1.default.createElement(
2868
- "radialGradient",
2869
- { id: "centerPulse", cx: "50%", cy: "50%", r: "50%" },
2870
- react_1.default.createElement(
2871
- "stop",
2872
- { offset: "0%", style: { stopColor: color, stopOpacity: 0.8 } },
2873
- react_1.default.createElement("animate", { attributeName: "stop-opacity", values: "0.8;0.3;0.8", dur: "2s", repeatCount: "indefinite" })
2874
- ),
2875
- react_1.default.createElement("stop", { offset: "100%", style: { stopColor: color, stopOpacity: 0 } })
2876
- )
2877
- ),
2878
- react_1.default.createElement("circle", { cx: "100", cy: "100", r: "80", fill: "url(#sphereGlow)", opacity: "0.5" }),
2879
- react_1.default.createElement(
2880
- "circle",
2881
- { r: "2.5", fill: finalParticleColor, cx: "167", cy: "100", opacity: "0" },
2882
- react_1.default.createElement("animateMotion", { dur: "8s", repeatCount: "indefinite", begin: "1s", path: "M 0,0 A 67,27 0 1,0 -134,0 A 67,27 0 1,0 0,0" }),
2883
- react_1.default.createElement("animate", { attributeName: "opacity", values: "0;1;0.5;0;0", keyTimes: "0;0.2;0.4;0.5;1", dur: "8s", begin: "1s", repeatCount: "indefinite" })
2884
- ),
2885
- react_1.default.createElement(
2886
- "circle",
2887
- { r: "2.5", fill: finalParticleColor, cx: "167", cy: "100", opacity: "0" },
2888
- react_1.default.createElement("animateMotion", { dur: "8s", repeatCount: "indefinite", begin: "2s", path: "M 0,0 A 67,40 0 1,0 -134,0 A 67,40 0 1,0 0,0" }),
2889
- react_1.default.createElement("animate", { attributeName: "opacity", values: "0;1;0.5;0;0", keyTimes: "0;0.2;0.4;0.5;1", dur: "8s", begin: "2s", repeatCount: "indefinite" })
2890
- ),
2891
- react_1.default.createElement(
2892
- "circle",
2893
- { r: "2.5", fill: finalParticleColor, cx: "167", cy: "100", opacity: "0" },
2894
- react_1.default.createElement("animateMotion", { dur: "8s", repeatCount: "indefinite", begin: "3s", path: "M 0,0 A 67,53 0 1,0 -134,0 A 67,53 0 1,0 0,0" }),
2895
- react_1.default.createElement("animate", { attributeName: "opacity", values: "0;1;0.5;0;0", keyTimes: "0;0.2;0.4;0.5;1", dur: "8s", begin: "3s", repeatCount: "indefinite" })
2896
- ),
2897
- react_1.default.createElement(
2898
- "circle",
2899
- { r: "2.5", fill: finalParticleColor, cx: "100", cy: "167", opacity: "0" },
2900
- react_1.default.createElement("animateMotion", { dur: "8s", repeatCount: "indefinite", begin: "1.5s", path: "M 0,0 A 27,67 0 1,0 0,-134 A 27,67 0 1,0 0,0" }),
2901
- react_1.default.createElement("animate", { attributeName: "opacity", values: "0;1;0.5;0;0", keyTimes: "0;0.2;0.4;0.5;1", dur: "8s", begin: "1.5s", repeatCount: "indefinite" })
2902
- ),
2903
- react_1.default.createElement(
2904
- "circle",
2905
- { r: "2.5", fill: finalParticleColor, cx: "100", cy: "167", opacity: "0" },
2906
- react_1.default.createElement("animateMotion", { dur: "8s", repeatCount: "indefinite", begin: "2.5s", path: "M 0,0 A 40,67 0 1,0 0,-134 A 40,67 0 1,0 0,0" }),
2907
- react_1.default.createElement("animate", { attributeName: "opacity", values: "0;1;0.5;0;0", keyTimes: "0;0.2;0.4;0.5;1", dur: "8s", begin: "2.5s", repeatCount: "indefinite" })
2908
- ),
2909
- react_1.default.createElement(
2910
- "circle",
2911
- { r: "2.5", fill: finalParticleColor, cx: "100", cy: "167", opacity: "0" },
2912
- react_1.default.createElement("animateMotion", { dur: "8s", repeatCount: "indefinite", begin: "3.5s", path: "M 0,0 A 53,67 0 1,0 0,-134 A 53,67 0 1,0 0,0" }),
2913
- react_1.default.createElement("animate", { attributeName: "opacity", values: "0;1;0.5;0;0", keyTimes: "0;0.2;0.4;0.5;1", dur: "8s", begin: "3.5s", repeatCount: "indefinite" })
2914
- ),
2915
- react_1.default.createElement("circle", { cx: "93", cy: "85", r: "2", fill: finalParticleColor, opacity: "0.9" }),
2916
- react_1.default.createElement("circle", { cx: "93", cy: "90", r: "2", fill: finalParticleColor, opacity: "0.9" }),
2917
- react_1.default.createElement("circle", { cx: "93", cy: "95", r: "2", fill: finalParticleColor, opacity: "0.9" }),
2918
- react_1.default.createElement("circle", { cx: "93", cy: "100", r: "2", fill: finalParticleColor, opacity: "0.9" }),
2919
- react_1.default.createElement("circle", { cx: "93", cy: "105", r: "2", fill: finalParticleColor, opacity: "0.9" }),
2920
- react_1.default.createElement("circle", { cx: "93", cy: "110", r: "2", fill: finalParticleColor, opacity: "0.9" }),
2921
- react_1.default.createElement("circle", { cx: "93", cy: "115", r: "2", fill: finalParticleColor, opacity: "0.9" }),
2922
- react_1.default.createElement("circle", { cx: "98", cy: "85", r: "2", fill: finalParticleColor, opacity: "0.9" }),
2923
- react_1.default.createElement("circle", { cx: "103", cy: "85", r: "2", fill: finalParticleColor, opacity: "0.9" }),
2924
- react_1.default.createElement("circle", { cx: "108", cy: "90", r: "2", fill: finalParticleColor, opacity: "0.9" }),
2925
- react_1.default.createElement("circle", { cx: "108", cy: "95", r: "2", fill: finalParticleColor, opacity: "0.9" }),
2926
- react_1.default.createElement("circle", { cx: "103", cy: "100", r: "2", fill: finalParticleColor, opacity: "0.9" }),
2927
- react_1.default.createElement("circle", { cx: "98", cy: "100", r: "2", fill: finalParticleColor, opacity: "0.9" }),
2928
- react_1.default.createElement("circle", { cx: "100", cy: "100", r: "67", fill: "none", stroke: color, strokeWidth: "1.5", opacity: "0.9" }),
2929
- react_1.default.createElement("path", { d: "M 33,100 A 67,13 0 0,1 73,88.1", fill: "none", stroke: color, strokeWidth: "1", opacity: "0.7" }),
2930
- react_1.default.createElement("path", { d: "M 127,88.1 A 67,13 0 0,1 167,100", fill: "none", stroke: color, strokeWidth: "1", opacity: "0.7" }),
2931
- react_1.default.createElement("path", { d: "M 33,100 A 67,13 0 0,0 73,111.9", fill: "none", stroke: color, strokeWidth: "1", opacity: "0.7" }),
2932
- react_1.default.createElement("path", { d: "M 127,111.9 A 67,13 0 0,0 167,100", fill: "none", stroke: color, strokeWidth: "1", opacity: "0.7" }),
2933
- react_1.default.createElement("ellipse", { cx: "100", cy: "100", rx: "67", ry: "27", fill: "none", stroke: color, strokeWidth: "1", opacity: "0.7" }),
2934
- react_1.default.createElement("ellipse", { cx: "100", cy: "100", rx: "67", ry: "40", fill: "none", stroke: color, strokeWidth: "1", opacity: "0.7" }),
2935
- react_1.default.createElement("ellipse", { cx: "100", cy: "100", rx: "67", ry: "53", fill: "none", stroke: color, strokeWidth: "1", opacity: "0.7" }),
2936
- react_1.default.createElement("path", { d: "M 100,33 A 13,67 0 0,0 87,73", fill: "none", stroke: color, strokeWidth: "1", opacity: "0.7" }),
2937
- react_1.default.createElement("path", { d: "M 113,73 A 13,67 0 0,0 100,33", fill: "none", stroke: color, strokeWidth: "1", opacity: "0.7" }),
2938
- react_1.default.createElement("path", { d: "M 100,167 A 13,67 0 0,1 87,127", fill: "none", stroke: color, strokeWidth: "1", opacity: "0.7" }),
2939
- react_1.default.createElement("path", { d: "M 113,127 A 13,67 0 0,1 100,167", fill: "none", stroke: color, strokeWidth: "1", opacity: "0.7" }),
2940
- react_1.default.createElement("ellipse", { cx: "100", cy: "100", rx: "27", ry: "67", fill: "none", stroke: color, strokeWidth: "1", opacity: "0.7" }),
2941
- react_1.default.createElement("ellipse", { cx: "100", cy: "100", rx: "40", ry: "67", fill: "none", stroke: color, strokeWidth: "1", opacity: "0.7" }),
2942
- react_1.default.createElement("ellipse", { cx: "100", cy: "100", rx: "53", ry: "67", fill: "none", stroke: color, strokeWidth: "1", opacity: "0.7" }),
2943
- react_1.default.createElement("ellipse", { cx: "100", cy: "100", rx: "67", ry: "33", fill: "none", stroke: color, strokeWidth: "1", opacity: "0.6", transform: "rotate(30 100 100)" }),
2944
- react_1.default.createElement("ellipse", { cx: "100", cy: "100", rx: "67", ry: "33", fill: "none", stroke: color, strokeWidth: "1", opacity: "0.6", transform: "rotate(60 100 100)" }),
2945
- react_1.default.createElement("ellipse", { cx: "100", cy: "100", rx: "67", ry: "33", fill: "none", stroke: color, strokeWidth: "1", opacity: "0.6", transform: "rotate(120 100 100)" }),
2946
- react_1.default.createElement("ellipse", { cx: "100", cy: "100", rx: "67", ry: "33", fill: "none", stroke: color, strokeWidth: "1", opacity: "0.6", transform: "rotate(150 100 100)" }),
2947
- react_1.default.createElement("line", { x1: "33", y1: "100", x2: "73", y2: "100", stroke: color, strokeWidth: "1.5", opacity: "0.8" }),
2948
- react_1.default.createElement("line", { x1: "127", y1: "100", x2: "167", y2: "100", stroke: color, strokeWidth: "1.5", opacity: "0.8" }),
2949
- react_1.default.createElement("line", { x1: "100", y1: "33", x2: "100", y2: "73", stroke: color, strokeWidth: "1.5", opacity: "0.8" }),
2950
- react_1.default.createElement("line", { x1: "100", y1: "127", x2: "100", y2: "167", stroke: color, strokeWidth: "1.5", opacity: "0.8" }),
2951
- react_1.default.createElement(
2952
- "circle",
2953
- { r: "2.5", fill: finalParticleColor, cx: "167", cy: "100", opacity: "0" },
2954
- react_1.default.createElement("animateMotion", { dur: "8s", repeatCount: "indefinite", begin: "1s", path: "M 0,0 A 67,27 0 1,0 -134,0 A 67,27 0 1,0 0,0" }),
2955
- react_1.default.createElement("animate", { attributeName: "opacity", values: "0;0;0.5;1;1;0.5;0", keyTimes: "0;0.5;0.6;0.75;0.9;0.95;1", dur: "8s", begin: "1s", repeatCount: "indefinite" })
2956
- ),
2957
- react_1.default.createElement(
2958
- "circle",
2959
- { r: "2.5", fill: finalParticleColor, cx: "167", cy: "100", opacity: "0" },
2960
- react_1.default.createElement("animateMotion", { dur: "8s", repeatCount: "indefinite", begin: "2s", path: "M 0,0 A 67,40 0 1,0 -134,0 A 67,40 0 1,0 0,0" }),
2961
- react_1.default.createElement("animate", { attributeName: "opacity", values: "0;0;0.5;1;1;0.5;0", keyTimes: "0;0.5;0.6;0.75;0.9;0.95;1", dur: "8s", begin: "2s", repeatCount: "indefinite" })
2962
- ),
2963
- react_1.default.createElement(
2964
- "circle",
2965
- { r: "2.5", fill: finalParticleColor, cx: "167", cy: "100", opacity: "0" },
2966
- react_1.default.createElement("animateMotion", { dur: "8s", repeatCount: "indefinite", begin: "3s", path: "M 0,0 A 67,53 0 1,0 -134,0 A 67,53 0 1,0 0,0" }),
2967
- react_1.default.createElement("animate", { attributeName: "opacity", values: "0;0;0.5;1;1;0.5;0", keyTimes: "0;0.5;0.6;0.75;0.9;0.95;1", dur: "8s", begin: "3s", repeatCount: "indefinite" })
2968
- ),
2969
- react_1.default.createElement(
2970
- "circle",
2971
- { r: "2.5", fill: finalParticleColor, cx: "100", cy: "167", opacity: "0" },
2972
- react_1.default.createElement("animateMotion", { dur: "8s", repeatCount: "indefinite", begin: "1.5s", path: "M 0,0 A 27,67 0 1,0 0,-134 A 27,67 0 1,0 0,0" }),
2973
- react_1.default.createElement("animate", { attributeName: "opacity", values: "0;0;0.5;1;1;0.5;0", keyTimes: "0;0.5;0.6;0.75;0.9;0.95;1", dur: "8s", begin: "1.5s", repeatCount: "indefinite" })
2974
- ),
2975
- react_1.default.createElement(
2976
- "circle",
2977
- { r: "2.5", fill: finalParticleColor, cx: "100", cy: "167", opacity: "0" },
2978
- react_1.default.createElement("animateMotion", { dur: "8s", repeatCount: "indefinite", begin: "2.5s", path: "M 0,0 A 40,67 0 1,0 0,-134 A 40,67 0 1,0 0,0" }),
2979
- react_1.default.createElement("animate", { attributeName: "opacity", values: "0;0;0.5;1;1;0.5;0", keyTimes: "0;0.5;0.6;0.75;0.9;0.95;1", dur: "8s", begin: "2.5s", repeatCount: "indefinite" })
2980
- ),
2981
- react_1.default.createElement(
2982
- "circle",
2983
- { r: "2.5", fill: finalParticleColor, cx: "100", cy: "167", opacity: "0" },
2984
- react_1.default.createElement("animateMotion", { dur: "8s", repeatCount: "indefinite", begin: "3.5s", path: "M 0,0 A 53,67 0 1,0 0,-134 A 53,67 0 1,0 0,0" }),
2985
- react_1.default.createElement("animate", { attributeName: "opacity", values: "0;0;0.5;1;1;0.5;0", keyTimes: "0;0.5;0.6;0.75;0.9;0.95;1", dur: "8s", begin: "3.5s", repeatCount: "indefinite" })
2986
- )
2987
- );
2988
- };
2989
- Logo.Logo = Logo$1;
2990
- return Logo;
2991
- }
2992
- var LogoExports = requireLogo();
2993
2842
  function parseGitHubInput(input) {
2994
2843
  const trimmed = input.trim();
2995
2844
  const urlMatch = trimmed.match(/github\.com\/([^/]+)\/([^/]+)/);
@@ -3098,9 +2947,93 @@ const defaultHighlightedProjects = [
3098
2947
  { owner: "facebook", repo: "react" },
3099
2948
  { owner: "vercel", repo: "next.js" }
3100
2949
  ];
2950
+ const defaultFeaturedOrganizations = [];
2951
+ const OrganizationCard = ({ org, theme, onClick }) => {
2952
+ return /* @__PURE__ */ jsxs(
2953
+ "button",
2954
+ {
2955
+ onClick,
2956
+ style: {
2957
+ padding: "16px 20px",
2958
+ borderRadius: "12px",
2959
+ backgroundColor: theme.colors.surface,
2960
+ border: `1px solid ${theme.colors.border}`,
2961
+ display: "flex",
2962
+ alignItems: "center",
2963
+ gap: "12px",
2964
+ cursor: "pointer",
2965
+ transition: "all 0.2s ease",
2966
+ minWidth: "240px",
2967
+ textAlign: "left"
2968
+ },
2969
+ onMouseEnter: (e) => {
2970
+ e.currentTarget.style.borderColor = theme.colors.primary;
2971
+ e.currentTarget.style.transform = "translateY(-2px)";
2972
+ },
2973
+ onMouseLeave: (e) => {
2974
+ e.currentTarget.style.borderColor = theme.colors.border;
2975
+ e.currentTarget.style.transform = "translateY(0)";
2976
+ },
2977
+ children: [
2978
+ /* @__PURE__ */ jsx(
2979
+ "img",
2980
+ {
2981
+ src: `https://github.com/${org.login}.png?size=64`,
2982
+ alt: org.login,
2983
+ style: {
2984
+ width: 40,
2985
+ height: 40,
2986
+ borderRadius: "8px",
2987
+ flexShrink: 0
2988
+ }
2989
+ }
2990
+ ),
2991
+ /* @__PURE__ */ jsxs("div", { style: { flex: 1, minWidth: 0 }, children: [
2992
+ /* @__PURE__ */ jsx(
2993
+ "div",
2994
+ {
2995
+ style: {
2996
+ fontSize: `${theme.fontSizes[2]}px`,
2997
+ fontWeight: theme.fontWeights.semibold,
2998
+ color: theme.colors.text,
2999
+ marginBottom: org.description ? "2px" : 0
3000
+ },
3001
+ children: org.login
3002
+ }
3003
+ ),
3004
+ org.description && /* @__PURE__ */ jsx(
3005
+ "div",
3006
+ {
3007
+ style: {
3008
+ fontSize: `${theme.fontSizes[1]}px`,
3009
+ color: theme.colors.textSecondary,
3010
+ overflow: "hidden",
3011
+ textOverflow: "ellipsis",
3012
+ whiteSpace: "nowrap"
3013
+ },
3014
+ children: org.description
3015
+ }
3016
+ )
3017
+ ] }),
3018
+ /* @__PURE__ */ jsx(
3019
+ ExternalLink,
3020
+ {
3021
+ size: 16,
3022
+ style: {
3023
+ color: theme.colors.textSecondary,
3024
+ flexShrink: 0
3025
+ }
3026
+ }
3027
+ )
3028
+ ]
3029
+ }
3030
+ );
3031
+ };
3101
3032
  const WelcomePanel = ({
3102
3033
  onNavigate,
3103
- highlightedProjects = defaultHighlightedProjects
3034
+ highlightedProjects = defaultHighlightedProjects,
3035
+ featuredOrganizations = defaultFeaturedOrganizations,
3036
+ onOrganizationClick
3104
3037
  }) => {
3105
3038
  const { theme } = useTheme();
3106
3039
  const [repoInput, setRepoInput] = useState("");
@@ -3126,6 +3059,13 @@ const WelcomePanel = ({
3126
3059
  window.location.href = `/${project.owner}/${project.repo}`;
3127
3060
  }
3128
3061
  }, [onNavigate]);
3062
+ const handleOrganizationClick = useCallback((org) => {
3063
+ if (onOrganizationClick) {
3064
+ onOrganizationClick(org.login);
3065
+ } else {
3066
+ window.open(`https://github.com/${org.login}`, "_blank");
3067
+ }
3068
+ }, [onOrganizationClick]);
3129
3069
  return /* @__PURE__ */ jsxs(
3130
3070
  "div",
3131
3071
  {
@@ -3151,49 +3091,6 @@ const WelcomePanel = ({
3151
3091
  borderBottom: `1px solid ${theme.colors.border}`
3152
3092
  },
3153
3093
  children: [
3154
- /* @__PURE__ */ jsxs(
3155
- "div",
3156
- {
3157
- style: {
3158
- display: "flex",
3159
- alignItems: "center",
3160
- gap: "16px",
3161
- marginBottom: "24px"
3162
- },
3163
- children: [
3164
- /* @__PURE__ */ jsx(
3165
- LogoExports.Logo,
3166
- {
3167
- width: 56,
3168
- height: 56,
3169
- color: theme.colors.primary
3170
- }
3171
- ),
3172
- /* @__PURE__ */ jsxs(
3173
- "span",
3174
- {
3175
- style: {
3176
- fontSize: `${theme.fontSizes[6] || 32}px`,
3177
- fontWeight: theme.fontWeights.bold
3178
- },
3179
- children: [
3180
- /* @__PURE__ */ jsx("span", { style: { color: theme.colors.text }, children: "Principal" }),
3181
- " ",
3182
- /* @__PURE__ */ jsx("span", { style: { color: theme.colors.primary }, children: "AI" })
3183
- ]
3184
- }
3185
- ),
3186
- /* @__PURE__ */ jsx(
3187
- LogoExports.Logo,
3188
- {
3189
- width: 56,
3190
- height: 56,
3191
- color: theme.colors.primary
3192
- }
3193
- )
3194
- ]
3195
- }
3196
- ),
3197
3094
  /* @__PURE__ */ jsx(
3198
3095
  "h1",
3199
3096
  {
@@ -3359,6 +3256,52 @@ const WelcomePanel = ({
3359
3256
  )
3360
3257
  }
3361
3258
  ),
3259
+ featuredOrganizations.length > 0 && /* @__PURE__ */ jsxs(
3260
+ "div",
3261
+ {
3262
+ style: {
3263
+ padding: "24px 32px 48px",
3264
+ display: "flex",
3265
+ flexDirection: "column",
3266
+ alignItems: "center",
3267
+ gap: "20px"
3268
+ },
3269
+ children: [
3270
+ /* @__PURE__ */ jsx(
3271
+ "h2",
3272
+ {
3273
+ style: {
3274
+ margin: 0,
3275
+ fontSize: `${theme.fontSizes[3]}px`,
3276
+ fontWeight: theme.fontWeights.semibold,
3277
+ color: theme.colors.textSecondary
3278
+ },
3279
+ children: "Explore Our Organizations"
3280
+ }
3281
+ ),
3282
+ /* @__PURE__ */ jsx(
3283
+ "div",
3284
+ {
3285
+ style: {
3286
+ display: "flex",
3287
+ gap: "16px",
3288
+ flexWrap: "wrap",
3289
+ justifyContent: "center"
3290
+ },
3291
+ children: featuredOrganizations.map((org) => /* @__PURE__ */ jsx(
3292
+ OrganizationCard,
3293
+ {
3294
+ org,
3295
+ theme,
3296
+ onClick: () => handleOrganizationClick(org)
3297
+ },
3298
+ org.login
3299
+ ))
3300
+ }
3301
+ )
3302
+ ]
3303
+ }
3304
+ ),
3362
3305
  highlightedProjects.length > 0 && /* @__PURE__ */ jsx(
3363
3306
  "div",
3364
3307
  {