@vertebr/react 0.8.0 → 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 (70) 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/theme/ThemeToggle.d.ts.map +1 -1
  50. package/dist/components/theme/ThemeToggle.js +1 -1
  51. package/dist/components/ui/icons.d.ts +2 -0
  52. package/dist/components/ui/icons.d.ts.map +1 -1
  53. package/dist/components/ui/icons.js +12 -0
  54. package/dist/styles/addon.css +540 -0
  55. package/dist/styles/base.css +1 -0
  56. package/dist/styles/font-library.css +2 -0
  57. package/dist/styles/index.css +2 -0
  58. package/dist/styles/main.css +0 -38
  59. package/dist/styles/modal.css +2 -0
  60. package/dist/styles/motion.css +55 -0
  61. package/dist/styles/nav.css +39 -4
  62. package/dist/styles/select.css +6 -0
  63. package/dist/styles/shell.css +203 -6
  64. package/dist/styles/sidebar.css +63 -3
  65. package/dist/styles/sync.css +540 -0
  66. package/dist/styles/table.css +15 -5
  67. package/dist/themes/dark.css +11 -11
  68. package/dist/themes/index.css +1 -0
  69. package/dist/themes/light.css +19 -19
  70. package/package.json +1 -1
@@ -20,6 +20,13 @@
20
20
  padding: 0.2rem 0.65rem 0.4rem;
21
21
  font-family: var(--vb-mono);
22
22
  font-weight: 500;
23
+ overflow: hidden;
24
+ max-height: 2rem;
25
+ opacity: 1;
26
+ transition:
27
+ opacity var(--vb-duration-normal) var(--vb-ease),
28
+ max-height var(--vb-duration-normal) var(--vb-ease),
29
+ padding var(--vb-duration-normal) var(--vb-ease);
23
30
  }
24
31
 
25
32
  .vertebr-nav button {
@@ -78,6 +85,30 @@
78
85
  letter-spacing: 0;
79
86
  }
80
87
 
