@viglet/viglet-design-system 2026.3.11 → 2026.3.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/README.md +41 -12
  2. package/consumers.json +2 -2
  3. package/dist/badge-locale-1_BmNTro.cjs +1 -0
  4. package/dist/{badge-locale-DxDp8Q3S.js → badge-locale-Bx7m7tg2.js} +189 -85
  5. package/dist/bento/bento-calendar.d.ts +52 -0
  6. package/dist/bento/bento-calendar.d.ts.map +1 -0
  7. package/dist/bento/bento-change-mark.d.ts +21 -0
  8. package/dist/bento/bento-change-mark.d.ts.map +1 -0
  9. package/dist/bento/bento-data-table.d.ts +8 -1
  10. package/dist/bento/bento-data-table.d.ts.map +1 -1
  11. package/dist/bento/bento-diff.d.ts +10 -1
  12. package/dist/bento/bento-diff.d.ts.map +1 -1
  13. package/dist/bento/bento-split-page.d.ts +31 -0
  14. package/dist/bento/bento-split-page.d.ts.map +1 -0
  15. package/dist/bento/bento-version-rail.d.ts.map +1 -1
  16. package/dist/bento/index.d.ts +4 -1
  17. package/dist/bento/index.d.ts.map +1 -1
  18. package/dist/bento.cjs +4 -4
  19. package/dist/bento.es.js +1431 -788
  20. package/dist/catalogue.json +256 -2
  21. package/dist/components/ui/form.d.ts +1 -1
  22. package/dist/components/ui/form.d.ts.map +1 -1
  23. package/dist/components/ui/index.d.ts +1 -0
  24. package/dist/components/ui/index.d.ts.map +1 -1
  25. package/dist/components/ui/tree.d.ts +60 -0
  26. package/dist/components/ui/tree.d.ts.map +1 -0
  27. package/dist/components/ui/viglet-assistant.d.ts +7 -1
  28. package/dist/components/ui/viglet-assistant.d.ts.map +1 -1
  29. package/dist/exports.json +20 -1
  30. package/dist/i18n/index.d.ts +44 -0
  31. package/dist/i18n/index.d.ts.map +1 -1
  32. package/dist/i18n/locales/en/bento.json.d.ts +22 -0
  33. package/dist/i18n/locales/pt/bento.json.d.ts +22 -0
  34. package/dist/i18n.cjs +1 -1
  35. package/dist/i18n.es.js +40 -0
  36. package/dist/index.cjs +1 -1
  37. package/dist/index.es.js +1365 -1230
  38. package/dist/{loading-provider-ClDkFPuv.js → loading-provider-D-_5G-08.js} +1 -1
  39. package/dist/{loading-provider-DGuCfsl9.cjs → loading-provider-E4tIG9BM.cjs} +1 -1
  40. package/dist/preset.css +1 -1
  41. package/dist/router.cjs +1 -1
  42. package/dist/router.es.js +1 -1
  43. package/dist/{user.context-Cr3GAQ_r.js → user.context-D3kmD3_y.js} +379 -210
  44. package/dist/user.context-gQvBxcwr.cjs +1 -0
  45. package/dist/viglet-design-system.css +1 -1
  46. package/docs/BENTO-AUTHORING.md +13 -2
  47. package/docs/reference/README.md +2 -1
  48. package/docs/reference/canvas.json +10 -1
  49. package/docs/reference/split.dc.html +164 -0
  50. package/package.json +1 -1
  51. package/scripts/lib/contrast.mjs +29 -3
  52. package/scripts/page-reference.mjs +3 -3
  53. package/dist/badge-locale-CJkHDlPg.cjs +0 -1
  54. package/dist/user.context-hbdvmXOn.cjs +0 -1
@@ -1,84 +1,182 @@
1
1
  import { t as e } from "./utils-Fk5jmzzb.js";
2
- import { C as t, a as n, c as r, g as i, o as a, p as o, u as s, v as c, y as l } from "./badge-locale-DxDp8Q3S.js";
2
+ import { C as t, a as n, c as r, g as i, o as a, p as o, u as s, v as c, y as l } from "./badge-locale-Bx7m7tg2.js";
3
3
  import * as u from "react";
4
4
  import d, { createContext as f, useCallback as ee, useContext as p, useEffect as m, useRef as h, useState as g } from "react";
5
5
  import { Fragment as _, jsx as v, jsxs as y } from "react/jsx-runtime";
6
6
  import * as b from "@radix-ui/react-avatar";
7
7
  import { Slot as x } from "@radix-ui/react-slot";
8
8
  import { cva as S } from "class-variance-authority";
