@elevasis/ui 2.20.0 → 2.22.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 (100) 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-TO7QXDBX.js → chunk-3HEUGBOT.js} +3 -3
  5. package/dist/chunk-AXXTN44Z.js +26 -0
  6. package/dist/{chunk-FMFX4K6E.js → chunk-B4FHWKEF.js} +3390 -2929
  7. package/dist/{chunk-AL23U6C3.js → chunk-BIWHHWCJ.js} +1 -2
  8. package/dist/{chunk-MZFJWCPH.js → chunk-BSZRKBAW.js} +277 -92
  9. package/dist/{chunk-GP3AFJYG.js → chunk-COG4ABRI.js} +8 -13
  10. package/dist/chunk-DDZOHLHB.js +48 -0
  11. package/dist/{chunk-ZE2KQSHL.js → chunk-GJ7EIABJ.js} +4 -4
  12. package/dist/{chunk-YP6T426C.js → chunk-IBUYJXA3.js} +1326 -1110
  13. package/dist/{chunk-2CFOFSSG.js → chunk-IOTLB6ND.js} +8 -13
  14. package/dist/{chunk-GBMNCNHX.js → chunk-KVJ3LFH2.js} +3 -1
  15. package/dist/chunk-LJWV4TWV.js +335 -0
  16. package/dist/{chunk-PJVG3ISO.js → chunk-LKVBEE63.js} +7 -9
  17. package/dist/{chunk-JR5WNTLA.js → chunk-LVJGPE6H.js} +11 -24
  18. package/dist/{chunk-OUYH2SBS.js → chunk-LVUCBY7X.js} +2 -2
  19. package/dist/{chunk-TIIPYB2Z.js → chunk-QZJM3RYI.js} +1 -1
  20. package/dist/{chunk-OD7GWIZS.js → chunk-SGXXJE52.js} +1 -121
  21. package/dist/{chunk-7YQKVWSD.js → chunk-SQ5JGELM.js} +25 -5
  22. package/dist/{chunk-R7OJCNL3.js → chunk-T6INEVX6.js} +1 -1
  23. package/dist/{chunk-RX4UWZZR.js → chunk-TKAYX2SP.js} +8 -3
  24. package/dist/{chunk-CTTY6FUT.js → chunk-TSSKOQBX.js} +2 -2
  25. package/dist/{chunk-GTYUP7MB.js → chunk-WWJ6S2HQ.js} +10 -22
  26. package/dist/{chunk-Q5HC6ENG.js → chunk-XOTJNW4Q.js} +1 -1
  27. package/dist/{chunk-BHR7IV72.js → chunk-XUYBOO32.js} +1 -1
  28. package/dist/{chunk-M7W7CGPL.js → chunk-Z6FAH4XV.js} +1 -1
  29. package/dist/{chunk-Q4QJOSVS.js → chunk-ZBCTB5CA.js} +1 -1
  30. package/dist/components/index.css +85 -85
  31. package/dist/components/index.d.ts +970 -746
  32. package/dist/components/index.js +246 -39
  33. package/dist/components/navigation/index.css +589 -0
  34. package/dist/components/navigation/index.d.ts +1 -13
  35. package/dist/components/navigation/index.js +11 -1
  36. package/dist/execution/index.d.ts +27 -0
  37. package/dist/features/auth/index.css +2 -2
  38. package/dist/features/auth/index.d.ts +184 -3
  39. package/dist/features/crm/index.css +2 -2
  40. package/dist/features/crm/index.d.ts +201 -38
  41. package/dist/features/crm/index.js +15 -14
  42. package/dist/features/dashboard/index.css +2 -2
  43. package/dist/features/dashboard/index.d.ts +25 -27
  44. package/dist/features/dashboard/index.js +15 -14
  45. package/dist/features/delivery/index.css +85 -85
  46. package/dist/features/delivery/index.d.ts +201 -38
  47. package/dist/features/delivery/index.js +15 -14
  48. package/dist/features/lead-gen/index.css +2 -2
  49. package/dist/features/lead-gen/index.d.ts +19 -37
  50. package/dist/features/lead-gen/index.js +15 -14
  51. package/dist/features/monitoring/index.css +85 -85
  52. package/dist/features/monitoring/index.d.ts +18 -36
  53. package/dist/features/monitoring/index.js +17 -16
  54. package/dist/features/monitoring/requests/index.css +2 -2
  55. package/dist/features/monitoring/requests/index.d.ts +18 -36
  56. package/dist/features/monitoring/requests/index.js +15 -14
  57. package/dist/features/operations/index.css +2 -2
  58. package/dist/features/operations/index.d.ts +49 -67
  59. package/dist/features/operations/index.js +18 -17
  60. package/dist/features/seo/index.d.ts +17 -35
  61. package/dist/features/seo/index.js +1 -1
  62. package/dist/features/settings/index.css +2 -2
  63. package/dist/features/settings/index.d.ts +222 -44
  64. package/dist/features/settings/index.js +16 -15
  65. package/dist/graph/index.css +2 -2
  66. package/dist/hooks/delivery/index.css +2 -2
  67. package/dist/hooks/delivery/index.d.ts +184 -3
  68. package/dist/hooks/delivery/index.js +2 -2
  69. package/dist/hooks/index.css +85 -85
  70. package/dist/hooks/index.d.ts +1862 -1582
  71. package/dist/hooks/index.js +13 -12
  72. package/dist/hooks/operations/command-view/utils/transformCommandViewData.d.ts +92 -121
  73. package/dist/hooks/published.css +85 -85
  74. package/dist/hooks/published.d.ts +1862 -1582
  75. package/dist/hooks/published.js +13 -12
  76. package/dist/index.css +12 -12
  77. package/dist/index.d.ts +689 -470
  78. package/dist/index.js +14 -13
  79. package/dist/initialization/index.d.ts +184 -3
  80. package/dist/layout/index.js +2 -2
  81. package/dist/organization/index.css +589 -0
  82. package/dist/organization/index.js +1 -1
  83. package/dist/profile/index.d.ts +184 -3
  84. package/dist/provider/index.css +384 -0
  85. package/dist/provider/index.d.ts +68 -125
  86. package/dist/provider/index.js +11 -10
  87. package/dist/provider/published.css +463 -0
  88. package/dist/provider/published.d.ts +68 -125
  89. package/dist/provider/published.js +8 -7
  90. package/dist/supabase/index.d.ts +359 -6
  91. package/dist/test-utils/index.d.ts +46 -2
  92. package/dist/test-utils/index.js +104 -3
  93. package/dist/theme/index.js +2 -2
  94. package/dist/types/index.d.ts +303 -141
  95. package/dist/utils/index.d.ts +26 -59
  96. package/dist/utils/index.js +1 -1
  97. package/package.json +4 -4
  98. package/dist/chunk-LR5CRY5A.js +0 -514
  99. package/dist/chunk-MG3NF7QL.js +0 -63
  100. /package/dist/{chunk-6GUW5GGF.js → chunk-6Z3G4U2R.js} +0 -0
