@elevasis/ui 2.40.1 → 2.41.1

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 (92) hide show
  1. package/dist/api/index.js +4 -6
  2. package/dist/app/index.css +384 -0
  3. package/dist/app/index.d.ts +108 -0
  4. package/dist/app/index.js +17 -27
  5. package/dist/auth/index.css +659 -0
  6. package/dist/auth/index.js +19 -6
  7. package/dist/charts/index.css +533 -0
  8. package/dist/charts/index.js +18 -15
  9. package/dist/{chunk-RXH4D6TY.js → chunk-5M4HSHQ5.js} +631 -2
  10. package/dist/{chunk-TE4P6OSJ.js → chunk-7FJI76OH.js} +1 -1
  11. package/dist/chunk-GMXGDO3I.js +244 -0
  12. package/dist/{chunk-CXY7FMUM.js → chunk-GUKY77FJ.js} +50 -4
  13. package/dist/{chunk-5JYKCULK.js → chunk-NZ2F5RQ4.js} +44 -2
  14. package/dist/{chunk-WF7CONXF.js → chunk-OJJK27GC.js} +658 -6
  15. package/dist/{chunk-RX6RSKWC.js → chunk-QDXTIQT4.js} +29255 -18312
  16. package/dist/{chunk-73EWE2EW.js → chunk-V5HWC5EW.js} +1 -1
  17. package/dist/components/chat/index.js +1 -2
  18. package/dist/components/index.css +149 -149
  19. package/dist/components/index.js +13 -37
  20. package/dist/components/navigation/index.css +659 -0
  21. package/dist/components/navigation/index.js +25 -4
  22. package/dist/features/auth/index.js +14 -38
  23. package/dist/features/clients/index.css +149 -149
  24. package/dist/features/clients/index.js +13 -37
  25. package/dist/features/crm/index.js +13 -37
  26. package/dist/features/dashboard/index.js +13 -37
  27. package/dist/features/delivery/index.js +13 -37
  28. package/dist/features/knowledge/index.css +659 -0
  29. package/dist/features/knowledge/index.js +25 -248
  30. package/dist/features/lead-gen/index.d.ts +81 -0
  31. package/dist/features/lead-gen/index.js +13 -37
  32. package/dist/features/monitoring/index.js +13 -37
  33. package/dist/features/monitoring/requests/index.d.ts +69 -7
  34. package/dist/features/monitoring/requests/index.js +32 -41
  35. package/dist/features/operations/index.d.ts +79 -0
  36. package/dist/features/operations/index.js +13 -37
  37. package/dist/features/seo/index.js +1 -4
  38. package/dist/features/settings/index.js +13 -37
  39. package/dist/hooks/access/index.css +659 -0
  40. package/dist/hooks/access/index.js +19 -5
  41. package/dist/hooks/delivery/index.js +13 -37
  42. package/dist/hooks/index.d.ts +18 -6
  43. package/dist/hooks/index.js +13 -37
  44. package/dist/hooks/published.d.ts +18 -6
  45. package/dist/hooks/published.js +13 -37
  46. package/dist/index.d.ts +151 -7
  47. package/dist/index.js +14 -38
  48. package/dist/initialization/index.js +1 -1
  49. package/dist/knowledge/index.css +659 -0
  50. package/dist/knowledge/index.d.ts +81 -0
  51. package/dist/knowledge/index.js +25 -15
  52. package/dist/layout/index.css +659 -0
  53. package/dist/layout/index.d.ts +18 -2
  54. package/dist/layout/index.js +24 -7
  55. package/dist/organization/index.js +13 -37
  56. package/dist/provider/index.css +384 -0
  57. package/dist/provider/index.d.ts +120 -1
  58. package/dist/provider/index.js +18 -22
  59. package/dist/provider/published.css +533 -0
  60. package/dist/provider/published.d.ts +121 -2
  61. package/dist/provider/published.js +18 -17
  62. package/dist/test-utils/index.js +4 -6
  63. package/dist/theme/index.js +2 -5
  64. package/dist/theme/presets/index.js +1 -2
  65. package/dist/utils/index.js +1 -3
  66. package/package.json +3 -3
  67. package/dist/chunk-3KMDHCAR.js +0 -52
  68. package/dist/chunk-4DRI3G36.js +0 -1016
  69. package/dist/chunk-5EYJ2GIN.js +0 -122
  70. package/dist/chunk-66U7JOWV.js +0 -425
  71. package/dist/chunk-6D4LCJ52.js +0 -10
  72. package/dist/chunk-6EV47QQW.js +0 -340
  73. package/dist/chunk-6ROXVZ3L.js +0 -9
  74. package/dist/chunk-7MTWRSUZ.js +0 -357
  75. package/dist/chunk-7PHY5ONQ.js +0 -85
  76. package/dist/chunk-B2DZLPDL.js +0 -39
  77. package/dist/chunk-CLDCYJQT.js +0 -1
  78. package/dist/chunk-CTJBPF3Z.js +0 -734
  79. package/dist/chunk-DT3QYZVU.js +0 -23
  80. package/dist/chunk-IIMU5YAJ.js +0 -53
  81. package/dist/chunk-IUQAP4IO.js +0 -2131
  82. package/dist/chunk-J3FLIZY4.js +0 -423
  83. package/dist/chunk-K7GKKETO.js +0 -3157
  84. package/dist/chunk-L7GXUSCV.js +0 -215
  85. package/dist/chunk-LJDYY3XB.js +0 -133
  86. package/dist/chunk-NYBEU5TE.js +0 -118
  87. package/dist/chunk-RH5VWWSC.js +0 -624
  88. package/dist/chunk-SJNIOGVX.js +0 -112
  89. package/dist/chunk-TYRUKGGD.js +0 -46
  90. package/dist/chunk-WLOQ4IBG.js +0 -654
  91. package/dist/chunk-X4WBGKJQ.js +0 -138
  92. package/dist/chunk-X7D6SUKR.js +0 -1234