88
+ .vertebr-nav-chevron {
89
+ display: inline-block;
90
+ transition: transform var(--vb-duration-fast) var(--vb-ease);
91
+ }
92
+
93
+ .vertebr-nav-item[data-open="true"] .vertebr-nav-chevron {
94
+ transform: rotate(90deg);
95
+ }
96
+
97
+ .vertebr-nav-sub-wrap {
98
+ display: grid;
99
+ grid-template-rows: 0fr;
100
+ transition: grid-template-rows var(--vb-duration-normal) var(--vb-ease);
101
+ }
102
+
103
+ .vertebr-nav-sub-wrap[data-open="true"] {
104
+ grid-template-rows: 1fr;
105
+ }
106
+
107
+ .vertebr-nav-sub-inner {
108
+ overflow: hidden;
109
+ min-height: 0;
110
+ }
111
+
81
112
  .vertebr-nav-parent-toggle:hover {
82
113
  background: var(--vb-bg-muted) !important;
83
114
  color: var(--vb-text) !important;
@@ -168,14 +199,16 @@
168
199
 
169
200
  .vertebr-sidebar::-webkit-scrollbar,
170
201
  .vertebr-main::-webkit-scrollbar,
171
- .vertebr-table-wrap::-webkit-scrollbar {
202
+ .vertebr-table-wrap::-webkit-scrollbar,
203
+ .vertebr-sync-scroll::-webkit-scrollbar {
172
204
  width: 10px;
173
205
  height: 10px;
174
206
  }
175
207
 
176
208
  .vertebr-sidebar::-webkit-scrollbar-thumb,
177
209
  .vertebr-main::-webkit-scrollbar-thumb,
178
- .vertebr-table-wrap::-webkit-scrollbar-thumb {
210
+ .vertebr-table-wrap::-webkit-scrollbar-thumb,
211
+ .vertebr-sync-scroll::-webkit-scrollbar-thumb {
179
212
  background: var(--vb-bg-muted);
180
213
  border: 2px solid transparent;
181
214
  background-clip: content-box;
@@ -184,13 +217,15 @@
184
217
 
185
218
  .vertebr-sidebar::-webkit-scrollbar-thumb:hover,
186
219
  .vertebr-main::-webkit-scrollbar-thumb:hover,
187
- .vertebr-table-wrap::-webkit-scrollbar-thumb:hover {
220
+ .vertebr-table-wrap::-webkit-scrollbar-thumb:hover,
221
+ .vertebr-sync-scroll::-webkit-scrollbar-thumb:hover {
188
222
  background: var(--vb-border-strong);
189
223
  background-clip: content-box;
190
224
  }
191
225
 
192
226
  .vertebr-sidebar::-webkit-scrollbar-track,
193
227
  .vertebr-main::-webkit-scrollbar-track,
194
- .vertebr-table-wrap::-webkit-scrollbar-track {
228
+ .vertebr-table-wrap::-webkit-scrollbar-track,
229
+ .vertebr-sync-scroll::-webkit-scrollbar-track {
195
230
  background: transparent;
196
231
  }
@@ -38,6 +38,12 @@
38
38
  .vertebr-select-trigger[data-tone="danger"] {
39
39
  border-color: color-mix(in srgb, var(--vb-danger) 45%, transparent);
40
40
  color: var(--vb-danger-text);
41
+ background: var(--vb-danger-soft);
42
+ }
43
+
44
+ .vertebr-select-trigger[data-tone="danger"]:hover {
45
+ border-color: color-mix(in srgb, var(--vb-danger) 60%, transparent);
46
+ background: color-mix(in srgb, var(--vb-danger-soft) 80%, var(--vb-bg-muted));
41
47
  }
42
48
 
43
49
  .vertebr-select-value {
@@ -4,9 +4,9 @@
4
4
  grid-column: 1 / -1;
5
5
  grid-row: 1;
6
6
  z-index: 40;
7
- display: flex;
7
+ display: grid;
8
+ grid-template-columns: minmax(0, 1fr) minmax(12rem, 22rem) minmax(0, 1fr);
8
9
  align-items: center;
9
- justify-content: space-between;
10
10
  gap: var(--vb-space-400);
11
11
  height: var(--vb-topbar-height);
12
12
  padding: 0 var(--vb-space-500);
@@ -22,12 +22,68 @@
22
22
  min-width: 0;
23
23
  }
24
24
 
25
+ .vertebr-topbar-start {
26
+ justify-self: start;
27
+ }
28
+
29
+ .vertebr-topbar-center {
30
+ justify-self: center;
31
+ width: 100%;
32
+ min-width: 0;
33
+ }
34
+
35
+ .vertebr-topbar-end {
36
+ justify-self: end;
37
+ }
38
+
39
+ /* Theme toggle lives in the top bar — hide sidebar-style labels. */
40
+ .vertebr-topbar .vertebr-nav-label {
41
+ display: none;
42
+ }
43
+
44
+ .vertebr-topbar .vertebr-theme {
45
+ padding: 0;
46
+ gap: 0;
47
+ }
48
+
25
49
  .vertebr-topbar-brand {
26
50
  font-size: var(--vb-font-size-200);
27
51
  font-weight: var(--vb-font-weight-semibold);
28
52
  white-space: nowrap;
29
53
  }
30
54
 
55
+ .vertebr-topbar-brand-wrap {
56
+ display: flex;
57
+ align-items: center;
58
+ gap: var(--vb-space-200);
59
+ min-width: 0;
60
+ }
61
+
62
+ .vertebr-topbar-host {
63
+ display: inline-flex;
64
+ align-items: center;
65
+ gap: 0.35rem;
66
+ min-width: 0;
67
+ padding-left: var(--vb-space-200);
68
+ border-left: 1px solid var(--vb-border-subdued);
69
+ color: var(--vb-text-muted);
70
+ font-size: var(--vb-font-size-100);
71
+ font-weight: var(--vb-font-weight-regular);
72
+ }
73
+
74
+ .vertebr-topbar-host-logo {
75
+ width: 1rem;
76
+ height: 1rem;
77
+ border-radius: var(--vb-radius-xs);
78
+ object-fit: contain;
79
+ }
80
+
81
+ .vertebr-topbar-host-label {
82
+ overflow: hidden;
83
+ text-overflow: ellipsis;
84
+ white-space: nowrap;
85
+ }
86
+
31
87
  .vertebr-topbar-toggle {
32
88
  appearance: none;
33
89
  border: 1px solid var(--vb-border);
@@ -46,18 +102,28 @@
46
102
  }
47
103
 
48
104
  .vertebr-topbar-search {
105
+ appearance: none;
49
106
  display: flex;
50
107
  align-items: center;
51
108
  gap: var(--vb-space-200);
52
- min-width: 12rem;
53
- max-width: 22rem;
54
- flex: 1;
109
+ width: 100%;
55
110
  padding: 0.45rem 0.75rem;
56
111
  border: 1px solid var(--vb-border);
57
112
  border-radius: var(--vb-radius-full);
58
113
  background: var(--vb-bg-muted);
59
114
  color: var(--vb-text-subtle);
60
115
  font-size: var(--vb-font-size-100);
116
+ cursor: pointer;
117
+ text-align: left;
118
+ transition:
119
+ border-color 0.15s ease,
120
+ background 0.15s ease;
121
+ }
122
+
123
+ .vertebr-topbar-search:hover {
124
+ border-color: var(--vb-border-strong, var(--vb-border));
125
+ background: var(--vb-bg-hover);
126
+ color: var(--vb-text-secondary);
61
127
  }
62
128
 
63
129
  .vertebr-topbar-search kbd {
@@ -67,6 +133,13 @@
67
133
  opacity: 0.7;
68
134
  }
69
135
 
136
+ .vertebr-topbar-sync {
137
+ display: inline-flex;
138
+ align-items: center;
139
+ gap: 0.35rem;
140
+ white-space: nowrap;
141
+ }
142
+
70
143
  .vertebr-topbar-token {
71
144
  display: flex;
72
145
  align-items: center;
@@ -83,9 +156,125 @@
83
156
  }
84
157
 
85
158
  @media (max-width: 900px) {
86
- .vertebr-topbar-search {
159
+ .vertebr-topbar {
160
+ grid-template-columns: minmax(0, 1fr) auto;
161
+ }
162
+
163
+ .vertebr-topbar-center {
87
164
  display: none;
88
165
  }
166
+
167
+ .vertebr-topbar-sync span {
168
+ display: none;
169
+ }
170
+ }
171
+
172
+ /* ── Command palette ─────────────────────────────────── */
173
+
174
+ .vertebr-command-backdrop {
175
+ position: fixed;
176
+ inset: 0;
177
+ z-index: 90;
178
+ display: grid;
179
+ place-items: start center;
180
+ padding: min(12vh, 6rem) 1rem 1rem;
181
+ background: color-mix(in srgb, var(--vb-bg) 55%, rgba(0, 0, 0, 0.45));
182
+ backdrop-filter: blur(6px);
183
+ animation: vb-fade-in var(--vb-duration-normal) var(--vb-ease);
184
+ }
185
+
186
+ .vertebr-command {
187
+ width: min(100%, 34rem);
188
+ overflow: hidden;
189
+ border: 1px solid var(--vb-border);
190
+ border-radius: var(--vb-radius-lg);
191
+ background: var(--vb-bg-elevated);
192
+ box-shadow: var(--vb-shadow-lg);
193
+ animation: vb-pop-in var(--vb-duration-normal) var(--vb-ease);
194
+ }
195
+
196
+ .vertebr-command-input-wrap {
197
+ display: flex;
198
+ align-items: center;
199
+ gap: var(--vb-space-200);
200
+ padding: var(--vb-space-300) var(--vb-space-400);
201
+ border-bottom: 1px solid var(--vb-border-subdued);
202
+ color: var(--vb-text-muted);
203
+ }
204
+
205
+ .vertebr-command-input {
206
+ flex: 1;
207
+ min-width: 0;
208
+ border: none;
209
+ background: transparent;
210
+ color: var(--vb-text);
211
+ font: inherit;
212
+ font-size: var(--vb-font-size-200);
213
+ outline: none;
214
+ }
215
+
216
+ .vertebr-command-input-wrap kbd {
217
+ font-family: var(--vb-mono);
218
+ font-size: var(--vb-font-size-75);
219
+ color: var(--vb-text-muted);
220
+ }
221
+
222
+ .vertebr-command-results {
223
+ max-height: min(50vh, 24rem);
224
+ overflow: auto;
225
+ padding: var(--vb-space-200);
226
+ }
227
+
228
+ .vertebr-command-empty {
229
+ padding: var(--vb-space-400);
230
+ color: var(--vb-text-muted);
231
+ font-size: var(--vb-font-size-200);
232
+ text-align: center;
233
+ }
234
+
235
+ .vertebr-command-group + .vertebr-command-group {
236
+ margin-top: var(--vb-space-200);
237
+ }
238
+
239
+ .vertebr-command-group-label {
240
+ padding: var(--vb-space-100) var(--vb-space-200);
241
+ color: var(--vb-text-muted);
242
+ font-size: var(--vb-font-size-75);
243
+ font-weight: var(--vb-font-weight-medium);
244
+ text-transform: uppercase;
245
+ letter-spacing: 0.04em;
246
+ }
247
+
248
+ .vertebr-command-item {
249
+ appearance: none;
250
+ display: flex;
251
+ align-items: center;
252
+ justify-content: space-between;
253
+ gap: var(--vb-space-300);
254
+ width: 100%;
255
+ padding: var(--vb-space-200) var(--vb-space-300);
256
+ border: none;
257
+ border-radius: var(--vb-radius-md);
258
+ background: transparent;
259
+ color: var(--vb-text);
260
+ font: inherit;
261
+ font-size: var(--vb-font-size-200);
262
+ text-align: left;
263
+ cursor: pointer;
264
+ }
265
+
266
+ .vertebr-command-item[data-active] {
267
+ background: var(--vb-bg-hover);
268
+ }
269
+
270
+ .vertebr-command-item-label {
271
+ font-weight: var(--vb-font-weight-medium);
272
+ }
273
+
274
+ .vertebr-command-item-hint {
275
+ color: var(--vb-text-muted);
276
+ font-size: var(--vb-font-size-100);
277
+ white-space: nowrap;
89
278
  }
90
279
 
91
280
  /* ── Save bar ────────────────────────────────────────── */
@@ -104,6 +293,7 @@
104
293
  border-top: 1px solid var(--vb-border);
105
294
  background: color-mix(in srgb, var(--vb-bg-elevated) 92%, transparent);
106
295
  backdrop-filter: blur(8px);
296
+ animation: vb-slide-up-bar var(--vb-duration-normal) var(--vb-ease);
107
297
  }
108
298
 
109
299
  .vertebr-savebar-message {
@@ -150,6 +340,7 @@
150
340
  background: var(--vb-bg-elevated);
151
341
  box-shadow: var(--vb-shadow-lg);
152
342
  font-size: var(--vb-font-size-200);
343
+ animation: vb-slide-up var(--vb-duration-normal) var(--vb-ease);
153
344
  }
154
345
 
155
346
  .vertebr-toast[data-tone="ok"] {
@@ -218,6 +409,12 @@
218
409
  background: var(--vb-danger-soft);
219
410
  }
220
411
 
412
+ .vertebr-badge[data-tone="warn"] {
413
+ color: var(--vb-accent);
414
+ border-color: color-mix(in srgb, var(--vb-accent) 35%, transparent);
415
+ background: var(--vb-accent-soft);
416
+ }
417
+
221
418
  .vertebr-banner {
222
419
  padding: var(--vb-space-300) var(--vb-space-400);
223
420
  border-radius: var(--vb-radius-md);
@@ -16,6 +16,7 @@
16
16
  gap: 0;
17
17
  overflow: hidden;
18
18
  isolation: isolate;
19
+ transition: padding-inline var(--vb-duration-normal) var(--vb-ease);
19
20
  }
20
21
 
21
22
  .vertebr-sidebar[data-collapsed="true"] {
@@ -23,13 +24,32 @@
23
24
  }
24
25
 
25
26
  .vertebr-sidebar[data-collapsed="true"] .vertebr-nav-label-text {
26
- display: none;
27
+ opacity: 0;
28
+ max-width: 0;
27
29
  }
28
30
 
29
- .vertebr-sidebar[data-collapsed="true"] .vertebr-nav > button,
30
- .vertebr-sidebar[data-collapsed="true"] .vertebr-nav-parent-label {
31
+ .vertebr-sidebar[data-collapsed="true"] .vertebr-nav-label {
32
+ opacity: 0;
33
+ max-height: 0;
34
+ padding-block: 0;
35
+ margin: 0;
36
+ overflow: hidden;
37
+ }
38
+
39
+ .vertebr-nav-label-text {
40
+ overflow: hidden;
41
+ white-space: nowrap;
42
+ opacity: 1;
43
+ max-width: 12rem;
44
+ transition:
45
+ opacity var(--vb-duration-normal) var(--vb-ease),
46
+ max-width var(--vb-duration-normal) var(--vb-ease);
47
+ }
48
+
49
+ .vertebr-sidebar[data-collapsed="true"] .vertebr-nav-group > button {
31
50
  justify-content: center;
32
51
  padding-inline: var(--vb-space-200);
52
+ gap: 0;
33
53
  }
34
54
 
35
55
  .vertebr-nav-icon {
@@ -61,3 +81,43 @@
61
81
  flex-direction: column;
62
82
  gap: 1rem;
63
83
  }
84
+
85
+ .vertebr-powered-by {
86
+ font-size: var(--vb-font-size-75);
87
+ color: var(--vb-text-subtle);
88
+ line-height: 1.35;
89
+ }
90
+
91
+ .vertebr-powered-by a {
92
+ color: inherit;
93
+ text-decoration: none;
94
+ transition: color 0.15s ease;
95
+ }
96
+
97
+ .vertebr-powered-by a:hover {
98
+ color: var(--vb-accent);
99
+ }
100
+
101
+ .vertebr-powered-by strong {
102
+ color: var(--vb-text-muted);
103
+ font-weight: var(--vb-font-weight-semibold);
104
+ }
105
+
106
+ .vertebr-powered-by[data-collapsed="true"] {
107
+ display: flex;
108
+ justify-content: center;
109
+ }
110
+
111
+ .vertebr-powered-by[data-collapsed="true"] a {
112
+ display: inline-flex;
113
+ align-items: center;
114
+ justify-content: center;
115
+ width: 1.75rem;
116
+ height: 1.75rem;
117
+ border: 1px solid var(--vb-border);
118
+ border-radius: var(--vb-radius-sm);
119
+ font-size: var(--vb-font-size-100);
120
+ font-weight: var(--vb-font-weight-semibold);
121
+ color: var(--vb-accent);
122
+ background: var(--vb-bg-elevated);
123
+ }