hubg-app-shell 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/components/AppShell.d.ts +21 -0
  2. package/dist/components/AppShell.d.ts.map +1 -0
  3. package/dist/components/Header.d.ts +13 -0
  4. package/dist/components/Header.d.ts.map +1 -0
  5. package/dist/components/ModuleHost.d.ts +13 -0
  6. package/dist/components/ModuleHost.d.ts.map +1 -0
  7. package/dist/components/ShellErrorBoundary.d.ts +26 -0
  8. package/dist/components/ShellErrorBoundary.d.ts.map +1 -0
  9. package/dist/components/SideNavigation.d.ts +15 -0
  10. package/dist/components/SideNavigation.d.ts.map +1 -0
  11. package/dist/components/ui/accordion.d.ts +10 -0
  12. package/dist/components/ui/accordion.d.ts.map +1 -0
  13. package/dist/components/ui/avatar.d.ts +7 -0
  14. package/dist/components/ui/avatar.d.ts.map +1 -0
  15. package/dist/components/ui/badge.d.ts +10 -0
  16. package/dist/components/ui/badge.d.ts.map +1 -0
  17. package/dist/components/ui/button.d.ts +12 -0
  18. package/dist/components/ui/button.d.ts.map +1 -0
  19. package/dist/components/ui/collapsible.d.ts +6 -0
  20. package/dist/components/ui/collapsible.d.ts.map +1 -0
  21. package/dist/components/ui/dropdown-menu.d.ts +29 -0
  22. package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
  23. package/dist/components/ui/index.d.ts +10 -0
  24. package/dist/components/ui/index.d.ts.map +1 -0
  25. package/dist/components/ui/scroll-area.d.ts +6 -0
  26. package/dist/components/ui/scroll-area.d.ts.map +1 -0
  27. package/dist/components/ui/separator.d.ts +5 -0
  28. package/dist/components/ui/separator.d.ts.map +1 -0
  29. package/dist/components/ui/tooltip.d.ts +8 -0
  30. package/dist/components/ui/tooltip.d.ts.map +1 -0
  31. package/dist/context/ShellContext.d.ts +20 -0
  32. package/dist/context/ShellContext.d.ts.map +1 -0
  33. package/dist/events/EventBus.d.ts +16 -0
  34. package/dist/events/EventBus.d.ts.map +1 -0
  35. package/dist/index.cjs.js +515 -505
  36. package/dist/index.cjs.js.map +3 -3
  37. package/dist/index.d.ts +5 -0
  38. package/dist/index.d.ts.map +1 -0
  39. package/dist/index.es.js +582 -574
  40. package/dist/index.es.js.map +3 -3
  41. package/dist/platform/createPlatformAPI.d.ts +21 -0
  42. package/dist/platform/createPlatformAPI.d.ts.map +1 -0
  43. package/dist/registry/ModuleRegistry.d.ts +20 -0
  44. package/dist/registry/ModuleRegistry.d.ts.map +1 -0
  45. package/dist/types/context.d.ts +26 -0
  46. package/dist/types/context.d.ts.map +1 -0
  47. package/dist/types/index.d.ts +5 -0
  48. package/dist/types/index.d.ts.map +1 -0
  49. package/dist/types/module.d.ts +22 -0
  50. package/dist/types/module.d.ts.map +1 -0
  51. package/dist/types/navigation.d.ts +53 -0
  52. package/dist/types/navigation.d.ts.map +1 -0
  53. package/dist/types/platform.d.ts +39 -0
  54. package/dist/types/platform.d.ts.map +1 -0
  55. package/dist/utils/cn.d.ts +7 -0
  56. package/dist/utils/cn.d.ts.map +1 -0
  57. package/package.json +2 -1