@@ -1,10 +1,27 @@
1
- export { AppShellCenteredContainer, AppShellContainer, AppShellContentContainer, AppShellError, AppShellLoader, AppShellRightSideContainer, AppShellRightSideOuterContainer, AppTopbarAdjusterWrapper, CollapsibleSidebarGroup, CyberParticles, LinksGroup, PageContainer, Sidebar, SidebarContext, SidebarProvider, SubshellLoader, SubshellNavList, SubshellSidebarLoader, Topbar, TopbarContainer, Vignette, subsidebarWidth, useSidebar, useSidebarCollapse } from '../chunk-X7D6SUKR.js';
2
- export { SubshellNavItem } from '../chunk-X4WBGKJQ.js';
3
- export { SubshellSidebarSection } from '../chunk-IIMU5YAJ.js';
4
- export { AmbientBloomGrid, AppBackground, CyberBackground, FilmGrain, FloatingMotes, FloatingOrbs, PerspectiveGrid, RadiantGlow, WaveBackground } from '../chunk-WLOQ4IBG.js';
5
- export { SubshellContainer, SubshellContentContainer, SubshellRightSideContainer, SubshellSidebar } from '../chunk-L7GXUSCV.js';
6
- import '../chunk-NYBEU5TE.js';
7
- export { sidebarBottomSectionCollapsedHeight, sidebarBottomSectionHeight, sidebarCollapsedWidth, sidebarGroupChevronSize, sidebarHoverDelay, sidebarIconInnerSize, sidebarIconSize, sidebarIconStroke, sidebarItemGap, sidebarItemHeight, sidebarItemPadding, sidebarSectionPadding, sidebarSubLinkIndent, sidebarSubLinkPaddingX, sidebarSubLinkPaddingY, sidebarToggleIconSize, sidebarTransitionDuration, sidebarWidth, subshellNavItemIconSize, topbarHeight } from '../chunk-DT3QYZVU.js';
1
+ export { AppShellCenteredContainer, AppShellContainer, AppShellContentContainer, AppShellError, AppShellLoader, AppShellRightSideContainer, AppShellRightSideOuterContainer, AppTopbarAdjusterWrapper, CollapsibleSidebarGroup, CyberParticles, LinksGroup, PageContainer, Sidebar, SidebarContext, SidebarProvider, SubshellContainer, SubshellContentContainer, SubshellLoader, SubshellNavList, SubshellRightSideContainer, SubshellSidebar, SubshellSidebarLoader, Topbar, TopbarActions, TopbarContainer, Vignette, subsidebarWidth, useSidebar, useSidebarCollapse } from '../chunk-QDXTIQT4.js';
2
+ import '../chunk-NZ2F5RQ4.js';
3
+ export { AmbientBloomGrid, AppBackground, CyberBackground, FilmGrain, FloatingMotes, FloatingOrbs, PerspectiveGrid, RadiantGlow, WaveBackground } from '../chunk-OJJK27GC.js';
4
+ import '../chunk-AUDNF2Q7.js';
5
+ import '../chunk-6M6OLGQY.js';
6
+ import '../chunk-BRXELOHC.js';
7
+ import '../chunk-GUKY77FJ.js';
8
+ import '../chunk-SJHM4WDG.js';
9
+ import '../chunk-ZTWA5H77.js';
10
+ import '../chunk-S3XR4II4.js';
11
+ import '../chunk-6DO4PE3O.js';
12
+ import '../chunk-7FJI76OH.js';
13
+ import '../chunk-DD3CCMCZ.js';
14
+ export { SubshellNavItem, SubshellSidebarSection, sidebarBottomSectionCollapsedHeight, sidebarBottomSectionHeight, sidebarCollapsedWidth, sidebarGroupChevronSize, sidebarHoverDelay, sidebarIconInnerSize, sidebarIconSize, sidebarIconStroke, sidebarItemGap, sidebarItemHeight, sidebarItemPadding, sidebarSectionPadding, sidebarSubLinkIndent, sidebarSubLinkPaddingX, sidebarSubLinkPaddingY, sidebarToggleIconSize, sidebarTransitionDuration, sidebarWidth, subshellNavItemIconSize, topbarHeight } from '../chunk-GMXGDO3I.js';
8
15
  import '../chunk-2IFYDILW.js';
