@stratum-hq/react 0.1.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 (113) hide show
  1. package/dist/components/ConfigEditor.d.ts +5 -0
  2. package/dist/components/ConfigEditor.d.ts.map +1 -0
  3. package/dist/components/ConfigEditor.js +71 -0
  4. package/dist/components/ConfigEditor.js.map +1 -0
  5. package/dist/components/ConfigEditor.stories.d.ts +35 -0
  6. package/dist/components/ConfigEditor.stories.d.ts.map +1 -0
  7. package/dist/components/ConfigEditor.stories.js +73 -0
  8. package/dist/components/ConfigEditor.stories.js.map +1 -0
  9. package/dist/components/PermissionEditor.d.ts +5 -0
  10. package/dist/components/PermissionEditor.d.ts.map +1 -0
  11. package/dist/components/PermissionEditor.js +46 -0
  12. package/dist/components/PermissionEditor.js.map +1 -0
  13. package/dist/components/PermissionEditor.stories.d.ts +34 -0
  14. package/dist/components/PermissionEditor.stories.d.ts.map +1 -0
  15. package/dist/components/PermissionEditor.stories.js +90 -0
  16. package/dist/components/PermissionEditor.stories.js.map +1 -0
  17. package/dist/components/Skeleton.d.ts +14 -0
  18. package/dist/components/Skeleton.d.ts.map +1 -0
  19. package/dist/components/Skeleton.js +25 -0
  20. package/dist/components/Skeleton.js.map +1 -0
  21. package/dist/components/Skeleton.stories.d.ts +46 -0
  22. package/dist/components/Skeleton.stories.d.ts.map +1 -0
  23. package/dist/components/Skeleton.stories.js +125 -0
  24. package/dist/components/Skeleton.stories.js.map +1 -0
  25. package/dist/components/TableSkeleton.d.ts +10 -0
  26. package/dist/components/TableSkeleton.d.ts.map +1 -0
  27. package/dist/components/TableSkeleton.js +6 -0
  28. package/dist/components/TableSkeleton.js.map +1 -0
  29. package/dist/components/TenantSwitcher.d.ts +7 -0
  30. package/dist/components/TenantSwitcher.d.ts.map +1 -0
  31. package/dist/components/TenantSwitcher.js +40 -0
  32. package/dist/components/TenantSwitcher.js.map +1 -0
  33. package/dist/components/TenantSwitcher.stories.d.ts +30 -0
  34. package/dist/components/TenantSwitcher.stories.d.ts.map +1 -0
  35. package/dist/components/TenantSwitcher.stories.js +76 -0
  36. package/dist/components/TenantSwitcher.stories.js.map +1 -0
  37. package/dist/components/TenantTree.d.ts +7 -0
  38. package/dist/components/TenantTree.d.ts.map +1 -0
  39. package/dist/components/TenantTree.js +19 -0
  40. package/dist/components/TenantTree.js.map +1 -0
  41. package/dist/components/TenantTree.stories.d.ts +28 -0
  42. package/dist/components/TenantTree.stories.d.ts.map +1 -0
  43. package/dist/components/TenantTree.stories.js +71 -0
  44. package/dist/components/TenantTree.stories.js.map +1 -0
  45. package/dist/components/Toast.d.ts +18 -0
  46. package/dist/components/Toast.d.ts.map +1 -0
  47. package/dist/components/Toast.js +22 -0
  48. package/dist/components/Toast.js.map +1 -0
  49. package/dist/components/Toast.stories.d.ts +36 -0
  50. package/dist/components/Toast.stories.d.ts.map +1 -0
  51. package/dist/components/Toast.stories.js +105 -0
  52. package/dist/components/Toast.stories.js.map +1 -0
  53. package/dist/components/ToastContainer.d.ts +11 -0
  54. package/dist/components/ToastContainer.d.ts.map +1 -0
  55. package/dist/components/ToastContainer.js +9 -0
  56. package/dist/components/ToastContainer.js.map +1 -0
  57. package/dist/components/headless/ConfigEditor.d.ts +15 -0
  58. package/dist/components/headless/ConfigEditor.d.ts.map +1 -0
  59. package/dist/components/headless/ConfigEditor.js +7 -0
  60. package/dist/components/headless/ConfigEditor.js.map +1 -0
  61. package/dist/components/headless/PermissionEditor.d.ts +15 -0
  62. package/dist/components/headless/PermissionEditor.d.ts.map +1 -0
  63. package/dist/components/headless/PermissionEditor.js +7 -0
  64. package/dist/components/headless/PermissionEditor.js.map +1 -0
  65. package/dist/components/headless/TenantSwitcher.d.ts +39 -0
  66. package/dist/components/headless/TenantSwitcher.d.ts.map +1 -0
  67. package/dist/components/headless/TenantSwitcher.js +61 -0
  68. package/dist/components/headless/TenantSwitcher.js.map +1 -0
  69. package/dist/components/headless/TenantTree.d.ts +21 -0
  70. package/dist/components/headless/TenantTree.d.ts.map +1 -0
  71. package/dist/components/headless/TenantTree.js +22 -0
  72. package/dist/components/headless/TenantTree.js.map +1 -0
  73. package/dist/components/storybook-helpers.d.ts +96 -0
  74. package/dist/components/storybook-helpers.d.ts.map +1 -0
  75. package/dist/components/storybook-helpers.js +473 -0
  76. package/dist/components/storybook-helpers.js.map +1 -0
  77. package/dist/hooks/use-config.d.ts +16 -0
  78. package/dist/hooks/use-config.d.ts.map +1 -0
  79. package/dist/hooks/use-config.js +54 -0
  80. package/dist/hooks/use-config.js.map +1 -0
  81. package/dist/hooks/use-messages.d.ts +11 -0
  82. package/dist/hooks/use-messages.d.ts.map +1 -0
  83. package/dist/hooks/use-messages.js +23 -0
  84. package/dist/hooks/use-messages.js.map +1 -0
  85. package/dist/hooks/use-permissions.d.ts +10 -0
  86. package/dist/hooks/use-permissions.d.ts.map +1 -0
  87. package/dist/hooks/use-permissions.js +48 -0
  88. package/dist/hooks/use-permissions.js.map +1 -0
  89. package/dist/hooks/use-tenant-tree.d.ts +13 -0
  90. package/dist/hooks/use-tenant-tree.d.ts.map +1 -0
  91. package/dist/hooks/use-tenant-tree.js +65 -0
  92. package/dist/hooks/use-tenant-tree.js.map +1 -0
  93. package/dist/hooks/use-tenant.d.ts +23 -0
  94. package/dist/hooks/use-tenant.d.ts.map +1 -0
  95. package/dist/hooks/use-tenant.js +6 -0
  96. package/dist/hooks/use-tenant.js.map +1 -0
  97. package/dist/hooks/use-toast.d.ts +14 -0
  98. package/dist/hooks/use-toast.d.ts.map +1 -0
  99. package/dist/hooks/use-toast.js +46 -0
  100. package/dist/hooks/use-toast.js.map +1 -0
  101. package/dist/i18n.d.ts +57 -0
  102. package/dist/i18n.d.ts.map +1 -0
  103. package/dist/i18n.js +59 -0
  104. package/dist/i18n.js.map +1 -0
  105. package/dist/index.d.ts +38 -0
  106. package/dist/index.d.ts.map +1 -0
  107. package/dist/index.js +26 -0
  108. package/dist/index.js.map +1 -0
  109. package/dist/provider.d.ts +30 -0
  110. package/dist/provider.d.ts.map +1 -0
  111. package/dist/provider.js +82 -0
  112. package/dist/provider.js.map +1 -0
  113. package/package.json +53 -0
