@elevasis/ui 2.17.2 → 2.19.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 (63) hide show
  1. package/dist/api/index.js +2 -2
  2. package/dist/app/index.js +5 -5
  3. package/dist/charts/index.js +3 -3
  4. package/dist/chunk-3JCMO7SD.js +14 -0
  5. package/dist/{chunk-TP5NMF6K.js → chunk-46Z2VHY3.js} +4 -4
  6. package/dist/{chunk-FNWWVX5N.js → chunk-5SCVXZPM.js} +358 -188
  7. package/dist/{chunk-TTP62HWW.js → chunk-BHR7IV72.js} +10 -15
  8. package/dist/{chunk-MJ6YV2B5.js → chunk-CTTY6FUT.js} +2 -2
  9. package/dist/{chunk-P3TFNFZS.js → chunk-EUWBY43Z.js} +2 -2
  10. package/dist/{chunk-MDO4UCEJ.js → chunk-IBOX2M24.js} +47 -82
  11. package/dist/{chunk-HH3RNG2O.js → chunk-JEQM67SO.js} +307 -173
  12. package/dist/{chunk-2TDZBYXI.js → chunk-LR5CRY5A.js} +1 -1
  13. package/dist/{chunk-JU6UB4YA.js → chunk-LVCJ2H2T.js} +4 -4
  14. package/dist/{chunk-GRGRBWIO.js → chunk-M7W7CGPL.js} +1 -1
  15. package/dist/{chunk-34NQLV2W.js → chunk-MJAKU2WA.js} +3 -3
  16. package/dist/{chunk-OCCZRPER.js → chunk-Q4QJOSVS.js} +1 -1
  17. package/dist/{chunk-R73EHHPN.js → chunk-Q5HC6ENG.js} +18 -2
  18. package/dist/{chunk-VDM6DQES.js → chunk-R7OJCNL3.js} +1 -1
  19. package/dist/{chunk-6RWMRQN5.js → chunk-TIIPYB2Z.js} +1 -1
  20. package/dist/{chunk-ABUDMATM.js → chunk-TKEKYPZA.js} +6 -6
  21. package/dist/{chunk-R7GKX4HW.js → chunk-UU6PJ4EJ.js} +192 -82
  22. package/dist/{chunk-7L42RRHZ.js → chunk-Y7TDUZEH.js} +221 -514
  23. package/dist/{chunk-7GCWOUFT.js → chunk-YVAXWM3W.js} +73 -121
  24. package/dist/components/index.d.ts +219 -2810
  25. package/dist/components/index.js +41 -27
  26. package/dist/features/crm/index.d.ts +54 -53
  27. package/dist/features/crm/index.js +11 -11
  28. package/dist/features/dashboard/index.js +12 -12
  29. package/dist/features/delivery/index.d.ts +2642 -2605
  30. package/dist/features/delivery/index.js +11 -11
  31. package/dist/features/lead-gen/index.d.ts +152 -16
  32. package/dist/features/lead-gen/index.js +11 -22
  33. package/dist/features/monitoring/index.js +13 -13
  34. package/dist/features/monitoring/requests/index.d.ts +38 -27
  35. package/dist/features/monitoring/requests/index.js +212 -106
  36. package/dist/features/operations/index.d.ts +9 -26
  37. package/dist/features/operations/index.js +15 -15
  38. package/dist/features/settings/index.d.ts +36 -37
  39. package/dist/features/settings/index.js +12 -12
  40. package/dist/hooks/delivery/index.d.ts +2712 -2699
  41. package/dist/hooks/delivery/index.js +2 -2
  42. package/dist/hooks/index.d.ts +1997 -4627
  43. package/dist/hooks/index.js +10 -10
  44. package/dist/hooks/published.d.ts +1997 -4627
  45. package/dist/hooks/published.js +10 -10
  46. package/dist/index.d.ts +1124 -3673
  47. package/dist/index.js +11 -11
  48. package/dist/layout/index.d.ts +14 -2
  49. package/dist/layout/index.js +1 -1
  50. package/dist/provider/index.d.ts +320 -249
  51. package/dist/provider/index.js +8 -8
  52. package/dist/provider/published.d.ts +320 -249
  53. package/dist/provider/published.js +5 -5
  54. package/dist/sse/index.d.ts +1 -6
  55. package/dist/theme/index.js +2 -2
  56. package/dist/types/index.d.ts +1608 -2487
  57. package/dist/utils/index.d.ts +32 -1
  58. package/dist/utils/index.js +1 -1
  59. package/dist/zustand/index.d.ts +4 -8
  60. package/dist/zustand/index.js +2 -2
  61. package/package.json +4 -4
  62. package/dist/chunk-ADSSLKKP.js +0 -10
  63. /package/dist/{chunk-GCBWGGI6.js → chunk-OD7GWIZS.js} +0 -0