@@ -1,5 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { ReactNode } from 'react';
3
+ import { z } from 'zod';
3
4
 
4
5
  /**
5
6
  * Time range selector for dashboard metrics
@@ -113,8 +114,10 @@ interface ResourceDefinition {
113
114
  type: ResourceType;
114
115
  /** Environment/deployment status */
115
116
  status: ResourceStatus;
116
- /** Domain tags for filtering and organization */
117
- domains?: ResourceDomain[];
117
+ /** Graph links to Organization Model nodes */
118
+ links?: ResourceLink[];
119
+ /** Infrastructure category for filtering */
120
+ category?: ResourceCategory;
118
121
  /** Whether the agent supports multi-turn sessions (agents only) */
119
122
  sessionCapable?: boolean;
120
123
  /** Whether the resource is local (monorepo) or remote (externally deployed) */
@@ -123,32 +126,27 @@ interface ResourceDefinition {
123
126
  archived?: boolean;
124
127
  }
125
128
 
126
- /**
127
- * Standard Domain Definitions
128
- * Centralized domain constants and definitions for all organization resources.
129
- */
129
+ declare const LinkSchema: z.ZodObject<{
130
+ nodeId: z.ZodString;
131
+ kind: z.ZodEnum<{
132
+ contains: "contains";
133
+ references: "references";
134
+ exposes: "exposes";
135
+ maps_to: "maps_to";
136
+ "operates-on": "operates-on";
137
+ uses: "uses";
138
+ }>;
139
+ }, z.core.$strip>;
140
+ type Link = z.infer<typeof LinkSchema>;
130
141
 
