@elevasis/ui 2.36.0 → 2.38.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 (95) hide show
  1. package/dist/api/index.js +4 -3
  2. package/dist/app/index.css +0 -384
  3. package/dist/app/index.d.ts +75 -2
  4. package/dist/app/index.js +22 -21
  5. package/dist/auth/index.d.ts +91 -28
  6. package/dist/auth/index.js +5 -1
  7. package/dist/charts/index.js +9 -3
  8. package/dist/chunk-4O3VAALW.js +349 -0
  9. package/dist/{chunk-O2Q4VMRN.js → chunk-566XWGPP.js} +76 -109
  10. package/dist/chunk-5EYJ2GIN.js +122 -0
  11. package/dist/chunk-6D4LCJ52.js +10 -0
  12. package/dist/chunk-6ROXVZ3L.js +9 -0
  13. package/dist/{chunk-YYX7OPZQ.js → chunk-73EWE2EW.js} +1 -1
  14. package/dist/{chunk-SIQ3P4OR.js → chunk-7GQFIWP4.js} +8 -756
  15. package/dist/{chunk-VKIZUUPM.js → chunk-7YXZFS56.js} +31 -14
  16. package/dist/{chunk-AKW7KISS.js → chunk-7ZWXTH5J.js} +2 -44
  17. package/dist/chunk-A7IG36LB.js +215 -0
  18. package/dist/chunk-B2DZLPDL.js +39 -0
  19. package/dist/chunk-C6BDBZRO.js +422 -0
  20. package/dist/chunk-CLDCYJQT.js +1 -0
  21. package/dist/{chunk-LUYVRATI.js → chunk-DA6I5VEY.js} +5 -213
  22. package/dist/chunk-H2MEFUQD.js +337 -0
  23. package/dist/chunk-I53EX4VU.js +734 -0
  24. package/dist/chunk-IIMU5YAJ.js +53 -0
  25. package/dist/chunk-JXVNHVK7.js +79 -0
  26. package/dist/chunk-M7Q4UBRY.js +85 -0
  27. package/dist/{chunk-K4UZU3TU.js → chunk-P34FFSOX.js} +1 -1
  28. package/dist/chunk-PGWANFNE.js +112 -0
  29. package/dist/{chunk-F6EFC2MJ.js → chunk-Q64E2TZY.js} +440 -2075
  30. package/dist/chunk-S3XR4II4.js +30 -0
  31. package/dist/chunk-SHZT7ULK.js +425 -0
  32. package/dist/{chunk-GX6XBRRF.js → chunk-TYRUKGGD.js} +2 -1
  33. package/dist/{chunk-R3VCBZDC.js → chunk-X4WBGKJQ.js} +3 -50
  34. package/dist/{chunk-GEFWMU26.js → chunk-X66MVMZT.js} +1 -9
  35. package/dist/{chunk-57OZ3AEG.js → chunk-Y3JQBSKQ.js} +1 -1
  36. package/dist/components/index.d.ts +74 -42
  37. package/dist/components/index.js +34 -19
  38. package/dist/components/navigation/index.js +3 -31
  39. package/dist/features/auth/index.d.ts +97 -99
  40. package/dist/features/auth/index.js +37 -99
  41. package/dist/features/clients/index.js +34 -19
  42. package/dist/features/crm/index.d.ts +65 -0
  43. package/dist/features/crm/index.js +34 -19
  44. package/dist/features/dashboard/index.js +34 -19
  45. package/dist/features/delivery/index.d.ts +65 -0
  46. package/dist/features/delivery/index.js +34 -19
  47. package/dist/features/knowledge/index.js +6 -30
  48. package/dist/features/lead-gen/index.d.ts +1096 -1
  49. package/dist/features/lead-gen/index.js +34 -19
  50. package/dist/features/monitoring/index.js +34 -19
  51. package/dist/features/monitoring/requests/index.js +34 -19
  52. package/dist/features/notes/index.d.ts +72 -0
  53. package/dist/features/notes/index.js +621 -0
  54. package/dist/features/operations/index.d.ts +10 -2
  55. package/dist/features/operations/index.js +34 -19
  56. package/dist/features/right-panel-host/index.d.ts +214 -0
  57. package/dist/features/right-panel-host/index.js +639 -0
  58. package/dist/features/seo/index.js +3 -2
  59. package/dist/features/settings/index.d.ts +68 -35
  60. package/dist/features/settings/index.js +34 -19
  61. package/dist/hooks/access/index.d.ts +90 -0
  62. package/dist/hooks/access/index.js +10 -0
  63. package/dist/hooks/delivery/index.d.ts +65 -0
  64. package/dist/hooks/delivery/index.js +34 -19
  65. package/dist/hooks/index.d.ts +1644 -1651
  66. package/dist/hooks/index.js +34 -19
  67. package/dist/hooks/published.d.ts +1644 -1651
  68. package/dist/hooks/published.js +34 -19
  69. package/dist/hooks/user-notes/index.d.ts +57 -0
  70. package/dist/hooks/user-notes/index.js +3 -0
  71. package/dist/index.d.ts +294 -277
  72. package/dist/index.js +35 -20
  73. package/dist/initialization/index.d.ts +65 -19
  74. package/dist/knowledge/index.d.ts +10 -2
  75. package/dist/knowledge/index.js +173 -28
  76. package/dist/layout/index.js +5 -3
  77. package/dist/organization/index.d.ts +0 -19
  78. package/dist/organization/index.js +34 -19
  79. package/dist/profile/index.d.ts +65 -0
  80. package/dist/provider/index.css +0 -384
  81. package/dist/provider/index.d.ts +75 -2
  82. package/dist/provider/index.js +16 -21
  83. package/dist/provider/published.css +0 -523
  84. package/dist/provider/published.d.ts +75 -2
  85. package/dist/provider/published.js +11 -21
  86. package/dist/supabase/index.d.ts +127 -0
  87. package/dist/test-utils/index.d.ts +2 -21
  88. package/dist/test-utils/index.js +5 -18
  89. package/dist/theme/index.js +3 -1
  90. package/dist/types/index.d.ts +115 -59
  91. package/dist/utils/index.js +2 -1
  92. package/package.json +21 -5
  93. package/src/auth/README.md +6 -6
  94. package/dist/components/navigation/index.css +0 -649
  95. package/dist/features/knowledge/index.css +0 -649