9
16
  import '../chunk-Q7DJKLEN.js';
17
+ import '../chunk-HENXLGVD.js';
18
+ import '../chunk-7FPLLSHN.js';
19
+ import '../chunk-RNP5R5I3.js';
20
+ import '../chunk-W2SFTXMT.js';
21
+ import '../chunk-5M4HSHQ5.js';
22
+ import '../chunk-KRWALB24.js';
23
+ import '../chunk-2FTX4WO2.js';
24
+ import '../chunk-MQZE7SUI.js';
25
+ import '../chunk-TVTSASST.js';
26
+ import '../chunk-BRJ3QZ4E.js';
10
27
  import '../chunk-I2KLQ2HA.js';
@@ -1,49 +1,25 @@
1
- export { OrganizationSwitcher, OrganizationSwitcherConnected, createOrganizationsSlice, createUseOrgInitialization, createUseOrganizations } from '../chunk-RX6RSKWC.js';
2
- import '../chunk-B2DZLPDL.js';
3
- import '../chunk-66U7JOWV.js';
1
+ export { OrganizationProvider, OrganizationSwitcher, OrganizationSwitcherConnected, createOrganizationsSlice, createUseOrgInitialization, createUseOrganizations } from '../chunk-QDXTIQT4.js';
2
+ import '../chunk-NZ2F5RQ4.js';
3
+ import '../chunk-OJJK27GC.js';
4
4
  import '../chunk-AUDNF2Q7.js';
5
5
  import '../chunk-6M6OLGQY.js';
6
6
  import '../chunk-BRXELOHC.js';
7
- import '../chunk-7PHY5ONQ.js';
8
- import '../chunk-CXY7FMUM.js';
9
- import '../chunk-4DRI3G36.js';
7
+ import '../chunk-GUKY77FJ.js';
10
8
  import '../chunk-SJHM4WDG.js';
11
9
  import '../chunk-ZTWA5H77.js';
12
- import '../chunk-5EYJ2GIN.js';
13
- import '../chunk-X7D6SUKR.js';
14
- import '../chunk-CLDCYJQT.js';
15
- import '../chunk-TYRUKGGD.js';
16
- import '../chunk-X4WBGKJQ.js';
17
- import '../chunk-IIMU5YAJ.js';
18
- import '../chunk-HENXLGVD.js';
19
- import '../chunk-7FPLLSHN.js';
20
- import '../chunk-RNP5R5I3.js';
21
- import '../chunk-SJNIOGVX.js';
22
- import '../chunk-5JYKCULK.js';
23
- import '../chunk-6D4LCJ52.js';
24
- import '../chunk-WF7CONXF.js';
25
- import '../chunk-WLOQ4IBG.js';
26
- export { OrganizationProvider } from '../chunk-6EV47QQW.js';
27
- import '../chunk-CTJBPF3Z.js';
28
- import '../chunk-3KMDHCAR.js';
29
10
  import '../chunk-S3XR4II4.js';