@@ -2,6 +2,7 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { ReactNode, ComponentType } from 'react';
3
3
  import { QueryClient } from '@tanstack/react-query';
4
4
  import { z } from 'zod';
5
+ import { EventSourceMessage } from '@microsoft/fetch-event-source';
5
6
  import { MantineThemeOverride } from '@mantine/core';
6
7
 
7
8
  /** Framework-agnostic theme overrides bundled with a preset (fonts, radius, component styles). */
@@ -278,257 +279,327 @@ declare function ElevasisCoreProvider({ auth, queryClient, apiUrl, onError, noti
278
279
  */
279
280
  type TimeRange = '1h' | '24h' | '7d' | '30d';
280
281
 
281
- declare const SurfaceDefinitionSchema = z.object({
282
- id: ModelIdSchema,
283
- label: LabelSchema,
284
- path: PathSchema,
285
- surfaceType: SurfaceTypeSchema,
286
- description: DescriptionSchema.optional(),
287
- enabled: z.boolean().default(true),
288
- icon: IconNameSchema.optional(),
289
- featureId: ModelIdSchema.optional(),
290
- featureIds: ReferenceIdsSchema,
291
- entityIds: ReferenceIdsSchema,
292
- resourceIds: ReferenceIdsSchema,
293
- capabilityIds: ReferenceIdsSchema,
294
- parentId: ModelIdSchema.optional()
295
- })
282
+ declare const OrganizationModelSchema: z.ZodObject<{
283
+ version: z.ZodDefault<z.ZodLiteral<1>>;
284
+ features: z.ZodDefault<z.ZodArray<z.ZodObject<{
285
+ id: z.ZodString;
286
+ label: z.ZodString;
287
+ description: z.ZodOptional<z.ZodString>;
288
+ enabled: z.ZodDefault<z.ZodBoolean>;
289
+ color: z.ZodOptional<z.ZodString>;
290
+ icon: z.ZodOptional<z.ZodString>;
291
+ entityIds: z.ZodDefault<z.ZodArray<z.ZodString>>;
292
+ surfaceIds: z.ZodDefault<z.ZodArray<z.ZodString>>;
293
+ resourceIds: z.ZodDefault<z.ZodArray<z.ZodString>>;
294
+ capabilityIds: z.ZodDefault<z.ZodArray<z.ZodString>>;
295
+ }, z.core.$strip>>>;
296
+ branding: z.ZodObject<{
297
+ organizationName: z.ZodString;
298
+ productName: z.ZodString;
299
+ shortName: z.ZodString;
300
+ description: z.ZodOptional<z.ZodString>;
301
+ logos: z.ZodDefault<z.ZodObject<{
302
+ light: z.ZodOptional<z.ZodString>;
303
+ dark: z.ZodOptional<z.ZodString>;
304
+ }, z.core.$strip>>;
305
+ }, z.core.$strip>;
306
+ navigation: z.ZodObject<{
307
+ defaultSurfaceId: z.ZodOptional<z.ZodString>;
308
+ surfaces: z.ZodDefault<z.ZodArray<z.ZodObject<{
309
+ id: z.ZodString;
310
+ label: z.ZodString;
311
+ path: z.ZodString;
312
+ surfaceType: z.ZodEnum<{
313
+ list: "list";
314
+ settings: "settings";
315
+ page: "page";
316
+ dashboard: "dashboard";
317
+ graph: "graph";
318
+ detail: "detail";
319
+ }>;
320
+ description: z.ZodOptional<z.ZodString>;
321
+ enabled: z.ZodDefault<z.ZodBoolean>;
322
+ icon: z.ZodOptional<z.ZodString>;
323
+ featureId: z.ZodOptional<z.ZodString>;
324
+ featureIds: z.ZodDefault<z.ZodArray<z.ZodString>>;
325
+ entityIds: z.ZodDefault<z.ZodArray<z.ZodString>>;
326
+ resourceIds: z.ZodDefault<z.ZodArray<z.ZodString>>;
327
+ capabilityIds: z.ZodDefault<z.ZodArray<z.ZodString>>;
328
+ parentId: z.ZodOptional<z.ZodString>;
329
+ }, z.core.$strip>>>;
330
+ groups: z.ZodDefault<z.ZodArray<z.ZodObject<{
331
+ id: z.ZodString;
332
+ label: z.ZodString;
333
+ placement: z.ZodString;
334
+ surfaceIds: z.ZodDefault<z.ZodArray<z.ZodString>>;
335
+ }, z.core.$strip>>>;
336
+ }, z.core.$strip>;
337
+ sales: z.ZodObject<{
338
+ entityId: z.ZodString;
339
+ defaultPipelineId: z.ZodString;
340
+ pipelines: z.ZodArray<z.ZodObject<{
341
+ id: z.ZodString;
342
+ label: z.ZodString;
343
+ description: z.ZodOptional<z.ZodString>;
344
+ entityId: z.ZodString;
345
+ stages: z.ZodArray<z.ZodObject<{
346
+ label: z.ZodString;
347
+ description: z.ZodOptional<z.ZodString>;
348
+ color: z.ZodOptional<z.ZodString>;
349
+ icon: z.ZodOptional<z.ZodString>;
350
+ id: z.ZodString;
351
+ order: z.ZodNumber;
352
+ semanticClass: z.ZodEnum<{
353
+ open: "open";
354
+ active: "active";
355
+ closed_won: "closed_won";
356
+ closed_lost: "closed_lost";
357
+ nurturing: "nurturing";
358
+ }>;
359
+ surfaceIds: z.ZodDefault<z.ZodArray<z.ZodString>>;
360
+ resourceIds: z.ZodDefault<z.ZodArray<z.ZodString>>;
361
+ }, z.core.$strip>>;
362
+ }, z.core.$strip>>;
363
+ }, z.core.$strip>;
364
+ prospecting: z.ZodObject<{
365
+ listEntityId: z.ZodString;
366
+ companyEntityId: z.ZodString;
367
+ contactEntityId: z.ZodString;
368
+ description: z.ZodOptional<z.ZodString>;
369
+ companyStages: z.ZodArray<z.ZodObject<{
370
+ label: z.ZodString;
371
+ description: z.ZodOptional<z.ZodString>;
372
+ color: z.ZodOptional<z.ZodString>;
373
+ icon: z.ZodOptional<z.ZodString>;
374
+ id: z.ZodString;
375
+ order: z.ZodNumber;
376
+ }, z.core.$strip>>;
377
+ contactStages: z.ZodArray<z.ZodObject<{
378
+ label: z.ZodString;
379
+ description: z.ZodOptional<z.ZodString>;
380
+ color: z.ZodOptional<z.ZodString>;
381
+ icon: z.ZodOptional<z.ZodString>;
382
+ id: z.ZodString;
383
+ order: z.ZodNumber;
384
+ }, z.core.$strip>>;
385
+ }, z.core.$strip>;
386
+ projects: z.ZodObject<{
387
+ projectEntityId: z.ZodString;
388
+ milestoneEntityId: z.ZodString;
389
+ taskEntityId: z.ZodString;
390
+ projectStatuses: z.ZodArray<z.ZodObject<{
391
+ label: z.ZodString;
392
+ description: z.ZodOptional<z.ZodString>;
393
+ color: z.ZodOptional<z.ZodString>;
394
+ icon: z.ZodOptional<z.ZodString>;
395
+ id: z.ZodString;
396
+ order: z.ZodNumber;
397
+ }, z.core.$strip>>;
398
+ milestoneStatuses: z.ZodArray<z.ZodObject<{
399
+ label: z.ZodString;
400
+ description: z.ZodOptional<z.ZodString>;
401
+ color: z.ZodOptional<z.ZodString>;
402
+ icon: z.ZodOptional<z.ZodString>;
403
+ id: z.ZodString;
404
+ order: z.ZodNumber;
405
+ }, z.core.$strip>>;
406
+ taskStatuses: z.ZodArray<z.ZodObject<{
407
+ label: z.ZodString;
408
+ description: z.ZodOptional<z.ZodString>;
409
+ color: z.ZodOptional<z.ZodString>;
410
+ icon: z.ZodOptional<z.ZodString>;
411
+ id: z.ZodString;
412
+ order: z.ZodNumber;
413
+ }, z.core.$strip>>;
414
+ }, z.core.$strip>;
415
+ identity: z.ZodDefault<z.ZodObject<{
416
+ mission: z.ZodDefault<z.ZodString>;
417
+ vision: z.ZodDefault<z.ZodString>;
418
+ legalName: z.ZodDefault<z.ZodString>;
419
+ entityType: z.ZodDefault<z.ZodString>;
420
+ jurisdiction: z.ZodDefault<z.ZodString>;
421
+ industryCategory: z.ZodDefault<z.ZodString>;
422
+ geographicFocus: z.ZodDefault<z.ZodString>;
423
+ timeZone: z.ZodDefault<z.ZodString>;
424
+ businessHours: z.ZodDefault<z.ZodObject<{
425
+ monday: z.ZodOptional<z.ZodObject<{
426
+ open: z.ZodString;
427
+ close: z.ZodString;
428
+ }, z.core.$strip>>;
429
+ tuesday: z.ZodOptional<z.ZodObject<{
430
+ open: z.ZodString;
431
+ close: z.ZodString;
432
+ }, z.core.$strip>>;
433
+ wednesday: z.ZodOptional<z.ZodObject<{
434
+ open: z.ZodString;
435
+ close: z.ZodString;
436
+ }, z.core.$strip>>;
437
+ thursday: z.ZodOptional<z.ZodObject<{
438
+ open: z.ZodString;
439
+ close: z.ZodString;
440
+ }, z.core.$strip>>;
441
+ friday: z.ZodOptional<z.ZodObject<{
442
+ open: z.ZodString;
443
+ close: z.ZodString;
444
+ }, z.core.$strip>>;
445
+ saturday: z.ZodOptional<z.ZodObject<{
446
+ open: z.ZodString;
447
+ close: z.ZodString;
448
+ }, z.core.$strip>>;
449
+ sunday: z.ZodOptional<z.ZodObject<{
450
+ open: z.ZodString;
451
+ close: z.ZodString;
452
+ }, z.core.$strip>>;
453
+ }, z.core.$strip>>;
454
+ clientBrief: z.ZodDefault<z.ZodString>;
455
+ }, z.core.$strip>>;
456
+ customers: z.ZodDefault<z.ZodObject<{
457
+ segments: z.ZodDefault<z.ZodArray<z.ZodObject<{
458
+ id: z.ZodString;
459
+ name: z.ZodDefault<z.ZodString>;
460
+ description: z.ZodDefault<z.ZodString>;
461
+ jobsToBeDone: z.ZodDefault<z.ZodString>;
462
+ pains: z.ZodDefault<z.ZodArray<z.ZodString>>;
463
+ gains: z.ZodDefault<z.ZodArray<z.ZodString>>;
464
+ firmographics: z.ZodDefault<z.ZodObject<{
465
+ industry: z.ZodOptional<z.ZodString>;
466
+ companySize: z.ZodOptional<z.ZodString>;
467
+ region: z.ZodOptional<z.ZodString>;
468
+ }, z.core.$strip>>;
469
+ valueProp: z.ZodDefault<z.ZodString>;
470
+ }, z.core.$strip>>>;
471
+ }, z.core.$strip>>;
472
+ offerings: z.ZodDefault<z.ZodObject<{
473
+ products: z.ZodDefault<z.ZodArray<z.ZodObject<{
474
+ id: z.ZodString;
475
+ name: z.ZodDefault<z.ZodString>;
476
+ description: z.ZodDefault<z.ZodString>;
477
+ pricingModel: z.ZodDefault<z.ZodEnum<{
478
+ custom: "custom";
479
+ "one-time": "one-time";
480
+ subscription: "subscription";
481
+ "usage-based": "usage-based";
482
+ }>>;
483
+ price: z.ZodDefault<z.ZodNumber>;
484
+ currency: z.ZodDefault<z.ZodString>;
485
+ targetSegmentIds: z.ZodDefault<z.ZodArray<z.ZodString>>;
486
+ deliveryFeatureId: z.ZodOptional<z.ZodString>;
487
+ }, z.core.$strip>>>;
488
+ }, z.core.$strip>>;
489
+ roles: z.ZodDefault<z.ZodObject<{
490
+ roles: z.ZodDefault<z.ZodArray<z.ZodObject<{
491
+ id: z.ZodString;
492
+ title: z.ZodString;
493
+ responsibilities: z.ZodDefault<z.ZodArray<z.ZodString>>;
494
+ reportsToId: z.ZodOptional<z.ZodString>;
495
+ heldBy: z.ZodOptional<z.ZodString>;
496
+ }, z.core.$strip>>>;
497
+ }, z.core.$strip>>;
498
+ goals: z.ZodDefault<z.ZodObject<{
499
+ objectives: z.ZodDefault<z.ZodArray<z.ZodObject<{
500
+ id: z.ZodString;
501
+ description: z.ZodString;
502
+ periodStart: z.ZodString;
503
+ periodEnd: z.ZodString;
504
+ keyResults: z.ZodDefault<z.ZodArray<z.ZodObject<{
505
+ id: z.ZodString;
506
+ description: z.ZodString;
507
+ targetMetric: z.ZodString;
508
+ currentValue: z.ZodDefault<z.ZodNumber>;
509
+ targetValue: z.ZodOptional<z.ZodNumber>;
510
+ }, z.core.$strip>>>;
511
+ }, z.core.$strip>>>;
512
+ }, z.core.$strip>>;
513
+ statuses: z.ZodDefault<z.ZodObject<{
514
+ entries: z.ZodDefault<z.ZodArray<z.ZodObject<{
515
+ id: z.ZodString;
516
+ label: z.ZodString;
517
+ semanticClass: z.ZodEnum<{
518
+ execution: "execution";
519
+ schedule: "schedule";
520
+ queue: "queue";
521
+ "delivery.project": "delivery.project";
522
+ "delivery.milestone": "delivery.milestone";
523
+ "delivery.task": "delivery.task";
524
+ "schedule.run": "schedule.run";
525
+ request: "request";
526
+ }>;
527
+ category: z.ZodOptional<z.ZodString>;
528
+ }, z.core.$strip>>>;
529
+ }, z.core.$strip>>;
530
+ operations: z.ZodDefault<z.ZodObject<{
531
+ entries: z.ZodDefault<z.ZodArray<z.ZodObject<{
532
+ id: z.ZodString;
533
+ label: z.ZodString;
534
+ semanticClass: z.ZodEnum<{
535
+ sessions: "sessions";
536
+ notifications: "notifications";
537
+ schedules: "schedules";
538
+ executions: "executions";
539
+ queue: "queue";
540
+ }>;
541
+ featureId: z.ZodOptional<z.ZodString>;
542
+ supportedStatusSemanticClass: z.ZodOptional<z.ZodArray<z.ZodString>>;
543
+ }, z.core.$strip>>>;
544
+ }, z.core.$strip>>;
545
+ resourceMappings: z.ZodDefault<z.ZodArray<z.ZodObject<{
546
+ label: z.ZodString;
547
+ description: z.ZodOptional<z.ZodString>;
548
+ color: z.ZodOptional<z.ZodString>;
549
+ icon: z.ZodOptional<z.ZodString>;
550
+ id: z.ZodString;
551
+ resourceId: z.ZodString;
552
+ resourceType: z.ZodEnum<{
553
+ agent: "agent";
554
+ workflow: "workflow";
555
+ trigger: "trigger";
556
+ integration: "integration";
557
+ external: "external";
558
+ human_checkpoint: "human_checkpoint";
559
+ }>;
560
+ featureIds: z.ZodDefault<z.ZodArray<z.ZodString>>;
561
+ entityIds: z.ZodDefault<z.ZodArray<z.ZodString>>;
562
+ surfaceIds: z.ZodDefault<z.ZodArray<z.ZodString>>;
563
+ capabilityIds: z.ZodDefault<z.ZodArray<z.ZodString>>;
564
+ techStack: z.ZodOptional<z.ZodObject<{
565
+ platform: z.ZodString;
566
+ purpose: z.ZodString;
567
+ credentialStatus: z.ZodEnum<{
568
+ pending: "pending";
569
+ configured: "configured";
570
+ expired: "expired";
571
+ missing: "missing";
572
+ }>;
573
+ isSystemOfRecord: z.ZodDefault<z.ZodBoolean>;
574
+ }, z.core.$strip>>;
575
+ }, z.core.$strip>>>;
576
+ }, z.core.$strip>;
296
577
 
297
- declare const OrganizationModelSchema = OrganizationModelSchemaBase.superRefine((model, ctx) => {
298
- const featuresById = collectIds(model.features, ctx, ['features'], 'Feature')
299
- const surfacesById = collectIds(model.navigation.surfaces, ctx, ['navigation', 'surfaces'], 'Surface')
300
- collectIds(model.navigation.groups, ctx, ['navigation', 'groups'], 'Navigation group')
301
- collectIds(model.resourceMappings, ctx, ['resourceMappings'], 'Resource mapping')
302
-
303
- const resourceMappingsByResourceId = new Map<string, (typeof model.resourceMappings)[number]>()
304
- model.resourceMappings.forEach((resourceMapping, index) => {
305
- if (resourceMappingsByResourceId.has(resourceMapping.resourceId)) {
306
- addIssue(
307
- ctx,
308
- ['resourceMappings', index, 'resourceId'],
309
- `Resource mapping resourceId "${resourceMapping.resourceId}" must be unique`
310
- )
311
- return
312
- }
313
-
314
- resourceMappingsByResourceId.set(resourceMapping.resourceId, resourceMapping)
315
- })
316
-
317
- if (model.navigation.defaultSurfaceId && !surfacesById.has(model.navigation.defaultSurfaceId)) {
318
- addIssue(
319
- ctx,
320
- ['navigation', 'defaultSurfaceId'],
321
- `Default surface "${model.navigation.defaultSurfaceId}" must reference a declared navigation surface`
322
- )
323
- }
324
-
325
- model.navigation.groups.forEach((group, groupIndex) => {
326
- group.surfaceIds.forEach((surfaceId, surfaceIndex) => {
327
- if (!surfacesById.has(surfaceId)) {
328
- addIssue(
329
- ctx,
330
- ['navigation', 'groups', groupIndex, 'surfaceIds', surfaceIndex],
331
- `Navigation group "${group.id}" references unknown surface "${surfaceId}"`
332
- )
333
- }
334
- })
335
- })
336
-
337
- // Feature -> Surface bidirectional validation
338
- model.features.forEach((feature, featureIndex) => {
339
- feature.surfaceIds.forEach((surfaceId, surfaceIndex) => {
340
- const surface = surfacesById.get(surfaceId)
341
- if (!surface) {
342
- addIssue(
343
- ctx,
344
- ['features', featureIndex, 'surfaceIds', surfaceIndex],
345
- `Feature "${feature.id}" references unknown surface "${surfaceId}"`
346
- )
347
- return
348
- }
349
-
350
- if (!surface.featureIds.includes(feature.id)) {
351
- addIssue(
352
- ctx,
353
- ['features', featureIndex, 'surfaceIds', surfaceIndex],
354
- `Feature "${feature.id}" references surface "${surfaceId}" but that surface does not include feature "${feature.id}"`
355
- )
356
- }
357
- })
358
-
359
- // Feature -> Resource bidirectional validation
360
- feature.resourceIds.forEach((resourceId, resourceIndex) => {
361
- const resourceMapping = resourceMappingsByResourceId.get(resourceId)
362
- if (!resourceMapping) {
363
- addIssue(
364
- ctx,
365
- ['features', featureIndex, 'resourceIds', resourceIndex],
366
- `Feature "${feature.id}" references unknown resource "${resourceId}"`
367
- )
368
- return
369
- }
370
-
371
- if (!resourceMapping.featureIds.includes(feature.id)) {
372
- addIssue(
373
- ctx,
374
- ['features', featureIndex, 'resourceIds', resourceIndex],
375
- `Feature "${feature.id}" references resource "${resourceId}" but that resource mapping does not include feature "${feature.id}"`
376
- )
377
- }
378
- })
379
- })
380
-
381
- // Surface -> Feature bidirectional validation and other surface refs
382
- model.navigation.surfaces.forEach((surface, surfaceIndex) => {
383
- if (surface.parentId && !surfacesById.has(surface.parentId)) {
384
- addIssue(
385
- ctx,
386
- ['navigation', 'surfaces', surfaceIndex, 'parentId'],
387
- `Surface "${surface.id}" references unknown parent surface "${surface.parentId}"`
388
- )
389
- }
390
-
391
- surface.featureIds.forEach((featureId, featureIndex) => {
392
- const feature = featuresById.get(featureId)
393
- if (!feature) {
394
- addIssue(
395
- ctx,
396
- ['navigation', 'surfaces', surfaceIndex, 'featureIds', featureIndex],
397
- `Surface "${surface.id}" references unknown feature "${featureId}"`
398
- )
399
- return
400
- }
401
-
402
- if (!feature.surfaceIds.includes(surface.id)) {
403
- addIssue(
404
- ctx,
405
- ['navigation', 'surfaces', surfaceIndex, 'featureIds', featureIndex],
406
- `Surface "${surface.id}" references feature "${featureId}" but that feature does not include surface "${surface.id}"`
407
- )
408
- }
409
- })
410
-
411
- // Surface -> Resource bidirectional validation
412
- surface.resourceIds.forEach((resourceId, resourceIndex) => {
413
- const resourceMapping = resourceMappingsByResourceId.get(resourceId)
414
- if (!resourceMapping) {
415
- addIssue(
416
- ctx,
417
- ['navigation', 'surfaces', surfaceIndex, 'resourceIds', resourceIndex],
418
- `Surface "${surface.id}" references unknown resource "${resourceId}"`
419
- )
420
- return
421
- }
422
-
423
- if (!resourceMapping.surfaceIds.includes(surface.id)) {
424
- addIssue(
425
- ctx,
426
- ['navigation', 'surfaces', surfaceIndex, 'resourceIds', resourceIndex],
427
- `Surface "${surface.id}" references resource "${resourceId}" but that surface does not include resource "${surface.id}"`
428
- )
429
- }
430
- })
431
- })
432
-
433
- // Offerings -> CustomerSegment cross-ref: targetSegmentIds must resolve
434
- const segmentsById = new Map(model.customers.segments.map((seg) => [seg.id, seg]))
435
- model.offerings.products.forEach((product, productIndex) => {
436
- product.targetSegmentIds.forEach((segmentId, segmentIndex) => {
437
- if (!segmentsById.has(segmentId)) {
438
- addIssue(
439
- ctx,
440
- ['offerings', 'products', productIndex, 'targetSegmentIds', segmentIndex],
441
- `Product "${product.id}" references unknown customer segment "${segmentId}"`
442
- )
443
- }
444
- })
445
-
446
- // Offerings -> Feature cross-ref: deliveryFeatureId must resolve (when present)
447
- if (product.deliveryFeatureId !== undefined && !featuresById.has(product.deliveryFeatureId)) {
448
- addIssue(
449
- ctx,
450
- ['offerings', 'products', productIndex, 'deliveryFeatureId'],
451
- `Product "${product.id}" references unknown delivery feature "${product.deliveryFeatureId}"`
452
- )
453
- }
454
- })
455
-
456
- // Goals -> period-range validation: periodEnd must be strictly after periodStart
457
- model.goals.objectives.forEach((objective, index) => {
458
- if (objective.periodEnd <= objective.periodStart) {
459
- addIssue(
460
- ctx,
461
- ['goals', 'objectives', index, 'periodEnd'],
462
- `Goal "${objective.id}" has periodEnd "${objective.periodEnd}" which must be strictly after periodStart "${objective.periodStart}"`
463
- )
464
- }
465
- })
466
-
467
- // Roles -> reportsToId cross-ref: each reportsToId must resolve to another role in the same collection
468
- const rolesById = new Map(model.roles.roles.map((role) => [role.id, role]))
469
- model.roles.roles.forEach((role, roleIndex) => {
470
- if (role.reportsToId !== undefined && !rolesById.has(role.reportsToId)) {
471
- addIssue(
472
- ctx,
473
- ['roles', 'roles', roleIndex, 'reportsToId'],
474
- `Role "${role.id}" references unknown reportsToId "${role.reportsToId}"`
475
- )
476
- }
477
- })
478
-
479
- // ResourceMapping -> Feature and Surface bidirectional validation
480
- model.resourceMappings.forEach((resourceMapping, resourceIndex) => {
481
- resourceMapping.featureIds.forEach((featureId, featureIndex) => {
482
- const feature = featuresById.get(featureId)
483
- if (!feature) {
484
- addIssue(
485
- ctx,
486
- ['resourceMappings', resourceIndex, 'featureIds', featureIndex],
487
- `Resource mapping "${resourceMapping.id}" references unknown feature "${featureId}"`
488
- )
489
- return
490
- }
491
-
492
- if (!feature.resourceIds.includes(resourceMapping.resourceId)) {
493
- addIssue(
494
- ctx,
495
- ['resourceMappings', resourceIndex, 'featureIds', featureIndex],
496
- `Resource mapping "${resourceMapping.id}" references feature "${featureId}" but that feature does not include resource "${resourceMapping.resourceId}"`
497
- )
498
- }
499
- })
500
-
501
- resourceMapping.surfaceIds.forEach((surfaceId, surfaceIndex) => {
502
- const surface = surfacesById.get(surfaceId)
503
- if (!surface) {
504
- addIssue(
505
- ctx,
506
- ['resourceMappings', resourceIndex, 'surfaceIds', surfaceIndex],
507
- `Resource mapping "${resourceMapping.id}" references unknown surface "${surfaceId}"`
508
- )
509
- return
510
- }
511
-
512
- if (!surface.resourceIds.includes(resourceMapping.resourceId)) {
513
- addIssue(
514
- ctx,
515
- ['resourceMappings', resourceIndex, 'surfaceIds', surfaceIndex],
516
- `Resource mapping "${resourceMapping.id}" references surface "${surfaceId}" but that surface does not include resource "${resourceMapping.resourceId}"`
517
- )
518
- }
519
- })
520
- })
521
- })
522
-
523
- type OrganizationModel = z.infer<typeof OrganizationModelSchema>
524
- type OrganizationModelSurface = z.infer<typeof SurfaceDefinitionSchema>
578
+ declare const SurfaceDefinitionSchema: z.ZodObject<{
579
+ id: z.ZodString;
580
+ label: z.ZodString;
581
+ path: z.ZodString;
582
+ surfaceType: z.ZodEnum<{
583
+ list: "list";
584
+ settings: "settings";
585
+ page: "page";
586
+ dashboard: "dashboard";
587
+ graph: "graph";
588
+ detail: "detail";
589
+ }>;
590
+ description: z.ZodOptional<z.ZodString>;
591
+ enabled: z.ZodDefault<z.ZodBoolean>;
592
+ icon: z.ZodOptional<z.ZodString>;
593
+ featureId: z.ZodOptional<z.ZodString>;
594
+ featureIds: z.ZodDefault<z.ZodArray<z.ZodString>>;
595
+ entityIds: z.ZodDefault<z.ZodArray<z.ZodString>>;
596
+ resourceIds: z.ZodDefault<z.ZodArray<z.ZodString>>;
597
+ capabilityIds: z.ZodDefault<z.ZodArray<z.ZodString>>;
598
+ parentId: z.ZodOptional<z.ZodString>;
599
+ }, z.core.$strip>;
525
600
 
526
- interface EventSourceMessage {
527
- id: string;
528
- event: string;
529
- data: string;
530
- retry?: number;
531
- }
601
+ type OrganizationModel = z.infer<typeof OrganizationModelSchema>;
602
+ type OrganizationModelSurface = z.infer<typeof SurfaceDefinitionSchema>;
532
603
 
533
604
  interface FetchEventSourceWithTokenRefreshOptions {
534
605
  url: string;
@@ -1,15 +1,15 @@
1
- export { createTestFeaturesProvider } from '../chunk-OCCZRPER.js';
2
- export { ElevasisUIProvider } from '../chunk-34NQLV2W.js';
3
- import '../chunk-R73EHHPN.js';
1
+ export { createTestFeaturesProvider } from '../chunk-Q4QJOSVS.js';
2
+ export { ElevasisUIProvider } from '../chunk-MJAKU2WA.js';
3
+ import '../chunk-Q5HC6ENG.js';
4
4
  import '../chunk-WLOQ4IBG.js';
5
- export { ElevasisFeaturesProvider, FeatureShell, useElevasisFeatures, useOptionalElevasisFeatures } from '../chunk-2TDZBYXI.js';
6
- export { ElevasisCoreProvider, NotificationProvider, useNotificationAdapter } from '../chunk-P3TFNFZS.js';
5
+ export { ElevasisFeaturesProvider, FeatureShell, useElevasisFeatures, useOptionalElevasisFeatures } from '../chunk-LR5CRY5A.js';
6
+ export { ElevasisCoreProvider, NotificationProvider, useNotificationAdapter } from '../chunk-EUWBY43Z.js';
7
7
  import '../chunk-RX4UWZZR.js';
8
- import '../chunk-TTP62HWW.js';
8
+ import '../chunk-BHR7IV72.js';
9
9
  import '../chunk-SZHARWKU.js';
10
10
  import '../chunk-3KMDHCAR.js';
11
11
  import '../chunk-NYBEU5TE.js';
12
- import '../chunk-VDM6DQES.js';
12
+ import '../chunk-R7OJCNL3.js';
13
13
  import '../chunk-2IFYDILW.js';
14
14
  import '../chunk-Q7DJKLEN.js';
15
15
  import '../chunk-7YQKVWSD.js';
@@ -18,7 +18,7 @@ export { AppearanceProvider, useAppearance } from '../chunk-QJ2KCHKX.js';
18
18
  import '../chunk-HQ7M6PBW.js';
19
19
  import '../chunk-DT3QYZVU.js';
20
20
  import '../chunk-RNP5R5I3.js';
21
- import '../chunk-GCBWGGI6.js';
21
+ import '../chunk-OD7GWIZS.js';
22
22
  import '../chunk-KRWALB24.js';
23
23
  import '../chunk-SLH2QLKV.js';
24
24
  import '../chunk-DK2HVHCY.js';