@stratum-hq/react 0.4.0 → 0.5.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 (68) hide show
  1. package/README.md +16 -2
  2. package/dist/components/AuditLogViewer.d.ts +2 -1
  3. package/dist/components/AuditLogViewer.d.ts.map +1 -1
  4. package/dist/components/ConfigDriftIndicator.d.ts +2 -1
  5. package/dist/components/ConfigDriftIndicator.d.ts.map +1 -1
  6. package/dist/components/ConfigEditor.d.ts +2 -1
  7. package/dist/components/ConfigEditor.d.ts.map +1 -1
  8. package/dist/components/ConfigInheritanceVisualizer.d.ts +2 -1
  9. package/dist/components/ConfigInheritanceVisualizer.d.ts.map +1 -1
  10. package/dist/components/ConfigInheritanceVisualizer.js +42 -42
  11. package/dist/components/DraggableTenantTree.d.ts +2 -1
  12. package/dist/components/DraggableTenantTree.d.ts.map +1 -1
  13. package/dist/components/DraggableTenantTree.js +13 -13
  14. package/dist/components/DraggableTenantTree.js.map +1 -1
  15. package/dist/components/EmptyState.d.ts +1 -1
  16. package/dist/components/EmptyState.d.ts.map +1 -1
  17. package/dist/components/PermissionEditor.d.ts +2 -1
  18. package/dist/components/PermissionEditor.d.ts.map +1 -1
  19. package/dist/components/Skeleton.d.ts +2 -1
  20. package/dist/components/Skeleton.d.ts.map +1 -1
  21. package/dist/components/TableSkeleton.d.ts +2 -1
  22. package/dist/components/TableSkeleton.d.ts.map +1 -1
  23. package/dist/components/TenantHealthCard.d.ts +2 -1
  24. package/dist/components/TenantHealthCard.d.ts.map +1 -1
  25. package/dist/components/TenantSwitcher.d.ts +2 -1
  26. package/dist/components/TenantSwitcher.d.ts.map +1 -1
  27. package/dist/components/TenantThemeProvider.d.ts +7 -1
  28. package/dist/components/TenantThemeProvider.d.ts.map +1 -1
  29. package/dist/components/TenantThemeProvider.js +19 -1
  30. package/dist/components/TenantThemeProvider.js.map +1 -1
  31. package/dist/components/TenantTree.d.ts +2 -1
  32. package/dist/components/TenantTree.d.ts.map +1 -1
  33. package/dist/components/Toast.d.ts +2 -1
  34. package/dist/components/Toast.d.ts.map +1 -1
  35. package/dist/components/ToastContainer.d.ts +2 -1
  36. package/dist/components/ToastContainer.d.ts.map +1 -1
  37. package/dist/components/WebhookEditor.d.ts +2 -1
  38. package/dist/components/WebhookEditor.d.ts.map +1 -1
  39. package/dist/components/headless/ConfigEditor.d.ts +1 -1
  40. package/dist/components/headless/ConfigEditor.d.ts.map +1 -1
  41. package/dist/components/headless/ConfigInheritanceVisualizer.d.ts +1 -1
  42. package/dist/components/headless/ConfigInheritanceVisualizer.d.ts.map +1 -1
  43. package/dist/components/headless/PermissionEditor.d.ts +1 -1
  44. package/dist/components/headless/PermissionEditor.d.ts.map +1 -1
  45. package/dist/components/headless/TenantSwitcher.d.ts +1 -1
  46. package/dist/components/headless/TenantSwitcher.d.ts.map +1 -1
  47. package/dist/components/headless/TenantTree.d.ts +1 -1
  48. package/dist/components/headless/TenantTree.d.ts.map +1 -1
  49. package/dist/hooks/use-audit-logs.js +1 -1
  50. package/dist/hooks/use-audit-logs.js.map +1 -1
  51. package/dist/hooks/use-config-cascade.js +3 -3
  52. package/dist/hooks/use-config-cascade.js.map +1 -1
  53. package/dist/hooks/use-config.js +3 -3
  54. package/dist/hooks/use-config.js.map +1 -1
  55. package/dist/hooks/use-permissions.js +3 -3
  56. package/dist/hooks/use-permissions.js.map +1 -1
  57. package/dist/hooks/use-tenant-tree.d.ts.map +1 -1
  58. package/dist/hooks/use-tenant-tree.js +1 -16
  59. package/dist/hooks/use-tenant-tree.js.map +1 -1
  60. package/dist/hooks/use-tenant.d.ts +1 -1
  61. package/dist/hooks/use-webhooks.js +3 -3
  62. package/dist/hooks/use-webhooks.js.map +1 -1
  63. package/dist/provider.d.ts +13 -2
  64. package/dist/provider.d.ts.map +1 -1
  65. package/dist/provider.js +7 -6
  66. package/dist/provider.js.map +1 -1
  67. package/dist/styles/default.css +97 -96
  68. package/package.json +2 -2