@@ -0,0 +1,21 @@
1
+ import * as React from "react";
2
+ import type { ModuleContext } from "../types/context.js";
3
+ import type { NavigationConfig, NavItem } from "../types/navigation.js";
4
+ export interface AppShellProps {
5
+ /** Platform context — user, tenant, permissions, theme, locale. */
6
+ context: ModuleContext;
7
+ /** Drives the sidebar navigation tree. */
8
+ navigationConfig: NavigationConfig;
9
+ /** Content rendered inside the main area. The host app owns routing. */
10
+ children?: React.ReactNode;
11
+ /** Initial active route. Defaults to window.location.pathname. */
12
+ activeRoute?: string;
13
+ /** Called when the user clicks a nav item so the host app can update its router. */
14
+ onNavigate?: (path: string) => void;
15
+ /** Background color for the tenant logo tile in the sidebar. */
16
+ tenantBrandColor?: string;
17
+ /** Items pinned at the bottom of the sidebar (e.g. Hub Settings, Help, Shortcuts). */
18
+ footerNavItems?: NavItem[];
19
+ }
20
+ export declare function AppShell(props: AppShellProps): React.JSX.Element;
21
+ //# sourceMappingURL=AppShell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppShell.d.ts","sourceRoot":"","sources":["../../src/components/AppShell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAIxE,MAAM,WAAW,aAAa;IAC5B,mEAAmE;IACnE,OAAO,EAAE,aAAa,CAAC;IACvB,0CAA0C;IAC1C,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,wEAAwE;IACxE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oFAAoF;IACpF,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,gEAAgE;IAChE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sFAAsF;IACtF,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC;CAC5B;AAyFD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,qBAU5C"}
@@ -0,0 +1,13 @@
1
+ import * as React from "react";
2
+ import type { TenantContext, UserContext } from "../types/context.js";
3
+ export interface HeaderProps {
4
+ user: UserContext;
5
+ tenant: TenantContext;
6
+ /**
7
+ * Extra controls injected between the utility icons and the user avatar.
8
+ * Use for app-specific buttons (notifications counter, feedback, etc.).
9
+ */
10
+ rightSlot?: React.ReactNode;
11
+ }
12
+ export declare const Header: React.NamedExoticComponent<HeaderProps>;
13
+ //# sourceMappingURL=Header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../src/components/Header.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAa/B,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAyGtE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,aAAa,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC7B;AAED,eAAO,MAAM,MAAM,yCA+BjB,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { ApplicationModule } from "../types/module.js";
2
+ import type { ModuleContext } from "../types/context.js";
3
+ import type { PlatformAPI } from "../types/platform.js";
4
+ export interface ModuleHostProps {
5
+ /** Resolved module implementation. Null while being loaded by the caller. */
6
+ module: ApplicationModule | null;
7
+ moduleId: string;
8
+ context: ModuleContext;
9
+ platform: PlatformAPI;
10
+ className?: string;
11
+ }
12
+ export declare function ModuleHost({ module, moduleId, context, platform, className, }: ModuleHostProps): import("react").JSX.Element;
13
+ //# sourceMappingURL=ModuleHost.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModuleHost.d.ts","sourceRoot":"","sources":["../../src/components/ModuleHost.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,iBAAiB,EAAwC,MAAM,oBAAoB,CAAC;AAClG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAsHxD,MAAM,WAAW,eAAe;IAC9B,6EAA6E;IAC7E,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,WAAW,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,SAAS,GACV,EAAE,eAAe,+BAwCjB"}
@@ -0,0 +1,26 @@
1
+ import React from "react";
2
+ interface ErrorBoundaryState {
3
+ hasError: boolean;
4
+ error: Error | null;
5
+ }
6
+ interface ShellErrorBoundaryProps {
7
+ children: React.ReactNode;
8
+ /** Called when an error is caught — use for logging/telemetry. */
9
+ onError?: (error: Error, info: React.ErrorInfo) => void;
10
+ /** Custom fallback; receives the error and a retry handler. */
11
+ fallback?: (error: Error, retry: () => void) => React.ReactNode;
12
+ }
13
+ /**
14
+ * React class-based error boundary scoped to a single module slot.
15
+ * A failure inside a module's render tree is caught here and presented
16
+ * as an isolated error state — the rest of the shell remains functional.
17
+ */
18
+ export declare class ShellErrorBoundary extends React.Component<ShellErrorBoundaryProps, ErrorBoundaryState> {
19
+ constructor(props: ShellErrorBoundaryProps);
20
+ static getDerivedStateFromError(error: Error): ErrorBoundaryState;
21
+ componentDidCatch(error: Error, info: React.ErrorInfo): void;
22
+ private handleRetry;
23
+ render(): string | number | boolean | Iterable<React.ReactNode> | React.JSX.Element | null | undefined;
24
+ }
25
+ export {};
26
+ //# sourceMappingURL=ShellErrorBoundary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShellErrorBoundary.d.ts","sourceRoot":"","sources":["../../src/components/ShellErrorBoundary.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAED,UAAU,uBAAuB;IAC/B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,kEAAkE;IAClE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC;IACxD,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,IAAI,KAAK,KAAK,CAAC,SAAS,CAAC;CACjE;AAED;;;;GAIG;AACH,qBAAa,kBAAmB,SAAQ,KAAK,CAAC,SAAS,CACrD,uBAAuB,EACvB,kBAAkB,CACnB;gBACa,KAAK,EAAE,uBAAuB;IAK1C,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,GAAG,kBAAkB;IAIjE,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,GAAG,IAAI;IAI5D,OAAO,CAAC,WAAW,CAEjB;IAEF,MAAM;CASP"}
@@ -0,0 +1,15 @@
1
+ import * as React from "react";
2
+ import type { NavigationConfig, NavItem } from "../types/navigation.js";
3
+ import type { TenantContext } from "../types/context.js";
4
+ export interface SideNavigationProps {
5
+ config: NavigationConfig;
6
+ permissions: string[];
7
+ onNavigate: (route: string) => void;
8
+ tenant: TenantContext;
9
+ /** Background color for the tenant logo tile */
10
+ tenantBrandColor?: string;
11
+ /** Items pinned at the bottom (e.g. Hub Settings, Help, Shortcuts) */
12
+ footerNavItems?: NavItem[];
13
+ }
14
+ export declare const SideNavigation: React.NamedExoticComponent<SideNavigationProps>;
15
+ //# sourceMappingURL=SideNavigation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SideNavigation.d.ts","sourceRoot":"","sources":["../../src/components/SideNavigation.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAc/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAkQzD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,gBAAgB,CAAC;IACzB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,MAAM,EAAE,aAAa,CAAC;IACtB,gDAAgD;IAChD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sEAAsE;IACtE,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC;CAC5B;AAED,eAAO,MAAM,cAAc,iDAqFzB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import * as React from "react";
2
+ import * as AccordionPrimitive from "@radix-ui/react-accordion";
3
+ declare const Accordion: React.ForwardRefExoticComponent<(AccordionPrimitive.AccordionSingleProps | AccordionPrimitive.AccordionMultipleProps) & React.RefAttributes<HTMLDivElement>>;
4
+ declare const AccordionItem: React.ForwardRefExoticComponent<Omit<AccordionPrimitive.AccordionItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
5
+ declare const AccordionTrigger: React.ForwardRefExoticComponent<Omit<AccordionPrimitive.AccordionTriggerProps & React.RefAttributes<HTMLButtonElement>, "ref"> & {
6
+ hideChevron?: boolean;
7
+ } & React.RefAttributes<HTMLButtonElement>>;
8
+ declare const AccordionContent: React.ForwardRefExoticComponent<Omit<AccordionPrimitive.AccordionContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
9
+ export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
10
+ //# sourceMappingURL=accordion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../../src/components/ui/accordion.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,kBAAkB,MAAM,2BAA2B,CAAC;AAIhE,QAAA,MAAM,SAAS,8JAA0B,CAAC;AAE1C,QAAA,MAAM,aAAa,iKAKjB,CAAC;AAGH,QAAA,MAAM,gBAAgB;kBAGJ,OAAO;2CAmBvB,CAAC;AAGH,QAAA,MAAM,gBAAgB,oKAWpB,CAAC;AAGH,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,7 @@
1
+ import * as React from "react";
2
+ import * as AvatarPrimitive from "@radix-ui/react-avatar";
3
+ declare const Avatar: React.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarProps & React.RefAttributes<HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
4
+ declare const AvatarImage: React.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarImageProps & React.RefAttributes<HTMLImageElement>, "ref"> & React.RefAttributes<HTMLImageElement>>;
5
+ declare const AvatarFallback: React.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarFallbackProps & React.RefAttributes<HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
6
+ export { Avatar, AvatarImage, AvatarFallback };
7
+ //# sourceMappingURL=avatar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["../../../src/components/ui/avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AAG1D,QAAA,MAAM,MAAM,yJAYV,CAAC;AAGH,QAAA,MAAM,WAAW,gKASf,CAAC;AAGH,QAAA,MAAM,cAAc,iKAalB,CAAC;AAGH,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,10 @@
1
+ import * as React from "react";
2
+ import { type VariantProps } from "class-variance-authority";
3
+ declare const badgeVariants: (props?: ({
4
+ variant?: "default" | "secondary" | "success" | "danger" | "warning" | null | undefined;
5
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
6
+ export interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement>, VariantProps<typeof badgeVariants> {
7
+ }
8
+ declare function Badge({ className, variant, ...props }: BadgeProps): React.JSX.Element;
9
+ export { Badge, badgeVariants };
10
+ //# sourceMappingURL=badge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../../src/components/ui/badge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGlE,QAAA,MAAM,aAAa;;8EAelB,CAAC;AAEF,MAAM,WAAW,UACf,SAAQ,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,EAC3C,YAAY,CAAC,OAAO,aAAa,CAAC;CAAG;AAEzC,iBAAS,KAAK,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,UAAU,qBAE1D;AAED,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,12 @@
1
+ import * as React from "react";
2
+ import { type VariantProps } from "class-variance-authority";
3
+ declare const buttonVariants: (props?: ({
4
+ variant?: "default" | "link" | "destructive" | "secondary" | "ghost" | null | undefined;
5
+ size?: "default" | "sm" | "lg" | "icon" | null | undefined;
6
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
+ export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
8
+ asChild?: boolean;
9
+ }
10
+ declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
11
+ export { Button, buttonVariants };
12
+ //# sourceMappingURL=button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../src/components/ui/button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGlE,QAAA,MAAM,cAAc;;;8EAkCnB,CAAC;AAEF,MAAM,WAAW,WACf,SAAQ,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EACnD,YAAY,CAAC,OAAO,cAAc,CAAC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,QAAA,MAAM,MAAM,uFAWX,CAAC;AAGF,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,6 @@
1
+ import * as CollapsiblePrimitive from "@radix-ui/react-collapsible";
2
+ declare const Collapsible: import("react").ForwardRefExoticComponent<CollapsiblePrimitive.CollapsibleProps & import("react").RefAttributes<HTMLDivElement>>;
3
+ declare const CollapsibleTrigger: import("react").ForwardRefExoticComponent<CollapsiblePrimitive.CollapsibleTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
4
+ declare const CollapsibleContent: import("react").ForwardRefExoticComponent<CollapsiblePrimitive.CollapsibleContentProps & import("react").RefAttributes<HTMLDivElement>>;
5
+ export { Collapsible, CollapsibleTrigger, CollapsibleContent };
6
+ //# sourceMappingURL=collapsible.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collapsible.d.ts","sourceRoot":"","sources":["../../../src/components/ui/collapsible.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,oBAAoB,MAAM,6BAA6B,CAAC;AAEpE,QAAA,MAAM,WAAW,kIAA4B,CAAC;AAC9C,QAAA,MAAM,kBAAkB,4IAA0C,CAAC;AACnE,QAAA,MAAM,kBAAkB,yIAA0C,CAAC;AAEnE,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,CAAC"}
@@ -0,0 +1,29 @@
1
+ import * as React from "react";
2
+ import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
3
+ declare const DropdownMenu: React.FC<DropdownMenuPrimitive.DropdownMenuProps>;
4
+ declare const DropdownMenuTrigger: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuTriggerProps & React.RefAttributes<HTMLButtonElement>>;
5
+ declare const DropdownMenuGroup: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuGroupProps & React.RefAttributes<HTMLDivElement>>;
6
+ declare const DropdownMenuPortal: React.FC<DropdownMenuPrimitive.DropdownMenuPortalProps>;
7
+ declare const DropdownMenuSub: React.FC<DropdownMenuPrimitive.DropdownMenuSubProps>;
8
+ declare const DropdownMenuRadioGroup: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuRadioGroupProps & React.RefAttributes<HTMLDivElement>>;
9
+ declare const DropdownMenuSubTrigger: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSubTriggerProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
10
+ inset?: boolean;
11
+ } & React.RefAttributes<HTMLDivElement>>;
12
+ declare const DropdownMenuSubContent: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSubContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
13
+ declare const DropdownMenuContent: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
14
+ declare const DropdownMenuItem: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
15
+ inset?: boolean;
16
+ destructive?: boolean;
17
+ } & React.RefAttributes<HTMLDivElement>>;
18
+ declare const DropdownMenuCheckboxItem: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuCheckboxItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
19
+ declare const DropdownMenuRadioItem: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuRadioItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
20
+ declare const DropdownMenuLabel: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuLabelProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
21
+ inset?: boolean;
22
+ } & React.RefAttributes<HTMLDivElement>>;
23
+ declare const DropdownMenuSeparator: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSeparatorProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
24
+ declare const DropdownMenuShortcut: {
25
+ ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>): React.JSX.Element;
26
+ displayName: string;
27
+ };
28
+ export { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuRadioItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuGroup, DropdownMenuPortal, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuRadioGroup, };
29
+ //# sourceMappingURL=dropdown-menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropdown-menu.d.ts","sourceRoot":"","sources":["../../../src/components/ui/dropdown-menu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,qBAAqB,MAAM,+BAA+B,CAAC;AAIvE,QAAA,MAAM,YAAY,mDAA6B,CAAC;AAChD,QAAA,MAAM,mBAAmB,0HAAgC,CAAC;AAC1D,QAAA,MAAM,iBAAiB,qHAA8B,CAAC;AACtD,QAAA,MAAM,kBAAkB,yDAA+B,CAAC;AACxD,QAAA,MAAM,eAAe,sDAA4B,CAAC;AAClD,QAAA,MAAM,sBAAsB,0HAAmC,CAAC;AAEhE,QAAA,MAAM,sBAAsB;YAGhB,OAAO;wCAiBjB,CAAC;AAGH,QAAA,MAAM,sBAAsB,6KAkB1B,CAAC;AAGH,QAAA,MAAM,mBAAmB,0KAqBvB,CAAC;AAGH,QAAA,MAAM,gBAAgB;YAGV,OAAO;kBACD,OAAO;wCAgBvB,CAAC;AAGH,QAAA,MAAM,wBAAwB,+KAsB5B,CAAC;AAGH,QAAA,MAAM,qBAAqB,4KAqBzB,CAAC;AAGH,QAAA,MAAM,iBAAiB;YAGX,OAAO;wCAYjB,CAAC;AAGH,QAAA,MAAM,qBAAqB,4KASzB,CAAC;AAGH,QAAA,MAAM,oBAAoB;8BAGvB,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC;;CAKvC,CAAC;AAGF,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,wBAAwB,EACxB,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,GACvB,CAAC"}
@@ -0,0 +1,10 @@
1
+ export { Accordion, AccordionItem, AccordionTrigger, AccordionContent } from "./accordion.js";
2
+ export { Avatar, AvatarImage, AvatarFallback } from "./avatar.js";
3
+ export { ScrollArea, ScrollBar } from "./scroll-area.js";
4
+ export { Button, buttonVariants, type ButtonProps } from "./button.js";
5
+ export { Badge, badgeVariants, type BadgeProps } from "./badge.js";
6
+ export { Collapsible, CollapsibleTrigger, CollapsibleContent } from "./collapsible.js";
7
+ export { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuRadioItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuGroup, DropdownMenuPortal, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuRadioGroup, } from "./dropdown-menu.js";
8
+ export { Separator } from "./separator.js";
9
+ export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider } from "./tooltip.js";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ui/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC9F,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACvF,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,wBAAwB,EACxB,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,6 @@
1
+ import * as React from "react";
2
+ import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
3
+ declare const ScrollArea: React.ForwardRefExoticComponent<Omit<ScrollAreaPrimitive.ScrollAreaProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
4
+ declare const ScrollBar: React.ForwardRefExoticComponent<Omit<ScrollAreaPrimitive.ScrollAreaScrollbarProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
5
+ export { ScrollArea, ScrollBar };
6
+ //# sourceMappingURL=scroll-area.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scroll-area.d.ts","sourceRoot":"","sources":["../../../src/components/ui/scroll-area.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,mBAAmB,MAAM,6BAA6B,CAAC;AAGnE,QAAA,MAAM,UAAU,+JAed,CAAC;AAGH,QAAA,MAAM,SAAS,wKAiBb,CAAC;AAGH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC"}
@@ -0,0 +1,5 @@
1
+ import * as React from "react";
2
+ import * as SeparatorPrimitive from "@radix-ui/react-separator";
3
+ declare const Separator: React.ForwardRefExoticComponent<Omit<SeparatorPrimitive.SeparatorProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
4
+ export { Separator };
5
+ //# sourceMappingURL=separator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"separator.d.ts","sourceRoot":"","sources":["../../../src/components/ui/separator.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,kBAAkB,MAAM,2BAA2B,CAAC;AAGhE,QAAA,MAAM,SAAS,6JAeb,CAAC;AAGH,OAAO,EAAE,SAAS,EAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ import * as React from "react";
2
+ import * as TooltipPrimitive from "@radix-ui/react-tooltip";
3
+ declare const TooltipProvider: React.FC<TooltipPrimitive.TooltipProviderProps>;
4
+ declare const Tooltip: React.FC<TooltipPrimitive.TooltipProps>;
5
+ declare const TooltipTrigger: React.ForwardRefExoticComponent<TooltipPrimitive.TooltipTriggerProps & React.RefAttributes<HTMLButtonElement>>;
6
+ declare const TooltipContent: React.ForwardRefExoticComponent<Omit<TooltipPrimitive.TooltipContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
7
+ export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };
8
+ //# sourceMappingURL=tooltip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../../src/components/ui/tooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,gBAAgB,MAAM,yBAAyB,CAAC;AAG5D,QAAA,MAAM,eAAe,iDAA4B,CAAC;AAClD,QAAA,MAAM,OAAO,yCAAwB,CAAC;AACtC,QAAA,MAAM,cAAc,gHAA2B,CAAC;AAEhD,QAAA,MAAM,cAAc,gKAsBlB,CAAC;AAGH,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC"}
@@ -0,0 +1,20 @@
1
+ import React from "react";
2
+ interface ShellContextValue {
3
+ /** Whether the side navigation is collapsed to icon-only mode. */
4
+ navCollapsed: boolean;
5
+ setNavCollapsed: (collapsed: boolean | ((prev: boolean) => boolean)) => void;
6
+ /** Title shown in the header, set by the shell when a nav item activates. */
7
+ pageTitle: string | undefined;
8
+ setPageTitle: (title: string | undefined) => void;
9
+ /** The currently active route, owned by the shell. */
10
+ activeRoute: string;
11
+ setActiveRoute: (route: string) => void;
12
+ }
13
+ export declare function useShell(): ShellContextValue;
14
+ interface ShellProviderProps {
15
+ children: React.ReactNode;
16
+ initialRoute: string;
17
+ }
18
+ export declare function ShellProvider({ children, initialRoute }: ShellProviderProps): React.JSX.Element;
19
+ export {};
20
+ //# sourceMappingURL=ShellContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShellContext.d.ts","sourceRoot":"","sources":["../../src/context/ShellContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoE,MAAM,OAAO,CAAC;AAEzF,UAAU,iBAAiB;IACzB,kEAAkE;IAClE,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,CAAC,SAAS,EAAE,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,KAAK,IAAI,CAAC;IAC7E,6EAA6E;IAC7E,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IAClD,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAID,wBAAgB,QAAQ,IAAI,iBAAiB,CAM5C;AAED,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,kBAAkB,qBAyB3E"}
@@ -0,0 +1,16 @@
1
+ import type { EventHandler, PlatformEvent } from "../types/platform.js";
2
+ /**
3
+ * Lightweight pub/sub bus shared across the shell and all mounted modules.
4
+ * Modules receive a scoped view via `createPlatformAPI` — they can only
5
+ * publish and subscribe, never clear the bus or inspect other handlers.
6
+ */
7
+ export declare class EventBus {
8
+ private readonly handlers;
9
+ publish(event: PlatformEvent): void;
10
+ subscribe(eventType: string, handler: EventHandler): () => void;
11
+ /** Publish a context-update event for a specific field. */
12
+ publishContextUpdate(field: string, value: unknown): void;
13
+ /** Publish a theme-change event. */
14
+ publishThemeUpdate(payload: unknown): void;
15
+ }
16
+ //# sourceMappingURL=EventBus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventBus.d.ts","sourceRoot":"","sources":["../../src/events/EventBus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAExE;;;;GAIG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwC;IAEjE,OAAO,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAYnC,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,MAAM,IAAI;IAa/D,2DAA2D;IAC3D,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAIzD,oCAAoC;IACpC,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;CAG3C"}