@elevasis/ui 2.40.1 → 2.41.0

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 (48) hide show
  1. package/dist/app/index.d.ts +108 -0
  2. package/dist/app/index.js +6 -7
  3. package/dist/auth/index.js +3 -4
  4. package/dist/charts/index.js +3 -4
  5. package/dist/{chunk-7MTWRSUZ.js → chunk-56O7QQE7.js} +1 -2
  6. package/dist/{chunk-SJNIOGVX.js → chunk-A2XN6PR2.js} +2 -3
  7. package/dist/{chunk-K7GKKETO.js → chunk-FIMGOWOT.js} +1073 -586
  8. package/dist/{chunk-RX6RSKWC.js → chunk-JAN2ZXN5.js} +105 -23
  9. package/dist/{chunk-LJDYY3XB.js → chunk-JHVEA5NE.js} +1 -1
  10. package/dist/{chunk-X7D6SUKR.js → chunk-QVQMOQXB.js} +8 -2
  11. package/dist/{chunk-IUQAP4IO.js → chunk-S4R2ZQS7.js} +1 -1
  12. package/dist/{chunk-7PHY5ONQ.js → chunk-VAAU2Z3S.js} +1 -1
  13. package/dist/{chunk-6EV47QQW.js → chunk-YPWN2WQ3.js} +1 -1
  14. package/dist/components/index.js +8 -9
  15. package/dist/components/navigation/index.js +2 -3
  16. package/dist/features/auth/index.js +9 -10
  17. package/dist/features/clients/index.js +8 -9
  18. package/dist/features/crm/index.js +8 -9
  19. package/dist/features/dashboard/index.js +8 -9
  20. package/dist/features/delivery/index.js +8 -9
  21. package/dist/features/knowledge/index.js +2 -3
  22. package/dist/features/lead-gen/index.d.ts +81 -0
  23. package/dist/features/lead-gen/index.js +8 -9
  24. package/dist/features/monitoring/index.js +8 -9
  25. package/dist/features/monitoring/requests/index.d.ts +69 -7
  26. package/dist/features/monitoring/requests/index.js +136 -15
  27. package/dist/features/operations/index.d.ts +79 -0
  28. package/dist/features/operations/index.js +8 -9
  29. package/dist/features/settings/index.js +8 -9
  30. package/dist/hooks/access/index.js +2 -3
  31. package/dist/hooks/delivery/index.js +8 -9
  32. package/dist/hooks/index.d.ts +18 -6
  33. package/dist/hooks/index.js +8 -9
  34. package/dist/hooks/published.d.ts +18 -6
  35. package/dist/hooks/published.js +8 -9
  36. package/dist/index.d.ts +151 -7
  37. package/dist/index.js +8 -9
  38. package/dist/knowledge/index.d.ts +81 -0
  39. package/dist/knowledge/index.js +5 -5
  40. package/dist/layout/index.d.ts +18 -2
  41. package/dist/layout/index.js +3 -1
  42. package/dist/organization/index.js +8 -9
  43. package/dist/provider/index.d.ts +120 -1
  44. package/dist/provider/index.js +5 -6
  45. package/dist/provider/published.d.ts +121 -2
  46. package/dist/provider/published.js +4 -5
  47. package/package.json +4 -4
  48. package/dist/chunk-J3FLIZY4.js +0 -423
@@ -1,16 +1,16 @@
1
- export { OrganizationSwitcher, OrganizationSwitcherConnected, createOrganizationsSlice, createUseOrgInitialization, createUseOrganizations } from '../chunk-RX6RSKWC.js';
1
+ export { OrganizationSwitcher, OrganizationSwitcherConnected, createOrganizationsSlice, createUseOrgInitialization, createUseOrganizations } from '../chunk-JAN2ZXN5.js';
2
2
  import '../chunk-B2DZLPDL.js';
3
3
  import '../chunk-66U7JOWV.js';
4
4
  import '../chunk-AUDNF2Q7.js';
5
5
  import '../chunk-6M6OLGQY.js';
6
6
  import '../chunk-BRXELOHC.js';