@@ -0,0 +1,473 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * Shared mock data and decorator for Storybook stories.
4
+ *
5
+ * All styled components depend on StratumProvider context via useStratum().
6
+ * This module provides a MockStratumProvider that injects controlled data
7
+ * into the real StratumContext so all hooks work without a live API.
8
+ */
9
+ import { useState, useCallback } from "react";
10
+ import { StratumContext } from "../provider.js";
11
+ // ---------------------------------------------------------------------------
12
+ // Mock Tenant Data
13
+ // ---------------------------------------------------------------------------
14
+ const now = new Date().toISOString();
15
+ export const mockTenants = [
16
+ {
17
+ id: "00000000-0000-0000-0000-000000000001",
18
+ parent_id: null,
19
+ ancestry_path: "/",
20
+ depth: 0,
21
+ name: "Acme Corp",
22
+ slug: "acme_corp",
23
+ config: {},
24
+ metadata: {},
25
+ isolation_strategy: "SHARED_RLS",
26
+ status: "active",
27
+ deleted_at: null,
28
+ created_at: now,
29
+ updated_at: now,
30
+ },
31
+ {
32
+ id: "00000000-0000-0000-0000-000000000002",
33
+ parent_id: "00000000-0000-0000-0000-000000000001",
34
+ ancestry_path: "/acme_corp",
35
+ depth: 1,
36
+ name: "Acme MSSP",
37
+ slug: "acme_mssp",
38
+ config: {},
39
+ metadata: {},
40
+ isolation_strategy: "SHARED_RLS",
41
+ status: "active",
42
+ deleted_at: null,
43
+ created_at: now,
44
+ updated_at: now,
45
+ },
46
+ {
47
+ id: "00000000-0000-0000-0000-000000000003",
48
+ parent_id: "00000000-0000-0000-0000-000000000002",
49
+ ancestry_path: "/acme_corp/acme_mssp",
50
+ depth: 2,
51
+ name: "CyberShield MSP",
52
+ slug: "cybershield_msp",
53
+ config: {},
54
+ metadata: {},
55
+ isolation_strategy: "SHARED_RLS",
56
+ status: "active",
57
+ deleted_at: null,
58
+ created_at: now,
59
+ updated_at: now,
60
+ },
61
+ {
62
+ id: "00000000-0000-0000-0000-000000000004",
63
+ parent_id: "00000000-0000-0000-0000-000000000003",
64
+ ancestry_path: "/acme_corp/acme_mssp/cybershield_msp",
65
+ depth: 3,
66
+ name: "Globex Industries",
67
+ slug: "globex_industries",
68
+ config: {},
69
+ metadata: {},
70
+ isolation_strategy: "SHARED_RLS",
71
+ status: "active",
72
+ deleted_at: null,
73
+ created_at: now,
74
+ updated_at: now,
75
+ },
76
+ {
77
+ id: "00000000-0000-0000-0000-000000000005",
78
+ parent_id: "00000000-0000-0000-0000-000000000002",
79
+ ancestry_path: "/acme_corp/acme_mssp",
80
+ depth: 2,
81
+ name: "Northwind Security",
82
+ slug: "northwind_security",
83
+ config: {},
84
+ metadata: {},
85
+ isolation_strategy: "SCHEMA_PER_TENANT",
86
+ status: "active",
87
+ deleted_at: null,
88
+ created_at: now,
89
+ updated_at: now,
90
+ },
91
+ {
92
+ id: "00000000-0000-0000-0000-000000000006",
93
+ parent_id: "00000000-0000-0000-0000-000000000001",
94
+ ancestry_path: "/acme_corp",
95
+ depth: 1,
96
+ name: "Acme Direct",
97
+ slug: "acme_direct",
98
+ config: {},
99
+ metadata: {},
100
+ isolation_strategy: "SHARED_RLS",
101
+ status: "active",
102
+ deleted_at: null,
103
+ created_at: now,
104
+ updated_at: now,
105
+ },
106
+ {
107
+ id: "00000000-0000-0000-0000-000000000007",
108
+ parent_id: "00000000-0000-0000-0000-000000000006",
109
+ ancestry_path: "/acme_corp/acme_direct",
110
+ depth: 2,
111
+ name: "Wayne Enterprises",
112
+ slug: "wayne_enterprises",
113
+ config: {},
114
+ metadata: {},
115
+ isolation_strategy: "DB_PER_TENANT",
116
+ status: "active",
117
+ deleted_at: null,
118
+ created_at: now,
119
+ updated_at: now,
120
+ },
121
+ {
122
+ id: "00000000-0000-0000-0000-000000000008",
123
+ parent_id: "00000000-0000-0000-0000-000000000003",
124
+ ancestry_path: "/acme_corp/acme_mssp/cybershield_msp",
125
+ depth: 3,
126
+ name: "Initech LLC",
127
+ slug: "initech_llc",
128
+ config: {},
129
+ metadata: {},
130
+ isolation_strategy: "SHARED_RLS",
131
+ status: "archived",
132
+ deleted_at: null,
133
+ created_at: now,
134
+ updated_at: now,
135
+ },
136
+ ];
137
+ /** Generate a large list of tenants for stress-testing. */
138
+ export function generateManyTenants(count) {
139
+ const base = [...mockTenants];
140
+ for (let i = 9; i <= count; i++) {
141
+ const parentIdx = Math.floor(Math.random() * Math.min(i - 1, 6)) + 1;
142
+ const parentId = `00000000-0000-0000-0000-${String(parentIdx).padStart(12, "0")}`;
143
+ base.push({
144
+ id: `00000000-0000-0000-0000-${String(i).padStart(12, "0")}`,
145
+ parent_id: parentId,
146
+ ancestry_path: "/generated",
147
+ depth: 2,
148
+ name: `Tenant ${i}`,
149
+ slug: `tenant_${i}`,
150
+ config: {},
151
+ metadata: {},
152
+ isolation_strategy: "SHARED_RLS",
153
+ status: "active",
154
+ deleted_at: null,
155
+ created_at: now,
156
+ updated_at: now,
157
+ });
158
+ }
159
+ return base;
160
+ }
161
+ // Deep hierarchy (5 levels)
162
+ export const deepHierarchyTenants = [
163
+ {
164
+ id: "d0000000-0000-0000-0000-000000000001",
165
+ parent_id: null,
166
+ ancestry_path: "/",
167
+ depth: 0,
168
+ name: "Global Platform",
169
+ slug: "global_platform",
170
+ config: {},
171
+ metadata: {},
172
+ isolation_strategy: "SHARED_RLS",
173
+ status: "active",
174
+ deleted_at: null,
175
+ created_at: now,
176
+ updated_at: now,
177
+ },
178
+ {
179
+ id: "d0000000-0000-0000-0000-000000000002",
180
+ parent_id: "d0000000-0000-0000-0000-000000000001",
181
+ ancestry_path: "/global_platform",
182
+ depth: 1,
183
+ name: "North America Region",
184
+ slug: "na_region",
185
+ config: {},
186
+ metadata: {},
187
+ isolation_strategy: "SHARED_RLS",
188
+ status: "active",
189
+ deleted_at: null,
190
+ created_at: now,
191
+ updated_at: now,
192
+ },
193
+ {
194
+ id: "d0000000-0000-0000-0000-000000000003",
195
+ parent_id: "d0000000-0000-0000-0000-000000000002",
196
+ ancestry_path: "/global_platform/na_region",
197
+ depth: 2,
198
+ name: "SecureNet MSSP",
199
+ slug: "securenet_mssp",
200
+ config: {},
201
+ metadata: {},
202
+ isolation_strategy: "SHARED_RLS",
203
+ status: "active",
204
+ deleted_at: null,
205
+ created_at: now,
206
+ updated_at: now,
207
+ },
208
+ {
209
+ id: "d0000000-0000-0000-0000-000000000004",
210
+ parent_id: "d0000000-0000-0000-0000-000000000003",
211
+ ancestry_path: "/global_platform/na_region/securenet_mssp",
212
+ depth: 3,
213
+ name: "Metro MSP Group",
214
+ slug: "metro_msp",
215
+ config: {},
216
+ metadata: {},
217
+ isolation_strategy: "SHARED_RLS",
218
+ status: "active",
219
+ deleted_at: null,
220
+ created_at: now,
221
+ updated_at: now,
222
+ },
223
+ {
224
+ id: "d0000000-0000-0000-0000-000000000005",
225
+ parent_id: "d0000000-0000-0000-0000-000000000004",
226
+ ancestry_path: "/global_platform/na_region/securenet_mssp/metro_msp",
227
+ depth: 4,
228
+ name: "Downtown Office Client",
229
+ slug: "downtown_client",
230
+ config: {},
231
+ metadata: {},
232
+ isolation_strategy: "SHARED_RLS",
233
+ status: "active",
234
+ deleted_at: null,
235
+ created_at: now,
236
+ updated_at: now,
237
+ },
238
+ ];
239
+ // Single root node
240
+ export const singleRootTenant = [
241
+ {
242
+ id: "s0000000-0000-0000-0000-000000000001",
243
+ parent_id: null,
244
+ ancestry_path: "/",
245
+ depth: 0,
246
+ name: "Standalone Tenant",
247
+ slug: "standalone",
248
+ config: {},
249
+ metadata: {},
250
+ isolation_strategy: "DB_PER_TENANT",
251
+ status: "active",
252
+ deleted_at: null,
253
+ created_at: now,
254
+ updated_at: now,
255
+ },
256
+ ];
257
+ // ---------------------------------------------------------------------------
258
+ // Mock Config Data
259
+ // ---------------------------------------------------------------------------
260
+ export const mockConfigEntries = [
261
+ {
262
+ key: "app.theme",
263
+ value: "dark",
264
+ source_tenant_id: "00000000-0000-0000-0000-000000000001",
265
+ inherited: true,
266
+ locked: false,
267
+ },
268
+ {
269
+ key: "feature.sso_enabled",
270
+ value: true,
271
+ source_tenant_id: "00000000-0000-0000-0000-000000000001",
272
+ inherited: true,
273
+ locked: true,
274
+ },
275
+ {
276
+ key: "billing.plan",
277
+ value: "enterprise",
278
+ source_tenant_id: "00000000-0000-0000-0000-000000000003",
279
+ inherited: false,
280
+ locked: false,
281
+ },
282
+ {
283
+ key: "security.mfa_required",
284
+ value: true,
285
+ source_tenant_id: "00000000-0000-0000-0000-000000000001",
286
+ inherited: true,
287
+ locked: true,
288
+ },
289
+ {
290
+ key: "notifications.email_digest",
291
+ value: "weekly",
292
+ source_tenant_id: "00000000-0000-0000-0000-000000000003",
293
+ inherited: false,
294
+ locked: false,
295
+ },
296
+ {
297
+ key: "api.rate_limit",
298
+ value: 1000,
299
+ source_tenant_id: "00000000-0000-0000-0000-000000000002",
300
+ inherited: true,
301
+ locked: false,
302
+ },
303
+ {
304
+ key: "storage.max_upload_mb",
305
+ value: 50,
306
+ source_tenant_id: "00000000-0000-0000-0000-000000000003",
307
+ inherited: false,
308
+ locked: false,
309
+ },
310
+ ];
311
+ export const mockSensitiveConfigEntries = [
312
+ ...mockConfigEntries,
313
+ {
314
+ key: "integrations.slack_webhook_url",
315
+ value: "https://hooks.slack.com/services/T00000/B00000/XXXX",
316
+ source_tenant_id: "00000000-0000-0000-0000-000000000003",
317
+ inherited: false,
318
+ locked: false,
319
+ },
320
+ {
321
+ key: "integrations.stripe_secret_key",
322
+ value: "sk_live_51Abc...redacted",
323
+ source_tenant_id: "00000000-0000-0000-0000-000000000001",
324
+ inherited: true,
325
+ locked: true,
326
+ },
327
+ ];
328
+ export const mockLockedConfigEntries = mockConfigEntries.map((entry) => ({
329
+ ...entry,
330
+ locked: true,
331
+ inherited: true,
332
+ source_tenant_id: "00000000-0000-0000-0000-000000000001",
333
+ }));
334
+ // ---------------------------------------------------------------------------
335
+ // Mock Permission Data
336
+ // ---------------------------------------------------------------------------
337
+ export const mockPermissions = [
338
+ {
339
+ policy_id: "pol-001",
340
+ key: "tenant.manage",
341
+ value: true,
342
+ mode: "LOCKED",
343
+ source_tenant_id: "00000000-0000-0000-0000-000000000001",
344
+ locked: true,
345
+ delegated: false,
346
+ },
347
+ {
348
+ policy_id: "pol-002",
349
+ key: "config.write",
350
+ value: true,
351
+ mode: "INHERITED",
352
+ source_tenant_id: "00000000-0000-0000-0000-000000000002",
353
+ locked: false,
354
+ delegated: false,
355
+ },
356
+ {
357
+ policy_id: "pol-003",
358
+ key: "billing.view",
359
+ value: true,
360
+ mode: "DELEGATED",
361
+ source_tenant_id: "00000000-0000-0000-0000-000000000003",
362
+ locked: false,
363
+ delegated: true,
364
+ },
365
+ {
366
+ policy_id: "pol-004",
367
+ key: "users.invite",
368
+ value: true,
369
+ mode: "INHERITED",
370
+ source_tenant_id: "00000000-0000-0000-0000-000000000001",
371
+ locked: false,
372
+ delegated: false,
373
+ },
374
+ {
375
+ policy_id: "pol-005",
376
+ key: "audit.read",
377
+ value: true,
378
+ mode: "LOCKED",
379
+ source_tenant_id: "00000000-0000-0000-0000-000000000001",
380
+ locked: true,
381
+ delegated: false,
382
+ },
383
+ {
384
+ policy_id: "pol-006",
385
+ key: "webhooks.manage",
386
+ value: true,
387
+ mode: "DELEGATED",
388
+ source_tenant_id: "00000000-0000-0000-0000-000000000003",
389
+ locked: false,
390
+ delegated: true,
391
+ },
392
+ ];
393
+ /**
394
+ * Wraps children with the real StratumContext populated by mock data.
395
+ * All real hooks (useTenant, useTenantTree, useConfig, usePermissions)
396
+ * will read from this context and receive controlled responses via apiCall.
397
+ */
398
+ export function MockStratumProvider({ tenants = mockTenants, configEntries = mockConfigEntries, permissions = mockPermissions, initialTenantId, loading: forceLoading = false, children, }) {
399
+ const [currentTenant, setCurrentTenant] = useState(initialTenantId
400
+ ? tenants.find((t) => t.id === initialTenantId) ?? null
401
+ : tenants[0] ?? null);
402
+ const [loading, setLoading] = useState(forceLoading);
403
+ const switchTenant = useCallback(async (tenantId) => {
404
+ setLoading(true);
405
+ await new Promise((resolve) => setTimeout(resolve, 200));
406
+ const found = tenants.find((t) => t.id === tenantId);
407
+ if (found)
408
+ setCurrentTenant(found);
409
+ setLoading(false);
410
+ }, [tenants]);
411
+ const apiCall = useCallback(async (path, _options) => {
412
+ await new Promise((resolve) => setTimeout(resolve, 50));
413
+ // GET /api/v1/tenants
414
+ if (path === "/api/v1/tenants") {
415
+ return { data: tenants };
416
+ }
417
+ // GET /api/v1/tenants/:id/descendants
418
+ if (path.match(/\/api\/v1\/tenants\/[^/]+\/descendants/)) {
419
+ return tenants;
420
+ }
421
+ // GET /api/v1/tenants/:id/config (not config/:key)
422
+ if (path.match(/\/api\/v1\/tenants\/[^/]+\/config$/)) {
423
+ const configMap = {};
424
+ for (const entry of configEntries) {
425
+ configMap[entry.key] = entry;
426
+ }
427
+ return configMap;
428
+ }
429
+ // PUT/DELETE config operations
430
+ if (path.match(/\/api\/v1\/tenants\/[^/]+\/config\//)) {
431
+ return {};
432
+ }
433
+ // GET /api/v1/tenants/:id/permissions
434
+ if (path.match(/\/api\/v1\/tenants\/[^/]+\/permissions$/)) {
435
+ const permMap = {};
436
+ for (const perm of permissions) {
437
+ permMap[perm.key] = perm;
438
+ }
439
+ return permMap;
440
+ }
441
+ // POST/DELETE permission operations
442
+ if (path.match(/\/api\/v1\/tenants\/[^/]+\/permissions\//)) {
443
+ return {};
444
+ }
445
+ // GET /api/v1/tenants/:id
446
+ if (path.match(/\/api\/v1\/tenants\/[^/]+$/)) {
447
+ const id = path.split("/").pop();
448
+ const tenant = tenants.find((t) => t.id === id);
449
+ if (tenant)
450
+ return tenant;
451
+ throw new Error("Tenant not found");
452
+ }
453
+ return {};
454
+ }, [tenants, configEntries, permissions]);
455
+ const noopToast = {
456
+ success: (_msg) => "",
457
+ error: (_msg) => "",
458
+ warning: (_msg) => "",
459
+ info: (_msg) => "",
460
+ };
461
+ const value = {
462
+ currentTenant,
463
+ tenantContext: null,
464
+ loading,
465
+ error: null,
466
+ switchTenant,
467
+ apiCall,
468
+ messages: {},
469
+ toast: noopToast,
470
+ };
471
+ return (_jsx(StratumContext.Provider, { value: value, children: children }));
472
+ }
473
+ //# sourceMappingURL=storybook-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storybook-helpers.js","sourceRoot":"","sources":["../../src/components/storybook-helpers.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export interface ConfigWithInheritance {
2
+ key: string;
3
+ value: unknown;
4
+ source_tenant_id: string;
5
+ inherited: boolean;
6
+ locked: boolean;
7
+ }
8
+ export declare function useConfig(): {
9
+ config: ConfigWithInheritance[];
10
+ loading: boolean;
11
+ error: Error | null;
12
+ refresh: () => Promise<void>;
13
+ setConfigValue: (key: string, value: unknown, locked?: boolean) => Promise<void>;
14
+ deleteConfigValue: (key: string) => Promise<void>;
15
+ };
16
+ //# sourceMappingURL=use-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-config.d.ts","sourceRoot":"","sources":["../../src/hooks/use-config.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,SAAS;;;;;0BAoCT,MAAM,SAAS,OAAO;6BAYtB,MAAM;EAWrB"}
@@ -0,0 +1,54 @@
1
+ import { useState, useEffect, useCallback } from "react";
2
+ import { useStratum } from "../provider.js";
3
+ import { useTenant } from "./use-tenant.js";
4
+ export function useConfig() {
5
+ const { apiCall } = useStratum();
6
+ const { tenant } = useTenant();
7
+ const [config, setConfig] = useState([]);
8
+ const [loading, setLoading] = useState(false);
9
+ const [error, setError] = useState(null);
10
+ const fetchConfig = useCallback(async () => {
11
+ if (!tenant)
12
+ return;
13
+ setLoading(true);
14
+ setError(null);
15
+ try {
16
+ const result = await apiCall(`/api/v1/tenants/${tenant.id}/config`);
17
+ setConfig(Object.entries(result).map(([key, entry]) => ({
18
+ key,
19
+ value: entry.value,
20
+ source_tenant_id: entry.source_tenant_id,
21
+ inherited: entry.inherited,
22
+ locked: entry.locked,
23
+ })));
24
+ }
25
+ catch (err) {
26
+ setError(err instanceof Error ? err : new Error(String(err)));
27
+ }
28
+ finally {
29
+ setLoading(false);
30
+ }
31
+ }, [apiCall, tenant]);
32
+ useEffect(() => {
33
+ fetchConfig();
34
+ }, [fetchConfig]);
35
+ const setConfigValue = useCallback(async (key, value, locked = false) => {
36
+ if (!tenant)
37
+ return;
38
+ await apiCall(`/api/v1/tenants/${tenant.id}/config/${key}`, {
39
+ method: "PUT",
40
+ body: JSON.stringify({ value, locked }),
41
+ });
42
+ await fetchConfig();
43
+ }, [apiCall, tenant, fetchConfig]);
44
+ const deleteConfigValue = useCallback(async (key) => {
45
+ if (!tenant)
46
+ return;
47
+ await apiCall(`/api/v1/tenants/${tenant.id}/config/${key}`, {
48
+ method: "DELETE",
49
+ });
50
+ await fetchConfig();
51
+ }, [apiCall, tenant, fetchConfig]);
52
+ return { config, loading, error, refresh: fetchConfig, setConfigValue, deleteConfigValue };
53
+ }
54
+ //# sourceMappingURL=use-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-config.js","sourceRoot":"","sources":["../../src/hooks/use-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { type MessageKey } from "../i18n.js";
2
+ /**
3
+ * Returns a `t()` function that resolves message keys to localised strings.
4
+ *
5
+ * User-supplied messages (via `StratumProvider`) override `defaultMessages`.
6
+ * Placeholders like `{param}` are replaced when a `params` record is provided.
7
+ */
8
+ export declare function useMessages(): {
9
+ t: (key: MessageKey, params?: Record<string, string>) => string;
10
+ };
11
+ //# sourceMappingURL=use-messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-messages.d.ts","sourceRoot":"","sources":["../../src/hooks/use-messages.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAE9D;;;;;GAKG;AACH,wBAAgB,WAAW;aAIjB,UAAU,WAAW,OAAO,MAAM,EAAE,MAAM,CAAC,KAAG,MAAM;EAa7D"}
@@ -0,0 +1,23 @@
1
+ import { useCallback } from "react";
2
+ import { useStratum } from "../provider.js";
3
+ import { defaultMessages } from "../i18n.js";
4
+ /**
5
+ * Returns a `t()` function that resolves message keys to localised strings.
6
+ *
7
+ * User-supplied messages (via `StratumProvider`) override `defaultMessages`.
8
+ * Placeholders like `{param}` are replaced when a `params` record is provided.
9
+ */
10
+ export function useMessages() {
11
+ const { messages: userMessages } = useStratum();
12
+ const t = useCallback((key, params) => {
13
+ let value = userMessages?.[key] ?? defaultMessages[key];
14
+ if (params) {
15
+ for (const [k, v] of Object.entries(params)) {
16
+ value = value.replace(`{${k}}`, v);
17
+ }
18
+ }
19
+ return value;
20
+ }, [userMessages]);
21
+ return { t };
22
+ }
23
+ //# sourceMappingURL=use-messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-messages.js","sourceRoot":"","sources":["../../src/hooks/use-messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAmB,MAAM,YAAY,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,UAAU,EAAE,CAAC;IAEhD,MAAM,CAAC,GAAG,WAAW,CACnB,CAAC,GAAe,EAAE,MAA+B,EAAU,EAAE;QAC3D,IAAI,KAAK,GAAY,YAAmD,EAAE,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,GAAG,CAAC,CAAC;QACxG,IAAI,MAAM,EAAE,CAAC;YACX,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC5C,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,EACD,CAAC,YAAY,CAAC,CACf,CAAC;IAEF,OAAO,EAAE,CAAC,EAAE,CAAC;AACf,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { ResolvedPermission } from "@stratum-hq/core";
2
+ export declare function usePermissions(): {
3
+ permissions: ResolvedPermission[];
4
+ loading: boolean;
5
+ error: Error | null;
6
+ refresh: () => Promise<void>;
7
+ createPermission: (key: string, value: unknown, mode: string, revocationMode: string) => Promise<void>;
8
+ deletePermission: (policyId: string) => Promise<void>;
9
+ };
10
+ //# sourceMappingURL=use-permissions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-permissions.d.ts","sourceRoot":"","sources":["../../src/hooks/use-permissions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAI3D,wBAAgB,cAAc;;;;;4BA4Bd,MAAM,SAAS,OAAO,QAAQ,MAAM,kBAAkB,MAAM;iCAYvD,MAAM;EAW1B"}