@elevasis/ui 2.67.0 → 2.69.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 (122) hide show
  1. package/dist/api/index.d.ts +1 -1
  2. package/dist/api/index.js +3 -3
  3. package/dist/app/index.d.ts +575 -370
  4. package/dist/app/index.js +17 -23
  5. package/dist/auth/index.css +149 -149
  6. package/dist/auth/index.d.ts +5 -0
  7. package/dist/auth/index.js +11 -13
  8. package/dist/charts/index.css +208 -208
  9. package/dist/charts/index.js +11 -13
  10. package/dist/{chunk-M535KHLW.js → chunk-26BTE3Z4.js} +1 -1
  11. package/dist/chunk-3KMDHCAR.js +52 -0
  12. package/dist/chunk-3MEXPLWT.js +265 -0
  13. package/dist/chunk-4JHLS234.js +39 -0
  14. package/dist/chunk-6PZFOHJK.js +1764 -0
  15. package/dist/chunk-7WJEPTE7.js +194 -0
  16. package/dist/chunk-AH52XQB7.js +1 -0
  17. package/dist/{chunk-UFTM5SZZ.js → chunk-AKANHRQ5.js} +9 -3
  18. package/dist/chunk-BZZCNLT6.js +12 -0
  19. package/dist/chunk-C75XWBYZ.js +383 -0
  20. package/dist/chunk-DLR4SDZW.js +51 -0
  21. package/dist/{chunk-4OEVLV66.js → chunk-FLECOYUS.js} +113 -148
  22. package/dist/chunk-IRV6KJPV.js +425 -0
  23. package/dist/chunk-IT7GTJCB.js +10 -0
  24. package/dist/chunk-LGKLC5MG.js +44 -0
  25. package/dist/chunk-MFLM7BVC.js +85 -0
  26. package/dist/chunk-MRVGQLWN.js +1595 -0
  27. package/dist/{chunk-4DV4ECMG.js → chunk-N7U24M2J.js} +4 -0
  28. package/dist/{chunk-I7BZVVVU.js → chunk-NM4A63KJ.js} +104 -415
  29. package/dist/chunk-NU3NBXHP.js +1194 -0
  30. package/dist/chunk-PDHTXPSF.js +12 -0
  31. package/dist/chunk-RW64UJWT.js +1934 -0
  32. package/dist/{chunk-JFBZ6XDW.js → chunk-SNZDFCOQ.js} +3 -49
  33. package/dist/chunk-TUMSNGTX.js +35 -0
  34. package/dist/chunk-UD657ICS.js +589 -0
  35. package/dist/{chunk-XNW3O6QW.js → chunk-VDX6DL7Z.js} +1 -1
  36. package/dist/chunk-WXHAHKKI.js +16411 -0
  37. package/dist/chunk-XAZR3T6Y.js +2162 -0
  38. package/dist/chunk-XQ3ILKYN.js +37 -0
  39. package/dist/chunk-YCRINA2D.js +67 -0
  40. package/dist/chunk-YGCMMOY4.js +1484 -0
  41. package/dist/chunk-YNRYIXUT.js +10945 -0
  42. package/dist/chunk-ZD6LM53O.js +4528 -0
  43. package/dist/chunk-ZPTEGGKU.js +631 -0
  44. package/dist/components/chat/index.js +2 -1
  45. package/dist/components/index.css +208 -208
  46. package/dist/components/index.d.ts +1634 -264
  47. package/dist/components/index.js +2774 -14
  48. package/dist/components/navigation/index.css +149 -149
  49. package/dist/components/navigation/index.js +12 -13
  50. package/dist/features/auth/index.css +149 -149
  51. package/dist/features/auth/index.d.ts +457 -167
  52. package/dist/features/auth/index.js +13 -14
  53. package/dist/features/clients/index.css +208 -208
  54. package/dist/features/clients/index.d.ts +39 -1
  55. package/dist/features/clients/index.js +16 -13
  56. package/dist/features/content/index.d.ts +1788 -0
  57. package/dist/features/content/index.js +2180 -0
  58. package/dist/features/crm/index.d.ts +1802 -231
  59. package/dist/features/crm/index.js +16 -13
  60. package/dist/features/dashboard/index.d.ts +1 -8
  61. package/dist/features/dashboard/index.js +17 -13
  62. package/dist/features/delivery/index.d.ts +457 -167
  63. package/dist/features/delivery/index.js +16 -13
  64. package/dist/features/knowledge/index.css +149 -149
  65. package/dist/features/knowledge/index.js +11 -13
  66. package/dist/features/lead-gen/index.d.ts +53 -104
  67. package/dist/features/lead-gen/index.js +17 -13
  68. package/dist/features/monitoring/index.js +16 -13
  69. package/dist/features/monitoring/requests/index.js +15 -20
  70. package/dist/features/operations/index.d.ts +1 -86
  71. package/dist/features/operations/index.js +22 -12
  72. package/dist/features/public-agent-chat/index.js +2 -1
  73. package/dist/features/seo/index.js +2 -1
  74. package/dist/features/settings/index.d.ts +457 -167
  75. package/dist/features/settings/index.js +15 -13
  76. package/dist/hooks/access/index.css +149 -149
  77. package/dist/hooks/access/index.d.ts +5 -0
  78. package/dist/hooks/access/index.js +11 -13
  79. package/dist/hooks/delivery/index.d.ts +457 -167
  80. package/dist/hooks/delivery/index.js +2 -23
  81. package/dist/hooks/index.d.ts +2203 -244
  82. package/dist/hooks/index.js +11 -13
  83. package/dist/hooks/operations/command-view/utils/transformCommandViewData.d.ts +1 -8
  84. package/dist/hooks/published.d.ts +2203 -244
  85. package/dist/hooks/published.js +11 -13
  86. package/dist/initialization/index.d.ts +465 -169
  87. package/dist/knowledge/index.css +149 -149
  88. package/dist/knowledge/index.d.ts +5 -90
  89. package/dist/knowledge/index.js +3215 -3203
  90. package/dist/{knowledge-search-index-6EZNBNSR.js → knowledge-search-index-LP2WVSQX.js} +689 -695
  91. package/dist/layout/index.css +149 -149
  92. package/dist/layout/index.js +15 -13
  93. package/dist/organization/index.d.ts +10 -4
  94. package/dist/organization/index.js +1 -21
  95. package/dist/profile/index.d.ts +457 -167
  96. package/dist/provider/index.d.ts +576 -372
  97. package/dist/provider/index.js +11 -13
  98. package/dist/provider/published.css +149 -149
  99. package/dist/provider/published.d.ts +576 -372
  100. package/dist/provider/published.js +11 -13
  101. package/dist/supabase/index.d.ts +906 -347
  102. package/dist/test-utils/index.d.ts +15 -2
  103. package/dist/test-utils/index.js +41 -12
  104. package/dist/test-utils/setup-integration.js +1 -1
  105. package/dist/test-utils/setup.js +1 -1
  106. package/dist/theme/index.js +3 -2
  107. package/dist/theme/presets/index.js +1 -1
  108. package/dist/typeform/index.js +2049 -1
  109. package/dist/types/index.d.ts +477 -177
  110. package/dist/utils/index.d.ts +1 -8
  111. package/dist/utils/index.js +1 -1
  112. package/dist/vite/index.js +2 -2
  113. package/dist/vite-plugin-knowledge/index.js +1 -1
  114. package/package.json +7 -3
  115. package/src/features/README.md +28 -28
  116. package/dist/chunk-5TERYXOO.js +0 -51390
  117. package/dist/chunk-AUDNF2Q7.js +0 -2050
  118. package/dist/index.d.ts +0 -17888
  119. package/dist/index.js +0 -30
  120. package/dist/{chunk-GMXGDO3I.js → chunk-MISHPEJX.js} +1 -1
  121. package/dist/{chunk-RBGVNPA6.js → chunk-XQBURFKM.js} +0 -0
  122. package/dist/{index.css → features/content/index.css} +149 -149
