@vertebr/react 0.8.1 → 0.9.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/dist/components/admin/AddonEditor.d.ts +12 -0
  2. package/dist/components/admin/AddonEditor.d.ts.map +1 -0
  3. package/dist/components/admin/AddonEditor.js +25 -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.map +1 -1
  14. package/dist/components/admin/AdminContent.js +11 -3
  15. package/dist/components/admin/AdminHeader.d.ts +2 -3
  16. package/dist/components/admin/AdminHeader.d.ts.map +1 -1
  17. package/dist/components/admin/AdminHeader.js +10 -3
  18. package/dist/components/admin/AdminPoweredBy.d.ts +5 -0
  19. package/dist/components/admin/AdminPoweredBy.d.ts.map +1 -0
  20. package/dist/components/admin/AdminPoweredBy.js +8 -0
  21. package/dist/components/admin/AdminSidebar.d.ts.map +1 -1
  22. package/dist/components/admin/AdminSidebar.js +9 -7
  23. package/dist/components/admin/AdminSyncPage.d.ts +7 -0
  24. package/dist/components/admin/AdminSyncPage.d.ts.map +1 -0
  25. package/dist/components/admin/AdminSyncPage.js +169 -0
  26. package/dist/components/admin/AdminTopBar.d.ts +6 -2
  27. package/dist/components/admin/AdminTopBar.d.ts.map +1 -1
  28. package/dist/components/admin/AdminTopBar.js +3 -3
  29. package/dist/components/admin/PagePreviewPane.d.ts +3 -1
  30. package/dist/components/admin/PagePreviewPane.d.ts.map +1 -1
  31. package/dist/components/admin/PagePreviewPane.js +2 -2
  32. package/dist/components/admin/VertebrAdmin.d.ts.map +1 -1
  33. package/dist/components/admin/VertebrAdmin.js +76 -13
  34. package/dist/components/admin/addonLabels.d.ts +6 -0
  35. package/dist/components/admin/addonLabels.d.ts.map +1 -0
  36. package/dist/components/admin/addonLabels.js +20 -0
  37. package/dist/components/admin/adminSearch.d.ts +12 -0
  38. package/dist/components/admin/adminSearch.d.ts.map +1 -0
  39. package/dist/components/admin/adminSearch.js +111 -0
  40. package/dist/components/admin/breadcrumbs.d.ts.map +1 -1
  41. package/dist/components/admin/breadcrumbs.js +12 -0
  42. package/dist/components/admin/routes.d.ts.map +1 -1
  43. package/dist/components/admin/routes.js +31 -1
  44. package/dist/components/admin/types.d.ts +7 -0
  45. package/dist/components/admin/types.d.ts.map +1 -1
  46. package/dist/components/env/EnvMultiSelect.d.ts +20 -0
  47. package/dist/components/env/EnvMultiSelect.d.ts.map +1 -0
  48. package/dist/components/env/EnvMultiSelect.js +38 -0
  49. package/dist/components/ui/icons.d.ts +2 -0
  50. package/dist/components/ui/icons.d.ts.map +1 -1
  51. package/dist/components/ui/icons.js +12 -0
  52. package/dist/styles/addon.css +540 -0
  53. package/dist/styles/base.css +1 -0
  54. package/dist/styles/font-library.css +2 -0
  55. package/dist/styles/index.css +2 -0
  56. package/dist/styles/main.css +0 -38
  57. package/dist/styles/modal.css +2 -0
  58. package/dist/styles/motion.css +55 -0
  59. package/dist/styles/nav.css +39 -4
  60. package/dist/styles/select.css +6 -0
  61. package/dist/styles/shell.css +193 -6
  62. package/dist/styles/sidebar.css +63 -3
  63. package/dist/styles/sync.css +540 -0
  64. package/dist/styles/table.css +15 -5
  65. package/dist/themes/dark.css +11 -11
  66. package/dist/themes/index.css +1 -0
  67. package/dist/themes/light.css +19 -19
  68. package/package.json +1 -1