30
- import '../chunk-L7GXUSCV.js';
31
- import '../chunk-NYBEU5TE.js';
32
- import '../chunk-TE4P6OSJ.js';
33
- import '../chunk-DT3QYZVU.js';
34
- import '../chunk-2IFYDILW.js';
35
- import '../chunk-Q7DJKLEN.js';
36
- import '../chunk-RXH4D6TY.js';
37
- import '../chunk-KRWALB24.js';
38
- import '../chunk-LJDYY3XB.js';
39
- import '../chunk-7MTWRSUZ.js';
40
- import '../chunk-J3FLIZY4.js';
41
11
  import '../chunk-6DO4PE3O.js';
42
- import '../chunk-K7GKKETO.js';
12
+ import '../chunk-7FJI76OH.js';
43
13
  export { OrganizationContext, useOrganization } from '../chunk-DD3CCMCZ.js';
14
+ import '../chunk-GMXGDO3I.js';
15
+ import '../chunk-2IFYDILW.js';
16
+ import '../chunk-Q7DJKLEN.js';
17
+ import '../chunk-HENXLGVD.js';
18
+ import '../chunk-7FPLLSHN.js';
19
+ import '../chunk-RNP5R5I3.js';
44
20
  import '../chunk-W2SFTXMT.js';
45
- import '../chunk-6ROXVZ3L.js';
46
- import '../chunk-RH5VWWSC.js';
21
+ import '../chunk-5M4HSHQ5.js';
22
+ import '../chunk-KRWALB24.js';
47
23
  import '../chunk-2FTX4WO2.js';
48
24
  import '../chunk-MQZE7SUI.js';
49
25
  import '../chunk-TVTSASST.js';
@@ -125,6 +125,390 @@
125
125
  }
126
126
  }
127
127
 