131
- declare const DOMAINS: {
132
- readonly INBOUND_PIPELINE: "inbound-pipeline";
133
- readonly LEAD_GEN_PIPELINE: "lead-gen-pipeline";
134
- readonly SUPPORT: "support";
135
- readonly CLIENT_SUPPORT: "client-support";
136
- readonly DELIVERY: "delivery";
137
- readonly OPERATIONS: "operations";
138
- readonly FINANCE: "finance";
139
- readonly EXECUTIVE: "executive";
140
- readonly INSTANTLY: "instantly";
141
- readonly TESTING: "testing";
142
- readonly INTERNAL: "internal";
143
- readonly INTEGRATION: "integration";
144
- readonly UTILITY: "utility";
145
- readonly DIAGNOSTIC: "diagnostic";
146
- };
147
- /**
148
- * ResourceDomain - Strongly typed domain identifier
149
- * Use this type for all domain references to ensure compile-time validation.
150
- */
151
- type ResourceDomain = (typeof DOMAINS)[keyof typeof DOMAINS];
142
+ declare const ResourceCategorySchema: z.ZodEnum<{
143
+ production: "production";
144
+ diagnostic: "diagnostic";
145
+ internal: "internal";
146
+ testing: "testing";
147
+ }>;
148
+ type ResourceCategory = z.infer<typeof ResourceCategorySchema>;
149
+ type ResourceLink = Link;
152
150
 