7
- import '../chunk-7PHY5ONQ.js';
7
+ import '../chunk-VAAU2Z3S.js';
8
8
  import '../chunk-CXY7FMUM.js';
9
9
  import '../chunk-4DRI3G36.js';
10
10
  import '../chunk-SJHM4WDG.js';
11
11
  import '../chunk-ZTWA5H77.js';
12
12
  import '../chunk-5EYJ2GIN.js';
13
- import '../chunk-X7D6SUKR.js';
13
+ import '../chunk-QVQMOQXB.js';
14
14
  import '../chunk-CLDCYJQT.js';
15
15
  import '../chunk-TYRUKGGD.js';
16
16
  import '../chunk-X4WBGKJQ.js';
@@ -18,12 +18,12 @@ import '../chunk-IIMU5YAJ.js';
18
18
  import '../chunk-HENXLGVD.js';
19
19
  import '../chunk-7FPLLSHN.js';
20
20
  import '../chunk-RNP5R5I3.js';
21
- import '../chunk-SJNIOGVX.js';
21
+ import '../chunk-A2XN6PR2.js';
22
22
  import '../chunk-5JYKCULK.js';
23
23
  import '../chunk-6D4LCJ52.js';
24
24
  import '../chunk-WF7CONXF.js';
25
25
  import '../chunk-WLOQ4IBG.js';
26
- export { OrganizationProvider } from '../chunk-6EV47QQW.js';
26
+ export { OrganizationProvider } from '../chunk-YPWN2WQ3.js';
27
27
  import '../chunk-CTJBPF3Z.js';
28
28
  import '../chunk-3KMDHCAR.js';
29
29
  import '../chunk-S3XR4II4.js';
@@ -35,11 +35,10 @@ import '../chunk-2IFYDILW.js';
35
35
  import '../chunk-Q7DJKLEN.js';
36
36
  import '../chunk-RXH4D6TY.js';
37
37
  import '../chunk-KRWALB24.js';
38
- import '../chunk-LJDYY3XB.js';
39
- import '../chunk-7MTWRSUZ.js';
40
- import '../chunk-J3FLIZY4.js';
38
+ import '../chunk-JHVEA5NE.js';
39
+ import '../chunk-56O7QQE7.js';
41
40
  import '../chunk-6DO4PE3O.js';
42
- import '../chunk-K7GKKETO.js';
41
+ import '../chunk-FIMGOWOT.js';
43
42
  export { OrganizationContext, useOrganization } from '../chunk-DD3CCMCZ.js';
44
43
  import '../chunk-W2SFTXMT.js';
45
44
  import '../chunk-6ROXVZ3L.js';
@@ -4,6 +4,7 @@ import { QueryClient } from '@tanstack/react-query';
4
4
  import * as z from 'zod';
5
5
  import { z as z$1, ZodType } from 'zod';
6
6
  import { EventSourceMessage } from '@microsoft/fetch-event-source';
7
+ import { IconBrain } from '@tabler/icons-react';
7
8
  import { MantineThemeOverride } from '@mantine/core';
8
9
 
9
10
  /** Framework-agnostic theme overrides bundled with a preset (fonts, radius, component styles). */
@@ -3800,6 +3801,84 @@ declare const OrganizationModelSchema: z$1.ZodObject<{
3800
3801
  primary: z$1.ZodDefault<z$1.ZodRecord<z$1.ZodString, z$1.ZodType<SidebarNode, unknown, z$1.core.$ZodTypeInternals<SidebarNode, unknown>>>>;
3801
3802
  bottom: z$1.ZodDefault<z$1.ZodRecord<z$1.ZodString, z$1.ZodType<SidebarNode, unknown, z$1.core.$ZodTypeInternals<SidebarNode, unknown>>>>;
3802
3803
  }, z$1.core.$strip>>;
