@vertebr/react 0.8.1 → 0.10.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 (109) hide show
  1. package/dist/components/admin/AddonEditor.d.ts +13 -0
  2. package/dist/components/admin/AddonEditor.d.ts.map +1 -0
  3. package/dist/components/admin/AddonEditor.js +27 -0
  4. package/dist/components/admin/AddonOverview.d.ts +8 -0
  5. package/dist/components/admin/AddonOverview.d.ts.map +1 -0
  6. package/dist/components/admin/AddonOverview.js +125 -0
  7. package/dist/components/admin/AddonPreviewThumb.d.ts +11 -0
  8. package/dist/components/admin/AddonPreviewThumb.d.ts.map +1 -0
  9. package/dist/components/admin/AddonPreviewThumb.js +52 -0
  10. package/dist/components/admin/AdminCommandPalette.d.ts +9 -0
  11. package/dist/components/admin/AdminCommandPalette.d.ts.map +1 -0
  12. package/dist/components/admin/AdminCommandPalette.js +68 -0
  13. package/dist/components/admin/AdminContent.d.ts +4 -1
  14. package/dist/components/admin/AdminContent.d.ts.map +1 -1
  15. package/dist/components/admin/AdminContent.js +32 -10
  16. package/dist/components/admin/AdminHeader.d.ts +2 -3
  17. package/dist/components/admin/AdminHeader.d.ts.map +1 -1
  18. package/dist/components/admin/AdminHeader.js +10 -3
  19. package/dist/components/admin/AdminPoweredBy.d.ts +5 -0
  20. package/dist/components/admin/AdminPoweredBy.d.ts.map +1 -0
  21. package/dist/components/admin/AdminPoweredBy.js +8 -0
  22. package/dist/components/admin/AdminSidebar.d.ts.map +1 -1
  23. package/dist/components/admin/AdminSidebar.js +9 -7
  24. package/dist/components/admin/AdminSyncPage.d.ts +7 -0
  25. package/dist/components/admin/AdminSyncPage.d.ts.map +1 -0
  26. package/dist/components/admin/AdminSyncPage.js +169 -0
  27. package/dist/components/admin/AdminTopBar.d.ts +11 -3
  28. package/dist/components/admin/AdminTopBar.d.ts.map +1 -1
  29. package/dist/components/admin/AdminTopBar.js +27 -4
  30. package/dist/components/admin/AuditBoard.d.ts +7 -0
  31. package/dist/components/admin/AuditBoard.d.ts.map +1 -0
  32. package/dist/components/admin/AuditBoard.js +43 -0
  33. package/dist/components/admin/HealthModal.d.ts +9 -0
  34. package/dist/components/admin/HealthModal.d.ts.map +1 -0
  35. package/dist/components/admin/HealthModal.js +59 -0
  36. package/dist/components/admin/PagePreviewPane.d.ts +3 -1
  37. package/dist/components/admin/PagePreviewPane.d.ts.map +1 -1
  38. package/dist/components/admin/PagePreviewPane.js +2 -2
  39. package/dist/components/admin/VertebrAdmin.d.ts.map +1 -1
  40. package/dist/components/admin/VertebrAdmin.js +146 -17
  41. package/dist/components/admin/addonLabels.d.ts +6 -0
  42. package/dist/components/admin/addonLabels.d.ts.map +1 -0
  43. package/dist/components/admin/addonLabels.js +20 -0
  44. package/dist/components/admin/adminSearch.d.ts +12 -0
  45. package/dist/components/admin/adminSearch.d.ts.map +1 -0
  46. package/dist/components/admin/adminSearch.js +120 -0
  47. package/dist/components/admin/breadcrumbs.d.ts.map +1 -1
  48. package/dist/components/admin/breadcrumbs.js +14 -0
  49. package/dist/components/admin/routes.d.ts.map +1 -1
  50. package/dist/components/admin/routes.js +43 -1
  51. package/dist/components/admin/types.d.ts +9 -0
  52. package/dist/components/admin/types.d.ts.map +1 -1
  53. package/dist/components/config/ReferenceInput.d.ts +11 -0
  54. package/dist/components/config/ReferenceInput.d.ts.map +1 -0
  55. package/dist/components/config/ReferenceInput.js +99 -0
  56. package/dist/components/config/RevisionHistory.d.ts +8 -0
  57. package/dist/components/config/RevisionHistory.d.ts.map +1 -0
  58. package/dist/components/config/RevisionHistory.js +84 -0
  59. package/dist/components/config/form/ConfigField.d.ts +3 -2
  60. package/dist/components/config/form/ConfigField.d.ts.map +1 -1
  61. package/dist/components/config/form/ConfigField.js +3 -2
  62. package/dist/components/config/form/ConfigForm.d.ts +1 -1
  63. package/dist/components/config/form/ConfigForm.d.ts.map +1 -1
  64. package/dist/components/config/form/ConfigForm.js +13 -6
  65. package/dist/components/config/form/RecordConfigForm.d.ts +3 -2
  66. package/dist/components/config/form/RecordConfigForm.d.ts.map +1 -1
  67. package/dist/components/config/form/RecordConfigForm.js +2 -1
  68. package/dist/components/config/form/SettingsConfigForm.d.ts +3 -2
  69. package/dist/components/config/form/SettingsConfigForm.d.ts.map +1 -1
  70. package/dist/components/config/form/SettingsConfigForm.js +2 -2
  71. package/dist/components/config/form/types.d.ts +5 -1
  72. package/dist/components/config/form/types.d.ts.map +1 -1
  73. package/dist/components/env/EnvMultiSelect.d.ts +20 -0
  74. package/dist/components/env/EnvMultiSelect.d.ts.map +1 -0
  75. package/dist/components/env/EnvMultiSelect.js +38 -0
  76. package/dist/components/resources/ResourceTable.d.ts +7 -1
  77. package/dist/components/resources/ResourceTable.d.ts.map +1 -1
  78. package/dist/components/resources/ResourceTable.js +56 -6
  79. package/dist/components/theme/ThemeToggle.d.ts +3 -1
  80. package/dist/components/theme/ThemeToggle.d.ts.map +1 -1
  81. package/dist/components/theme/ThemeToggle.js +2 -2
  82. package/dist/components/ui/icons.d.ts +3 -0
  83. package/dist/components/ui/icons.d.ts.map +1 -1
  84. package/dist/components/ui/icons.js +17 -0
  85. package/dist/index.d.ts +2 -1
  86. package/dist/index.d.ts.map +1 -1
  87. package/dist/index.js +1 -0
  88. package/dist/lib/capabilities.d.ts +4 -0
  89. package/dist/lib/capabilities.d.ts.map +1 -0
  90. package/dist/lib/capabilities.js +9 -0
  91. package/dist/styles/addon.css +540 -0
  92. package/dist/styles/audit.css +34 -0
  93. package/dist/styles/base.css +1 -0
  94. package/dist/styles/font-library.css +2 -0
  95. package/dist/styles/form.css +143 -0
  96. package/dist/styles/index.css +3 -0
  97. package/dist/styles/main.css +0 -38
  98. package/dist/styles/modal.css +113 -0
  99. package/dist/styles/motion.css +55 -0
  100. package/dist/styles/nav.css +39 -4
  101. package/dist/styles/select.css +6 -0
  102. package/dist/styles/shell.css +417 -14
  103. package/dist/styles/sidebar.css +63 -3
  104. package/dist/styles/sync.css +540 -0
  105. package/dist/styles/table.css +15 -5
  106. package/dist/themes/dark.css +11 -11
  107. package/dist/themes/index.css +1 -0
  108. package/dist/themes/light.css +19 -19
  109. package/package.json +1 -1
