@vertebr/react 0.12.0 → 0.15.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 (29) hide show
  1. package/dist/components/admin/AdminSidebar.d.ts.map +1 -1
  2. package/dist/components/admin/AdminSidebar.js +3 -2
  3. package/dist/components/admin/VertebrAdmin.d.ts.map +1 -1
  4. package/dist/components/admin/VertebrAdmin.js +72 -11
  5. package/dist/components/config/DescriptionInput.d.ts +3 -1
  6. package/dist/components/config/DescriptionInput.d.ts.map +1 -1
  7. package/dist/components/config/DescriptionInput.js +2 -2
  8. package/dist/components/config/DocumentAttachmentField.d.ts +17 -0
  9. package/dist/components/config/DocumentAttachmentField.d.ts.map +1 -0
  10. package/dist/components/config/DocumentAttachmentField.js +32 -0
  11. package/dist/components/config/ImagePickerModal.d.ts +4 -1
  12. package/dist/components/config/ImagePickerModal.d.ts.map +1 -1
  13. package/dist/components/config/ImagePickerModal.js +45 -23
  14. package/dist/components/config/MarkdownDocumentModal.d.ts +19 -0
  15. package/dist/components/config/MarkdownDocumentModal.d.ts.map +1 -0
  16. package/dist/components/config/MarkdownDocumentModal.js +34 -0
  17. package/dist/components/config/form/ConfigField.d.ts.map +1 -1
  18. package/dist/components/config/form/ConfigField.js +95 -5
  19. package/dist/components/gallery/GalleryBoard.d.ts.map +1 -1
  20. package/dist/components/gallery/GalleryBoard.js +37 -5
  21. package/dist/components/ui/icons.d.ts +30 -2
  22. package/dist/components/ui/icons.d.ts.map +1 -1
  23. package/dist/components/ui/icons.js +199 -15
  24. package/dist/lib/documents.d.ts +14 -0
  25. package/dist/lib/documents.d.ts.map +1 -0
  26. package/dist/lib/documents.js +42 -0
  27. package/dist/styles/form.css +15 -0
  28. package/dist/styles/gallery.css +237 -0
  29. package/package.json +3 -1
@@ -58,6 +58,243 @@
58
58
  object-fit: cover;
59
59
  }
60
60
 
