@vertebr/react 0.5.0 → 0.6.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 (75) hide show
  1. package/dist/components/admin/AdminContent.d.ts +11 -2
  2. package/dist/components/admin/AdminContent.d.ts.map +1 -1
  3. package/dist/components/admin/AdminContent.js +35 -10
  4. package/dist/components/admin/AdminHeader.d.ts +3 -1
  5. package/dist/components/admin/AdminHeader.d.ts.map +1 -1
  6. package/dist/components/admin/AdminHeader.js +12 -3
  7. package/dist/components/admin/PagePreviewPane.d.ts +14 -0
  8. package/dist/components/admin/PagePreviewPane.d.ts.map +1 -0
  9. package/dist/components/admin/PagePreviewPane.js +121 -0
  10. package/dist/components/admin/VertebrAdmin.d.ts +1 -1
  11. package/dist/components/admin/VertebrAdmin.d.ts.map +1 -1
  12. package/dist/components/admin/VertebrAdmin.js +123 -41
  13. package/dist/components/admin/routes.d.ts +21 -0
  14. package/dist/components/admin/routes.d.ts.map +1 -0
  15. package/dist/components/admin/routes.js +170 -0
  16. package/dist/components/admin/types.d.ts +7 -0
  17. package/dist/components/admin/types.d.ts.map +1 -1
  18. package/dist/components/config/VisibilityEye.d.ts +12 -0
  19. package/dist/components/config/VisibilityEye.d.ts.map +1 -1
  20. package/dist/components/config/VisibilityEye.js +12 -4
  21. package/dist/components/config/form/ConfigField.d.ts +5 -3
  22. package/dist/components/config/form/ConfigField.d.ts.map +1 -1
  23. package/dist/components/config/form/ConfigField.js +7 -3
  24. package/dist/components/config/form/ConfigForm.d.ts +1 -1
  25. package/dist/components/config/form/ConfigForm.d.ts.map +1 -1
  26. package/dist/components/config/form/ConfigForm.js +5 -1
  27. package/dist/components/config/form/RecordConfigForm.d.ts +1 -1
  28. package/dist/components/config/form/RecordConfigForm.d.ts.map +1 -1
  29. package/dist/components/config/form/RecordConfigForm.js +2 -2
  30. package/dist/components/config/form/SettingsConfigForm.d.ts +3 -3
  31. package/dist/components/config/form/SettingsConfigForm.d.ts.map +1 -1
  32. package/dist/components/config/form/SettingsConfigForm.js +7 -2
  33. package/dist/components/config/form/helpers/fields.d.ts +2 -1
  34. package/dist/components/config/form/helpers/fields.d.ts.map +1 -1
  35. package/dist/components/config/form/helpers/fields.js +4 -0
  36. package/dist/components/config/form/types.d.ts +6 -1
  37. package/dist/components/config/form/types.d.ts.map +1 -1
  38. package/dist/components/fonts/FontFaceInjector.d.ts +9 -0
  39. package/dist/components/fonts/FontFaceInjector.d.ts.map +1 -0
  40. package/dist/components/fonts/FontFaceInjector.js +28 -0
  41. package/dist/components/fonts/FontLibraryBoard.d.ts +15 -0
  42. package/dist/components/fonts/FontLibraryBoard.d.ts.map +1 -0
  43. package/dist/components/fonts/FontLibraryBoard.js +41 -0
  44. package/dist/components/fonts/FontPickerField.d.ts +16 -0
  45. package/dist/components/fonts/FontPickerField.d.ts.map +1 -0
  46. package/dist/components/fonts/FontPickerField.js +49 -0
  47. package/dist/components/fonts/FontPreviewModal.d.ts +18 -0
  48. package/dist/components/fonts/FontPreviewModal.d.ts.map +1 -0
  49. package/dist/components/fonts/FontPreviewModal.js +57 -0
  50. package/dist/components/fonts/FontPreviewSample.d.ts +8 -0
  51. package/dist/components/fonts/FontPreviewSample.d.ts.map +1 -0
  52. package/dist/components/fonts/FontPreviewSample.js +13 -0
  53. package/dist/components/fonts/GoogleFontsBrowser.d.ts +8 -0
  54. package/dist/components/fonts/GoogleFontsBrowser.d.ts.map +1 -0
  55. package/dist/components/fonts/GoogleFontsBrowser.js +49 -0
  56. package/dist/components/resources/ResourceCell.js +3 -2
  57. package/dist/components/resources/ResourceTable.d.ts +1 -1
  58. package/dist/components/resources/ResourceTable.d.ts.map +1 -1
  59. package/dist/components/resources/ResourceTable.js +123 -5
  60. package/dist/hooks/useVertebrControls.d.ts +10 -1
  61. package/dist/hooks/useVertebrControls.d.ts.map +1 -1
  62. package/dist/hooks/useVertebrControls.js +32 -3
  63. package/dist/index.d.ts +3 -1
  64. package/dist/index.d.ts.map +1 -1
  65. package/dist/index.js +3 -2
  66. package/dist/styles/base.css +3 -3
  67. package/dist/styles/font-library.css +401 -0
  68. package/dist/styles/form.css +89 -3
  69. package/dist/styles/index.css +3 -1
  70. package/dist/styles/main.css +1 -1
  71. package/dist/styles/page-preview.css +208 -0
  72. package/dist/styles/panel.css +7 -2
  73. package/dist/styles/states.css +6 -3
  74. package/dist/styles/table.css +18 -0
  75. package/package.json +1 -1