@@ -0,0 +1,540 @@
1
+ /* ── Environment sync ───────────────────────────────────── */
2
+
3
+ .vertebr-sync-page {
4
+ flex: 1 1 auto;
5
+ min-height: 0;
6
+ min-width: 0;
7
+ display: flex;
8
+ flex-direction: column;
9
+ overflow: hidden;
10
+ }
11
+
12
+ .vertebr-sync-scroll {
13
+ flex: 1 1 auto;
14
+ min-height: 0;
15
+ min-width: 0;
16
+ overflow-x: hidden;
17
+ overflow-y: auto;
18
+ display: flex;
19
+ flex-direction: column;
20
+ gap: var(--vb-space-400);
21
+ padding: 1.15rem 1.35rem 1.35rem;
22
+ scrollbar-width: thin;
23
+ }
24
+
25
+ .vertebr-sync-scroll .vertebr-card {
26
+ flex: 0 0 auto;
27
+ min-width: 0;
28
+ }
29
+
30
+ .vertebr-sync-direction {
31
+ display: flex;
32
+ flex-direction: column;
33
+ gap: var(--vb-space-400);
34
+ }
35
+
36
+ .vertebr-sync-direction-grid {
37
+ display: grid;
38
+ grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
39
+ align-items: end;
40
+ gap: var(--vb-space-400);
41
+ }
42
+
43
+ .vertebr-sync-field {
44
+ display: flex;
45
+ flex-direction: column;
46
+ gap: var(--vb-space-200);
47
+ min-width: 0;
48
+ }
49
+
50
+ .vertebr-sync-field-label {
51
+ font-size: var(--vb-font-size-75);
52
+ font-family: var(--vb-mono);
53
+ font-weight: 500;
54
+ letter-spacing: 0.1em;
55
+ text-transform: uppercase;
56
+ color: var(--vb-text-subtle);
57
+ }
58
+
59
+ .vertebr-sync-connector {
60
+ display: flex;
61
+ flex-direction: column;
62
+ align-items: center;
63
+ justify-content: center;
64
+ gap: 0.35rem;
65
+ min-height: 2.35rem;
66
+ padding-bottom: 0.1rem;
67
+ }
68
+
69
+ .vertebr-sync-connector-arrow {
70
+ display: inline-flex;
71
+ align-items: center;
72
+ justify-content: center;
73
+ width: 2rem;
74
+ height: 2rem;
75
+ border-radius: var(--vb-radius-full);
76
+ border: 1px solid color-mix(in srgb, var(--vb-accent) 35%, var(--vb-border));
77
+ background: var(--vb-accent-soft);
78
+ color: var(--vb-accent);
79
+ font-size: 1rem;
80
+ line-height: 1;
81
+ font-weight: var(--vb-font-weight-semibold);
82
+ }
83
+
84
+ .vertebr-sync-direction-hint {
85
+ margin: 0;
86
+ padding: var(--vb-space-300) var(--vb-space-400);
87
+ border-radius: var(--vb-radius-md);
88
+ border: 1px dashed var(--vb-border);
89
+ background: var(--vb-bg-subdued);
90
+ color: var(--vb-text-muted);
91
+ font-size: var(--vb-font-size-100);
92
+ }
93
+
94
+ .vertebr-sync-preview {
95
+ padding: var(--vb-space-400);
96
+ border-radius: var(--vb-radius-md);
97
+ border: 1px solid var(--vb-border-subdued);
98
+ background:
99
+ linear-gradient(180deg, var(--vb-surface-tint) 0%, transparent 70%),
100
+ var(--vb-bg-muted);
101
+ min-width: 0;
102
+ overflow: hidden;
103
+ }
104
+
105
+ .vertebr-sync-preview-flow {
106
+ display: flex;
107
+ align-items: stretch;
108
+ gap: var(--vb-space-400);
109
+ min-width: 0;
110
+ }
111
+
112
+ .vertebr-sync-preview-col {
113
+ display: flex;
114
+ flex-direction: column;
115
+ align-items: flex-start;
116
+ gap: 0.4rem;
117
+ min-width: 0;
118
+ }
119
+
120
+ .vertebr-sync-preview-col-from {
121
+ flex: 0 0 auto;
122
+ justify-content: flex-end;
123
+ }
124
+
125
+ .vertebr-sync-preview-col-routes {
126
+ flex: 1 1 auto;
127
+ gap: var(--vb-space-200);
128
+ }
129
+
130
+ .vertebr-sync-preview-route {
131
+ display: flex;
132
+ align-items: flex-end;
133
+ gap: var(--vb-space-300);
134
+ min-width: 0;
135
+ }
136
+
137
+ .vertebr-sync-preview-flow[data-dest-count="1"] {
138
+ align-items: flex-end;
139
+ }
140
+
141
+ .vertebr-sync-preview-flow[data-dest-count="1"] .vertebr-sync-preview-col-from,
142
+ .vertebr-sync-preview-flow[data-dest-count="1"] .vertebr-sync-preview-col-routes {
143
+ flex: 0 1 auto;
144
+ }
145
+
146
+ .vertebr-sync-preview-flow:not([data-dest-count="1"]) {
147
+ align-items: center;
148
+ }
149
+
150
+ .vertebr-sync-preview-flow:not([data-dest-count="1"]) .vertebr-sync-preview-col-from {
151
+ justify-content: center;
152
+ }
153
+
154
+ .vertebr-sync-preview-arrow {
155
+ flex: 0 0 auto;
156
+ display: inline-flex;
157
+ align-items: center;
158
+ justify-content: center;
159
+ width: 1.25rem;
160
+ height: 2rem;
161
+ margin-bottom: 0.05rem;
162
+ color: var(--vb-accent);
163
+ font-size: 1.1rem;
164
+ font-weight: var(--vb-font-weight-semibold);
165
+ line-height: 1;
166
+ }
167
+
168
+ .vertebr-sync-env-badge {
169
+ display: inline-flex;
170
+ align-items: center;
171
+ gap: 0.45rem;
172
+ padding: 0.4rem 0.75rem;
173
+ border-radius: var(--vb-radius-full);
174
+ border: 1px solid var(--vb-border);
175
+ background: var(--vb-bg-elevated);
176
+ font-size: var(--vb-font-size-100);
177
+ font-weight: var(--vb-font-weight-medium);
178
+ box-shadow: var(--vb-shadow-sm);
179
+ }
180
+
181
+ .vertebr-sync-env-badge[data-tone="danger"] {
182
+ border-color: color-mix(in srgb, var(--vb-danger) 40%, var(--vb-border));
183
+ color: var(--vb-danger-text);
184
+ }
185
+
186
+ .vertebr-sync-preview-caption {
187
+ display: block;
188
+ min-height: 0.95rem;
189
+ font-size: var(--vb-font-size-75);
190
+ font-family: var(--vb-mono);
191
+ font-weight: 500;
192
+ letter-spacing: 0.1em;
193
+ text-transform: uppercase;
194
+ color: var(--vb-text-subtle);
195
+ line-height: 1;
196
+ }
197
+
198
+ .vertebr-sync-targets-head {
199
+ display: flex;
200
+ align-items: flex-start;
201
+ justify-content: space-between;
202
+ gap: var(--vb-space-400);
203
+ margin-bottom: var(--vb-space-500);
204
+ }
205
+
206
+ .vertebr-sync-targets-copy {
207
+ margin: 0;
208
+ max-width: 34rem;
209
+ color: var(--vb-text-muted);
210
+ font-size: var(--vb-font-size-100);
211
+ line-height: 1.5;
212
+ }
213
+
214
+ .vertebr-sync-refresh {
215
+ flex: 0 0 auto;
216
+ }
217
+
218
+ .vertebr-sync-target-group + .vertebr-sync-target-group {
219
+ margin-top: var(--vb-space-500);
220
+ padding-top: var(--vb-space-500);
221
+ border-top: 1px solid var(--vb-border-subdued);
222
+ }
223
+
224
+ .vertebr-sync-target-group-label {
225
+ margin-bottom: var(--vb-space-300);
226
+ font-size: var(--vb-font-size-75);
227
+ font-family: var(--vb-mono);
228
+ font-weight: 500;
229
+ letter-spacing: 0.1em;
230
+ text-transform: uppercase;
231
+ color: var(--vb-text-subtle);
232
+ }
233
+
234
+ .vertebr-sync-target-list {
235
+ list-style: none;
236
+ margin: 0;
237
+ padding: 0;
238
+ display: flex;
239
+ flex-direction: column;
240
+ gap: var(--vb-space-200);
241
+ }
242
+
243
+ .vertebr-sync-target-row {
244
+ position: relative;
245
+ appearance: none;
246
+ width: 100%;
247
+ display: grid;
248
+ grid-template-columns: auto minmax(0, 1fr) minmax(0, 1.1fr);
249
+ align-items: center;
250
+ gap: var(--vb-space-400);
251
+ padding: var(--vb-space-400);
252
+ border: 1px solid var(--vb-border-subdued);
253
+ border-radius: var(--vb-radius-md);
254
+ background:
255
+ linear-gradient(180deg, var(--vb-surface-tint) 0%, transparent 55%),
256
+ var(--vb-bg-elevated);
257
+ color: inherit;
258
+ text-align: left;
259
+ cursor: pointer;
260
+ min-width: 0;
261
+ overflow: hidden;
262
+ transition:
263
+ border-color 140ms ease,
264
+ box-shadow 140ms ease,
265
+ background 140ms ease;
266
+ }
267
+
268
+ .vertebr-sync-target-row:hover {
269
+ border-color: var(--vb-border-strong);
270
+ background: var(--vb-bg-muted);
271
+ }
272
+
273
+ .vertebr-sync-target-row[data-selected="true"] {
274
+ border-color: color-mix(in srgb, var(--vb-accent) 45%, var(--vb-border));
275
+ box-shadow: 0 0 0 1px color-mix(in srgb, var(--vb-accent) 18%, transparent);
276
+ }
277
+
278
+ .vertebr-sync-target-row[data-selected="true"]::before {
279
+ content: "";
280
+ position: absolute;
281
+ inset: 0 auto 0 0;
282
+ width: 3px;
283
+ border-radius: var(--vb-radius-md) 0 0 var(--vb-radius-md);
284
+ background: var(--vb-accent);
285
+ }
286
+
287
+ .vertebr-sync-target-list li {
288
+ list-style: none;
289
+ }
290
+
291
+ .vertebr-sync-target-check {
292
+ display: inline-flex;
293
+ align-items: center;
294
+ justify-content: center;
295
+ width: 1.15rem;
296
+ height: 1.15rem;
297
+ border-radius: var(--vb-radius-xs);
298
+ border: 1px solid var(--vb-border-strong);
299
+ background: var(--vb-bg-elevated);
300
+ color: var(--vb-accent-contrast);
301
+ font-size: 0.72rem;
302
+ font-weight: var(--vb-font-weight-semibold);
303
+ flex: 0 0 auto;
304
+ }
305
+
306
+ .vertebr-sync-target-row[data-selected="true"] .vertebr-sync-target-check {
307
+ border-color: var(--vb-accent-dim);
308
+ background: var(--vb-accent);
309
+ color: var(--vb-accent-contrast);
310
+ }
311
+
312
+ .vertebr-sync-target-main {
313
+ display: flex;
314
+ flex-direction: column;
315
+ gap: 0.2rem;
316
+ min-width: 0;
317
+ }
318
+
319
+ .vertebr-sync-target-title {
320
+ font-size: var(--vb-font-size-200);
321
+ font-weight: var(--vb-font-weight-medium);
322
+ color: var(--vb-text);
323
+ }
324
+
325
+ .vertebr-sync-target-desc {
326
+ font-size: var(--vb-font-size-100);
327
+ color: var(--vb-text-muted);
328
+ line-height: 1.45;
329
+ }
330
+
331
+ .vertebr-sync-target-badges {
332
+ display: flex;
333
+ flex-direction: column;
334
+ align-items: flex-end;
335
+ gap: 0.25rem;
336
+ min-width: 0;
337
+ overflow: hidden;
338
+ }
339
+
340
+ .vertebr-sync-target-dest {
341
+ display: flex;
342
+ flex-direction: column;
343
+ align-items: flex-end;
344
+ gap: 0.15rem;
345
+ max-width: 100%;
346
+ min-width: 0;
347
+ overflow: hidden;
348
+ }
349
+
350
+ .vertebr-sync-target-summary {
351
+ font-size: var(--vb-font-size-75);
352
+ color: var(--vb-text-subtle);
353
+ text-align: right;
354
+ line-height: 1.35;
355
+ max-width: 100%;
356
+ overflow: hidden;
357
+ text-overflow: ellipsis;
358
+ white-space: nowrap;
359
+ }
360
+
361
+ .vertebr-sync-excluded-list {
362
+ list-style: none;
363
+ margin: 0;
364
+ padding: 0;
365
+ display: grid;
366
+ gap: var(--vb-space-300);
367
+ }
368
+
369
+ .vertebr-sync-excluded-list li {
370
+ display: grid;
371
+ gap: 0.15rem;
372
+ padding-bottom: var(--vb-space-300);
373
+ border-bottom: 1px solid var(--vb-border-subdued);
374
+ }
375
+
376
+ .vertebr-sync-excluded-list li:last-child {
377
+ padding-bottom: 0;
378
+ border-bottom: 0;
379
+ }
380
+
381
+ .vertebr-sync-excluded-name {
382
+ font-size: var(--vb-font-size-100);
383
+ font-weight: var(--vb-font-weight-medium);
384
+ }
385
+
386
+ .vertebr-sync-excluded-reason {
387
+ font-size: var(--vb-font-size-100);
388
+ color: var(--vb-text-muted);
389
+ line-height: 1.45;
390
+ }
391
+
392
+ .vertebr-sync-footer {
393
+ flex: 0 0 auto;
394
+ margin-top: 0;
395
+ border-radius: 0;
396
+ border-top: 1px solid var(--vb-border);
397
+ box-shadow: none;
398
+ background: color-mix(in srgb, var(--vb-bg-elevated) 94%, transparent);
399
+ }
400
+
401
+ .vertebr-sync-run-btn {
402
+ display: inline-flex;
403
+ align-items: center;
404
+ gap: 0.45rem;
405
+ }
406
+
407
+ .vertebr-sync-empty code {
408
+ font-family: var(--vb-mono);
409
+ font-size: 0.92em;
410
+ }
411
+
412
+ .vertebr-topbar-sync {
413
+ white-space: nowrap;
414
+ }
415
+
416
+ /* Env multi-select (shared with direction card) */
417
+
418
+ .vertebr-env-multi {
419
+ position: relative;
420
+ }
421
+
422
+ .vertebr-env-multi-trigger {
423
+ width: 100%;
424
+ min-height: 2.35rem;
425
+ }
426
+
427
+ .vertebr-env-multi-value {
428
+ display: flex;
429
+ flex-wrap: wrap;
430
+ gap: 0.35rem;
431
+ min-width: 0;
432
+ }
433
+
434
+ .vertebr-env-multi-placeholder {
435
+ color: var(--vb-text-subtle);
436
+ }
437
+
438
+ .vertebr-env-multi-chip {
439
+ display: inline-flex;
440
+ align-items: center;
441
+ gap: 0.35rem;
442
+ padding: 0.15rem 0.5rem;
443
+ border-radius: var(--vb-radius-full);
444
+ border: 1px solid var(--vb-border-subdued);
445
+ background: var(--vb-bg-muted);
446
+ font-size: var(--vb-font-size-75);
447
+ font-weight: var(--vb-font-weight-medium);
448
+ }
449
+
450
+ .vertebr-env-multi-chip[data-tone="danger"] {
451
+ border-color: color-mix(in srgb, var(--vb-danger) 35%, transparent);
452
+ color: var(--vb-danger-text);
453
+ }
454
+
455
+ .vertebr-env-multi-menu {
456
+ position: absolute;
457
+ top: calc(100% + 0.35rem);
458
+ left: 0;
459
+ right: 0;
460
+ z-index: 50;
461
+ display: flex;
462
+ flex-direction: column;
463
+ gap: 0.15rem;
464
+ padding: 0.35rem;
465
+ border: 1px solid var(--vb-border);
466
+ border-radius: var(--vb-radius-sm);
467
+ background: var(--vb-bg-elevated);
468
+ box-shadow: var(--vb-shadow-md);
469
+ }
470
+
471
+ .vertebr-env-multi-option {
472
+ display: flex;
473
+ align-items: center;
474
+ gap: 0.5rem;
475
+ padding: 0.45rem 0.55rem;
476
+ border-radius: var(--vb-radius-sm);
477
+ cursor: pointer;
478
+ font-size: var(--vb-font-size-100);
479
+ }
480
+
481
+ .vertebr-env-multi-option:hover {
482
+ background: var(--vb-bg-hover);
483
+ }
484
+
485
+ .vertebr-env-multi-option input {
486
+ accent-color: var(--vb-accent);
487
+ }
488
+
489
+ @media (max-width: 860px) {
490
+ .vertebr-sync-direction-grid {
491
+ grid-template-columns: 1fr;
492
+ }
493
+
494
+ .vertebr-sync-connector {
495
+ flex-direction: row;
496
+ min-height: 0;
497
+ padding: 0;
498
+ }
499
+
500
+ .vertebr-sync-target-row {
501
+ grid-template-columns: auto 1fr;
502
+ grid-template-rows: auto auto;
503
+ }
504
+
505
+ .vertebr-sync-target-badges {
506
+ grid-column: 1 / -1;
507
+ align-items: flex-start;
508
+ }
509
+
510
+ .vertebr-sync-target-dest {
511
+ align-items: flex-start;
512
+ }
513
+
514
+ .vertebr-sync-target-summary {
515
+ text-align: left;
516
+ white-space: normal;
517
+ overflow: visible;
518
+ text-overflow: unset;
519
+ }
520
+ }
521
+
522
+ @media (max-width: 640px) {
523
+ .vertebr-sync-targets-head {
524
+ flex-direction: column;
525
+ }
526
+
527
+ .vertebr-sync-footer {
528
+ flex-direction: column;
529
+ align-items: stretch;
530
+ }
531
+
532
+ .vertebr-savebar-actions {
533
+ width: 100%;
534
+ }
535
+
536
+ .vertebr-savebar-actions .vertebr-btn-primary {
537
+ width: 100%;
538
+ justify-content: center;
539
+ }
540
+ }
@@ -12,6 +12,20 @@
12
12
  scrollbar-width: thin;