3804
+ topbar: z$1.ZodDefault<z$1.ZodRecord<z$1.ZodString, z$1.ZodObject<{
3805
+ id: z$1.ZodString;
3806
+ label: z$1.ZodString;
3807
+ tooltip: z$1.ZodOptional<z$1.ZodString>;
3808
+ icon: z$1.ZodOptional<z$1.ZodUnion<readonly [z$1.ZodEnum<{
3809
+ message: "message";
3810
+ error: "error";
3811
+ agent: "agent";
3812
+ workflow: "workflow";
3813
+ "google-sheets": "google-sheets";
3814
+ dashboard: "dashboard";
3815
+ calendar: "calendar";
3816
+ sales: "sales";
3817
+ crm: "crm";
3818
+ "lead-gen": "lead-gen";
3819
+ projects: "projects";
3820
+ clients: "clients";
3821
+ operations: "operations";
3822
+ monitoring: "monitoring";
3823
+ knowledge: "knowledge";
3824
+ settings: "settings";
3825
+ admin: "admin";
3826
+ archive: "archive";
3827
+ business: "business";
3828
+ finance: "finance";
3829
+ platform: "platform";
3830
+ seo: "seo";
3831
+ playbook: "playbook";
3832
+ strategy: "strategy";
3833
+ reference: "reference";
3834
+ integration: "integration";
3835
+ database: "database";
3836
+ user: "user";
3837
+ team: "team";
3838
+ gmail: "gmail";
3839
+ attio: "attio";
3840
+ overview: "overview";
3841
+ "command-view": "command-view";
3842
+ "command-queue": "command-queue";
3843
+ pipeline: "pipeline";
3844
+ lists: "lists";
3845
+ resources: "resources";
3846
+ approve: "approve";
3847
+ reject: "reject";
3848
+ retry: "retry";
3849
+ edit: "edit";
3850
+ view: "view";
3851
+ launch: "launch";
3852
+ "message-plus": "message-plus";
3853
+ escalate: "escalate";
3854
+ promote: "promote";
3855
+ submit: "submit";
3856
+ email: "email";
3857
+ success: "success";
3858
+ warning: "warning";
3859
+ info: "info";
3860
+ pending: "pending";
3861
+ bolt: "bolt";
3862
+ building: "building";
3863
+ briefcase: "briefcase";
3864
+ apps: "apps";
3865
+ graph: "graph";
3866
+ shield: "shield";
3867
+ users: "users";
3868
+ "chart-bar": "chart-bar";
3869
+ search: "search";
3870
+ }>, z$1.ZodString]>>;
3871
+ order: z$1.ZodOptional<z$1.ZodNumber>;
3872
+ enabled: z$1.ZodDefault<z$1.ZodBoolean>;
3873
+ devOnly: z$1.ZodOptional<z$1.ZodBoolean>;
3874
+ requiresAdmin: z$1.ZodOptional<z$1.ZodBoolean>;
3875
+ targets: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodObject<{
3876
+ systems: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>>;
3877
+ entities: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>>;
3878
+ resources: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>>;
3879
+ actions: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>>;
3880
+ }, z$1.core.$strip>>>;
3881
+ }, z$1.core.$strip>>>;
3803
3882
  }, z$1.core.$strip>>;