@@ -3,49 +3,50 @@
3
3
  /* ============================================================
4
4
  Font Imports
5
5
  ============================================================ */
6
- @import url('https://fonts.googleapis.com/css2?family=Instrument+Sans:ital,wdth,wght@0,75..100,400..700;1,75..100,400..700&family=JetBrains+Mono:wght@400;500;600&display=swap');
6
+ @import url('https://fonts.googleapis.com/css2?family=Libre+Franklin:wght@600;700;800;900&family=IBM+Plex+Sans:ital,wght@0,400;0,500;0,600;0,700;1,400&family=IBM+Plex+Mono:wght@400;500;600&display=swap');
7
7
 
8
8
  /* ============================================================
9
9
  Design Tokens — Dark Mode (Primary / Default)
10
+ Palette: Strata (earth-toned, one live mineral accent: ember).
10
11
  ============================================================ */
11
12
  :root {
12
- /* --- Surfaces — deep earth, not pure black --- */
13
- --surface-0: #0F0E0C;
14
- --surface-1: #1A1815;
15
- --surface-2: #252220;
16
- --surface-3: #302D2A;
13
+ /* --- Surfaces — peat and loam, not pure black --- */
14
+ --surface-0: #12100C;
15
+ --surface-1: #1C1813;
16
+ --surface-2: #241F19;
17
+ --surface-3: #2E271F;
17
18
 
18
19
  /* --- Text --- */
19
- --text-primary: #E8E2D9;
20
- --text-secondary: #A39E95;
21
- --text-tertiary: #6B6560;
20
+ --text-primary: #EFE7D9;
21
+ --text-secondary: #A79880;
22
+ --text-tertiary: #7A6C58;
22
23
 
23
- /* --- Accent — terracotta (used sparingly) --- */
24
- --accent: #C05746;
25
- --accent-hover: #D4654E;
26
- --accent-muted: #C0574620;
24
+ /* --- Accent — ember, a copper patina (used sparingly) --- */
25
+ --accent: #C9793F;
26
+ --accent-hover: #D89060;
27
+ --accent-muted: #C9793F26;
27
28
 
28
- /* --- Warm neutrals — sandstone --- */
29
- --sandstone: #C4A882;
30
- --sandstone-muted: #C4A88240;
29
+ /* --- Warm neutrals — sand --- */
30
+ --sandstone: #C9B08A;
31
+ --sandstone-muted: #C9B08A33;
31
32
 
32
33
  /* --- Semantic --- */
33
- --success: #5B8C5A;
34
- --success-bg: #1A2E19;
35
- --warning: #C4A244;
36
- --warning-bg: #2E2610;
37
- --error: #C05746;
38
- --error-bg: #2E1410;
39
- --info: #7A8B9A;
40
- --info-bg: #1A2430;
34
+ --success: #C9793F;
35
+ --success-bg: color-mix(in srgb, var(--success) 14%, var(--surface-1));
36
+ --warning: #D9A03F;
37
+ --warning-bg: color-mix(in srgb, var(--warning) 14%, var(--surface-1));
38
+ --error: #C4573A;
39
+ --error-bg: color-mix(in srgb, var(--error) 14%, var(--surface-1));
40
+ --info: #C9B08A;
41
+ --info-bg: color-mix(in srgb, var(--info) 12%, var(--surface-1));
41
42
 
42
43
  /* --- Borders --- */
43
- --border: #2A2725;
44
- --border-hover: #3D3935;
44
+ --border: #332B21;
45
+ --border-hover: #463B2D;
45
46
 
46
47
  /* --- Code --- */
47
- --code-bg: #161412;
48
- --code-text: #C4A882;
48
+ --code-bg: #0F0D0A;
49
+ --code-text: #C9B08A;
49
50
 
50
51
  /* --- Legacy aliases (component compatibility) --- */
51
52
  --color-primary: var(--accent);
@@ -76,18 +77,18 @@
76
77
  --color-text-secondary: var(--text-secondary);
77
78
  --color-text-tertiary: var(--text-tertiary);
78
79
  --color-text-disabled: var(--text-tertiary);
79
- --color-text-on-primary: #E8E2D9;
80
+ --color-text-on-primary: #EFE7D9;
80
81
  --color-text-active: var(--accent-hover);
81
82
 
82
83
  --color-border-default: var(--border);
83
84
  --color-border-strong: var(--border-hover);
84
85
  --color-border-input: var(--border-hover);
85
86
 
86
- /* --- Badge: Inherited — sandstone --- */
87
+ /* --- Badge: Inherited — sand --- */
87
88
  --color-badge-inherited-bg: var(--sandstone-muted);
88
89
  --color-badge-inherited-text: var(--sandstone);
89
90
 
90
- /* --- Badge: Locked — warning amber --- */
91
+ /* --- Badge: Locked — warning ochre --- */
91
92
  --color-badge-locked-bg: var(--warning-bg);
92
93
  --color-badge-locked-text: var(--warning);
93
94
 
@@ -100,9 +101,9 @@
100
101
  --color-badge-delegated-text: var(--success);
101
102
 
102
103
  /* --- Typography --- */
103
- --font-display: "Instrument Sans", system-ui, sans-serif;
104
- --font-body: "Instrument Sans", system-ui, sans-serif;
105
- --font-code: "JetBrains Mono", "Fira Code", ui-monospace, monospace;
104
+ --font-display: "Libre Franklin", system-ui, sans-serif;
105
+ --font-body: "IBM Plex Sans", system-ui, sans-serif;
106
+ --font-code: "IBM Plex Mono", ui-monospace, "SFMono-Regular", monospace;
106
107
 
107
108
  --font-size-xs: 0.6875rem; /* 11px */
108
109
  --font-size-sm: 0.75rem; /* 12px */
@@ -144,10 +145,10 @@
144
145
  --radius-full: 9999px;
145
146
 
146
147
  /* --- Shadows — warm-toned --- */
147
- --shadow-sm: 0 1px 2px rgba(15, 14, 12, 0.4);
148
- --shadow-md: 0 2px 8px rgba(15, 14, 12, 0.5), 0 1px 2px rgba(15, 14, 12, 0.3);
149
- --shadow-lg: 0 4px 16px rgba(15, 14, 12, 0.6), 0 2px 4px rgba(15, 14, 12, 0.3);
150
- --shadow-xl: 0 8px 32px rgba(15, 14, 12, 0.7), 0 4px 8px rgba(15, 14, 12, 0.4);
148
+ --shadow-sm: 0 1px 2px rgba(18, 16, 12, 0.4);
149
+ --shadow-md: 0 2px 8px rgba(18, 16, 12, 0.5), 0 1px 2px rgba(18, 16, 12, 0.3);
150
+ --shadow-lg: 0 4px 16px rgba(18, 16, 12, 0.6), 0 2px 4px rgba(18, 16, 12, 0.3);
151
+ --shadow-xl: 0 8px 32px rgba(18, 16, 12, 0.7), 0 4px 8px rgba(18, 16, 12, 0.4);
151
152
 
152
153
  /* --- Motion --- */
153
154
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
@@ -171,36 +172,36 @@
171
172
  Light Mode — for docs only
172
173
  ============================================================ */
173
174
  [data-theme="light"] {
174
- --surface-0: #FAF8F5;
175
- --surface-1: #F0EDE8;
176
- --surface-2: #E5E0DA;
177
- --surface-3: #D6D0C8;
175
+ --surface-0: #F4EFE4;
176
+ --surface-1: #FFFCF6;
177
+ --surface-2: #E9E2D4;
178
+ --surface-3: #DCD2BF;
178
179
 
179
- --text-primary: #1A1815;
180
- --text-secondary: #5C5650;
181
- --text-tertiary: #8A847D;
180
+ --text-primary: #1A1611;
181
+ --text-secondary: #4E4636;
182
+ --text-tertiary: #6F6553;
182
183
 
183
- --accent: #A84535;
184
- --accent-hover: #C05746;
185
- --accent-muted: #A8453520;
184
+ --accent: #8B4A26;
185
+ --accent-hover: #6E3A1D;
186
+ --accent-muted: #8B4A2620;
186
187
 
187
- --sandstone: #8B6F4E;
188
- --sandstone-muted: #8B6F4E20;
188
+ --sandstone: #7A5F35;
189
+ --sandstone-muted: #7A5F3520;
189
190
 
190
- --success: #3D6B3C;
191
- --success-bg: #D8EDCC;
192
- --warning: #8B6E10;
193
- --warning-bg: #F5E8C0;
194
- --error: #A84535;
195
- --error-bg: #F5D5CC;
196
- --info: #4A5D6E;
197
- --info-bg: #D8E4EC;
191
+ --success: #8B4A26;
192
+ --success-bg: #F0E0D2;
193
+ --warning: #8A5A0F;
194
+ --warning-bg: #F3E4C0;
195
+ --error: #9C3A22;
196
+ --error-bg: #F5DDD2;
197
+ --info: #6B5A3C;
198
+ --info-bg: #E8E1D2;
198
199
 
199
- --border: #D6D0C8;
200
- --border-hover: #C4BDB4;
200
+ --border: #DBD2BF;
201
+ --border-hover: #C4B79F;
201
202
 
202
- --code-bg: #F0EDE8;
203
- --code-text: #8B6F4E;
203
+ --code-bg: #FFFCF6;
204
+ --code-text: #7A5F35;
204
205
 
205
206
  /* --- Legacy aliases (light) --- */
206
207
  --color-primary: var(--accent);
@@ -231,7 +232,7 @@
231
232
  --color-text-secondary: var(--text-secondary);
232
233
  --color-text-tertiary: var(--text-tertiary);
233
234
  --color-text-disabled: var(--text-tertiary);
234
- --color-text-on-primary: #FAF8F5;
235
+ --color-text-on-primary: #FFFCF6;
235
236
  --color-text-active: var(--accent);
236
237
 
237
238
  --color-border-default: var(--border);
@@ -250,10 +251,10 @@
250
251
  --color-badge-delegated-bg: var(--success-bg);
251
252
  --color-badge-delegated-text: var(--success);
252
253
 
253
- --shadow-sm: 0 1px 2px rgba(26, 24, 21, 0.06);
254
- --shadow-md: 0 2px 8px rgba(26, 24, 21, 0.09), 0 1px 2px rgba(26, 24, 21, 0.05);
255
- --shadow-lg: 0 4px 16px rgba(26, 24, 21, 0.12), 0 2px 4px rgba(26, 24, 21, 0.06);
256
- --shadow-xl: 0 8px 32px rgba(26, 24, 21, 0.14), 0 4px 8px rgba(26, 24, 21, 0.07);
254
+ --shadow-sm: 0 1px 2px rgba(26, 22, 17, 0.06);
255
+ --shadow-md: 0 2px 8px rgba(26, 22, 17, 0.09), 0 1px 2px rgba(26, 22, 17, 0.05);
256
+ --shadow-lg: 0 4px 16px rgba(26, 22, 17, 0.12), 0 2px 4px rgba(26, 22, 17, 0.06);
257
+ --shadow-xl: 0 8px 32px rgba(26, 22, 17, 0.14), 0 4px 8px rgba(26, 22, 17, 0.07);
257
258
  }
258
259
 
259
260
  /* ============================================================
@@ -261,36 +262,36 @@
261
262
  ============================================================ */
262
263
  @media (prefers-color-scheme: light) {
263
264
  :root:not([data-theme]) {
264
- --surface-0: #FAF8F5;
265
- --surface-1: #F0EDE8;
266
- --surface-2: #E5E0DA;
267
- --surface-3: #D6D0C8;
265
+ --surface-0: #F4EFE4;
266
+ --surface-1: #FFFCF6;
267
+ --surface-2: #E9E2D4;
268
+ --surface-3: #DCD2BF;
268
269
 
269
- --text-primary: #1A1815;
270
- --text-secondary: #5C5650;
271
- --text-tertiary: #8A847D;
270
+ --text-primary: #1A1611;
271
+ --text-secondary: #4E4636;
272
+ --text-tertiary: #6F6553;
272
273
 
273
- --accent: #A84535;
274
- --accent-hover: #C05746;
275
- --accent-muted: #A8453520;
274
+ --accent: #8B4A26;
275
+ --accent-hover: #6E3A1D;
276
+ --accent-muted: #8B4A2620;
276
277
 
277
- --sandstone: #8B6F4E;
278
- --sandstone-muted: #8B6F4E20;
278
+ --sandstone: #7A5F35;
279
+ --sandstone-muted: #7A5F3520;
279
280
 
280
- --success: #3D6B3C;
281
- --success-bg: #D8EDCC;
282
- --warning: #8B6E10;
283
- --warning-bg: #F5E8C0;
284
- --error: #A84535;
285
- --error-bg: #F5D5CC;
286
- --info: #4A5D6E;
287
- --info-bg: #D8E4EC;
281
+ --success: #8B4A26;
282
+ --success-bg: #F0E0D2;
283
+ --warning: #8A5A0F;
284
+ --warning-bg: #F3E4C0;
285
+ --error: #9C3A22;
286
+ --error-bg: #F5DDD2;
287
+ --info: #6B5A3C;
288
+ --info-bg: #E8E1D2;
288
289
 
289
- --border: #D6D0C8;
290
- --border-hover: #C4BDB4;
290
+ --border: #DBD2BF;
291
+ --border-hover: #C4B79F;
291
292
 
292
- --code-bg: #F0EDE8;
293
- --code-text: #8B6F4E;
293
+ --code-bg: #FFFCF6;
294
+ --code-text: #7A5F35;
294
295
 
295
296
  --color-primary: var(--accent);
296
297
  --color-primary-hover: var(--accent-hover);
@@ -320,7 +321,7 @@
320
321
  --color-text-secondary: var(--text-secondary);
321
322
  --color-text-tertiary: var(--text-tertiary);
322
323
  --color-text-disabled: var(--text-tertiary);
323
- --color-text-on-primary: #FAF8F5;
324
+ --color-text-on-primary: #FFFCF6;
324
325
  --color-text-active: var(--accent);
325
326
 
326
327
  --color-border-default: var(--border);
@@ -339,10 +340,10 @@
339
340
  --color-badge-delegated-bg: var(--success-bg);
340
341
  --color-badge-delegated-text: var(--success);
341
342
 
342
- --shadow-sm: 0 1px 2px rgba(26, 24, 21, 0.06);
343
- --shadow-md: 0 2px 8px rgba(26, 24, 21, 0.09), 0 1px 2px rgba(26, 24, 21, 0.05);
344
- --shadow-lg: 0 4px 16px rgba(26, 24, 21, 0.12), 0 2px 4px rgba(26, 24, 21, 0.06);
345
- --shadow-xl: 0 8px 32px rgba(26, 24, 21, 0.14), 0 4px 8px rgba(26, 24, 21, 0.07);
343
+ --shadow-sm: 0 1px 2px rgba(26, 22, 17, 0.06);
344
+ --shadow-md: 0 2px 8px rgba(26, 22, 17, 0.09), 0 1px 2px rgba(26, 22, 17, 0.05);
345
+ --shadow-lg: 0 4px 16px rgba(26, 22, 17, 0.12), 0 2px 4px rgba(26, 22, 17, 0.06);
346
+ --shadow-xl: 0 8px 32px rgba(26, 22, 17, 0.14), 0 4px 8px rgba(26, 22, 17, 0.07);
346
347
  }
347
348
  }
348
349
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stratum-hq/react",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "type": "module",
5
5
  "description": "Stratum React UI components for multi-tenant administration",
6
6
  "keywords": [
@@ -65,7 +65,7 @@
65
65
  "react-dom": "^18.2.0",
66
66
  "storybook": "^8.4.0",
67
67
  "typescript": "^5.4.0",
68
- "vitest": "^1.6.0"
68
+ "vitest": "^4.1.11"
69
69
  },
70
70
  "license": "MIT",
71
71
  "author": "Christian Crank",