153
151
  interface OperationsOverviewProps {
154
152
  /**
@@ -1,36 +1,37 @@
1
- export { Dashboard, OperationsOverview, RecentExecutionsByResource, ResourceOverview, UnresolvedErrorsTeaser } from '../../chunk-PJVG3ISO.js';
1
+ export { Dashboard, OperationsOverview, RecentExecutionsByResource, ResourceOverview, UnresolvedErrorsTeaser } from '../../chunk-LKVBEE63.js';
2
2
  import '../../chunk-LGKLC5MG.js';
3
- import '../../chunk-CTTY6FUT.js';
3
+ import '../../chunk-TSSKOQBX.js';
4
4
  import '../../chunk-M25JL54Z.js';
5
5
  import '../../chunk-E4WQGJNS.js';
6
6
  import '../../chunk-7M2VOCYN.js';
7
- import '../../chunk-FMFX4K6E.js';
7
+ import '../../chunk-B4FHWKEF.js';
8
8
  import '../../chunk-BRXELOHC.js';
9
9
  import '../../chunk-QSTH6T77.js';
10
- import '../../chunk-M7W7CGPL.js';
10
+ import '../../chunk-Z6FAH4XV.js';
11
11
  import '../../chunk-22UVE3RA.js';
12
12
  import '../../chunk-3ZMAGTWF.js';
13
- import '../../chunk-Q4QJOSVS.js';
14
- import '../../chunk-TO7QXDBX.js';
15
- import '../../chunk-Q5HC6ENG.js';
13
+ import '../../chunk-ZBCTB5CA.js';
14
+ import '../../chunk-3HEUGBOT.js';
15
+ import '../../chunk-XOTJNW4Q.js';
16
16
  import '../../chunk-WLOQ4IBG.js';
17
- import '../../chunk-LR5CRY5A.js';
18
- import '../../chunk-OUYH2SBS.js';
19
- import '../../chunk-RX4UWZZR.js';
20
- import '../../chunk-BHR7IV72.js';
17
+ import '../../chunk-AXXTN44Z.js';
18
+ import '../../chunk-LVUCBY7X.js';
19
+ import '../../chunk-LJWV4TWV.js';
20
+ import '../../chunk-TKAYX2SP.js';
21
+ import '../../chunk-XUYBOO32.js';
21
22
  import '../../chunk-SZHARWKU.js';
22
23
  import '../../chunk-3KMDHCAR.js';
23
24
  import '../../chunk-NYBEU5TE.js';
24
- import '../../chunk-R7OJCNL3.js';
25
+ import '../../chunk-T6INEVX6.js';
25
26
  import '../../chunk-2IFYDILW.js';
26
27
  import '../../chunk-Q7DJKLEN.js';
27
- import '../../chunk-7YQKVWSD.js';
28
+ import '../../chunk-SQ5JGELM.js';
28
29
  import '../../chunk-6IA2OMAE.js';
29
30
  import '../../chunk-QJ2KCHKX.js';
30
31
  import '../../chunk-HQ7M6PBW.js';
31
32
  import '../../chunk-DT3QYZVU.js';
32
33
  import '../../chunk-RNP5R5I3.js';
33
- import '../../chunk-OD7GWIZS.js';
34
+ import '../../chunk-SGXXJE52.js';
34
35
  import '../../chunk-KRWALB24.js';
35
36
  import '../../chunk-SLH2QLKV.js';
36
37
  import '../../chunk-DK2HVHCY.js';
@@ -125,83 +125,14 @@
125
125
  }
126
126
  }
127
127
 
128
- /* src/theme/custom.css */
129
- .mantine-Button-root[data-variant=default] {
130
- background-color: var(--color-surface);
131
- backdrop-filter: var(--glass-blur);
132
- -webkit-backdrop-filter: var(--glass-blur);
133
- border: 1px solid var(--color-border);
134
- color: var(--color-text);
135
- }
136
- .mantine-Button-root[data-variant=default]:hover {
137
- background-color: var(--color-surface-hover);
138
- }
139
- .mantine-Accordion-control:hover {
140
- background-color: var(--color-surface-hover);
141
- }
142
- .mantine-Menu-item:hover:not([data-disabled]) {
143
- background-color: var(--color-surface-hover);
144
- }
145
- .mantine-Select-option:hover {
146
- background-color: var(--color-surface-hover) !important;
147
- }
148
- [data-mantine-color-scheme=dark] .mantine-Tabs-root {
149
- --tab-border-color: var(--color-border);
150
- }
151
- .mantine-Tabs-tab:hover {
152
- background-color: var(--color-surface-hover);
153
- }
154
- .mantine-Pagination-control:not([data-active]) {
155
- background: var(--color-surface);
156
- }
157
- ::-webkit-scrollbar {
158
- width: 5px;
159
- height: 5px;
160
- }
161
- ::-webkit-scrollbar-track {
162
- background: transparent;
163
- }
164
- ::-webkit-scrollbar-thumb {
165
- background: color-mix(in srgb, var(--color-text-subtle) 50%, var(--color-border));
166
- border-radius: 4px;
167
- }
168
- ::-webkit-scrollbar-thumb:hover {
169
- background: var(--color-text-subtle);
170
- }
171
- .mantine-Checkbox-input {
172
- background-color: var(--color-surface);
173
- border-color: var(--color-border);
174
- }
175
- .mantine-Checkbox-input:checked {
176
- background-color: var(--color-primary);
177
- border-color: var(--color-primary);
178
- }
179
- .mantine-Switch-root:has(input:not(:checked)) .mantine-Switch-track {
180
- background-color: var(--color-surface-hover);
181
- border-color: var(--color-border);
182
- }
183
- .mantine-Timeline-root {
184
- --tl-color: var(--color-primary);
185
- }
186
- .mantine-Timeline-item {
187
- --item-border-color: var(--color-border);
188
- }
189
- .mantine-Timeline-itemBullet {
190
- border-color: var(--color-border);
191
- }
192
- .mantine-Timeline-itemBullet:where([data-with-child]) {
193
- background-color: var(--color-primary);
194
- border-color: var(--color-primary);
195
- }
196
- .recharts-surface:focus {
197
- outline: none;
198
- }
199
- .hide-scrollbar {
200
- scrollbar-width: none;
201
- -ms-overflow-style: none;
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;
202
133
  }
203
- .hide-scrollbar::-webkit-scrollbar {
204
- display: none;
134
+ .elevasis-graph-root .react-flow__node.selected > * {
135
+ box-shadow: none;
205
136
  }
206
137
 
207
138
  /* src/graph/Graph.module.css */
@@ -309,7 +240,7 @@
309
240
  transparent 1px),
310
241
  radial-gradient(
311
242
  ellipse at 50% 50%,
312
- color-mix(in srgb, var(--color-primary) 5%, transparent) 0%,
243
+ color-mix(in srgb, var(--color-primary) 1.25%, transparent) 0%,
313
244
  transparent 70%);
314
245
  background-color: color-mix(in srgb, var(--color-background) 50%, var(--glass-background));
315
246
  backdrop-filter: var(--glass-blur);
@@ -328,7 +259,7 @@
328
259
  transparent 1px),