@@ -0,0 +1,208 @@
1
+ /* ── Page preview (host iframe + live drafts) ────────── */
2
+
3
+ .vertebr-config-editor {
4
+ flex: 1 1 0%;
5
+ min-width: 0;
6
+ min-height: 0;
7
+ display: flex;
8
+ flex-direction: column;
9
+ overflow: hidden;
10
+ }
11
+
12
+ .vertebr-config-editor > .vertebr-form,
13
+ .vertebr-config-editor > .vertebr-page-editor {
14
+ flex: 1 1 0%;
15
+ min-height: 0;
16
+ }
17
+
18
+ .vertebr-page-editor {
19
+ flex: 1 1 0%;
20
+ min-width: 0;
21
+ min-height: 0;
22
+ display: grid;
23
+ grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr);
24
+ gap: 0;
25
+ overflow: hidden;
26
+ }
27
+
28
+ .vertebr-page-editor-form {
29
+ min-width: 0;
30
+ min-height: 0;
31
+ height: 100%;
32
+ display: flex;
33
+ flex-direction: column;
34
+ overflow: hidden;
35
+ border-right: 1px solid var(--vb-border);
36
+ }
37
+
38
+ .vertebr-page-editor-form .vertebr-form {
39
+ flex: 1 1 0%;
40
+ min-height: 0;
41
+ height: 100%;
42
+ border-radius: 0;
43
+ }
44
+
45
+ .vertebr-page-preview {
46
+ min-width: 0;
47
+ min-height: 0;
48
+ display: flex;
49
+ flex-direction: column;
50
+ background: var(--vb-surface-tint);
51
+ }
52
+
53
+ .vertebr-page-preview-meta {
54
+ flex: 0 0 auto;
55
+ display: flex;
56
+ flex-wrap: wrap;
57
+ align-items: center;
58
+ gap: 0.75rem 1.25rem;
59
+ padding: 0.7rem 1rem;
60
+ border-bottom: 1px solid var(--vb-border);
61
+ background: var(--vb-bg-elevated);
62
+ }
63
+
64
+ .vertebr-page-preview-meta p {
65
+ margin: 0;
66
+ display: flex;
67
+ align-items: baseline;
68
+ gap: 0.45rem;
69
+ font-size: 0.78rem;
70
+ color: var(--vb-text-muted);
71
+ }
72
+
73
+ .vertebr-page-preview-meta span {
74
+ font-family: var(--vb-mono);
75
+ font-size: 0.66rem;
76
+ letter-spacing: 0.1em;
77
+ text-transform: uppercase;
78
+ color: var(--vb-text-subtle);
79
+ }
80
+
81
+ .vertebr-page-preview-meta strong {
82
+ font-weight: 560;
83
+ color: var(--vb-text);
84
+ }
85
+
86
+ .vertebr-page-preview-viewports {
87
+ margin-left: auto;
88
+ display: inline-flex;
89
+ align-items: center;
90
+ gap: 0.15rem;
91
+ padding: 0.15rem;
92
+ border: 1px solid var(--vb-border);
93
+ border-radius: 999px;
94
+ background: var(--vb-bg);
95
+ }
96
+
97
+ .vertebr-page-preview-viewports button {
98
+ appearance: none;
99
+ margin: 0;
100
+ border: 0;
101
+ border-radius: 999px;
102
+ padding: 0.28rem 0.7rem;
103
+ font: inherit;
104
+ font-size: 0.74rem;
105
+ font-weight: 520;
106
+ color: var(--vb-text-muted);
107
+ background: transparent;
108
+ cursor: pointer;
109
+ }
110
+
111
+ .vertebr-page-preview-viewports button:hover {
112
+ color: var(--vb-text);
113
+ }
114
+
115
+ .vertebr-page-preview-viewports button[data-active="true"] {
116
+ color: var(--vb-text);
117
+ background: var(--vb-surface-tint);
118
+ box-shadow: 0 0 0 1px color-mix(in srgb, var(--vb-border) 80%, transparent);
119
+ }
120
+
121
+ .vertebr-page-preview-stage {
122
+ flex: 1 1 auto;
123
+ min-height: 0;
124
+ padding: 0.75rem;
125
+ display: flex;
126
+ justify-content: stretch;
127
+ align-items: stretch;
128
+ }
129
+
130
+ .vertebr-page-preview-stage[data-viewport="mobile"] {
131
+ justify-content: center;
132
+ align-items: center;
133
+ overflow: auto;
134
+ background:
135
+ radial-gradient(
136
+ circle at 50% 0%,
137
+ color-mix(in srgb, var(--vb-text) 4%, transparent),
138
+ transparent 55%
139
+ ),
140
+ var(--vb-surface-tint);
141
+ }
142
+
143
+ .vertebr-page-preview-shell {
144
+ flex: 1 1 auto;
145
+ min-width: 0;
146
+ min-height: 0;
147
+ display: flex;
148
+ }
149
+
150
+ .vertebr-page-preview-stage[data-viewport="mobile"] .vertebr-page-preview-shell {
151
+ flex: 0 0 auto;
152
+ }
153
+
154
+ .vertebr-page-preview-frame {
155
+ flex: 1 1 auto;
156
+ min-width: 0;
157
+ min-height: 0;
158
+ border: 1px solid var(--vb-border);
159
+ border-radius: 10px;
160
+ overflow: hidden;
161
+ background: var(--vb-bg);
162
+ box-shadow: var(--vb-shadow);
163
+ }
164
+
165
+ .vertebr-page-preview-stage[data-viewport="mobile"] .vertebr-page-preview-frame {
166
+ flex: 0 0 auto;
167
+ border-radius: 28px;
168
+ box-shadow:
169
+ 0 0 0 1px color-mix(in srgb, var(--vb-border) 90%, transparent),
170
+ 0 18px 40px color-mix(in srgb, var(--vb-text) 12%, transparent);
171
+ }
172
+
173
+ .vertebr-page-preview-frame iframe {
174
+ display: block;
175
+ width: 100%;
176
+ height: 100%;
177
+ border: 0;
178
+ background: #fff;
179
+ }
180
+
181
+ .vertebr-page-preview-empty {
182
+ height: 100%;
183
+ display: grid;
184
+ place-items: center;
185
+ padding: 1.5rem;
186
+ text-align: center;
187
+ color: var(--vb-text-muted);
188
+ font-size: 0.88rem;
189
+ }
190
+
191
+ @media (max-width: 1100px) {
192
+ .vertebr-page-editor {
193
+ grid-template-columns: 1fr;
194
+ grid-template-rows: minmax(240px, 42%) minmax(0, 1fr);
195
+ overflow: hidden;
196
+ }
197
+
198
+ .vertebr-page-editor-form {
199
+ border-right: 0;
200
+ border-bottom: 1px solid var(--vb-border);
201
+ max-height: none;
202
+ min-height: 0;
203
+ }
204
+
205
+ .vertebr-page-preview-stage {
206
+ min-height: 280px;
207
+ }
208
+ }
@@ -1,7 +1,7 @@
1
1
  /* ── Panel ───────────────────────────────────────────── */