13
13
  }
14
14
 
15
+ .vertebr-table-wrap[data-overflow-left="true"] {
16
+ box-shadow: inset 12px 0 16px -14px color-mix(in srgb, var(--vb-text) 35%, transparent);
17
+ }
18
+
19
+ .vertebr-table-wrap[data-overflow-right="true"] {
20
+ box-shadow: inset -12px 0 16px -14px color-mix(in srgb, var(--vb-text) 35%, transparent);
21
+ }
22
+
23
+ .vertebr-table-wrap[data-overflow-left="true"][data-overflow-right="true"] {
24
+ box-shadow:
25
+ inset 12px 0 16px -14px color-mix(in srgb, var(--vb-text) 35%, transparent),
26
+ inset -12px 0 16px -14px color-mix(in srgb, var(--vb-text) 35%, transparent);
27
+ }
28
+
15
29
  .vertebr-table {
16
30
  width: max-content;
17
31
  min-width: 100%;
@@ -115,7 +129,6 @@
115
129
  padding-right: 0.85rem;
116
130
  background: var(--vb-bg-elevated);
117
131
  border-left: 1px solid var(--vb-border);
118
- box-shadow: -12px 0 16px -14px color-mix(in srgb, var(--vb-text) 35%, transparent);
119
132
  }