329
260
  radial-gradient(
330
261
  ellipse at 50% 50%,
331
- color-mix(in srgb, var(--color-primary) 9%, transparent) 0%,
262
+ color-mix(in srgb, var(--color-primary) 2.25%, transparent) 0%,
332
263
  transparent 70%);
333
264
  background-size:
334
265
  40px 40px,
@@ -578,12 +509,81 @@
578
509
  }
579
510
  }
580
511
 
581
- /* src/graph/Graph.globals.css */
582
- .elevasis-graph-root .react-flow__node.selected,
583
- .elevasis-graph-root .react-flow__node:focus,
584
- .elevasis-graph-root .react-flow__node:focus-visible {
585
- outline: none !important;
512
+ /* src/theme/custom.css */
513
+ .mantine-Button-root[data-variant=default] {
514
+ background-color: var(--color-surface);
515
+ backdrop-filter: var(--glass-blur);
516
+ -webkit-backdrop-filter: var(--glass-blur);
517
+ border: 1px solid var(--color-border);
518
+ color: var(--color-text);
586
519
  }
587
- .elevasis-graph-root .react-flow__node.selected > * {
588
- box-shadow: none;
520
+ .mantine-Button-root[data-variant=default]:hover {
521
+ background-color: var(--color-surface-hover);
522
+ }
523
+ .mantine-Accordion-control:hover {
524
+ background-color: var(--color-surface-hover);
525
+ }
526
+ .mantine-Menu-item:hover:not([data-disabled]) {
527
+ background-color: var(--color-surface-hover);
528
+ }
529
+ .mantine-Select-option:hover {
530
+ background-color: var(--color-surface-hover) !important;
531
+ }
532
+ [data-mantine-color-scheme=dark] .mantine-Tabs-root {
533
+ --tab-border-color: var(--color-border);
534
+ }
535
+ .mantine-Tabs-tab:hover {
536
+ background-color: var(--color-surface-hover);
537
+ }
538
+ .mantine-Pagination-control:not([data-active]) {
539
+ background: var(--color-surface);
540
+ }
541
+ ::-webkit-scrollbar {
542
+ width: 5px;
543
+ height: 5px;
544
+ }
545
+ ::-webkit-scrollbar-track {
546
+ background: transparent;
547
+ }
548
+ ::-webkit-scrollbar-thumb {
549
+ background: color-mix(in srgb, var(--color-text-subtle) 50%, var(--color-border));
550
+ border-radius: 4px;
551
+ }
552
+ ::-webkit-scrollbar-thumb:hover {
553
+ background: var(--color-text-subtle);
554
+ }
555
+ .mantine-Checkbox-input {
556
+ background-color: var(--color-surface);
557
+ border-color: var(--color-border);
558
+ }
559
+ .mantine-Checkbox-input:checked {
560
+ background-color: var(--color-primary);
561
+ border-color: var(--color-primary);
562
+ }
563
+ .mantine-Switch-root:has(input:not(:checked)) .mantine-Switch-track {
564
+ background-color: var(--color-surface-hover);
565
+ border-color: var(--color-border);
566
+ }
567
+ .mantine-Timeline-root {
568
+ --tl-color: var(--color-primary);
569
+ }
570
+ .mantine-Timeline-item {
571
+ --item-border-color: var(--color-border);
572
+ }
573
+ .mantine-Timeline-itemBullet {
574
+ border-color: var(--color-border);
575
+ }
576
+ .mantine-Timeline-itemBullet:where([data-with-child]) {
577
+ background-color: var(--color-primary);
578
+ border-color: var(--color-primary);
579
+ }
580
+ .recharts-surface:focus {
581
+ outline: none;
582
+ }
583
+ .hide-scrollbar {
584
+ scrollbar-width: none;
585
+ -ms-overflow-style: none;
586
+ }
587
+ .hide-scrollbar::-webkit-scrollbar {
588
+ display: none;
589
589
  }
@@ -1672,6 +1672,7 @@ type Database = {
1672
1672
  Row: {
1673
1673
  config: Json;
1674
1674
  created_at: string | null;
1675
+ effective_permissions: string[];
1675
1676
  id: string;
1676
1677
  membership_status: string | null;
1677
1678
  organization_id: string;
@@ -1683,6 +1684,7 @@ type Database = {
1683
1684
  Insert: {
1684
1685
  config?: Json;
1685
1686
  created_at?: string | null;
1687
+ effective_permissions?: string[];
1686
1688
  id?: string;
1687
1689
  membership_status?: string | null;
1688
1690
  organization_id: string;
@@ -1694,6 +1696,7 @@ type Database = {
1694
1696
  Update: {
1695
1697
  config?: Json;
1696
1698
  created_at?: string | null;
1699
+ effective_permissions?: string[];
1697
1700
  id?: string;
1698
1701
  membership_status?: string | null;
1699
1702
  organization_id?: string;
@@ -1719,6 +1722,147 @@ type Database = {
1719
1722
  }
1720
1723
  ];
1721
1724
  };
1725
+ org_rol_assignments: {
1726
+ Row: {
1727
+ granted_at: string;
1728
+ granted_by: string | null;
1729
+ membership_id: string;
1730
+ role_id: string;
1731
+ };
1732
+ Insert: {
1733
+ granted_at?: string;
1734
+ granted_by?: string | null;
1735
+ membership_id: string;
1736
+ role_id: string;
1737
+ };
1738
+ Update: {
1739
+ granted_at?: string;
1740
+ granted_by?: string | null;
1741
+ membership_id?: string;
1742
+ role_id?: string;
1743
+ };
1744
+ Relationships: [
1745
+ {
1746
+ foreignKeyName: "org_rol_assignments_granted_by_fkey";
1747
+ columns: ["granted_by"];
1748
+ isOneToOne: false;
1749
+ referencedRelation: "users";
1750
+ referencedColumns: ["id"];
1751
+ },
1752
+ {
1753
+ foreignKeyName: "org_rol_assignments_membership_id_fkey";
1754
+ columns: ["membership_id"];
1755
+ isOneToOne: false;
1756
+ referencedRelation: "org_memberships";
1757
+ referencedColumns: ["id"];
1758
+ },
1759
+ {
1760
+ foreignKeyName: "org_rol_assignments_role_id_fkey";
1761
+ columns: ["role_id"];
1762
+ isOneToOne: false;
1763
+ referencedRelation: "org_rol_definitions";
1764
+ referencedColumns: ["id"];
1765
+ }
1766
+ ];
1767
+ };
1768
+ org_rol_definitions: {
1769
+ Row: {
1770
+ created_at: string;
1771
+ description: string | null;
1772
+ id: string;
1773
+ is_system: boolean;
1774
+ name: string;
1775
+ organization_id: string | null;
1776
+ slug: string;
1777
+ updated_at: string;
1778
+ };
1779
+ Insert: {
1780
+ created_at?: string;
1781
+ description?: string | null;
1782
+ id?: string;
1783
+ is_system?: boolean;
1784
+ name: string;
1785
+ organization_id?: string | null;
1786
+ slug: string;
1787
+ updated_at?: string;
1788
+ };
1789
+ Update: {
1790
+ created_at?: string;
1791
+ description?: string | null;
1792
+ id?: string;
1793
+ is_system?: boolean;
1794
+ name?: string;
1795
+ organization_id?: string | null;
1796
+ slug?: string;
1797
+ updated_at?: string;
1798
+ };
1799
+ Relationships: [
1800
+ {
1801
+ foreignKeyName: "org_rol_definitions_organization_id_fkey";
1802
+ columns: ["organization_id"];
1803
+ isOneToOne: false;
1804
+ referencedRelation: "organizations";
1805
+ referencedColumns: ["id"];
1806
+ }
1807
+ ];
1808
+ };
1809
+ org_rol_grants: {
1810
+ Row: {
1811
+ granted_at: string;
1812
+ permission_key: string;
1813
+ role_id: string;
1814
+ };
1815
+ Insert: {
1816
+ granted_at?: string;
1817
+ permission_key: string;
1818
+ role_id: string;
1819
+ };
1820
+ Update: {
1821
+ granted_at?: string;
1822
+ permission_key?: string;
1823
+ role_id?: string;
1824
+ };
1825
+ Relationships: [
1826
+ {
1827
+ foreignKeyName: "org_rol_grants_permission_key_fkey";
1828
+ columns: ["permission_key"];
1829
+ isOneToOne: false;
1830
+ referencedRelation: "org_rol_permissions";
1831
+ referencedColumns: ["key"];
1832
+ },
1833
+ {
1834
+ foreignKeyName: "org_rol_grants_role_id_fkey";
1835
+ columns: ["role_id"];
1836
+ isOneToOne: false;
1837
+ referencedRelation: "org_rol_definitions";
1838
+ referencedColumns: ["id"];
1839
+ }
1840
+ ];
1841
+ };
1842
+ org_rol_permissions: {
1843
+ Row: {
1844
+ created_at: string;
1845
+ description: string;
1846
+ is_org_grantable: boolean;
1847
+ key: string;
1848
+ updated_at: string;
1849
+ };
1850
+ Insert: {
1851
+ created_at?: string;
1852
+ description: string;
1853
+ is_org_grantable?: boolean;
1854
+ key: string;
1855
+ updated_at?: string;
1856
+ };
1857
+ Update: {
1858
+ created_at?: string;
1859
+ description?: string;
1860
+ is_org_grantable?: boolean;
1861
+ key?: string;
1862
+ updated_at?: string;
1863
+ };
1864
+ Relationships: [];
1865
+ };
1722
1866
  organizations: {
1723
1867
  Row: {
1724
1868
  config: Json;
@@ -2476,7 +2620,8 @@ type Database = {
2476
2620
  created_at: string;
2477
2621
  description: string | null;
2478
2622
  id: string;
2479
- key: string;
2623
+ key_hash: string;
2624
+ key_prefix: string | null;
2480
2625
  last_triggered_at: string | null;
2481
2626
  name: string;
2482
2627
  organization_id: string;
@@ -2489,7 +2634,8 @@ type Database = {
2489
2634
  created_at?: string;
2490
2635
  description?: string | null;
2491
2636
  id?: string;
2492
- key: string;
2637
+ key_hash: string;
2638
+ key_prefix?: string | null;
2493
2639
  last_triggered_at?: string | null;
2494
2640
  name: string;
2495
2641
  organization_id: string;
@@ -2502,7 +2648,8 @@ type Database = {
2502
2648
  created_at?: string;
2503
2649
  description?: string | null;
2504
2650
  id?: string;
2505
- key?: string;
2651
+ key_hash?: string;
2652
+ key_prefix?: string | null;
2506
2653
  last_triggered_at?: string | null;
2507
2654
  name?: string;
2508
2655
  organization_id?: string;
@@ -2548,6 +2695,13 @@ type Database = {
2548
2695
  Args: never;
2549
2696
  Returns: string;
2550
2697
  };
2698
+ can_assign_role_in_org: {
2699
+ Args: {
2700
+ p_role_id: string;
2701
+ p_target_membership_id: string;
2702
+ };
2703
+ Returns: boolean;
2704
+ };
2551
2705
  current_user_is_platform_admin: {
2552
2706
  Args: never;
2553
2707
  Returns: boolean;
@@ -2577,6 +2731,10 @@ type Database = {
2577
2731
  user_id: string;
2578
2732
  }[];
2579
2733
  };
2734
+ get_platform_credential_kek: {
2735
+ Args: never;
2736
+ Returns: string;
2737
+ };
2580
2738
  get_storage_org_id: {
2581
2739
  Args: {
2582
2740
  file_path: string;
@@ -2587,6 +2745,13 @@ type Database = {
2587
2745
  Args: never;
2588
2746
  Returns: string;
2589
2747
  };
2748
+ has_org_permission: {
2749
+ Args: {
2750
+ org_id: string;
2751
+ perm_key: string;
2752
+ };
2753
+ Returns: boolean;
2754
+ };
2590
2755
  is_org_admin: {
2591
2756
  Args: {
2592
2757
  org_id: string;
@@ -2619,6 +2784,22 @@ type Database = {
2619
2784
  Args: never;
2620
2785
  Returns: Json;
2621
2786
  };
2787
+ recompute_all_memberships: {
2788
+ Args: never;
2789
+ Returns: undefined;
2790
+ };
2791
+ sync_all_memberships_with_role: {
2792
+ Args: {
2793
+ p_role_id: string;
2794
+ };
2795
+ Returns: undefined;
2796
+ };
2797
+ sync_one_membership: {
2798
+ Args: {
2799
+ p_membership_id: string;
2800
+ };
2801
+ Returns: undefined;
2802
+ };
2622
2803
  upsert_user_profile: {
2623
2804
  Args: never;
2624
2805
  Returns: {
@@ -2750,50 +2931,32 @@ interface ProjectsSidebarMiddleProps {
2750
2931
  }
2751
2932
  declare const ProjectsSidebarMiddle: ({ currentPath, onNavigate, projectItems, workItems, communicationItems }?: ProjectsSidebarMiddleProps) => react_jsx_runtime.JSX.Element;
2752
2933
 
2753
- interface FeatureNavLink {
2754
- label: string;
2755
- link: string;
2756
- featureKey?: string;
2757
- onClick?: () => void;
2758
- links?: FeatureNavLink[];
2759
- }
2760
- interface FeatureNavEntry {
2761
- label: string;
2762
- icon: ComponentType;
2763
- link?: string;
2764
- featureKey?: string;
2765
- requiresAdmin?: boolean;
2766
- dataOnboardingTourId?: string;
2767
- links?: FeatureNavLink[];
2768
- }
2769
2934
  type FeatureSidebarComponent = ComponentType;
2935
+ type FeatureIconComponent = ComponentType<{
2936
+ size?: number;
2937
+ stroke?: number;
2938
+ }>;
2939
+ type FeatureSidebarWidthResolver = number | ((context: {
2940
+ currentPath: string;
2941
+ }) => number);
2770
2942
  interface FeatureModule {
2771
- /** Unique stable identifier for this feature (e.g. `'crm'`, `'projects'`). */
2943
+ /** Unique stable identifier for this feature module. */
2772
2944
  key: string;
2773
- /** Feature ID used for access-flag gating — must match the `id` of a feature in the organization model. */
2945
+ /** Organization Model feature id this module presents. */
2774
2946
  featureId: string;
2775
- /**
2776
- * Capability identifiers contributed by this feature.
2777
- * Merged into `ResolvedFeatureSemantics.capabilityIds` at resolution time.
2778
- * Not queried at runtime — kept for semantic graph completeness so that
2779
- * capability membership is fully represented in the resolved model even when
2780
- * a surface does not declare it directly.
2781
- */
2947
+ /** Capability identifiers contributed by this feature module. */
2782
2948
  capabilityIds?: string[];
2783
- /** Top-level navigation entry rendered in the app shell when this feature is enabled. */
2784
- navEntry?: FeatureNavEntry;
2785
- /** Sidebar component rendered when a matching subshell route is active. */
2949
+ /** Icon used when this feature node appears in shell navigation. */
2950
+ icon?: FeatureIconComponent;
2951
+ /** Sidebar component rendered when this feature's subtree route is active. */
2786
2952
  sidebar?: FeatureSidebarComponent;
2787
- /** Route path prefixes that activate this feature's sidebar and subshell context. */
2788
- subshellRoutes?: string[];
2789
- /**
2790
- * Operations-only bridge surface connecting this feature to the organization graph.
2791
- * Ignored by all other features. Only one manifest in the registry should set this.
2792
- */
2953
+ /** Optional shell sidebar width override. Defaults to 250px. */
2954
+ sidebarWidth?: FeatureSidebarWidthResolver;
2955
+ /** Operations-only bridge connecting this feature to the organization graph node. */
2793
2956
  organizationGraph?: OrganizationGraphFeatureBridge;
2794
2957
  }
2795
2958
  interface OrganizationGraphFeatureBridge {
2796
- surfaceId: string;
2959
+ featureId: string;
2797
2960
  }
2798
2961
 
2799
2962
  declare const deliveryManifest: FeatureModule;