9
- import { useTranslation as C } from "react-i18next";
10
- import * as w from "@radix-ui/react-checkbox";
11
- import * as T from "@radix-ui/react-dropdown-menu";
12
- import { IconChevronDown as E, IconLoader2 as te, IconSearch as ne, IconSparkles as D, IconTrash as re } from "@tabler/icons-react";
13
- import { Icon as O } from "@iconify/react";
14
- import { Popover as k } from "radix-ui";
15
- import * as A from "@radix-ui/react-tooltip";
16
- import { useTheme as j } from "next-themes";
17
- import { Toaster as M, toast as N } from "sonner";
18
- var P = t("check", [["path", {
19
- d: "M20 6 9 17l-5-5",
20
- key: "1gmf2c"
21
- }]]), F = t("chevron-right", [["path", {
22
- d: "m9 18 6-6-6-6",
23
- key: "mthhwq"
24
- }]]), I = t("circle-check", [["circle", {
25
- cx: "12",
26
- cy: "12",
27
- r: "10",
28
- key: "1mglay"
29
- }], ["path", {
30
- d: "m9 12 2 2 4-4",
31
- key: "dzmm74"
32
- }]]), L = t("circle", [["circle", {
33
- cx: "12",
34
- cy: "12",
35
- r: "10",
36
- key: "1mglay"
37
- }]]), R = t("info", [
38
- ["circle", {
9
+ import { useTranslation as te } from "react-i18next";
10
+ import * as C from "@radix-ui/react-checkbox";
11
+ import * as w from "@radix-ui/react-dropdown-menu";
12
+ import { IconChevronDown as T, IconLoader2 as ne, IconSearch as re, IconSparkles as ie, IconTrash as ae } from "@tabler/icons-react";
13
+ import { Icon as E } from "@iconify/react";
14
+ import { Popover as D } from "radix-ui";
15
+ import { Group as O, Panel as k, Separator as A } from "react-resizable-panels";
16
+ import * as j from "@radix-ui/react-tooltip";
17
+ import { useTheme as M } from "next-themes";
18
+ import { Toaster as N, toast as P } from "sonner";
19
+ import * as F from "@radix-ui/react-tabs";
20
+ //#region node_modules/lucide-react/dist/esm/icons/check.mjs
21
+ var I = {
22
+ name: "check",
23
+ size: 24,
24
+ node: [["path", {
25
+ d: "M20 6 9 17l-5-5",
26
+ key: "1gmf2c"
27
+ }]]
28
+ };
29
+ I.node;
30
+ var L = t(I), R = {
31
+ name: "chevron-right",
32
+ size: 24,
33
+ node: [["path", {
34
+ d: "m9 18 6-6-6-6",
35
+ key: "mthhwq"
36
+ }]]
37
+ };
38
+ R.node;
39
+ var z = t(R), B = {
40
+ name: "circle-check",
41
+ size: 24,
42
+ node: [["circle", {
43
+ cx: "12",
44
+ cy: "12",
45
+ r: "10",
46
+ key: "1mglay"
47
+ }], ["path", {
48
+ d: "m16 9-5.5 5.5L8 12",
49
+ key: "xofnsj"
50
+ }]],
51
+ aliases: ["check-circle-2"]
52
+ };
53
+ B.node;
54
+ var oe = t(B), V = {
55
+ name: "circle",
56
+ size: 24,
57
+ node: [["circle", {
39
58
  cx: "12",
40
59
  cy: "12",
41
60
  r: "10",
42
61
  key: "1mglay"
43
- }],
44
- ["path", {
45
- d: "M12 16v-4",
46
- key: "1dtifu"
47
- }],
48
- ["path", {
49
- d: "M12 8h.01",
50
- key: "e9boi3"
51
- }]
52
- ]), z = t("loader-circle", [["path", {
53
- d: "M21 12a9 9 0 1 1-6.219-8.56",
54
- key: "13zald"
55
- }]]), B = t("octagon-x", [
56
- ["path", {
57
- d: "m15 9-6 6",
58
- key: "1uzhvr"
59
- }],
60
- ["path", {
61
- d: "M2.586 16.726A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2h6.624a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586z",
62
- key: "2d38gg"
63
- }],
64
- ["path", {
65
- d: "m9 9 6 6",
66
- key: "z0biqf"
67
- }]
68
- ]), V = t("triangle-alert", [
69
- ["path", {
70
- d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",
71
- key: "wmoenq"
72
- }],
73
- ["path", {
74
- d: "M12 9v4",
75
- key: "juzpu7"
76
- }],
77
- ["path", {
78
- d: "M12 17h.01",
79
- key: "p32p05"
80
- }]
81
- ]), H = S("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all cursor-pointer disabled:cursor-not-allowed disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", {
62
+ }]]
63
+ };
64
+ V.node;
65
+ var se = t(V), H = {
66
+ name: "grip-vertical",
67
+ size: 24,
68
+ node: [
69
+ ["circle", {
70
+ cx: "9",
71
+ cy: "12",
72
+ r: "1",
73
+ key: "1vctgf"
74
+ }],
75
+ ["circle", {
76
+ cx: "9",
77
+ cy: "5",
78
+ r: "1",
79
+ key: "hp0tcf"
80
+ }],
81
+ ["circle", {
82
+ cx: "9",
83
+ cy: "19",
84
+ r: "1",
85
+ key: "fkjjf6"
86
+ }],
87
+ ["circle", {
88
+ cx: "15",
89
+ cy: "12",
90
+ r: "1",
91
+ key: "1tmaij"
92
+ }],
93
+ ["circle", {
94
+ cx: "15",
95
+ cy: "5",
96
+ r: "1",
97
+ key: "19l28e"
98
+ }],
99
+ ["circle", {
100
+ cx: "15",
101
+ cy: "19",
102
+ r: "1",
103
+ key: "f4zoj3"
104
+ }]
105
+ ]
106
+ };
107
+ H.node;
108
+ var ce = t(H), U = {
109
+ name: "info",
110
+ size: 24,
111
+ node: [
112
+ ["circle", {
113
+ cx: "12",
114
+ cy: "12",
115
+ r: "10",
116
+ key: "1mglay"
117
+ }],
118
+ ["path", {
119
+ d: "M12 16v-4",
120
+ key: "1dtifu"
121
+ }],
122
+ ["path", {
123
+ d: "M12 8h.01",
124
+ key: "e9boi3"
125
+ }]
126
+ ]
127
+ };
128
+ U.node;
129
+ var le = t(U), W = {
130
+ name: "loader-circle",
131
+ size: 24,
132
+ node: [["path", {
133
+ d: "M21 12a9 9 0 1 1-6.219-8.56",
134
+ key: "13zald"
135
+ }]],
136
+ aliases: ["loader-2"]
137
+ };
138
+ W.node;
139
+ var ue = t(W), G = {
140
+ name: "octagon-x",
141
+ size: 24,
142
+ node: [
143
+ ["path", {
144
+ d: "m15 9-6 6",
145
+ key: "1uzhvr"
146
+ }],
147
+ ["path", {
148
+ d: "M2.586 16.726A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2h6.624a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586z",
149
+ key: "2d38gg"
150
+ }],
151
+ ["path", {
152
+ d: "m9 9 6 6",
153
+ key: "z0biqf"
154
+ }]
155
+ ],
156
+ aliases: ["x-octagon"]
157
+ };
158
+ G.node;
159
+ var de = t(G), K = {
160
+ name: "triangle-alert",
161
+ size: 24,
162
+ node: [
163
+ ["path", {
164
+ d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",
165
+ key: "wmoenq"
166
+ }],
167
+ ["path", {
168
+ d: "M12 9v4",
169
+ key: "juzpu7"
170
+ }],
171
+ ["path", {
172
+ d: "M12 17h.01",
173
+ key: "p32p05"
174
+ }]
175
+ ],
176
+ aliases: ["alert-triangle"]
177
+ };
178
+ K.node;
179
+ var fe = t(K), q = S("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all cursor-pointer disabled:cursor-not-allowed disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", {
82
180
  variants: {
83
181
  variant: {
84
182
  default: "bg-primary text-primary-foreground hover:bg-primary/90",
@@ -102,11 +200,11 @@ var P = t("check", [["path", {
102
200
  size: "default"
103
201
  }
104
202
  });
105
- function ie({ className: t, variant: n, size: r, asChild: i = !1, loading: a = !1, onClick: o, children: s, ...u }) {
203
+ function pe({ className: t, variant: n, size: r, asChild: i = !1, loading: a = !1, onClick: o, children: s, ...u }) {
106
204
  let d = i ? x : "button", f = l(a, u["aria-disabled"], o);
107
205
  return /* @__PURE__ */ v(d, {
108
206
  "data-slot": "button",
109
- className: e(H({
207
+ className: e(q({
110
208
  variant: n,
111
209
  size: r,
112
210
  className: t
@@ -118,54 +216,54 @@ function ie({ className: t, variant: n, size: r, asChild: i = !1, loading: a = !
118
216
  }
119
217
  //#endregion
120
218
  //#region src/components/ui/checkbox.tsx
121
- function ae({ className: t, ...n }) {
122
- return /* @__PURE__ */ v(w.Root, {
219
+ function me({ className: t, ...n }) {
220
+ return /* @__PURE__ */ v(C.Root, {
123
221
  "data-slot": "checkbox",
124
222
  className: e("peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50", t),
125
223
  ...n,
126
- children: /* @__PURE__ */ v(w.Indicator, {
224
+ children: /* @__PURE__ */ v(C.Indicator, {
127
225
  "data-slot": "checkbox-indicator",
128
226
  className: "grid place-content-center text-current transition-none",
129
- children: /* @__PURE__ */ v(P, { className: "size-3.5" })
227
+ children: /* @__PURE__ */ v(L, { className: "size-3.5" })
130
228
  })
131
229
  });
132
230
  }
133
231
  //#endregion
134
232
  //#region src/components/ui/dropdown-menu.tsx
135
- function oe({ ...e }) {
136
- return /* @__PURE__ */ v(T.Root, {
233
+ function he({ ...e }) {
234
+ return /* @__PURE__ */ v(w.Root, {
137
235
  "data-slot": "dropdown-menu",
138
236
  ...e
139
237
  });
140
238
  }
141
- function se({ ...e }) {
142
- return /* @__PURE__ */ v(T.Portal, {
239
+ function ge({ ...e }) {
240
+ return /* @__PURE__ */ v(w.Portal, {
143
241
  "data-slot": "dropdown-menu-portal",
144
242
  ...e
145
243
  });
146
244
  }
147
- function ce({ ...e }) {
148
- return /* @__PURE__ */ v(T.Trigger, {
245
+ function _e({ ...e }) {
246
+ return /* @__PURE__ */ v(w.Trigger, {
149
247
  "data-slot": "dropdown-menu-trigger",
150
248
  ...e
151
249
  });
152
250
  }
153
- function le({ className: t, sideOffset: n = 4, ...r }) {
154
- return /* @__PURE__ */ v(T.Portal, { children: /* @__PURE__ */ v(T.Content, {
251
+ function ve({ className: t, sideOffset: n = 4, ...r }) {
252
+ return /* @__PURE__ */ v(w.Portal, { children: /* @__PURE__ */ v(w.Content, {
155
253
  "data-slot": "dropdown-menu-content",
156
254
  sideOffset: n,
157
255
  className: e("bg-popover text-popover-foreground 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 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md", t),
158
256
  ...r
159
257
  }) });
160
258
  }
161
- function ue({ ...e }) {
162
- return /* @__PURE__ */ v(T.Group, {
259
+ function ye({ ...e }) {
260
+ return /* @__PURE__ */ v(w.Group, {
163
261
  "data-slot": "dropdown-menu-group",
164
262
  ...e
165
263
  });
166
264
  }
167
- function de({ className: t, inset: n, variant: r = "default", ...i }) {
168
- return /* @__PURE__ */ v(T.Item, {
265
+ function be({ className: t, inset: n, variant: r = "default", ...i }) {
266
+ return /* @__PURE__ */ v(w.Item, {
169
267
  "data-slot": "dropdown-menu-item",
170
268
  "data-inset": n,
171
269
  "data-variant": r,
@@ -173,74 +271,74 @@ function de({ className: t, inset: n, variant: r = "default", ...i }) {
173
271
  ...i
174
272
  });
175
273
  }
176
- function fe({ className: t, children: n, checked: r, ...i }) {
177
- return /* @__PURE__ */ y(T.CheckboxItem, {
274
+ function xe({ className: t, children: n, checked: r, ...i }) {
275
+ return /* @__PURE__ */ y(w.CheckboxItem, {
178
276
  "data-slot": "dropdown-menu-checkbox-item",
179
277
  className: e("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", t),
180
278
  checked: r,
181
279
  ...i,
182
280
  children: [/* @__PURE__ */ v("span", {
183
281
  className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center",
184
- children: /* @__PURE__ */ v(T.ItemIndicator, { children: /* @__PURE__ */ v(P, { className: "size-4" }) })
282
+ children: /* @__PURE__ */ v(w.ItemIndicator, { children: /* @__PURE__ */ v(L, { className: "size-4" }) })
185
283
  }), n]
186
284
  });
187
285
  }
188
- function pe({ ...e }) {
189
- return /* @__PURE__ */ v(T.RadioGroup, {
286
+ function Se({ ...e }) {
287
+ return /* @__PURE__ */ v(w.RadioGroup, {
190
288
  "data-slot": "dropdown-menu-radio-group",
191
289
  ...e
192
290
  });
193
291
  }
194
- function me({ className: t, children: n, ...r }) {
195
- return /* @__PURE__ */ y(T.RadioItem, {
292
+ function Ce({ className: t, children: n, ...r }) {
293
+ return /* @__PURE__ */ y(w.RadioItem, {
196
294
  "data-slot": "dropdown-menu-radio-item",
197
295
  className: e("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", t),
198
296
  ...r,
199
297
  children: [/* @__PURE__ */ v("span", {
200
298
  className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center",
201
- children: /* @__PURE__ */ v(T.ItemIndicator, { children: /* @__PURE__ */ v(L, { className: "size-2 fill-current" }) })
299
+ children: /* @__PURE__ */ v(w.ItemIndicator, { children: /* @__PURE__ */ v(se, { className: "size-2 fill-current" }) })
202
300
  }), n]
203
301
  });
204
302
  }
205
- function he({ className: t, inset: n, ...r }) {
206
- return /* @__PURE__ */ v(T.Label, {
303
+ function we({ className: t, inset: n, ...r }) {
304
+ return /* @__PURE__ */ v(w.Label, {
207
305
  "data-slot": "dropdown-menu-label",
208
306
  "data-inset": n,
209
307
  className: e("px-2 py-1.5 text-sm font-medium data-[inset]:pl-8", t),
210
308
  ...r
211
309
  });
212
310
  }
213
- function ge({ className: t, ...n }) {
214
- return /* @__PURE__ */ v(T.Separator, {
311
+ function Te({ className: t, ...n }) {
312
+ return /* @__PURE__ */ v(w.Separator, {
215
313
  "data-slot": "dropdown-menu-separator",
216
314
  className: e("bg-border -mx-1 my-1 h-px", t),
217
315
  ...n
218
316
  });
219
317
  }
220
- function _e({ className: t, ...n }) {
318
+ function Ee({ className: t, ...n }) {
221
319
  return /* @__PURE__ */ v("span", {
222
320
  "data-slot": "dropdown-menu-shortcut",
223
321
  className: e("text-muted-foreground ml-auto text-xs tracking-widest", t),
224
322
  ...n
225
323
  });
226
324
  }
227
- function ve({ ...e }) {
228
- return /* @__PURE__ */ v(T.Sub, {
325
+ function De({ ...e }) {
326
+ return /* @__PURE__ */ v(w.Sub, {
229
327
  "data-slot": "dropdown-menu-sub",
230
328
  ...e
231
329
  });
232
330
  }
233
- function ye({ className: t, inset: n, children: r, ...i }) {
234
- return /* @__PURE__ */ y(T.SubTrigger, {
331
+ function Oe({ className: t, inset: n, children: r, ...i }) {
332
+ return /* @__PURE__ */ y(w.SubTrigger, {
235
333
  "data-slot": "dropdown-menu-sub-trigger",
236
334
  "data-inset": n,
237
335
  className: e("focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", t),
238
336
  ...i,
239
- children: [r, /* @__PURE__ */ v(F, { className: "ml-auto size-4" })]
337
+ children: [r, /* @__PURE__ */ v(z, { className: "ml-auto size-4" })]
240
338
  });
241
339
  }
242
- function be({ className: t, ...n }) {
243
- return /* @__PURE__ */ v(T.SubContent, {
340
+ function ke({ className: t, ...n }) {
341
+ return /* @__PURE__ */ v(w.SubContent, {
244
342
  "data-slot": "dropdown-menu-sub-content",
245
343
  className: e("bg-popover text-popover-foreground 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 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg", t),
246
344
  ...n
@@ -248,53 +346,53 @@ function be({ className: t, ...n }) {
248
346
  }
249
347
  //#endregion
250
348
  //#region src/components/ui/icon-picker-dialog.tsx
251
- var U = [
349
+ var J = [
252
350
  "lucide",
253
351
  "tabler",
254
352
  "mdi",
255
353
  "ph",
256
354
  "solar",
257
355
  "heroicons"
258
- ], xe = U.join(",");
259
- async function W(e, t, n) {
356
+ ], Ae = J.join(",");
357
+ async function Y(e, t, n) {
260
358
  try {
261
- let r = await fetch(`https://api.iconify.design/search?query=${encodeURIComponent(e)}&limit=${t}&prefixes=${xe}`, { signal: n });
359
+ let r = await fetch(`https://api.iconify.design/search?query=${encodeURIComponent(e)}&limit=${t}&prefixes=${Ae}`, { signal: n });
262
360
  if (r.ok) return (await r.json()).icons ?? [];
263
361
  } catch {}
264
362
  return [];
265
363
  }
266
- function Se({ open: e, onOpenChange: t, value: c, onSelect: l, onClear: u, title: d, description: f, suggestKeywords: p }) {
267
- let { t: _ } = C(), [b, x] = g(""), [S, w] = g([]), [T, E] = g(!1), k = h(null), [A, j] = g(!1), [M, N] = g([]), P = h(0), [F, I] = g(null), L = ee(async (e, t) => {
268
- let n = ++P.current, r = () => n === P.current && !t.aborted;
364
+ function je({ open: e, onOpenChange: t, value: c, onSelect: l, onClear: u, title: d, description: f, suggestKeywords: p }) {
365
+ let { t: _ } = te(), [b, x] = g(""), [S, C] = g([]), [w, T] = g(!1), D = h(null), [O, k] = g(!1), [A, j] = g([]), M = h(0), [N, P] = g(null), F = ee(async (e, t) => {
366
+ let n = ++M.current, r = () => n === M.current && !t.aborted;
269
367
  if (!e.trim()) {
270
- w([]);
368
+ C([]);
271
369
  return;
272
370
  }
273
- E(!0);
371
+ T(!0);
274
372
  try {
275
- let n = await W(e, 60, t);
276
- r() && w(n);
373
+ let n = await Y(e, 60, t);
374
+ r() && C(n);
277
375
  } catch {
278
- r() && w([]);
376
+ r() && C([]);
279
377
  } finally {
280
- r() && E(!1);
378
+ r() && T(!1);
281
379
  }
282
380
  }, []);
283
381
  m(() => {
284
382
  let e = new AbortController();
285
- return k.current && clearTimeout(k.current), k.current = setTimeout(() => L(b, e.signal), 350), () => {
286
- k.current && clearTimeout(k.current), e.abort();
383
+ return D.current && clearTimeout(D.current), D.current = setTimeout(() => F(b, e.signal), 350), () => {
384
+ D.current && clearTimeout(D.current), e.abort();
287
385
  };
288
- }, [b, L]);
289
- let R = h(null);
290
- m(() => () => R.current?.abort(), []);
291
- function z(e) {
292
- l(e), t(!1), x(""), w([]), N([]), I(null);
386
+ }, [b, F]);
387
+ let I = h(null);
388
+ m(() => () => I.current?.abort(), []);
389
+ function L(e) {
390
+ l(e), t(!1), x(""), C([]), j([]), P(null);
293
391
  }
294
- async function B() {
295
- if (!p || A) return;
392
+ async function R() {
393
+ if (!p || O) return;
296
394
  let e = new AbortController();
297
- R.current = e, j(!0), N([]), I(null);
395
+ I.current = e, k(!0), j([]), P(null);
298
396
  try {
299
397
  let t = (await p({
300
398
  title: d,
@@ -304,17 +402,17 @@ function Se({ open: e, onOpenChange: t, value: c, onSelect: l, onClear: u, title
304
402
  if (e.signal.aborted) return;
305
403
  n.push({
306
404
  keyword: r.trim(),
307
- icons: await W(r.trim(), 30, e.signal)
405
+ icons: await Y(r.trim(), 30, e.signal)
308
406
  });
309
407
  }
310
- e.signal.aborted || N(n);
408
+ e.signal.aborted || j(n);
311
409
  } catch {
312
- e.signal.aborted || N([]);
410
+ e.signal.aborted || j([]);
313
411
  } finally {
314
- e.signal.aborted || j(!1);
412
+ e.signal.aborted || k(!1);
315
413
  }
316
414
  }
317
- let V = F ? M.find((e) => e.keyword === F)?.icons ?? [] : M.flatMap((e) => e.icons.slice(0, 3)), H = !!p && !!(d?.trim() ?? f?.trim());
415
+ let z = N ? A.find((e) => e.keyword === N)?.icons ?? [] : A.flatMap((e) => e.icons.slice(0, 3)), B = !!p && !!(d?.trim() ?? f?.trim());
318
416
  return /* @__PURE__ */ v(r, {
319
417
  open: e,
320
418
  onOpenChange: t,
@@ -326,36 +424,36 @@ function Se({ open: e, onOpenChange: t, value: c, onSelect: l, onClear: u, title
326
424
  className: "flex gap-2",
327
425
  children: [/* @__PURE__ */ y("div", {
328
426
  className: "relative flex-1",
329
- children: [/* @__PURE__ */ v(ne, { className: "absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground" }), /* @__PURE__ */ v(n, {
427
+ children: [/* @__PURE__ */ v(re, { className: "absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground" }), /* @__PURE__ */ v(n, {
330
428
  value: b,
331
429
  onChange: (e) => x(e.target.value),
332
430
  placeholder: _("forms.iconPicker.searchIcons", { defaultValue: "Search icons" }),
333
431
  className: "pl-9",
334
432
  autoFocus: !0
335
433
  })]
336
- }), H && /* @__PURE__ */ y(a, {
434
+ }), B && /* @__PURE__ */ y(a, {
337
435
  type: "button",
338
436
  size: "sm",
339
437
  variant: "outline",
340
- onClick: B,
341
- disabled: A,
438
+ onClick: R,
439
+ disabled: O,
342
440
  className: "shrink-0 gap-1.5",
343
- children: [A ? /* @__PURE__ */ v(te, { className: "size-4 animate-spin" }) : /* @__PURE__ */ v(D, { className: "size-4" }), _("forms.iconPicker.aiSuggest", { defaultValue: "Suggest" })]
441
+ children: [O ? /* @__PURE__ */ v(ne, { className: "size-4 animate-spin" }) : /* @__PURE__ */ v(ie, { className: "size-4" }), _("forms.iconPicker.aiSuggest", { defaultValue: "Suggest" })]
344
442
  })]
345
443
  }),
346
- M.length > 0 && /* @__PURE__ */ y("div", {
444
+ A.length > 0 && /* @__PURE__ */ y("div", {
347
445
  className: "rounded-lg border border-[var(--vg-accent-line)] bg-[var(--vg-accent-surface)] p-3",
348
446
  children: [
349
447
  /* @__PURE__ */ y("div", {
350
448
  className: "mb-2 flex items-center gap-1.5 text-xs font-medium vg-accent-text",
351
- children: [/* @__PURE__ */ v(D, { className: "size-3.5" }), _("forms.iconPicker.aiSuggestions", { defaultValue: "Suggestions" })]
449
+ children: [/* @__PURE__ */ v(ie, { className: "size-3.5" }), _("forms.iconPicker.aiSuggestions", { defaultValue: "Suggestions" })]
352
450
  }),
353
451
  /* @__PURE__ */ v("div", {
354
452
  className: "mb-3 flex flex-wrap gap-1.5",
355
- children: M.map((e) => /* @__PURE__ */ y("button", {
453
+ children: A.map((e) => /* @__PURE__ */ y("button", {
356
454
  type: "button",
357
- onClick: () => I(F === e.keyword ? null : e.keyword),
358
- className: `cursor-pointer rounded-full px-3 py-1 text-xs font-medium transition-all ${F === e.keyword ? "vg-accent-solid text-white" : "bg-[var(--vg-accent-surface)] text-[var(--vg-accent-fg)] hover:bg-[var(--vg-accent-surface-strong)]"}`,
455
+ onClick: () => P(N === e.keyword ? null : e.keyword),
456
+ className: `cursor-pointer rounded-full px-3 py-1 text-xs font-medium transition-all ${N === e.keyword ? "vg-accent-solid text-white" : "bg-[var(--vg-accent-surface)] text-[var(--vg-accent-fg)] hover:bg-[var(--vg-accent-surface-strong)]"}`,
359
457
  children: [e.keyword, /* @__PURE__ */ v("span", {
360
458
  className: "ml-1 opacity-60",
361
459
  children: e.icons.length
@@ -364,12 +462,12 @@ function Se({ open: e, onOpenChange: t, value: c, onSelect: l, onClear: u, title
364
462
  }),
365
463
  /* @__PURE__ */ v("div", {
366
464
  className: "flex max-h-60 flex-wrap gap-2 overflow-y-auto",
367
- children: V.map((e) => /* @__PURE__ */ y("button", {
465
+ children: z.map((e) => /* @__PURE__ */ y("button", {
368
466
  type: "button",
369
- onClick: () => z(e),
467
+ onClick: () => L(e),
370
468
  className: `flex cursor-pointer flex-col items-center gap-1 rounded-lg p-2 transition-all hover:bg-[var(--vg-accent-surface)] ${c === e ? "border border-[var(--vg-accent-line)] bg-[var(--vg-accent-surface-strong)] vg-accent-text" : "border border-[var(--vg-accent-line)]"}`,
371
469
  title: e,
372
- children: [/* @__PURE__ */ v(O, {
470
+ children: [/* @__PURE__ */ v(E, {
373
471
  icon: e,
374
472
  className: "size-7"
375
473
  }), /* @__PURE__ */ v("span", {
@@ -383,23 +481,23 @@ function Se({ open: e, onOpenChange: t, value: c, onSelect: l, onClear: u, title
383
481
  /* @__PURE__ */ y("div", {
384
482
  className: "max-h-[400px] min-h-[200px] flex-1 overflow-y-auto",
385
483
  children: [
386
- T && /* @__PURE__ */ v("div", {
484
+ w && /* @__PURE__ */ v("div", {
387
485
  className: "flex h-32 items-center justify-center text-sm text-muted-foreground",
388
486
  children: _("forms.iconPicker.searching", { defaultValue: "Searching…" })
389
487
  }),
390
- !T && b && S.length === 0 && /* @__PURE__ */ v("div", {
488
+ !w && b && S.length === 0 && /* @__PURE__ */ v("div", {
391
489
  className: "flex h-32 items-center justify-center text-sm text-muted-foreground",
392
490
  children: _("forms.iconPicker.noIconsFound", {
393
491
  query: b,
394
492
  defaultValue: "No icons found for “{{query}}”"
395
493
  })
396
494
  }),
397
- !T && !b && S.length === 0 && M.length === 0 && /* @__PURE__ */ y("div", {
495
+ !w && !b && S.length === 0 && A.length === 0 && /* @__PURE__ */ y("div", {
398
496
  className: "flex h-32 flex-col items-center justify-center gap-2 px-4 text-center text-sm text-muted-foreground",
399
497
  children: [/* @__PURE__ */ v("span", { children: _("forms.iconPicker.typeToSearch", {
400
- count: U.length,
498
+ count: J.length,
401
499
  defaultValue: "Type to search {{count}} icon collections"
402
- }) }), H && /* @__PURE__ */ v("span", {
500
+ }) }), B && /* @__PURE__ */ v("span", {
403
501
  className: "text-xs leading-relaxed",
404
502
  children: _("forms.iconPicker.orClickAi", { defaultValue: "…or let the title and description suggest some" })
405
503
  })]
@@ -408,10 +506,10 @@ function Se({ open: e, onOpenChange: t, value: c, onSelect: l, onClear: u, title
408
506
  className: "grid grid-cols-6 gap-1.5 p-1",
409
507
  children: S.map((e) => /* @__PURE__ */ y("button", {
410
508
  type: "button",
411
- onClick: () => z(e),
509
+ onClick: () => L(e),
412
510
  className: `flex cursor-pointer flex-col items-center justify-center gap-1 rounded-lg p-2 transition-all hover:bg-muted ${c === e ? "border border-[var(--vg-accent-line)] bg-[var(--vg-accent-surface)] vg-accent-text" : "border border-transparent hover:border-border"}`,
413
511
  title: e,
414
- children: [/* @__PURE__ */ v(O, {
512
+ children: [/* @__PURE__ */ v(E, {
415
513
  icon: e,
416
514
  className: "size-6"
417
515
  }), /* @__PURE__ */ v("span", {
@@ -426,7 +524,7 @@ function Se({ open: e, onOpenChange: t, value: c, onSelect: l, onClear: u, title
426
524
  className: "flex items-center justify-between border-t pt-2",
427
525
  children: [/* @__PURE__ */ y("div", {
428
526
  className: "flex items-center gap-2",
429
- children: [/* @__PURE__ */ v(O, {
527
+ children: [/* @__PURE__ */ v(E, {
430
528
  icon: c,
431
529
  className: "size-5"
432
530
  }), /* @__PURE__ */ v("span", {
@@ -442,7 +540,7 @@ function Se({ open: e, onOpenChange: t, value: c, onSelect: l, onClear: u, title
442
540
  onClick: () => {
443
541
  u(), t(!1);
444
542
  },
445
- children: [/* @__PURE__ */ v(re, { className: "size-4" }), _("forms.common.remove", { defaultValue: "Remove" })]
543
+ children: [/* @__PURE__ */ v(ae, { className: "size-4" }), _("forms.common.remove", { defaultValue: "Remove" })]
446
544
  }), /* @__PURE__ */ v(a, {
447
545
  size: "sm",
448
546
  type: "button",
@@ -457,20 +555,20 @@ function Se({ open: e, onOpenChange: t, value: c, onSelect: l, onClear: u, title
457
555
  }
458
556
  //#endregion
459
557
  //#region src/components/ui/popover.tsx
460
- function Ce({ ...e }) {
461
- return /* @__PURE__ */ v(k.Root, {
558
+ function Me({ ...e }) {
559
+ return /* @__PURE__ */ v(D.Root, {
462
560
  "data-slot": "popover",
463
561
  ...e
464
562
  });
465
563
  }
466
- function we({ ...e }) {
467
- return /* @__PURE__ */ v(k.Trigger, {
564
+ function Ne({ ...e }) {
565
+ return /* @__PURE__ */ v(D.Trigger, {
468
566
  "data-slot": "popover-trigger",
469
567
  ...e
470
568
  });
471
569
  }
472
- function Te({ className: t, align: n = "center", sideOffset: r = 4, ...i }) {
473
- return /* @__PURE__ */ v(k.Portal, { children: /* @__PURE__ */ v(k.Content, {
570
+ function Pe({ className: t, align: n = "center", sideOffset: r = 4, ...i }) {
571
+ return /* @__PURE__ */ v(D.Portal, { children: /* @__PURE__ */ v(D.Content, {
474
572
  "data-slot": "popover-content",
475
573
  align: n,
476
574
  sideOffset: r,
@@ -478,27 +576,27 @@ function Te({ className: t, align: n = "center", sideOffset: r = 4, ...i }) {
478
576
  ...i
479
577
  }) });
480
578
  }
481
- function Ee({ ...e }) {
482
- return /* @__PURE__ */ v(k.Anchor, {
579
+ function Fe({ ...e }) {
580
+ return /* @__PURE__ */ v(D.Anchor, {
483
581
  "data-slot": "popover-anchor",
484
582
  ...e
485
583
  });
486
584
  }
487
- function De({ className: t, ...n }) {
585
+ function Ie({ className: t, ...n }) {
488
586
  return /* @__PURE__ */ v("div", {
489
587
  "data-slot": "popover-header",
490
588
  className: e("flex flex-col gap-1 text-sm", t),
491
589
  ...n
492
590
  });
493
591
  }
494
- function Oe({ className: t, ...n }) {
592
+ function Le({ className: t, ...n }) {
495
593
  return /* @__PURE__ */ v("div", {
496
594
  "data-slot": "popover-title",
497
595
  className: e("font-medium", t),
498
596
  ...n
499
597
  });
500
598
  }
501
- function ke({ className: t, ...n }) {
599
+ function Re({ className: t, ...n }) {
502
600
  return /* @__PURE__ */ v("p", {
503
601
  "data-slot": "popover-description",
504
602
  className: e("text-muted-foreground", t),
@@ -506,8 +604,36 @@ function ke({ className: t, ...n }) {
506
604
  });
507
605
  }
508
606
  //#endregion
607
+ //#region src/components/ui/resizable.tsx
608
+ function ze({ className: t, ...n }) {
609
+ return /* @__PURE__ */ v(O, {
610
+ "data-slot": "resizable-panel-group",
611
+ className: e("flex h-full w-full", t),
612
+ ...n
613
+ });
614
+ }
615
+ function Be({ overflowHidden: t, className: n, ...r }) {
616
+ return /* @__PURE__ */ v(k, {
617
+ "data-slot": "resizable-panel",
618
+ className: e(t && "[&>div]:overflow-hidden!", n),
619
+ style: t ? { overflow: "hidden" } : void 0,
620
+ ...r
621
+ });
622
+ }
623
+ function Ve({ withHandle: t, className: n, ...r }) {
624
+ return /* @__PURE__ */ v(A, {
625
+ "data-slot": "resizable-handle",
626
+ className: e("bg-border focus-visible:ring-ring relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:-left-2 after:-right-2 focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:outline-hidden", "[&[aria-orientation=horizontal]]:h-px [&[aria-orientation=horizontal]]:w-full [&[aria-orientation=horizontal]]:after:inset-x-0 [&[aria-orientation=horizontal]]:after:-top-2 [&[aria-orientation=horizontal]]:after:-bottom-2 [&[aria-orientation=horizontal]>div]:rotate-90", n),
627
+ ...r,
628
+ children: t && /* @__PURE__ */ v("div", {
629
+ className: "bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border",
630
+ children: /* @__PURE__ */ v(ce, { className: "size-2.5" })
631
+ })
632
+ });
633
+ }
634
+ //#endregion
509
635
  //#region src/components/ui/section-card.tsx
510
- var G = {
636
+ var X = {
511
637
  blue: {
512
638
  color: "text-blue-600 dark:text-blue-400",
513
639
  bg: "from-blue-500/10 to-indigo-500/10 dark:from-blue-500/20 dark:to-indigo-500/20",
@@ -548,14 +674,14 @@ var G = {
548
674
  bg: "from-slate-500/10 to-gray-500/10 dark:from-slate-500/20 dark:to-gray-500/20",
549
675
  ring: "ring-slate-500/10 dark:ring-slate-400/10"
550
676
  }
551
- }, K = f({
677
+ }, Z = f({
552
678
  open: !0,
553
679
  toggle: () => {},
554
680
  variant: "blue"
555
681
  });
556
- function q({ variant: t = "blue", defaultOpen: n = !0, children: r, className: i }) {
682
+ function Q({ variant: t = "blue", defaultOpen: n = !0, children: r, className: i }) {
557
683
  let [a, o] = g(n);
558
- return /* @__PURE__ */ v(K.Provider, {
684
+ return /* @__PURE__ */ v(Z.Provider, {
559
685
  value: {
560
686
  open: a,
561
687
  toggle: () => o((e) => !e),
@@ -567,8 +693,8 @@ function q({ variant: t = "blue", defaultOpen: n = !0, children: r, className: i
567
693
  })
568
694
  });
569
695
  }
570
- function Ae({ icon: t, title: n, description: r, className: i }) {
571
- let { open: a, toggle: o, variant: s } = p(K), c = G[s];
696
+ function He({ icon: t, title: n, description: r, className: i }) {
697
+ let { open: a, toggle: o, variant: s } = p(Z), c = X[s];
572
698
  return /* @__PURE__ */ y("button", {
573
699
  type: "button",
574
700
  onClick: o,
@@ -588,12 +714,12 @@ function Ae({ icon: t, title: n, description: r, className: i }) {
588
714
  children: r
589
715
  })]
590
716
  }),
591
- /* @__PURE__ */ v(E, { className: e("ml-auto size-4 text-muted-foreground shrink-0 transition-transform duration-200", a && "rotate-180") })
717
+ /* @__PURE__ */ v(T, { className: e("ml-auto size-4 text-muted-foreground shrink-0 transition-transform duration-200", a && "rotate-180") })
592
718
  ]
593
719
  });
594
720
  }
595
- function je({ icon: t, title: n, description: r, className: i }) {
596
- let { variant: a } = p(K), o = G[a];
721
+ function Ue({ icon: t, title: n, description: r, className: i }) {
722
+ let { variant: a } = p(Z), o = X[a];
597
723
  return /* @__PURE__ */ y("div", {
598
724
  className: e("flex items-center gap-3 px-5 py-4 bg-muted/40 border-b", i),
599
725
  children: [/* @__PURE__ */ v("div", {
@@ -611,63 +737,76 @@ function je({ icon: t, title: n, description: r, className: i }) {
611
737
  })]
612
738
  });
613
739
  }
614
- function Me({ children: t, className: n }) {
615
- let { open: r } = p(K);
740
+ function We({ children: t, className: n }) {
741
+ let { open: r } = p(Z);
616
742
  return r ? /* @__PURE__ */ v("div", {
617
743
  className: e("p-5 space-y-6", n),
618
744
  children: t
619
745
  }) : null;
620
746
  }
621
- q.Header = Ae, q.StaticHeader = je, q.Content = Me;
747
+ Q.Header = He, Q.StaticHeader = Ue, Q.Content = We;
622
748
  //#endregion
623
749
  //#region src/components/ui/tooltip.tsx
624
- var J = u.createContext(!1);
625
- function Y({ delayDuration: e = 0, ...t }) {
626
- return /* @__PURE__ */ v(J, {
750
+ var Ge = u.createContext(!1);
751
+ function Ke({ delayDuration: e = 0, ...t }) {
752
+ return /* @__PURE__ */ v(Ge, {
627
753
  value: !0,
628
- children: /* @__PURE__ */ v(A.Provider, {
754
+ children: /* @__PURE__ */ v(j.Provider, {
629
755
  "data-slot": "tooltip-provider",
630
756
  delayDuration: e,
631
757
  ...t
632
758
  })
633
759
  });
634
760
  }
635
- function Ne({ ...e }) {
636
- let t = u.useContext(J), n = /* @__PURE__ */ v(A.Root, {
761
+ function qe({ ...e }) {
762
+ let t = u.useContext(Ge), n = /* @__PURE__ */ v(j.Root, {
637
763
  "data-slot": "tooltip",
638
764
  ...e
639
765
  });
640
- return t ? n : /* @__PURE__ */ v(Y, { children: n });
766
+ return t ? n : /* @__PURE__ */ v(Ke, { children: n });
641
767
  }
642
- function X({ ...e }) {
643
- return /* @__PURE__ */ v(A.Trigger, {
768
+ function Je({ ...e }) {
769
+ return /* @__PURE__ */ v(j.Trigger, {
644
770
  "data-slot": "tooltip-trigger",
645
771
  ...e
646
772
  });
647
773
  }
648
- function Pe({ className: t, sideOffset: n = 0, children: r, ...i }) {
649
- return /* @__PURE__ */ v(A.Portal, { children: /* @__PURE__ */ y(A.Content, {
774
+ function Ye({ className: t, sideOffset: n = 0, children: r, ...i }) {
775
+ return /* @__PURE__ */ v(j.Portal, { children: /* @__PURE__ */ y(j.Content, {
650
776
  "data-slot": "tooltip-content",
651
777
  sideOffset: n,
652
778
  className: e("bg-foreground text-background 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 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance", t),
653
779
  ...i,
654
- children: [r, /* @__PURE__ */ v(A.Arrow, { className: "bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" })]
780
+ children: [r, /* @__PURE__ */ v(j.Arrow, { className: "bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" })]
655
781
  }) });
656
782
  }
657
783
  //#endregion
784
+ //#region src/hooks/use-mobile.ts
785
+ var Xe = "(max-width: 767px)";
786
+ function Ze() {
787
+ return window.matchMedia(Xe);
788
+ }
789
+ function Qe(e) {
790
+ let t = Ze();
791
+ return t.addEventListener("change", e), () => t.removeEventListener("change", e);
792
+ }
793
+ function $e() {
794
+ return u.useSyncExternalStore(Qe, () => Ze().matches, () => !1);
795
+ }
796
+ //#endregion
658
797
  //#region src/components/ui/sonner.tsx
659
- var Fe = ({ ...e }) => {
660
- let { theme: t = "system" } = j(), { t: n } = C();
661
- return /* @__PURE__ */ v(M, {
798
+ var et = ({ ...e }) => {
799
+ let { theme: t = "system" } = M(), { t: n } = te();
800
+ return /* @__PURE__ */ v(N, {
662
801
  theme: t,
663
802
  className: "toaster group",
664
803
  containerAriaLabel: n("common.notifications", { defaultValue: "Notifications" }),
665
804
  icons: {
666
- success: /* @__PURE__ */ v(I, { className: "size-4" }),
667
- info: /* @__PURE__ */ v(R, { className: "size-4" }),
668
- warning: /* @__PURE__ */ v(V, { className: "size-4" }),
669
- error: /* @__PURE__ */ v(B, { className: "size-4" }),
670
- loading: /* @__PURE__ */ v(z, { className: "size-4 animate-spin" })
805
+ success: /* @__PURE__ */ v(oe, { className: "size-4" }),
806
+ info: /* @__PURE__ */ v(le, { className: "size-4" }),
807
+ warning: /* @__PURE__ */ v(fe, { className: "size-4" }),
808
+ error: /* @__PURE__ */ v(de, { className: "size-4" }),
809
+ loading: /* @__PURE__ */ v(ue, { className: "size-4 animate-spin" })
671
810
  },
672
811
  style: {
673
812
  "--normal-bg": "var(--vg-popover)",
@@ -679,8 +818,38 @@ var Fe = ({ ...e }) => {
679
818
  });
680
819
  };
681
820
  //#endregion
821
+ //#region src/components/ui/tabs.tsx
822
+ function tt({ className: t, ...n }) {
823
+ return /* @__PURE__ */ v(F.Root, {
824
+ "data-slot": "tabs",
825
+ className: e("flex flex-col gap-2", t),
826
+ ...n
827
+ });
828
+ }
829
+ function nt({ className: t, ...n }) {
830
+ return /* @__PURE__ */ v(F.List, {
831
+ "data-slot": "tabs-list",
832
+ className: e("bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]", t),
833
+ ...n
834
+ });
835
+ }
836
+ function rt({ className: t, ...n }) {
837
+ return /* @__PURE__ */ v(F.Trigger, {
838
+ "data-slot": "tabs-trigger",
839
+ className: e("data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", t),
840
+ ...n
841
+ });
842
+ }
843
+ function it({ className: t, ...n }) {
844
+ return /* @__PURE__ */ v(F.Content, {
845
+ "data-slot": "tabs-content",
846
+ className: e("flex-1 outline-none", t),
847
+ ...n
848
+ });
849
+ }
850
+ //#endregion
682
851
  //#region src/components/ui/user-avatar.tsx
683
- function Z({ givenName: e, familyName: t, name: n }) {
852
+ function at({ givenName: e, familyName: t, name: n }) {
684
853
  let r = (e ?? "").trim(), i = (t ?? "").trim();
685
854
  if (r || i) {
686
855
  let e = r ? r[0] : "", t = i.split(/\s+/).filter(Boolean), n = `${e}${t.length > 0 ? t[t.length - 1][0] : ""}`.toUpperCase();
@@ -693,8 +862,8 @@ function Z({ givenName: e, familyName: t, name: n }) {
693
862
  }
694
863
  return "U";
695
864
  }
696
- function Ie({ className: t, givenName: n, familyName: r, name: i, src: a, alt: o, children: s, ...c }) {
697
- let l = Z({
865
+ function ot({ className: t, givenName: n, familyName: r, name: i, src: a, alt: o, children: s, ...c }) {
866
+ let l = at({
698
867
  givenName: n,
699
868
  familyName: r,
700
869
  name: i
@@ -718,14 +887,14 @@ function Ie({ className: t, givenName: n, familyName: r, name: i, src: a, alt: o
718
887
  }
719
888
  //#endregion
720
889
  //#region src/lib/corner-slot.ts
721
- var Q = f(!1);
722
- function Le() {
723
- return p(Q);
890
+ var st = f(!1);
891
+ function ct() {
892
+ return p(st);
724
893
  }
725
894
  //#endregion
726
895
  //#region src/contexts/user.context.tsx
727
896
  var $ = d.createContext(null);
728
- function Re({ children: e, fetchUser: t }) {
897
+ function lt({ children: e, fetchUser: t }) {
729
898
  let [n, r] = d.useState({}), [i, a] = d.useState("loading"), [o, s] = d.useState(null), c = d.useRef(0), l = d.useCallback(() => {
730
899
  let e = ++c.current;
731
900
  t().then((t) => {
@@ -753,10 +922,10 @@ function Re({ children: e, fetchUser: t }) {
753
922
  children: e
754
923
  });
755
924
  }
756
- function ze() {
925
+ function ut() {
757
926
  let e = d.useContext($);
758
927
  if (!e) throw Error("useCurrentUser must be used within UserProvider");
759
928
  return e;
760
929
  }
761
930
  //#endregion
762
- export { pe as A, H as B, oe as C, de as D, ue as E, be as F, P as H, ye as I, ce as L, ge as M, _e as N, he as O, ve as P, ae as R, Se as S, le as T, F as V, Te as _, Ie as a, Oe as b, N as c, Y as d, X as f, Ee as g, Ce as h, Le as i, me as j, se as k, Ne as l, G as m, ze as n, Z as o, q as p, Q as r, Fe as s, Re as t, Pe as u, ke as v, fe as w, we as x, De as y, ie as z };
931
+ export { je as A, Te as B, Me as C, Ie as D, Re as E, be as F, _e as G, De as H, we as I, q as J, me as K, ge as L, xe as M, ve as N, Le as O, ye as P, Se as R, ze as S, Pe as T, ke as U, Ee as V, Oe as W, L as X, z as Y, Je as _, ot as a, Ve as b, it as c, et as d, P as f, Ke as g, Ye as h, ct as i, he as j, Ne as k, nt as l, qe as m, ut as n, at as o, $e as p, pe as q, st as r, tt as s, lt as t, rt as u, Q as v, Fe as w, Be as x, X as y, Ce as z };