@@ -1460,6 +1460,51 @@ type Database = {
1460
1460
  }
1461
1461
  ];
1462
1462
  };
1463
+ deployment_organization_models: {
1464
+ Row: {
1465
+ created_at: string;
1466
+ deployment_id: string;
1467
+ model_hash: string | null;
1468
+ organization_id: string;
1469
+ organization_model: Json;
1470
+ schema_version: string;
1471
+ updated_at: string;
1472
+ };
1473
+ Insert: {
1474
+ created_at?: string;
1475
+ deployment_id: string;
1476
+ model_hash?: string | null;
1477
+ organization_id: string;
1478
+ organization_model: Json;
1479
+ schema_version?: string;
1480
+ updated_at?: string;
1481
+ };
1482
+ Update: {
1483
+ created_at?: string;
1484
+ deployment_id?: string;
1485
+ model_hash?: string | null;
1486
+ organization_id?: string;
1487
+ organization_model?: Json;
1488
+ schema_version?: string;
1489
+ updated_at?: string;
1490
+ };
1491
+ Relationships: [
1492
+ {
1493
+ foreignKeyName: "deployment_organization_models_deployment_id_fkey";
1494
+ columns: ["deployment_id"];
1495
+ isOneToOne: true;
1496
+ referencedRelation: "deployments";
1497
+ referencedColumns: ["id"];
1498
+ },
1499
+ {
1500
+ foreignKeyName: "deployment_organization_models_organization_id_fkey";
1501
+ columns: ["organization_id"];
1502
+ isOneToOne: false;
1503
+ referencedRelation: "organizations";
1504
+ referencedColumns: ["id"];
1505
+ }
1506
+ ];
1507
+ };
1463
1508
  deployments: {
1464
1509
  Row: {
1465
1510
  created_at: string;
@@ -2981,6 +3026,12 @@ type Database = {
2981
3026
  Args: never;
2982
3027
  Returns: boolean;
2983
3028
  };
3029
+ current_user_shares_org_with: {
3030
+ Args: {
3031
+ other_user_id: string;
3032
+ };
3033
+ Returns: boolean;
3034
+ };
2984
3035
  current_user_supabase_id: {
2985
3036
  Args: never;
2986
3037
  Returns: string;
@@ -3020,6 +3071,20 @@ type Database = {
3020
3071
  Args: never;
3021
3072
  Returns: string;
3022
3073
  };
3074
+ has_org_access: {
3075
+ Args: {
3076
+ action?: string;
3077
+ org_id: string;
3078
+ system_path: string;
3079
+ };
3080
+ Returns: boolean;
3081
+ } | {
3082
+ Args: {
3083
+ action?: string;
3084
+ system_path: string;
3085
+ };
3086
+ Returns: boolean;
3087
+ };
3023
3088
  has_org_permission: {
3024
3089
  Args: {
3025
3090
  org_id: string;
@@ -4480,6 +4545,48 @@ declare const useSupabase: () => SupabaseClient<Database, "public", "public", {
4480
4545
  referencedColumns: ["id"];
4481
4546
  }];
4482
4547
  };
4548
+ deployment_organization_models: {
4549
+ Row: {
4550
+ created_at: string;
4551
+ deployment_id: string;
4552
+ model_hash: string | null;
4553
+ organization_id: string;
4554
+ organization_model: Json;
4555
+ schema_version: string;
4556
+ updated_at: string;
4557
+ };
4558
+ Insert: {
4559
+ created_at?: string;
4560
+ deployment_id: string;
4561
+ model_hash?: string | null;
4562
+ organization_id: string;
4563
+ organization_model: Json;
4564
+ schema_version?: string;
4565
+ updated_at?: string;
4566
+ };
4567
+ Update: {
4568
+ created_at?: string;
4569
+ deployment_id?: string;
4570
+ model_hash?: string | null;
4571
+ organization_id?: string;
4572
+ organization_model?: Json;
4573
+ schema_version?: string;
4574
+ updated_at?: string;
4575
+ };
4576
+ Relationships: [{
4577
+ foreignKeyName: "deployment_organization_models_deployment_id_fkey";
4578
+ columns: ["deployment_id"];
4579
+ isOneToOne: true;
4580
+ referencedRelation: "deployments";
4581
+ referencedColumns: ["id"];
4582
+ }, {
4583
+ foreignKeyName: "deployment_organization_models_organization_id_fkey";
4584
+ columns: ["organization_id"];
4585
+ isOneToOne: false;
4586
+ referencedRelation: "organizations";
4587
+ referencedColumns: ["id"];
4588
+ }];
4589
+ };
4483
4590
  deployments: {
4484
4591
  Row: {
4485
4592
  created_at: string;
@@ -5920,6 +6027,12 @@ declare const useSupabase: () => SupabaseClient<Database, "public", "public", {
5920
6027
  Args: never;
5921
6028
  Returns: boolean;
5922
6029
  };
6030
+ current_user_shares_org_with: {
6031
+ Args: {
6032
+ other_user_id: string;
6033
+ };
6034
+ Returns: boolean;
6035
+ };
5923
6036
  current_user_supabase_id: {
5924
6037
  Args: never;
5925
6038
  Returns: string;
@@ -5959,6 +6072,20 @@ declare const useSupabase: () => SupabaseClient<Database, "public", "public", {
5959
6072
  Args: never;
5960
6073
  Returns: string;
5961
6074
  };
6075
+ has_org_access: {
6076
+ Args: {
6077
+ action?: string;
6078
+ org_id: string;
6079
+ system_path: string;
6080
+ };
6081
+ Returns: boolean;
6082
+ } | {
6083
+ Args: {
6084
+ action?: string;
6085
+ system_path: string;
6086
+ };
6087
+ Returns: boolean;
6088
+ };
5962
6089
  has_org_permission: {
5963
6090
  Args: {
5964
6091
  org_id: string;
@@ -117,25 +117,6 @@ declare const server: msw_node.SetupServerApi;
117
117
 
118
118
  declare const handlers: msw.HttpHandler[];
119
119
 
120
- type RestrictionSource = 'membership' | null;
121
- interface FeatureAccessResult {
122
- allowed: boolean;
123
- restrictedBy: RestrictionSource;
124
- }
125
-
126
- type MockFeatureAccessOptions = {
127
- allowed?: boolean;
128
- restrictedBy?: FeatureAccessResult['restrictedBy'];
129
- };
130
- declare function mockFeatureAccess({ allowed, restrictedBy }?: MockFeatureAccessOptions): {
131
- isReady: boolean;
132
- hasFeature: () => boolean;
133
- checkFeature: () => {
134
- allowed: boolean;
135
- restrictedBy: "membership" | null;
136
- };
137
- };
138
-
139
120
  type OrgOsUiRouteContractMode = 'development' | 'production';
140
121
  interface OrgOsRouteContractSystem {
141
122
  id: string;
@@ -189,5 +170,5 @@ declare function formatOrgOsUiRouteContractIssue(issue: OrgOsUiRouteContractIssu
189
170
  declare function formatOrgOsUiRouteContractFailure(issues: readonly OrgOsUiRouteContractIssue[]): string;
190
171
  declare function assertOrgOsUiRouteContract(options: OrgOsUiRouteContractOptions): OrgOsUiRouteContractResult;
191
172
 
192
- export { TestProviders, assertOrgOsUiRouteContract, collectOrgOsUiRouteContractIssues, createMockUseAuth, createTestQueryClient, createTestWrapper, extractOrgOsRouteTreeFullPaths, formatOrgOsUiRouteContractFailure, formatOrgOsUiRouteContractIssue, handlers, mockAuthLoading, mockAuthenticatedUser, mockFeatureAccess, mockUnauthenticatedUser, mockUseAuth, mockWorkOSUser, normalizeOrgOsRoutePath, ownsOrgOsSystem, renderWithProviders as render, renderHookWithProviders, renderWithProviders, server };
193
- export type { CustomRenderHookOptions, CustomRenderOptions, MockFeatureAccessOptions, OrgOsRouteContractOrganizationModel, OrgOsRouteContractSystem, OrgOsUiRouteContractIssue, OrgOsUiRouteContractIssueKind, OrgOsUiRouteContractMode, OrgOsUiRouteContractOptions, OrgOsUiRouteContractResult, OrgOsUiRouteContractTarget, TestProvidersProps };
173
+ export { TestProviders, assertOrgOsUiRouteContract, collectOrgOsUiRouteContractIssues, createMockUseAuth, createTestQueryClient, createTestWrapper, extractOrgOsRouteTreeFullPaths, formatOrgOsUiRouteContractFailure, formatOrgOsUiRouteContractIssue, handlers, mockAuthLoading, mockAuthenticatedUser, mockUnauthenticatedUser, mockUseAuth, mockWorkOSUser, normalizeOrgOsRoutePath, ownsOrgOsSystem, renderWithProviders as render, renderHookWithProviders, renderWithProviders, server };
174
+ export type { CustomRenderHookOptions, CustomRenderOptions, OrgOsRouteContractOrganizationModel, OrgOsRouteContractSystem, OrgOsUiRouteContractIssue, OrgOsUiRouteContractIssueKind, OrgOsUiRouteContractMode, OrgOsUiRouteContractOptions, OrgOsUiRouteContractResult, OrgOsUiRouteContractTarget, TestProvidersProps };
@@ -2,11 +2,12 @@ import { server, handlers } from '../chunk-7XKCG5CT.js';
2
2
  export { handlers, server } from '../chunk-7XKCG5CT.js';
3
3
  import { mockWorkOSUser, mockUseAuth, mockUnauthenticatedUser, mockAuthenticatedUser, mockAuthLoading, createMockUseAuth } from '../chunk-DRQPEMJI.js';
4
4
  export { createMockUseAuth, mockAuthLoading, mockAuthenticatedUser, mockUnauthenticatedUser, mockUseAuth, mockWorkOSUser } from '../chunk-DRQPEMJI.js';
5
- import '../chunk-YYX7OPZQ.js';
6
- import { ApiClientProvider } from '../chunk-57OZ3AEG.js';
7
- import '../chunk-GEFWMU26.js';
5
+ import '../chunk-73EWE2EW.js';
6
+ import { ApiClientProvider } from '../chunk-Y3JQBSKQ.js';
7
+ import '../chunk-X66MVMZT.js';
8
8
  import '../chunk-KRWALB24.js';
9
9
  import '../chunk-DD3CCMCZ.js';
10
+ import '../chunk-6ROXVZ3L.js';
10
11
  import { ElevasisServiceProvider } from '../chunk-KJ3QUBNU.js';
11
12
  import { __export, __reExport } from '../chunk-I2KLQ2HA.js';
12
13
  import { MantineProvider } from '@mantine/core';
@@ -30,7 +31,6 @@ __export(test_utils_exports, {
30
31
  handlers: () => handlers,
31
32
  mockAuthLoading: () => mockAuthLoading,
32
33
  mockAuthenticatedUser: () => mockAuthenticatedUser,
33
- mockFeatureAccess: () => mockFeatureAccess,
34
34
  mockUnauthenticatedUser: () => mockUnauthenticatedUser,
35
35
  mockUseAuth: () => mockUseAuth,
36
36
  mockWorkOSUser: () => mockWorkOSUser,
@@ -160,19 +160,6 @@ function createTestWrapper(options) {
160
160
  // src/test-utils/index.ts
161
161
  __reExport(test_utils_exports, render_exports);
162
162
 
163
- // src/test-utils/mocks/feature-access.ts
164
- function mockFeatureAccess({ allowed = true, restrictedBy } = {}) {
165
- const result = {
166
- allowed,
167
- restrictedBy: restrictedBy ?? null
168
- };
169
- return {
170
- isReady: true,
171
- hasFeature: () => allowed,
172
- checkFeature: () => result
173
- };
174
- }
175
-
176
163
  // src/test-utils/orgOsUiRouteContract.ts
177
164
  function normalizeOrgOsRoutePath(path) {
178
165
  const trimmed = path.trim();
@@ -286,4 +273,4 @@ function assertOrgOsUiRouteContract(options) {
286
273
  return result;
287
274
  }
288
275
 
289
- export { TestProviders, assertOrgOsUiRouteContract, collectOrgOsUiRouteContractIssues, createTestQueryClient, createTestWrapper, extractOrgOsRouteTreeFullPaths, formatOrgOsUiRouteContractFailure, formatOrgOsUiRouteContractIssue, mockFeatureAccess, normalizeOrgOsRoutePath, ownsOrgOsSystem, renderWithProviders as render, renderHookWithProviders, renderWithProviders };
276
+ export { TestProviders, assertOrgOsUiRouteContract, collectOrgOsUiRouteContractIssues, createTestQueryClient, createTestWrapper, extractOrgOsRouteTreeFullPaths, formatOrgOsUiRouteContractFailure, formatOrgOsUiRouteContractIssue, normalizeOrgOsRoutePath, ownsOrgOsSystem, renderWithProviders as render, renderHookWithProviders, renderWithProviders };
@@ -1,4 +1,6 @@
1
- export { PresetsProvider, TOKEN_VAR_MAP, componentThemes, createCssVariablesResolver, mantineThemeOverride, useAvailablePresets, usePresetsContext } from '../chunk-AKW7KISS.js';
1
+ export { useAvailablePresets } from '../chunk-B2DZLPDL.js';
2
+ export { TOKEN_VAR_MAP, componentThemes, createCssVariablesResolver, mantineThemeOverride } from '../chunk-7ZWXTH5J.js';
3
+ export { PresetsProvider, usePresetsContext } from '../chunk-6D4LCJ52.js';
2
4
  export { generateShades, getPreset, PRESETS as presets } from '../chunk-WF7CONXF.js';
3
5
  import '../chunk-WLOQ4IBG.js';
4
6
  import '../chunk-I2KLQ2HA.js';
@@ -2214,6 +2214,51 @@ type Database = {
2214
2214
  }
2215
2215
  ];
2216
2216
  };
2217
+ deployment_organization_models: {
2218
+ Row: {
2219
+ created_at: string;
2220
+ deployment_id: string;
2221
+ model_hash: string | null;
2222
+ organization_id: string;
2223
+ organization_model: Json;
2224
+ schema_version: string;
2225
+ updated_at: string;
2226
+ };
2227
+ Insert: {
2228
+ created_at?: string;
2229
+ deployment_id: string;
2230
+ model_hash?: string | null;
2231
+ organization_id: string;
2232
+ organization_model: Json;
2233
+ schema_version?: string;
2234
+ updated_at?: string;
2235
+ };
2236
+ Update: {
2237
+ created_at?: string;
2238
+ deployment_id?: string;
2239
+ model_hash?: string | null;
2240
+ organization_id?: string;
2241
+ organization_model?: Json;
2242
+ schema_version?: string;
2243
+ updated_at?: string;
2244
+ };
2245
+ Relationships: [
2246
+ {
2247
+ foreignKeyName: "deployment_organization_models_deployment_id_fkey";
2248
+ columns: ["deployment_id"];
2249
+ isOneToOne: true;
2250
+ referencedRelation: "deployments";
2251
+ referencedColumns: ["id"];
2252
+ },
2253
+ {
2254
+ foreignKeyName: "deployment_organization_models_organization_id_fkey";
2255
+ columns: ["organization_id"];
2256
+ isOneToOne: false;
2257
+ referencedRelation: "organizations";
2258
+ referencedColumns: ["id"];
2259
+ }
2260
+ ];
2261
+ };
2217
2262
  deployments: {
2218
2263
  Row: {
2219
2264
  created_at: string;
@@ -3735,6 +3780,12 @@ type Database = {
3735
3780
  Args: never;
3736
3781
  Returns: boolean;
3737
3782
  };
3783
+ current_user_shares_org_with: {
3784
+ Args: {
3785
+ other_user_id: string;
3786
+ };
3787
+ Returns: boolean;
3788
+ };
3738
3789
  current_user_supabase_id: {
3739
3790
  Args: never;
3740
3791
  Returns: string;
@@ -3774,6 +3825,20 @@ type Database = {
3774
3825
  Args: never;
3775
3826
  Returns: string;
3776
3827
  };
3828
+ has_org_access: {
3829
+ Args: {
3830
+ action?: string;
3831
+ org_id: string;
3832
+ system_path: string;
3833
+ };
3834
+ Returns: boolean;
3835
+ } | {
3836
+ Args: {
3837
+ action?: string;
3838
+ system_path: string;
3839
+ };
3840
+ Returns: boolean;
3841
+ };
3777
3842
  has_org_permission: {
3778
3843
  Args: {
3779
3844
  org_id: string;
@@ -4416,63 +4481,6 @@ interface SessionTokenUsage {
4416
4481
  contextWindowSize: number;
4417
4482
  }
4418
4483
 
4419
- /**
4420
- * Single source of truth for all active theme preset names.
4421
- *
4422
- * This is the canonical list. To add a preset:
4423
- * 1. Add the name here.
4424
- * 2. Create `packages/ui/src/theme/presets/{name}.ts` exporting `{name}Preset: ThemePreset`.
4425
- * 3. Add to `PRESETS` record in `packages/ui/src/theme/presets/index.ts`.
4426
- * 4. Add to `PresetName` union in `packages/ui/src/theme/presets/types.ts`.
4427
- * 5. Add a card in `apps/command-center/src/features/settings/appearance/components/AppearanceSettings.tsx`.
4428
- *
4429
- * The union type (`ThemePresetName`) and Zod enum (`ThemePresetEnum`) are derived
4430
- * automatically — no other files need updating.
4431
- */
4432
- declare const THEME_PRESETS: readonly ["default", "tactical", "regal", "cyber-volt", "aurora", "rose-gold", "midnight", "titanium", "canopy", "slate", "cyber-strike", "cyber-chrome", "cyber-void", "nirvana", "wave", "synapse", "cortex", "helios", "graphite", "quarry"];
4433
- type ThemePresetName = (typeof THEME_PRESETS)[number];
4434
-
4435
- /**
4436
- * Multi-tenancy configuration types
4437
- *
4438
- * Config is stored in dedicated `config` columns (NOT nested in metadata):
4439
- * - organizations.config: Org-level config (no feature toggles -- all features available by default)
4440
- * - org_memberships.config: Per-user-per-org feature overrides
4441
- * - users.config: User-global config
4442
- */
4443
-
4444
- /**
4445
- * Per-user-per-org config (stored in org_memberships.config)
4446
- * Controls which features a specific member can access within their org.
4447
- * Keys are feature IDs from the organization model (e.g. crm, lead-gen, projects, seo).
4448
- */
4449
- interface MembershipFeatureConfig {
4450
- features?: Record<string, boolean>;
4451
- }
4452
- /**
4453
- * User-global config (stored in users.config)
4454
- * Theme and onboarding are user-specific, NOT org-specific
4455
- */
4456
- interface UserConfig {
4457
- theme?: {
4458
- preset?: ThemePresetName;
4459
- colorScheme?: 'light' | 'dark' | 'auto';
4460
- };
4461
- onboarding?: {
4462
- completed?: boolean;
4463
- completedAt?: string;
4464
- role?: string;
4465
- primaryUseCase?: string[];
4466
- experienceLevel?: string;
4467
- /** Onboarding guide system state (set by checklist/tour system) */
4468
- guides?: {
4469
- completedIds?: string[];
4470
- dismissed?: boolean;
4471
- completedAt?: string;
4472
- };
4473
- };
4474
- }
4475
-
4476
4484
  /**
4477
4485
  * Memberships Domain - Zod Validation Schemas
4478
4486
  *
@@ -4541,7 +4549,6 @@ interface MembershipWithDetails extends OrganizationMembership {
4541
4549
  metadata?: Record<string, unknown>;
4542
4550
  config?: Record<string, unknown>;
4543
4551
  };
4544
- config?: MembershipFeatureConfig;
4545
4552
  }
4546
4553
 
4547
4554
  interface OAuthToken extends Record<string, unknown> {
@@ -5561,6 +5568,55 @@ interface CommandQueueExecutionFailedEvent {
5561
5568
  */
5562
5569
  type CommandQueueSSEEvent = CommandQueueTaskUpdatedEvent | CommandQueueConnectedEvent | CommandQueueExecutionCompletedEvent | CommandQueueExecutionFailedEvent;
5563
5570
 
5571
+ /**
5572
+ * Single source of truth for all active theme preset names.
5573
+ *
5574
+ * This is the canonical list. To add a preset:
5575
+ * 1. Add the name here.
5576
+ * 2. Create `packages/ui/src/theme/presets/{name}.ts` exporting `{name}Preset: ThemePreset`.
5577
+ * 3. Add to `PRESETS` record in `packages/ui/src/theme/presets/index.ts`.
5578
+ * 4. Add to `PresetName` union in `packages/ui/src/theme/presets/types.ts`.
5579
+ * 5. Add a card in `apps/command-center/src/features/settings/appearance/components/AppearanceSettings.tsx`.
5580
+ *
5581
+ * The union type (`ThemePresetName`) and Zod enum (`ThemePresetEnum`) are derived
5582
+ * automatically — no other files need updating.
5583
+ */
5584
+ declare const THEME_PRESETS: readonly ["default", "tactical", "regal", "cyber-volt", "aurora", "rose-gold", "midnight", "titanium", "canopy", "slate", "cyber-strike", "cyber-chrome", "cyber-void", "nirvana", "wave", "synapse", "cortex", "helios", "graphite", "quarry"];
5585
+ type ThemePresetName = (typeof THEME_PRESETS)[number];
5586
+
5587
+ /**
5588
+ * Multi-tenancy configuration types
5589
+ *
5590
+ * Config is stored in dedicated `config` columns (NOT nested in metadata):
5591
+ * - organizations.config: Org-level config (no feature toggles -- all features available by default)
5592
+ * - org_memberships.config: Reserved for non-access membership configuration
5593
+ * - users.config: User-global config
5594
+ */
5595
+
5596
+ /**
5597
+ * User-global config (stored in users.config)
5598
+ * Theme and onboarding are user-specific, NOT org-specific
5599
+ */
5600
+ interface UserConfig {
5601
+ theme?: {
5602
+ preset?: ThemePresetName;
5603
+ colorScheme?: 'light' | 'dark' | 'auto';
5604
+ };
5605
+ onboarding?: {
5606
+ completed?: boolean;
5607
+ completedAt?: string;
5608
+ role?: string;
5609
+ primaryUseCase?: string[];
5610
+ experienceLevel?: string;
5611
+ /** Onboarding guide system state (set by checklist/tour system) */
5612
+ guides?: {
5613
+ completedIds?: string[];
5614
+ dismissed?: boolean;
5615
+ completedAt?: string;
5616
+ };
5617
+ };
5618
+ }
5619
+
5564
5620
  /**
5565
5621
  * Execution Runner Types
5566
5622
  *
@@ -5799,4 +5855,4 @@ declare const WebhookEndpointResponseSchema: z.ZodObject<{
5799
5855
  }, z.core.$strip>;
5800
5856
  type WebhookEndpointResponse = z.infer<typeof WebhookEndpointResponseSchema>;
5801
5857
 
5802
- export type { AIResourceDefinition, APIExecutionDetail, APIExecutionListResponse, APIExecutionSummary, AbsoluteScheduleConfig, AbsoluteScheduleItem, ActionConfig, Activity, ActivitySSEEvent, ActivityStatus, ActivityType, AgentIterationData, AgentMemory, ApiKeyListItem, BusinessImpactMetrics, ChatMessage, CheckpointListResponse, CommandQueueSSEEvent, CommandViewAgent, CommandViewData, CommandViewNode, CommandViewNodeType, CommandViewStatsResponse, CommandViewWorkflow, CostBreakdownMetrics, CostByModelResponse, CostSummaryResponse, CostTrendsResponse, CreateWebhookEndpointRequest, CredentialField, CredentialListItem, CredentialSchema, DashboardMetrics, DealListItem, DealStage, Deployment, DeploymentStatus, ErrorAnalysisMetrics, ErrorDetailFull, ErrorDetailResponse, ErrorTrend, ExecutionHealthMetrics, ExecutionHistoryItem, ExecutionHistoryResponse, ExecutionLogMessage, ExecutionMetricsDetail, ExecutionSSEEvent, ExecutionStatus, ExecutionSummary, FailingResource, HumanCheckpointDefinition, HumanCheckpointStats, KanbanBoardConfig, ListMembershipsParams, MembershipFeatureConfig, MembershipStatus, MembershipWithDetails, MessageEvent, MessageType, ModelConfig, NotificationDTO, NotificationSSEEvent, OAuthProviderConfig, PatchTaskParams, QueueTaskStatus, RecentExecutionsByResourceResponse, RecurringScheduleConfig, RelativeScheduleConfig, RelativeScheduleItem, ResourceCategory, ResourceDefinition, ResourceErrorsResponse, ResourceExecutionSummary, ResourceExecutionsResponse, ResourceHealth, ResourceIdentifier, ResourceLink, ResourceStats, ResourceStatus, ResourceType, ResourcesHealthResponse, SerializedAgentDefinition, SerializedWorkflowDefinition, SessionDTO, SessionTokenUsage, StatsTimeRange, SupabaseUserProfile, Task, TaskSchedule, TaskScheduleConfig, TimeRange, WorkflowNodeVisualizerData as TimelineData, UpdateWebhookEndpointRequest, UserConfig, WebhookEndpoint, WebhookEndpointResponse };
5858
+ export type { AIResourceDefinition, APIExecutionDetail, APIExecutionListResponse, APIExecutionSummary, AbsoluteScheduleConfig, AbsoluteScheduleItem, ActionConfig, Activity, ActivitySSEEvent, ActivityStatus, ActivityType, AgentIterationData, AgentMemory, ApiKeyListItem, BusinessImpactMetrics, ChatMessage, CheckpointListResponse, CommandQueueSSEEvent, CommandViewAgent, CommandViewData, CommandViewNode, CommandViewNodeType, CommandViewStatsResponse, CommandViewWorkflow, CostBreakdownMetrics, CostByModelResponse, CostSummaryResponse, CostTrendsResponse, CreateWebhookEndpointRequest, CredentialField, CredentialListItem, CredentialSchema, DashboardMetrics, DealListItem, DealStage, Deployment, DeploymentStatus, ErrorAnalysisMetrics, ErrorDetailFull, ErrorDetailResponse, ErrorTrend, ExecutionHealthMetrics, ExecutionHistoryItem, ExecutionHistoryResponse, ExecutionLogMessage, ExecutionMetricsDetail, ExecutionSSEEvent, ExecutionStatus, ExecutionSummary, FailingResource, HumanCheckpointDefinition, HumanCheckpointStats, KanbanBoardConfig, ListMembershipsParams, MembershipStatus, MembershipWithDetails, MessageEvent, MessageType, ModelConfig, NotificationDTO, NotificationSSEEvent, OAuthProviderConfig, PatchTaskParams, QueueTaskStatus, RecentExecutionsByResourceResponse, RecurringScheduleConfig, RelativeScheduleConfig, RelativeScheduleItem, ResourceCategory, ResourceDefinition, ResourceErrorsResponse, ResourceExecutionSummary, ResourceExecutionsResponse, ResourceHealth, ResourceIdentifier, ResourceLink, ResourceStats, ResourceStatus, ResourceType, ResourcesHealthResponse, SerializedAgentDefinition, SerializedWorkflowDefinition, SessionDTO, SessionTokenUsage, StatsTimeRange, SupabaseUserProfile, Task, TaskSchedule, TaskScheduleConfig, TimeRange, WorkflowNodeVisualizerData as TimelineData, UpdateWebhookEndpointRequest, UserConfig, WebhookEndpoint, WebhookEndpointResponse };
@@ -1,3 +1,4 @@
1
- export { APIClientError, API_URL, DEBOUNCE_FILTER, DEBOUNCE_SLIDER, GC_TIME_LONG, GC_TIME_MEDIUM, GC_TIME_SHORT, LIMIT_ACTIVITY_FEED, OAUTH_FLOW_TIMEOUT, PAGE_SIZE_DEFAULT, REFETCH_INTERVAL_DASHBOARD, REFETCH_INTERVAL_REALTIME, REFETCH_INTERVAL_RUNNING, REFETCH_INTERVAL_RUNNING_FAST, SSE_CLOSE_GRACE_PERIOD, SSE_TOKEN_REFRESH_DELAY, STALE_TIME_ADMIN, STALE_TIME_DEFAULT, STALE_TIME_MONITORING, WS_MAX_RETRIES_BEFORE_ERROR, WS_RECONNECT_BASE_DELAY, WS_RECONNECT_MAX_DELAY, debounce, formatChartAxisDate, formatDate, formatDateTime, formatErrorMessage, formatRelativeTime, formatTimeAgo, getErrorInfo, getErrorTitle, getResourceColor, getResourceIcon, getTimeRangeDates, getTimeRangeLabel, isAPIClientError, restoreConsole, setupBrowserMocks, suppressKnownWarnings, validateEmail } from '../chunk-GEFWMU26.js';
1
+ export { APIClientError, API_URL, DEBOUNCE_FILTER, DEBOUNCE_SLIDER, LIMIT_ACTIVITY_FEED, OAUTH_FLOW_TIMEOUT, PAGE_SIZE_DEFAULT, REFETCH_INTERVAL_DASHBOARD, REFETCH_INTERVAL_REALTIME, REFETCH_INTERVAL_RUNNING, REFETCH_INTERVAL_RUNNING_FAST, SSE_CLOSE_GRACE_PERIOD, SSE_TOKEN_REFRESH_DELAY, WS_MAX_RETRIES_BEFORE_ERROR, WS_RECONNECT_BASE_DELAY, WS_RECONNECT_MAX_DELAY, debounce, formatChartAxisDate, formatDate, formatDateTime, formatErrorMessage, formatRelativeTime, formatTimeAgo, getErrorInfo, getErrorTitle, getResourceColor, getResourceIcon, getTimeRangeDates, getTimeRangeLabel, isAPIClientError, restoreConsole, setupBrowserMocks, suppressKnownWarnings, validateEmail } from '../chunk-X66MVMZT.js';
2
2
  export { ResourceStatusColors } from '../chunk-KRWALB24.js';
3
+ export { GC_TIME_LONG, GC_TIME_MEDIUM, GC_TIME_SHORT, STALE_TIME_ADMIN, STALE_TIME_DEFAULT, STALE_TIME_MONITORING } from '../chunk-6ROXVZ3L.js';
3
4
  import '../chunk-I2KLQ2HA.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elevasis/ui",
3
- "version": "2.36.0",
3
+ "version": "2.38.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",
@@ -28,6 +28,10 @@
28
28
  "types": "./dist/hooks/published.d.ts",
29
29
  "import": "./dist/hooks/published.js"
30
30
  },
31
+ "./hooks/access": {
32
+ "types": "./dist/hooks/access/index.d.ts",
33
+ "import": "./dist/hooks/access/index.js"
34
+ },
31
35
  "./sse": {
32
36
  "types": "./dist/sse/index.d.ts",
33
37
  "import": "./dist/sse/index.js"
@@ -92,6 +96,18 @@
92
96
  "types": "./dist/features/settings/index.d.ts",
93
97
  "import": "./dist/features/settings/index.js"
94
98
  },
99
+ "./features/notes": {
100
+ "types": "./dist/features/notes/index.d.ts",
101
+ "import": "./dist/features/notes/index.js"
102
+ },
103
+ "./features/right-panel-host": {
104
+ "types": "./dist/features/right-panel-host/index.d.ts",
105
+ "import": "./dist/features/right-panel-host/index.js"
106
+ },
107
+ "./hooks/user-notes": {
108
+ "types": "./dist/hooks/user-notes/index.d.ts",
109
+ "import": "./dist/hooks/user-notes/index.js"
110
+ },
95
111
  "./types": {
96
112
  "types": "./dist/types/index.d.ts",
97
113
  "import": "./dist/types/index.js"
@@ -253,11 +269,11 @@
253
269
  "typescript": "5.9.2",
254
270
  "vite": "^7.0.0",
255
271
  "vitest": "^3.2.4",
256
- "@elevasis/sdk": "1.25.0",
257
- "@repo/typescript-config": "0.0.0",
258
- "@repo/eslint-config": "0.0.0",
272
+ "@repo/core": "0.32.0",
259
273
  "@repo/elevasis-core": "1.0.0",
260
- "@repo/core": "0.29.0"
274
+ "@elevasis/sdk": "1.26.1",
275
+ "@repo/typescript-config": "0.0.0",
276
+ "@repo/eslint-config": "0.0.0"
261
277
  },
262
278
  "dependencies": {
263
279
  "@dagrejs/dagre": "^1.1.4",
@@ -6,13 +6,13 @@ The auth surface is the published authentication entry point for UI shells.
6
6
 
7
7
  - `AuthProvider`
8
8
  - `useAuthContext`
9
- - `useStableAccessToken`
10
- - `useSessionCheck`
11
- - `ProtectedRoute`
12
- - `AdminGuard`
9
+ - `useStableAccessToken`
10
+ - `useSessionCheck`
11
+ - `ProtectedRoute`
12
+ - `AccessGuard`
13
13
 
14
14
  ## Use When
15
15
 
16
- - You need auth state, access tokens, or session lifecycle checks.
17
- - You need route-level guards for protected or admin-only UI.
16
+ - You need auth state, access tokens, or session lifecycle checks.
17
+ - You need route-level or section-level access guards for protected UI.
18
18