@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
@@ -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,6 +22,20 @@
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
+
25
39
  /* Theme toggle lives in the top bar — hide sidebar-style labels. */
26
40
  .vertebr-topbar .vertebr-nav-label {
27
41
  display: none;
@@ -38,6 +52,38 @@
38
52
  white-space: nowrap;
39
53
  }
40
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
+
41
87
  .vertebr-topbar-toggle {
42
88
  appearance: none;
43
89
  border: 1px solid var(--vb-border);
@@ -56,18 +102,28 @@
56
102
  }
57
103
 
58
104
  .vertebr-topbar-search {
105
+ appearance: none;
59
106
  display: flex;
60
107
  align-items: center;
61
108
  gap: var(--vb-space-200);
62
- min-width: 12rem;
63
- max-width: 22rem;
64
- flex: 1;
109
+ width: 100%;
65
110
  padding: 0.45rem 0.75rem;
66
111
  border: 1px solid var(--vb-border);
67
112
  border-radius: var(--vb-radius-full);
68
113
  background: var(--vb-bg-muted);
69
114
  color: var(--vb-text-subtle);
70
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);
71
127
  }
72
128
 
73
129
  .vertebr-topbar-search kbd {
@@ -77,6 +133,13 @@
77
133
  opacity: 0.7;
78
134
  }
79
135
 
136
+ .vertebr-topbar-sync {
137
+ display: inline-flex;
138
+ align-items: center;
139
+ gap: 0.35rem;
140
+ white-space: nowrap;
141
+ }
142
+
80
143
  .vertebr-topbar-token {
81
144
  display: flex;
82
145
  align-items: center;
@@ -93,11 +156,127 @@
93
156
  }
94
157
 
95
158
  @media (max-width: 900px) {
96
- .vertebr-topbar-search {
159
+ .vertebr-topbar {
160
+ grid-template-columns: minmax(0, 1fr) auto;
161
+ }
162
+
163
+ .vertebr-topbar-center {
164
+ display: none;
165
+ }
166
+
167
+ .vertebr-topbar-sync span {
97
168
  display: none;
98
169
  }
99
170
  }
100
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;
278
+ }
279
+
101
280
  /* ── Save bar ────────────────────────────────────────── */
102
281
 
103
282
  .vertebr-savebar {
@@ -114,6 +293,7 @@
114
293
  border-top: 1px solid var(--vb-border);
115
294
  background: color-mix(in srgb, var(--vb-bg-elevated) 92%, transparent);
116
295
  backdrop-filter: blur(8px);
296
+ animation: vb-slide-up-bar var(--vb-duration-normal) var(--vb-ease);
117
297
  }
118
298
 
119
299
  .vertebr-savebar-message {
@@ -160,6 +340,7 @@
160
340
  background: var(--vb-bg-elevated);
161
341
  box-shadow: var(--vb-shadow-lg);
162
342
  font-size: var(--vb-font-size-200);
343
+ animation: vb-slide-up var(--vb-duration-normal) var(--vb-ease);
163
344
  }
164
345
 
165
346
  .vertebr-toast[data-tone="ok"] {
@@ -228,6 +409,12 @@
228
409
  background: var(--vb-danger-soft);
229
410
  }
230
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
+
231
418
  .vertebr-banner {
232
419
  padding: var(--vb-space-300) var(--vb-space-400);
233
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
+ }