scrubbed-tailwind-components-v2 2.4.2 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1107 @@
1
+ import { useSlots as W, provide as P, createElementBlock as s, openBlock as a, normalizeClass as f, createElementVNode as i, createBlock as x, resolveDynamicComponent as $, cloneVNode as A, unref as c, renderSlot as l, inject as y, withCtx as V, ref as _, createVNode as j, Fragment as S, createCommentVNode as T, Teleport as K, normalizeStyle as U, watch as Z, resolveComponent as J, mergeProps as k, useModel as B, withDirectives as I, withModifiers as O, vModelCheckbox as Y, computed as L, vModelText as E, mergeModels as N, onMounted as X, renderList as R, createTextVNode as q, toDisplayString as D, vModelRadio as Q, vModelSelect as ee, defineAsyncComponent as C } from "vue";
2
+ import { RouterLink as z, useRoute as H } from "vue-router";
3
+ const re = {
4
+ __name: "Alert",
5
+ props: {
6
+ variant: {
7
+ type: String,
8
+ default: "info",
9
+ validator: (e) => ["info", "success", "warning", "destructive"].includes(e)
10
+ }
11
+ },
12
+ setup(e) {
13
+ const r = W(), t = e, n = {
14
+ info: {
15
+ root: "bg-brand-primary-100 border-brand-primary-300 text-brand-primary-900 ",
16
+ icon: "bg-brand-primary-300 text-brand-primary-700"
17
+ },
18
+ success: {
19
+ root: "bg-success-100 border-success-300 text-success-800",
20
+ icon: "bg-success-300 text-green-700"
21
+ },
22
+ warning: {
23
+ root: "bg-warning-100 border-warning-300 text-warning-800",
24
+ icon: "bg-warning-400 text-yellow-700"
25
+ },
26
+ destructive: {
27
+ root: "bg-danger-100 border-danger-300 text-danger-700",
28
+ icon: "bg-danger-300 text-red-700"
29
+ }
30
+ }, o = {
31
+ info: {
32
+ icon: "stroke-brand-primary-900"
33
+ },
34
+ success: {
35
+ icon: "stroke-success-800"
36
+ },
37
+ warning: {
38
+ icon: "stroke-warning-800"
39
+ },
40
+ destructive: {
41
+ icon: "stroke-danger-700"
42
+ }
43
+ };
44
+ return P("ALERT", { VARIANT_MAP: n }), (d, u) => {
45
+ var m, p, b, g, v, M;
46
+ return a(), s("div", {
47
+ class: f(["flex w-full gap-4 rounded-2xl border p-4", n[t.variant].root])
48
+ }, [
49
+ i("div", {
50
+ class: f(["grid size-10 place-items-center rounded-full", n[t.variant].icon])
51
+ }, [
52
+ (a(), x($(A((p = (m = c(r)).default) == null ? void 0 : p.call(m)[0])), {
53
+ class: f(["size-4", o[t.variant].icon])
54
+ }, null, 8, ["class"]))
55
+ ], 2),
56
+ i("div", null, [
57
+ (a(), x($(A((g = (b = c(r)).default) == null ? void 0 : g.call(b)[1])))),
58
+ (a(), x($(A((M = (v = c(r)).default) == null ? void 0 : M.call(v)[2]))))
59
+ ])
60
+ ], 2);
61
+ };
62
+ }
63
+ }, h = (e, r) => {
64
+ const t = e.__vccOpts || e;
65
+ for (const [n, o] of r)
66
+ t[n] = o;
67
+ return t;
68
+ }, te = {}, oe = { class: "text-sm text-neutral-600" };
69
+ function ne(e, r) {
70
+ return a(), s("span", oe, [
71
+ l(e.$slots, "default")
72
+ ]);
73
+ }
74
+ const ae = /* @__PURE__ */ h(te, [["render", ne]]), se = {}, le = { class: "font-medium" };
75
+ function ie(e, r) {
76
+ return a(), s("p", le, [
77
+ l(e.$slots, "default")
78
+ ]);
79
+ }
80
+ const de = /* @__PURE__ */ h(se, [["render", ie]]), ce = { class: "flex w-full items-center justify-between" }, ue = { class: "flex items-center gap-2" }, ge = { class: "lg:w-60" }, pe = { class: "hidden xl:block" }, me = { class: "flex items-center gap-10" }, be = { class: "hidden gap-6 sm:flex" }, it = {
81
+ __name: "AppHeader",
82
+ setup(e) {
83
+ const r = y("APP_DATA"), { isSidebarToggled: t, toggleSidebar: n } = r;
84
+ return (o, d) => (a(), s("header", {
85
+ class: f(["fixed top-0 flex h-16 w-dvw items-center justify-center bg-white px-3 backdrop-blur sm:px-6", { "rounded-t-2xl": c(t) }])
86
+ }, [
87
+ i("nav", ce, [
88
+ i("div", ue, [
89
+ i("button", {
90
+ onClick: d[0] || (d[0] = (u) => c(n)()),
91
+ class: "block cursor-pointer rounded-full p-2 hover:bg-neutral-100 lg:hidden"
92
+ }, d[1] || (d[1] = [
93
+ i("svg", {
94
+ xmlns: "http://www.w3.org/2000/svg",
95
+ width: "24",
96
+ height: "24",
97
+ viewBox: "0 0 24 24",
98
+ fill: "none",
99
+ stroke: "currentColor",
100
+ "stroke-width": "2",
101
+ "stroke-linecap": "round",
102
+ "stroke-linejoin": "round",
103
+ class: "lucide lucide-menu-icon lucide-menu size-5 stroke-neutral-600"
104
+ }, [
105
+ i("path", { d: "M4 12h16" }),
106
+ i("path", { d: "M4 18h16" }),
107
+ i("path", { d: "M4 6h16" })
108
+ ], -1)
109
+ ])),
110
+ i("div", ge, [
111
+ l(o.$slots, "header-img")
112
+ ]),
113
+ i("div", pe, [
114
+ l(o.$slots, "header-banner")
115
+ ])
116
+ ]),
117
+ i("div", me, [
118
+ i("ul", be, [
119
+ l(o.$slots, "header-links")
120
+ ]),
121
+ l(o.$slots, "header-actions")
122
+ ])
123
+ ])
124
+ ], 2));
125
+ }
126
+ }, fe = ["href"], he = {
127
+ __name: "AppHeaderLink",
128
+ props: {
129
+ to: { type: String, required: !0 }
130
+ },
131
+ setup(e) {
132
+ const r = e;
133
+ return (t, n) => (a(), s("li", null, [
134
+ r.to.startsWith("/") ? (a(), x(c(z), {
135
+ key: 0,
136
+ class: "hover:text-primary-950 [&.router-link-active]:text-primary-950 text-xs uppercase text-neutral-600 hover:transition-all [&.router-link-active]:font-semibold",
137
+ to: r.to
138
+ }, {
139
+ default: V(() => [
140
+ l(t.$slots, "default")
141
+ ]),
142
+ _: 3
143
+ }, 8, ["to"])) : (a(), s("a", {
144
+ key: 1,
145
+ class: "hover:text-primary-950 text-xs uppercase text-neutral-600 hover:transition-all",
146
+ href: r.to
147
+ }, [
148
+ l(t.$slots, "default")
149
+ ], 8, fe))
150
+ ]));
151
+ }
152
+ }, ve = { class: "relative" }, xe = { class: "flex" }, _e = {
153
+ __name: "AppLayout",
154
+ setup(e) {
155
+ const r = _(!1);
156
+ function t() {
157
+ window.innerWidth <= 1024 ? (r.value = !r.value, n()) : r.value && (r.value = !1, n());
158
+ }
159
+ function n() {
160
+ const o = document.querySelector("body");
161
+ o.classList.contains("bg-black") ? o.classList.remove("bg-black") : o.classList.add("bg-black");
162
+ }
163
+ return P("APP_DATA", { isSidebarToggled: r, toggleSidebar: t }), (o, d) => {
164
+ var u, m, p, b, g, v;
165
+ return a(), s("div", {
166
+ class: f(["bg-white transition-all duration-500 ease-[cubic-bezier(.32,.72,0,1)]", {
167
+ "origin-[center_top] translate-y-4 scale-93": r.value
168
+ }])
169
+ }, [
170
+ i("div", ve, [
171
+ (a(), x($(A((m = (u = o.$slots).default) == null ? void 0 : m.call(u)[0])))),
172
+ i("div", xe, [
173
+ (a(), x($(A((b = (p = o.$slots).default) == null ? void 0 : b.call(p)[1])))),
174
+ (a(), x($(A((v = (g = o.$slots).default) == null ? void 0 : v.call(g)[2]))))
175
+ ])
176
+ ])
177
+ ], 2);
178
+ };
179
+ }
180
+ }, ye = {
181
+ __name: "AppMain",
182
+ setup(e) {
183
+ const r = y("APP_DATA"), { isSidebarToggled: t } = r;
184
+ return (n, o) => (a(), s("main", {
185
+ class: f([
186
+ "bg-background-main fixed z-[-1] h-svh w-full overflow-auto px-6 pt-24 pb-9 sm:top-16 sm:pt-9 md:h-[calc(100dvh-4rem)] lg:ms-64 lg:w-[calc(100dvw-256px)]",
187
+ c(t) ? "overflow-hidden rounded-t-xl sm:rounded-none" : "sm:rounded-tl-2xl"
188
+ ])
189
+ }, [
190
+ l(n.$slots, "default")
191
+ ], 2));
192
+ }
193
+ }, ke = {}, Ce = { class: "flex w-full overflow-x-auto border-b-[1px] border-neutral-200 [&::-webkit-scrollbar]:hidden" };
194
+ function we(e, r) {
195
+ return a(), s("div", Ce, [
196
+ l(e.$slots, "default")
197
+ ]);
198
+ }
199
+ const $e = /* @__PURE__ */ h(ke, [["render", we]]), Ae = { class: "shrink-0" }, Se = {
200
+ __name: "AppNavTab",
201
+ props: {
202
+ to: { type: String, required: !0 }
203
+ },
204
+ setup(e) {
205
+ const r = e;
206
+ return _(null), (t, n) => (a(), s("div", Ae, [
207
+ j(c(z), {
208
+ class: "[&.router-link-exact-active]:text-primary-950 [&.router-link-exact-active]:border-brand-primary-700 hover:text-brand-primary-700 group relative flex h-12 shrink-0 items-center justify-between gap-2 border-b-2 border-transparent px-3 text-sm text-neutral-600 transition-all [&.router-link-exact-active]:font-medium",
209
+ to: r.to
210
+ }, {
211
+ default: V(() => [
212
+ l(t.$slots, "default"),
213
+ n[0] || (n[0] = i("div", { class: "bg-primary-100 absolute inset-x-0 z-[-1] h-8 w-full rounded-lg opacity-0 transition-all contain-strict group-hover:transform-none group-hover:opacity-100 group-hover:[transform-origin:50%_50%_0px]" }, null, -1))
214
+ ]),
215
+ _: 3,
216
+ __: [0]
217
+ }, 8, ["to"])
218
+ ]));
219
+ }
220
+ }, Te = { class: "sidebar-wrapper fixed top-0 left-0 hidden max-h-[calc(100vh-64px)] w-64 overflow-y-auto bg-white sm:top-16 lg:block" }, Be = {
221
+ key: 0,
222
+ class: "sticky top-0 z-50 bg-white"
223
+ }, Ie = {
224
+ key: 1,
225
+ class: "sticky bottom-0 z-50 bg-white"
226
+ }, Re = {
227
+ __name: "AppSidebar",
228
+ setup(e) {
229
+ const r = y("APP_DATA"), { isSidebarToggled: t, toggleSidebar: n } = r;
230
+ return W(), (o, d) => (a(), s(S, null, [
231
+ i("aside", Te, [
232
+ o.$slots.header ? (a(), s("div", Be, [
233
+ l(o.$slots, "header")
234
+ ])) : T("", !0),
235
+ l(o.$slots, "default"),
236
+ o.$slots.footer ? (a(), s("div", Ie, [
237
+ l(o.$slots, "footer")
238
+ ])) : T("", !0)
239
+ ]),
240
+ (a(), x(K, { to: "body" }, [
241
+ i("div", {
242
+ class: "shadow-t-2xl fixed bottom-0 z-50 h-[60svh] w-full overflow-y-scroll rounded-t-2xl bg-white transition-all duration-500 ease-[cubic-bezier(.32,.72,0,1)] [&::-webkit-scrollbar]:hidden",
243
+ style: U(
244
+ c(t) ? "transform: translateZ(0)" : "transform: translate3d(0,60svh,0)"
245
+ )
246
+ }, [
247
+ l(o.$slots, "default")
248
+ ], 4),
249
+ i("div", {
250
+ onClick: d[0] || (d[0] = (u) => c(n)()),
251
+ class: f([
252
+ "backdrop transition-all [transition-behavior:allow-discrete] duration-300",
253
+ c(t) ? "fixed inset-0 z-40 block bg-black/80 opacity-100" : "hidden"
254
+ ])
255
+ }, null, 2)
256
+ ]))
257
+ ], 64));
258
+ }
259
+ }, Ve = { class: "flex flex-col" }, De = {
260
+ __name: "AppSidebarItem",
261
+ setup(e) {
262
+ H();
263
+ const r = _(!1);
264
+ function t() {
265
+ r.value = !r.value;
266
+ }
267
+ return P("SIDEBAR_TOGGLE", { toggled: r, toggleSidebarItem: t }), (n, o) => (a(), s("div", Ve, [
268
+ l(n.$slots, "default")
269
+ ]));
270
+ }
271
+ }, Pe = ["href"], ze = {
272
+ __name: "AppSidebarItemChild",
273
+ props: {
274
+ to: { type: [String, Object], required: !0 }
275
+ },
276
+ setup(e) {
277
+ const r = e;
278
+ return (t, n) => typeof r.to == "object" || r.to.startsWith("/") ? (a(), x(c(z), {
279
+ key: 0,
280
+ class: "[&.router-link-exact-active]:text-primary-950 [&.router-link-exact-active]:bg-background-main text-primary-950 hover:bg-background-main block h-10 items-center gap-3 overflow-hidden rounded-lg px-3 text-xs leading-[40px] text-ellipsis whitespace-nowrap transition-all [&.router-link-exact-active]:font-medium",
281
+ to: r.to
282
+ }, {
283
+ default: V(() => [
284
+ l(t.$slots, "default")
285
+ ]),
286
+ _: 3
287
+ }, 8, ["to"])) : (a(), s("a", {
288
+ key: 1,
289
+ class: "text-primary-950 hover:bg-background-main block h-10 items-center gap-3 overflow-hidden rounded-lg px-3 text-xs leading-[40px] text-ellipsis whitespace-nowrap transition-all",
290
+ href: r.to
291
+ }, [
292
+ l(t.$slots, "default")
293
+ ], 8, Pe));
294
+ }
295
+ }, Me = {
296
+ __name: "AppSidebarItemChildren",
297
+ setup(e) {
298
+ const r = y("SIDEBAR_TOGGLE"), { toggled: t } = r;
299
+ return (n, o) => (a(), s("div", {
300
+ class: f(["max-h-0 overflow-y-hidden rounded-b-lg opacity-0 transition-all", { "mt-2 max-h-max overflow-y-auto px-2 opacity-100": c(t) }])
301
+ }, [
302
+ l(n.$slots, "default")
303
+ ], 2));
304
+ }
305
+ }, je = { class: "link group/sidebar-item hover:bg-background-main peer has-[&.router-link-active]:from-brand-primary-50 has-[&.router-link-active]:to-brand-primary-100 flex h-10 items-center justify-between rounded-lg px-3 transition-all has-[&.router-link-active]:bg-gradient-to-br" }, Le = ["href"], Ee = {
306
+ __name: "AppSidebarItemParent",
307
+ props: {
308
+ to: { type: [String, Object], required: !0 },
309
+ name: { type: String },
310
+ hasChildren: { type: Boolean, default: !1 }
311
+ },
312
+ setup(e) {
313
+ const r = H(), t = e, n = y("SIDEBAR_TOGGLE"), o = y("APP_DATA"), { toggled: d, toggleSidebarItem: u } = n, { toggleSidebar: m } = o;
314
+ function p() {
315
+ r.matched.some(
316
+ (g) => t.name === g.name
317
+ ) ? d.value = !0 : d.value = !1;
318
+ }
319
+ return Z(r, () => p(), { immediate: !0 }), (b, g) => (a(), s("div", je, [
320
+ typeof t.to == "object" || t.to.startsWith("/") ? (a(), x(c(z), {
321
+ key: 0,
322
+ onClick: g[0] || (g[0] = (v) => c(m)()),
323
+ class: "[&.router-link-active]:text-primary-700 text-primary-950 peer flex h-full w-full items-center gap-3 text-xs [&.router-link-active]:font-medium",
324
+ to: t.to
325
+ }, {
326
+ default: V(() => [
327
+ l(b.$slots, "default")
328
+ ]),
329
+ _: 3
330
+ }, 8, ["to"])) : (a(), s("a", {
331
+ key: 1,
332
+ class: "text-primary-950 peer flex h-full w-full items-center gap-3 text-xs",
333
+ href: t.to
334
+ }, [
335
+ l(b.$slots, "default")
336
+ ], 8, Le)),
337
+ t.hasChildren ? (a(), s("button", {
338
+ key: 2,
339
+ onClick: g[1] || (g[1] = (v) => c(u)()),
340
+ class: "hover:bg-brand-primary-200 cursor-pointer rounded-full p-1 transition-all",
341
+ type: "button"
342
+ }, [
343
+ (a(), s("svg", {
344
+ xmlns: "http://www.w3.org/2000/svg",
345
+ width: "16",
346
+ height: "16",
347
+ viewBox: "0 0 24 24",
348
+ fill: "none",
349
+ stroke: "currentColor",
350
+ "stroke-width": "2",
351
+ "stroke-linecap": "round",
352
+ "stroke-linejoin": "round",
353
+ class: f(["lucide lucide-chevron-down-icon lucide-chevron-down stroke-brand-primary-800 transition-all duration-300", { "rotate-180": c(d) }])
354
+ }, g[2] || (g[2] = [
355
+ i("path", { d: "m6 9 6 6 6-6" }, null, -1)
356
+ ]), 2))
357
+ ])) : T("", !0)
358
+ ]));
359
+ }
360
+ }, Ne = { class: "hover:bg-background-main has-[&.router-link-active]:active has-[&.router-link-active]:bg-primary-700 peer flex h-10 items-center justify-between rounded-lg px-3 transition-all" }, Ge = {
361
+ __name: "AppSidebarToggle",
362
+ setup(e) {
363
+ const r = y("SIDEBAR_TOGGLE");
364
+ return (t, n) => {
365
+ const o = J("RouterLink");
366
+ return a(), s("div", Ne, [
367
+ j(o, {
368
+ class: "text-primary-950 peer flex h-full w-full items-center gap-3 text-xs [&.router-link-active]:font-medium [&.router-link-active]:text-white",
369
+ to: "/"
370
+ }, {
371
+ default: V(() => [
372
+ l(t.$slots, "default")
373
+ ]),
374
+ _: 3
375
+ }),
376
+ i("button", {
377
+ onClick: n[0] || (n[0] = (d) => c(r).toggleSidebarItem()),
378
+ class: "cursor-pointer",
379
+ type: "button"
380
+ }, n[1] || (n[1] = [
381
+ i("svg", {
382
+ xmlns: "http://www.w3.org/2000/svg",
383
+ width: "16",
384
+ height: "16",
385
+ viewBox: "0 0 24 24",
386
+ fill: "none",
387
+ stroke: "currentColor",
388
+ "stroke-width": "2",
389
+ "stroke-linecap": "round",
390
+ "stroke-linejoin": "round",
391
+ class: "lucide lucide-chevron-down-icon lucide-chevron-down stroke-white"
392
+ }, [
393
+ i("path", { d: "m6 9 6 6 6-6" })
394
+ ], -1)
395
+ ]))
396
+ ]);
397
+ };
398
+ }
399
+ }, We = {}, Oe = { class: "px-4 pb-4 first-of-type:pt-4" }, qe = {
400
+ key: 0,
401
+ class: "text-primary-950 px-1 text-sm font-medium"
402
+ }, He = { class: "mt-2" };
403
+ function Fe(e, r) {
404
+ return a(), s("nav", Oe, [
405
+ e.$slots.title ? (a(), s("b", qe, [
406
+ l(e.$slots, "title")
407
+ ])) : T("", !0),
408
+ i("div", He, [
409
+ l(e.$slots, "items")
410
+ ])
411
+ ]);
412
+ }
413
+ const Ke = /* @__PURE__ */ h(We, [["render", Fe]]), G = {
414
+ /* ---------------- Solid Buttons ---------------- */
415
+ primary: {
416
+ backgroundColor: "bg-brand-primary-700",
417
+ textColor: "text-white"
418
+ },
419
+ secondary: {
420
+ backgroundColor: "bg-neutral-100",
421
+ textColor: "text-neutral-700"
422
+ },
423
+ success: {
424
+ backgroundColor: "bg-success-400",
425
+ textColor: "text-white"
426
+ },
427
+ danger: {
428
+ backgroundColor: "bg-danger-600",
429
+ textColor: "text-white"
430
+ },
431
+ warning: {
432
+ backgroundColor: "bg-warning-500",
433
+ textColor: "text-neutral-950"
434
+ },
435
+ secondaryPrimary: {
436
+ backgroundColor: "bg-brand-primary-100",
437
+ textColor: "text-brand-primary-700"
438
+ },
439
+ secondaryAltPrimary: {
440
+ backgroundColor: "bg-primary-100",
441
+ textColor: "text-primary-700"
442
+ },
443
+ secondarySuccess: {
444
+ backgroundColor: "bg-success-100",
445
+ textColor: "text-success-700"
446
+ },
447
+ secondaryDanger: {
448
+ backgroundColor: "bg-danger-100",
449
+ textColor: "text-danger-700"
450
+ },
451
+ secondaryWarning: {
452
+ backgroundColor: "bg-warning-100",
453
+ textColor: "text-warning-700"
454
+ },
455
+ /* ---------------- Outlined Buttons ---------------- */
456
+ outlined: {
457
+ backgroundColor: "bg-transparent",
458
+ textColor: "text-neutral-700",
459
+ borderColor: "border border-neutral-200"
460
+ },
461
+ outlinedPrimary: {
462
+ backgroundColor: "bg-transparent",
463
+ textColor: "text-brand-primary-700",
464
+ borderColor: "border border-brand-primary-300"
465
+ },
466
+ outlinedSuccess: {
467
+ backgroundColor: "bg-transparent",
468
+ textColor: "text-success-600",
469
+ borderColor: "border border-success-300"
470
+ },
471
+ outlinedDanger: {
472
+ backgroundColor: "bg-transparent",
473
+ textColor: "text-danger-600",
474
+ borderColor: "border border-danger-300"
475
+ },
476
+ outlinedWarning: {
477
+ backgroundColor: "bg-transparent",
478
+ textColor: "text-warning-600",
479
+ borderColor: "border border-warning-300"
480
+ },
481
+ /* ---------------- Ghost Buttons ---------------- */
482
+ ghost: {
483
+ backgroundColor: "bg-transparent",
484
+ textColor: "text-neutral-700"
485
+ },
486
+ ghostPrimary: {
487
+ backgroundColor: "bg-transparent",
488
+ textColor: "text-brand-primary-700"
489
+ },
490
+ ghostSuccess: {
491
+ backgroundColor: "bg-transparent",
492
+ textColor: "text-success-600"
493
+ },
494
+ ghostDanger: {
495
+ backgroundColor: "bg-transparent",
496
+ textColor: "text-danger-600"
497
+ },
498
+ ghostWarning: {
499
+ backgroundColor: "bg-transparent",
500
+ textColor: "text-warning-600"
501
+ }
502
+ }, w = {
503
+ /* ---------------- Solid Buttons ---------------- */
504
+ primary: {
505
+ backgroundColor: "bg-gradient-to-br from-brand-primary-500 to-brand-primary-700",
506
+ textColor: "text-white",
507
+ hoverBackgroundColor: "hover:from-brand-primary-700 hover:to-brand-primary-800",
508
+ focusRing: "focus:ring-brand-primary-300"
509
+ },
510
+ secondary: {
511
+ backgroundColor: "bg-neutral-100",
512
+ textColor: "text-neutral-700",
513
+ hoverBackgroundColor: "hover:bg-neutral-200",
514
+ focusRing: "focus:ring-neutral-300"
515
+ },
516
+ success: {
517
+ backgroundColor: "bg-success-400",
518
+ textColor: "text-white",
519
+ hoverBackgroundColor: "hover:bg-success-500",
520
+ focusRing: "focus:ring-success-300"
521
+ },
522
+ danger: {
523
+ backgroundColor: "bg-danger-600",
524
+ textColor: "text-white",
525
+ hoverBackgroundColor: "hover:bg-danger-700",
526
+ focusRing: "focus:ring-danger-300"
527
+ },
528
+ warning: {
529
+ backgroundColor: "bg-warning-500",
530
+ textColor: "text-neutral-950",
531
+ hoverBackgroundColor: "hover:bg-warning-600",
532
+ focusRing: "focus:ring-warning-300"
533
+ },
534
+ secondaryPrimary: {
535
+ backgroundColor: "bg-brand-primary-100",
536
+ textColor: "text-brand-primary-700",
537
+ hoverBackgroundColor: "hover:bg-brand-primary-200",
538
+ focusRing: "focus:ring-brand-primary-200"
539
+ },
540
+ secondaryAltPrimary: {
541
+ backgroundColor: "bg-primary-100",
542
+ textColor: "text-primary-700",
543
+ hoverBackgroundColor: "hover:bg-primary-200",
544
+ focusRing: "focus:ring-primary-200"
545
+ },
546
+ secondarySuccess: {
547
+ backgroundColor: "bg-success-100",
548
+ textColor: "text-success-700",
549
+ hoverBackgroundColor: "hover:bg-success-200",
550
+ focusRing: "focus:ring-success-200"
551
+ },
552
+ secondaryDanger: {
553
+ backgroundColor: "bg-danger-100",
554
+ textColor: "text-danger-700",
555
+ hoverBackgroundColor: "hover:bg-danger-200",
556
+ focusRing: "focus:ring-danger-200"
557
+ },
558
+ secondaryWarning: {
559
+ backgroundColor: "bg-warning-100",
560
+ textColor: "text-warning-700",
561
+ hoverBackgroundColor: "hover:bg-warning-200",
562
+ focusRing: "focus:ring-warning-200"
563
+ },
564
+ /* ---------------- Outlined Buttons ---------------- */
565
+ outlined: {
566
+ backgroundColor: "bg-transparent",
567
+ textColor: "text-neutral-700",
568
+ borderColor: "border border-neutral-200",
569
+ hoverBackgroundColor: "hover:bg-neutral-100",
570
+ hoverTextColor: "hover:text-neutral-900",
571
+ focusRing: "focus:ring-neutral-200"
572
+ },
573
+ outlinedPrimary: {
574
+ backgroundColor: "bg-transparent",
575
+ textColor: "text-brand-primary-700",
576
+ borderColor: "border border-brand-primary-300",
577
+ hoverBackgroundColor: "hover:bg-brand-primary-100",
578
+ hoverTextColor: "hover:text-brand-primary-800",
579
+ focusRing: "focus:ring-brand-primary-200"
580
+ },
581
+ outlinedSuccess: {
582
+ backgroundColor: "bg-transparent",
583
+ textColor: "text-success-600",
584
+ borderColor: "border border-success-300",
585
+ hoverBackgroundColor: "hover:bg-success-100",
586
+ hoverTextColor: "hover:text-success-700",
587
+ focusRing: "focus:ring-success-200"
588
+ },
589
+ outlinedDanger: {
590
+ backgroundColor: "bg-transparent",
591
+ textColor: "text-danger-600",
592
+ borderColor: "border border-danger-300",
593
+ hoverBackgroundColor: "hover:bg-danger-100",
594
+ hoverTextColor: "hover:text-danger-700",
595
+ focusRing: "focus:ring-danger-200"
596
+ },
597
+ outlinedWarning: {
598
+ backgroundColor: "bg-transparent",
599
+ textColor: "text-warning-600",
600
+ borderColor: "border border-warning-300",
601
+ hoverBackgroundColor: "hover:bg-warning-100",
602
+ hoverTextColor: "hover:text-warning-700",
603
+ focusRing: "focus:ring-warning-200"
604
+ },
605
+ /* ---------------- Ghost Buttons ---------------- */
606
+ ghost: {
607
+ backgroundColor: "bg-transparent",
608
+ textColor: "text-neutral-700",
609
+ hoverBackgroundColor: "hover:bg-neutral-100",
610
+ hoverTextColor: "hover:text-neutral-900",
611
+ focusRing: "focus:ring-neutral-200"
612
+ },
613
+ ghostPrimary: {
614
+ backgroundColor: "bg-transparent",
615
+ textColor: "text-brand-primary-700",
616
+ hoverBackgroundColor: "hover:bg-brand-primary-100",
617
+ hoverTextColor: "hover:text-brand-primary-800",
618
+ focusRing: "focus:ring-brand-primary-200"
619
+ },
620
+ ghostSuccess: {
621
+ backgroundColor: "bg-transparent",
622
+ textColor: "text-success-600",
623
+ hoverBackgroundColor: "hover:bg-success-100",
624
+ hoverTextColor: "hover:text-success-700",
625
+ focusRing: "focus:ring-success-200"
626
+ },
627
+ ghostDanger: {
628
+ backgroundColor: "bg-transparent",
629
+ textColor: "text-danger-600",
630
+ hoverBackgroundColor: "hover:bg-danger-100",
631
+ hoverTextColor: "hover:text-danger-700",
632
+ focusRing: "focus:ring-danger-200"
633
+ },
634
+ ghostWarning: {
635
+ backgroundColor: "bg-transparent",
636
+ textColor: "text-warning-600",
637
+ hoverBackgroundColor: "hover:bg-warning-100",
638
+ hoverTextColor: "hover:text-warning-700",
639
+ focusRing: "focus:ring-warning-200"
640
+ }
641
+ }, Ue = {
642
+ __name: "Badge",
643
+ props: {
644
+ variant: { type: String, default: "primary" }
645
+ },
646
+ setup(e) {
647
+ const r = e;
648
+ return (t, n) => (a(), s("div", {
649
+ class: f(["rounded-full px-3 py-1 text-xs font-medium", [
650
+ c(G)[r.variant].backgroundColor,
651
+ c(G)[r.variant].textColor
652
+ ]])
653
+ }, [
654
+ l(t.$slots, "default")
655
+ ], 2));
656
+ }
657
+ }, Ze = {
658
+ __name: "Button",
659
+ props: {
660
+ variant: { type: String, default: "primary" }
661
+ },
662
+ setup(e, { expose: r }) {
663
+ const t = e, n = _(null);
664
+ return r({ buttonRef: n }), (o, d) => (a(), s("button", k(o.$attrs, {
665
+ class: ["cursor-pointer rounded-lg px-4 py-2 text-xs transition-all active:scale-[0.97] disabled:cursor-not-allowed disabled:opacity-50 disabled:active:scale-100", [
666
+ c(w)[t.variant].backgroundColor,
667
+ c(w)[t.variant].borderColor,
668
+ c(w)[t.variant].textColor,
669
+ c(w)[t.variant].hoverBackgroundColor,
670
+ c(w)[t.variant].hoverTextColor,
671
+ c(w)[t.variant].focusRing
672
+ ]],
673
+ ref_key: "buttonRef",
674
+ ref: n
675
+ }), [
676
+ l(o.$slots, "default")
677
+ ], 16));
678
+ }
679
+ }, Je = {}, Ye = { class: "rounded-2xl bg-white p-6" };
680
+ function Xe(e, r) {
681
+ return a(), s("div", Ye, [
682
+ l(e.$slots, "default")
683
+ ]);
684
+ }
685
+ const F = /* @__PURE__ */ h(Je, [["render", Xe]]), dt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
686
+ __proto__: null,
687
+ default: F
688
+ }, Symbol.toStringTag, { value: "Module" })), Qe = {
689
+ __name: "Checkbox",
690
+ props: {
691
+ modelValue: {},
692
+ modelModifiers: {}
693
+ },
694
+ emits: ["update:modelValue"],
695
+ setup(e) {
696
+ const r = B(e, "modelValue"), t = _(null);
697
+ return (n, o) => (a(), s("button", {
698
+ onClick: o[2] || (o[2] = (d) => t.value.click()),
699
+ class: "group/checkbox has-checked:bg-brand-primary-700 flex size-4 cursor-pointer items-center justify-center rounded-sm bg-neutral-200 transition-all duration-300 active:scale-[0.50] has-disabled:cursor-not-allowed has-disabled:opacity-50"
700
+ }, [
701
+ o[3] || (o[3] = i("svg", {
702
+ xmlns: "http://www.w3.org/2000/svg",
703
+ width: "14",
704
+ height: "14",
705
+ viewBox: "0 0 24 24",
706
+ fill: "none",
707
+ stroke: "currentColor",
708
+ "stroke-width": "2",
709
+ "stroke-linecap": "round",
710
+ "stroke-linejoin": "round",
711
+ class: "lucide lucide-check-icon lucide-check scale-0 stroke-white opacity-0 group-has-[:checked]/checkbox:scale-100 group-has-[:checked]/checkbox:opacity-100"
712
+ }, [
713
+ i("path", { d: "M20 6 9 17l-5-5" })
714
+ ], -1)),
715
+ I(i("input", k(n.$attrs, {
716
+ "onUpdate:modelValue": o[0] || (o[0] = (d) => r.value = d),
717
+ onChange: o[1] || (o[1] = O(() => {
718
+ }, ["stop"])),
719
+ type: "checkbox",
720
+ ref_key: "checkboxRef",
721
+ ref: t,
722
+ hidden: ""
723
+ }), null, 16), [
724
+ [Y, r.value]
725
+ ])
726
+ ]));
727
+ }
728
+ }, er = {}, rr = { class: "flex flex-col items-center justify-center gap-8" }, tr = { class: "flex max-w-xs flex-col items-center gap-2 text-center" }, or = { class: "bg-brand-primary-100 mb-2 grid size-12 place-items-center rounded-full" };
729
+ function nr(e, r) {
730
+ return a(), s("div", rr, [
731
+ i("div", tr, [
732
+ i("div", or, [
733
+ l(e.$slots, "icon")
734
+ ]),
735
+ l(e.$slots, "default")
736
+ ])
737
+ ]);
738
+ }
739
+ const ar = /* @__PURE__ */ h(er, [["render", nr]]), sr = {}, lr = { class: "text-sm text-neutral-600" };
740
+ function ir(e, r) {
741
+ return a(), s("p", lr, [
742
+ l(e.$slots, "default")
743
+ ]);
744
+ }
745
+ const ct = /* @__PURE__ */ h(sr, [["render", ir]]), dr = {}, cr = { class: "text-lg font-medium" };
746
+ function ur(e, r) {
747
+ return a(), s("b", cr, [
748
+ l(e.$slots, "default")
749
+ ]);
750
+ }
751
+ const ut = /* @__PURE__ */ h(dr, [["render", ur]]), gr = {
752
+ __name: "FormField",
753
+ props: {
754
+ invalid: { type: [Boolean, String] },
755
+ validate: { type: Boolean, default: !1 }
756
+ },
757
+ setup(e) {
758
+ const r = e, t = L(() => r.invalid === !0 || typeof r.invalid == "string" && r.invalid.trim() !== "");
759
+ return (n, o) => (a(), s("div", {
760
+ class: f(["group flex flex-col gap-2", { "invalid-form": t.value }])
761
+ }, [
762
+ l(n.$slots, "default")
763
+ ], 2));
764
+ }
765
+ }, pr = {}, mr = { class: "text-danger-700 hidden h-0 text-xs opacity-0 transition-all group-has-user-invalid:mt-1 group-has-user-invalid:block group-has-user-invalid:h-4 group-has-user-invalid:opacity-100 group-[&.invalid-form]:mt-1 group-[&.invalid-form]:block group-[&.invalid-form]:h-4 group-[&.invalid-form]:opacity-100" };
766
+ function br(e, r) {
767
+ return a(), s("p", mr, [
768
+ l(e.$slots, "default", {}, void 0, !0)
769
+ ]);
770
+ }
771
+ const fr = /* @__PURE__ */ h(pr, [["render", br], ["__scopeId", "data-v-a299dc33"]]), hr = {
772
+ __name: "Input",
773
+ props: {
774
+ modelValue: {},
775
+ modelModifiers: {}
776
+ },
777
+ emits: ["update:modelValue"],
778
+ setup(e) {
779
+ const r = B(e, "modelValue");
780
+ return (t, n) => I((a(), s("input", {
781
+ "onUpdate:modelValue": n[0] || (n[0] = (o) => r.value = o),
782
+ class: "group-[&.invalid-form]:focus:ring-danger-700 group-[&.invalid-form]:ring-danger-700 text-primary-950 focus:ring-brand-primary-700 focus:user-invalid:ring-danger-700 user-invalid:ring-danger-700 rounded-lg border-[1px] border-neutral-200 bg-white px-3 py-2 text-xs ring-offset-2 transition-all duration-300 outline-none group-[&.invalid-form]:ring-2 placeholder:text-neutral-400 user-invalid:ring-2 focus:ring-2 group-[&.invalid-form]:focus:ring-2 disabled:cursor-not-allowed disabled:opacity-50"
783
+ }, null, 512)), [
784
+ [E, r.value]
785
+ ]);
786
+ }
787
+ }, vr = {};
788
+ function xr(e, r) {
789
+ return a(), s("label", k(e.$attrs, { class: "text-primary-950 text-xs font-medium transition-all" }), [
790
+ l(e.$slots, "default")
791
+ ], 16);
792
+ }
793
+ const _r = /* @__PURE__ */ h(vr, [["render", xr]]), yr = {}, kr = {
794
+ xmlns: "http://www.w3.org/2000/svg",
795
+ width: "24",
796
+ height: "24",
797
+ viewBox: "0 0 24 24",
798
+ fill: "none",
799
+ stroke: "currentColor",
800
+ "stroke-width": "2",
801
+ "stroke-linecap": "round",
802
+ "stroke-linejoin": "round",
803
+ class: "lucide lucide-x-icon lucide-x"
804
+ };
805
+ function Cr(e, r) {
806
+ return a(), s("svg", kr, r[0] || (r[0] = [
807
+ i("path", { d: "M18 6 6 18" }, null, -1),
808
+ i("path", { d: "m6 6 12 12" }, null, -1)
809
+ ]));
810
+ }
811
+ const wr = /* @__PURE__ */ h(yr, [["render", Cr]]), $r = { class: "max-w-72 space-y-2 rounded-xl border border-neutral-200 bg-white p-2" }, Ar = { class: "flex flex-wrap gap-2" }, Sr = { class: "group/item hover:border-brand-primary-500 inline-flex cursor-pointer items-center justify-center gap-2 rounded-full border border-neutral-200 bg-white px-3 py-2 text-xs transition-all" }, Tr = ["onClick"], Br = { class: "max-h-72 overflow-y-auto" }, Ir = ["onClick"], Rr = {
812
+ __name: "MultiSelect",
813
+ props: /* @__PURE__ */ N({
814
+ data: { type: Array, required: !0 },
815
+ labelKey: { type: String, required: !0 },
816
+ valueKey: { type: String, required: !0 }
817
+ }, {
818
+ modelValue: { default: () => [] },
819
+ modelModifiers: {}
820
+ }),
821
+ emits: ["update:modelValue"],
822
+ setup(e) {
823
+ const r = B(e, "modelValue"), t = e, n = _([]), o = _(null), d = L(() => {
824
+ let p = t.data;
825
+ return n.value.length && (p = p.filter(
826
+ (b) => !n.value.some(
827
+ (g) => g[t.valueKey] === b[t.valueKey]
828
+ )
829
+ )), o.value ? p.filter((b) => b[t.labelKey].toLowerCase().includes(o.value.toLowerCase())) : p;
830
+ });
831
+ function u(p) {
832
+ n.value.push(p), r.value = n.value;
833
+ }
834
+ function m(p) {
835
+ n.value.splice(p, 1), r.value = n.value;
836
+ }
837
+ return X(() => {
838
+ n.value = r.value;
839
+ }), (p, b) => (a(), s("div", $r, [
840
+ i("ul", Ar, [
841
+ (a(!0), s(S, null, R(n.value, (g, v) => (a(), s("li", Sr, [
842
+ q(D(g[t.labelKey]) + " ", 1),
843
+ i("button", {
844
+ onClick: (M) => m(v),
845
+ class: "hidden shrink-0 cursor-pointer rounded-full group-hover/item:block"
846
+ }, [
847
+ j(wr, { class: "size-3.5 stroke-neutral-600" })
848
+ ], 8, Tr)
849
+ ]))), 256))
850
+ ]),
851
+ I(i("input", {
852
+ "onUpdate:modelValue": b[0] || (b[0] = (g) => o.value = g),
853
+ class: "w-full px-2 py-3 text-xs outline-none",
854
+ placeholder: "Search",
855
+ type: "text"
856
+ }, null, 512), [
857
+ [E, o.value]
858
+ ]),
859
+ i("ul", Br, [
860
+ (a(!0), s(S, null, R(d.value, (g) => (a(), s("li", {
861
+ onClick: (v) => u(g),
862
+ class: "hover:bg-background-main cursor-pointer rounded-lg px-2 py-3 text-xs transition-colors",
863
+ key: g[t.valueKey]
864
+ }, D(g[t.labelKey]), 9, Ir))), 128))
865
+ ])
866
+ ]));
867
+ }
868
+ }, Vr = {
869
+ __name: "Radio",
870
+ props: /* @__PURE__ */ N({
871
+ variant: { type: String, default: "small" }
872
+ }, {
873
+ modelValue: {},
874
+ modelModifiers: {}
875
+ }),
876
+ emits: ["update:modelValue"],
877
+ setup(e) {
878
+ const r = B(e, "modelValue"), t = e, n = _(null), o = {
879
+ small: { outerCircleSize: "size-4", innerCircleSize: "size-2.5" },
880
+ large: { outerCircleSize: "size-5", innerCircleSize: "size-3" }
881
+ };
882
+ return (d, u) => (a(), s("button", {
883
+ onClick: u[2] || (u[2] = (m) => n.value.click()),
884
+ class: f(["group/radio has-checked:border-brand-primary-700 flex cursor-pointer items-center justify-center rounded-full border-[1px] border-transparent bg-neutral-100 duration-300 active:scale-[0.80] has-checked:bg-white", o[t.variant].outerCircleSize]),
885
+ role: "radio",
886
+ type: "button"
887
+ }, [
888
+ i("div", {
889
+ class: f(["group-has-checked/radio:bg-brand-primary-700 grid place-items-center rounded-full opacity-0 transition-all group-has-checked/radio:opacity-100", o[t.variant].innerCircleSize])
890
+ }, [
891
+ l(d.$slots, "default")
892
+ ], 2),
893
+ I(i("input", k({
894
+ onChange: u[0] || (u[0] = O(() => {
895
+ }, ["stop"]))
896
+ }, d.$attrs, {
897
+ "onUpdate:modelValue": u[1] || (u[1] = (m) => r.value = m),
898
+ type: "radio",
899
+ ref_key: "radioRef",
900
+ ref: n,
901
+ hidden: ""
902
+ }), null, 16), [
903
+ [Q, r.value]
904
+ ])
905
+ ], 2));
906
+ }
907
+ }, Dr = "bg-[url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiM1YjYxNmUiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0ibHVjaWRlIGx1Y2lkZS1jaGV2cm9uLWRvd24iPjxwYXRoIGQ9Im02IDkgNiA2IDYtNiIvPjwvc3ZnPg==')]", Pr = {
908
+ __name: "Select",
909
+ props: {
910
+ modelValue: {},
911
+ modelModifiers: {}
912
+ },
913
+ emits: ["update:modelValue"],
914
+ setup(e) {
915
+ const r = B(e, "modelValue");
916
+ return (t, n) => I((a(), s("select", k(t.$attrs, {
917
+ "onUpdate:modelValue": n[0] || (n[0] = (o) => r.value = o),
918
+ class: ["group-[&.invalid-form]:ring-danger-700 group-[&.invalid-form]:focus:ring-danger-700 text-primary-950 user-invalid:ring-danger-700 focus:user-invalid:ring-danger-700 focus:ring-brand-primary-700 appearance-none rounded-lg border-[1px] border-neutral-200 bg-white bg-[length:16px] bg-[right_12px_center] bg-no-repeat px-3 py-2 text-xs ring-offset-2 transition-all outline-none group-[&.invalid-form]:ring-2 user-invalid:ring-2 focus:ring-2 group-[&.invalid-form]:focus:ring-2 disabled:cursor-not-allowed disabled:opacity-50", Dr]
919
+ }), [
920
+ l(t.$slots, "default")
921
+ ], 16)), [
922
+ [ee, r.value]
923
+ ]);
924
+ }
925
+ }, zr = {}, Mr = { class: "bg-primary-100 animate-pulse rounded-lg" };
926
+ function jr(e, r) {
927
+ return a(), s("div", Mr);
928
+ }
929
+ const Lr = /* @__PURE__ */ h(zr, [["render", jr]]), Er = {}, Nr = { class: "mt-4 flex items-center gap-2" };
930
+ function Gr(e, r) {
931
+ return a(), s("div", Nr, [
932
+ l(e.$slots, "default")
933
+ ]);
934
+ }
935
+ const gt = /* @__PURE__ */ h(Er, [["render", Gr]]), Wr = {
936
+ __name: "Switch",
937
+ props: ["modelValue"],
938
+ emits: ["update:modelValue"],
939
+ setup(e, { emit: r }) {
940
+ const t = r, n = e;
941
+ function o() {
942
+ t("update:modelValue", !n.modelValue);
943
+ }
944
+ return (d, u) => (a(), s("button", k(d.$attrs, {
945
+ onClick: u[0] || (u[0] = (m) => o()),
946
+ class: [
947
+ "group/switch h-5 w-9 cursor-pointer rounded-full p-0.5 transition-all duration-300 disabled:cursor-not-allowed disabled:opacity-50",
948
+ n.modelValue ? "from-brand-primary-600 to-brand-primary-700 bg-gradient-to-br" : "bg-neutral-200"
949
+ ],
950
+ role: "switch",
951
+ type: "button"
952
+ }), [
953
+ i("span", {
954
+ class: f(["pointer-events-none flex size-4 items-center justify-center rounded-full bg-white shadow-md transition-all duration-300", { "translate-x-full": n.modelValue }])
955
+ }, [
956
+ l(d.$slots, "icon")
957
+ ], 2)
958
+ ], 16));
959
+ }
960
+ }, Or = { class: "w-full" }, qr = { class: "h-16" }, Hr = { key: 0 }, Fr = {
961
+ key: 0,
962
+ class: "pe-4"
963
+ }, Kr = {
964
+ __name: "Table",
965
+ props: {
966
+ columns: { type: Array, required: !0 },
967
+ data: { type: Array, required: !0 }
968
+ },
969
+ setup(e) {
970
+ const r = e;
971
+ return (t, n) => (a(), s("table", Or, [
972
+ i("thead", null, [
973
+ i("tr", qr, [
974
+ (a(!0), s(S, null, R(r.columns, (o) => (a(), s("th", {
975
+ key: o.key,
976
+ class: "text-xs font-medium text-neutral-600 first-of-type:ps-4"
977
+ }, D(o.label), 1))), 128)),
978
+ t.$slots.actions ? (a(), s("th", Hr)) : T("", !0)
979
+ ])
980
+ ]),
981
+ i("tbody", null, [
982
+ (a(!0), s(S, null, R(r.data, (o, d) => (a(), s("tr", {
983
+ key: d,
984
+ class: "odd:bg-background-main/50 hover:bg-background-main min-h-16 rounded-md transition-all"
985
+ }, [
986
+ (a(!0), s(S, null, R(r.columns, (u) => (a(), s("td", {
987
+ key: u.key,
988
+ class: "text-primary-950 py-4 text-xs first-of-type:rounded-s-md first-of-type:ps-4 last-of-type:rounded-e-md last-of-type:pe-4"
989
+ }, [
990
+ l(t.$slots, u.key, { row: o }, () => [
991
+ q(D(o[u.key]), 1)
992
+ ])
993
+ ]))), 128)),
994
+ t.$slots.actions ? (a(), s("td", Fr, [
995
+ l(t.$slots, "actions", { row: o })
996
+ ])) : T("", !0)
997
+ ]))), 128))
998
+ ])
999
+ ]));
1000
+ }
1001
+ }, Ur = { class: "overflow-x-scroll rounded-xl bg-neutral-100/50 p-1 [&::-webkit-scrollbar]:hidden" }, Zr = {
1002
+ __name: "Tabs",
1003
+ props: {
1004
+ default: { default: null }
1005
+ },
1006
+ setup(e) {
1007
+ const t = _(e.default);
1008
+ function n(o) {
1009
+ t.value = o;
1010
+ }
1011
+ return P("TAB_DATA", { currentValue: t, setCurrentValue: n }), (o, d) => (a(), s("div", Ur, [
1012
+ l(o.$slots, "default")
1013
+ ]));
1014
+ }
1015
+ }, Jr = {
1016
+ __name: "TabItem",
1017
+ props: {
1018
+ value: { required: !0 }
1019
+ },
1020
+ setup(e) {
1021
+ const r = e, t = y("TAB_DATA"), { currentValue: n, setCurrentValue: o } = t, d = L(() => n.value === r.value ? [
1022
+ "bg-white",
1023
+ "font-medium",
1024
+ "text-primary-700",
1025
+ "shadow-xl",
1026
+ "tab-active"
1027
+ ] : "text-neutral-600");
1028
+ return (u, m) => (a(), s("button", {
1029
+ onClick: m[0] || (m[0] = (p) => c(o)(r.value)),
1030
+ class: f(["tab h-8 cursor-pointer rounded-lg px-3 text-xs transition-all disabled:cursor-not-allowed disabled:opacity-50", d.value])
1031
+ }, [
1032
+ l(u.$slots, "default", {}, void 0, !0)
1033
+ ], 2));
1034
+ }
1035
+ }, Yr = /* @__PURE__ */ h(Jr, [["__scopeId", "data-v-9e06f71f"]]), Xr = {
1036
+ __name: "TextArea",
1037
+ props: /* @__PURE__ */ N(["modelValue"], {
1038
+ modelValue: {},
1039
+ modelModifiers: {}
1040
+ }),
1041
+ emits: ["update:modelValue"],
1042
+ setup(e) {
1043
+ const r = B(e, "modelValue");
1044
+ return (t, n) => I((a(), s("textarea", k({
1045
+ onInput: n[0] || (n[0] = (o) => t.$emit("update:modelValue", o.target.value))
1046
+ }, t.$attrs, {
1047
+ "onUpdate:modelValue": n[1] || (n[1] = (o) => r.value = o),
1048
+ class: "text-primary-950 neutral-400:text-neutral-400 focus:ring-brand-primary-700 group-[&.invalid-form]:focus:ring-danger-700 group-[&.invalid-form]:ring-danger-700 focus:user-invalid:ring-danger-700 user-invalid:ring-danger-700 rounded-lg border-[1px] border-neutral-200 px-3 py-2 text-xs ring-offset-2 transition-all outline-none group-[&.invalid-form]:ring-2 user-invalid:ring-2 focus:ring-2 focus:ring-offset-2 group-[&.invalid-form]:focus:ring-2 disabled:cursor-not-allowed disabled:opacity-50"
1049
+ }), null, 16)), [
1050
+ [E, r.value]
1051
+ ]);
1052
+ }
1053
+ }, Qr = C(() => import("./Dialog-BHLcOviq.js")), et = C(() => import("./DialogContent-BrXhtNDl.js")), rt = C(() => import("./DialogToggle-BBhhbRSr.js")), tt = C(
1054
+ () => import("./DialogBackground-WvtbjhWD.js")
1055
+ ), ot = C(() => import("./Sheet-BSbgTrds.js")), nt = C(() => import("./SheetContent-CwM7Ef5X.js")), at = C(() => import("./SheetToggle-CE4cgr3o.js")), pt = {
1056
+ install(e) {
1057
+ e.component("Alert", re), e.component("AlertContent", ae), e.component("AlertTitle", de), e.component("AppHeaderLink", he), e.component("AppLayout", _e), e.component("AppMain", ye), e.component("AppNavTabs", $e), e.component("AppNavTab", Se), e.component("AppSidebar", Re), e.component("AppSidebarItem", De), e.component("AppSidebarItemChild", ze), e.component("AppSidebarItemChildren", Me), e.component("AppSidebarItemParent", Ee), e.component("AppSidebarToggle", Ge), e.component("AppSidebarNavSection", Ke), e.component("Badge", Ue), e.component("Button", Ze), e.component("Checkbox", Qe), e.component("Card", F), e.component("Dialog", Qr), e.component("DialogContent", et), e.component("DialogToggle", rt), e.component("DialogBackground", tt), e.component("Empty", ar), e.component("FormField", gr), e.component("FormFieldError", fr), e.component("Input", hr), e.component("Label", _r), e.component("MultiSelect", Rr), e.component("Radio", Vr), e.component("Select", Pr), e.component("Sheet", ot), e.component("SheetContent", nt), e.component("SheetToggle", at), e.component("SkeletonLoader", Lr), e.component("Switch", Wr), e.component("Table", Kr), e.component("Tabs", Zr), e.component("TabItem", Yr), e.component("TextArea", Xr);
1058
+ }
1059
+ };
1060
+ export {
1061
+ ae as A,
1062
+ Pr as B,
1063
+ F as C,
1064
+ Qr as D,
1065
+ ar as E,
1066
+ fr as F,
1067
+ nt as G,
1068
+ at as H,
1069
+ Lr as I,
1070
+ gt as J,
1071
+ Wr as K,
1072
+ _r as L,
1073
+ Kr as M,
1074
+ Zr as N,
1075
+ Xr as O,
1076
+ pt as P,
1077
+ dt as Q,
1078
+ ot as S,
1079
+ Yr as T,
1080
+ re as _,
1081
+ de as a,
1082
+ it as b,
1083
+ he as c,
1084
+ _e as d,
1085
+ ye as e,
1086
+ $e as f,
1087
+ Se as g,
1088
+ Re as h,
1089
+ De as i,
1090
+ ze as j,
1091
+ Me as k,
1092
+ Ee as l,
1093
+ Ge as m,
1094
+ Ke as n,
1095
+ Ue as o,
1096
+ Ze as p,
1097
+ Qe as q,
1098
+ et as r,
1099
+ rt as s,
1100
+ tt as t,
1101
+ ct as u,
1102
+ ut as v,
1103
+ gr as w,
1104
+ hr as x,
1105
+ Rr as y,
1106
+ Vr as z
1107
+ };