61
+ .vertebr-gallery-thumb-file {
62
+ display: grid;
63
+ place-items: center;
64
+ background:
65
+ linear-gradient(
66
+ 145deg,
67
+ color-mix(in srgb, var(--vb-accent) 12%, var(--vb-bg-muted)),
68
+ var(--vb-bg-muted)
69
+ );
70
+ }
71
+
72
+ .vertebr-gallery-file-badge {
73
+ display: inline-flex;
74
+ align-items: center;
75
+ justify-content: center;
76
+ min-width: 3.25rem;
77
+ padding: 0.35rem 0.55rem;
78
+ border-radius: 6px;
79
+ border: 1px solid var(--vb-border);
80
+ background: var(--vb-bg-elevated);
81
+ color: var(--vb-text);
82
+ font-size: 0.75rem;
83
+ font-weight: 700;
84
+ letter-spacing: 0.06em;
85
+ }
86
+
87
+ .vertebr-field-document {
88
+ display: flex;
89
+ flex-wrap: wrap;
90
+ align-items: center;
91
+ gap: 0.55rem;
92
+ margin-bottom: 0.55rem;
93
+ padding: 0.65rem 0.75rem;
94
+ border: 1px solid var(--vb-border);
95
+ border-radius: 8px;
96
+ background: var(--vb-bg-muted);
97
+ }
98
+
99
+ .vertebr-field-document-badge {
100
+ display: inline-flex;
101
+ align-items: center;
102
+ justify-content: center;
103
+ padding: 0.2rem 0.45rem;
104
+ border-radius: 4px;
105
+ border: 1px solid var(--vb-border);
106
+ background: var(--vb-bg-elevated);
107
+ font-size: 0.68rem;
108
+ font-weight: 700;
109
+ letter-spacing: 0.06em;
110
+ }
111
+
112
+ .vertebr-field-document a {
113
+ color: var(--vb-accent);
114
+ font-size: 0.85rem;
115
+ text-decoration: none;
116
+ overflow: hidden;
117
+ text-overflow: ellipsis;
118
+ white-space: nowrap;
119
+ max-width: 100%;
120
+ }
121
+
122
+ .vertebr-field-document a:hover {
123
+ text-decoration: underline;
124
+ }
125
+
126
+ .vertebr-doc-attach {
127
+ display: flex;
128
+ flex-direction: column;
129
+ gap: 0.65rem;
130
+ min-width: 0;
131
+ }
132
+
133
+ .vertebr-doc-attach-card {
134
+ display: flex;
135
+ flex-direction: column;
136
+ gap: 0.85rem;
137
+ min-width: 0;
138
+ padding: 0.9rem 1rem;
139
+ border: 1px solid var(--vb-border);
140
+ border-radius: 12px;
141
+ background: var(--vb-bg-elevated);
142
+ }
143
+
144
+ .vertebr-doc-attach-card[data-has-file="true"] {
145
+ border-color: color-mix(in srgb, var(--vb-accent) 30%, var(--vb-border));
146
+ }
147
+
148
+ .vertebr-doc-attach-main {
149
+ display: flex;
150
+ gap: 0.75rem;
151
+ align-items: flex-start;
152
+ min-width: 0;
153
+ }
154
+
155
+ .vertebr-doc-attach-icon {
156
+ flex: 0 0 auto;
157
+ display: grid;
158
+ place-items: center;
159
+ width: 2.5rem;
160
+ height: 3rem;
161
+ border-radius: 7px;
162
+ border: 1px solid var(--vb-border);
163
+ background: var(--vb-bg-muted);
164
+ color: var(--vb-text);
165
+ font-size: 0.65rem;
166
+ font-weight: 800;
167
+ letter-spacing: 0.06em;
168
+ box-shadow: inset 0 -0.4rem 0 color-mix(in srgb, var(--vb-danger, #b42318) 55%, transparent);
169
+ }
170
+
171
+ .vertebr-doc-attach-copy {
172
+ min-width: 0;
173
+ flex: 1 1 auto;
174
+ }
175
+
176
+ .vertebr-doc-attach-title {
177
+ margin: 0;
178
+ font-size: 0.9rem;
179
+ font-weight: 650;
180
+ color: var(--vb-text);
181
+ overflow-wrap: anywhere;
182
+ }
183
+
184
+ .vertebr-doc-attach-hint {
185
+ margin: 0.3rem 0 0;
186
+ font-size: 0.78rem;
187
+ line-height: 1.4;
188
+ color: var(--vb-text-subtle);
189
+ }
190
+
191
+ .vertebr-doc-attach-actions {
192
+ display: grid;
193
+ grid-template-columns: 1fr 1fr;
194
+ gap: 0.4rem;
195
+ width: 100%;
196
+ }
197
+
198
+ .vertebr-doc-attach-actions .vertebr-btn {
199
+ display: inline-flex;
200
+ align-items: center;
201
+ justify-content: center;
202
+ width: 100%;
203
+ min-width: 0;
204
+ text-align: center;
205
+ text-decoration: none;
206
+ box-sizing: border-box;
207
+ }
208
+
209
+ .vertebr-doc-attach-actions .vertebr-btn-primary {
210
+ grid-column: 1 / -1;
211
+ }
212
+
213
+ .vertebr-doc-attach-url {
214
+ display: flex;
215
+ flex-direction: column;
216
+ gap: 0.35rem;
217
+ font-size: 0.78rem;
218
+ color: var(--vb-text-subtle);
219
+ }
220
+
221
+ .vertebr-doc-attach-url input {
222
+ width: 100%;
223
+ min-width: 0;
224
+ }
225
+
226
+ .vertebr-doc-attach-url-toggle {
227
+ appearance: none;
228
+ align-self: flex-start;
229
+ border: 0;
230
+ padding: 0;
231
+ background: transparent;
232
+ color: var(--vb-text-subtle);
233
+ font: inherit;
234
+ font-size: 0.8rem;
235
+ font-weight: 600;
236
+ cursor: pointer;
237
+ }
238
+
239
+ .vertebr-doc-attach-url-toggle:hover {
240
+ color: var(--vb-accent);
241
+ text-decoration: underline;
242
+ }
243
+
244
+ .vertebr-doc-modal-backdrop {
245
+ align-items: stretch;
246
+ justify-items: center;
247
+ padding: 1.5rem;
248
+ }
249
+
250
+ .vertebr-doc-modal {
251
+ width: min(100%, 920px);
252
+ max-height: min(94vh, 980px);
253
+ }
254
+
255
+ .vertebr-doc-modal-actions {
256
+ display: inline-flex;
257
+ flex-wrap: wrap;
258
+ align-items: center;
259
+ gap: 0.5rem;
260
+ }
261
+
262
+ .vertebr-doc-modal-stats {
263
+ margin-right: 0.35rem;
264
+ font-size: 0.75rem;
265
+ color: var(--vb-text-subtle);
266
+ }
267
+
268
+ .vertebr-doc-modal-body {
269
+ padding: 1.25rem 1.35rem 1.5rem;
270
+ overflow: auto;
271
+ background:
272
+ radial-gradient(
273
+ circle at top,
274
+ color-mix(in srgb, var(--vb-bg-muted) 80%, transparent),
275
+ transparent 55%
276
+ ),
277
+ var(--vb-bg);
278
+ }
279
+
280
+ .vertebr-doc-page {
281
+ margin: 0 auto;
282
+ max-width: 46rem;
283
+ padding: 1.35rem 1.35rem 1.6rem;
284
+ border: 1px solid var(--vb-border);
285
+ border-radius: 4px;
286
+ background: var(--vb-bg-elevated);
287
+ box-shadow:
288
+ 0 1px 0 color-mix(in srgb, #000 6%, transparent),
289
+ 0 18px 40px color-mix(in srgb, #000 12%, transparent);
290
+ }
291
+
292
+ .vertebr-doc-page .vertebr-field-prose {
293
+ border: 0;
294
+ background: transparent;
295
+ box-shadow: none;
296
+ }
297
+
61
298
  .vertebr-gallery-meta {
62
299
  min-width: 0;
63
300
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vertebr/react",
3
- "version": "0.12.0",
3
+ "version": "0.15.0",
4
4
  "description": "Vertebr admin dashboard UI",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -20,6 +20,7 @@
20
20
  "scripts": {
21
21
  "build": "rm -rf dist && tsc -p tsconfig.json && cp src/styles.css dist/styles.css && cp -R src/styles dist/styles && cp -R src/themes dist/themes",
22
22
  "typecheck": "tsc -p tsconfig.json --noEmit",
23
+ "test": "tsx --test test/*.test.ts",
23
24
  "prepublishOnly": "npm run typecheck && npm run build"
24
25
  },
25
26
  "repository": {
@@ -60,6 +61,7 @@
60
61
  "@types/react-dom": "^19.2.3",
61
62
  "react": "^19.2.8",
62
63
  "react-dom": "^19.2.8",
64
+ "tsx": "^4.20.5",
63
65
  "typescript": "^5.9.2"
64
66
  },
65
67
  "license": "SEE LICENSE IN LICENSE"