@@ -0,0 +1,540 @@
1
+ /* ── Add-ons (overview + editor + thumbnails) ────────── */
2
+
3
+ .vertebr-addon-overview {
4
+ flex: 1 1 auto;
5
+ min-height: 0;
6
+ display: flex;
7
+ flex-direction: column;
8
+ gap: 1.5rem;
9
+ padding: 1rem 1.25rem 1.35rem;
10
+ overflow-y: auto;
11
+ overflow-x: hidden;
12
+ }
13
+
14
+ .vertebr-addon-overview-toolbar {
15
+ display: flex;
16
+ flex-wrap: wrap;
17
+ align-items: stretch;
18
+ justify-content: space-between;
19
+ gap: 1rem 1.5rem;
20
+ padding: 0.95rem 1.1rem;
21
+ border: 1px solid var(--vb-border);
22
+ border-radius: 12px;
23
+ background:
24
+ linear-gradient(
25
+ 135deg,
26
+ color-mix(in srgb, var(--vb-accent) 5%, var(--vb-surface-tint)),
27
+ var(--vb-bg-elevated)
28
+ );
29
+ }
30
+
31
+ .vertebr-addon-overview-intro {
32
+ flex: 1 1 16rem;
33
+ min-width: 0;
34
+ }
35
+
36
+ .vertebr-addon-overview-intro p {
37
+ margin: 0;
38
+ max-width: 36rem;
39
+ color: var(--vb-text-muted);
40
+ font-size: 0.88rem;
41
+ line-height: 1.55;
42
+ }
43
+
44
+ .vertebr-addon-overview-stats {
45
+ flex: 1 1 auto;
46
+ display: flex;
47
+ flex-wrap: wrap;
48
+ align-items: stretch;
49
+ justify-content: flex-end;
50
+ gap: 0.55rem;
51
+ min-width: min(100%, 22rem);
52
+ }
53
+
54
+ .vertebr-addon-stat {
55
+ display: flex;
56
+ flex-direction: column;
57
+ align-items: center;
58
+ justify-content: center;
59
+ gap: 0.1rem;
60
+ min-width: 4.5rem;
61
+ padding: 0.55rem 0.75rem;
62
+ border: 1px solid var(--vb-border);
63
+ border-radius: 10px;
64
+ background: var(--vb-bg-elevated);
65
+ }
66
+
67
+ .vertebr-addon-stat strong {
68
+ font-size: 1.05rem;
69
+ font-weight: 640;
70
+ letter-spacing: -0.02em;
71
+ line-height: 1.1;
72
+ }
73
+
74
+ .vertebr-addon-stat span {
75
+ font-size: 0.64rem;
76
+ font-weight: 560;
77
+ letter-spacing: 0.08em;
78
+ text-transform: uppercase;
79
+ color: var(--vb-text-subtle);
80
+ }
81
+
82
+ .vertebr-addon-stat[data-category="product"] strong {
83
+ color: #3b82f6;
84
+ }
85
+
86
+ .vertebr-addon-stat[data-category="engagement"] strong {
87
+ color: #8b5cf6;
88
+ }
89
+
90
+ .vertebr-addon-stat[data-category="sales"] strong {
91
+ color: #10b981;
92
+ }
93
+
94
+ .vertebr-addon-overview-section {
95
+ display: flex;
96
+ flex-direction: column;
97
+ gap: 0.75rem;
98
+ min-width: 0;
99
+ }
100
+
101
+ .vertebr-addon-section-head {
102
+ display: flex;
103
+ flex-wrap: wrap;
104
+ align-items: flex-end;
105
+ justify-content: space-between;
106
+ gap: 0.65rem 1rem;
107
+ padding-bottom: 0.15rem;
108
+ }
109
+
110
+ .vertebr-addon-section-title h3 {
111
+ margin: 0;
112
+ font-size: 0.95rem;
113
+ font-weight: 620;
114
+ letter-spacing: -0.01em;
115
+ }
116
+
117
+ .vertebr-addon-overview-section[data-category="product"] .vertebr-addon-section-title h3 {
118
+ color: color-mix(in srgb, #3b82f6 72%, var(--vb-text));
119
+ }
120
+
121
+ .vertebr-addon-overview-section[data-category="engagement"] .vertebr-addon-section-title h3 {
122
+ color: color-mix(in srgb, #8b5cf6 72%, var(--vb-text));
123
+ }
124
+
125
+ .vertebr-addon-overview-section[data-category="sales"] .vertebr-addon-section-title h3 {
126
+ color: color-mix(in srgb, #10b981 72%, var(--vb-text));
127
+ }
128
+
129
+ .vertebr-addon-section-title p {
130
+ margin: 0.2rem 0 0;
131
+ color: var(--vb-text-muted);
132
+ font-size: 0.8rem;
133
+ line-height: 1.45;
134
+ }
135
+
136
+ .vertebr-addon-section-count {
137
+ font-family: var(--vb-mono);
138
+ font-size: 0.68rem;
139
+ color: var(--vb-text-subtle);
140
+ border: 1px solid var(--vb-border);
141
+ border-radius: 999px;
142
+ padding: 0.18rem 0.55rem;
143
+ white-space: nowrap;
144
+ }
145
+
146
+ .vertebr-addon-scroll-wrap {
147
+ position: relative;
148
+ min-width: 0;
149
+ }
150
+
151
+ .vertebr-addon-scroll-wrap::before,
152
+ .vertebr-addon-scroll-wrap::after {
153
+ content: "";
154
+ position: absolute;
155
+ top: 0;
156
+ bottom: 0.65rem;
157
+ width: 2.25rem;
158
+ pointer-events: none;
159
+ z-index: 2;
160
+ opacity: 0;
161
+ transition: opacity 160ms ease;
162
+ }
163
+
164
+ .vertebr-addon-scroll-wrap.can-scroll-left::before,
165
+ .vertebr-addon-scroll-wrap.can-scroll-right::after {
166
+ opacity: 1;
167
+ }
168
+
169
+ .vertebr-addon-scroll-wrap::before {
170
+ left: 0;
171
+ background: linear-gradient(
172
+ to right,
173
+ var(--vb-bg-elevated) 15%,
174
+ transparent
175
+ );
176
+ }
177
+
178
+ .vertebr-addon-scroll-wrap::after {
179
+ right: 0;
180
+ background: linear-gradient(
181
+ to left,
182
+ var(--vb-bg-elevated) 15%,
183
+ transparent
184
+ );
185
+ }
186
+
187
+ .vertebr-addon-scroll {
188
+ display: flex;
189
+ gap: 0.85rem;
190
+ overflow-x: auto;
191
+ overflow-y: hidden;
192
+ overscroll-behavior-x: contain;
193
+ scroll-snap-type: x proximity;
194
+ scroll-padding-inline: 0.25rem;
195
+ padding: 0.15rem 0.25rem 0.65rem;
196
+ -webkit-overflow-scrolling: touch;
197
+ scrollbar-width: thin;
198
+ scrollbar-color: color-mix(in srgb, var(--vb-text) 18%, transparent)
199
+ transparent;
200
+ }
201
+
202
+ .vertebr-addon-scroll:focus-visible {
203
+ outline: 2px solid color-mix(in srgb, var(--vb-accent) 55%, transparent);
204
+ outline-offset: 2px;
205
+ border-radius: 8px;
206
+ }
207
+
208
+ .vertebr-addon-scroll::-webkit-scrollbar {
209
+ height: 6px;
210
+ }
211
+
212
+ .vertebr-addon-scroll::-webkit-scrollbar-thumb {
213
+ border-radius: 999px;
214
+ background: color-mix(in srgb, var(--vb-text) 16%, transparent);
215
+ }
216
+
217
+ .vertebr-addon-card {
218
+ flex: 0 0 17.5rem;
219
+ width: 17.5rem;
220
+ min-height: 21.5rem;
221
+ display: flex;
222
+ flex-direction: column;
223
+ scroll-snap-align: start;
224
+ overflow: hidden;
225
+ border: 1px solid var(--vb-border);
226
+ border-radius: 12px;
227
+ background: var(--vb-bg-elevated);
228
+ box-shadow: var(--vb-shadow-sm, 0 1px 2px rgb(0 0 0 / 0.04));
229
+ transition:
230
+ border-color 160ms ease,
231
+ box-shadow 160ms ease,
232
+ transform 160ms ease;
233
+ }
234
+
235
+ .vertebr-addon-card:hover {
236
+ border-color: color-mix(in srgb, var(--vb-accent) 35%, var(--vb-border));
237
+ box-shadow: var(--vb-shadow);
238
+ transform: translateY(-1px);
239
+ }
240
+
241
+ .vertebr-addon-card-body {
242
+ display: flex;
243
+ flex: 1 1 auto;
244
+ flex-direction: column;
245
+ gap: 0.55rem;
246
+ padding: 0.85rem 0.95rem 0.95rem;
247
+ }
248
+
249
+ .vertebr-addon-card-head {
250
+ display: flex;
251
+ align-items: flex-start;
252
+ justify-content: space-between;
253
+ gap: 0.75rem;
254
+ }
255
+
256
+ .vertebr-addon-card-head h4 {
257
+ margin: 0;
258
+ font-size: 0.95rem;
259
+ font-weight: 620;
260
+ line-height: 1.25;
261
+ }
262
+
263
+ .vertebr-addon-card-body p {
264
+ margin: 0;
265
+ flex: 1 1 auto;
266
+ color: var(--vb-text-muted);
267
+ font-size: 0.82rem;
268
+ line-height: 1.5;
269
+ display: -webkit-box;
270
+ -webkit-line-clamp: 3;
271
+ -webkit-box-orient: vertical;
272
+ overflow: hidden;
273
+ }
274
+
275
+ .vertebr-addon-card-foot {
276
+ display: flex;
277
+ flex-wrap: wrap;
278
+ align-items: center;
279
+ justify-content: space-between;
280
+ gap: 0.65rem;
281
+ margin-top: auto;
282
+ padding-top: 0.35rem;
283
+ }
284
+
285
+ .vertebr-addon-route {
286
+ font-family: var(--vb-mono);
287
+ font-size: 0.68rem;
288
+ color: var(--vb-text-subtle);
289
+ }
290
+
291
+ .vertebr-addon-thumb {
292
+ position: relative;
293
+ aspect-ratio: 16 / 10;
294
+ overflow: hidden;
295
+ border-bottom: 1px solid var(--vb-border);
296
+ background:
297
+ linear-gradient(
298
+ 180deg,
299
+ color-mix(in srgb, var(--vb-surface-tint) 80%, transparent),
300
+ var(--vb-bg)
301
+ );
302
+ }
303
+
304
+ .vertebr-addon-thumb-scale {
305
+ position: absolute;
306
+ inset: 0;
307
+ overflow: hidden;
308
+ transform-origin: top left;
309
+ }
310
+
311
+ .vertebr-addon-thumb iframe {
312
+ display: block;
313
+ width: 200%;
314
+ height: 200%;
315
+ border: 0;
316
+ pointer-events: none;
317
+ transform: scale(0.5);
318
+ transform-origin: top left;
319
+ background: #fff;
320
+ }
321
+
322
+ .vertebr-addon-thumb-loading,
323
+ .vertebr-addon-thumb-empty,
324
+ .vertebr-addon-thumb-fallback {
325
+ position: absolute;
326
+ inset: 0;
327
+ display: grid;
328
+ place-items: center;
329
+ padding: 1rem;
330
+ text-align: center;
331
+ color: var(--vb-text-muted);
332
+ font-size: 0.78rem;
333
+ background: var(--vb-surface-tint);
334
+ }
335
+
336
+ .vertebr-addon-thumb-loading {
337
+ background: color-mix(in srgb, var(--vb-bg) 70%, transparent);
338
+ }
339
+
340
+ /* ── Add-on editor header ────────────────────────────── */
341
+
342
+ .vertebr-addon-editor {
343
+ flex: 1 1 0%;
344
+ min-height: 0;
345
+ display: flex;
346
+ flex-direction: column;
347
+ overflow: hidden;
348
+ padding: 0.85rem 1rem 1rem;
349
+ }
350
+
351
+ .vertebr-addon-editor-head {
352
+ flex: 0 0 auto;
353
+ display: flex;
354
+ flex-wrap: wrap;
355
+ align-items: center;
356
+ justify-content: space-between;
357
+ gap: 0.75rem 1.25rem;
358
+ padding: 0.75rem 1rem;
359
+ border: 1px solid var(--vb-border);
360
+ border-radius: 12px;
361
+ background: var(--vb-surface-tint);
362
+ margin-bottom: 0.85rem;
363
+ }
364
+
365
+ .vertebr-addon-editor-head[data-category="product"] {
366
+ border-left: 3px solid #3b82f6;
367
+ }
368
+
369
+ .vertebr-addon-editor-head[data-category="engagement"] {
370
+ border-left: 3px solid #8b5cf6;
371
+ }
372
+
373
+ .vertebr-addon-editor-head[data-category="sales"] {
374
+ border-left: 3px solid #10b981;
375
+ }
376
+
377
+ .vertebr-addon-editor-head-start,
378
+ .vertebr-addon-editor-head-end {
379
+ display: flex;
380
+ flex-wrap: wrap;
381
+ align-items: center;
382
+ gap: 0.55rem;
383
+ }
384
+
385
+ .vertebr-addon-editor-head-end {
386
+ margin-left: auto;
387
+ justify-content: flex-end;
388
+ }
389
+
390
+ .vertebr-addon-category {
391
+ display: inline-flex;
392
+ align-items: center;
393
+ border-radius: 999px;
394
+ padding: 0.28rem 0.72rem;
395
+ font-size: 0.68rem;
396
+ font-weight: 620;
397
+ letter-spacing: 0.08em;
398
+ text-transform: uppercase;
399
+ }
400
+
401
+ .vertebr-addon-category[data-category="product"] {
402
+ color: #bfdbfe;
403
+ background: color-mix(in srgb, #3b82f6 22%, transparent);
404
+ }
405
+
406
+ .vertebr-addon-category[data-category="engagement"] {
407
+ color: #ddd6fe;
408
+ background: color-mix(in srgb, #8b5cf6 22%, transparent);
409
+ }
410
+
411
+ .vertebr-addon-category[data-category="sales"] {
412
+ color: #a7f3d0;
413
+ background: color-mix(in srgb, #10b981 22%, transparent);
414
+ }
415
+
416
+ .vertebr-addon-status {
417
+ display: inline-flex;
418
+ align-items: center;
419
+ gap: 0.4rem;
420
+ border-radius: 999px;
421
+ padding: 0.28rem 0.72rem;
422
+ font-size: 0.72rem;
423
+ font-weight: 520;
424
+ color: var(--vb-text-muted);
425
+ background: color-mix(in srgb, var(--vb-bg) 55%, transparent);
426
+ border: 1px solid var(--vb-border);
427
+ }
428
+
429
+ .vertebr-addon-status-dot {
430
+ width: 0.42rem;
431
+ height: 0.42rem;
432
+ border-radius: 999px;
433
+ background: var(--vb-text-subtle);
434
+ }
435
+
436
+ .vertebr-addon-status[data-enabled="true"] {
437
+ color: #6ee7b7;
438
+ border-color: color-mix(in srgb, #10b981 35%, var(--vb-border));
439
+ background: color-mix(in srgb, #10b981 10%, transparent);
440
+ }
441
+
442
+ .vertebr-addon-status[data-enabled="true"] .vertebr-addon-status-dot {
443
+ background: #34d399;
444
+ box-shadow: 0 0 0 3px color-mix(in srgb, #10b981 22%, transparent);
445
+ }
446
+
447
+ .vertebr-addon-status[data-enabled="false"] .vertebr-addon-status-dot {
448
+ background: var(--vb-text-subtle);
449
+ }
450
+
451
+ .vertebr-addon-preview-label {
452
+ font-size: 0.66rem;
453
+ font-weight: 560;
454
+ letter-spacing: 0.1em;
455
+ text-transform: uppercase;
456
+ color: var(--vb-text-subtle);
457
+ }
458
+
459
+ .vertebr-addon-preview-path {
460
+ font-family: var(--vb-mono);
461
+ font-size: 0.76rem;
462
+ color: var(--vb-text);
463
+ border: 1px solid var(--vb-border);
464
+ border-radius: 8px;
465
+ padding: 0.32rem 0.62rem;
466
+ background: var(--vb-bg-elevated);
467
+ }
468
+
469
+ .vertebr-addon-page-editor {
470
+ flex: 1 1 0%;
471
+ min-height: 0;
472
+ }
473
+
474
+ .vertebr-addon-editor-form-only {
475
+ display: grid;
476
+ grid-template-columns: minmax(0, 1fr) minmax(220px, 0.65fr);
477
+ gap: 1rem;
478
+ min-height: 0;
479
+ }
480
+
481
+ .vertebr-addon-preview-missing {
482
+ display: flex;
483
+ flex-direction: column;
484
+ justify-content: center;
485
+ gap: 0.45rem;
486
+ padding: 1.25rem;
487
+ border: 1px dashed var(--vb-border);
488
+ border-radius: 12px;
489
+ background: var(--vb-surface-tint);
490
+ color: var(--vb-text-muted);
491
+ font-size: 0.84rem;
492
+ line-height: 1.5;
493
+ }
494
+
495
+ .vertebr-addon-preview-missing strong {
496
+ color: var(--vb-text);
497
+ font-weight: 620;
498
+ }
499
+
500
+ .vertebr-addon-preview-missing code {
501
+ font-family: var(--vb-mono);
502
+ font-size: 0.78rem;
503
+ }
504
+
505
+ .vertebr-page-preview[data-preview-kind="addon"] .vertebr-page-preview-stage {
506
+ background:
507
+ radial-gradient(
508
+ circle at 50% 0%,
509
+ color-mix(in srgb, var(--vb-accent) 6%, transparent),
510
+ transparent 58%
511
+ ),
512
+ var(--vb-surface-tint);
513
+ }
514
+
515
+ @media (max-width: 1100px) {
516
+ .vertebr-addon-editor-form-only {
517
+ grid-template-columns: 1fr;
518
+ }
519
+
520
+ .vertebr-addon-editor-head-end {
521
+ width: 100%;
522
+ margin-left: 0;
523
+ justify-content: flex-start;
524
+ }
525
+ }
526
+
527
+ @media (max-width: 720px) {
528
+ .vertebr-addon-overview-toolbar {
529
+ padding: 0.85rem;
530
+ }
531
+
532
+ .vertebr-addon-overview-stats {
533
+ justify-content: flex-start;
534
+ }
535
+
536
+ .vertebr-addon-card {
537
+ flex-basis: 15.5rem;
538
+ width: 15.5rem;
539
+ }
540
+ }
@@ -36,6 +36,7 @@ html:has(.vertebr-error) body {
36
36
  -webkit-font-smoothing: antialiased;
37
37
  isolation: isolate;
38
38
  overflow: clip;
39
+ transition: grid-template-columns var(--vb-duration-normal) var(--vb-ease);
39
40
  }
40
41
 
41
42
  .vertebr-root[data-sidebar-collapsed="true"] {
@@ -236,6 +236,7 @@
236
236
  place-items: center;
237
237
  padding: 1.5rem;
238
238
  background: rgb(0 0 0 / 45%);
239
+ animation: vb-fade-in var(--vb-duration-normal) var(--vb-ease);
239
240
  }
240
241
 
241
242
  .vertebr-font-picker-modal,
@@ -251,6 +252,7 @@
251
252
  background: var(--vb-bg);
252
253
  box-shadow: 0 24px 64px rgb(0 0 0 / 18%);
253
254
  overflow: hidden;
255
+ animation: vb-pop-in var(--vb-duration-normal) var(--vb-ease);
254
256
  }
255
257
 
256
258
  .vertebr-font-preview-modal {
@@ -20,5 +20,7 @@
20
20
  @import "./gallery.css";
21
21
  @import "./font-library.css";
22
22
  @import "./page-preview.css";
23
+ @import "./addon.css";
23
24
  @import "./shell.css";
25
+ @import "./sync.css";
24
26
  @import "./states.css";
@@ -32,13 +32,6 @@
32
32
  overflow: hidden;
33
33
  }
34
34
 
35
- .vertebr-heading-row {
36
- display: flex;
37
- align-items: center;
38
- gap: 0.7rem;
39
- flex-wrap: wrap;
40
- }
41
-
42
35
  .vertebr-header h1 {
43
36
  margin: 0;
44
37
  font-size: 1.55rem;
@@ -52,34 +45,3 @@
52
45
  color: var(--vb-text-muted);
53
46
  font-size: 0.9rem;
54
47
  }
55
-
56
- .vertebr-env-badge {
57
- font-family: var(--vb-mono);
58
- font-size: 0.68rem;
59
- letter-spacing: 0.1em;
60
- text-transform: uppercase;
61
- border: 1px solid var(--vb-border);
62
- border-radius: 999px;
63
- padding: 0.22rem 0.6rem;
64
- color: var(--vb-text-muted);
65
- background: var(--vb-surface-tint);
66
- }
67
-
68
- .vertebr-env-badge[data-tone="danger"] {
69
- color: var(--vb-danger-text);
70
- border-color: color-mix(in srgb, var(--vb-danger) 45%, transparent);
71
- background: var(--vb-danger-soft);
72
- }
73
-
74
- .vertebr-env-badge[data-tone="warn"],
75
- .vertebr-env-badge[data-tone="warning"] {
76
- color: var(--vb-warn-text);
77
- border-color: color-mix(in srgb, var(--vb-accent) 45%, transparent);
78
- background: var(--vb-accent-soft);
79
- }
80
-
81
- .vertebr-env-badge[data-tone="neutral"] {
82
- color: var(--vb-ok);
83
- border-color: color-mix(in srgb, var(--vb-ok) 40%, transparent);
84
- background: var(--vb-ok-soft);
85
- }
@@ -9,6 +9,7 @@
9
9
  padding: 1.25rem;
10
10
  background: color-mix(in srgb, var(--vb-bg) 55%, rgba(0, 0, 0, 0.45));
11
11
  backdrop-filter: blur(6px);
12
+ animation: vb-fade-in var(--vb-duration-normal) var(--vb-ease);
12
13
  }
13
14
 
14
15
  .vertebr-modal {
@@ -23,6 +24,7 @@
23
24
  box-shadow: var(--vb-shadow);
24
25
  color: var(--vb-text);
25
26
  font-family: var(--vb-font);
27
+ animation: vb-pop-in var(--vb-duration-normal) var(--vb-ease);
26
28
  }
27
29
 
28
30
  .vertebr-modal-form {
@@ -0,0 +1,55 @@
1
+ /* ── Motion ──────────────────────────────────────────── */
2
+
3
+ @keyframes vb-fade-in {
4
+ from {
5
+ opacity: 0;
6
+ }
7
+ to {
8
+ opacity: 1;
9
+ }
10
+ }
11
+
12
+ @keyframes vb-pop-in {
13
+ from {
14
+ opacity: 0;
15
+ transform: translateY(-6px) scale(0.98);
16
+ }
17
+ to {
18
+ opacity: 1;
19
+ transform: translateY(0) scale(1);
20
+ }
21
+ }
22
+
23
+ @keyframes vb-slide-up {
24
+ from {
25
+ opacity: 0;
26
+ transform: translateY(8px);
27
+ }
28
+ to {
29
+ opacity: 1;
30
+ transform: translateY(0);
31
+ }
32
+ }
33
+
34
+ @keyframes vb-slide-up-bar {
35
+ from {
36
+ opacity: 0;
37
+ transform: translateY(100%);
38
+ }
39
+ to {
40
+ opacity: 1;
41
+ transform: translateY(0);
42
+ }
43
+ }
44
+
45
+ @media (prefers-reduced-motion: reduce) {
46
+ .vertebr-root,
47
+ .vertebr-root *,
48
+ .vertebr-login,
49
+ .vertebr-login * {
50
+ animation-duration: 0.01ms !important;
51
+ animation-iteration-count: 1 !important;
52
+ transition-duration: 0.01ms !important;
53
+ scroll-behavior: auto !important;
54
+ }
55
+ }