json-schema-builder-react 0.0.4 → 0.0.6

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.
package/dist-lib/index.js CHANGED
@@ -1,2339 +1,35 @@
1
- import { jsx as n, jsxs as l, Fragment as et } from "react/jsx-runtime";
2
- import * as I from "react";
3
- import { createContext as tt, useContext as rt, useState as V, useEffect as be, useMemo as nt, useCallback as H } from "react";
4
- import { Slot as ot } from "@radix-ui/react-slot";
5
- import { X as at, ChevronDown as ye, Check as Re, ChevronUp as it, Type as st, Hash as Se, CheckSquare as lt, Braces as dt, List as ct, FileText as mt, Plus as re, Pencil as ut, Trash2 as Le, CheckCircle2 as pt, Copy as ht, Download as ft, ChevronRight as gt, Moon as bt, Sun as yt, Upload as vt } from "lucide-react";
6
- import * as ne from "@radix-ui/react-tooltip";
7
- import * as D from "@radix-ui/react-dialog";
8
- import * as qe from "@radix-ui/react-label";
9
- import * as P from "@radix-ui/react-select";
10
- import * as se from "@radix-ui/react-checkbox";
11
- function Ee(e) {
12
- var r, t, a = "";
13
- if (typeof e == "string" || typeof e == "number") a += e;
14
- else if (typeof e == "object") if (Array.isArray(e)) {
15
- var o = e.length;
16
- for (r = 0; r < o; r++) e[r] && (t = Ee(e[r])) && (a && (a += " "), a += t);
17
- } else for (t in e) e[t] && (a && (a += " "), a += t);
18
- return a;
1
+ import { jsx as e, jsxs as s, Fragment as le } from "react/jsx-runtime";
2
+ import * as y from "react";
3
+ import { createContext as ke, useContext as Ie, useState as O, useEffect as Z, useMemo as Te, useCallback as E } from "react";
4
+ import { Slot as Se } from "@radix-ui/react-slot";
5
+ import { cva as de } from "class-variance-authority";
6
+ import { clsx as De } from "clsx";
7
+ import { twMerge as je } from "tailwind-merge";
8
+ import { ChevronDown as ee, Check as oe, ChevronUp as qe, X as Le, Type as Pe, Hash as se, CheckSquare as Oe, Braces as Re, List as Ee, FileText as Fe, Plus as B, Pencil as ze, Trash2 as ce, CheckCircle2 as Be, Copy as Ae, Download as Me, ChevronRight as $e, Moon as Ke, Sun as Je, Upload as Ve } from "lucide-react";
9
+ import * as F from "@radix-ui/react-tooltip";
10
+ import * as w from "@radix-ui/react-select";
11
+ import * as P from "@radix-ui/react-dialog";
12
+ import * as me from "@radix-ui/react-label";
13
+ import * as V from "@radix-ui/react-checkbox";
14
+ function p(...t) {
15
+ return je(De(t));
19
16
  }
20
- function Me() {
21
- for (var e, r, t = 0, a = "", o = arguments.length; t < o; t++) (e = arguments[t]) && (r = Ee(e)) && (a && (a += " "), a += r);
22
- return a;
23
- }
24
- const Ie = (e) => typeof e == "boolean" ? `${e}` : e === 0 ? "0" : e, Te = Me, Fe = (e, r) => (t) => {
25
- var a;
26
- if ((r == null ? void 0 : r.variants) == null) return Te(e, t == null ? void 0 : t.class, t == null ? void 0 : t.className);
27
- const { variants: o, defaultVariants: i } = r, s = Object.keys(o).map((d) => {
28
- const g = t == null ? void 0 : t[d], N = i == null ? void 0 : i[d];
29
- if (g === null) return null;
30
- const x = Ie(g) || Ie(N);
31
- return o[d][x];
32
- }), c = t && Object.entries(t).reduce((d, g) => {
33
- let [N, x] = g;
34
- return x === void 0 || (d[N] = x), d;
35
- }, {}), m = r == null || (a = r.compoundVariants) === null || a === void 0 ? void 0 : a.reduce((d, g) => {
36
- let { class: N, className: x, ...S } = g;
37
- return Object.entries(S).every((y) => {
38
- let [p, h] = y;
39
- return Array.isArray(h) ? h.includes({
40
- ...i,
41
- ...c
42
- }[p]) : {
43
- ...i,
44
- ...c
45
- }[p] === h;
46
- }) ? [
47
- ...d,
48
- N,
49
- x
50
- ] : d;
51
- }, []);
52
- return Te(e, s, m, t == null ? void 0 : t.class, t == null ? void 0 : t.className);
53
- }, ve = "-", xt = (e) => {
54
- const r = Nt(e), {
55
- conflictingClassGroups: t,
56
- conflictingClassGroupModifiers: a
57
- } = e;
58
- return {
59
- getClassGroupId: (s) => {
60
- const c = s.split(ve);
61
- return c[0] === "" && c.length !== 1 && c.shift(), Oe(c, r) || wt(s);
62
- },
63
- getConflictingClassGroupIds: (s, c) => {
64
- const m = t[s] || [];
65
- return c && a[s] ? [...m, ...a[s]] : m;
66
- }
67
- };
68
- }, Oe = (e, r) => {
69
- var s;
70
- if (e.length === 0)
71
- return r.classGroupId;
72
- const t = e[0], a = r.nextPart.get(t), o = a ? Oe(e.slice(1), a) : void 0;
73
- if (o)
74
- return o;
75
- if (r.validators.length === 0)
76
- return;
77
- const i = e.join(ve);
78
- return (s = r.validators.find(({
79
- validator: c
80
- }) => c(i))) == null ? void 0 : s.classGroupId;
81
- }, ze = /^\[(.+)\]$/, wt = (e) => {
82
- if (ze.test(e)) {
83
- const r = ze.exec(e)[1], t = r == null ? void 0 : r.substring(0, r.indexOf(":"));
84
- if (t)
85
- return "arbitrary.." + t;
86
- }
87
- }, Nt = (e) => {
88
- const {
89
- theme: r,
90
- prefix: t
91
- } = e, a = {
92
- nextPart: /* @__PURE__ */ new Map(),
93
- validators: []
94
- };
95
- return kt(Object.entries(e.classGroups), t).forEach(([i, s]) => {
96
- le(s, a, i, r);
97
- }), a;
98
- }, le = (e, r, t, a) => {
99
- e.forEach((o) => {
100
- if (typeof o == "string") {
101
- const i = o === "" ? r : Pe(r, o);
102
- i.classGroupId = t;
103
- return;
104
- }
105
- if (typeof o == "function") {
106
- if (Ct(o)) {
107
- le(o(a), r, t, a);
108
- return;
109
- }
110
- r.validators.push({
111
- validator: o,
112
- classGroupId: t
113
- });
114
- return;
115
- }
116
- Object.entries(o).forEach(([i, s]) => {
117
- le(s, Pe(r, i), t, a);
118
- });
119
- });
120
- }, Pe = (e, r) => {
121
- let t = e;
122
- return r.split(ve).forEach((a) => {
123
- t.nextPart.has(a) || t.nextPart.set(a, {
124
- nextPart: /* @__PURE__ */ new Map(),
125
- validators: []
126
- }), t = t.nextPart.get(a);
127
- }), t;
128
- }, Ct = (e) => e.isThemeGetter, kt = (e, r) => r ? e.map(([t, a]) => {
129
- const o = a.map((i) => typeof i == "string" ? r + i : typeof i == "object" ? Object.fromEntries(Object.entries(i).map(([s, c]) => [r + s, c])) : i);
130
- return [t, o];
131
- }) : e, St = (e) => {
132
- if (e < 1)
133
- return {
134
- get: () => {
135
- },
136
- set: () => {
137
- }
138
- };
139
- let r = 0, t = /* @__PURE__ */ new Map(), a = /* @__PURE__ */ new Map();
140
- const o = (i, s) => {
141
- t.set(i, s), r++, r > e && (r = 0, a = t, t = /* @__PURE__ */ new Map());
142
- };
143
- return {
144
- get(i) {
145
- let s = t.get(i);
146
- if (s !== void 0)
147
- return s;
148
- if ((s = a.get(i)) !== void 0)
149
- return o(i, s), s;
150
- },
151
- set(i, s) {
152
- t.has(i) ? t.set(i, s) : o(i, s);
153
- }
154
- };
155
- }, Ve = "!", It = (e) => {
156
- const {
157
- separator: r,
158
- experimentalParseClassName: t
159
- } = e, a = r.length === 1, o = r[0], i = r.length, s = (c) => {
160
- const m = [];
161
- let d = 0, g = 0, N;
162
- for (let h = 0; h < c.length; h++) {
163
- let v = c[h];
164
- if (d === 0) {
165
- if (v === o && (a || c.slice(h, h + i) === r)) {
166
- m.push(c.slice(g, h)), g = h + i;
167
- continue;
168
- }
169
- if (v === "/") {
170
- N = h;
171
- continue;
172
- }
173
- }
174
- v === "[" ? d++ : v === "]" && d--;
175
- }
176
- const x = m.length === 0 ? c : c.substring(g), S = x.startsWith(Ve), y = S ? x.substring(1) : x, p = N && N > g ? N - g : void 0;
177
- return {
178
- modifiers: m,
179
- hasImportantModifier: S,
180
- baseClassName: y,
181
- maybePostfixModifierPosition: p
182
- };
183
- };
184
- return t ? (c) => t({
185
- className: c,
186
- parseClassName: s
187
- }) : s;
188
- }, Tt = (e) => {
189
- if (e.length <= 1)
190
- return e;
191
- const r = [];
192
- let t = [];
193
- return e.forEach((a) => {
194
- a[0] === "[" ? (r.push(...t.sort(), a), t = []) : t.push(a);
195
- }), r.push(...t.sort()), r;
196
- }, zt = (e) => ({
197
- cache: St(e.cacheSize),
198
- parseClassName: It(e),
199
- ...xt(e)
200
- }), Pt = /\s+/, At = (e, r) => {
201
- const {
202
- parseClassName: t,
203
- getClassGroupId: a,
204
- getConflictingClassGroupIds: o
205
- } = r, i = [], s = e.trim().split(Pt);
206
- let c = "";
207
- for (let m = s.length - 1; m >= 0; m -= 1) {
208
- const d = s[m], {
209
- modifiers: g,
210
- hasImportantModifier: N,
211
- baseClassName: x,
212
- maybePostfixModifierPosition: S
213
- } = t(d);
214
- let y = !!S, p = a(y ? x.substring(0, S) : x);
215
- if (!p) {
216
- if (!y) {
217
- c = d + (c.length > 0 ? " " + c : c);
218
- continue;
219
- }
220
- if (p = a(x), !p) {
221
- c = d + (c.length > 0 ? " " + c : c);
222
- continue;
223
- }
224
- y = !1;
225
- }
226
- const h = Tt(g).join(":"), v = N ? h + Ve : h, T = v + p;
227
- if (i.includes(T))
228
- continue;
229
- i.push(T);
230
- const u = o(p, y);
231
- for (let A = 0; A < u.length; ++A) {
232
- const O = u[A];
233
- i.push(v + O);
234
- }
235
- c = d + (c.length > 0 ? " " + c : c);
236
- }
237
- return c;
238
- };
239
- function jt() {
240
- let e = 0, r, t, a = "";
241
- for (; e < arguments.length; )
242
- (r = arguments[e++]) && (t = De(r)) && (a && (a += " "), a += t);
243
- return a;
244
- }
245
- const De = (e) => {
246
- if (typeof e == "string")
247
- return e;
248
- let r, t = "";
249
- for (let a = 0; a < e.length; a++)
250
- e[a] && (r = De(e[a])) && (t && (t += " "), t += r);
251
- return t;
252
- };
253
- function Rt(e, ...r) {
254
- let t, a, o, i = s;
255
- function s(m) {
256
- const d = r.reduce((g, N) => N(g), e());
257
- return t = zt(d), a = t.cache.get, o = t.cache.set, i = c, c(m);
258
- }
259
- function c(m) {
260
- const d = a(m);
261
- if (d)
262
- return d;
263
- const g = At(m, t);
264
- return o(m, g), g;
265
- }
266
- return function() {
267
- return i(jt.apply(null, arguments));
268
- };
269
- }
270
- const k = (e) => {
271
- const r = (t) => t[e] || [];
272
- return r.isThemeGetter = !0, r;
273
- }, Ge = /^\[(?:([a-z-]+):)?(.+)\]$/i, Lt = /^\d+\/\d+$/, qt = /* @__PURE__ */ new Set(["px", "full", "screen"]), Et = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/, Mt = /\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/, Ft = /^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/, Ot = /^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/, Vt = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/, $ = (e) => Z(e) || qt.has(e) || Lt.test(e), U = (e) => Q(e, "length", Wt), Z = (e) => !!e && !Number.isNaN(Number(e)), ie = (e) => Q(e, "number", Z), ee = (e) => !!e && Number.isInteger(Number(e)), Dt = (e) => e.endsWith("%") && Z(e.slice(0, -1)), b = (e) => Ge.test(e), W = (e) => Et.test(e), Gt = /* @__PURE__ */ new Set(["length", "size", "percentage"]), Bt = (e) => Q(e, Gt, Be), $t = (e) => Q(e, "position", Be), _t = /* @__PURE__ */ new Set(["image", "url"]), Jt = (e) => Q(e, _t, Ht), Ut = (e) => Q(e, "", Kt), te = () => !0, Q = (e, r, t) => {
274
- const a = Ge.exec(e);
275
- return a ? a[1] ? typeof r == "string" ? a[1] === r : r.has(a[1]) : t(a[2]) : !1;
276
- }, Wt = (e) => (
277
- // `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.
278
- // For example, `hsl(0 0% 0%)` would be classified as a length without this check.
279
- // I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.
280
- Mt.test(e) && !Ft.test(e)
281
- ), Be = () => !1, Kt = (e) => Ot.test(e), Ht = (e) => Vt.test(e), Xt = () => {
282
- const e = k("colors"), r = k("spacing"), t = k("blur"), a = k("brightness"), o = k("borderColor"), i = k("borderRadius"), s = k("borderSpacing"), c = k("borderWidth"), m = k("contrast"), d = k("grayscale"), g = k("hueRotate"), N = k("invert"), x = k("gap"), S = k("gradientColorStops"), y = k("gradientColorStopPositions"), p = k("inset"), h = k("margin"), v = k("opacity"), T = k("padding"), u = k("saturate"), A = k("scale"), O = k("sepia"), _ = k("skew"), M = k("space"), F = k("translate"), E = () => ["auto", "contain", "none"], J = () => ["auto", "hidden", "clip", "visible", "scroll"], G = () => ["auto", b, r], w = () => [b, r], f = () => ["", $, U], q = () => ["auto", Z, b], X = () => ["bottom", "center", "left", "left-bottom", "left-top", "right", "right-bottom", "right-top", "top"], K = () => ["solid", "dashed", "dotted", "double", "none"], Ce = () => ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity"], ae = () => ["start", "end", "center", "between", "around", "evenly", "stretch"], Y = () => ["", "0", b], ke = () => ["auto", "avoid", "all", "avoid-page", "page", "left", "right", "column"], B = () => [Z, b];
283
- return {
284
- cacheSize: 500,
285
- separator: ":",
286
- theme: {
287
- colors: [te],
288
- spacing: [$, U],
289
- blur: ["none", "", W, b],
290
- brightness: B(),
291
- borderColor: [e],
292
- borderRadius: ["none", "", "full", W, b],
293
- borderSpacing: w(),
294
- borderWidth: f(),
295
- contrast: B(),
296
- grayscale: Y(),
297
- hueRotate: B(),
298
- invert: Y(),
299
- gap: w(),
300
- gradientColorStops: [e],
301
- gradientColorStopPositions: [Dt, U],
302
- inset: G(),
303
- margin: G(),
304
- opacity: B(),
305
- padding: w(),
306
- saturate: B(),
307
- scale: B(),
308
- sepia: Y(),
309
- skew: B(),
310
- space: w(),
311
- translate: w()
312
- },
313
- classGroups: {
314
- // Layout
315
- /**
316
- * Aspect Ratio
317
- * @see https://tailwindcss.com/docs/aspect-ratio
318
- */
319
- aspect: [{
320
- aspect: ["auto", "square", "video", b]
321
- }],
322
- /**
323
- * Container
324
- * @see https://tailwindcss.com/docs/container
325
- */
326
- container: ["container"],
327
- /**
328
- * Columns
329
- * @see https://tailwindcss.com/docs/columns
330
- */
331
- columns: [{
332
- columns: [W]
333
- }],
334
- /**
335
- * Break After
336
- * @see https://tailwindcss.com/docs/break-after
337
- */
338
- "break-after": [{
339
- "break-after": ke()
340
- }],
341
- /**
342
- * Break Before
343
- * @see https://tailwindcss.com/docs/break-before
344
- */
345
- "break-before": [{
346
- "break-before": ke()
347
- }],
348
- /**
349
- * Break Inside
350
- * @see https://tailwindcss.com/docs/break-inside
351
- */
352
- "break-inside": [{
353
- "break-inside": ["auto", "avoid", "avoid-page", "avoid-column"]
354
- }],
355
- /**
356
- * Box Decoration Break
357
- * @see https://tailwindcss.com/docs/box-decoration-break
358
- */
359
- "box-decoration": [{
360
- "box-decoration": ["slice", "clone"]
361
- }],
362
- /**
363
- * Box Sizing
364
- * @see https://tailwindcss.com/docs/box-sizing
365
- */
366
- box: [{
367
- box: ["border", "content"]
368
- }],
369
- /**
370
- * Display
371
- * @see https://tailwindcss.com/docs/display
372
- */
373
- display: ["block", "inline-block", "inline", "flex", "inline-flex", "table", "inline-table", "table-caption", "table-cell", "table-column", "table-column-group", "table-footer-group", "table-header-group", "table-row-group", "table-row", "flow-root", "grid", "inline-grid", "contents", "list-item", "hidden"],
374
- /**
375
- * Floats
376
- * @see https://tailwindcss.com/docs/float
377
- */
378
- float: [{
379
- float: ["right", "left", "none", "start", "end"]
380
- }],
381
- /**
382
- * Clear
383
- * @see https://tailwindcss.com/docs/clear
384
- */
385
- clear: [{
386
- clear: ["left", "right", "both", "none", "start", "end"]
387
- }],
388
- /**
389
- * Isolation
390
- * @see https://tailwindcss.com/docs/isolation
391
- */
392
- isolation: ["isolate", "isolation-auto"],
393
- /**
394
- * Object Fit
395
- * @see https://tailwindcss.com/docs/object-fit
396
- */
397
- "object-fit": [{
398
- object: ["contain", "cover", "fill", "none", "scale-down"]
399
- }],
400
- /**
401
- * Object Position
402
- * @see https://tailwindcss.com/docs/object-position
403
- */
404
- "object-position": [{
405
- object: [...X(), b]
406
- }],
407
- /**
408
- * Overflow
409
- * @see https://tailwindcss.com/docs/overflow
410
- */
411
- overflow: [{
412
- overflow: J()
413
- }],
414
- /**
415
- * Overflow X
416
- * @see https://tailwindcss.com/docs/overflow
417
- */
418
- "overflow-x": [{
419
- "overflow-x": J()
420
- }],
421
- /**
422
- * Overflow Y
423
- * @see https://tailwindcss.com/docs/overflow
424
- */
425
- "overflow-y": [{
426
- "overflow-y": J()
427
- }],
428
- /**
429
- * Overscroll Behavior
430
- * @see https://tailwindcss.com/docs/overscroll-behavior
431
- */
432
- overscroll: [{
433
- overscroll: E()
434
- }],
435
- /**
436
- * Overscroll Behavior X
437
- * @see https://tailwindcss.com/docs/overscroll-behavior
438
- */
439
- "overscroll-x": [{
440
- "overscroll-x": E()
441
- }],
442
- /**
443
- * Overscroll Behavior Y
444
- * @see https://tailwindcss.com/docs/overscroll-behavior
445
- */
446
- "overscroll-y": [{
447
- "overscroll-y": E()
448
- }],
449
- /**
450
- * Position
451
- * @see https://tailwindcss.com/docs/position
452
- */
453
- position: ["static", "fixed", "absolute", "relative", "sticky"],
454
- /**
455
- * Top / Right / Bottom / Left
456
- * @see https://tailwindcss.com/docs/top-right-bottom-left
457
- */
458
- inset: [{
459
- inset: [p]
460
- }],
461
- /**
462
- * Right / Left
463
- * @see https://tailwindcss.com/docs/top-right-bottom-left
464
- */
465
- "inset-x": [{
466
- "inset-x": [p]
467
- }],
468
- /**
469
- * Top / Bottom
470
- * @see https://tailwindcss.com/docs/top-right-bottom-left
471
- */
472
- "inset-y": [{
473
- "inset-y": [p]
474
- }],
475
- /**
476
- * Start
477
- * @see https://tailwindcss.com/docs/top-right-bottom-left
478
- */
479
- start: [{
480
- start: [p]
481
- }],
482
- /**
483
- * End
484
- * @see https://tailwindcss.com/docs/top-right-bottom-left
485
- */
486
- end: [{
487
- end: [p]
488
- }],
489
- /**
490
- * Top
491
- * @see https://tailwindcss.com/docs/top-right-bottom-left
492
- */
493
- top: [{
494
- top: [p]
495
- }],
496
- /**
497
- * Right
498
- * @see https://tailwindcss.com/docs/top-right-bottom-left
499
- */
500
- right: [{
501
- right: [p]
502
- }],
503
- /**
504
- * Bottom
505
- * @see https://tailwindcss.com/docs/top-right-bottom-left
506
- */
507
- bottom: [{
508
- bottom: [p]
509
- }],
510
- /**
511
- * Left
512
- * @see https://tailwindcss.com/docs/top-right-bottom-left
513
- */
514
- left: [{
515
- left: [p]
516
- }],
517
- /**
518
- * Visibility
519
- * @see https://tailwindcss.com/docs/visibility
520
- */
521
- visibility: ["visible", "invisible", "collapse"],
522
- /**
523
- * Z-Index
524
- * @see https://tailwindcss.com/docs/z-index
525
- */
526
- z: [{
527
- z: ["auto", ee, b]
528
- }],
529
- // Flexbox and Grid
530
- /**
531
- * Flex Basis
532
- * @see https://tailwindcss.com/docs/flex-basis
533
- */
534
- basis: [{
535
- basis: G()
536
- }],
537
- /**
538
- * Flex Direction
539
- * @see https://tailwindcss.com/docs/flex-direction
540
- */
541
- "flex-direction": [{
542
- flex: ["row", "row-reverse", "col", "col-reverse"]
543
- }],
544
- /**
545
- * Flex Wrap
546
- * @see https://tailwindcss.com/docs/flex-wrap
547
- */
548
- "flex-wrap": [{
549
- flex: ["wrap", "wrap-reverse", "nowrap"]
550
- }],
551
- /**
552
- * Flex
553
- * @see https://tailwindcss.com/docs/flex
554
- */
555
- flex: [{
556
- flex: ["1", "auto", "initial", "none", b]
557
- }],
558
- /**
559
- * Flex Grow
560
- * @see https://tailwindcss.com/docs/flex-grow
561
- */
562
- grow: [{
563
- grow: Y()
564
- }],
565
- /**
566
- * Flex Shrink
567
- * @see https://tailwindcss.com/docs/flex-shrink
568
- */
569
- shrink: [{
570
- shrink: Y()
571
- }],
572
- /**
573
- * Order
574
- * @see https://tailwindcss.com/docs/order
575
- */
576
- order: [{
577
- order: ["first", "last", "none", ee, b]
578
- }],
579
- /**
580
- * Grid Template Columns
581
- * @see https://tailwindcss.com/docs/grid-template-columns
582
- */
583
- "grid-cols": [{
584
- "grid-cols": [te]
585
- }],
586
- /**
587
- * Grid Column Start / End
588
- * @see https://tailwindcss.com/docs/grid-column
589
- */
590
- "col-start-end": [{
591
- col: ["auto", {
592
- span: ["full", ee, b]
593
- }, b]
594
- }],
595
- /**
596
- * Grid Column Start
597
- * @see https://tailwindcss.com/docs/grid-column
598
- */
599
- "col-start": [{
600
- "col-start": q()
601
- }],
602
- /**
603
- * Grid Column End
604
- * @see https://tailwindcss.com/docs/grid-column
605
- */
606
- "col-end": [{
607
- "col-end": q()
608
- }],
609
- /**
610
- * Grid Template Rows
611
- * @see https://tailwindcss.com/docs/grid-template-rows
612
- */
613
- "grid-rows": [{
614
- "grid-rows": [te]
615
- }],
616
- /**
617
- * Grid Row Start / End
618
- * @see https://tailwindcss.com/docs/grid-row
619
- */
620
- "row-start-end": [{
621
- row: ["auto", {
622
- span: [ee, b]
623
- }, b]
624
- }],
625
- /**
626
- * Grid Row Start
627
- * @see https://tailwindcss.com/docs/grid-row
628
- */
629
- "row-start": [{
630
- "row-start": q()
631
- }],
632
- /**
633
- * Grid Row End
634
- * @see https://tailwindcss.com/docs/grid-row
635
- */
636
- "row-end": [{
637
- "row-end": q()
638
- }],
639
- /**
640
- * Grid Auto Flow
641
- * @see https://tailwindcss.com/docs/grid-auto-flow
642
- */
643
- "grid-flow": [{
644
- "grid-flow": ["row", "col", "dense", "row-dense", "col-dense"]
645
- }],
646
- /**
647
- * Grid Auto Columns
648
- * @see https://tailwindcss.com/docs/grid-auto-columns
649
- */
650
- "auto-cols": [{
651
- "auto-cols": ["auto", "min", "max", "fr", b]
652
- }],
653
- /**
654
- * Grid Auto Rows
655
- * @see https://tailwindcss.com/docs/grid-auto-rows
656
- */
657
- "auto-rows": [{
658
- "auto-rows": ["auto", "min", "max", "fr", b]
659
- }],
660
- /**
661
- * Gap
662
- * @see https://tailwindcss.com/docs/gap
663
- */
664
- gap: [{
665
- gap: [x]
666
- }],
667
- /**
668
- * Gap X
669
- * @see https://tailwindcss.com/docs/gap
670
- */
671
- "gap-x": [{
672
- "gap-x": [x]
673
- }],
674
- /**
675
- * Gap Y
676
- * @see https://tailwindcss.com/docs/gap
677
- */
678
- "gap-y": [{
679
- "gap-y": [x]
680
- }],
681
- /**
682
- * Justify Content
683
- * @see https://tailwindcss.com/docs/justify-content
684
- */
685
- "justify-content": [{
686
- justify: ["normal", ...ae()]
687
- }],
688
- /**
689
- * Justify Items
690
- * @see https://tailwindcss.com/docs/justify-items
691
- */
692
- "justify-items": [{
693
- "justify-items": ["start", "end", "center", "stretch"]
694
- }],
695
- /**
696
- * Justify Self
697
- * @see https://tailwindcss.com/docs/justify-self
698
- */
699
- "justify-self": [{
700
- "justify-self": ["auto", "start", "end", "center", "stretch"]
701
- }],
702
- /**
703
- * Align Content
704
- * @see https://tailwindcss.com/docs/align-content
705
- */
706
- "align-content": [{
707
- content: ["normal", ...ae(), "baseline"]
708
- }],
709
- /**
710
- * Align Items
711
- * @see https://tailwindcss.com/docs/align-items
712
- */
713
- "align-items": [{
714
- items: ["start", "end", "center", "baseline", "stretch"]
715
- }],
716
- /**
717
- * Align Self
718
- * @see https://tailwindcss.com/docs/align-self
719
- */
720
- "align-self": [{
721
- self: ["auto", "start", "end", "center", "stretch", "baseline"]
722
- }],
723
- /**
724
- * Place Content
725
- * @see https://tailwindcss.com/docs/place-content
726
- */
727
- "place-content": [{
728
- "place-content": [...ae(), "baseline"]
729
- }],
730
- /**
731
- * Place Items
732
- * @see https://tailwindcss.com/docs/place-items
733
- */
734
- "place-items": [{
735
- "place-items": ["start", "end", "center", "baseline", "stretch"]
736
- }],
737
- /**
738
- * Place Self
739
- * @see https://tailwindcss.com/docs/place-self
740
- */
741
- "place-self": [{
742
- "place-self": ["auto", "start", "end", "center", "stretch"]
743
- }],
744
- // Spacing
745
- /**
746
- * Padding
747
- * @see https://tailwindcss.com/docs/padding
748
- */
749
- p: [{
750
- p: [T]
751
- }],
752
- /**
753
- * Padding X
754
- * @see https://tailwindcss.com/docs/padding
755
- */
756
- px: [{
757
- px: [T]
758
- }],
759
- /**
760
- * Padding Y
761
- * @see https://tailwindcss.com/docs/padding
762
- */
763
- py: [{
764
- py: [T]
765
- }],
766
- /**
767
- * Padding Start
768
- * @see https://tailwindcss.com/docs/padding
769
- */
770
- ps: [{
771
- ps: [T]
772
- }],
773
- /**
774
- * Padding End
775
- * @see https://tailwindcss.com/docs/padding
776
- */
777
- pe: [{
778
- pe: [T]
779
- }],
780
- /**
781
- * Padding Top
782
- * @see https://tailwindcss.com/docs/padding
783
- */
784
- pt: [{
785
- pt: [T]
786
- }],
787
- /**
788
- * Padding Right
789
- * @see https://tailwindcss.com/docs/padding
790
- */
791
- pr: [{
792
- pr: [T]
793
- }],
794
- /**
795
- * Padding Bottom
796
- * @see https://tailwindcss.com/docs/padding
797
- */
798
- pb: [{
799
- pb: [T]
800
- }],
801
- /**
802
- * Padding Left
803
- * @see https://tailwindcss.com/docs/padding
804
- */
805
- pl: [{
806
- pl: [T]
807
- }],
808
- /**
809
- * Margin
810
- * @see https://tailwindcss.com/docs/margin
811
- */
812
- m: [{
813
- m: [h]
814
- }],
815
- /**
816
- * Margin X
817
- * @see https://tailwindcss.com/docs/margin
818
- */
819
- mx: [{
820
- mx: [h]
821
- }],
822
- /**
823
- * Margin Y
824
- * @see https://tailwindcss.com/docs/margin
825
- */
826
- my: [{
827
- my: [h]
828
- }],
829
- /**
830
- * Margin Start
831
- * @see https://tailwindcss.com/docs/margin
832
- */
833
- ms: [{
834
- ms: [h]
835
- }],
836
- /**
837
- * Margin End
838
- * @see https://tailwindcss.com/docs/margin
839
- */
840
- me: [{
841
- me: [h]
842
- }],
843
- /**
844
- * Margin Top
845
- * @see https://tailwindcss.com/docs/margin
846
- */
847
- mt: [{
848
- mt: [h]
849
- }],
850
- /**
851
- * Margin Right
852
- * @see https://tailwindcss.com/docs/margin
853
- */
854
- mr: [{
855
- mr: [h]
856
- }],
857
- /**
858
- * Margin Bottom
859
- * @see https://tailwindcss.com/docs/margin
860
- */
861
- mb: [{
862
- mb: [h]
863
- }],
864
- /**
865
- * Margin Left
866
- * @see https://tailwindcss.com/docs/margin
867
- */
868
- ml: [{
869
- ml: [h]
870
- }],
871
- /**
872
- * Space Between X
873
- * @see https://tailwindcss.com/docs/space
874
- */
875
- "space-x": [{
876
- "space-x": [M]
877
- }],
878
- /**
879
- * Space Between X Reverse
880
- * @see https://tailwindcss.com/docs/space
881
- */
882
- "space-x-reverse": ["space-x-reverse"],
883
- /**
884
- * Space Between Y
885
- * @see https://tailwindcss.com/docs/space
886
- */
887
- "space-y": [{
888
- "space-y": [M]
889
- }],
890
- /**
891
- * Space Between Y Reverse
892
- * @see https://tailwindcss.com/docs/space
893
- */
894
- "space-y-reverse": ["space-y-reverse"],
895
- // Sizing
896
- /**
897
- * Width
898
- * @see https://tailwindcss.com/docs/width
899
- */
900
- w: [{
901
- w: ["auto", "min", "max", "fit", "svw", "lvw", "dvw", b, r]
902
- }],
903
- /**
904
- * Min-Width
905
- * @see https://tailwindcss.com/docs/min-width
906
- */
907
- "min-w": [{
908
- "min-w": [b, r, "min", "max", "fit"]
909
- }],
910
- /**
911
- * Max-Width
912
- * @see https://tailwindcss.com/docs/max-width
913
- */
914
- "max-w": [{
915
- "max-w": [b, r, "none", "full", "min", "max", "fit", "prose", {
916
- screen: [W]
917
- }, W]
918
- }],
919
- /**
920
- * Height
921
- * @see https://tailwindcss.com/docs/height
922
- */
923
- h: [{
924
- h: [b, r, "auto", "min", "max", "fit", "svh", "lvh", "dvh"]
925
- }],
926
- /**
927
- * Min-Height
928
- * @see https://tailwindcss.com/docs/min-height
929
- */
930
- "min-h": [{
931
- "min-h": [b, r, "min", "max", "fit", "svh", "lvh", "dvh"]
932
- }],
933
- /**
934
- * Max-Height
935
- * @see https://tailwindcss.com/docs/max-height
936
- */
937
- "max-h": [{
938
- "max-h": [b, r, "min", "max", "fit", "svh", "lvh", "dvh"]
939
- }],
940
- /**
941
- * Size
942
- * @see https://tailwindcss.com/docs/size
943
- */
944
- size: [{
945
- size: [b, r, "auto", "min", "max", "fit"]
946
- }],
947
- // Typography
948
- /**
949
- * Font Size
950
- * @see https://tailwindcss.com/docs/font-size
951
- */
952
- "font-size": [{
953
- text: ["base", W, U]
954
- }],
955
- /**
956
- * Font Smoothing
957
- * @see https://tailwindcss.com/docs/font-smoothing
958
- */
959
- "font-smoothing": ["antialiased", "subpixel-antialiased"],
960
- /**
961
- * Font Style
962
- * @see https://tailwindcss.com/docs/font-style
963
- */
964
- "font-style": ["italic", "not-italic"],
965
- /**
966
- * Font Weight
967
- * @see https://tailwindcss.com/docs/font-weight
968
- */
969
- "font-weight": [{
970
- font: ["thin", "extralight", "light", "normal", "medium", "semibold", "bold", "extrabold", "black", ie]
971
- }],
972
- /**
973
- * Font Family
974
- * @see https://tailwindcss.com/docs/font-family
975
- */
976
- "font-family": [{
977
- font: [te]
978
- }],
979
- /**
980
- * Font Variant Numeric
981
- * @see https://tailwindcss.com/docs/font-variant-numeric
982
- */
983
- "fvn-normal": ["normal-nums"],
984
- /**
985
- * Font Variant Numeric
986
- * @see https://tailwindcss.com/docs/font-variant-numeric
987
- */
988
- "fvn-ordinal": ["ordinal"],
989
- /**
990
- * Font Variant Numeric
991
- * @see https://tailwindcss.com/docs/font-variant-numeric
992
- */
993
- "fvn-slashed-zero": ["slashed-zero"],
994
- /**
995
- * Font Variant Numeric
996
- * @see https://tailwindcss.com/docs/font-variant-numeric
997
- */
998
- "fvn-figure": ["lining-nums", "oldstyle-nums"],
999
- /**
1000
- * Font Variant Numeric
1001
- * @see https://tailwindcss.com/docs/font-variant-numeric
1002
- */
1003
- "fvn-spacing": ["proportional-nums", "tabular-nums"],
1004
- /**
1005
- * Font Variant Numeric
1006
- * @see https://tailwindcss.com/docs/font-variant-numeric
1007
- */
1008
- "fvn-fraction": ["diagonal-fractions", "stacked-fractions"],
1009
- /**
1010
- * Letter Spacing
1011
- * @see https://tailwindcss.com/docs/letter-spacing
1012
- */
1013
- tracking: [{
1014
- tracking: ["tighter", "tight", "normal", "wide", "wider", "widest", b]
1015
- }],
1016
- /**
1017
- * Line Clamp
1018
- * @see https://tailwindcss.com/docs/line-clamp
1019
- */
1020
- "line-clamp": [{
1021
- "line-clamp": ["none", Z, ie]
1022
- }],
1023
- /**
1024
- * Line Height
1025
- * @see https://tailwindcss.com/docs/line-height
1026
- */
1027
- leading: [{
1028
- leading: ["none", "tight", "snug", "normal", "relaxed", "loose", $, b]
1029
- }],
1030
- /**
1031
- * List Style Image
1032
- * @see https://tailwindcss.com/docs/list-style-image
1033
- */
1034
- "list-image": [{
1035
- "list-image": ["none", b]
1036
- }],
1037
- /**
1038
- * List Style Type
1039
- * @see https://tailwindcss.com/docs/list-style-type
1040
- */
1041
- "list-style-type": [{
1042
- list: ["none", "disc", "decimal", b]
1043
- }],
1044
- /**
1045
- * List Style Position
1046
- * @see https://tailwindcss.com/docs/list-style-position
1047
- */
1048
- "list-style-position": [{
1049
- list: ["inside", "outside"]
1050
- }],
1051
- /**
1052
- * Placeholder Color
1053
- * @deprecated since Tailwind CSS v3.0.0
1054
- * @see https://tailwindcss.com/docs/placeholder-color
1055
- */
1056
- "placeholder-color": [{
1057
- placeholder: [e]
1058
- }],
1059
- /**
1060
- * Placeholder Opacity
1061
- * @see https://tailwindcss.com/docs/placeholder-opacity
1062
- */
1063
- "placeholder-opacity": [{
1064
- "placeholder-opacity": [v]
1065
- }],
1066
- /**
1067
- * Text Alignment
1068
- * @see https://tailwindcss.com/docs/text-align
1069
- */
1070
- "text-alignment": [{
1071
- text: ["left", "center", "right", "justify", "start", "end"]
1072
- }],
1073
- /**
1074
- * Text Color
1075
- * @see https://tailwindcss.com/docs/text-color
1076
- */
1077
- "text-color": [{
1078
- text: [e]
1079
- }],
1080
- /**
1081
- * Text Opacity
1082
- * @see https://tailwindcss.com/docs/text-opacity
1083
- */
1084
- "text-opacity": [{
1085
- "text-opacity": [v]
1086
- }],
1087
- /**
1088
- * Text Decoration
1089
- * @see https://tailwindcss.com/docs/text-decoration
1090
- */
1091
- "text-decoration": ["underline", "overline", "line-through", "no-underline"],
1092
- /**
1093
- * Text Decoration Style
1094
- * @see https://tailwindcss.com/docs/text-decoration-style
1095
- */
1096
- "text-decoration-style": [{
1097
- decoration: [...K(), "wavy"]
1098
- }],
1099
- /**
1100
- * Text Decoration Thickness
1101
- * @see https://tailwindcss.com/docs/text-decoration-thickness
1102
- */
1103
- "text-decoration-thickness": [{
1104
- decoration: ["auto", "from-font", $, U]
1105
- }],
1106
- /**
1107
- * Text Underline Offset
1108
- * @see https://tailwindcss.com/docs/text-underline-offset
1109
- */
1110
- "underline-offset": [{
1111
- "underline-offset": ["auto", $, b]
1112
- }],
1113
- /**
1114
- * Text Decoration Color
1115
- * @see https://tailwindcss.com/docs/text-decoration-color
1116
- */
1117
- "text-decoration-color": [{
1118
- decoration: [e]
1119
- }],
1120
- /**
1121
- * Text Transform
1122
- * @see https://tailwindcss.com/docs/text-transform
1123
- */
1124
- "text-transform": ["uppercase", "lowercase", "capitalize", "normal-case"],
1125
- /**
1126
- * Text Overflow
1127
- * @see https://tailwindcss.com/docs/text-overflow
1128
- */
1129
- "text-overflow": ["truncate", "text-ellipsis", "text-clip"],
1130
- /**
1131
- * Text Wrap
1132
- * @see https://tailwindcss.com/docs/text-wrap
1133
- */
1134
- "text-wrap": [{
1135
- text: ["wrap", "nowrap", "balance", "pretty"]
1136
- }],
1137
- /**
1138
- * Text Indent
1139
- * @see https://tailwindcss.com/docs/text-indent
1140
- */
1141
- indent: [{
1142
- indent: w()
1143
- }],
1144
- /**
1145
- * Vertical Alignment
1146
- * @see https://tailwindcss.com/docs/vertical-align
1147
- */
1148
- "vertical-align": [{
1149
- align: ["baseline", "top", "middle", "bottom", "text-top", "text-bottom", "sub", "super", b]
1150
- }],
1151
- /**
1152
- * Whitespace
1153
- * @see https://tailwindcss.com/docs/whitespace
1154
- */
1155
- whitespace: [{
1156
- whitespace: ["normal", "nowrap", "pre", "pre-line", "pre-wrap", "break-spaces"]
1157
- }],
1158
- /**
1159
- * Word Break
1160
- * @see https://tailwindcss.com/docs/word-break
1161
- */
1162
- break: [{
1163
- break: ["normal", "words", "all", "keep"]
1164
- }],
1165
- /**
1166
- * Hyphens
1167
- * @see https://tailwindcss.com/docs/hyphens
1168
- */
1169
- hyphens: [{
1170
- hyphens: ["none", "manual", "auto"]
1171
- }],
1172
- /**
1173
- * Content
1174
- * @see https://tailwindcss.com/docs/content
1175
- */
1176
- content: [{
1177
- content: ["none", b]
1178
- }],
1179
- // Backgrounds
1180
- /**
1181
- * Background Attachment
1182
- * @see https://tailwindcss.com/docs/background-attachment
1183
- */
1184
- "bg-attachment": [{
1185
- bg: ["fixed", "local", "scroll"]
1186
- }],
1187
- /**
1188
- * Background Clip
1189
- * @see https://tailwindcss.com/docs/background-clip
1190
- */
1191
- "bg-clip": [{
1192
- "bg-clip": ["border", "padding", "content", "text"]
1193
- }],
1194
- /**
1195
- * Background Opacity
1196
- * @deprecated since Tailwind CSS v3.0.0
1197
- * @see https://tailwindcss.com/docs/background-opacity
1198
- */
1199
- "bg-opacity": [{
1200
- "bg-opacity": [v]
1201
- }],
1202
- /**
1203
- * Background Origin
1204
- * @see https://tailwindcss.com/docs/background-origin
1205
- */
1206
- "bg-origin": [{
1207
- "bg-origin": ["border", "padding", "content"]
1208
- }],
1209
- /**
1210
- * Background Position
1211
- * @see https://tailwindcss.com/docs/background-position
1212
- */
1213
- "bg-position": [{
1214
- bg: [...X(), $t]
1215
- }],
1216
- /**
1217
- * Background Repeat
1218
- * @see https://tailwindcss.com/docs/background-repeat
1219
- */
1220
- "bg-repeat": [{
1221
- bg: ["no-repeat", {
1222
- repeat: ["", "x", "y", "round", "space"]
1223
- }]
1224
- }],
1225
- /**
1226
- * Background Size
1227
- * @see https://tailwindcss.com/docs/background-size
1228
- */
1229
- "bg-size": [{
1230
- bg: ["auto", "cover", "contain", Bt]
1231
- }],
1232
- /**
1233
- * Background Image
1234
- * @see https://tailwindcss.com/docs/background-image
1235
- */
1236
- "bg-image": [{
1237
- bg: ["none", {
1238
- "gradient-to": ["t", "tr", "r", "br", "b", "bl", "l", "tl"]
1239
- }, Jt]
1240
- }],
1241
- /**
1242
- * Background Color
1243
- * @see https://tailwindcss.com/docs/background-color
1244
- */
1245
- "bg-color": [{
1246
- bg: [e]
1247
- }],
1248
- /**
1249
- * Gradient Color Stops From Position
1250
- * @see https://tailwindcss.com/docs/gradient-color-stops
1251
- */
1252
- "gradient-from-pos": [{
1253
- from: [y]
1254
- }],
1255
- /**
1256
- * Gradient Color Stops Via Position
1257
- * @see https://tailwindcss.com/docs/gradient-color-stops
1258
- */
1259
- "gradient-via-pos": [{
1260
- via: [y]
1261
- }],
1262
- /**
1263
- * Gradient Color Stops To Position
1264
- * @see https://tailwindcss.com/docs/gradient-color-stops
1265
- */
1266
- "gradient-to-pos": [{
1267
- to: [y]
1268
- }],
1269
- /**
1270
- * Gradient Color Stops From
1271
- * @see https://tailwindcss.com/docs/gradient-color-stops
1272
- */
1273
- "gradient-from": [{
1274
- from: [S]
1275
- }],
1276
- /**
1277
- * Gradient Color Stops Via
1278
- * @see https://tailwindcss.com/docs/gradient-color-stops
1279
- */
1280
- "gradient-via": [{
1281
- via: [S]
1282
- }],
1283
- /**
1284
- * Gradient Color Stops To
1285
- * @see https://tailwindcss.com/docs/gradient-color-stops
1286
- */
1287
- "gradient-to": [{
1288
- to: [S]
1289
- }],
1290
- // Borders
1291
- /**
1292
- * Border Radius
1293
- * @see https://tailwindcss.com/docs/border-radius
1294
- */
1295
- rounded: [{
1296
- rounded: [i]
1297
- }],
1298
- /**
1299
- * Border Radius Start
1300
- * @see https://tailwindcss.com/docs/border-radius
1301
- */
1302
- "rounded-s": [{
1303
- "rounded-s": [i]
1304
- }],
1305
- /**
1306
- * Border Radius End
1307
- * @see https://tailwindcss.com/docs/border-radius
1308
- */
1309
- "rounded-e": [{
1310
- "rounded-e": [i]
1311
- }],
1312
- /**
1313
- * Border Radius Top
1314
- * @see https://tailwindcss.com/docs/border-radius
1315
- */
1316
- "rounded-t": [{
1317
- "rounded-t": [i]
1318
- }],
1319
- /**
1320
- * Border Radius Right
1321
- * @see https://tailwindcss.com/docs/border-radius
1322
- */
1323
- "rounded-r": [{
1324
- "rounded-r": [i]
1325
- }],
1326
- /**
1327
- * Border Radius Bottom
1328
- * @see https://tailwindcss.com/docs/border-radius
1329
- */
1330
- "rounded-b": [{
1331
- "rounded-b": [i]
1332
- }],
1333
- /**
1334
- * Border Radius Left
1335
- * @see https://tailwindcss.com/docs/border-radius
1336
- */
1337
- "rounded-l": [{
1338
- "rounded-l": [i]
1339
- }],
1340
- /**
1341
- * Border Radius Start Start
1342
- * @see https://tailwindcss.com/docs/border-radius
1343
- */
1344
- "rounded-ss": [{
1345
- "rounded-ss": [i]
1346
- }],
1347
- /**
1348
- * Border Radius Start End
1349
- * @see https://tailwindcss.com/docs/border-radius
1350
- */
1351
- "rounded-se": [{
1352
- "rounded-se": [i]
1353
- }],
1354
- /**
1355
- * Border Radius End End
1356
- * @see https://tailwindcss.com/docs/border-radius
1357
- */
1358
- "rounded-ee": [{
1359
- "rounded-ee": [i]
1360
- }],
1361
- /**
1362
- * Border Radius End Start
1363
- * @see https://tailwindcss.com/docs/border-radius
1364
- */
1365
- "rounded-es": [{
1366
- "rounded-es": [i]
1367
- }],
1368
- /**
1369
- * Border Radius Top Left
1370
- * @see https://tailwindcss.com/docs/border-radius
1371
- */
1372
- "rounded-tl": [{
1373
- "rounded-tl": [i]
1374
- }],
1375
- /**
1376
- * Border Radius Top Right
1377
- * @see https://tailwindcss.com/docs/border-radius
1378
- */
1379
- "rounded-tr": [{
1380
- "rounded-tr": [i]
1381
- }],
1382
- /**
1383
- * Border Radius Bottom Right
1384
- * @see https://tailwindcss.com/docs/border-radius
1385
- */
1386
- "rounded-br": [{
1387
- "rounded-br": [i]
1388
- }],
1389
- /**
1390
- * Border Radius Bottom Left
1391
- * @see https://tailwindcss.com/docs/border-radius
1392
- */
1393
- "rounded-bl": [{
1394
- "rounded-bl": [i]
1395
- }],
1396
- /**
1397
- * Border Width
1398
- * @see https://tailwindcss.com/docs/border-width
1399
- */
1400
- "border-w": [{
1401
- border: [c]
1402
- }],
1403
- /**
1404
- * Border Width X
1405
- * @see https://tailwindcss.com/docs/border-width
1406
- */
1407
- "border-w-x": [{
1408
- "border-x": [c]
1409
- }],
1410
- /**
1411
- * Border Width Y
1412
- * @see https://tailwindcss.com/docs/border-width
1413
- */
1414
- "border-w-y": [{
1415
- "border-y": [c]
1416
- }],
1417
- /**
1418
- * Border Width Start
1419
- * @see https://tailwindcss.com/docs/border-width
1420
- */
1421
- "border-w-s": [{
1422
- "border-s": [c]
1423
- }],
1424
- /**
1425
- * Border Width End
1426
- * @see https://tailwindcss.com/docs/border-width
1427
- */
1428
- "border-w-e": [{
1429
- "border-e": [c]
1430
- }],
1431
- /**
1432
- * Border Width Top
1433
- * @see https://tailwindcss.com/docs/border-width
1434
- */
1435
- "border-w-t": [{
1436
- "border-t": [c]
1437
- }],
1438
- /**
1439
- * Border Width Right
1440
- * @see https://tailwindcss.com/docs/border-width
1441
- */
1442
- "border-w-r": [{
1443
- "border-r": [c]
1444
- }],
1445
- /**
1446
- * Border Width Bottom
1447
- * @see https://tailwindcss.com/docs/border-width
1448
- */
1449
- "border-w-b": [{
1450
- "border-b": [c]
1451
- }],
1452
- /**
1453
- * Border Width Left
1454
- * @see https://tailwindcss.com/docs/border-width
1455
- */
1456
- "border-w-l": [{
1457
- "border-l": [c]
1458
- }],
1459
- /**
1460
- * Border Opacity
1461
- * @see https://tailwindcss.com/docs/border-opacity
1462
- */
1463
- "border-opacity": [{
1464
- "border-opacity": [v]
1465
- }],
1466
- /**
1467
- * Border Style
1468
- * @see https://tailwindcss.com/docs/border-style
1469
- */
1470
- "border-style": [{
1471
- border: [...K(), "hidden"]
1472
- }],
1473
- /**
1474
- * Divide Width X
1475
- * @see https://tailwindcss.com/docs/divide-width
1476
- */
1477
- "divide-x": [{
1478
- "divide-x": [c]
1479
- }],
1480
- /**
1481
- * Divide Width X Reverse
1482
- * @see https://tailwindcss.com/docs/divide-width
1483
- */
1484
- "divide-x-reverse": ["divide-x-reverse"],
1485
- /**
1486
- * Divide Width Y
1487
- * @see https://tailwindcss.com/docs/divide-width
1488
- */
1489
- "divide-y": [{
1490
- "divide-y": [c]
1491
- }],
1492
- /**
1493
- * Divide Width Y Reverse
1494
- * @see https://tailwindcss.com/docs/divide-width
1495
- */
1496
- "divide-y-reverse": ["divide-y-reverse"],
1497
- /**
1498
- * Divide Opacity
1499
- * @see https://tailwindcss.com/docs/divide-opacity
1500
- */
1501
- "divide-opacity": [{
1502
- "divide-opacity": [v]
1503
- }],
1504
- /**
1505
- * Divide Style
1506
- * @see https://tailwindcss.com/docs/divide-style
1507
- */
1508
- "divide-style": [{
1509
- divide: K()
1510
- }],
1511
- /**
1512
- * Border Color
1513
- * @see https://tailwindcss.com/docs/border-color
1514
- */
1515
- "border-color": [{
1516
- border: [o]
1517
- }],
1518
- /**
1519
- * Border Color X
1520
- * @see https://tailwindcss.com/docs/border-color
1521
- */
1522
- "border-color-x": [{
1523
- "border-x": [o]
1524
- }],
1525
- /**
1526
- * Border Color Y
1527
- * @see https://tailwindcss.com/docs/border-color
1528
- */
1529
- "border-color-y": [{
1530
- "border-y": [o]
1531
- }],
1532
- /**
1533
- * Border Color S
1534
- * @see https://tailwindcss.com/docs/border-color
1535
- */
1536
- "border-color-s": [{
1537
- "border-s": [o]
1538
- }],
1539
- /**
1540
- * Border Color E
1541
- * @see https://tailwindcss.com/docs/border-color
1542
- */
1543
- "border-color-e": [{
1544
- "border-e": [o]
1545
- }],
1546
- /**
1547
- * Border Color Top
1548
- * @see https://tailwindcss.com/docs/border-color
1549
- */
1550
- "border-color-t": [{
1551
- "border-t": [o]
1552
- }],
1553
- /**
1554
- * Border Color Right
1555
- * @see https://tailwindcss.com/docs/border-color
1556
- */
1557
- "border-color-r": [{
1558
- "border-r": [o]
1559
- }],
1560
- /**
1561
- * Border Color Bottom
1562
- * @see https://tailwindcss.com/docs/border-color
1563
- */
1564
- "border-color-b": [{
1565
- "border-b": [o]
1566
- }],
1567
- /**
1568
- * Border Color Left
1569
- * @see https://tailwindcss.com/docs/border-color
1570
- */
1571
- "border-color-l": [{
1572
- "border-l": [o]
1573
- }],
1574
- /**
1575
- * Divide Color
1576
- * @see https://tailwindcss.com/docs/divide-color
1577
- */
1578
- "divide-color": [{
1579
- divide: [o]
1580
- }],
1581
- /**
1582
- * Outline Style
1583
- * @see https://tailwindcss.com/docs/outline-style
1584
- */
1585
- "outline-style": [{
1586
- outline: ["", ...K()]
1587
- }],
1588
- /**
1589
- * Outline Offset
1590
- * @see https://tailwindcss.com/docs/outline-offset
1591
- */
1592
- "outline-offset": [{
1593
- "outline-offset": [$, b]
1594
- }],
1595
- /**
1596
- * Outline Width
1597
- * @see https://tailwindcss.com/docs/outline-width
1598
- */
1599
- "outline-w": [{
1600
- outline: [$, U]
1601
- }],
1602
- /**
1603
- * Outline Color
1604
- * @see https://tailwindcss.com/docs/outline-color
1605
- */
1606
- "outline-color": [{
1607
- outline: [e]
1608
- }],
1609
- /**
1610
- * Ring Width
1611
- * @see https://tailwindcss.com/docs/ring-width
1612
- */
1613
- "ring-w": [{
1614
- ring: f()
1615
- }],
1616
- /**
1617
- * Ring Width Inset
1618
- * @see https://tailwindcss.com/docs/ring-width
1619
- */
1620
- "ring-w-inset": ["ring-inset"],
1621
- /**
1622
- * Ring Color
1623
- * @see https://tailwindcss.com/docs/ring-color
1624
- */
1625
- "ring-color": [{
1626
- ring: [e]
1627
- }],
1628
- /**
1629
- * Ring Opacity
1630
- * @see https://tailwindcss.com/docs/ring-opacity
1631
- */
1632
- "ring-opacity": [{
1633
- "ring-opacity": [v]
1634
- }],
1635
- /**
1636
- * Ring Offset Width
1637
- * @see https://tailwindcss.com/docs/ring-offset-width
1638
- */
1639
- "ring-offset-w": [{
1640
- "ring-offset": [$, U]
1641
- }],
1642
- /**
1643
- * Ring Offset Color
1644
- * @see https://tailwindcss.com/docs/ring-offset-color
1645
- */
1646
- "ring-offset-color": [{
1647
- "ring-offset": [e]
1648
- }],
1649
- // Effects
1650
- /**
1651
- * Box Shadow
1652
- * @see https://tailwindcss.com/docs/box-shadow
1653
- */
1654
- shadow: [{
1655
- shadow: ["", "inner", "none", W, Ut]
1656
- }],
1657
- /**
1658
- * Box Shadow Color
1659
- * @see https://tailwindcss.com/docs/box-shadow-color
1660
- */
1661
- "shadow-color": [{
1662
- shadow: [te]
1663
- }],
1664
- /**
1665
- * Opacity
1666
- * @see https://tailwindcss.com/docs/opacity
1667
- */
1668
- opacity: [{
1669
- opacity: [v]
1670
- }],
1671
- /**
1672
- * Mix Blend Mode
1673
- * @see https://tailwindcss.com/docs/mix-blend-mode
1674
- */
1675
- "mix-blend": [{
1676
- "mix-blend": [...Ce(), "plus-lighter", "plus-darker"]
1677
- }],
1678
- /**
1679
- * Background Blend Mode
1680
- * @see https://tailwindcss.com/docs/background-blend-mode
1681
- */
1682
- "bg-blend": [{
1683
- "bg-blend": Ce()
1684
- }],
1685
- // Filters
1686
- /**
1687
- * Filter
1688
- * @deprecated since Tailwind CSS v3.0.0
1689
- * @see https://tailwindcss.com/docs/filter
1690
- */
1691
- filter: [{
1692
- filter: ["", "none"]
1693
- }],
1694
- /**
1695
- * Blur
1696
- * @see https://tailwindcss.com/docs/blur
1697
- */
1698
- blur: [{
1699
- blur: [t]
1700
- }],
1701
- /**
1702
- * Brightness
1703
- * @see https://tailwindcss.com/docs/brightness
1704
- */
1705
- brightness: [{
1706
- brightness: [a]
1707
- }],
1708
- /**
1709
- * Contrast
1710
- * @see https://tailwindcss.com/docs/contrast
1711
- */
1712
- contrast: [{
1713
- contrast: [m]
1714
- }],
1715
- /**
1716
- * Drop Shadow
1717
- * @see https://tailwindcss.com/docs/drop-shadow
1718
- */
1719
- "drop-shadow": [{
1720
- "drop-shadow": ["", "none", W, b]
1721
- }],
1722
- /**
1723
- * Grayscale
1724
- * @see https://tailwindcss.com/docs/grayscale
1725
- */
1726
- grayscale: [{
1727
- grayscale: [d]
1728
- }],
1729
- /**
1730
- * Hue Rotate
1731
- * @see https://tailwindcss.com/docs/hue-rotate
1732
- */
1733
- "hue-rotate": [{
1734
- "hue-rotate": [g]
1735
- }],
1736
- /**
1737
- * Invert
1738
- * @see https://tailwindcss.com/docs/invert
1739
- */
1740
- invert: [{
1741
- invert: [N]
1742
- }],
1743
- /**
1744
- * Saturate
1745
- * @see https://tailwindcss.com/docs/saturate
1746
- */
1747
- saturate: [{
1748
- saturate: [u]
1749
- }],
1750
- /**
1751
- * Sepia
1752
- * @see https://tailwindcss.com/docs/sepia
1753
- */
1754
- sepia: [{
1755
- sepia: [O]
1756
- }],
1757
- /**
1758
- * Backdrop Filter
1759
- * @deprecated since Tailwind CSS v3.0.0
1760
- * @see https://tailwindcss.com/docs/backdrop-filter
1761
- */
1762
- "backdrop-filter": [{
1763
- "backdrop-filter": ["", "none"]
1764
- }],
1765
- /**
1766
- * Backdrop Blur
1767
- * @see https://tailwindcss.com/docs/backdrop-blur
1768
- */
1769
- "backdrop-blur": [{
1770
- "backdrop-blur": [t]
1771
- }],
1772
- /**
1773
- * Backdrop Brightness
1774
- * @see https://tailwindcss.com/docs/backdrop-brightness
1775
- */
1776
- "backdrop-brightness": [{
1777
- "backdrop-brightness": [a]
1778
- }],
1779
- /**
1780
- * Backdrop Contrast
1781
- * @see https://tailwindcss.com/docs/backdrop-contrast
1782
- */
1783
- "backdrop-contrast": [{
1784
- "backdrop-contrast": [m]
1785
- }],
1786
- /**
1787
- * Backdrop Grayscale
1788
- * @see https://tailwindcss.com/docs/backdrop-grayscale
1789
- */
1790
- "backdrop-grayscale": [{
1791
- "backdrop-grayscale": [d]
1792
- }],
1793
- /**
1794
- * Backdrop Hue Rotate
1795
- * @see https://tailwindcss.com/docs/backdrop-hue-rotate
1796
- */
1797
- "backdrop-hue-rotate": [{
1798
- "backdrop-hue-rotate": [g]
1799
- }],
1800
- /**
1801
- * Backdrop Invert
1802
- * @see https://tailwindcss.com/docs/backdrop-invert
1803
- */
1804
- "backdrop-invert": [{
1805
- "backdrop-invert": [N]
1806
- }],
1807
- /**
1808
- * Backdrop Opacity
1809
- * @see https://tailwindcss.com/docs/backdrop-opacity
1810
- */
1811
- "backdrop-opacity": [{
1812
- "backdrop-opacity": [v]
1813
- }],
1814
- /**
1815
- * Backdrop Saturate
1816
- * @see https://tailwindcss.com/docs/backdrop-saturate
1817
- */
1818
- "backdrop-saturate": [{
1819
- "backdrop-saturate": [u]
1820
- }],
1821
- /**
1822
- * Backdrop Sepia
1823
- * @see https://tailwindcss.com/docs/backdrop-sepia
1824
- */
1825
- "backdrop-sepia": [{
1826
- "backdrop-sepia": [O]
1827
- }],
1828
- // Tables
1829
- /**
1830
- * Border Collapse
1831
- * @see https://tailwindcss.com/docs/border-collapse
1832
- */
1833
- "border-collapse": [{
1834
- border: ["collapse", "separate"]
1835
- }],
1836
- /**
1837
- * Border Spacing
1838
- * @see https://tailwindcss.com/docs/border-spacing
1839
- */
1840
- "border-spacing": [{
1841
- "border-spacing": [s]
1842
- }],
1843
- /**
1844
- * Border Spacing X
1845
- * @see https://tailwindcss.com/docs/border-spacing
1846
- */
1847
- "border-spacing-x": [{
1848
- "border-spacing-x": [s]
1849
- }],
1850
- /**
1851
- * Border Spacing Y
1852
- * @see https://tailwindcss.com/docs/border-spacing
1853
- */
1854
- "border-spacing-y": [{
1855
- "border-spacing-y": [s]
1856
- }],
1857
- /**
1858
- * Table Layout
1859
- * @see https://tailwindcss.com/docs/table-layout
1860
- */
1861
- "table-layout": [{
1862
- table: ["auto", "fixed"]
1863
- }],
1864
- /**
1865
- * Caption Side
1866
- * @see https://tailwindcss.com/docs/caption-side
1867
- */
1868
- caption: [{
1869
- caption: ["top", "bottom"]
1870
- }],
1871
- // Transitions and Animation
1872
- /**
1873
- * Tranisition Property
1874
- * @see https://tailwindcss.com/docs/transition-property
1875
- */
1876
- transition: [{
1877
- transition: ["none", "all", "", "colors", "opacity", "shadow", "transform", b]
1878
- }],
1879
- /**
1880
- * Transition Duration
1881
- * @see https://tailwindcss.com/docs/transition-duration
1882
- */
1883
- duration: [{
1884
- duration: B()
1885
- }],
1886
- /**
1887
- * Transition Timing Function
1888
- * @see https://tailwindcss.com/docs/transition-timing-function
1889
- */
1890
- ease: [{
1891
- ease: ["linear", "in", "out", "in-out", b]
1892
- }],
1893
- /**
1894
- * Transition Delay
1895
- * @see https://tailwindcss.com/docs/transition-delay
1896
- */
1897
- delay: [{
1898
- delay: B()
1899
- }],
1900
- /**
1901
- * Animation
1902
- * @see https://tailwindcss.com/docs/animation
1903
- */
1904
- animate: [{
1905
- animate: ["none", "spin", "ping", "pulse", "bounce", b]
1906
- }],
1907
- // Transforms
1908
- /**
1909
- * Transform
1910
- * @see https://tailwindcss.com/docs/transform
1911
- */
1912
- transform: [{
1913
- transform: ["", "gpu", "none"]
1914
- }],
1915
- /**
1916
- * Scale
1917
- * @see https://tailwindcss.com/docs/scale
1918
- */
1919
- scale: [{
1920
- scale: [A]
1921
- }],
1922
- /**
1923
- * Scale X
1924
- * @see https://tailwindcss.com/docs/scale
1925
- */
1926
- "scale-x": [{
1927
- "scale-x": [A]
1928
- }],
1929
- /**
1930
- * Scale Y
1931
- * @see https://tailwindcss.com/docs/scale
1932
- */
1933
- "scale-y": [{
1934
- "scale-y": [A]
1935
- }],
1936
- /**
1937
- * Rotate
1938
- * @see https://tailwindcss.com/docs/rotate
1939
- */
1940
- rotate: [{
1941
- rotate: [ee, b]
1942
- }],
1943
- /**
1944
- * Translate X
1945
- * @see https://tailwindcss.com/docs/translate
1946
- */
1947
- "translate-x": [{
1948
- "translate-x": [F]
1949
- }],
1950
- /**
1951
- * Translate Y
1952
- * @see https://tailwindcss.com/docs/translate
1953
- */
1954
- "translate-y": [{
1955
- "translate-y": [F]
1956
- }],
1957
- /**
1958
- * Skew X
1959
- * @see https://tailwindcss.com/docs/skew
1960
- */
1961
- "skew-x": [{
1962
- "skew-x": [_]
1963
- }],
1964
- /**
1965
- * Skew Y
1966
- * @see https://tailwindcss.com/docs/skew
1967
- */
1968
- "skew-y": [{
1969
- "skew-y": [_]
1970
- }],
1971
- /**
1972
- * Transform Origin
1973
- * @see https://tailwindcss.com/docs/transform-origin
1974
- */
1975
- "transform-origin": [{
1976
- origin: ["center", "top", "top-right", "right", "bottom-right", "bottom", "bottom-left", "left", "top-left", b]
1977
- }],
1978
- // Interactivity
1979
- /**
1980
- * Accent Color
1981
- * @see https://tailwindcss.com/docs/accent-color
1982
- */
1983
- accent: [{
1984
- accent: ["auto", e]
1985
- }],
1986
- /**
1987
- * Appearance
1988
- * @see https://tailwindcss.com/docs/appearance
1989
- */
1990
- appearance: [{
1991
- appearance: ["none", "auto"]
1992
- }],
1993
- /**
1994
- * Cursor
1995
- * @see https://tailwindcss.com/docs/cursor
1996
- */
1997
- cursor: [{
1998
- cursor: ["auto", "default", "pointer", "wait", "text", "move", "help", "not-allowed", "none", "context-menu", "progress", "cell", "crosshair", "vertical-text", "alias", "copy", "no-drop", "grab", "grabbing", "all-scroll", "col-resize", "row-resize", "n-resize", "e-resize", "s-resize", "w-resize", "ne-resize", "nw-resize", "se-resize", "sw-resize", "ew-resize", "ns-resize", "nesw-resize", "nwse-resize", "zoom-in", "zoom-out", b]
1999
- }],
2000
- /**
2001
- * Caret Color
2002
- * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities
2003
- */
2004
- "caret-color": [{
2005
- caret: [e]
2006
- }],
2007
- /**
2008
- * Pointer Events
2009
- * @see https://tailwindcss.com/docs/pointer-events
2010
- */
2011
- "pointer-events": [{
2012
- "pointer-events": ["none", "auto"]
2013
- }],
2014
- /**
2015
- * Resize
2016
- * @see https://tailwindcss.com/docs/resize
2017
- */
2018
- resize: [{
2019
- resize: ["none", "y", "x", ""]
2020
- }],
2021
- /**
2022
- * Scroll Behavior
2023
- * @see https://tailwindcss.com/docs/scroll-behavior
2024
- */
2025
- "scroll-behavior": [{
2026
- scroll: ["auto", "smooth"]
2027
- }],
2028
- /**
2029
- * Scroll Margin
2030
- * @see https://tailwindcss.com/docs/scroll-margin
2031
- */
2032
- "scroll-m": [{
2033
- "scroll-m": w()
2034
- }],
2035
- /**
2036
- * Scroll Margin X
2037
- * @see https://tailwindcss.com/docs/scroll-margin
2038
- */
2039
- "scroll-mx": [{
2040
- "scroll-mx": w()
2041
- }],
2042
- /**
2043
- * Scroll Margin Y
2044
- * @see https://tailwindcss.com/docs/scroll-margin
2045
- */
2046
- "scroll-my": [{
2047
- "scroll-my": w()
2048
- }],
2049
- /**
2050
- * Scroll Margin Start
2051
- * @see https://tailwindcss.com/docs/scroll-margin
2052
- */
2053
- "scroll-ms": [{
2054
- "scroll-ms": w()
2055
- }],
2056
- /**
2057
- * Scroll Margin End
2058
- * @see https://tailwindcss.com/docs/scroll-margin
2059
- */
2060
- "scroll-me": [{
2061
- "scroll-me": w()
2062
- }],
2063
- /**
2064
- * Scroll Margin Top
2065
- * @see https://tailwindcss.com/docs/scroll-margin
2066
- */
2067
- "scroll-mt": [{
2068
- "scroll-mt": w()
2069
- }],
2070
- /**
2071
- * Scroll Margin Right
2072
- * @see https://tailwindcss.com/docs/scroll-margin
2073
- */
2074
- "scroll-mr": [{
2075
- "scroll-mr": w()
2076
- }],
2077
- /**
2078
- * Scroll Margin Bottom
2079
- * @see https://tailwindcss.com/docs/scroll-margin
2080
- */
2081
- "scroll-mb": [{
2082
- "scroll-mb": w()
2083
- }],
2084
- /**
2085
- * Scroll Margin Left
2086
- * @see https://tailwindcss.com/docs/scroll-margin
2087
- */
2088
- "scroll-ml": [{
2089
- "scroll-ml": w()
2090
- }],
2091
- /**
2092
- * Scroll Padding
2093
- * @see https://tailwindcss.com/docs/scroll-padding
2094
- */
2095
- "scroll-p": [{
2096
- "scroll-p": w()
2097
- }],
2098
- /**
2099
- * Scroll Padding X
2100
- * @see https://tailwindcss.com/docs/scroll-padding
2101
- */
2102
- "scroll-px": [{
2103
- "scroll-px": w()
2104
- }],
2105
- /**
2106
- * Scroll Padding Y
2107
- * @see https://tailwindcss.com/docs/scroll-padding
2108
- */
2109
- "scroll-py": [{
2110
- "scroll-py": w()
2111
- }],
2112
- /**
2113
- * Scroll Padding Start
2114
- * @see https://tailwindcss.com/docs/scroll-padding
2115
- */
2116
- "scroll-ps": [{
2117
- "scroll-ps": w()
2118
- }],
2119
- /**
2120
- * Scroll Padding End
2121
- * @see https://tailwindcss.com/docs/scroll-padding
2122
- */
2123
- "scroll-pe": [{
2124
- "scroll-pe": w()
2125
- }],
2126
- /**
2127
- * Scroll Padding Top
2128
- * @see https://tailwindcss.com/docs/scroll-padding
2129
- */
2130
- "scroll-pt": [{
2131
- "scroll-pt": w()
2132
- }],
2133
- /**
2134
- * Scroll Padding Right
2135
- * @see https://tailwindcss.com/docs/scroll-padding
2136
- */
2137
- "scroll-pr": [{
2138
- "scroll-pr": w()
2139
- }],
2140
- /**
2141
- * Scroll Padding Bottom
2142
- * @see https://tailwindcss.com/docs/scroll-padding
2143
- */
2144
- "scroll-pb": [{
2145
- "scroll-pb": w()
2146
- }],
2147
- /**
2148
- * Scroll Padding Left
2149
- * @see https://tailwindcss.com/docs/scroll-padding
2150
- */
2151
- "scroll-pl": [{
2152
- "scroll-pl": w()
2153
- }],
2154
- /**
2155
- * Scroll Snap Align
2156
- * @see https://tailwindcss.com/docs/scroll-snap-align
2157
- */
2158
- "snap-align": [{
2159
- snap: ["start", "end", "center", "align-none"]
2160
- }],
2161
- /**
2162
- * Scroll Snap Stop
2163
- * @see https://tailwindcss.com/docs/scroll-snap-stop
2164
- */
2165
- "snap-stop": [{
2166
- snap: ["normal", "always"]
2167
- }],
2168
- /**
2169
- * Scroll Snap Type
2170
- * @see https://tailwindcss.com/docs/scroll-snap-type
2171
- */
2172
- "snap-type": [{
2173
- snap: ["none", "x", "y", "both"]
2174
- }],
2175
- /**
2176
- * Scroll Snap Type Strictness
2177
- * @see https://tailwindcss.com/docs/scroll-snap-type
2178
- */
2179
- "snap-strictness": [{
2180
- snap: ["mandatory", "proximity"]
2181
- }],
2182
- /**
2183
- * Touch Action
2184
- * @see https://tailwindcss.com/docs/touch-action
2185
- */
2186
- touch: [{
2187
- touch: ["auto", "none", "manipulation"]
2188
- }],
2189
- /**
2190
- * Touch Action X
2191
- * @see https://tailwindcss.com/docs/touch-action
2192
- */
2193
- "touch-x": [{
2194
- "touch-pan": ["x", "left", "right"]
2195
- }],
2196
- /**
2197
- * Touch Action Y
2198
- * @see https://tailwindcss.com/docs/touch-action
2199
- */
2200
- "touch-y": [{
2201
- "touch-pan": ["y", "up", "down"]
2202
- }],
2203
- /**
2204
- * Touch Action Pinch Zoom
2205
- * @see https://tailwindcss.com/docs/touch-action
2206
- */
2207
- "touch-pz": ["touch-pinch-zoom"],
2208
- /**
2209
- * User Select
2210
- * @see https://tailwindcss.com/docs/user-select
2211
- */
2212
- select: [{
2213
- select: ["none", "text", "all", "auto"]
2214
- }],
2215
- /**
2216
- * Will Change
2217
- * @see https://tailwindcss.com/docs/will-change
2218
- */
2219
- "will-change": [{
2220
- "will-change": ["auto", "scroll", "contents", "transform", b]
2221
- }],
2222
- // SVG
2223
- /**
2224
- * Fill
2225
- * @see https://tailwindcss.com/docs/fill
2226
- */
2227
- fill: [{
2228
- fill: [e, "none"]
2229
- }],
2230
- /**
2231
- * Stroke Width
2232
- * @see https://tailwindcss.com/docs/stroke-width
2233
- */
2234
- "stroke-w": [{
2235
- stroke: [$, U, ie]
2236
- }],
2237
- /**
2238
- * Stroke
2239
- * @see https://tailwindcss.com/docs/stroke
2240
- */
2241
- stroke: [{
2242
- stroke: [e, "none"]
2243
- }],
2244
- // Accessibility
2245
- /**
2246
- * Screen Readers
2247
- * @see https://tailwindcss.com/docs/screen-readers
2248
- */
2249
- sr: ["sr-only", "not-sr-only"],
2250
- /**
2251
- * Forced Color Adjust
2252
- * @see https://tailwindcss.com/docs/forced-color-adjust
2253
- */
2254
- "forced-color-adjust": [{
2255
- "forced-color-adjust": ["auto", "none"]
2256
- }]
2257
- },
2258
- conflictingClassGroups: {
2259
- overflow: ["overflow-x", "overflow-y"],
2260
- overscroll: ["overscroll-x", "overscroll-y"],
2261
- inset: ["inset-x", "inset-y", "start", "end", "top", "right", "bottom", "left"],
2262
- "inset-x": ["right", "left"],
2263
- "inset-y": ["top", "bottom"],
2264
- flex: ["basis", "grow", "shrink"],
2265
- gap: ["gap-x", "gap-y"],
2266
- p: ["px", "py", "ps", "pe", "pt", "pr", "pb", "pl"],
2267
- px: ["pr", "pl"],
2268
- py: ["pt", "pb"],
2269
- m: ["mx", "my", "ms", "me", "mt", "mr", "mb", "ml"],
2270
- mx: ["mr", "ml"],
2271
- my: ["mt", "mb"],
2272
- size: ["w", "h"],
2273
- "font-size": ["leading"],
2274
- "fvn-normal": ["fvn-ordinal", "fvn-slashed-zero", "fvn-figure", "fvn-spacing", "fvn-fraction"],
2275
- "fvn-ordinal": ["fvn-normal"],
2276
- "fvn-slashed-zero": ["fvn-normal"],
2277
- "fvn-figure": ["fvn-normal"],
2278
- "fvn-spacing": ["fvn-normal"],
2279
- "fvn-fraction": ["fvn-normal"],
2280
- "line-clamp": ["display", "overflow"],
2281
- rounded: ["rounded-s", "rounded-e", "rounded-t", "rounded-r", "rounded-b", "rounded-l", "rounded-ss", "rounded-se", "rounded-ee", "rounded-es", "rounded-tl", "rounded-tr", "rounded-br", "rounded-bl"],
2282
- "rounded-s": ["rounded-ss", "rounded-es"],
2283
- "rounded-e": ["rounded-se", "rounded-ee"],
2284
- "rounded-t": ["rounded-tl", "rounded-tr"],
2285
- "rounded-r": ["rounded-tr", "rounded-br"],
2286
- "rounded-b": ["rounded-br", "rounded-bl"],
2287
- "rounded-l": ["rounded-tl", "rounded-bl"],
2288
- "border-spacing": ["border-spacing-x", "border-spacing-y"],
2289
- "border-w": ["border-w-s", "border-w-e", "border-w-t", "border-w-r", "border-w-b", "border-w-l"],
2290
- "border-w-x": ["border-w-r", "border-w-l"],
2291
- "border-w-y": ["border-w-t", "border-w-b"],
2292
- "border-color": ["border-color-s", "border-color-e", "border-color-t", "border-color-r", "border-color-b", "border-color-l"],
2293
- "border-color-x": ["border-color-r", "border-color-l"],
2294
- "border-color-y": ["border-color-t", "border-color-b"],
2295
- "scroll-m": ["scroll-mx", "scroll-my", "scroll-ms", "scroll-me", "scroll-mt", "scroll-mr", "scroll-mb", "scroll-ml"],
2296
- "scroll-mx": ["scroll-mr", "scroll-ml"],
2297
- "scroll-my": ["scroll-mt", "scroll-mb"],
2298
- "scroll-p": ["scroll-px", "scroll-py", "scroll-ps", "scroll-pe", "scroll-pt", "scroll-pr", "scroll-pb", "scroll-pl"],
2299
- "scroll-px": ["scroll-pr", "scroll-pl"],
2300
- "scroll-py": ["scroll-pt", "scroll-pb"],
2301
- touch: ["touch-x", "touch-y", "touch-pz"],
2302
- "touch-x": ["touch"],
2303
- "touch-y": ["touch"],
2304
- "touch-pz": ["touch"]
2305
- },
2306
- conflictingClassGroupModifiers: {
2307
- "font-size": ["leading"]
2308
- }
2309
- };
2310
- }, Zt = /* @__PURE__ */ Rt(Xt);
2311
- function C(...e) {
2312
- return Zt(Me(e));
2313
- }
2314
- const Qt = Fe(
2315
- "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 hover-elevate active-elevate-2",
17
+ const He = de(
18
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-full text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
2316
19
  {
2317
20
  variants: {
2318
21
  variant: {
2319
- default: "bg-primary text-primary-foreground border border-primary-border",
2320
- destructive: "bg-destructive text-destructive-foreground border border-destructive-border",
2321
- outline: (
2322
- // Shows the background color of whatever card / sidebar / accent background it is inside of.
2323
- // Inherits the current text color.
2324
- " border [border-color:var(--button-outline)] shadow-xs active:shadow-none "
2325
- ),
2326
- secondary: "border bg-secondary text-secondary-foreground border border-secondary-border ",
2327
- // Add a transparent border so that when someone toggles a border on later, it doesn't shift layout/size.
2328
- ghost: "border border-transparent"
22
+ default: "bg-primary text-primary-foreground hover:bg-primary/90",
23
+ destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
24
+ outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
25
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
26
+ ghost: "hover:bg-accent hover:text-accent-foreground",
27
+ link: "text-primary underline-offset-4 hover:underline"
2329
28
  },
2330
- // Heights are set as "min" heights, because sometimes Ai will place large amount of content
2331
- // inside buttons. With a min-height they will look appropriate with small amounts of content,
2332
- // but will expand to fit large amounts of content.
2333
29
  size: {
2334
- default: "min-h-9 px-4 py-2",
2335
- sm: "min-h-8 rounded-md px-3 text-xs",
2336
- lg: "min-h-10 rounded-md px-8",
30
+ default: "h-9 px-4 py-2",
31
+ sm: "h-8 rounded-full px-3 text-xs",
32
+ lg: "h-10 rounded-full px-8",
2337
33
  icon: "h-9 w-9"
2338
34
  }
2339
35
  },
@@ -2342,300 +38,300 @@ const Qt = Fe(
2342
38
  size: "default"
2343
39
  }
2344
40
  }
2345
- ), R = I.forwardRef(
2346
- ({ className: e, variant: r, size: t, asChild: a = !1, ...o }, i) => /* @__PURE__ */ n(
2347
- a ? ot : "button",
41
+ ), T = y.forwardRef(
42
+ ({ className: t, variant: i, size: a, asChild: d = !1, ...n }, l) => /* @__PURE__ */ e(
43
+ d ? Se : "button",
2348
44
  {
2349
- className: C(Qt({ variant: r, size: t, className: e })),
2350
- ref: i,
2351
- ...o
45
+ className: p(He({ variant: i, size: a, className: t })),
46
+ ref: l,
47
+ ...n
2352
48
  }
2353
49
  )
2354
50
  );
2355
- R.displayName = "Button";
2356
- const L = I.forwardRef(
2357
- ({ className: e, type: r, ...t }, a) => /* @__PURE__ */ n(
51
+ T.displayName = "Button";
52
+ const D = y.forwardRef(
53
+ ({ className: t, type: i, ...a }, d) => /* @__PURE__ */ e(
2358
54
  "input",
2359
55
  {
2360
- type: r,
2361
- className: C(
2362
- "flex h-9 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
2363
- e
56
+ type: i,
57
+ className: p(
58
+ "flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
59
+ t
2364
60
  ),
2365
- ref: a,
2366
- ...t
61
+ ref: d,
62
+ ...a
2367
63
  }
2368
64
  )
2369
65
  );
2370
- L.displayName = "Input";
2371
- const Yt = ne.Provider, er = ne.Root, tr = ne.Trigger, $e = I.forwardRef(({ className: e, sideOffset: r = 4, ...t }, a) => /* @__PURE__ */ n(
2372
- ne.Content,
66
+ D.displayName = "Input";
67
+ const _e = F.Provider, Ue = F.Root, Xe = F.Trigger, ue = y.forwardRef(({ className: t, sideOffset: i = 4, ...a }, d) => /* @__PURE__ */ e(F.Portal, { children: /* @__PURE__ */ e(
68
+ F.Content,
2373
69
  {
2374
- ref: a,
2375
- sideOffset: r,
2376
- className: C(
2377
- "z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin]",
2378
- e
70
+ ref: d,
71
+ sideOffset: i,
72
+ className: p(
73
+ "z-50 overflow-hidden rounded-md bg-popover px-3 py-1.5 text-xs text-popover-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin]",
74
+ t
2379
75
  ),
2380
- ...t
76
+ ...a
2381
77
  }
2382
- ));
2383
- $e.displayName = ne.Content.displayName;
2384
- const rr = D.Root, nr = D.Portal, _e = I.forwardRef(({ className: e, ...r }, t) => /* @__PURE__ */ n(
2385
- D.Overlay,
78
+ ) }));
79
+ ue.displayName = F.Content.displayName;
80
+ const H = w.Root, _ = w.Value, $ = y.forwardRef(({ className: t, children: i, ...a }, d) => /* @__PURE__ */ s(
81
+ w.Trigger,
2386
82
  {
2387
- ref: t,
2388
- className: C(
2389
- "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
2390
- e
83
+ ref: d,
84
+ className: p(
85
+ "flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",
86
+ t
2391
87
  ),
2392
- ...r
88
+ ...a,
89
+ children: [
90
+ i,
91
+ /* @__PURE__ */ e(w.Icon, { asChild: !0, children: /* @__PURE__ */ e(ee, { className: "h-4 w-4 opacity-50" }) })
92
+ ]
2393
93
  }
2394
94
  ));
2395
- _e.displayName = D.Overlay.displayName;
2396
- const Je = I.forwardRef(({ className: e, children: r, ...t }, a) => /* @__PURE__ */ l(nr, { children: [
2397
- /* @__PURE__ */ n(_e, {}),
2398
- /* @__PURE__ */ l(
2399
- D.Content,
2400
- {
2401
- ref: a,
2402
- className: C(
2403
- "fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",
2404
- e
2405
- ),
2406
- ...t,
2407
- children: [
2408
- r,
2409
- /* @__PURE__ */ l(D.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground", children: [
2410
- /* @__PURE__ */ n(at, { className: "h-4 w-4" }),
2411
- /* @__PURE__ */ n("span", { className: "sr-only", children: "Close" })
2412
- ] })
2413
- ]
2414
- }
2415
- )
2416
- ] }));
2417
- Je.displayName = D.Content.displayName;
2418
- const Ue = ({
2419
- className: e,
2420
- ...r
2421
- }) => /* @__PURE__ */ n(
2422
- "div",
95
+ $.displayName = w.Trigger.displayName;
96
+ const he = y.forwardRef(({ className: t, ...i }, a) => /* @__PURE__ */ e(
97
+ w.ScrollUpButton,
2423
98
  {
2424
- className: C(
2425
- "flex flex-col space-y-1.5 text-center sm:text-left",
2426
- e
99
+ ref: a,
100
+ className: p(
101
+ "flex cursor-default items-center justify-center py-1",
102
+ t
2427
103
  ),
2428
- ...r
104
+ ...i,
105
+ children: /* @__PURE__ */ e(qe, { className: "h-4 w-4" })
2429
106
  }
2430
- );
2431
- Ue.displayName = "DialogHeader";
2432
- const We = ({
2433
- className: e,
2434
- ...r
2435
- }) => /* @__PURE__ */ n(
2436
- "div",
107
+ ));
108
+ he.displayName = w.ScrollUpButton.displayName;
109
+ const fe = y.forwardRef(({ className: t, ...i }, a) => /* @__PURE__ */ e(
110
+ w.ScrollDownButton,
2437
111
  {
2438
- className: C(
2439
- "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
2440
- e
112
+ ref: a,
113
+ className: p(
114
+ "flex cursor-default items-center justify-center py-1",
115
+ t
2441
116
  ),
2442
- ...r
117
+ ...i,
118
+ children: /* @__PURE__ */ e(ee, { className: "h-4 w-4" })
2443
119
  }
2444
- );
2445
- We.displayName = "DialogFooter";
2446
- const Ke = I.forwardRef(({ className: e, ...r }, t) => /* @__PURE__ */ n(
2447
- D.Title,
120
+ ));
121
+ fe.displayName = w.ScrollDownButton.displayName;
122
+ const K = y.forwardRef(({ className: t, children: i, position: a = "popper", ...d }, n) => /* @__PURE__ */ e(w.Portal, { children: /* @__PURE__ */ s(
123
+ w.Content,
2448
124
  {
2449
- ref: t,
2450
- className: C(
2451
- "text-lg font-semibold leading-none tracking-tight",
2452
- e
125
+ ref: n,
126
+ className: p(
127
+ "relative z-50 max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-select-content-transform-origin]",
128
+ a === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
129
+ t
2453
130
  ),
2454
- ...r
131
+ position: a,
132
+ ...d,
133
+ children: [
134
+ /* @__PURE__ */ e(he, {}),
135
+ /* @__PURE__ */ e(
136
+ w.Viewport,
137
+ {
138
+ className: p(
139
+ "p-1",
140
+ a === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"
141
+ ),
142
+ children: i
143
+ }
144
+ ),
145
+ /* @__PURE__ */ e(fe, {})
146
+ ]
2455
147
  }
2456
- ));
2457
- Ke.displayName = D.Title.displayName;
2458
- const or = I.forwardRef(({ className: e, ...r }, t) => /* @__PURE__ */ n(
2459
- D.Description,
148
+ ) }));
149
+ K.displayName = w.Content.displayName;
150
+ const Ge = y.forwardRef(({ className: t, ...i }, a) => /* @__PURE__ */ e(
151
+ w.Label,
2460
152
  {
2461
- ref: t,
2462
- className: C("text-sm text-muted-foreground", e),
2463
- ...r
153
+ ref: a,
154
+ className: p("px-2 py-1.5 text-sm font-semibold", t),
155
+ ...i
2464
156
  }
2465
157
  ));
2466
- or.displayName = D.Description.displayName;
2467
- const ar = Fe(
2468
- "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
2469
- ), z = I.forwardRef(({ className: e, ...r }, t) => /* @__PURE__ */ n(
2470
- qe.Root,
158
+ Ge.displayName = w.Label.displayName;
159
+ const k = y.forwardRef(({ className: t, children: i, ...a }, d) => /* @__PURE__ */ s(
160
+ w.Item,
2471
161
  {
2472
- ref: t,
2473
- className: C(ar(), e),
2474
- ...r
162
+ ref: d,
163
+ className: p(
164
+ "relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
165
+ t
166
+ ),
167
+ ...a,
168
+ children: [
169
+ /* @__PURE__ */ e("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ e(w.ItemIndicator, { children: /* @__PURE__ */ e(oe, { className: "h-4 w-4" }) }) }),
170
+ /* @__PURE__ */ e(w.ItemText, { children: i })
171
+ ]
2475
172
  }
2476
173
  ));
2477
- z.displayName = qe.Root.displayName;
2478
- const Ae = P.Root, je = P.Value, de = I.forwardRef(({ className: e, children: r, ...t }, a) => /* @__PURE__ */ l(
2479
- P.Trigger,
174
+ k.displayName = w.Item.displayName;
175
+ const Qe = y.forwardRef(({ className: t, ...i }, a) => /* @__PURE__ */ e(
176
+ w.Separator,
2480
177
  {
2481
178
  ref: a,
2482
- className: C(
2483
- "flex h-9 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",
2484
- e
2485
- ),
2486
- ...t,
2487
- children: [
2488
- r,
2489
- /* @__PURE__ */ n(P.Icon, { asChild: !0, children: /* @__PURE__ */ n(ye, { className: "h-4 w-4 opacity-50" }) })
2490
- ]
179
+ className: p("-mx-1 my-1 h-px bg-muted", t),
180
+ ...i
2491
181
  }
2492
182
  ));
2493
- de.displayName = P.Trigger.displayName;
2494
- const He = I.forwardRef(({ className: e, ...r }, t) => /* @__PURE__ */ n(
2495
- P.ScrollUpButton,
183
+ Qe.displayName = w.Separator.displayName;
184
+ const We = P.Root, Ye = P.Portal, pe = y.forwardRef(({ className: t, ...i }, a) => /* @__PURE__ */ e(
185
+ P.Overlay,
2496
186
  {
2497
- ref: t,
2498
- className: C(
2499
- "flex cursor-default items-center justify-center py-1",
2500
- e
187
+ ref: a,
188
+ className: p(
189
+ "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
190
+ t
2501
191
  ),
2502
- ...r,
2503
- children: /* @__PURE__ */ n(it, { className: "h-4 w-4" })
192
+ ...i
2504
193
  }
2505
194
  ));
2506
- He.displayName = P.ScrollUpButton.displayName;
2507
- const Xe = I.forwardRef(({ className: e, ...r }, t) => /* @__PURE__ */ n(
2508
- P.ScrollDownButton,
195
+ pe.displayName = P.Overlay.displayName;
196
+ const ge = y.forwardRef(({ className: t, children: i, ...a }, d) => /* @__PURE__ */ s(Ye, { children: [
197
+ /* @__PURE__ */ e(pe, {}),
198
+ /* @__PURE__ */ s(
199
+ P.Content,
200
+ {
201
+ ref: d,
202
+ className: p(
203
+ "fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",
204
+ t
205
+ ),
206
+ ...a,
207
+ children: [
208
+ i,
209
+ /* @__PURE__ */ s(P.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground", children: [
210
+ /* @__PURE__ */ e(Le, { className: "h-4 w-4" }),
211
+ /* @__PURE__ */ e("span", { className: "sr-only", children: "Close" })
212
+ ] })
213
+ ]
214
+ }
215
+ )
216
+ ] }));
217
+ ge.displayName = P.Content.displayName;
218
+ const ve = ({
219
+ className: t,
220
+ ...i
221
+ }) => /* @__PURE__ */ e(
222
+ "div",
2509
223
  {
2510
- ref: t,
2511
- className: C(
2512
- "flex cursor-default items-center justify-center py-1",
2513
- e
224
+ className: p(
225
+ "flex flex-col space-y-1.5 text-center sm:text-left",
226
+ t
2514
227
  ),
2515
- ...r,
2516
- children: /* @__PURE__ */ n(ye, { className: "h-4 w-4" })
228
+ ...i
2517
229
  }
2518
- ));
2519
- Xe.displayName = P.ScrollDownButton.displayName;
2520
- const ce = I.forwardRef(({ className: e, children: r, position: t = "popper", ...a }, o) => /* @__PURE__ */ n(P.Portal, { children: /* @__PURE__ */ l(
2521
- P.Content,
230
+ );
231
+ ve.displayName = "DialogHeader";
232
+ const ye = ({
233
+ className: t,
234
+ ...i
235
+ }) => /* @__PURE__ */ e(
236
+ "div",
2522
237
  {
2523
- ref: o,
2524
- className: C(
2525
- "relative z-50 max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-select-content-transform-origin]",
2526
- t === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
2527
- e
238
+ className: p(
239
+ "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
240
+ t
2528
241
  ),
2529
- position: t,
2530
- ...a,
2531
- children: [
2532
- /* @__PURE__ */ n(He, {}),
2533
- /* @__PURE__ */ n(
2534
- P.Viewport,
2535
- {
2536
- className: C(
2537
- "p-1",
2538
- t === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"
2539
- ),
2540
- children: r
2541
- }
2542
- ),
2543
- /* @__PURE__ */ n(Xe, {})
2544
- ]
242
+ ...i
2545
243
  }
2546
- ) }));
2547
- ce.displayName = P.Content.displayName;
2548
- const ir = I.forwardRef(({ className: e, ...r }, t) => /* @__PURE__ */ n(
2549
- P.Label,
244
+ );
245
+ ye.displayName = "DialogFooter";
246
+ const xe = y.forwardRef(({ className: t, ...i }, a) => /* @__PURE__ */ e(
247
+ P.Title,
2550
248
  {
2551
- ref: t,
2552
- className: C("py-1.5 pl-8 pr-2 text-sm font-semibold", e),
2553
- ...r
249
+ ref: a,
250
+ className: p(
251
+ "text-lg font-semibold leading-none tracking-tight",
252
+ t
253
+ ),
254
+ ...i
2554
255
  }
2555
256
  ));
2556
- ir.displayName = P.Label.displayName;
2557
- const j = I.forwardRef(({ className: e, children: r, ...t }, a) => /* @__PURE__ */ l(
2558
- P.Item,
257
+ xe.displayName = P.Title.displayName;
258
+ const Ze = y.forwardRef(({ className: t, ...i }, a) => /* @__PURE__ */ e(
259
+ P.Description,
2559
260
  {
2560
261
  ref: a,
2561
- className: C(
2562
- "relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
2563
- e
2564
- ),
2565
- ...t,
2566
- children: [
2567
- /* @__PURE__ */ n("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ n(P.ItemIndicator, { children: /* @__PURE__ */ n(Re, { className: "h-4 w-4" }) }) }),
2568
- /* @__PURE__ */ n(P.ItemText, { children: r })
2569
- ]
262
+ className: p("text-sm text-muted-foreground", t),
263
+ ...i
2570
264
  }
2571
265
  ));
2572
- j.displayName = P.Item.displayName;
2573
- const sr = I.forwardRef(({ className: e, ...r }, t) => /* @__PURE__ */ n(
2574
- P.Separator,
266
+ Ze.displayName = P.Description.displayName;
267
+ const et = de(
268
+ "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
269
+ ), N = y.forwardRef(({ className: t, ...i }, a) => /* @__PURE__ */ e(
270
+ me.Root,
2575
271
  {
2576
- ref: t,
2577
- className: C("-mx-1 my-1 h-px bg-muted", e),
2578
- ...r
272
+ ref: a,
273
+ className: p(et(), t),
274
+ ...i
2579
275
  }
2580
276
  ));
2581
- sr.displayName = P.Separator.displayName;
2582
- const me = I.forwardRef(({ className: e, ...r }, t) => /* @__PURE__ */ n(
2583
- se.Root,
277
+ N.displayName = me.Root.displayName;
278
+ const U = y.forwardRef(({ className: t, ...i }, a) => /* @__PURE__ */ e(
279
+ V.Root,
2584
280
  {
2585
- ref: t,
2586
- className: C(
2587
- "peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",
2588
- e
281
+ ref: a,
282
+ className: p(
283
+ "grid place-content-center peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",
284
+ t
2589
285
  ),
2590
- ...r,
2591
- children: /* @__PURE__ */ n(
2592
- se.Indicator,
286
+ ...i,
287
+ children: /* @__PURE__ */ e(
288
+ V.Indicator,
2593
289
  {
2594
- className: C("flex items-center justify-center text-current"),
2595
- children: /* @__PURE__ */ n(Re, { className: "h-4 w-4" })
290
+ className: p("grid place-content-center text-current"),
291
+ children: /* @__PURE__ */ e(oe, { className: "h-4 w-4" })
2596
292
  }
2597
293
  )
2598
294
  }
2599
295
  ));
2600
- me.displayName = se.Root.displayName;
2601
- const xe = I.forwardRef(({ className: e, ...r }, t) => /* @__PURE__ */ n(
296
+ U.displayName = V.Root.displayName;
297
+ const te = y.forwardRef(({ className: t, ...i }, a) => /* @__PURE__ */ e(
2602
298
  "textarea",
2603
299
  {
2604
- className: C(
2605
- "flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
2606
- e
300
+ className: p(
301
+ "flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
302
+ t
2607
303
  ),
2608
- ref: t,
2609
- ...r
304
+ ref: a,
305
+ ...i
2610
306
  }
2611
307
  ));
2612
- xe.displayName = "Textarea";
2613
- const lr = (e) => e.trim().toLowerCase().replace(/[^\w\s]/g, "").replace(/\s+/g, "_"), dr = (e, r, t = !1) => {
2614
- const a = (m, d) => {
2615
- r({ ...e, [m]: d });
308
+ te.displayName = "Textarea";
309
+ const tt = (t) => t.trim().toLowerCase().replace(/[^\w\s]/g, "").replace(/\s+/g, "_"), at = (t, i, a = !1, d = !1) => {
310
+ const n = (c, o) => {
311
+ i({ ...t, [c]: o });
2616
312
  };
2617
313
  return {
2618
- handleTitleChange: (m) => {
2619
- a("title", m);
314
+ handleTitleChange: (c) => {
315
+ n("title", c);
2620
316
  },
2621
317
  handleTitleBlur: () => {
2622
- if (t && e.title) {
2623
- const m = lr(e.title);
2624
- a("key", m);
318
+ if (a && t.title) {
319
+ const c = tt(t.title);
320
+ n("key", c);
2625
321
  }
2626
322
  },
2627
- handleKeyChange: (m) => {
2628
- t && a("key", m);
323
+ handleKeyChange: (c) => {
324
+ (a || d) && n("key", c);
2629
325
  },
2630
- handleFieldChange: a,
2631
- handleConstraintChange: (m, d) => {
2632
- r({
2633
- ...e,
2634
- [m]: d
326
+ handleFieldChange: n,
327
+ handleConstraintChange: (c, o) => {
328
+ i({
329
+ ...t,
330
+ [c]: o
2635
331
  });
2636
332
  }
2637
333
  };
2638
- }, ue = {
334
+ }, X = {
2639
335
  string: "String",
2640
336
  number: "Number",
2641
337
  integer: "Integer",
@@ -2644,202 +340,209 @@ const lr = (e) => e.trim().toLowerCase().replace(/[^\w\s]/g, "").replace(/\s+/g,
2644
340
  array: "Array",
2645
341
  null: "Null",
2646
342
  file: "File"
2647
- }, Ze = tt({
2648
- getTypeLabel: (e) => ue[e],
2649
- typeLabels: ue
343
+ }, be = ke({
344
+ getTypeLabel: (t) => X[t],
345
+ typeLabels: X
2650
346
  });
2651
- function cr({
2652
- children: e,
2653
- customLabels: r = {}
347
+ function it({
348
+ children: t,
349
+ customLabels: i = {}
2654
350
  }) {
2655
- const t = { ...ue, ...r }, a = (o) => t[o] || o;
2656
- return /* @__PURE__ */ n(Ze.Provider, { value: { getTypeLabel: a, typeLabels: t }, children: e });
351
+ const a = { ...X, ...i }, d = (n) => a[n] || n;
352
+ return /* @__PURE__ */ e(be.Provider, { value: { getTypeLabel: d, typeLabels: a }, children: t });
2657
353
  }
2658
- function Qe() {
2659
- return rt(Ze);
354
+ function Ne() {
355
+ return Ie(be);
2660
356
  }
2661
- function pe({
2662
- property: e,
2663
- open: r,
2664
- onOpenChange: t,
2665
- onUpdate: a,
2666
- isArrayItem: o = !1,
2667
- isNewProperty: i = !1,
2668
- propertyLabel: s = { singular: "Property", plural: "Properties" },
2669
- showRegex: c = !1
357
+ function G({
358
+ property: t,
359
+ open: i,
360
+ onOpenChange: a,
361
+ onUpdate: d,
362
+ isArrayItem: n = !1,
363
+ isNewProperty: l = !1,
364
+ propertyLabel: r = { singular: "Property", plural: "Properties" },
365
+ showRegex: u = !1,
366
+ keyEditable: C = !1
2670
367
  }) {
2671
- var T;
2672
- const { typeLabels: m } = Qe(), [d, g] = V(e);
2673
- be(() => {
2674
- r && g(e);
2675
- }, [e, r]);
368
+ var L;
369
+ const { typeLabels: c } = Ne(), [o, v] = O(t);
370
+ Z(() => {
371
+ i && v(t);
372
+ }, [t, i]);
2676
373
  const {
2677
- handleTitleChange: N,
2678
- handleTitleBlur: x,
2679
- handleKeyChange: S,
2680
- handleFieldChange: y,
2681
- handleConstraintChange: p
2682
- } = dr(d, g, i), h = () => {
2683
- var u;
2684
- (u = d.title) != null && u.trim() && (a(d), t(!1));
2685
- }, v = () => {
2686
- g(e), t(!1);
374
+ handleTitleChange: x,
375
+ handleTitleBlur: g,
376
+ handleKeyChange: f,
377
+ handleFieldChange: I,
378
+ handleConstraintChange: b
379
+ } = at(
380
+ o,
381
+ v,
382
+ l,
383
+ C
384
+ ), q = () => {
385
+ var m;
386
+ (m = o.title) != null && m.trim() && (d(o), a(!1));
387
+ }, h = () => {
388
+ v(t), a(!1);
2687
389
  };
2688
- return /* @__PURE__ */ n(rr, { open: r, onOpenChange: t, children: /* @__PURE__ */ l(
2689
- Je,
390
+ return /* @__PURE__ */ e(We, { open: i, onOpenChange: a, children: /* @__PURE__ */ s(
391
+ ge,
2690
392
  {
2691
393
  className: "max-w-2xl max-h-[80vh] flex flex-col gap-0 p-0",
2692
394
  "data-testid": "dialog-edit-property",
2693
395
  children: [
2694
- /* @__PURE__ */ n(Ue, { className: "px-6 pt-6 pb-4 shrink-0", children: /* @__PURE__ */ n(Ke, { children: i ? `Add ${s.singular}` : `Edit ${s.singular}` }) }),
2695
- /* @__PURE__ */ l("div", { className: "space-y-6 px-6 pb-4 overflow-y-auto flex-1 min-h-0", children: [
2696
- /* @__PURE__ */ l("div", { className: "space-y-2", children: [
2697
- /* @__PURE__ */ l(z, { className: "flex items-center gap-1.5", children: [
2698
- /* @__PURE__ */ n("span", { className: "w-1.5 h-1.5 rounded-full bg-red-500" }),
396
+ /* @__PURE__ */ e(ve, { className: "px-6 pt-6 pb-4 shrink-0", children: /* @__PURE__ */ e(xe, { children: l ? `Add ${r.singular}` : `Edit ${r.singular}` }) }),
397
+ /* @__PURE__ */ s("div", { className: "space-y-6 px-6 pb-4 overflow-y-auto flex-1 min-h-0", children: [
398
+ /* @__PURE__ */ s("div", { className: "space-y-2", children: [
399
+ /* @__PURE__ */ s(N, { className: "flex items-center gap-1.5", children: [
400
+ /* @__PURE__ */ e("span", { className: "w-1.5 h-1.5 rounded-full bg-red-500" }),
2699
401
  "Type"
2700
402
  ] }),
2701
- /* @__PURE__ */ l(
2702
- Ae,
403
+ /* @__PURE__ */ s(
404
+ H,
2703
405
  {
2704
- value: d.type,
2705
- onValueChange: (u) => y("type", u),
406
+ value: o.type,
407
+ onValueChange: (m) => I("type", m),
2706
408
  "data-testid": "select-type-dialog",
2707
409
  children: [
2708
- /* @__PURE__ */ n(de, { children: /* @__PURE__ */ n(je, {}) }),
2709
- /* @__PURE__ */ l(ce, { children: [
2710
- /* @__PURE__ */ n(j, { value: "string", children: m.string }),
2711
- /* @__PURE__ */ n(j, { value: "number", children: m.number }),
2712
- /* @__PURE__ */ n(j, { value: "integer", children: m.integer }),
2713
- /* @__PURE__ */ n(j, { value: "boolean", children: m.boolean }),
2714
- /* @__PURE__ */ n(j, { value: "object", children: m.object }),
2715
- /* @__PURE__ */ n(j, { value: "array", children: m.array }),
2716
- /* @__PURE__ */ n(j, { value: "file", children: m.file }),
2717
- /* @__PURE__ */ n(j, { value: "null", children: m.null })
410
+ /* @__PURE__ */ e($, { children: /* @__PURE__ */ e(_, {}) }),
411
+ /* @__PURE__ */ s(K, { children: [
412
+ /* @__PURE__ */ e(k, { value: "string", children: c.string }),
413
+ /* @__PURE__ */ e(k, { value: "number", children: c.number }),
414
+ /* @__PURE__ */ e(k, { value: "integer", children: c.integer }),
415
+ /* @__PURE__ */ e(k, { value: "boolean", children: c.boolean }),
416
+ /* @__PURE__ */ e(k, { value: "object", children: c.object }),
417
+ /* @__PURE__ */ e(k, { value: "array", children: c.array }),
418
+ /* @__PURE__ */ e(k, { value: "file", children: c.file }),
419
+ /* @__PURE__ */ e(k, { value: "null", children: c.null })
2718
420
  ] })
2719
421
  ]
2720
422
  }
2721
423
  )
2722
424
  ] }),
2723
- /* @__PURE__ */ l("div", { className: "space-y-2", children: [
2724
- /* @__PURE__ */ l(z, { className: "flex items-center gap-1.5", children: [
2725
- /* @__PURE__ */ n("span", { className: "w-1.5 h-1.5 rounded-full bg-red-500" }),
425
+ /* @__PURE__ */ s("div", { className: "space-y-2", children: [
426
+ /* @__PURE__ */ s(N, { className: "flex items-center gap-1.5", children: [
427
+ /* @__PURE__ */ e("span", { className: "w-1.5 h-1.5 rounded-full bg-red-500" }),
2726
428
  "Title"
2727
429
  ] }),
2728
- /* @__PURE__ */ n(
2729
- L,
430
+ /* @__PURE__ */ e(
431
+ D,
2730
432
  {
2731
- value: d.title || "",
2732
- onChange: (u) => N(u.target.value),
2733
- onBlur: x,
433
+ value: o.title || "",
434
+ onChange: (m) => x(m.target.value),
435
+ onBlur: g,
2734
436
  placeholder: "Property Title",
2735
437
  "data-testid": "input-title-dialog",
2736
438
  required: !0
2737
439
  }
2738
440
  ),
2739
- !i && d.key && /* @__PURE__ */ l("p", { className: "text-xs text-muted-foreground font-mono", children: [
441
+ !l && o.key && /* @__PURE__ */ s("p", { className: "text-xs text-muted-foreground font-mono", children: [
2740
442
  "Key: ",
2741
- d.key
443
+ o.key
2742
444
  ] })
2743
445
  ] }),
2744
- i && /* @__PURE__ */ l("div", { className: "space-y-2", children: [
2745
- /* @__PURE__ */ n(z, { children: "Key" }),
2746
- /* @__PURE__ */ n(
2747
- L,
446
+ (l || C) && /* @__PURE__ */ s("div", { className: "space-y-2", children: [
447
+ /* @__PURE__ */ e(N, { children: "Key" }),
448
+ /* @__PURE__ */ e(
449
+ D,
2748
450
  {
2749
- value: d.key,
2750
- onChange: (u) => S(u.target.value),
451
+ value: o.key,
452
+ onChange: (m) => f(m.target.value),
2751
453
  placeholder: "property_key",
2752
454
  "data-testid": "input-key-dialog"
2753
455
  }
2754
- )
456
+ ),
457
+ !l && /* @__PURE__ */ e("p", { className: "text-xs text-yellow-600 dark:text-yellow-500", children: "⚠️ Changing the key may break existing references to this property" })
2755
458
  ] }),
2756
- /* @__PURE__ */ l("div", { className: "space-y-2", children: [
2757
- /* @__PURE__ */ n(z, { children: "Description" }),
2758
- /* @__PURE__ */ n(
2759
- xe,
459
+ /* @__PURE__ */ s("div", { className: "space-y-2", children: [
460
+ /* @__PURE__ */ e(N, { children: "Description" }),
461
+ /* @__PURE__ */ e(
462
+ te,
2760
463
  {
2761
464
  placeholder: "Optional description",
2762
- value: d.description || "",
2763
- onChange: (u) => y("description", u.target.value),
465
+ value: o.description || "",
466
+ onChange: (m) => I("description", m.target.value),
2764
467
  rows: 2,
2765
468
  "data-testid": "input-edit-description"
2766
469
  }
2767
470
  )
2768
471
  ] }),
2769
- d.type === "array" && /* @__PURE__ */ l("div", { className: "space-y-2 border-l-2 border-border pl-4 mt-2", children: [
2770
- /* @__PURE__ */ l(z, { className: "font-semibold text-xs text-muted-foreground", children: [
2771
- m.array,
472
+ o.type === "array" && /* @__PURE__ */ s("div", { className: "space-y-2 border-l-2 border-border pl-4 mt-2", children: [
473
+ /* @__PURE__ */ s(N, { className: "font-semibold text-xs text-muted-foreground", children: [
474
+ c.array,
2772
475
  " Items"
2773
476
  ] }),
2774
- d.items ? /* @__PURE__ */ l("div", { className: "bg-muted/40 p-2 rounded", children: [
2775
- /* @__PURE__ */ l("div", { className: "space-y-2", children: [
2776
- /* @__PURE__ */ n(z, { children: "Item Type" }),
2777
- /* @__PURE__ */ l(
2778
- Ae,
477
+ o.items ? /* @__PURE__ */ s("div", { className: "bg-muted/40 p-2 rounded", children: [
478
+ /* @__PURE__ */ s("div", { className: "space-y-2", children: [
479
+ /* @__PURE__ */ e(N, { children: "Item Type" }),
480
+ /* @__PURE__ */ s(
481
+ H,
2779
482
  {
2780
- value: d.items.type,
2781
- onValueChange: (u) => g({
2782
- ...d,
483
+ value: o.items.type,
484
+ onValueChange: (m) => v({
485
+ ...o,
2783
486
  items: {
2784
- ...d.items,
2785
- type: u
487
+ ...o.items,
488
+ type: m
2786
489
  }
2787
490
  }),
2788
491
  children: [
2789
- /* @__PURE__ */ n(de, { children: /* @__PURE__ */ n(je, {}) }),
2790
- /* @__PURE__ */ l(ce, { children: [
2791
- /* @__PURE__ */ n(j, { value: "string", children: m.string }),
2792
- /* @__PURE__ */ n(j, { value: "number", children: m.number }),
2793
- /* @__PURE__ */ n(j, { value: "integer", children: m.integer }),
2794
- /* @__PURE__ */ n(j, { value: "boolean", children: m.boolean }),
2795
- /* @__PURE__ */ n(j, { value: "object", children: m.object }),
2796
- /* @__PURE__ */ n(j, { value: "array", children: m.array }),
2797
- /* @__PURE__ */ n(j, { value: "file", children: m.file }),
2798
- /* @__PURE__ */ n(j, { value: "null", children: m.null })
492
+ /* @__PURE__ */ e($, { children: /* @__PURE__ */ e(_, {}) }),
493
+ /* @__PURE__ */ s(K, { children: [
494
+ /* @__PURE__ */ e(k, { value: "string", children: c.string }),
495
+ /* @__PURE__ */ e(k, { value: "number", children: c.number }),
496
+ /* @__PURE__ */ e(k, { value: "integer", children: c.integer }),
497
+ /* @__PURE__ */ e(k, { value: "boolean", children: c.boolean }),
498
+ /* @__PURE__ */ e(k, { value: "object", children: c.object }),
499
+ /* @__PURE__ */ e(k, { value: "array", children: c.array }),
500
+ /* @__PURE__ */ e(k, { value: "file", children: c.file }),
501
+ /* @__PURE__ */ e(k, { value: "null", children: c.null })
2799
502
  ] })
2800
503
  ]
2801
504
  }
2802
505
  )
2803
506
  ] }),
2804
- /* @__PURE__ */ l("div", { className: "space-y-2", children: [
2805
- /* @__PURE__ */ n(z, { children: "Item Title" }),
2806
- /* @__PURE__ */ n(
2807
- L,
507
+ /* @__PURE__ */ s("div", { className: "space-y-2", children: [
508
+ /* @__PURE__ */ e(N, { children: "Item Title" }),
509
+ /* @__PURE__ */ e(
510
+ D,
2808
511
  {
2809
- value: d.items.title || "",
2810
- onChange: (u) => g({
2811
- ...d,
512
+ value: o.items.title || "",
513
+ onChange: (m) => v({
514
+ ...o,
2812
515
  items: {
2813
- ...d.items,
2814
- title: u.target.value
516
+ ...o.items,
517
+ title: m.target.value
2815
518
  }
2816
519
  }),
2817
520
  placeholder: "Item Title"
2818
521
  }
2819
522
  )
2820
523
  ] }),
2821
- /* @__PURE__ */ l(
2822
- R,
524
+ /* @__PURE__ */ s(
525
+ T,
2823
526
  {
2824
527
  variant: "ghost",
2825
528
  size: "sm",
2826
529
  className: "mt-2",
2827
- onClick: () => g({ ...d, items: void 0 }),
530
+ onClick: () => v({ ...o, items: void 0 }),
2828
531
  children: [
2829
532
  "Remove ",
2830
- m.array,
533
+ c.array,
2831
534
  " Item Schema"
2832
535
  ]
2833
536
  }
2834
537
  )
2835
- ] }) : /* @__PURE__ */ l(
2836
- R,
538
+ ] }) : /* @__PURE__ */ s(
539
+ T,
2837
540
  {
2838
541
  variant: "outline",
2839
542
  size: "sm",
2840
543
  onClick: () => {
2841
- g({
2842
- ...d,
544
+ v({
545
+ ...o,
2843
546
  items: {
2844
547
  id: Date.now().toString() + Math.random(),
2845
548
  key: "item",
@@ -2850,150 +553,150 @@ function pe({
2850
553
  },
2851
554
  children: [
2852
555
  "Add ",
2853
- m.array,
556
+ c.array,
2854
557
  " Item Schema"
2855
558
  ]
2856
559
  }
2857
560
  )
2858
561
  ] }),
2859
- !o && /* @__PURE__ */ l("div", { className: "flex items-center gap-2", children: [
2860
- /* @__PURE__ */ n(
2861
- me,
562
+ !n && /* @__PURE__ */ s("div", { className: "flex items-center gap-2", children: [
563
+ /* @__PURE__ */ e(
564
+ U,
2862
565
  {
2863
566
  id: "prop-required",
2864
- checked: d.required,
2865
- onCheckedChange: (u) => y("required", u),
567
+ checked: o.required,
568
+ onCheckedChange: (m) => I("required", m),
2866
569
  "data-testid": "checkbox-edit-required"
2867
570
  }
2868
571
  ),
2869
- /* @__PURE__ */ n(z, { htmlFor: "prop-required", className: "cursor-pointer", children: "Required field" })
572
+ /* @__PURE__ */ e(N, { htmlFor: "prop-required", className: "cursor-pointer", children: "Required field" })
2870
573
  ] }),
2871
- d.type === "string" && /* @__PURE__ */ l("details", { className: "border rounded-md", children: [
2872
- /* @__PURE__ */ n("summary", { className: "p-4 cursor-pointer hover:bg-accent/50 transition-colors", children: /* @__PURE__ */ l("h4", { className: "text-sm font-medium inline", children: [
2873
- m.string,
574
+ o.type === "string" && /* @__PURE__ */ s("details", { className: "border rounded-md", children: [
575
+ /* @__PURE__ */ e("summary", { className: "p-4 cursor-pointer hover:bg-accent/50 transition-colors", children: /* @__PURE__ */ s("h4", { className: "text-sm font-medium inline", children: [
576
+ c.string,
2874
577
  " Constraints"
2875
578
  ] }) }),
2876
- /* @__PURE__ */ l("div", { className: "space-y-4 p-4 pt-0", children: [
2877
- /* @__PURE__ */ l("div", { className: "grid grid-cols-2 gap-4", children: [
2878
- /* @__PURE__ */ l("div", { className: "space-y-2", children: [
2879
- /* @__PURE__ */ n(z, { htmlFor: "min-length", children: "Minimum Length" }),
2880
- /* @__PURE__ */ n(
2881
- L,
579
+ /* @__PURE__ */ s("div", { className: "space-y-4 p-4 pt-0", children: [
580
+ /* @__PURE__ */ s("div", { className: "grid grid-cols-2 gap-4", children: [
581
+ /* @__PURE__ */ s("div", { className: "space-y-2", children: [
582
+ /* @__PURE__ */ e(N, { htmlFor: "min-length", children: "Minimum Length" }),
583
+ /* @__PURE__ */ e(
584
+ D,
2882
585
  {
2883
586
  id: "min-length",
2884
587
  type: "number",
2885
588
  placeholder: "0",
2886
- value: d.minLength || "",
2887
- onChange: (u) => p(
589
+ value: o.minLength || "",
590
+ onChange: (m) => b(
2888
591
  "minLength",
2889
- u.target.value ? parseInt(u.target.value) : void 0
592
+ m.target.value ? parseInt(m.target.value) : void 0
2890
593
  ),
2891
594
  "data-testid": "input-edit-minlength"
2892
595
  }
2893
596
  )
2894
597
  ] }),
2895
- /* @__PURE__ */ l("div", { className: "space-y-2", children: [
2896
- /* @__PURE__ */ n(z, { htmlFor: "max-length", children: "Maximum Length" }),
2897
- /* @__PURE__ */ n(
2898
- L,
598
+ /* @__PURE__ */ s("div", { className: "space-y-2", children: [
599
+ /* @__PURE__ */ e(N, { htmlFor: "max-length", children: "Maximum Length" }),
600
+ /* @__PURE__ */ e(
601
+ D,
2899
602
  {
2900
603
  id: "max-length",
2901
604
  type: "number",
2902
605
  placeholder: "∞",
2903
- value: d.maxLength || "",
2904
- onChange: (u) => p(
606
+ value: o.maxLength || "",
607
+ onChange: (m) => b(
2905
608
  "maxLength",
2906
- u.target.value ? parseInt(u.target.value) : void 0
609
+ m.target.value ? parseInt(m.target.value) : void 0
2907
610
  ),
2908
611
  "data-testid": "input-edit-maxlength"
2909
612
  }
2910
613
  )
2911
614
  ] })
2912
615
  ] }),
2913
- c && /* @__PURE__ */ l("div", { className: "space-y-2", children: [
2914
- /* @__PURE__ */ n(z, { htmlFor: "pattern", children: "Pattern (regex)" }),
2915
- /* @__PURE__ */ n(
2916
- L,
616
+ u && /* @__PURE__ */ s("div", { className: "space-y-2", children: [
617
+ /* @__PURE__ */ e(N, { htmlFor: "pattern", children: "Pattern (regex)" }),
618
+ /* @__PURE__ */ e(
619
+ D,
2917
620
  {
2918
621
  id: "pattern",
2919
622
  placeholder: "^[a-z]+$",
2920
- value: d.pattern || "",
2921
- onChange: (u) => p("pattern", u.target.value),
623
+ value: o.pattern || "",
624
+ onChange: (m) => b("pattern", m.target.value),
2922
625
  className: "font-mono text-sm",
2923
626
  "data-testid": "input-edit-pattern"
2924
627
  }
2925
628
  )
2926
629
  ] }),
2927
- /* @__PURE__ */ l("div", { className: "space-y-2", children: [
2928
- /* @__PURE__ */ n(z, { children: "Enum Values" }),
2929
- /* @__PURE__ */ n("div", { className: "space-y-2", children: [...d.enum || [], ""].map((u, A) => {
2930
- var O;
2931
- return /* @__PURE__ */ n(
2932
- L,
630
+ /* @__PURE__ */ s("div", { className: "space-y-2", children: [
631
+ /* @__PURE__ */ e(N, { children: "Enum Values" }),
632
+ /* @__PURE__ */ e("div", { className: "space-y-2", children: [...o.enum || [], ""].map((m, j) => {
633
+ var A;
634
+ return /* @__PURE__ */ e(
635
+ D,
2933
636
  {
2934
- placeholder: A === (((O = d.enum) == null ? void 0 : O.length) || 0) ? "Add new value..." : "Enum value",
2935
- value: u,
2936
- onChange: (_) => {
2937
- const M = _.target.value, F = d.enum || [];
2938
- if (A === F.length)
2939
- M.trim() && p("enum", [
2940
- ...F,
2941
- M.trim()
637
+ placeholder: j === (((A = o.enum) == null ? void 0 : A.length) || 0) ? "Add new value..." : "Enum value",
638
+ value: m,
639
+ onChange: (J) => {
640
+ const S = J.target.value, R = o.enum || [];
641
+ if (j === R.length)
642
+ S.trim() && b("enum", [
643
+ ...R,
644
+ S.trim()
2942
645
  ]);
2943
- else if (M.trim()) {
2944
- const E = [...F];
2945
- E[A] = M.trim(), p("enum", E);
646
+ else if (S.trim()) {
647
+ const z = [...R];
648
+ z[j] = S.trim(), b("enum", z);
2946
649
  } else {
2947
- const E = F.filter(
2948
- (J, G) => G !== A
650
+ const z = R.filter(
651
+ (vt, Ce) => Ce !== j
2949
652
  );
2950
- p(
653
+ b(
2951
654
  "enum",
2952
- E.length > 0 ? E : void 0
655
+ z.length > 0 ? z : void 0
2953
656
  );
2954
657
  }
2955
658
  },
2956
- "data-testid": `input-edit-enum-${A}`
659
+ "data-testid": `input-edit-enum-${j}`
2957
660
  },
2958
- A
661
+ j
2959
662
  );
2960
663
  }) }),
2961
- /* @__PURE__ */ n("p", { className: "text-xs text-muted-foreground", children: "Enter allowed values (empty fields will be removed)" })
664
+ /* @__PURE__ */ e("p", { className: "text-xs text-muted-foreground", children: "Enter allowed values (empty fields will be removed)" })
2962
665
  ] })
2963
666
  ] })
2964
667
  ] }),
2965
- (d.type === "number" || d.type === "integer") && /* @__PURE__ */ l("details", { className: "border rounded-md", children: [
2966
- /* @__PURE__ */ n("summary", { className: "p-4 cursor-pointer hover:bg-accent/50 transition-colors", children: /* @__PURE__ */ n("h4", { className: "text-sm font-medium inline", children: "Numeric Constraints" }) }),
2967
- /* @__PURE__ */ n("div", { className: "space-y-4 p-4 pt-0", children: /* @__PURE__ */ l("div", { className: "grid grid-cols-2 gap-4", children: [
2968
- /* @__PURE__ */ l("div", { className: "space-y-2", children: [
2969
- /* @__PURE__ */ n(z, { htmlFor: "minimum", children: "Minimum Value" }),
2970
- /* @__PURE__ */ n(
2971
- L,
668
+ (o.type === "number" || o.type === "integer") && /* @__PURE__ */ s("details", { className: "border rounded-md", children: [
669
+ /* @__PURE__ */ e("summary", { className: "p-4 cursor-pointer hover:bg-accent/50 transition-colors", children: /* @__PURE__ */ e("h4", { className: "text-sm font-medium inline", children: "Numeric Constraints" }) }),
670
+ /* @__PURE__ */ e("div", { className: "space-y-4 p-4 pt-0", children: /* @__PURE__ */ s("div", { className: "grid grid-cols-2 gap-4", children: [
671
+ /* @__PURE__ */ s("div", { className: "space-y-2", children: [
672
+ /* @__PURE__ */ e(N, { htmlFor: "minimum", children: "Minimum Value" }),
673
+ /* @__PURE__ */ e(
674
+ D,
2972
675
  {
2973
676
  id: "minimum",
2974
677
  type: "number",
2975
678
  placeholder: "-∞",
2976
- value: d.minimum ?? "",
2977
- onChange: (u) => p(
679
+ value: o.minimum ?? "",
680
+ onChange: (m) => b(
2978
681
  "minimum",
2979
- u.target.value ? parseFloat(u.target.value) : void 0
682
+ m.target.value ? parseFloat(m.target.value) : void 0
2980
683
  ),
2981
684
  "data-testid": "input-edit-minimum"
2982
685
  }
2983
686
  )
2984
687
  ] }),
2985
- /* @__PURE__ */ l("div", { className: "space-y-2", children: [
2986
- /* @__PURE__ */ n(z, { htmlFor: "maximum", children: "Maximum Value" }),
2987
- /* @__PURE__ */ n(
2988
- L,
688
+ /* @__PURE__ */ s("div", { className: "space-y-2", children: [
689
+ /* @__PURE__ */ e(N, { htmlFor: "maximum", children: "Maximum Value" }),
690
+ /* @__PURE__ */ e(
691
+ D,
2989
692
  {
2990
693
  id: "maximum",
2991
694
  type: "number",
2992
695
  placeholder: "∞",
2993
- value: d.maximum ?? "",
2994
- onChange: (u) => p(
696
+ value: o.maximum ?? "",
697
+ onChange: (m) => b(
2995
698
  "maximum",
2996
- u.target.value ? parseFloat(u.target.value) : void 0
699
+ m.target.value ? parseFloat(m.target.value) : void 0
2997
700
  ),
2998
701
  "data-testid": "input-edit-maximum"
2999
702
  }
@@ -3001,79 +704,79 @@ function pe({
3001
704
  ] })
3002
705
  ] }) })
3003
706
  ] }),
3004
- d.type === "array" && /* @__PURE__ */ l("details", { className: "border rounded-md", children: [
3005
- /* @__PURE__ */ n("summary", { className: "p-4 cursor-pointer hover:bg-accent/50 transition-colors", children: /* @__PURE__ */ l("h4", { className: "text-sm font-medium inline", children: [
3006
- m.array,
707
+ o.type === "array" && /* @__PURE__ */ s("details", { className: "border rounded-md", children: [
708
+ /* @__PURE__ */ e("summary", { className: "p-4 cursor-pointer hover:bg-accent/50 transition-colors", children: /* @__PURE__ */ s("h4", { className: "text-sm font-medium inline", children: [
709
+ c.array,
3007
710
  " Constraints"
3008
711
  ] }) }),
3009
- /* @__PURE__ */ l("div", { className: "space-y-4 p-4 pt-0", children: [
3010
- /* @__PURE__ */ l("div", { className: "grid grid-cols-2 gap-4", children: [
3011
- /* @__PURE__ */ l("div", { className: "space-y-2", children: [
3012
- /* @__PURE__ */ n(z, { htmlFor: "min-items", children: "Minimum Items" }),
3013
- /* @__PURE__ */ n(
3014
- L,
712
+ /* @__PURE__ */ s("div", { className: "space-y-4 p-4 pt-0", children: [
713
+ /* @__PURE__ */ s("div", { className: "grid grid-cols-2 gap-4", children: [
714
+ /* @__PURE__ */ s("div", { className: "space-y-2", children: [
715
+ /* @__PURE__ */ e(N, { htmlFor: "min-items", children: "Minimum Items" }),
716
+ /* @__PURE__ */ e(
717
+ D,
3015
718
  {
3016
719
  id: "min-items",
3017
720
  type: "number",
3018
721
  placeholder: "0",
3019
- value: d.minItems || "",
3020
- onChange: (u) => p(
722
+ value: o.minItems || "",
723
+ onChange: (m) => b(
3021
724
  "minItems",
3022
- u.target.value ? parseInt(u.target.value) : void 0
725
+ m.target.value ? parseInt(m.target.value) : void 0
3023
726
  ),
3024
727
  "data-testid": "input-edit-minitems"
3025
728
  }
3026
729
  )
3027
730
  ] }),
3028
- /* @__PURE__ */ l("div", { className: "space-y-2", children: [
3029
- /* @__PURE__ */ n(z, { htmlFor: "max-items", children: "Maximum Items" }),
3030
- /* @__PURE__ */ n(
3031
- L,
731
+ /* @__PURE__ */ s("div", { className: "space-y-2", children: [
732
+ /* @__PURE__ */ e(N, { htmlFor: "max-items", children: "Maximum Items" }),
733
+ /* @__PURE__ */ e(
734
+ D,
3032
735
  {
3033
736
  id: "max-items",
3034
737
  type: "number",
3035
738
  placeholder: "∞",
3036
- value: d.maxItems || "",
3037
- onChange: (u) => p(
739
+ value: o.maxItems || "",
740
+ onChange: (m) => b(
3038
741
  "maxItems",
3039
- u.target.value ? parseInt(u.target.value) : void 0
742
+ m.target.value ? parseInt(m.target.value) : void 0
3040
743
  ),
3041
744
  "data-testid": "input-edit-maxitems"
3042
745
  }
3043
746
  )
3044
747
  ] })
3045
748
  ] }),
3046
- /* @__PURE__ */ l("div", { className: "flex items-center gap-2", children: [
3047
- /* @__PURE__ */ n(
3048
- me,
749
+ /* @__PURE__ */ s("div", { className: "flex items-center gap-2", children: [
750
+ /* @__PURE__ */ e(
751
+ U,
3049
752
  {
3050
753
  id: "unique-items",
3051
- checked: d.uniqueItems || !1,
3052
- onCheckedChange: (u) => p("uniqueItems", u),
754
+ checked: o.uniqueItems || !1,
755
+ onCheckedChange: (m) => b("uniqueItems", m),
3053
756
  "data-testid": "checkbox-edit-unique"
3054
757
  }
3055
758
  ),
3056
- /* @__PURE__ */ n(z, { htmlFor: "unique-items", className: "cursor-pointer", children: "All items must be unique" })
759
+ /* @__PURE__ */ e(N, { htmlFor: "unique-items", className: "cursor-pointer", children: "All items must be unique" })
3057
760
  ] })
3058
761
  ] })
3059
762
  ] })
3060
763
  ] }),
3061
- /* @__PURE__ */ l(We, { className: "px-6 py-4 border-t bg-background shrink-0", children: [
3062
- /* @__PURE__ */ n(
3063
- R,
764
+ /* @__PURE__ */ s(ye, { className: "px-6 py-4 border-t bg-background shrink-0", children: [
765
+ /* @__PURE__ */ e(
766
+ T,
3064
767
  {
3065
768
  variant: "outline",
3066
- onClick: v,
769
+ onClick: h,
3067
770
  "data-testid": "button-cancel",
3068
771
  children: "Cancel"
3069
772
  }
3070
773
  ),
3071
- /* @__PURE__ */ n(
3072
- R,
774
+ /* @__PURE__ */ e(
775
+ T,
3073
776
  {
3074
- onClick: h,
777
+ onClick: q,
3075
778
  "data-testid": "button-save",
3076
- disabled: !((T = d.title) != null && T.trim()),
779
+ disabled: !((L = o.title) != null && L.trim()),
3077
780
  children: "Save Changes"
3078
781
  }
3079
782
  )
@@ -3082,434 +785,547 @@ function pe({
3082
785
  }
3083
786
  ) });
3084
787
  }
3085
- const we = () => `${Date.now()}-${Math.random()}`;
3086
- function he({
3087
- property: e,
3088
- onUpdate: r,
3089
- onDelete: t,
3090
- level: a = 1,
3091
- isArrayItem: o = !1,
3092
- showRegex: i = !1
788
+ function re(t, i, a = {}) {
789
+ const { allowEmpty: d = !1, onEditStart: n, onEditCancel: l } = a, [r, u] = O(!1), [C, c] = O(t);
790
+ Z(() => {
791
+ r || c(t);
792
+ }, [t, r]);
793
+ const o = () => {
794
+ c(t), u(!0), n == null || n();
795
+ }, v = (f) => {
796
+ c(f);
797
+ }, x = () => {
798
+ const f = C.trim();
799
+ if (!d && !f) {
800
+ c(t), u(!1);
801
+ return;
802
+ }
803
+ f !== t && i(f), u(!1);
804
+ };
805
+ return {
806
+ isEditing: r,
807
+ value: C,
808
+ startEdit: o,
809
+ handleChange: v,
810
+ handleBlur: x,
811
+ handleKeyDown: (f) => {
812
+ f.key === "Enter" ? x() : f.key === "Escape" && (c(t), u(!1), l == null || l());
813
+ }
814
+ };
815
+ }
816
+ function nt(t, i) {
817
+ const [a, d] = O(!1);
818
+ return {
819
+ isChangingType: a,
820
+ setIsChangingType: d,
821
+ handleTypeChange: (r) => {
822
+ const u = { ...t, type: r };
823
+ r !== "string" && (delete u.minLength, delete u.maxLength, delete u.pattern, delete u.enum), r !== "number" && r !== "integer" && (delete u.minimum, delete u.maximum), r !== "array" && (delete u.minItems, delete u.maxItems, delete u.uniqueItems, delete u.items), r !== "object" && delete u.children, i(u), d(!1);
824
+ },
825
+ availableTypes: [
826
+ "string",
827
+ "number",
828
+ "integer",
829
+ "boolean",
830
+ "object",
831
+ "array",
832
+ "file"
833
+ ]
834
+ };
835
+ }
836
+ const ae = () => `${Date.now()}-${Math.random()}`;
837
+ function ie(t = {}) {
838
+ const { onConfirm: i, onCancel: a, createInitialData: d } = t, [n, l] = O(!1), [r, u] = O(null), C = (x) => {
839
+ const g = x ?? (d ? d() : null);
840
+ u(g), l(!0);
841
+ }, c = () => {
842
+ l(!1), u(null), a == null || a();
843
+ };
844
+ return {
845
+ isOpen: n,
846
+ data: r,
847
+ open: C,
848
+ close: c,
849
+ confirm: (x) => {
850
+ i == null || i(x), l(!1), u(null);
851
+ },
852
+ setIsOpen: (x) => {
853
+ x ? l(!0) : c();
854
+ }
855
+ };
856
+ }
857
+ function st(t, i) {
858
+ const a = ie({
859
+ createInitialData: () => ({
860
+ id: ae(),
861
+ key: "",
862
+ type: "string",
863
+ required: !1
864
+ }),
865
+ onConfirm: (l) => {
866
+ i({
867
+ ...t,
868
+ children: [...t.children || [], l]
869
+ });
870
+ }
871
+ });
872
+ return {
873
+ addChild: () => a.open(),
874
+ updateChild: (l, r) => {
875
+ const u = t.children.map(
876
+ (C) => C.id === l ? r : C
877
+ );
878
+ i({ ...t, children: u });
879
+ },
880
+ deleteChild: (l) => {
881
+ const r = t.children.filter((u) => u.id !== l);
882
+ i({ ...t, children: r });
883
+ },
884
+ addChildDialog: {
885
+ isOpen: a.isOpen,
886
+ data: a.data,
887
+ setIsOpen: a.setIsOpen,
888
+ confirm: a.confirm
889
+ }
890
+ };
891
+ }
892
+ function Q({
893
+ property: t,
894
+ onUpdate: i,
895
+ onDelete: a,
896
+ level: d = 1,
897
+ isArrayItem: n = !1,
898
+ showRegex: l = !1,
899
+ keyEditable: r = !1
3093
900
  }) {
3094
- const { getTypeLabel: s } = Qe(), [c, m] = V(!1), [d, g] = V(null), [N, x] = V(!1), [S, y] = V(!1), [p, h] = V(e.title || "");
3095
- be(() => {
3096
- S || h(e.title || "");
3097
- }, [e.title, S]);
3098
- const v = `h${Math.min(a, 6)}`, T = e.type === "object", u = T && e.children && e.children.length > 0, A = {
901
+ const { getTypeLabel: u, typeLabels: C } = Ne(), c = ie(), o = re(
902
+ t.title || t.key || "",
903
+ (h) => i({ ...t, title: h }),
904
+ { allowEmpty: !1 }
905
+ ), v = re(
906
+ t.description || "",
907
+ (h) => i({ ...t, description: h || void 0 }),
908
+ { allowEmpty: !0 }
909
+ ), x = nt(t, i), g = st(t, i), f = `h${Math.min(d, 6)}`, I = t.type === "object", b = I && t.children && t.children.length > 0, q = {
3099
910
  1: "text-lg font-semibold",
3100
911
  2: "text-base",
3101
912
  3: "text-base",
3102
913
  4: "text-base",
3103
914
  5: "text-sm",
3104
915
  6: "text-sm"
3105
- }[a] || "text-sm", O = (f, q) => {
3106
- const X = e.children.map(
3107
- (K) => K.id === f ? q : K
3108
- );
3109
- r({ ...e, children: X });
3110
- }, _ = (f) => {
3111
- const q = e.children.filter((X) => X.id !== f);
3112
- r({ ...e, children: q });
3113
- }, M = () => {
3114
- const f = {
3115
- id: we(),
3116
- key: "",
3117
- type: "string",
3118
- required: !1
3119
- };
3120
- g(f), x(!0);
3121
- }, F = (f) => {
3122
- r({
3123
- ...e,
3124
- children: [...e.children || [], f]
3125
- }), x(!1), g(null);
3126
- }, E = () => {
3127
- x(!1), g(null);
3128
- }, J = () => {
3129
- const f = e.title || e.key || "";
3130
- h(f), y(!0);
3131
- }, G = () => {
3132
- const f = p.trim();
3133
- if (!f) {
3134
- h(e.title || ""), y(!1);
3135
- return;
3136
- }
3137
- f !== e.title && r({ ...e, title: f }), y(!1);
3138
- }, w = (f) => {
3139
- f.key === "Enter" ? G() : f.key === "Escape" && (h(e.title || ""), y(!1));
3140
- };
3141
- return /* @__PURE__ */ l("div", { className: "group", children: [
3142
- /* @__PURE__ */ l("div", { className: "flex gap-4 items-center rounded-md -mx-2 px-2 py-1 transition-colors hover:bg-accent/50", children: [
3143
- /* @__PURE__ */ n("div", { className: "flex-1 min-w-0", children: /* @__PURE__ */ l("div", { className: "flex items-start gap-3", children: [
3144
- !o && /* @__PURE__ */ n(
916
+ }[d] || "text-sm";
917
+ return /* @__PURE__ */ s("div", { className: "group", children: [
918
+ /* @__PURE__ */ s("div", { className: "flex gap-4 items-center rounded-md -mx-2 px-2 py-1 transition-colors hover:bg-accent/50", children: [
919
+ /* @__PURE__ */ e("div", { className: "flex-1 min-w-0", children: /* @__PURE__ */ s("div", { className: "flex items-start gap-3", children: [
920
+ !n && /* @__PURE__ */ e(
3145
921
  "button",
3146
922
  {
3147
- onClick: () => r({ ...e, required: !e.required }),
923
+ onClick: () => i({ ...t, required: !t.required }),
3148
924
  className: "shrink-0 transition-all hover:scale-110 mt-0.5",
3149
- title: e.required ? "Required field - click to make optional" : "Optional field - click to make required",
3150
- children: e.required ? /* @__PURE__ */ n("span", { className: "block w-4 h-4 rounded-full bg-primary" }) : /* @__PURE__ */ n("span", { className: "block w-4 h-4 rounded-full border border-dashed border-gray-400" })
925
+ title: t.required ? "Required field - click to make optional" : "Optional field - click to make required",
926
+ children: t.required ? /* @__PURE__ */ e("span", { className: "block w-4 h-4 rounded-full bg-primary" }) : /* @__PURE__ */ e("span", { className: "block w-4 h-4 rounded-full border border-dashed border-gray-400" })
3151
927
  }
3152
928
  ),
3153
- S ? /* @__PURE__ */ n(
3154
- L,
929
+ o.isEditing ? /* @__PURE__ */ e(
930
+ D,
3155
931
  {
3156
- value: p,
3157
- onChange: (f) => h(f.target.value),
3158
- onBlur: G,
3159
- onKeyDown: w,
932
+ value: o.value,
933
+ onChange: (h) => o.handleChange(h.target.value),
934
+ onBlur: o.handleBlur,
935
+ onKeyDown: o.handleKeyDown,
3160
936
  autoFocus: !0,
3161
- className: A,
937
+ className: q,
3162
938
  placeholder: "Enter title"
3163
939
  }
3164
- ) : /* @__PURE__ */ l("div", { className: "flex gap-2 flex-wrap", children: [
3165
- /* @__PURE__ */ l("div", { className: "flex items-start gap-2", children: [
3166
- /* @__PURE__ */ n(
3167
- v,
940
+ ) : /* @__PURE__ */ s("div", { className: "flex gap-2 flex-wrap flex-1", children: [
941
+ /* @__PURE__ */ s("div", { className: "flex items-start gap-2", children: [
942
+ /* @__PURE__ */ e(
943
+ f,
3168
944
  {
3169
- className: `${A} cursor-pointer hover:text-primary transition-colors leading-none`,
3170
- onClick: J,
3171
- children: e.title || e.key || /* @__PURE__ */ n("span", { className: "text-muted-foreground italic", children: "unnamed" })
945
+ className: `${q} cursor-pointer hover:text-primary transition-colors leading-none`,
946
+ onClick: o.startEdit,
947
+ children: t.title || t.key || /* @__PURE__ */ e("span", { className: "text-muted-foreground italic", children: "unnamed" })
3172
948
  }
3173
949
  ),
3174
- /* @__PURE__ */ n(Yt, { children: /* @__PURE__ */ l(er, { children: [
3175
- /* @__PURE__ */ n(tr, { asChild: !0, children: /* @__PURE__ */ l("span", { children: [
3176
- e.type === "string" && /* @__PURE__ */ n(st, { className: "w-5 h-5 text-muted-foreground" }),
3177
- e.type === "number" && /* @__PURE__ */ n(Se, { className: "w-5 h-5 text-muted-foreground" }),
3178
- e.type === "integer" && /* @__PURE__ */ n(Se, { className: "w-5 h-5 text-muted-foreground" }),
3179
- e.type === "boolean" && /* @__PURE__ */ n(lt, { className: "w-5 h-5 text-muted-foreground" }),
3180
- e.type === "object" && /* @__PURE__ */ n(dt, { className: "w-5 h-5 text-muted-foreground" }),
3181
- e.type === "array" && /* @__PURE__ */ n(ct, { className: "w-5 h-5 text-muted-foreground" }),
3182
- e.type === "file" && /* @__PURE__ */ n(mt, { className: "w-5 h-5 text-muted-foreground" })
3183
- ] }) }),
3184
- /* @__PURE__ */ l($e, { side: "top", children: [
3185
- s(e.type),
3186
- e.type === "array" && e.items ? ` of ${s(e.items.type)}` : ""
950
+ x.isChangingType ? /* @__PURE__ */ s(
951
+ H,
952
+ {
953
+ value: t.type,
954
+ onValueChange: (h) => x.handleTypeChange(h),
955
+ open: x.isChangingType,
956
+ onOpenChange: x.setIsChangingType,
957
+ children: [
958
+ /* @__PURE__ */ e($, { className: "w-[140px] h-7", children: /* @__PURE__ */ e(_, {}) }),
959
+ /* @__PURE__ */ e(K, { children: x.availableTypes.map((h) => /* @__PURE__ */ e(k, { value: h, children: C[h] }, h)) })
960
+ ]
961
+ }
962
+ ) : /* @__PURE__ */ e(_e, { children: /* @__PURE__ */ s(Ue, { children: [
963
+ /* @__PURE__ */ e(Xe, { asChild: !0, children: /* @__PURE__ */ s(
964
+ "button",
965
+ {
966
+ onClick: () => x.setIsChangingType(!0),
967
+ className: "cursor-pointer hover:bg-accent rounded p-0.5 transition-colors",
968
+ children: [
969
+ t.type === "string" && /* @__PURE__ */ e(Pe, { className: "w-5 h-5 text-muted-foreground" }),
970
+ t.type === "number" && /* @__PURE__ */ e(se, { className: "w-5 h-5 text-muted-foreground" }),
971
+ t.type === "integer" && /* @__PURE__ */ e(se, { className: "w-5 h-5 text-muted-foreground" }),
972
+ t.type === "boolean" && /* @__PURE__ */ e(Oe, { className: "w-5 h-5 text-muted-foreground" }),
973
+ t.type === "object" && /* @__PURE__ */ e(Re, { className: "w-5 h-5 text-muted-foreground" }),
974
+ t.type === "array" && /* @__PURE__ */ e(Ee, { className: "w-5 h-5 text-muted-foreground" }),
975
+ t.type === "file" && /* @__PURE__ */ e(Fe, { className: "w-5 h-5 text-muted-foreground" })
976
+ ]
977
+ }
978
+ ) }),
979
+ /* @__PURE__ */ s(ue, { children: [
980
+ u(t.type),
981
+ t.type === "array" && t.items ? ` of ${u(t.items.type)}` : "",
982
+ /* @__PURE__ */ e("div", { className: "text-xs text-muted-foreground mt-1", children: "Click to change type" })
3187
983
  ] })
3188
984
  ] }) }),
3189
- e.type === "object" && /* @__PURE__ */ n(
3190
- R,
985
+ t.type === "object" && /* @__PURE__ */ e(
986
+ T,
3191
987
  {
3192
988
  variant: "ghost",
3193
989
  size: "icon",
3194
990
  className: "opacity-0 group-hover:opacity-100 h-6 w-6",
3195
- onClick: M,
3196
- "data-testid": `button-add-child-${e.id}`,
3197
- children: /* @__PURE__ */ n(re, { className: "!w-5 !h-5" })
991
+ onClick: g.addChild,
992
+ "data-testid": `button-add-child-${t.id}`,
993
+ children: /* @__PURE__ */ e(B, { className: "!w-5 !h-5" })
3198
994
  }
3199
995
  )
3200
996
  ] }),
3201
- e.description && /* @__PURE__ */ n(
997
+ /* @__PURE__ */ e("div", { className: "flex-1", children: v.isEditing ? /* @__PURE__ */ e(
998
+ D,
999
+ {
1000
+ value: v.value,
1001
+ onChange: (h) => v.handleChange(h.target.value),
1002
+ onBlur: v.handleBlur,
1003
+ onKeyDown: v.handleKeyDown,
1004
+ autoFocus: !0,
1005
+ className: "text-sm flex-1",
1006
+ placeholder: "Enter description"
1007
+ }
1008
+ ) : /* @__PURE__ */ e(le, { children: t.description ? /* @__PURE__ */ e(
3202
1009
  "p",
3203
1010
  {
3204
- className: "text-sm text-muted-foreground flex-1 min-w-[200px]",
3205
- "data-testid": `text-description-${e.id}`,
3206
- children: e.description
1011
+ className: "text-sm text-muted-foreground flex-1 min-w-[200px] cursor-pointer hover:text-foreground transition-colors",
1012
+ "data-testid": `text-description-${t.id}`,
1013
+ onClick: v.startEdit,
1014
+ children: t.description
3207
1015
  }
3208
- )
1016
+ ) : /* @__PURE__ */ e(
1017
+ "p",
1018
+ {
1019
+ className: "text-sm text-muted-foreground/50 flex-1 min-w-[200px] cursor-pointer hover:text-muted-foreground italic transition-colors",
1020
+ onClick: v.startEdit,
1021
+ children: "Add description..."
1022
+ }
1023
+ ) }) })
3209
1024
  ] })
3210
1025
  ] }) }),
3211
- /* @__PURE__ */ l("div", { className: "flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity shrink-0", children: [
3212
- /* @__PURE__ */ n(
3213
- R,
1026
+ /* @__PURE__ */ s("div", { className: "flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity shrink-0", children: [
1027
+ /* @__PURE__ */ e(
1028
+ T,
3214
1029
  {
3215
1030
  variant: "ghost",
3216
1031
  size: "icon",
3217
1032
  className: "h-7 w-7",
3218
- onClick: () => m(!0),
3219
- "data-testid": `button-edit-${e.id}`,
3220
- children: /* @__PURE__ */ n(ut, { className: "w-3 h-3" })
1033
+ onClick: () => c.open(t),
1034
+ "data-testid": `button-edit-${t.id}`,
1035
+ children: /* @__PURE__ */ e(ze, { className: "w-3 h-3" })
3221
1036
  }
3222
1037
  ),
3223
- T && e.type !== "object" && /* @__PURE__ */ n(
3224
- R,
1038
+ I && t.type !== "object" && /* @__PURE__ */ e(
1039
+ T,
3225
1040
  {
3226
1041
  variant: "ghost",
3227
1042
  size: "icon",
3228
1043
  className: "h-7 w-7",
3229
- onClick: M,
3230
- "data-testid": `button-add-child-${e.id}`,
3231
- children: /* @__PURE__ */ n(re, { className: "w-3 h-3" })
1044
+ onClick: g.addChild,
1045
+ "data-testid": `button-add-child-${t.id}`,
1046
+ children: /* @__PURE__ */ e(B, { className: "w-3 h-3" })
3232
1047
  }
3233
1048
  ),
3234
- /* @__PURE__ */ n(
3235
- R,
1049
+ /* @__PURE__ */ e(
1050
+ T,
3236
1051
  {
3237
1052
  variant: "ghost",
3238
1053
  size: "icon",
3239
1054
  className: "h-7 w-7 text-muted-foreground hover:text-destructive",
3240
- onClick: t,
3241
- "data-testid": `button-delete-${e.id}`,
3242
- children: /* @__PURE__ */ n(Le, { className: "w-3 h-3" })
1055
+ onClick: a,
1056
+ "data-testid": `button-delete-${t.id}`,
1057
+ children: /* @__PURE__ */ e(ce, { className: "w-3 h-3" })
3243
1058
  }
3244
1059
  )
3245
1060
  ] })
3246
1061
  ] }),
3247
- u && /* @__PURE__ */ n(
1062
+ b && /* @__PURE__ */ e(
3248
1063
  "div",
3249
1064
  {
3250
- className: a === 1 ? "ml-6 mt-1 border-l-2 border-border pl-6" : "ml-4 mt-1 border-l border-border pl-4",
3251
- children: e.children.map((f) => /* @__PURE__ */ n(
3252
- he,
1065
+ className: d === 1 ? "ml-6 mt-1 border-l-2 border-border pl-6" : "ml-4 mt-1 border-l border-border pl-4",
1066
+ children: t.children.map((h) => /* @__PURE__ */ e(
1067
+ Q,
3253
1068
  {
3254
- property: f,
3255
- onUpdate: (q) => O(f.id, q),
3256
- onDelete: () => _(f.id),
3257
- level: a + 1,
3258
- showRegex: i
1069
+ property: h,
1070
+ onUpdate: (L) => g.updateChild(h.id, L),
1071
+ onDelete: () => g.deleteChild(h.id),
1072
+ level: d + 1,
1073
+ showRegex: l,
1074
+ keyEditable: r
3259
1075
  },
3260
- f.id
1076
+ h.id
3261
1077
  ))
3262
1078
  }
3263
1079
  ),
3264
- e.type === "array" && e.items && /* @__PURE__ */ l(
1080
+ t.type === "array" && t.items && /* @__PURE__ */ s(
3265
1081
  "div",
3266
1082
  {
3267
- className: a === 1 ? "ml-6 mt-1 border-l-2 border-border pl-6" : "ml-4 mt-1 border-l border-border pl-4",
1083
+ className: d === 1 ? "ml-6 mt-1 border-l-2 border-border pl-6" : "ml-4 mt-1 border-l border-border pl-4",
3268
1084
  children: [
3269
- /* @__PURE__ */ l("div", { className: "mb-2 text-xs text-muted-foreground font-semibold uppercase", children: [
3270
- s("array"),
1085
+ /* @__PURE__ */ s("div", { className: "mb-2 text-xs text-muted-foreground font-semibold uppercase", children: [
1086
+ u("array"),
3271
1087
  " Items"
3272
1088
  ] }),
3273
- /* @__PURE__ */ n(
3274
- he,
1089
+ /* @__PURE__ */ e(
1090
+ Q,
3275
1091
  {
3276
- property: e.items,
3277
- onUpdate: (f) => r({ ...e, items: f }),
3278
- onDelete: () => r({ ...e, items: void 0 }),
3279
- level: a + 1,
1092
+ property: t.items,
1093
+ onUpdate: (h) => i({ ...t, items: h }),
1094
+ onDelete: () => i({ ...t, items: void 0 }),
1095
+ level: d + 1,
3280
1096
  isArrayItem: !0,
3281
- showRegex: i
1097
+ showRegex: l,
1098
+ keyEditable: r
3282
1099
  }
3283
1100
  )
3284
1101
  ]
3285
1102
  }
3286
1103
  ),
3287
- /* @__PURE__ */ n(
3288
- pe,
1104
+ /* @__PURE__ */ e(
1105
+ G,
3289
1106
  {
3290
- property: e,
3291
- open: c,
3292
- onOpenChange: m,
3293
- onUpdate: r,
3294
- isArrayItem: o,
1107
+ property: c.data || t,
1108
+ open: c.isOpen,
1109
+ onOpenChange: c.setIsOpen,
1110
+ onUpdate: (h) => {
1111
+ i(h), c.close();
1112
+ },
1113
+ isArrayItem: n,
3295
1114
  isNewProperty: !1,
3296
- showRegex: i
1115
+ showRegex: l,
1116
+ keyEditable: r
3297
1117
  }
3298
1118
  ),
3299
- N && d && /* @__PURE__ */ n(
3300
- pe,
1119
+ g.addChildDialog.isOpen && g.addChildDialog.data && /* @__PURE__ */ e(
1120
+ G,
3301
1121
  {
3302
- property: d,
3303
- open: N,
1122
+ property: g.addChildDialog.data,
1123
+ open: g.addChildDialog.isOpen,
3304
1124
  isNewProperty: !0,
3305
- onOpenChange: (f) => {
3306
- f || E();
3307
- },
3308
- onUpdate: F,
3309
- showRegex: i
1125
+ onOpenChange: g.addChildDialog.setIsOpen,
1126
+ onUpdate: g.addChildDialog.confirm,
1127
+ showRegex: l,
1128
+ keyEditable: r
3310
1129
  }
3311
1130
  )
3312
1131
  ] });
3313
1132
  }
3314
- const Ne = I.forwardRef(({ className: e, ...r }, t) => /* @__PURE__ */ n(
1133
+ const ne = y.forwardRef(({ className: t, ...i }, a) => /* @__PURE__ */ e(
3315
1134
  "div",
3316
1135
  {
3317
- ref: t,
3318
- className: C(
3319
- "shadcn-card rounded-xl border bg-card border-card-border text-card-foreground shadow-sm",
3320
- e
1136
+ ref: a,
1137
+ className: p(
1138
+ "rounded-xl border bg-card text-card-foreground shadow",
1139
+ t
3321
1140
  ),
3322
- ...r
1141
+ ...i
3323
1142
  }
3324
1143
  ));
3325
- Ne.displayName = "Card";
3326
- const mr = I.forwardRef(({ className: e, ...r }, t) => /* @__PURE__ */ n(
1144
+ ne.displayName = "Card";
1145
+ const rt = y.forwardRef(({ className: t, ...i }, a) => /* @__PURE__ */ e(
3327
1146
  "div",
3328
1147
  {
3329
- ref: t,
3330
- className: C("flex flex-col space-y-1.5 p-6", e),
3331
- ...r
1148
+ ref: a,
1149
+ className: p("flex flex-col space-y-1.5 p-6", t),
1150
+ ...i
3332
1151
  }
3333
1152
  ));
3334
- mr.displayName = "CardHeader";
3335
- const ur = I.forwardRef(({ className: e, ...r }, t) => /* @__PURE__ */ n(
1153
+ rt.displayName = "CardHeader";
1154
+ const lt = y.forwardRef(({ className: t, ...i }, a) => /* @__PURE__ */ e(
3336
1155
  "div",
3337
1156
  {
3338
- ref: t,
3339
- className: C(
3340
- "text-2xl font-semibold leading-none tracking-tight",
3341
- e
3342
- ),
3343
- ...r
1157
+ ref: a,
1158
+ className: p("font-semibold leading-none tracking-tight", t),
1159
+ ...i
3344
1160
  }
3345
1161
  ));
3346
- ur.displayName = "CardTitle";
3347
- const pr = I.forwardRef(({ className: e, ...r }, t) => /* @__PURE__ */ n(
1162
+ lt.displayName = "CardTitle";
1163
+ const dt = y.forwardRef(({ className: t, ...i }, a) => /* @__PURE__ */ e(
3348
1164
  "div",
3349
1165
  {
3350
- ref: t,
3351
- className: C("text-sm text-muted-foreground", e),
3352
- ...r
1166
+ ref: a,
1167
+ className: p("text-sm text-muted-foreground", t),
1168
+ ...i
3353
1169
  }
3354
1170
  ));
3355
- pr.displayName = "CardDescription";
3356
- const hr = I.forwardRef(({ className: e, ...r }, t) => /* @__PURE__ */ n("div", { ref: t, className: C("p-6 pt-0", e), ...r }));
3357
- hr.displayName = "CardContent";
3358
- const fr = I.forwardRef(({ className: e, ...r }, t) => /* @__PURE__ */ n(
1171
+ dt.displayName = "CardDescription";
1172
+ const ot = y.forwardRef(({ className: t, ...i }, a) => /* @__PURE__ */ e("div", { ref: a, className: p("p-6 pt-0", t), ...i }));
1173
+ ot.displayName = "CardContent";
1174
+ const ct = y.forwardRef(({ className: t, ...i }, a) => /* @__PURE__ */ e(
3359
1175
  "div",
3360
1176
  {
3361
- ref: t,
3362
- className: C("flex items-center p-6 pt-0", e),
3363
- ...r
1177
+ ref: a,
1178
+ className: p("flex items-center p-6 pt-0", t),
1179
+ ...i
3364
1180
  }
3365
1181
  ));
3366
- fr.displayName = "CardFooter";
3367
- const gr = () => new Promise((e, r) => {
3368
- const t = document.createElement("input");
3369
- t.type = "file", t.accept = ".json", t.onchange = (a) => {
3370
- var s;
3371
- const o = (s = a.target.files) == null ? void 0 : s[0];
3372
- if (!o) {
3373
- r(new Error("No file selected"));
1182
+ ct.displayName = "CardFooter";
1183
+ const mt = () => new Promise((t, i) => {
1184
+ const a = document.createElement("input");
1185
+ a.type = "file", a.accept = ".json", a.onchange = (d) => {
1186
+ var r;
1187
+ const n = (r = d.target.files) == null ? void 0 : r[0];
1188
+ if (!n) {
1189
+ i(new Error("No file selected"));
3374
1190
  return;
3375
1191
  }
3376
- const i = new FileReader();
3377
- i.onload = (c) => {
3378
- var m;
1192
+ const l = new FileReader();
1193
+ l.onload = (u) => {
1194
+ var C;
3379
1195
  try {
3380
- const d = JSON.parse((m = c.target) == null ? void 0 : m.result);
3381
- e(d);
1196
+ const c = JSON.parse((C = u.target) == null ? void 0 : C.result);
1197
+ t(c);
3382
1198
  } catch {
3383
- r(new Error("Invalid JSON file"));
1199
+ i(new Error("Invalid JSON file"));
3384
1200
  }
3385
- }, i.onerror = () => r(new Error("Failed to read file")), i.readAsText(o);
3386
- }, t.click();
3387
- }), Ye = (e, r = "schema.json") => {
3388
- const t = JSON.stringify(e, null, 2), a = new Blob([t], { type: "application/json" }), o = URL.createObjectURL(a), i = document.createElement("a");
3389
- i.href = o, i.download = r, document.body.appendChild(i), i.click(), document.body.removeChild(i), URL.revokeObjectURL(o);
1201
+ }, l.onerror = () => i(new Error("Failed to read file")), l.readAsText(n);
1202
+ }, a.click();
1203
+ }), we = (t, i = "schema.json") => {
1204
+ const a = JSON.stringify(t, null, 2), d = new Blob([a], { type: "application/json" }), n = URL.createObjectURL(d), l = document.createElement("a");
1205
+ l.href = n, l.download = i, document.body.appendChild(l), l.click(), document.body.removeChild(l), URL.revokeObjectURL(n);
3390
1206
  };
3391
- function br({ schema: e }) {
3392
- const [r, t] = V(!1), a = JSON.stringify(e, null, 2);
3393
- return /* @__PURE__ */ l("div", { className: "h-full flex flex-col", children: [
3394
- /* @__PURE__ */ l("div", { className: "flex items-center justify-between p-4 border-b", children: [
3395
- /* @__PURE__ */ n("h2", { className: "text-sm font-medium", children: "JSON Schema Output" }),
3396
- /* @__PURE__ */ l("div", { className: "flex gap-2", children: [
3397
- /* @__PURE__ */ n(
3398
- R,
1207
+ function ut({ schema: t }) {
1208
+ const [i, a] = O(!1), d = JSON.stringify(t, null, 2);
1209
+ return /* @__PURE__ */ s("div", { className: "h-full flex flex-col", children: [
1210
+ /* @__PURE__ */ s("div", { className: "flex items-center justify-between p-4 border-b", children: [
1211
+ /* @__PURE__ */ e("h2", { className: "text-sm font-medium", children: "JSON Schema Output" }),
1212
+ /* @__PURE__ */ s("div", { className: "flex gap-2", children: [
1213
+ /* @__PURE__ */ e(
1214
+ T,
3399
1215
  {
3400
1216
  variant: "outline",
3401
1217
  size: "sm",
3402
1218
  onClick: async () => {
3403
- await navigator.clipboard.writeText(a), t(!0), setTimeout(() => t(!1), 2e3);
1219
+ await navigator.clipboard.writeText(d), a(!0), setTimeout(() => a(!1), 2e3);
3404
1220
  },
3405
1221
  "data-testid": "button-copy",
3406
- children: r ? /* @__PURE__ */ n(pt, { className: "w-4 h-4" }) : /* @__PURE__ */ n(ht, { className: "w-4 h-4" })
1222
+ children: i ? /* @__PURE__ */ e(Be, { className: "w-4 h-4" }) : /* @__PURE__ */ e(Ae, { className: "w-4 h-4" })
3407
1223
  }
3408
1224
  ),
3409
- /* @__PURE__ */ n(
3410
- R,
1225
+ /* @__PURE__ */ e(
1226
+ T,
3411
1227
  {
3412
1228
  variant: "outline",
3413
1229
  size: "sm",
3414
1230
  onClick: () => {
3415
- Ye(e, "schema.json");
1231
+ we(t, "schema.json");
3416
1232
  },
3417
1233
  "data-testid": "button-download",
3418
- children: /* @__PURE__ */ n(ft, { className: "w-4 h-4" })
1234
+ children: /* @__PURE__ */ e(Me, { className: "w-4 h-4" })
3419
1235
  }
3420
1236
  )
3421
1237
  ] })
3422
1238
  ] }),
3423
- /* @__PURE__ */ n("div", { className: "flex-1 overflow-auto", children: /* @__PURE__ */ n(Ne, { className: "m-4 bg-muted/30", children: /* @__PURE__ */ n(
1239
+ /* @__PURE__ */ e("div", { className: "flex-1 overflow-auto", children: /* @__PURE__ */ e(ne, { className: "m-4 bg-muted/30", children: /* @__PURE__ */ e(
3424
1240
  "pre",
3425
1241
  {
3426
1242
  className: "p-6 text-xs font-mono overflow-auto",
3427
1243
  "data-testid": "text-json-output",
3428
- children: /* @__PURE__ */ n("code", { children: a })
1244
+ children: /* @__PURE__ */ e("code", { children: d })
3429
1245
  }
3430
1246
  ) }) })
3431
1247
  ] });
3432
1248
  }
3433
- function yr({
3434
- title: e,
3435
- description: r,
3436
- version: t,
3437
- onUpdate: a
1249
+ function ht({
1250
+ title: t,
1251
+ description: i,
1252
+ version: a,
1253
+ onUpdate: d
3438
1254
  }) {
3439
- const [o, i] = V(!1);
3440
- return /* @__PURE__ */ l(Ne, { className: "p-4", children: [
3441
- /* @__PURE__ */ l(
3442
- R,
1255
+ const [n, l] = O(!1);
1256
+ return /* @__PURE__ */ s(ne, { className: "p-4", children: [
1257
+ /* @__PURE__ */ s(
1258
+ T,
3443
1259
  {
3444
1260
  variant: "ghost",
3445
- onClick: () => i(!o),
1261
+ onClick: () => l(!n),
3446
1262
  className: "w-full justify-between px-2 h-auto hover:bg-transparent",
3447
1263
  "data-testid": "button-toggle-metadata",
3448
1264
  children: [
3449
- /* @__PURE__ */ n("h3", { className: "text-sm font-medium", children: "Schema Metadata" }),
3450
- o ? /* @__PURE__ */ n(ye, { className: "w-4 h-4" }) : /* @__PURE__ */ n(gt, { className: "w-4 h-4" })
1265
+ /* @__PURE__ */ e("h3", { className: "text-sm font-medium", children: "Schema Metadata" }),
1266
+ n ? /* @__PURE__ */ e(ee, { className: "w-4 h-4" }) : /* @__PURE__ */ e($e, { className: "w-4 h-4" })
3451
1267
  ]
3452
1268
  }
3453
1269
  ),
3454
- o && /* @__PURE__ */ l("div", { className: "mt-4 space-y-4", children: [
3455
- /* @__PURE__ */ l("div", { className: "space-y-2", children: [
3456
- /* @__PURE__ */ n(
3457
- z,
1270
+ n && /* @__PURE__ */ s("div", { className: "mt-4 space-y-4", children: [
1271
+ /* @__PURE__ */ s("div", { className: "space-y-2", children: [
1272
+ /* @__PURE__ */ e(
1273
+ N,
3458
1274
  {
3459
1275
  htmlFor: "schema-title",
3460
1276
  className: "text-xs text-muted-foreground",
3461
1277
  children: "Title"
3462
1278
  }
3463
1279
  ),
3464
- /* @__PURE__ */ n(
3465
- L,
1280
+ /* @__PURE__ */ e(
1281
+ D,
3466
1282
  {
3467
1283
  id: "schema-title",
3468
1284
  placeholder: "My Schema",
3469
- value: e,
3470
- onChange: (s) => a("title", s.target.value),
1285
+ value: t,
1286
+ onChange: (r) => d("title", r.target.value),
3471
1287
  "data-testid": "input-title"
3472
1288
  }
3473
1289
  )
3474
1290
  ] }),
3475
- /* @__PURE__ */ l("div", { className: "space-y-2", children: [
3476
- /* @__PURE__ */ n(
3477
- z,
1291
+ /* @__PURE__ */ s("div", { className: "space-y-2", children: [
1292
+ /* @__PURE__ */ e(
1293
+ N,
3478
1294
  {
3479
1295
  htmlFor: "schema-description",
3480
1296
  className: "text-xs text-muted-foreground",
3481
1297
  children: "Description"
3482
1298
  }
3483
1299
  ),
3484
- /* @__PURE__ */ n(
3485
- xe,
1300
+ /* @__PURE__ */ e(
1301
+ te,
3486
1302
  {
3487
1303
  id: "schema-description",
3488
1304
  placeholder: "Describe your schema...",
3489
- value: r,
3490
- onChange: (s) => a("description", s.target.value),
1305
+ value: i,
1306
+ onChange: (r) => d("description", r.target.value),
3491
1307
  className: "resize-none",
3492
1308
  rows: 3,
3493
1309
  "data-testid": "input-schema-description"
3494
1310
  }
3495
1311
  )
3496
1312
  ] }),
3497
- /* @__PURE__ */ l("div", { className: "space-y-2", children: [
3498
- /* @__PURE__ */ n(
3499
- z,
1313
+ /* @__PURE__ */ s("div", { className: "space-y-2", children: [
1314
+ /* @__PURE__ */ e(
1315
+ N,
3500
1316
  {
3501
1317
  htmlFor: "schema-version",
3502
1318
  className: "text-xs text-muted-foreground",
3503
1319
  children: "Version"
3504
1320
  }
3505
1321
  ),
3506
- /* @__PURE__ */ n(
3507
- L,
1322
+ /* @__PURE__ */ e(
1323
+ D,
3508
1324
  {
3509
1325
  id: "schema-version",
3510
1326
  placeholder: "1.0.0",
3511
- value: t,
3512
- onChange: (s) => a("version", s.target.value),
1327
+ value: a,
1328
+ onChange: (r) => d("version", r.target.value),
3513
1329
  "data-testid": "input-version"
3514
1330
  }
3515
1331
  )
@@ -3517,279 +1333,308 @@ function yr({
3517
1333
  ] })
3518
1334
  ] });
3519
1335
  }
3520
- const oe = (e, r, t = !0) => {
3521
- const a = {
1336
+ const M = (t, i, a = !0) => {
1337
+ const d = {
3522
1338
  type: "object"
3523
1339
  };
3524
- t && r && (r.title && (a.title = r.title), r.description && (a.description = r.description));
3525
- const o = fe(e);
3526
- Object.keys(o).length > 0 && (a.properties = o);
3527
- const i = e.filter((s) => s.required && s.key).map((s) => s.key);
3528
- return i.length > 0 && (a.required = i), a;
3529
- }, fe = (e) => {
3530
- const r = {};
3531
- return e.forEach((t) => {
3532
- if (!t.key) return;
3533
- const o = { type: t.type === "file" ? "string" : t.type };
3534
- if (t.title && (o.title = t.title), t.description && (o.description = t.description), t.type === "file" && (o.format = "filename"), t.type === "string" && (t.minLength !== void 0 && (o.minLength = t.minLength), t.maxLength !== void 0 && (o.maxLength = t.maxLength), t.pattern && (o.pattern = t.pattern), t.enum && t.enum.length > 0 && (o.enum = t.enum)), (t.type === "number" || t.type === "integer") && (t.minimum !== void 0 && (o.minimum = t.minimum), t.maximum !== void 0 && (o.maximum = t.maximum)), t.type === "array" && (t.minItems !== void 0 && (o.minItems = t.minItems), t.maxItems !== void 0 && (o.maxItems = t.maxItems), t.uniqueItems && (o.uniqueItems = t.uniqueItems), t.items && (o.items = fe([t.items])[t.items.key] || {
3535
- type: t.items.type
3536
- })), t.type === "object" && t.children && t.children.length > 0) {
3537
- o.properties = fe(t.children);
3538
- const i = t.children.filter((s) => s.required && s.key).map((s) => s.key);
3539
- i.length > 0 && (o.required = i);
1340
+ a && i && (i.title && (d.title = i.title), i.description && (d.description = i.description));
1341
+ const n = W(t);
1342
+ Object.keys(n).length > 0 && (d.properties = n);
1343
+ const l = t.filter((r) => r.required && r.key).map((r) => r.key);
1344
+ return l.length > 0 && (d.required = l), d;
1345
+ }, W = (t) => {
1346
+ const i = {};
1347
+ return t.forEach((a) => {
1348
+ if (!a.key) return;
1349
+ const n = { type: a.type === "file" ? "string" : a.type };
1350
+ if (a.title && (n.title = a.title), a.description && (n.description = a.description), a.type === "file" && (n.format = "filename"), a.type === "string" && (a.minLength !== void 0 && (n.minLength = a.minLength), a.maxLength !== void 0 && (n.maxLength = a.maxLength), a.pattern && (n.pattern = a.pattern), a.enum && a.enum.length > 0 && (n.enum = a.enum)), (a.type === "number" || a.type === "integer") && (a.minimum !== void 0 && (n.minimum = a.minimum), a.maximum !== void 0 && (n.maximum = a.maximum)), a.type === "array" && (a.minItems !== void 0 && (n.minItems = a.minItems), a.maxItems !== void 0 && (n.maxItems = a.maxItems), a.uniqueItems && (n.uniqueItems = a.uniqueItems), a.items && (n.items = W([a.items])[a.items.key] || {
1351
+ type: a.items.type
1352
+ })), a.type === "object" && a.children && a.children.length > 0) {
1353
+ n.properties = W(a.children);
1354
+ const l = a.children.filter((r) => r.required && r.key).map((r) => r.key);
1355
+ l.length > 0 && (n.required = l);
3540
1356
  }
3541
- r[t.key] = o;
3542
- }), r;
3543
- }, vr = (e) => {
3544
- const r = {
1357
+ i[a.key] = n;
1358
+ }), i;
1359
+ }, ft = (t) => {
1360
+ const i = {
3545
1361
  properties: []
3546
1362
  };
3547
- return (e.title || e.description) && (r.metadata = {
3548
- title: typeof e.title == "string" ? e.title : "",
3549
- description: typeof e.description == "string" ? e.description : "",
1363
+ return (t.title || t.description) && (i.metadata = {
1364
+ title: typeof t.title == "string" ? t.title : "",
1365
+ description: typeof t.description == "string" ? t.description : "",
3550
1366
  version: "1.0.0"
3551
1367
  // Default version
3552
- }), e.properties && typeof e.properties == "object" && (r.properties = ge(
3553
- e.properties,
3554
- Array.isArray(e.required) ? e.required : []
3555
- )), r;
3556
- }, ge = (e, r = []) => e ? Object.entries(e).filter(([, t]) => typeof t == "object").map(([t, a]) => {
3557
- const o = a;
3558
- let i = typeof o.type == "string" ? o.type : "string";
3559
- i === "string" && o.format === "filename" && (i = "file");
3560
- const s = {
3561
- id: we(),
3562
- key: t,
3563
- title: typeof o.title == "string" ? o.title : void 0,
3564
- type: i,
3565
- description: typeof o.description == "string" ? o.description : void 0,
3566
- required: r.includes(t)
1368
+ }), t.properties && typeof t.properties == "object" && (i.properties = Y(
1369
+ t.properties,
1370
+ Array.isArray(t.required) ? t.required : []
1371
+ )), i;
1372
+ }, Y = (t, i = []) => t ? Object.entries(t).filter(([, a]) => typeof a == "object").map(([a, d]) => {
1373
+ const n = d;
1374
+ let l = typeof n.type == "string" ? n.type : "string";
1375
+ l === "string" && n.format === "filename" && (l = "file");
1376
+ const r = {
1377
+ id: ae(),
1378
+ key: a,
1379
+ title: typeof n.title == "string" ? n.title : void 0,
1380
+ type: l,
1381
+ description: typeof n.description == "string" ? n.description : void 0,
1382
+ required: i.includes(a)
3567
1383
  };
3568
- return o.minLength !== void 0 && (s.minLength = o.minLength), o.maxLength !== void 0 && (s.maxLength = o.maxLength), o.pattern && (s.pattern = o.pattern), o.enum && Array.isArray(o.enum) && (s.enum = o.enum), o.minimum !== void 0 && (s.minimum = o.minimum), o.maximum !== void 0 && (s.maximum = o.maximum), o.minItems !== void 0 && (s.minItems = o.minItems), o.maxItems !== void 0 && (s.maxItems = o.maxItems), o.uniqueItems && (s.uniqueItems = o.uniqueItems), s.type === "array" && o.items && typeof o.items == "object" && !Array.isArray(o.items) && (s.items = ge(
3569
- { item: o.items },
1384
+ return n.minLength !== void 0 && (r.minLength = n.minLength), n.maxLength !== void 0 && (r.maxLength = n.maxLength), n.pattern && (r.pattern = n.pattern), n.enum && Array.isArray(n.enum) && (r.enum = n.enum), n.minimum !== void 0 && (r.minimum = n.minimum), n.maximum !== void 0 && (r.maximum = n.maximum), n.minItems !== void 0 && (r.minItems = n.minItems), n.maxItems !== void 0 && (r.maxItems = n.maxItems), n.uniqueItems && (r.uniqueItems = n.uniqueItems), r.type === "array" && n.items && typeof n.items == "object" && !Array.isArray(n.items) && (r.items = Y(
1385
+ { item: n.items },
3570
1386
  []
3571
- ).find((c) => c.key === "item")), o.properties && typeof o.properties == "object" && (s.children = ge(
3572
- o.properties,
3573
- Array.isArray(o.required) ? o.required : []
3574
- )), s;
3575
- }) : [], xr = ({
3576
- schema: e,
3577
- onChange: r,
3578
- includeMetadata: t = !0
1387
+ ).find((u) => u.key === "item")), n.properties && typeof n.properties == "object" && (r.children = Y(
1388
+ n.properties,
1389
+ Array.isArray(n.required) ? n.required : []
1390
+ )), r;
1391
+ }) : [], pt = ({
1392
+ schema: t,
1393
+ onChange: i,
1394
+ includeMetadata: a = !0
3579
1395
  }) => {
3580
- const { properties: a, metadata: o } = nt(
3581
- () => vr(e),
3582
- [e]
3583
- ), i = a, s = o || {
1396
+ const { properties: d, metadata: n } = Te(
1397
+ () => ft(t),
1398
+ [t]
1399
+ ), l = d, r = n || {
3584
1400
  title: "",
3585
1401
  description: "",
3586
1402
  version: ""
3587
- }, c = H(() => ({
3588
- id: we(),
1403
+ }, u = E(() => ({
1404
+ id: ae(),
3589
1405
  key: "",
3590
1406
  type: "string",
3591
1407
  required: !1
3592
- }), []), m = H((y, p) => {
3593
- const h = i.some((u) => u.id === y);
3594
- let v;
3595
- h ? v = i.map((u) => u.id === y ? p : u) : v = [...i, p];
3596
- const T = oe(v, s, t);
3597
- r(T);
3598
- }, [i, s, t, r]), d = H((y) => {
3599
- const p = i.filter((v) => v.id !== y), h = oe(p, s, t);
3600
- r(h);
3601
- }, [i, s, t, r]), g = H(() => {
3602
- const p = oe([], { title: "", description: "" }, t);
3603
- r(p);
3604
- }, [t, r]), N = H((y, p) => {
3605
- const h = { ...s, [y]: p }, v = oe(i, h, t);
3606
- r(v);
3607
- }, [i, s, t, r]), x = H(async () => {
3608
- const y = await gr();
3609
- r(y);
3610
- }, [r]), S = H(() => {
3611
- Ye(e, "schema.json");
3612
- }, [e]);
1408
+ }), []), C = E(
1409
+ (f, I) => {
1410
+ const b = l.some((L) => L.id === f);
1411
+ let q;
1412
+ b ? q = l.map((L) => L.id === f ? I : L) : q = [...l, I];
1413
+ const h = M(
1414
+ q,
1415
+ r,
1416
+ a
1417
+ );
1418
+ i(h);
1419
+ },
1420
+ [l, r, a, i]
1421
+ ), c = E(
1422
+ (f) => {
1423
+ const I = l.filter((q) => q.id !== f), b = M(
1424
+ I,
1425
+ r,
1426
+ a
1427
+ );
1428
+ i(b);
1429
+ },
1430
+ [l, r, a, i]
1431
+ ), o = E(() => {
1432
+ const I = M([], { title: "", description: "" }, a);
1433
+ i(I);
1434
+ }, [a, i]), v = E(
1435
+ (f, I) => {
1436
+ const b = { ...r, [f]: I }, q = M(
1437
+ l,
1438
+ b,
1439
+ a
1440
+ );
1441
+ i(q);
1442
+ },
1443
+ [l, r, a, i]
1444
+ ), x = E(async () => {
1445
+ const f = await mt();
1446
+ i(f);
1447
+ }, [i]), g = E(() => {
1448
+ we(t, "schema.json");
1449
+ }, [t]);
3613
1450
  return {
3614
- properties: i,
3615
- metadata: s,
3616
- addProperty: c,
3617
- updateProperty: m,
3618
- deleteProperty: d,
3619
- clearAll: g,
3620
- updateMetadata: N,
1451
+ properties: l,
1452
+ metadata: r,
1453
+ addProperty: u,
1454
+ updateProperty: C,
1455
+ deleteProperty: c,
1456
+ clearAll: o,
1457
+ updateMetadata: v,
3621
1458
  importSchema: x,
3622
- downloadSchema: S
1459
+ downloadSchema: g
3623
1460
  };
3624
1461
  };
3625
- function wr() {
3626
- const [e, r] = V("light");
3627
- return be(() => {
3628
- const o = localStorage.getItem("theme") || (window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light");
3629
- r(o), document.documentElement.classList.toggle("dark", o === "dark");
3630
- }, []), /* @__PURE__ */ n(
3631
- R,
1462
+ function gt() {
1463
+ const [t, i] = O("light");
1464
+ return Z(() => {
1465
+ const n = localStorage.getItem("theme") || (window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light");
1466
+ i(n), document.documentElement.classList.toggle("dark", n === "dark");
1467
+ }, []), /* @__PURE__ */ e(
1468
+ T,
3632
1469
  {
3633
1470
  variant: "ghost",
3634
1471
  size: "icon",
3635
1472
  onClick: () => {
3636
- const a = e === "light" ? "dark" : "light";
3637
- r(a), localStorage.setItem("theme", a), document.documentElement.classList.toggle("dark", a === "dark");
1473
+ const d = t === "light" ? "dark" : "light";
1474
+ i(d), localStorage.setItem("theme", d), document.documentElement.classList.toggle("dark", d === "dark");
3638
1475
  },
3639
1476
  "data-testid": "button-theme-toggle",
3640
- children: e === "light" ? /* @__PURE__ */ n(bt, { className: "w-4 h-4" }) : /* @__PURE__ */ n(yt, { className: "w-4 h-4" })
1477
+ children: t === "light" ? /* @__PURE__ */ e(Ke, { className: "w-4 h-4" }) : /* @__PURE__ */ e(Je, { className: "w-4 h-4" })
3641
1478
  }
3642
1479
  );
3643
1480
  }
3644
- function Ir({
3645
- schema: e,
3646
- onChange: r,
3647
- showMetadata: t = !1,
3648
- showImport: a = !0,
3649
- showClear: o = !0,
3650
- showOutput: i = !0,
3651
- showHeader: s = !0,
3652
- className: c = "",
3653
- showSummary: m = !1,
3654
- typeLabels: d,
3655
- propertyLabel: g = { singular: "property", plural: "properties" },
3656
- showRegex: N = !1
1481
+ function It({
1482
+ schema: t,
1483
+ onChange: i,
1484
+ showMetadata: a = !1,
1485
+ showImport: d = !0,
1486
+ showClear: n = !0,
1487
+ showOutput: l = !0,
1488
+ showHeader: r = !0,
1489
+ className: u = "",
1490
+ showSummary: C = !1,
1491
+ typeLabels: c,
1492
+ propertyLabel: o = { singular: "property", plural: "properties" },
1493
+ showRegex: v = !1,
1494
+ keyEditable: x = !1
3657
1495
  }) {
3658
- const [x, S] = V(null), [y, p] = V(!1), {
3659
- properties: h,
3660
- metadata: v,
3661
- addProperty: T,
3662
- updateProperty: u,
3663
- deleteProperty: A,
3664
- clearAll: O,
3665
- updateMetadata: _,
3666
- importSchema: M
3667
- } = xr({
3668
- schema: e,
3669
- onChange: r,
3670
- includeMetadata: t
3671
- }), F = () => {
3672
- const f = T();
3673
- S(f), p(!0);
3674
- }, E = (f) => {
3675
- u(f.id, f), p(!1), S(null);
3676
- }, J = () => {
3677
- p(!1), S(null);
3678
- }, G = () => {
3679
- O();
3680
- }, w = async () => {
3681
- await M();
1496
+ const {
1497
+ properties: g,
1498
+ metadata: f,
1499
+ addProperty: I,
1500
+ updateProperty: b,
1501
+ deleteProperty: q,
1502
+ clearAll: h,
1503
+ updateMetadata: L,
1504
+ importSchema: m
1505
+ } = pt({
1506
+ schema: t,
1507
+ onChange: i,
1508
+ includeMetadata: a
1509
+ }), j = ie({
1510
+ createInitialData: () => I(),
1511
+ onConfirm: (S) => {
1512
+ b(S.id, S);
1513
+ }
1514
+ }), A = () => {
1515
+ h();
1516
+ }, J = async () => {
1517
+ await m();
3682
1518
  };
3683
- return /* @__PURE__ */ n(cr, { customLabels: d, children: /* @__PURE__ */ l("div", { className: `${c} flex flex-col json-schema-builder-react`, children: [
3684
- s && /* @__PURE__ */ n("header", { className: "h-16 border-b flex items-center justify-between px-6", children: /* @__PURE__ */ l("div", { className: "flex items-center gap-3", children: [
3685
- a && /* @__PURE__ */ n(
3686
- R,
1519
+ return /* @__PURE__ */ e(it, { customLabels: c, children: /* @__PURE__ */ s("div", { className: `${u} flex flex-col json-schema-builder-react`, children: [
1520
+ r && /* @__PURE__ */ e("header", { className: "h-16 border-b flex items-center justify-between px-6", children: /* @__PURE__ */ s("div", { className: "flex items-center gap-3", children: [
1521
+ d && /* @__PURE__ */ e(
1522
+ T,
3687
1523
  {
3688
1524
  variant: "outline",
3689
1525
  size: "sm",
3690
- onClick: w,
1526
+ onClick: J,
3691
1527
  "data-testid": "button-import",
3692
- children: /* @__PURE__ */ n(vt, { className: "w-4 h-4" })
1528
+ children: /* @__PURE__ */ e(Ve, { className: "w-4 h-4" })
3693
1529
  }
3694
1530
  ),
3695
- o && /* @__PURE__ */ n(
3696
- R,
1531
+ n && /* @__PURE__ */ e(
1532
+ T,
3697
1533
  {
3698
1534
  variant: "outline",
3699
1535
  size: "sm",
3700
- onClick: G,
3701
- disabled: h.length === 0,
1536
+ onClick: A,
1537
+ disabled: g.length === 0,
3702
1538
  "data-testid": "button-clear",
3703
- children: /* @__PURE__ */ n(Le, { className: "w-4 h-4" })
1539
+ children: /* @__PURE__ */ e(ce, { className: "w-4 h-4" })
3704
1540
  }
3705
1541
  ),
3706
- /* @__PURE__ */ n(wr, {})
1542
+ /* @__PURE__ */ e(gt, {})
3707
1543
  ] }) }),
3708
- /* @__PURE__ */ l("div", { className: "flex-1 flex overflow-hidden", children: [
3709
- /* @__PURE__ */ n("div", { className: i ? "w-3/5 border-r" : "w-full", children: /* @__PURE__ */ l("div", { className: "h-full overflow-auto p-2 space-y-4", children: [
3710
- t && /* @__PURE__ */ n(
3711
- yr,
3712
- {
3713
- title: v.title,
3714
- description: v.description,
3715
- version: v.version,
3716
- onUpdate: (f, q) => _(f, q)
3717
- }
3718
- ),
3719
- h.length === 0 ? /* @__PURE__ */ l("div", { className: "flex flex-col items-center justify-center py-16 text-center", children: [
3720
- /* @__PURE__ */ n("div", { className: "w-16 h-16 rounded-full bg-muted flex items-center justify-center mb-4", children: /* @__PURE__ */ n(re, { className: "w-8 h-8 text-muted-foreground" }) }),
3721
- /* @__PURE__ */ l("h2", { className: "text-lg font-medium mb-2", children: [
3722
- "No ",
3723
- g.plural,
3724
- " yet"
3725
- ] }),
3726
- /* @__PURE__ */ l("p", { className: "text-sm text-muted-foreground mb-6 max-w-sm", children: [
3727
- "Start building your JSON schema by adding your first",
3728
- " ",
3729
- g.singular
3730
- ] }),
3731
- /* @__PURE__ */ l(R, { onClick: F, "data-testid": "button-add-first", children: [
3732
- /* @__PURE__ */ n(re, { className: "w-4 h-4 mr-2" }),
3733
- "Add ",
3734
- g.singular
3735
- ] })
3736
- ] }) : /* @__PURE__ */ l(et, { children: [
3737
- /* @__PURE__ */ n("div", { className: "space-y-1", children: h.map((f) => /* @__PURE__ */ n(
3738
- he,
3739
- {
3740
- property: f,
3741
- onUpdate: (q) => u(f.id, q),
3742
- onDelete: () => A(f.id),
3743
- showRegex: N
3744
- },
3745
- f.id
3746
- )) }),
3747
- /* @__PURE__ */ n("div", { className: "pt-6", children: /* @__PURE__ */ l(
3748
- R,
1544
+ /* @__PURE__ */ s("div", { className: "flex-1 flex overflow-hidden", children: [
1545
+ /* @__PURE__ */ e("div", { className: l ? "w-3/5 border-r" : "w-full", children: /* @__PURE__ */ s("div", { className: "h-full flex flex-col", children: [
1546
+ /* @__PURE__ */ s("div", { className: "flex-1 overflow-auto p-2 space-y-4", children: [
1547
+ a && /* @__PURE__ */ e(
1548
+ ht,
3749
1549
  {
3750
- onClick: F,
3751
- className: "w-full",
3752
- variant: "outline",
3753
- "data-testid": "button-add-property",
3754
- children: [
3755
- /* @__PURE__ */ n(re, { className: "w-4 h-4 mr-2" }),
3756
- "Add ",
3757
- g.singular
3758
- ]
1550
+ title: f.title,
1551
+ description: f.description,
1552
+ version: f.version,
1553
+ onUpdate: (S, R) => L(S, R)
3759
1554
  }
3760
- ) }),
3761
- m && /* @__PURE__ */ l("div", { className: "pt-4 border-t flex items-center justify-between text-sm text-muted-foreground", children: [
3762
- /* @__PURE__ */ l("span", { children: [
3763
- h.length,
1555
+ ),
1556
+ g.length === 0 ? /* @__PURE__ */ s("div", { className: "flex flex-col items-center justify-center py-16 text-center", children: [
1557
+ /* @__PURE__ */ e("div", { className: "w-16 h-16 rounded-full bg-muted flex items-center justify-center mb-4", children: /* @__PURE__ */ e(B, { className: "w-8 h-8 text-muted-foreground" }) }),
1558
+ /* @__PURE__ */ s("h2", { className: "text-lg font-medium mb-2", children: [
1559
+ "No ",
1560
+ o.plural,
1561
+ " yet"
1562
+ ] }),
1563
+ /* @__PURE__ */ s("p", { className: "text-sm text-muted-foreground mb-6 max-w-sm", children: [
1564
+ "Start building your JSON schema by adding your first",
3764
1565
  " ",
3765
- h.length === 1 ? g.singular : g.plural
1566
+ o.singular
3766
1567
  ] }),
3767
- /* @__PURE__ */ l("span", { children: [
3768
- h.filter((f) => f.required).length,
3769
- " required"
1568
+ /* @__PURE__ */ s(
1569
+ T,
1570
+ {
1571
+ onClick: () => j.open(),
1572
+ "data-testid": "button-add-first",
1573
+ children: [
1574
+ /* @__PURE__ */ e(B, { className: "w-4 h-4 mr-2" }),
1575
+ "Add ",
1576
+ o.singular
1577
+ ]
1578
+ }
1579
+ )
1580
+ ] }) : /* @__PURE__ */ s(le, { children: [
1581
+ /* @__PURE__ */ e("div", { className: "space-y-1", children: g.map((S) => /* @__PURE__ */ e(
1582
+ Q,
1583
+ {
1584
+ property: S,
1585
+ onUpdate: (R) => b(S.id, R),
1586
+ onDelete: () => q(S.id),
1587
+ showRegex: v,
1588
+ keyEditable: x
1589
+ },
1590
+ S.id
1591
+ )) }),
1592
+ C && /* @__PURE__ */ s("div", { className: "pt-4 border-t flex items-center justify-between text-sm text-muted-foreground", children: [
1593
+ /* @__PURE__ */ s("span", { children: [
1594
+ g.length,
1595
+ " ",
1596
+ g.length === 1 ? o.singular : o.plural
1597
+ ] }),
1598
+ /* @__PURE__ */ s("span", { children: [
1599
+ g.filter((S) => S.required).length,
1600
+ " required"
1601
+ ] })
3770
1602
  ] })
3771
1603
  ] })
3772
- ] })
1604
+ ] }),
1605
+ g.length > 0 && /* @__PURE__ */ e("div", { className: "border-t p-2 pt-4 bg-background", children: /* @__PURE__ */ s(
1606
+ T,
1607
+ {
1608
+ onClick: () => j.open(),
1609
+ className: "w-full",
1610
+ variant: "outline",
1611
+ "data-testid": "button-add-property",
1612
+ children: [
1613
+ /* @__PURE__ */ e(B, { className: "w-4 h-4" }),
1614
+ "Add ",
1615
+ o.singular
1616
+ ]
1617
+ }
1618
+ ) })
3773
1619
  ] }) }),
3774
- i && /* @__PURE__ */ n("div", { className: "w-2/5", children: /* @__PURE__ */ n(br, { schema: e }) })
1620
+ l && /* @__PURE__ */ e("div", { className: "w-2/5", children: /* @__PURE__ */ e(ut, { schema: t }) })
3775
1621
  ] }),
3776
- y && x && /* @__PURE__ */ n(
3777
- pe,
1622
+ j.isOpen && j.data && /* @__PURE__ */ e(
1623
+ G,
3778
1624
  {
3779
- property: x,
3780
- open: y,
1625
+ property: j.data,
1626
+ open: j.isOpen,
3781
1627
  isNewProperty: !0,
3782
- onOpenChange: (f) => {
3783
- f || J();
3784
- },
3785
- propertyLabel: g,
3786
- onUpdate: E,
3787
- showRegex: N
1628
+ onOpenChange: j.setIsOpen,
1629
+ propertyLabel: o,
1630
+ onUpdate: j.confirm,
1631
+ showRegex: v,
1632
+ keyEditable: x
3788
1633
  }
3789
1634
  )
3790
1635
  ] }) });
3791
1636
  }
3792
1637
  export {
3793
- Ir as JsonSchemaBuilder
1638
+ It as JsonSchemaBuilder
3794
1639
  };
3795
1640
  //# sourceMappingURL=index.js.map