120
133
 
121
134
  .vertebr-table th.vertebr-col-actions {
@@ -123,10 +136,7 @@
123
136
  }
124
137
 
125
138
  .vertebr-table tbody tr:hover td.vertebr-col-actions {
126
- background: var(--vb-bg-elevated);
127
- box-shadow:
128
- inset 0 0 0 999px var(--vb-surface-tint),
129
- -12px 0 16px -14px color-mix(in srgb, var(--vb-text) 35%, transparent);
139
+ box-shadow: inset 0 0 0 999px var(--vb-surface-tint);
130
140
  }
131
141
 
132
142
  .vertebr-sr-only {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Vertebr dark theme (default) — neutral Shopify-inspired palette.
2
+ * Vertebr dark theme (default) — neutral shell with warm bronze accent.
3
3
  */
4
4
  :root,
5
5
  [data-vb-theme="dark"] {
@@ -18,10 +18,10 @@
18
18
  --vb-text-muted: #a8a8a8;
19
19
  --vb-text-subtle: #7a7a7a;
20
20
  --vb-text-secondary: #b5b5b5;
21
- --vb-accent: #008060;
22
- --vb-accent-dim: #006e52;
23
- --vb-accent-soft: rgba(0, 128, 96, 0.14);
24
- --vb-accent-contrast: #ffffff;
21
+ --vb-accent: #c9a66b;
22
+ --vb-accent-dim: #a8854a;
23
+ --vb-accent-soft: rgba(201, 166, 107, 0.14);
24
+ --vb-accent-contrast: #1a1408;
25
25
  --vb-interactive: #5c9eff;
26
26
  --vb-interactive-soft: rgba(92, 158, 255, 0.12);
27
27
  --vb-danger: #e51c00;
@@ -44,12 +44,12 @@
44
44
  --vb-actions-from: rgba(36, 36, 36, 0.95);
45
45
  --vb-actions-to: rgba(26, 26, 26, 0.98);
46
46
  --vb-input-focus-bg: #2e2e2e;
47
- --vb-btn-primary-from: #008060;
48
- --vb-btn-primary-to: #008060;
49
- --vb-btn-primary-border: #006e52;
50
- --vb-btn-primary-hover-from: #00966d;
51
- --vb-btn-primary-hover-to: #00966d;
52
- --vb-btn-primary-hover-border: #008060;
47
+ --vb-btn-primary-from: #c9a66b;
48
+ --vb-btn-primary-to: #b89558;
49
+ --vb-btn-primary-border: #a8854a;
50
+ --vb-btn-primary-hover-from: #d4b27a;
51
+ --vb-btn-primary-hover-to: #c9a66b;
52
+ --vb-btn-primary-hover-border: #b89558;
53
53
 
54
54
  --vb-radius: var(--vb-radius-md);
55
55
  --vb-radius-sm: var(--vb-radius-sm);
@@ -1,3 +1,4 @@
1
1
  @import "./tokens.css";
2
2
  @import "./dark.css";
3
3
  @import "./light.css";
4
+ @import "../styles/motion.css";
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Vertebr light theme — neutral Shopify-inspired palette.
2
+ * Vertebr light theme — neutral shell with warm bronze accent.
3
3
  */
4
4
  [data-vb-theme="light"] {
5
5
  color-scheme: light;
@@ -17,9 +17,9 @@
17
17
  --vb-text-muted: #6d7175;
18
18
  --vb-text-subtle: #8c9196;
19
19
  --vb-text-secondary: #5c5f62;
20
- --vb-accent: #008060;
21
- --vb-accent-dim: #006e52;
22
- --vb-accent-soft: rgba(0, 128, 96, 0.08);
20
+ --vb-accent: #9a7340;
21
+ --vb-accent-dim: #7d5e32;
22
+ --vb-accent-soft: rgba(154, 115, 64, 0.1);
23
23
  --vb-accent-contrast: #ffffff;
24
24
  --vb-interactive: #005bd3;
25
25
  --vb-interactive-soft: rgba(0, 91, 211, 0.08);
@@ -43,12 +43,12 @@
43
43
  --vb-actions-from: rgba(255, 255, 255, 0.95);
44
44
  --vb-actions-to: rgba(255, 255, 255, 0.98);
45
45
  --vb-input-focus-bg: #ffffff;
46
- --vb-btn-primary-from: #008060;
47
- --vb-btn-primary-to: #008060;
48
- --vb-btn-primary-border: #006e52;
49
- --vb-btn-primary-hover-from: #006e52;
50
- --vb-btn-primary-hover-to: #006e52;
51
- --vb-btn-primary-hover-border: #005e46;
46
+ --vb-btn-primary-from: #9a7340;
47
+ --vb-btn-primary-to: #9a7340;
48
+ --vb-btn-primary-border: #7d5e32;
49
+ --vb-btn-primary-hover-from: #865f36;
50
+ --vb-btn-primary-hover-to: #865f36;
51
+ --vb-btn-primary-hover-border: #6b4c28;
52
52
 
53
53
  --vb-shadow: var(--vb-shadow-sm);
54
54
  }
@@ -70,9 +70,9 @@
70
70
  --vb-text-muted: #6d7175;
71
71
  --vb-text-subtle: #8c9196;
72
72
  --vb-text-secondary: #5c5f62;
73
- --vb-accent: #008060;
74
- --vb-accent-dim: #006e52;
75
- --vb-accent-soft: rgba(0, 128, 96, 0.08);
73
+ --vb-accent: #9a7340;
74
+ --vb-accent-dim: #7d5e32;
75
+ --vb-accent-soft: rgba(154, 115, 64, 0.1);
76
76
  --vb-accent-contrast: #ffffff;
77
77
  --vb-interactive: #005bd3;
78
78
  --vb-interactive-soft: rgba(0, 91, 211, 0.08);
@@ -96,12 +96,12 @@
96
96
  --vb-actions-from: rgba(255, 255, 255, 0.95);
97
97
  --vb-actions-to: rgba(255, 255, 255, 0.98);
98
98
  --vb-input-focus-bg: #ffffff;
99
- --vb-btn-primary-from: #008060;
100
- --vb-btn-primary-to: #008060;
101
- --vb-btn-primary-border: #006e52;
102
- --vb-btn-primary-hover-from: #006e52;
103
- --vb-btn-primary-hover-to: #006e52;
104
- --vb-btn-primary-hover-border: #005e46;
99
+ --vb-btn-primary-from: #9a7340;
100
+ --vb-btn-primary-to: #9a7340;
101
+ --vb-btn-primary-border: #7d5e32;
102
+ --vb-btn-primary-hover-from: #865f36;
103
+ --vb-btn-primary-hover-to: #865f36;
104
+ --vb-btn-primary-hover-border: #6b4c28;
105
105
 
106
106
  --vb-shadow: var(--vb-shadow-sm);
107
107
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vertebr/react",
3
- "version": "0.8.1",
3
+ "version": "0.10.0",
4
4
  "description": "Vertebr admin dashboard UI",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",