@@ -89,6 +89,7 @@ declare const mockUseAuth: {
89
89
  signIn: vitest.Mock<(...args: any[]) => any>;
90
90
  signUp: vitest.Mock<(...args: any[]) => any>;
91
91
  signOut: vitest.Mock<(...args: any[]) => any>;
92
+ switchToOrganization: vitest.Mock<(...args: any[]) => any>;
92
93
  getAccessToken: vitest.Mock<(...args: any[]) => any>;
93
94
  organizationId: string;
94
95
  canRecover: vitest.Mock<() => boolean>;
@@ -99,6 +100,7 @@ declare function createMockUseAuth(overrides?: Partial<typeof mockUseAuth>): {
99
100
  signIn: vitest.Mock<(...args: any[]) => any>;
100
101
  signUp: vitest.Mock<(...args: any[]) => any>;
101
102
  signOut: vitest.Mock<(...args: any[]) => any>;
103
+ switchToOrganization: vitest.Mock<(...args: any[]) => any>;
102
104
  getAccessToken: vitest.Mock<(...args: any[]) => any>;
103
105
  organizationId: string;
104
106
  canRecover: vitest.Mock<() => boolean>;
@@ -109,6 +111,7 @@ declare const mockAuthenticatedUser: () => {
109
111
  signIn: vitest.Mock<(...args: any[]) => any>;
110
112
  signUp: vitest.Mock<(...args: any[]) => any>;
111
113
  signOut: vitest.Mock<(...args: any[]) => any>;
114
+ switchToOrganization: vitest.Mock<(...args: any[]) => any>;
112
115
  getAccessToken: vitest.Mock<(...args: any[]) => any>;
113
116
  organizationId: string;
114
117
  canRecover: vitest.Mock<() => boolean>;
@@ -119,6 +122,7 @@ declare const mockUnauthenticatedUser: () => {
119
122
  signIn: vitest.Mock<(...args: any[]) => any>;
120
123
  signUp: vitest.Mock<(...args: any[]) => any>;
121
124
  signOut: vitest.Mock<(...args: any[]) => any>;
125
+ switchToOrganization: vitest.Mock<(...args: any[]) => any>;
122
126
  getAccessToken: vitest.Mock<(...args: any[]) => any>;
123
127
  organizationId: string;
124
128
  canRecover: vitest.Mock<() => boolean>;
@@ -129,6 +133,7 @@ declare const mockAuthLoading: () => {
129
133
  signIn: vitest.Mock<(...args: any[]) => any>;
130
134
  signUp: vitest.Mock<(...args: any[]) => any>;
131
135
  signOut: vitest.Mock<(...args: any[]) => any>;
136
+ switchToOrganization: vitest.Mock<(...args: any[]) => any>;
132
137
  getAccessToken: vitest.Mock<(...args: any[]) => any>;
133
138
  organizationId: string;
134
139
  canRecover: vitest.Mock<() => boolean>;
@@ -149,7 +154,6 @@ interface OrgOsRouteContractSystem {
149
154
  path?: string | null;
150
155
  } | null;
151
156
  enabled?: boolean;
152
- devOnly?: boolean;
153
157
  }
154
158
  type OrgOsRouteContractSystemsDomain = Record<string, OrgOsRouteContractSystem> | {
155
159
  systems: readonly OrgOsRouteContractSystem[];
@@ -170,8 +174,17 @@ interface OrgOsUiRouteContractOptions {
170
174
  routeTreeSource?: string;
171
175
  routePaths?: Iterable<string>;
172
176
  mode?: OrgOsUiRouteContractMode;
177
+ /**
178
+ * Route paths whose route file — or an ancestor layout route — wraps the page
179
+ * in an `AccessGuard`. Supply this to enable the `unguarded-beta-route` check.
180
+ *
181
+ * Omitted means the beta-guard check does not run. Hiding a System from
182
+ * navigation (`lifecycle: 'beta'`) does not make its route unreachable, so a
183
+ * caller that can resolve route files should always pass this.
184
+ */
185
+ guardedRoutePaths?: Iterable<string>;
173
186
  }
174
- type OrgOsUiRouteContractIssueKind = 'missing-system' | 'missing-route';
187
+ type OrgOsUiRouteContractIssueKind = 'missing-system' | 'missing-route' | 'unguarded-beta-route';
175
188
  interface OrgOsUiRouteContractIssue {
176
189
  target: OrgOsUiRouteContractTarget;
177
190
  kind: OrgOsUiRouteContractIssueKind;
@@ -1,11 +1,11 @@
1
1
  import { server, handlers } from '../chunk-7XKCG5CT.js';
2
2
  export { handlers, server } from '../chunk-7XKCG5CT.js';
3
- import { mockWorkOSUser, mockUseAuth, mockUnauthenticatedUser, mockAuthenticatedUser, mockAuthLoading, createMockUseAuth } from '../chunk-4DV4ECMG.js';
4
- export { createMockUseAuth, mockAuthLoading, mockAuthenticatedUser, mockUnauthenticatedUser, mockUseAuth, mockWorkOSUser } from '../chunk-4DV4ECMG.js';
5
- import '../chunk-M535KHLW.js';
6
- import { ApiClientProvider } from '../chunk-XNW3O6QW.js';
3
+ import { mockWorkOSUser, mockUseAuth, mockUnauthenticatedUser, mockAuthenticatedUser, mockAuthLoading, createMockUseAuth } from '../chunk-N7U24M2J.js';
4
+ export { createMockUseAuth, mockAuthLoading, mockAuthenticatedUser, mockUnauthenticatedUser, mockUseAuth, mockWorkOSUser } from '../chunk-N7U24M2J.js';
5
+ import '../chunk-26BTE3Z4.js';
6
+ import { ApiClientProvider } from '../chunk-VDX6DL7Z.js';
7
7
  import '../chunk-DD3CCMCZ.js';
8
- import '../chunk-I7BZVVVU.js';
8
+ import '../chunk-NM4A63KJ.js';
9
9
  import '../chunk-Y6I3IC45.js';
10
10
  import '../chunk-6SSQGWK7.js';
11
11
  import { ElevasisServiceProvider } from '../chunk-BI5VDO2K.js';
@@ -178,26 +178,33 @@ function ownsOrgOsSystem(ownerSystemId, systemId) {
178
178
  function getOrgOsRouteContractSystems(organizationModel) {
179
179
  const { systems } = organizationModel;
180
180
  const arraySystems = systems.systems;
181
- if (Array.isArray(arraySystems)) return arraySystems;
181
+ if (Array.isArray(arraySystems)) {
182
+ return arraySystems.map((system) => ({
183
+ ...system,
184
+ betaByAncestry: system.lifecycle === "beta"
185
+ }));
186
+ }
182
187
  const result = [];
183
- const visit = (entries, prefix = "") => {
188
+ const visit = (entries, prefix = "", ancestorBeta = false) => {
184
189
  for (const [key, system] of Object.entries(entries)) {
185
190
  const id = prefix ? `${prefix}.${key}` : system.id || key;
186
- result.push({ ...system, id });
187
- if (system.systems) visit(system.systems, id);
188
- if (system.subsystems) visit(system.subsystems, id);
191
+ const betaByAncestry = ancestorBeta || system.lifecycle === "beta";
192
+ result.push({ ...system, id, betaByAncestry });
193
+ if (system.systems) visit(system.systems, id, betaByAncestry);
194
+ if (system.subsystems) visit(system.subsystems, id, betaByAncestry);
189
195
  }
190
196
  };
191
197
  visit(systems);
192
198
  return result;
193
199
  }
194
200
  function collectOrgOsUiRouteContractIssues(options) {
195
- const { target, organizationModel, mode = "production" } = options;
201
+ const { target, organizationModel } = options;
196
202
  const routePaths = options.routePaths ?? (options.routeTreeSource ? extractOrgOsRouteTreeFullPaths(options.routeTreeSource) : void 0);
197
203
  if (!routePaths) {
198
204
  throw new Error("Org OS UI route contract requires either routeTreeSource or routePaths.");
199
205
  }
200
206
  const normalizedRoutePaths = new Set([...routePaths].map(normalizeOrgOsRoutePath));
207
+ const normalizedGuardedPaths = options.guardedRoutePaths ? new Set([...options.guardedRoutePaths].map(normalizeOrgOsRoutePath)) : void 0;
201
208
  const systems = getOrgOsRouteContractSystems(organizationModel);
202
209
  const modelSystemIds = new Set(systems.map((system) => system.id));
203
210
  const issues = [];
@@ -215,7 +222,6 @@ function collectOrgOsUiRouteContractIssues(options) {
215
222
  const path = system.ui?.path ?? system.path;
216
223
  if (!path || system.enabled === false) continue;
217
224
  if (system.lifecycle === "archived" || system.lifecycle === "deprecated") continue;
218
- if (system.devOnly && mode === "production") continue;
219
225
  const ownerSystemId = target.systemIds.find((candidate) => ownsOrgOsSystem(candidate, system.id));
220
226
  if (!ownerSystemId) continue;
221
227
  checkedPathCount += 1;
@@ -228,6 +234,16 @@ function collectOrgOsUiRouteContractIssues(options) {
228
234
  ownerSystemId,
229
235
  path: normalizedPath
230
236
  });
237
+ continue;
238
+ }
239
+ if (normalizedGuardedPaths && system.betaByAncestry && !normalizedGuardedPaths.has(normalizedPath)) {
240
+ issues.push({
241
+ target,
242
+ kind: "unguarded-beta-route",
243
+ systemId: system.id,
244
+ ownerSystemId,
245
+ path: normalizedPath
246
+ });
231
247
  }
232
248
  }
233
249
  return { issues, checkedPathCount };
@@ -241,6 +257,19 @@ function formatOrgOsUiRouteContractIssue(issue) {
241
257
  `- If it should not ship, remove that SystemModule from ${issue.target.shellSource}.`
242
258
  ].join("\n");
243
259
  }
260
+ if (issue.kind === "unguarded-beta-route") {
261
+ return [
262
+ `[unguarded-beta-route] System "${issue.systemId}" is lifecycle "beta" (directly or via an ancestor) and routes to "${issue.path}", but neither that route file nor an ancestor layout route wraps it in an AccessGuard.`,
263
+ `Owner SystemModule: ${issue.ownerSystemId}`,
264
+ "A beta System is hidden from navigation, which is not the same as unreachable \u2014 the route still answers a direct URL.",
265
+ "Fix one of:",
266
+ // Phrased in prose rather than as a guard JSX tag on purpose. The
267
+ // access-key drift scanner in @repo/core matches that tag shape anywhere
268
+ // in a file and would read this message as a real runtime access key.
269
+ `- Wrap the route (or its layout route) in an AccessGuard whose access key is "${issue.systemId}".`,
270
+ `- Or change the System's lifecycle in ${issue.target.orgModelSource} if it is actually meant to be publicly reachable.`
271
+ ].join("\n");
272
+ }
244
273
  return [
245
274
  `[missing-route] System "${issue.systemId}" points to "${issue.path}", but ${issue.target.routeTreePath} does not contain that path.`,
246
275
  `Owner SystemModule: ${issue.ownerSystemId}`,
@@ -1,5 +1,5 @@
1
1
  import { setupBrowserMocks } from '../chunk-HJ4CJIWN.js';
2
- import { mockUseAuth } from '../chunk-4DV4ECMG.js';
2
+ import { mockUseAuth } from '../chunk-N7U24M2J.js';
3
3
  import '../chunk-I2KLQ2HA.js';
4
4
  import '@testing-library/jest-dom/vitest';
5
5
  import { cleanup } from '@testing-library/react';
@@ -1,6 +1,6 @@
1
1
  import { server } from '../chunk-7XKCG5CT.js';
2
2
  import { setupBrowserMocks } from '../chunk-HJ4CJIWN.js';
3
- import { mockUseAuth } from '../chunk-4DV4ECMG.js';
3
+ import { mockUseAuth } from '../chunk-N7U24M2J.js';
4
4
  import '../chunk-I2KLQ2HA.js';
5
5
  import '@testing-library/jest-dom/vitest';
6
6
  import { cleanup } from '@testing-library/react';
@@ -1,3 +1,4 @@
1
- export { PresetsProvider, TOKEN_VAR_MAP, componentThemes, createCssVariablesResolver, mantineThemeOverride, useAvailablePresets, usePresetsContext } from '../chunk-4OEVLV66.js';
2
- export { generateShades, getPreset, PRESETS as presets } from '../chunk-RBGVNPA6.js';
1
+ export { useAvailablePresets } from '../chunk-4JHLS234.js';
2
+ export { PresetsProvider, TOKEN_VAR_MAP, componentThemes, createCssVariablesResolver, mantineThemeOverride, usePresetsContext } from '../chunk-FLECOYUS.js';
3
+ export { generateShades, getPreset, PRESETS as presets } from '../chunk-XQBURFKM.js';
3
4
  import '../chunk-I2KLQ2HA.js';
@@ -1,2 +1,2 @@
1
- export { THEME_PRESETS, ThemePresetEnum, generateShades, getPreset, PRESETS as presets } from '../../chunk-RBGVNPA6.js';
1
+ export { THEME_PRESETS, ThemePresetEnum, generateShades, getPreset, PRESETS as presets } from '../../chunk-XQBURFKM.js';
2
2
  import '../../chunk-I2KLQ2HA.js';