3804
3883
  identity: z$1.ZodDefault<z$1.ZodObject<{
3805
3884
  mission: z$1.ZodDefault<z$1.ZodString>;
@@ -4468,6 +4547,7 @@ declare const OrganizationModelSchema: z$1.ZodObject<{
4468
4547
  edit: "edit";
4469
4548
  view: "view";
4470
4549
  launch: "launch";
4550
+ "message-plus": "message-plus";
4471
4551
  escalate: "escalate";
4472
4552
  promote: "promote";
4473
4553
  submit: "submit";
@@ -4896,6 +4976,8 @@ interface SSEConnectionManagerLike {
4896
4976
  }>;
4897
4977
  }
4898
4978
 
4979
+ type TablerIconComponent = typeof IconBrain;
4980
+
4899
4981
  type ElevasisOrganizationModel = Omit<OrganizationModel, 'knowledge'> & {
4900
4982
  knowledge?: OrganizationModel['knowledge'];
4901
4983
  };
@@ -4979,6 +5061,39 @@ interface ResolvedShellRouteMatch {
4979
5061
  interface ShellRuntime {
4980
5062
  resolveRoute: (path: string) => ResolvedShellRouteMatch;
4981
5063
  }
5064
+ /**
5065
+ * A resolved topbar action — the OM node after gating/filtering, with icon resolved
5066
+ * from the semantic icon registry. Passed to `TopbarActionModule.render`.
5067
+ */
5068
+ interface ResolvedTopbarAction {
5069
+ id: string;
5070
+ label: string;
5071
+ tooltip?: string;
5072
+ icon: TablerIconComponent;
5073
+ order: number;
5074
+ }
5075
+ /**
5076
+ * A topbar action module — binds a registry key to UI behavior (a render callback).
5077
+ * The key must match `navigation.topbar[id]`. The OM supplies data + visibility;
5078
+ * the module supplies behavior.
5079
+ */
5080
+ interface TopbarActionModule {
5081
+ /** Stable key that matches the `id` of a `navigation.topbar` node. */
5082
+ key: string;
5083
+ /** Render the topbar action. Receives the resolved OM node (icon pre-resolved). */
5084
+ render: (ctx: {
5085
+ node: ResolvedTopbarAction;
5086
+ }) => ReactNode;
5087
+ }
5088
+ /** A joined entry emitted by `getTopbarActions`: resolved OM node + module behavior. */
5089
+ interface ResolvedTopbarActionEntry {
5090
+ node: ResolvedTopbarAction;
5091
+ render: TopbarActionModule['render'];
5092
+ }
5093
+ interface TopbarActionsProjectionOptions {
5094
+ isPlatformAdmin?: boolean;
5095
+ isDev?: boolean;
5096
+ }
4982
5097
  interface OrganizationGraphSystemBridge {
4983
5098
  systemId?: string;
4984
5099
  }
@@ -4989,6 +5104,8 @@ interface OrganizationGraphContextValue {
4989
5104
  }
4990
5105
  interface ElevasisSystemsProviderProps {
4991
5106
  systems?: SystemModule[];
5107
+ /** Registered topbar action modules. OM node presence controls visibility; module supplies behavior. */
5108
+ topbarActions?: TopbarActionModule[];
4992
5109
  organizationModel?: ElevasisOrganizationModel;
4993
5110
  timeRange?: TimeRange;
4994
5111
  operationsApiUrl?: string;
@@ -5002,6 +5119,8 @@ interface ElevasisSystemsContextValue {
5002
5119
  shellModel: ResolvedShellModel;
5003
5120
  shellRuntime: ShellRuntime;
5004
5121
  getSidebarLinks: (options?: ShellSidebarProjectionOptions) => ShellSidebarLinkGroup[];
5122
+ /** Returns the list of topbar actions visible to the current user, in order. */
5123
+ getTopbarActions: (options?: TopbarActionsProjectionOptions) => ResolvedTopbarActionEntry[];
5005
5124
  enabledResolvedSystems: ResolvedSystemModule[];
5006
5125
  resolvedSystems: ResolvedSystemModule[];
5007
5126
  organizationGraph: OrganizationGraphContextValue;
@@ -5018,7 +5137,7 @@ interface ElevasisSystemsContextValue {
5018
5137
 
5019
5138
  declare function useElevasisSystems(): ElevasisSystemsContextValue;
5020
5139
  declare function useOptionalElevasisSystems(): ElevasisSystemsContextValue | null;
5021
- declare function ElevasisSystemsProvider({ systems, organizationModel, timeRange, operationsApiUrl, operationsSSEManager, deliveryApiUrl, deliverySSEManager, disabledSubsectionPaths, children }: ElevasisSystemsProviderProps): react_jsx_runtime.JSX.Element;
5140
+ declare function ElevasisSystemsProvider({ systems, topbarActions, organizationModel, timeRange, operationsApiUrl, operationsSSEManager, deliveryApiUrl, deliverySSEManager, disabledSubsectionPaths, children }: ElevasisSystemsProviderProps): react_jsx_runtime.JSX.Element;
5022
5141
 
5023
5142
  declare function SystemShell({ children }: {
5024
5143
  children: ReactNode;
@@ -1,9 +1,9 @@
1
- export { ElevasisUIProvider, createTestSystemsProvider, useResolvedOrganizationModel } from '../chunk-SJNIOGVX.js';
1
+ export { ElevasisUIProvider, createTestSystemsProvider, useResolvedOrganizationModel } from '../chunk-A2XN6PR2.js';
2
2
  import '../chunk-5JYKCULK.js';
3
3
  import '../chunk-6D4LCJ52.js';
4
4
  import '../chunk-WF7CONXF.js';
5
5
  import '../chunk-WLOQ4IBG.js';
6
- export { CrmActionsProvider, ElevasisCoreProvider, ListActionsProvider, NotificationProvider, SystemShell, useCrmActions, useListActions, useNotificationAdapter } from '../chunk-6EV47QQW.js';
6
+ export { CrmActionsProvider, ElevasisCoreProvider, ListActionsProvider, NotificationProvider, SystemShell, useCrmActions, useListActions, useNotificationAdapter } from '../chunk-YPWN2WQ3.js';
7
7
  import '../chunk-CTJBPF3Z.js';
8
8
  import '../chunk-3KMDHCAR.js';
9
9
  import '../chunk-S3XR4II4.js';
@@ -15,11 +15,10 @@ import '../chunk-2IFYDILW.js';
15
15
  import '../chunk-Q7DJKLEN.js';
16
16
  import '../chunk-RXH4D6TY.js';
17
17
  import '../chunk-KRWALB24.js';
18
- import '../chunk-LJDYY3XB.js';
19
- import '../chunk-7MTWRSUZ.js';
20
- export { ElevasisSystemsProvider, useElevasisSystems, useOptionalElevasisSystems } from '../chunk-J3FLIZY4.js';
18
+ import '../chunk-JHVEA5NE.js';
19
+ import '../chunk-56O7QQE7.js';
21
20
  import '../chunk-6DO4PE3O.js';
22
- import '../chunk-K7GKKETO.js';
21
+ export { ElevasisSystemsProvider, useElevasisSystems, useOptionalElevasisSystems } from '../chunk-FIMGOWOT.js';
23
22
  import '../chunk-DD3CCMCZ.js';
24
23
  import '../chunk-W2SFTXMT.js';
25
24
  import '../chunk-6ROXVZ3L.js';
@@ -4,6 +4,7 @@ import { QueryClient } from '@tanstack/react-query';
4
4
  import * as z from 'zod';
5
5
  import { z as z$1, ZodType } from 'zod';
6
6
  import { EventSourceMessage } from '@microsoft/fetch-event-source';
7
+ import { IconBrain } from '@tabler/icons-react';
7
8
 
8
9
  /** Framework-agnostic theme overrides bundled with a preset (fonts, radius, component styles). */
9
10
  interface FrameworkThemeOverrides {
@@ -3799,6 +3800,84 @@ declare const OrganizationModelSchema: z$1.ZodObject<{
3799
3800
  primary: z$1.ZodDefault<z$1.ZodRecord<z$1.ZodString, z$1.ZodType<SidebarNode, unknown, z$1.core.$ZodTypeInternals<SidebarNode, unknown>>>>;
3800
3801
  bottom: z$1.ZodDefault<z$1.ZodRecord<z$1.ZodString, z$1.ZodType<SidebarNode, unknown, z$1.core.$ZodTypeInternals<SidebarNode, unknown>>>>;
3801
3802
  }, z$1.core.$strip>>;
3803
+ topbar: z$1.ZodDefault<z$1.ZodRecord<z$1.ZodString, z$1.ZodObject<{
3804
+ id: z$1.ZodString;
3805
+ label: z$1.ZodString;
3806
+ tooltip: z$1.ZodOptional<z$1.ZodString>;
3807
+ icon: z$1.ZodOptional<z$1.ZodUnion<readonly [z$1.ZodEnum<{
3808
+ message: "message";
3809
+ error: "error";
3810
+ agent: "agent";
3811
+ workflow: "workflow";
3812
+ "google-sheets": "google-sheets";
3813
+ dashboard: "dashboard";
3814
+ calendar: "calendar";
3815
+ sales: "sales";
3816
+ crm: "crm";
3817
+ "lead-gen": "lead-gen";
3818
+ projects: "projects";
3819
+ clients: "clients";
3820
+ operations: "operations";
3821
+ monitoring: "monitoring";
3822
+ knowledge: "knowledge";
3823
+ settings: "settings";
3824
+ admin: "admin";
3825
+ archive: "archive";
3826
+ business: "business";
3827
+ finance: "finance";
3828
+ platform: "platform";
3829
+ seo: "seo";
3830
+ playbook: "playbook";
3831
+ strategy: "strategy";
3832
+ reference: "reference";
3833
+ integration: "integration";
3834
+ database: "database";
3835
+ user: "user";
3836
+ team: "team";
3837
+ gmail: "gmail";
3838
+ attio: "attio";
3839
+ overview: "overview";
3840
+ "command-view": "command-view";
3841
+ "command-queue": "command-queue";
3842
+ pipeline: "pipeline";
3843
+ lists: "lists";
3844
+ resources: "resources";
3845
+ approve: "approve";
3846
+ reject: "reject";
3847
+ retry: "retry";
3848
+ edit: "edit";
3849
+ view: "view";
3850
+ launch: "launch";
3851
+ "message-plus": "message-plus";
3852
+ escalate: "escalate";
3853
+ promote: "promote";
3854
+ submit: "submit";
3855
+ email: "email";
3856
+ success: "success";
3857
+ warning: "warning";
3858
+ info: "info";
3859
+ pending: "pending";
3860
+ bolt: "bolt";
3861
+ building: "building";
3862
+ briefcase: "briefcase";
3863
+ apps: "apps";
3864
+ graph: "graph";
3865
+ shield: "shield";
3866
+ users: "users";
3867
+ "chart-bar": "chart-bar";
3868
+ search: "search";
3869
+ }>, z$1.ZodString]>>;
3870
+ order: z$1.ZodOptional<z$1.ZodNumber>;
3871
+ enabled: z$1.ZodDefault<z$1.ZodBoolean>;
3872
+ devOnly: z$1.ZodOptional<z$1.ZodBoolean>;
3873
+ requiresAdmin: z$1.ZodOptional<z$1.ZodBoolean>;
3874
+ targets: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodObject<{
3875
+ systems: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>>;
3876
+ entities: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>>;
3877
+ resources: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>>;
3878
+ actions: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>>;
3879
+ }, z$1.core.$strip>>>;
3880
+ }, z$1.core.$strip>>>;
3802
3881
  }, z$1.core.$strip>>;
3803
3882
  identity: z$1.ZodDefault<z$1.ZodObject<{
3804
3883
  mission: z$1.ZodDefault<z$1.ZodString>;
@@ -4467,6 +4546,7 @@ declare const OrganizationModelSchema: z$1.ZodObject<{
4467
4546
  edit: "edit";
4468
4547
  view: "view";
4469
4548
  launch: "launch";
4549
+ "message-plus": "message-plus";
4470
4550
  escalate: "escalate";
4471
4551
  promote: "promote";
4472
4552
  submit: "submit";
@@ -4832,6 +4912,8 @@ interface SSEConnectionManagerLike {
4832
4912
  }>;
4833
4913
  }
4834
4914
 
4915
+ type TablerIconComponent = typeof IconBrain;
4916
+
4835
4917
  type ElevasisOrganizationModel = Omit<OrganizationModel, 'knowledge'> & {
4836
4918
  knowledge?: OrganizationModel['knowledge'];
4837
4919
  };
@@ -4915,6 +4997,39 @@ interface ResolvedShellRouteMatch {
4915
4997
  interface ShellRuntime {
4916
4998
  resolveRoute: (path: string) => ResolvedShellRouteMatch;
4917
4999
  }
5000
+ /**
5001
+ * A resolved topbar action — the OM node after gating/filtering, with icon resolved
5002
+ * from the semantic icon registry. Passed to `TopbarActionModule.render`.
5003
+ */
5004
+ interface ResolvedTopbarAction {
5005
+ id: string;
5006
+ label: string;
5007
+ tooltip?: string;
5008
+ icon: TablerIconComponent;
5009
+ order: number;
5010
+ }
5011
+ /**
5012
+ * A topbar action module — binds a registry key to UI behavior (a render callback).
5013
+ * The key must match `navigation.topbar[id]`. The OM supplies data + visibility;
5014
+ * the module supplies behavior.
5015
+ */
5016
+ interface TopbarActionModule {
5017
+ /** Stable key that matches the `id` of a `navigation.topbar` node. */
5018
+ key: string;
5019
+ /** Render the topbar action. Receives the resolved OM node (icon pre-resolved). */
5020
+ render: (ctx: {
5021
+ node: ResolvedTopbarAction;
5022
+ }) => ReactNode;
5023
+ }
5024
+ /** A joined entry emitted by `getTopbarActions`: resolved OM node + module behavior. */
5025
+ interface ResolvedTopbarActionEntry {
5026
+ node: ResolvedTopbarAction;
5027
+ render: TopbarActionModule['render'];
5028
+ }
5029
+ interface TopbarActionsProjectionOptions {
5030
+ isPlatformAdmin?: boolean;
5031
+ isDev?: boolean;
5032
+ }
4918
5033
  interface OrganizationGraphSystemBridge {
4919
5034
  systemId?: string;
4920
5035
  }
@@ -4925,6 +5040,8 @@ interface OrganizationGraphContextValue {
4925
5040
  }
4926
5041
  interface ElevasisSystemsProviderProps {
4927
5042
  systems?: SystemModule[];
5043
+ /** Registered topbar action modules. OM node presence controls visibility; module supplies behavior. */
5044
+ topbarActions?: TopbarActionModule[];
4928
5045
  organizationModel?: ElevasisOrganizationModel;
4929
5046
  timeRange?: TimeRange;
4930
5047
  operationsApiUrl?: string;
@@ -4938,6 +5055,8 @@ interface ElevasisSystemsContextValue {
4938
5055
  shellModel: ResolvedShellModel;
4939
5056
  shellRuntime: ShellRuntime;
4940
5057
  getSidebarLinks: (options?: ShellSidebarProjectionOptions) => ShellSidebarLinkGroup[];
5058
+ /** Returns the list of topbar actions visible to the current user, in order. */
5059
+ getTopbarActions: (options?: TopbarActionsProjectionOptions) => ResolvedTopbarActionEntry[];
4941
5060
  enabledResolvedSystems: ResolvedSystemModule[];
4942
5061
  resolvedSystems: ResolvedSystemModule[];
4943
5062
  organizationGraph: OrganizationGraphContextValue;
@@ -4954,7 +5073,7 @@ interface ElevasisSystemsContextValue {
4954
5073
 
4955
5074
  declare function useElevasisSystems(): ElevasisSystemsContextValue;
4956
5075
  declare function useOptionalElevasisSystems(): ElevasisSystemsContextValue | null;
4957
- declare function ElevasisSystemsProvider({ systems, organizationModel, timeRange, operationsApiUrl, operationsSSEManager, deliveryApiUrl, deliverySSEManager, disabledSubsectionPaths, children }: ElevasisSystemsProviderProps): react_jsx_runtime.JSX.Element;
5076
+ declare function ElevasisSystemsProvider({ systems, topbarActions, organizationModel, timeRange, operationsApiUrl, operationsSSEManager, deliveryApiUrl, deliverySSEManager, disabledSubsectionPaths, children }: ElevasisSystemsProviderProps): react_jsx_runtime.JSX.Element;
4958
5077
 
4959
5078
  declare function SystemShell({ children }: {
4960
5079
  children: ReactNode;
@@ -5003,4 +5122,4 @@ declare function useElevasisServices(): ElevasisServiceContextValue;
5003
5122
  declare function ElevasisServiceProvider({ apiRequest, organizationId, workOSOrganizationId, isReady, children }: ElevasisServiceProviderProps): react_jsx_runtime.JSX.Element;
5004
5123
 
5005
5124
  export { AppearanceProvider, ElevasisCoreProvider, ElevasisServiceProvider, ElevasisSystemsProvider, NotificationProvider, SystemShell, useAppearance, useElevasisServices, useElevasisSystems, useNotificationAdapter, useOptionalElevasisSystems };
5006
- export type { ApiKeyConfig, AppearanceConfig, AuthConfig, AuthKitConfig, ElevasisCoreProviderProps, ElevasisCoreThemeConfig, ElevasisServiceContextValue, ElevasisServiceProviderProps, ElevasisSystemsContextValue, ElevasisSystemsProviderProps, ElevasisTokenOverrides, NotificationAdapter, OrganizationGraphContextValue, OrganizationGraphSystemBridge, ResolvedShellModel, ResolvedShellRouteMatch, ResolvedShellSystem, ResolvedSystemAccess, ResolvedSystemModule, ResolvedSystemSemantics, ShellRouteMatchStatus, ShellRuntime, ShellSidebarLinkGroup, ShellSidebarLinkItem, ShellSidebarProjectionOptions, SystemIconComponent, SystemModule, SystemSidebarComponent, WithSchemes };
5125
+ export type { ApiKeyConfig, AppearanceConfig, AuthConfig, AuthKitConfig, ElevasisCoreProviderProps, ElevasisCoreThemeConfig, ElevasisServiceContextValue, ElevasisServiceProviderProps, ElevasisSystemsContextValue, ElevasisSystemsProviderProps, ElevasisTokenOverrides, NotificationAdapter, OrganizationGraphContextValue, OrganizationGraphSystemBridge, ResolvedShellModel, ResolvedShellRouteMatch, ResolvedShellSystem, ResolvedSystemAccess, ResolvedSystemModule, ResolvedSystemSemantics, ResolvedTopbarAction, ResolvedTopbarActionEntry, ShellRouteMatchStatus, ShellRuntime, ShellSidebarLinkGroup, ShellSidebarLinkItem, ShellSidebarProjectionOptions, SystemIconComponent, SystemModule, SystemSidebarComponent, TopbarActionModule, TopbarActionsProjectionOptions, WithSchemes };
@@ -1,4 +1,4 @@
1
- export { ElevasisCoreProvider, NotificationProvider, SystemShell, useNotificationAdapter } from '../chunk-6EV47QQW.js';
1
+ export { ElevasisCoreProvider, NotificationProvider, SystemShell, useNotificationAdapter } from '../chunk-YPWN2WQ3.js';
2
2
  import '../chunk-CTJBPF3Z.js';
3
3
  import '../chunk-3KMDHCAR.js';
4
4
  import '../chunk-S3XR4II4.js';
@@ -10,11 +10,10 @@ import '../chunk-2IFYDILW.js';
10
10
  import '../chunk-Q7DJKLEN.js';
11
11
  import '../chunk-RXH4D6TY.js';
12
12
  import '../chunk-KRWALB24.js';
13
- import '../chunk-LJDYY3XB.js';
14
- import '../chunk-7MTWRSUZ.js';
15
- export { ElevasisSystemsProvider, useElevasisSystems, useOptionalElevasisSystems } from '../chunk-J3FLIZY4.js';
13
+ import '../chunk-JHVEA5NE.js';
14
+ import '../chunk-56O7QQE7.js';
16
15
  import '../chunk-6DO4PE3O.js';
17
- import '../chunk-K7GKKETO.js';
16
+ export { ElevasisSystemsProvider, useElevasisSystems, useOptionalElevasisSystems } from '../chunk-FIMGOWOT.js';
18
17
  import '../chunk-DD3CCMCZ.js';
19
18
  import '../chunk-W2SFTXMT.js';
20
19
  import '../chunk-6ROXVZ3L.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elevasis/ui",
3
- "version": "2.40.1",
3
+ "version": "2.41.0",
4
4
  "description": "UI components and platform-aware hooks for building custom frontends on the Elevasis platform",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -271,9 +271,9 @@
271
271
  "vitest": "^3.2.4",
272
272
  "@elevasis/sdk": "1.29.0",
273
273
  "@repo/elevasis-core": "1.0.0",
274
- "@repo/core": "0.36.0",
275
- "@repo/eslint-config": "0.0.0",
276
- "@repo/typescript-config": "0.0.0"
274
+ "@repo/core": "0.37.0",
275
+ "@repo/typescript-config": "0.0.0",
276
+ "@repo/eslint-config": "0.0.0"
277
277
  },
278
278
  "dependencies": {
279
279
  "@dagrejs/dagre": "^1.1.4",