2
2
 
3
3
  .vertebr-panel {
4
- flex: 1 1 auto;
4
+ flex: 1 1 0%;
5
5
  min-width: 0;
6
6
  min-height: 0;
7
7
  display: flex;
@@ -112,13 +112,18 @@
112
112
  }
113
113
 
114
114
  .vertebr-resource-edit {
115
- flex: 1 1 auto;
115
+ flex: 1 1 0%;
116
116
  min-height: 0;
117
117
  display: flex;
118
118
  flex-direction: column;
119
119
  overflow: hidden;
120
120
  }
121
121
 
122
+ .vertebr-resource-edit > .vertebr-form {
123
+ flex: 1 1 0%;
124
+ min-height: 0;
125
+ }
126
+
122
127
  .vertebr-resource-edit-head {
123
128
  flex: 0 0 auto;
124
129
  display: flex;
@@ -125,6 +125,7 @@
125
125
  .vertebr-actions {
126
126
  flex-wrap: wrap;
127
127
  padding: 0.85rem 1rem;
128
+ padding-bottom: calc(0.85rem + env(safe-area-inset-bottom, 0px) + 4.75rem);
128
129
  }
129
130
 
130
131
  .vertebr-resource-edit-head {
@@ -150,17 +151,19 @@
150
151
 
151
152
  .vertebr-main {
152
153
  height: auto;
153
- overflow: visible;
154
+ min-height: 0;
155
+ overflow: hidden;
154
156
  padding: 0;
155
157
  }
156
158
 
157
159
  .vertebr-content {
158
- overflow: visible;
159
- padding: 1.25rem 1rem 2rem;
160
+ overflow: hidden;
161
+ padding: 1.25rem 1rem 1rem;
160
162
  }
161
163
 
162
164
  .vertebr-panel {
163
165
  min-height: min(70vh, 640px);
166
+ max-height: calc(100dvh - 8rem);
164
167
  }
165
168
 
166
169
  .vertebr-table-wrap {
@@ -75,6 +75,24 @@
75
75
  cursor: pointer;
76
76
  }
77
77
 
78
+ .vertebr-visibility-check {
79
+ display: inline-flex;
80
+ align-items: center;
81
+ justify-content: center;
82
+ min-width: 2rem;
83
+ padding: 0.1rem;
84
+ border-radius: 6px;
85
+ }
86
+
87
+ .vertebr-visibility-check[data-dirty="true"] {
88
+ background: color-mix(in srgb, var(--vb-accent) 14%, transparent);
89
+ box-shadow: 0 0 0 1px color-mix(in srgb, var(--vb-accent) 35%, transparent);
90
+ }
91
+
92
+ .vertebr-visibility-check .vertebr-visibility-btn[data-dirty="true"] {
93
+ color: var(--vb-accent);
94
+ }
95
+
78
96
  .vertebr-table-row-clickable {
79
97
  cursor: pointer;
80
98
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vertebr/react",
3
- "version": "0.5.0",
3
+ "version": "0.6.0",
4
4
  "description": "Vertebr admin dashboard UI",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",