128
+ /* src/graph/Graph.globals.css */
129
+ .elevasis-graph-root .react-flow__node.selected,
130
+ .elevasis-graph-root .react-flow__node:focus,
131
+ .elevasis-graph-root .react-flow__node:focus-visible {
132
+ outline: none !important;
133
+ }
134
+ .elevasis-graph-root .react-flow__node.selected > * {
135
+ box-shadow: none;
136
+ }
137
+
138
+ /* src/graph/Graph.module.css */
139
+ @keyframes edgeFlow {
140
+ 0% {
141
+ stroke-dashoffset: 24;
142
+ }
143
+ 100% {
144
+ stroke-dashoffset: 0;
145
+ }
146
+ }
147
+ @keyframes edgeFlowReverse {
148
+ 0% {
149
+ stroke-dashoffset: 0;
150
+ }
151
+ 100% {
152
+ stroke-dashoffset: 24;
153
+ }
154
+ }
155
+ @keyframes pulse {
156
+ 0%, 100% {
157
+ opacity: 0.6;
158
+ }
159
+ 50% {
160
+ opacity: 1;
161
+ }
162
+ }
163
+ @keyframes livePulse {
164
+ 0%, 100% {
165
+ opacity: 1;
166
+ }
167
+ 50% {
168
+ opacity: 0.6;
169
+ }
170
+ }
171
+ .livePulse {
172
+ animation: livePulse 2s ease-in-out infinite;
173
+ }
174
+ @keyframes glowPulse {
175
+ 0%, 100% {
176
+ box-shadow: 0 0 5px var(--glow-color, color-mix(in srgb, var(--color-primary) 30%, transparent)), 0 0 15px var(--glow-color, color-mix(in srgb, var(--color-primary) 10%, transparent));
177
+ }
178
+ 50% {
179
+ box-shadow: 0 0 10px var(--glow-color, color-mix(in srgb, var(--color-primary) 50%, transparent)), 0 0 20px var(--glow-color, color-mix(in srgb, var(--color-primary) 20%, transparent));
180
+ }
181
+ }
182
+ @keyframes nodeEnter {
183
+ 0% {
184
+ opacity: 0;
185
+ transform: scale(0.8) translateY(10px);
186
+ }
187
+ 100% {
188
+ opacity: 1;
189
+ transform: scale(1) translateY(0);
190
+ }
191
+ }
192
+ @keyframes handlePulse {
193
+ 0%, 100% {
194
+ transform: scale(1);
195
+ box-shadow: 0 0 0 0 var(--handle-color, color-mix(in srgb, var(--color-primary) 40%, transparent));
196
+ }
197
+ 50% {
198
+ transform: scale(1.2);
199
+ box-shadow: 0 0 0 4px var(--handle-color, color-mix(in srgb, var(--color-primary) 0%, transparent));
200
+ }
201
+ }
202
+ @keyframes gridMove {
203
+ 0% {
204
+ background-position: 0 0;
205
+ }
206
+ 100% {
207
+ background-position: 40px 40px;
208
+ }
209
+ }
210
+ @keyframes labelFadeIn {
211
+ 0% {
212
+ opacity: 0;
213
+ transform: translate(-50%, -50%) translate(var(--label-x), var(--label-y)) scale(0.8);
214
+ }
215
+ 100% {
216
+ opacity: 1;
217
+ transform: translate(-50%, -50%) translate(var(--label-x), var(--label-y)) scale(1);
218
+ }
219
+ }
220
+ @keyframes scanLine {
221
+ 0% {
222
+ transform: translateY(-100%);
223
+ opacity: 0;
224
+ }
225
+ 50% {
226
+ opacity: 0.5;
227
+ }
228
+ 100% {
229
+ transform: translateY(100%);
230
+ opacity: 0;
231
+ }
232
+ }
233
+ .graphContainer {
234
+ position: relative;
235
+ background-image:
236
+ linear-gradient(color-mix(in srgb, var(--color-primary) 5%, transparent) 1px, transparent 1px),
237
+ linear-gradient(
238
+ 90deg,
239
+ color-mix(in srgb, var(--color-primary) 5%, transparent) 1px,
240
+ transparent 1px),
241
+ radial-gradient(
242
+ ellipse at 50% 50%,
243
+ color-mix(in srgb, var(--color-primary) 1.25%, transparent) 0%,
244
+ transparent 70%);
245
+ background-color: color-mix(in srgb, var(--color-background) 50%, var(--glass-background));
246
+ backdrop-filter: var(--glass-blur);
247
+ background-size:
248
+ 40px 40px,
249
+ 40px 40px,
250
+ 100% 100%;
251
+ animation: gridMove 20s linear infinite;
252
+ }
253
+ [data-mantine-color-scheme=dark] .graphContainer {
254
+ background-image:
255
+ linear-gradient(color-mix(in srgb, var(--color-primary) 9%, transparent) 1px, transparent 1px),
256
+ linear-gradient(
257
+ 90deg,
258
+ color-mix(in srgb, var(--color-primary) 9%, transparent) 1px,
259
+ transparent 1px),
260
+ radial-gradient(
261
+ ellipse at 50% 50%,
262
+ color-mix(in srgb, var(--color-primary) 2.25%, transparent) 0%,
263
+ transparent 70%);
264
+ background-size:
265
+ 40px 40px,
266
+ 40px 40px,
267
+ 100% 100%;
268
+ }
269
+ .node {
270
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
271
+ position: relative;
272
+ }
273
+ .node:nth-child(1) {
274
+ animation-delay: 0.05s;
275
+ }
276
+ .node:nth-child(2) {
277
+ animation-delay: 0.1s;
278
+ }
279
+ .node:nth-child(3) {
280
+ animation-delay: 0.15s;
281
+ }
282
+ .node:nth-child(4) {
283
+ animation-delay: 0.2s;
284
+ }
285
+ .node:nth-child(5) {
286
+ animation-delay: 0.25s;
287
+ }
288
+ .node:nth-child(6) {
289
+ animation-delay: 0.3s;
290
+ }
291
+ .node:nth-child(7) {
292
+ animation-delay: 0.35s;
293
+ }
294
+ .node:nth-child(8) {
295
+ animation-delay: 0.4s;
296
+ }
297
+ .node:nth-child(9) {
298
+ animation-delay: 0.45s;
299
+ }
300
+ .node:nth-child(10) {
301
+ animation-delay: 0.5s;
302
+ }
303
+ .node:nth-child(11) {
304
+ animation-delay: 0.55s;
305
+ }
306
+ .node:nth-child(12) {
307
+ animation-delay: 0.6s;
308
+ }
309
+ .nodeCard {
310
+ position: relative;
311
+ border-radius: var(--mantine-radius-md);
312
+ overflow: hidden;
313
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
314
+ }
315
+ .nodeCard::before {
316
+ content: "";
317
+ position: absolute;
318
+ inset: 0;
319
+ background:
320
+ linear-gradient(
321
+ 135deg,
322
+ var(--node-color-light, color-mix(in srgb, var(--color-primary) 10%, transparent)) 0%,
323
+ transparent 50%,
324
+ var(--node-color-light, color-mix(in srgb, var(--color-primary) 5%, transparent)) 100%);
325
+ pointer-events: none;
326
+ opacity: 0;
327
+ transition: opacity 0.3s ease;
328
+ }
329
+ .nodeCard::after {
330
+ content: "";
331
+ position: absolute;
332
+ left: 0;
333
+ right: 0;
334
+ height: 30%;
335
+ background:
336
+ linear-gradient(
337
+ 180deg,
338
+ transparent 0%,
339
+ var(--node-color-glow, color-mix(in srgb, var(--color-primary) 10%, transparent)) 50%,
340
+ transparent 100%);
341
+ pointer-events: none;
342
+ opacity: 0;
343
+ }
344
+ .nodeCard:hover::before,
345
+ .nodeCardSelected::before {
346
+ opacity: 1;
347
+ }
348
+ .nodeCard:hover::after,
349
+ .nodeCardSelected::after {
350
+ animation: scanLine 3s ease-in-out infinite;
351
+ }
352
+ .nodeCard:hover {
353
+ transform: translateY(-2px) scale(1.02);
354
+ }
355
+ .nodeCardSelected {
356
+ transform: translateY(-2px) scale(1.02);
357
+ animation: glowPulse 2s ease-in-out infinite;
358
+ }
359
+ .nodeAgent {
360
+ --glow-color: rgba(139, 92, 246, 0.4);
361
+ --node-color-light: rgba(139, 92, 246, 0.1);
362
+ --node-color-glow: rgba(139, 92, 246, 0.15);
363
+ --handle-color: rgba(139, 92, 246, 0.5);
364
+ --gradient-start: rgba(139, 92, 246, 0.15);
365
+ --gradient-end: rgba(139, 92, 246, 0.05);
366
+ }
367
+ .nodeWorkflow {
368
+ --glow-color: rgba(59, 130, 246, 0.4);
369
+ --node-color-light: rgba(59, 130, 246, 0.1);
370
+ --node-color-glow: rgba(59, 130, 246, 0.15);
371
+ --handle-color: rgba(59, 130, 246, 0.5);
372
+ --gradient-start: rgba(59, 130, 246, 0.15);
373
+ --gradient-end: rgba(59, 130, 246, 0.05);
374
+ }
375
+ .nodeTrigger {
376
+ --glow-color: rgba(249, 115, 22, 0.4);
377
+ --node-color-light: rgba(249, 115, 22, 0.1);
378
+ --node-color-glow: rgba(249, 115, 22, 0.15);
379
+ --handle-color: rgba(249, 115, 22, 0.5);
380
+ --gradient-start: rgba(249, 115, 22, 0.15);
381
+ --gradient-end: rgba(249, 115, 22, 0.05);
382
+ }
383
+ .nodeIntegration {
384
+ --glow-color: rgba(20, 184, 166, 0.4);
385
+ --node-color-light: rgba(20, 184, 166, 0.1);
386
+ --node-color-glow: rgba(20, 184, 166, 0.15);
387
+ --handle-color: rgba(20, 184, 166, 0.5);
388
+ --gradient-start: rgba(20, 184, 166, 0.15);
389
+ --gradient-end: rgba(20, 184, 166, 0.05);
390
+ }
391
+ .nodeExternal {
392
+ --glow-color: rgba(107, 114, 128, 0.4);
393
+ --node-color-light: rgba(107, 114, 128, 0.1);
394
+ --node-color-glow: rgba(107, 114, 128, 0.15);
395
+ --handle-color: rgba(107, 114, 128, 0.5);
396
+ --gradient-start: rgba(107, 114, 128, 0.15);
397
+ --gradient-end: rgba(107, 114, 128, 0.05);
398
+ }
399
+ .nodeHuman {
400
+ --glow-color: rgba(245, 158, 11, 0.4);
401
+ --node-color-light: rgba(245, 158, 11, 0.1);
402
+ --node-color-glow: rgba(245, 158, 11, 0.15);
403
+ --handle-color: rgba(245, 158, 11, 0.5);
404
+ --gradient-start: rgba(245, 158, 11, 0.15);
405
+ --gradient-end: rgba(245, 158, 11, 0.05);
406
+ }
407
+ .nodePrimary {
408
+ --glow-color: rgba(37, 99, 235, 0.4);
409
+ --node-color-light: rgba(37, 99, 235, 0.1);
410
+ --node-color-glow: rgba(37, 99, 235, 0.15);
411
+ --handle-color: rgba(37, 99, 235, 0.5);
412
+ --gradient-start: rgba(37, 99, 235, 0.15);
413
+ --gradient-end: rgba(37, 99, 235, 0.05);
414
+ }
415
+ .handle {
416
+ transition: all 0.2s ease;
417
+ }
418
+ .handle:hover {
419
+ animation: handlePulse 1s ease-in-out infinite;
420
+ }
421
+ .nodeIcon {
422
+ transition: all 0.3s ease;
423
+ }
424
+ .badge {
425
+ transition: all 0.2s ease;
426
+ backdrop-filter: blur(4px);
427
+ }
428
+ .nodeCard:hover .badge {
429
+ transform: scale(1.05);
430
+ }
431
+ .badgeProd {
432
+ box-shadow: 0 0 8px rgba(34, 197, 94, 0.3);
433
+ }
434
+ .edge {
435
+ transition: all 0.3s ease;
436
+ }
437
+ .edgeAnimated {
438
+ stroke-dasharray: 8 4;
439
+ animation: edgeFlow 1s linear infinite;
440
+ }
441
+ .edgeGlow {
442
+ filter: drop-shadow(0 0 3px var(--edge-color, color-mix(in srgb, var(--color-primary) 50%, transparent)));
443
+ }
444
+ .edgeHighlighted {
445
+ stroke-width: 3px;
446
+ }
447
+ .edgeLabel {
448
+ backdrop-filter: blur(8px);
449
+ border: 1px solid rgba(255, 255, 255, 0.1);
450
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15), 0 0 20px var(--label-glow, color-mix(in srgb, var(--color-primary) 20%, transparent));
451
+ transition: box-shadow 0.2s ease;
452
+ }
453
+ .edgeLabel:hover {
454
+ box-shadow: 0 6px 16px rgba(0, 0, 0, 0.2), 0 0 30px var(--label-glow, color-mix(in srgb, var(--color-primary) 30%, transparent));
455
+ }
456
+ .legend {
457
+ backdrop-filter: var(--glass-blur);
458
+ background: var(--glass-background);
459
+ border: 1px solid color-mix(in srgb, var(--color-primary) 20%, transparent);
460
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1), 0 0 40px color-mix(in srgb, var(--color-primary) 10%, transparent);
461
+ }
462
+ [data-mantine-color-scheme=dark] .legend {
463
+ border-color: color-mix(in srgb, var(--color-primary) 30%, transparent);
464
+ }
465
+ .legendDot {
466
+ transition: all 0.2s ease;
467
+ box-shadow: 0 0 8px currentColor;
468
+ }
469
+ .legendDot:hover {
470
+ transform: scale(1.3);
471
+ box-shadow: 0 0 12px currentColor;
472
+ }
473
+ .nodeHighlighted .nodeCard {
474
+ transform: translateY(-2px) scale(1.02);
475
+ }
476
+ .nodeHighlighted .nodeCard::before {
477
+ opacity: 1;
478
+ }
479
+ .nodeHighlighted .nodeCard::after {
480
+ animation: scanLine 3s ease-in-out infinite;
481
+ }
482
+ .nodeDimmed {
483
+ opacity: 0.3;
484
+ filter: grayscale(0.5);
485
+ transition: all 0.3s ease;
486
+ }
487
+ .edgeHighlighted {
488
+ stroke-width: 4px !important;
489
+ }
490
+ .edgeDimmed {
491
+ opacity: 0.15;
492
+ transition: all 0.3s ease;
493
+ }
494
+ .edgeLabelDimmed {
495
+ opacity: 0.15;
496
+ transition: opacity 0.3s ease;
497
+ }
498
+ @media (prefers-reduced-motion: reduce) {
499
+ .node,
500
+ .nodeCard::after,
501
+ .edgeAnimated,
502
+ .nodeIcon,
503
+ .handle:hover,
504
+ .graphContainer {
505
+ animation: none;
506
+ }
507
+ .nodeCard:hover {
508
+ transform: none;
509
+ }
510
+ }
511
+
128
512
  /* src/theme/custom.css */
129
513
  .mantine-Button-root[data-variant=default] {
130
514
  background-color: var(--color-surface);
@@ -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;