@mesob/ui 0.2.0 → 0.2.1

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 (74) hide show
  1. package/dist/components/alert-dialog.js +22 -22
  2. package/dist/components/alert-dialog.js.map +1 -1
  3. package/dist/components/alert.js +1 -1
  4. package/dist/components/alert.js.map +1 -1
  5. package/dist/components/animated-tabs.js +1 -1
  6. package/dist/components/animated-tabs.js.map +1 -1
  7. package/dist/components/app-header-actions.js +118 -103
  8. package/dist/components/app-header-actions.js.map +1 -1
  9. package/dist/components/app-sidebar.js +69 -69
  10. package/dist/components/app-sidebar.js.map +1 -1
  11. package/dist/components/button-group.js +1 -1
  12. package/dist/components/button-group.js.map +1 -1
  13. package/dist/components/button.d.ts +6 -3
  14. package/dist/components/button.js +16 -8
  15. package/dist/components/button.js.map +1 -1
  16. package/dist/components/calendar.js +24 -16
  17. package/dist/components/calendar.js.map +1 -1
  18. package/dist/components/card.js +1 -1
  19. package/dist/components/card.js.map +1 -1
  20. package/dist/components/carousel.js +28 -20
  21. package/dist/components/carousel.js.map +1 -1
  22. package/dist/components/command.js +5 -5
  23. package/dist/components/command.js.map +1 -1
  24. package/dist/components/context-menu.js +2 -2
  25. package/dist/components/context-menu.js.map +1 -1
  26. package/dist/components/data-table/index.js +162 -153
  27. package/dist/components/data-table/index.js.map +1 -1
  28. package/dist/components/dialog.js +2 -2
  29. package/dist/components/dialog.js.map +1 -1
  30. package/dist/components/drawer.js +2 -2
  31. package/dist/components/drawer.js.map +1 -1
  32. package/dist/components/dropdown-menu.js +2 -2
  33. package/dist/components/dropdown-menu.js.map +1 -1
  34. package/dist/components/entity/index.js +261 -256
  35. package/dist/components/entity/index.js.map +1 -1
  36. package/dist/components/hover-card.js +1 -1
  37. package/dist/components/hover-card.js.map +1 -1
  38. package/dist/components/input-group.js +27 -19
  39. package/dist/components/input-group.js.map +1 -1
  40. package/dist/components/item.d.ts +1 -1
  41. package/dist/components/menubar.js +3 -3
  42. package/dist/components/menubar.js.map +1 -1
  43. package/dist/components/navigation-menu.js +1 -1
  44. package/dist/components/navigation-menu.js.map +1 -1
  45. package/dist/components/page/index.js +36 -28
  46. package/dist/components/page/index.js.map +1 -1
  47. package/dist/components/pagination.js +20 -20
  48. package/dist/components/pagination.js.map +1 -1
  49. package/dist/components/popover.js +1 -1
  50. package/dist/components/popover.js.map +1 -1
  51. package/dist/components/section/index.js +29 -21
  52. package/dist/components/section/index.js.map +1 -1
  53. package/dist/components/select.js +1 -1
  54. package/dist/components/select.js.map +1 -1
  55. package/dist/components/sheet.js +2 -2
  56. package/dist/components/sheet.js.map +1 -1
  57. package/dist/components/shell.js +44 -36
  58. package/dist/components/shell.js.map +1 -1
  59. package/dist/components/sidebar.js +83 -75
  60. package/dist/components/sidebar.js.map +1 -1
  61. package/dist/components/spotlight-search.js +67 -59
  62. package/dist/components/spotlight-search.js.map +1 -1
  63. package/dist/components/theme-toggle.js +21 -13
  64. package/dist/components/theme-toggle.js.map +1 -1
  65. package/dist/hooks/use-translation.js +3 -2
  66. package/dist/hooks/use-translation.js.map +1 -1
  67. package/dist/index.d.ts +1 -0
  68. package/dist/index.js +94 -1
  69. package/dist/index.js.map +1 -1
  70. package/dist/lib/theme-schema.d.ts +21 -0
  71. package/dist/lib/theme-schema.js +95 -0
  72. package/dist/lib/theme-schema.js.map +1 -0
  73. package/package.json +2 -5
  74. package/src/styles/globals.css +0 -130
@@ -12,18 +12,18 @@ function cn(...inputs) {
12
12
  // src/components/button.tsx
13
13
  import { Slot } from "@radix-ui/react-slot";
14
14
  import { cva } from "class-variance-authority";
15
- import { jsx } from "react/jsx-runtime";
15
+ import { jsxs } from "react/jsx-runtime";
16
16
  var buttonVariants = cva(
17
17
  "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all 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",
18
18
  {
19
19
  variants: {
20
20
  variant: {
21
- default: "bg-primary text-primary-foreground hover:bg-primary/90",
22
- destructive: "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
23
- outline: "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
24
- secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
21
+ default: "bg-primary text-primary-foreground hover:bg-primary-600 dark:hover:bg-primary-400",
22
+ destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40",
23
+ outline: "border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
24
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary-600 dark:hover:bg-secondary-400",
25
25
  ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
26
- link: "text-primary underline-offset-4 hover:underline"
26
+ link: "text-primary underline-offset-4 hover:text-primary-600 dark:hover:text-primary-400 hover:underline"
27
27
  },
28
28
  size: {
29
29
  default: "h-9 px-4 py-2 has-[>svg]:px-3",
@@ -45,47 +45,55 @@ function Button({
45
45
  variant,
46
46
  size,
47
47
  asChild = false,
48
+ leftIcon,
49
+ rightIcon,
50
+ children,
48
51
  ...props
49
52
  }) {
50
53
  const Comp = asChild ? Slot : "button";
51
- return /* @__PURE__ */ jsx(
54
+ return /* @__PURE__ */ jsxs(
52
55
  Comp,
53
56
  {
54
57
  "data-slot": "button",
55
58
  className: cn(buttonVariants({ variant, size, className })),
56
- ...props
59
+ ...props,
60
+ children: [
61
+ leftIcon,
62
+ children,
63
+ rightIcon
64
+ ]
57
65
  }
58
66
  );
59
67
  }
60
68
 
61
69
  // src/components/alert-dialog.tsx
62
70
  import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
63
- import { jsx as jsx2, jsxs } from "react/jsx-runtime";
71
+ import { jsx, jsxs as jsxs2 } from "react/jsx-runtime";
64
72
  function AlertDialog({
65
73
  ...props
66
74
  }) {
67
- return /* @__PURE__ */ jsx2(AlertDialogPrimitive.Root, { "data-slot": "alert-dialog", ...props });
75
+ return /* @__PURE__ */ jsx(AlertDialogPrimitive.Root, { "data-slot": "alert-dialog", ...props });
68
76
  }
69
77
  function AlertDialogTrigger({
70
78
  ...props
71
79
  }) {
72
- return /* @__PURE__ */ jsx2(AlertDialogPrimitive.Trigger, { "data-slot": "alert-dialog-trigger", ...props });
80
+ return /* @__PURE__ */ jsx(AlertDialogPrimitive.Trigger, { "data-slot": "alert-dialog-trigger", ...props });
73
81
  }
74
82
  function AlertDialogPortal({
75
83
  ...props
76
84
  }) {
77
- return /* @__PURE__ */ jsx2(AlertDialogPrimitive.Portal, { "data-slot": "alert-dialog-portal", ...props });
85
+ return /* @__PURE__ */ jsx(AlertDialogPrimitive.Portal, { "data-slot": "alert-dialog-portal", ...props });
78
86
  }
79
87
  function AlertDialogOverlay({
80
88
  className,
81
89
  ...props
82
90
  }) {
83
- return /* @__PURE__ */ jsx2(
91
+ return /* @__PURE__ */ jsx(
84
92
  AlertDialogPrimitive.Overlay,
85
93
  {
86
94
  "data-slot": "alert-dialog-overlay",
87
95
  className: cn(
88
- "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",
96
+ "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=open]:opacity-100 fixed inset-0 z-50 bg-[var(--overlay,oklch(0_0_0/0.5))]",
89
97
  className
90
98
  ),
91
99
  ...props
@@ -96,14 +104,14 @@ function AlertDialogContent({
96
104
  className,
97
105
  ...props
98
106
  }) {
99
- return /* @__PURE__ */ jsxs(AlertDialogPortal, { children: [
100
- /* @__PURE__ */ jsx2(AlertDialogOverlay, {}),
101
- /* @__PURE__ */ jsx2(
107
+ return /* @__PURE__ */ jsxs2(AlertDialogPortal, { children: [
108
+ /* @__PURE__ */ jsx(AlertDialogOverlay, {}),
109
+ /* @__PURE__ */ jsx(
102
110
  AlertDialogPrimitive.Content,
103
111
  {
104
112
  "data-slot": "alert-dialog-content",
105
113
  className: cn(
106
- "bg-background 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 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",
114
+ "bg-background text-foreground border-border 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 fixed top-[50%] left-[50%] z-[51] grid w-full min-w-[280px] max-w-[calc(100vw-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:min-w-[320px] sm:max-w-[32rem]",
107
115
  className
108
116
  ),
109
117
  ...props
@@ -115,7 +123,7 @@ function AlertDialogHeader({
115
123
  className,
116
124
  ...props
117
125
  }) {
118
- return /* @__PURE__ */ jsx2(
126
+ return /* @__PURE__ */ jsx(
119
127
  "div",
120
128
  {
121
129
  "data-slot": "alert-dialog-header",
@@ -128,7 +136,7 @@ function AlertDialogFooter({
128
136
  className,
129
137
  ...props
130
138
  }) {
131
- return /* @__PURE__ */ jsx2(
139
+ return /* @__PURE__ */ jsx(
132
140
  "div",
133
141
  {
134
142
  "data-slot": "alert-dialog-footer",
@@ -144,7 +152,7 @@ function AlertDialogTitle({
144
152
  className,
145
153
  ...props
146
154
  }) {
147
- return /* @__PURE__ */ jsx2(
155
+ return /* @__PURE__ */ jsx(
148
156
  AlertDialogPrimitive.Title,
149
157
  {
150
158
  "data-slot": "alert-dialog-title",
@@ -157,7 +165,7 @@ function AlertDialogDescription({
157
165
  className,
158
166
  ...props
159
167
  }) {
160
- return /* @__PURE__ */ jsx2(
168
+ return /* @__PURE__ */ jsx(
161
169
  AlertDialogPrimitive.Description,
162
170
  {
163
171
  "data-slot": "alert-dialog-description",
@@ -170,7 +178,7 @@ function AlertDialogAction({
170
178
  className,
171
179
  ...props
172
180
  }) {
173
- return /* @__PURE__ */ jsx2(
181
+ return /* @__PURE__ */ jsx(
174
182
  AlertDialogPrimitive.Action,
175
183
  {
176
184
  className: cn(buttonVariants(), className),
@@ -182,7 +190,7 @@ function AlertDialogCancel({
182
190
  className,
183
191
  ...props
184
192
  }) {
185
- return /* @__PURE__ */ jsx2(
193
+ return /* @__PURE__ */ jsx(
186
194
  AlertDialogPrimitive.Cancel,
187
195
  {
188
196
  className: cn(buttonVariants({ variant: "outline" }), className),
@@ -194,16 +202,16 @@ function AlertDialogCancel({
194
202
  // src/components/dropdown-menu.tsx
195
203
  import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
196
204
  import { IconCheck, IconChevronRight, IconCircle } from "@tabler/icons-react";
197
- import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
205
+ import { jsx as jsx2, jsxs as jsxs3 } from "react/jsx-runtime";
198
206
  function DropdownMenu({
199
207
  ...props
200
208
  }) {
201
- return /* @__PURE__ */ jsx3(DropdownMenuPrimitive.Root, { "data-slot": "dropdown-menu", ...props });
209
+ return /* @__PURE__ */ jsx2(DropdownMenuPrimitive.Root, { "data-slot": "dropdown-menu", ...props });
202
210
  }
203
211
  function DropdownMenuTrigger({
204
212
  ...props
205
213
  }) {
206
- return /* @__PURE__ */ jsx3(
214
+ return /* @__PURE__ */ jsx2(
207
215
  DropdownMenuPrimitive.Trigger,
208
216
  {
209
217
  "data-slot": "dropdown-menu-trigger",
@@ -216,13 +224,13 @@ function DropdownMenuContent({
216
224
  sideOffset = 4,
217
225
  ...props
218
226
  }) {
219
- return /* @__PURE__ */ jsx3(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx3(
227
+ return /* @__PURE__ */ jsx2(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx2(
220
228
  DropdownMenuPrimitive.Content,
221
229
  {
222
230
  "data-slot": "dropdown-menu-content",
223
231
  sideOffset,
224
232
  className: cn(
225
- "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",
233
+ "bg-popover text-popover-foreground border-border 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",
226
234
  className
227
235
  ),
228
236
  ...props
@@ -235,7 +243,7 @@ function DropdownMenuItem({
235
243
  variant = "default",
236
244
  ...props
237
245
  }) {
238
- return /* @__PURE__ */ jsx3(
246
+ return /* @__PURE__ */ jsx2(
239
247
  DropdownMenuPrimitive.Item,
240
248
  {
241
249
  "data-slot": "dropdown-menu-item",
@@ -253,7 +261,7 @@ function DropdownMenuSeparator({
253
261
  className,
254
262
  ...props
255
263
  }) {
256
- return /* @__PURE__ */ jsx3(
264
+ return /* @__PURE__ */ jsx2(
257
265
  DropdownMenuPrimitive.Separator,
258
266
  {
259
267
  "data-slot": "dropdown-menu-separator",
@@ -264,7 +272,7 @@ function DropdownMenuSeparator({
264
272
  }
265
273
 
266
274
  // src/components/entity/entity-bulk-actions.tsx
267
- import { Fragment, jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
275
+ import { Fragment, jsx as jsx3, jsxs as jsxs4 } from "react/jsx-runtime";
268
276
  function EntityBulkActions({
269
277
  selectedCount,
270
278
  actions,
@@ -278,22 +286,22 @@ function EntityBulkActions({
278
286
  if (onExport) {
279
287
  defaultActions.push({
280
288
  label: "Export",
281
- icon: /* @__PURE__ */ jsx4(IconDownload, { className: "mr-2 h-4 w-4" }),
289
+ icon: /* @__PURE__ */ jsx3(IconDownload, { className: "mr-2 h-4 w-4" }),
282
290
  onClick: onExport
283
291
  });
284
292
  }
285
293
  if (onDelete) {
286
294
  defaultActions.push({
287
295
  label: "Delete",
288
- icon: /* @__PURE__ */ jsx4(IconTrash, { className: "mr-2 h-4 w-4" }),
296
+ icon: /* @__PURE__ */ jsx3(IconTrash, { className: "mr-2 h-4 w-4" }),
289
297
  onClick: () => setShowDeleteConfirm(true),
290
298
  variant: "destructive"
291
299
  });
292
300
  }
293
301
  const allActions = actions ? [...actions, ...defaultActions] : defaultActions;
294
- return /* @__PURE__ */ jsxs3(Fragment, { children: [
295
- /* @__PURE__ */ jsxs3(DropdownMenu, { children: [
296
- /* @__PURE__ */ jsx4(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxs3(
302
+ return /* @__PURE__ */ jsxs4(Fragment, { children: [
303
+ /* @__PURE__ */ jsxs4(DropdownMenu, { children: [
304
+ /* @__PURE__ */ jsx3(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxs4(
297
305
  Button,
298
306
  {
299
307
  variant: "outline",
@@ -302,13 +310,13 @@ function EntityBulkActions({
302
310
  className: "min-w-[140px]",
303
311
  children: [
304
312
  hasSelection ? `${selectedCount} selected` : "Bulk Actions",
305
- /* @__PURE__ */ jsx4(IconChevronDown, { className: "ml-2 h-4 w-4" })
313
+ /* @__PURE__ */ jsx3(IconChevronDown, { className: "ml-2 h-4 w-4" })
306
314
  ]
307
315
  }
308
316
  ) }),
309
- /* @__PURE__ */ jsx4(DropdownMenuContent, { align: "end", children: allActions.map((action, index) => /* @__PURE__ */ jsxs3("div", { children: [
310
- action.variant === "destructive" && index > 0 && /* @__PURE__ */ jsx4(DropdownMenuSeparator, {}),
311
- /* @__PURE__ */ jsxs3(
317
+ /* @__PURE__ */ jsx3(DropdownMenuContent, { align: "end", children: allActions.map((action, index) => /* @__PURE__ */ jsxs4("div", { children: [
318
+ action.variant === "destructive" && index > 0 && /* @__PURE__ */ jsx3(DropdownMenuSeparator, {}),
319
+ /* @__PURE__ */ jsxs4(
312
320
  DropdownMenuItem,
313
321
  {
314
322
  onClick: action.onClick,
@@ -321,24 +329,24 @@ function EntityBulkActions({
321
329
  )
322
330
  ] }, action.label)) })
323
331
  ] }),
324
- /* @__PURE__ */ jsx4(AlertDialog, { open: showDeleteConfirm, onOpenChange: setShowDeleteConfirm, children: /* @__PURE__ */ jsxs3(AlertDialogContent, { children: [
325
- /* @__PURE__ */ jsxs3(AlertDialogHeader, { children: [
326
- /* @__PURE__ */ jsxs3(AlertDialogTitle, { children: [
332
+ /* @__PURE__ */ jsx3(AlertDialog, { open: showDeleteConfirm, onOpenChange: setShowDeleteConfirm, children: /* @__PURE__ */ jsxs4(AlertDialogContent, { children: [
333
+ /* @__PURE__ */ jsxs4(AlertDialogHeader, { children: [
334
+ /* @__PURE__ */ jsxs4(AlertDialogTitle, { children: [
327
335
  "Delete ",
328
336
  selectedCount,
329
337
  " ",
330
338
  itemName,
331
339
  "(s)?"
332
340
  ] }),
333
- /* @__PURE__ */ jsxs3(AlertDialogDescription, { children: [
341
+ /* @__PURE__ */ jsxs4(AlertDialogDescription, { children: [
334
342
  "This will permanently delete the selected ",
335
343
  itemName,
336
344
  "(s). This action cannot be undone."
337
345
  ] })
338
346
  ] }),
339
- /* @__PURE__ */ jsxs3(AlertDialogFooter, { children: [
340
- /* @__PURE__ */ jsx4(AlertDialogCancel, { children: "Cancel" }),
341
- /* @__PURE__ */ jsx4(
347
+ /* @__PURE__ */ jsxs4(AlertDialogFooter, { children: [
348
+ /* @__PURE__ */ jsx3(AlertDialogCancel, { children: "Cancel" }),
349
+ /* @__PURE__ */ jsx3(
342
350
  AlertDialogAction,
343
351
  {
344
352
  onClick: () => {
@@ -360,14 +368,14 @@ import { motion } from "motion/react";
360
368
  import { useLayoutEffect, useMemo, useRef, useState as useState2 } from "react";
361
369
 
362
370
  // src/components/card.tsx
363
- import { jsx as jsx5 } from "react/jsx-runtime";
371
+ import { jsx as jsx4 } from "react/jsx-runtime";
364
372
  function Card({ className, ...props }) {
365
- return /* @__PURE__ */ jsx5(
373
+ return /* @__PURE__ */ jsx4(
366
374
  "div",
367
375
  {
368
376
  "data-slot": "card",
369
377
  className: cn(
370
- "bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 ",
378
+ "bg-card text-card-foreground border-border flex flex-col gap-6 rounded-xl border py-6",
371
379
  className
372
380
  ),
373
381
  ...props
@@ -378,16 +386,16 @@ function Card({ className, ...props }) {
378
386
  // src/components/select.tsx
379
387
  import * as SelectPrimitive from "@radix-ui/react-select";
380
388
  import { IconCheck as IconCheck2, IconChevronDown as IconChevronDown2, IconChevronUp } from "@tabler/icons-react";
381
- import { jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
389
+ import { jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
382
390
  function Select({
383
391
  ...props
384
392
  }) {
385
- return /* @__PURE__ */ jsx6(SelectPrimitive.Root, { "data-slot": "select", ...props });
393
+ return /* @__PURE__ */ jsx5(SelectPrimitive.Root, { "data-slot": "select", ...props });
386
394
  }
387
395
  function SelectValue({
388
396
  ...props
389
397
  }) {
390
- return /* @__PURE__ */ jsx6(SelectPrimitive.Value, { "data-slot": "select-value", ...props });
398
+ return /* @__PURE__ */ jsx5(SelectPrimitive.Value, { "data-slot": "select-value", ...props });
391
399
  }
392
400
  function SelectTrigger({
393
401
  className,
@@ -395,7 +403,7 @@ function SelectTrigger({
395
403
  children,
396
404
  ...props
397
405
  }) {
398
- return /* @__PURE__ */ jsxs4(
406
+ return /* @__PURE__ */ jsxs5(
399
407
  SelectPrimitive.Trigger,
400
408
  {
401
409
  "data-slot": "select-trigger",
@@ -407,7 +415,7 @@ function SelectTrigger({
407
415
  ...props,
408
416
  children: [
409
417
  children,
410
- /* @__PURE__ */ jsx6(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx6(IconChevronDown2, { className: "size-4 opacity-50" }) })
418
+ /* @__PURE__ */ jsx5(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx5(IconChevronDown2, { className: "size-4 opacity-50" }) })
411
419
  ]
412
420
  }
413
421
  );
@@ -419,12 +427,12 @@ function SelectContent({
419
427
  align = "center",
420
428
  ...props
421
429
  }) {
422
- return /* @__PURE__ */ jsx6(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs4(
430
+ return /* @__PURE__ */ jsx5(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs5(
423
431
  SelectPrimitive.Content,
424
432
  {
425
433
  "data-slot": "select-content",
426
434
  className: cn(
427
- "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 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md",
435
+ "bg-popover text-popover-foreground border-border 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 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md",
428
436
  position === "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",
429
437
  className
430
438
  ),
@@ -432,8 +440,8 @@ function SelectContent({
432
440
  align,
433
441
  ...props,
434
442
  children: [
435
- /* @__PURE__ */ jsx6(SelectScrollUpButton, {}),
436
- /* @__PURE__ */ jsx6(
443
+ /* @__PURE__ */ jsx5(SelectScrollUpButton, {}),
444
+ /* @__PURE__ */ jsx5(
437
445
  SelectPrimitive.Viewport,
438
446
  {
439
447
  className: cn(
@@ -443,7 +451,7 @@ function SelectContent({
443
451
  children
444
452
  }
445
453
  ),
446
- /* @__PURE__ */ jsx6(SelectScrollDownButton, {})
454
+ /* @__PURE__ */ jsx5(SelectScrollDownButton, {})
447
455
  ]
448
456
  }
449
457
  ) });
@@ -453,7 +461,7 @@ function SelectItem({
453
461
  children,
454
462
  ...props
455
463
  }) {
456
- return /* @__PURE__ */ jsxs4(
464
+ return /* @__PURE__ */ jsxs5(
457
465
  SelectPrimitive.Item,
458
466
  {
459
467
  "data-slot": "select-item",
@@ -463,8 +471,8 @@ function SelectItem({
463
471
  ),
464
472
  ...props,
465
473
  children: [
466
- /* @__PURE__ */ jsx6("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx6(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx6(IconCheck2, { className: "size-4" }) }) }),
467
- /* @__PURE__ */ jsx6(SelectPrimitive.ItemText, { children })
474
+ /* @__PURE__ */ jsx5("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx5(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx5(IconCheck2, { className: "size-4" }) }) }),
475
+ /* @__PURE__ */ jsx5(SelectPrimitive.ItemText, { children })
468
476
  ]
469
477
  }
470
478
  );
@@ -473,7 +481,7 @@ function SelectScrollUpButton({
473
481
  className,
474
482
  ...props
475
483
  }) {
476
- return /* @__PURE__ */ jsx6(
484
+ return /* @__PURE__ */ jsx5(
477
485
  SelectPrimitive.ScrollUpButton,
478
486
  {
479
487
  "data-slot": "select-scroll-up-button",
@@ -482,7 +490,7 @@ function SelectScrollUpButton({
482
490
  className
483
491
  ),
484
492
  ...props,
485
- children: /* @__PURE__ */ jsx6(IconChevronUp, { className: "size-4" })
493
+ children: /* @__PURE__ */ jsx5(IconChevronUp, { className: "size-4" })
486
494
  }
487
495
  );
488
496
  }
@@ -490,7 +498,7 @@ function SelectScrollDownButton({
490
498
  className,
491
499
  ...props
492
500
  }) {
493
- return /* @__PURE__ */ jsx6(
501
+ return /* @__PURE__ */ jsx5(
494
502
  SelectPrimitive.ScrollDownButton,
495
503
  {
496
504
  "data-slot": "select-scroll-down-button",
@@ -499,13 +507,13 @@ function SelectScrollDownButton({
499
507
  className
500
508
  ),
501
509
  ...props,
502
- children: /* @__PURE__ */ jsx6(IconChevronDown2, { className: "size-4" })
510
+ children: /* @__PURE__ */ jsx5(IconChevronDown2, { className: "size-4" })
503
511
  }
504
512
  );
505
513
  }
506
514
 
507
515
  // src/components/entity/entity-detail-header.tsx
508
- import { jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
516
+ import { jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
509
517
  function EntityDetailHeader({
510
518
  title,
511
519
  icon,
@@ -641,7 +649,7 @@ function EntityDetailHeader({
641
649
  }
642
650
  };
643
651
  if (tab.href && LinkComponent) {
644
- return /* @__PURE__ */ jsx7(
652
+ return /* @__PURE__ */ jsx6(
645
653
  LinkComponent,
646
654
  {
647
655
  href: tab.href,
@@ -652,7 +660,7 @@ function EntityDetailHeader({
652
660
  tab.value
653
661
  );
654
662
  }
655
- return /* @__PURE__ */ jsx7(
663
+ return /* @__PURE__ */ jsx6(
656
664
  "button",
657
665
  {
658
666
  type: "button",
@@ -671,9 +679,9 @@ function EntityDetailHeader({
671
679
  isActive && "bg-accent font-medium"
672
680
  );
673
681
  if (tab.href && LinkComponent) {
674
- return /* @__PURE__ */ jsx7(DropdownMenuItem, { asChild: true, className: itemClassName, children: /* @__PURE__ */ jsx7(LinkComponent, { href: tab.href, children: tab.name }) }, tab.value);
682
+ return /* @__PURE__ */ jsx6(DropdownMenuItem, { asChild: true, className: itemClassName, children: /* @__PURE__ */ jsx6(LinkComponent, { href: tab.href, children: tab.name }) }, tab.value);
675
683
  }
676
- return /* @__PURE__ */ jsx7(
684
+ return /* @__PURE__ */ jsx6(
677
685
  DropdownMenuItem,
678
686
  {
679
687
  onClick: () => handleTabChange(tab.value),
@@ -683,25 +691,25 @@ function EntityDetailHeader({
683
691
  tab.value
684
692
  );
685
693
  };
686
- return /* @__PURE__ */ jsxs5("div", { className: cn("flex flex-col", className), children: [
687
- /* @__PURE__ */ jsxs5(Card, { className: "overflow-hidden p-0 gap-0", children: [
688
- /* @__PURE__ */ jsxs5("div", { className: "flex items-center justify-between gap-2 p-4 pb-2 ", children: [
689
- /* @__PURE__ */ jsxs5("div", { className: "flex items-center gap-2", children: [
694
+ return /* @__PURE__ */ jsxs6("div", { className: cn("flex flex-col", className), children: [
695
+ /* @__PURE__ */ jsxs6(Card, { className: "overflow-hidden p-0 gap-0", children: [
696
+ /* @__PURE__ */ jsxs6("div", { className: "flex items-center justify-between gap-2 p-4 pb-2 ", children: [
697
+ /* @__PURE__ */ jsxs6("div", { className: "flex items-center gap-2", children: [
690
698
  backButton,
691
699
  icon,
692
- /* @__PURE__ */ jsx7("span", { className: "text-lg font-semibold", children: title })
700
+ /* @__PURE__ */ jsx6("span", { className: "text-lg font-semibold", children: title })
693
701
  ] }),
694
- actions && /* @__PURE__ */ jsx7("div", { className: "flex items-center gap-2", children: actions })
702
+ actions && /* @__PURE__ */ jsx6("div", { className: "flex items-center gap-2", children: actions })
695
703
  ] }),
696
- /* @__PURE__ */ jsxs5("div", { ref: containerRef, className: "w-full px-4", children: [
697
- /* @__PURE__ */ jsx7("div", { className: "mb-3 w-full sm:hidden", children: /* @__PURE__ */ jsxs5(Select, { value: activeTab, onValueChange: handleTabChange, children: [
698
- /* @__PURE__ */ jsxs5(SelectTrigger, { className: "h-9 w-full gap-2 [&>svg:first-child]:shrink-0", children: [
699
- /* @__PURE__ */ jsx7(IconMenu2, { className: "size-4 text-muted-foreground" }),
700
- /* @__PURE__ */ jsx7(SelectValue, {})
704
+ /* @__PURE__ */ jsxs6("div", { ref: containerRef, className: "w-full px-4", children: [
705
+ /* @__PURE__ */ jsx6("div", { className: "mb-3 w-full sm:hidden", children: /* @__PURE__ */ jsxs6(Select, { value: activeTab, onValueChange: handleTabChange, children: [
706
+ /* @__PURE__ */ jsxs6(SelectTrigger, { className: "h-9 w-full gap-2 [&>svg:first-child]:shrink-0", children: [
707
+ /* @__PURE__ */ jsx6(IconMenu2, { className: "size-4 text-muted-foreground" }),
708
+ /* @__PURE__ */ jsx6(SelectValue, {})
701
709
  ] }),
702
- /* @__PURE__ */ jsx7(SelectContent, { children: tabs.map((tab) => /* @__PURE__ */ jsx7(SelectItem, { value: tab.value, children: tab.name }, tab.value)) })
710
+ /* @__PURE__ */ jsx6(SelectContent, { children: tabs.map((tab) => /* @__PURE__ */ jsx6(SelectItem, { value: tab.value, children: tab.name }, tab.value)) })
703
711
  ] }) }),
704
- /* @__PURE__ */ jsxs5(
712
+ /* @__PURE__ */ jsxs6(
705
713
  "div",
706
714
  {
707
715
  ref: tabsListRef,
@@ -713,8 +721,8 @@ function EntityDetailHeader({
713
721
  );
714
722
  return renderTab(tab, originalIndex);
715
723
  }),
716
- overflowTabs.length > 0 && /* @__PURE__ */ jsxs5(DropdownMenu, { children: [
717
- /* @__PURE__ */ jsxs5(
724
+ overflowTabs.length > 0 && /* @__PURE__ */ jsxs6(DropdownMenu, { children: [
725
+ /* @__PURE__ */ jsxs6(
718
726
  DropdownMenuTrigger,
719
727
  {
720
728
  ref: dropdownTriggerRef,
@@ -725,13 +733,13 @@ function EntityDetailHeader({
725
733
  ),
726
734
  children: [
727
735
  "More",
728
- /* @__PURE__ */ jsx7(IconChevronDown3, { className: "h-4 w-4" })
736
+ /* @__PURE__ */ jsx6(IconChevronDown3, { className: "h-4 w-4" })
729
737
  ]
730
738
  }
731
739
  ),
732
- /* @__PURE__ */ jsx7(DropdownMenuContent, { align: "start", className: "min-w-40", children: overflowTabs.map(renderDropdownItem) })
740
+ /* @__PURE__ */ jsx6(DropdownMenuContent, { align: "start", className: "min-w-40", children: overflowTabs.map(renderDropdownItem) })
733
741
  ] }),
734
- /* @__PURE__ */ jsx7(
742
+ /* @__PURE__ */ jsx6(
735
743
  motion.div,
736
744
  {
737
745
  className: "absolute bottom-0 left-0 z-20 h-0.5 bg-primary",
@@ -751,7 +759,7 @@ function EntityDetailHeader({
751
759
  )
752
760
  ] })
753
761
  ] }),
754
- activeTabData?.content && /* @__PURE__ */ jsx7("div", { className: "flex-1", children: activeTabData.content })
762
+ activeTabData?.content && /* @__PURE__ */ jsx6("div", { className: "flex-1", children: activeTabData.content })
755
763
  ] });
756
764
  }
757
765
 
@@ -761,25 +769,25 @@ import { useState as useState3 } from "react";
761
769
  // src/components/sheet.tsx
762
770
  import * as SheetPrimitive from "@radix-ui/react-dialog";
763
771
  import { IconX } from "@tabler/icons-react";
764
- import { jsx as jsx8, jsxs as jsxs6 } from "react/jsx-runtime";
772
+ import { jsx as jsx7, jsxs as jsxs7 } from "react/jsx-runtime";
765
773
  function Sheet({ ...props }) {
766
- return /* @__PURE__ */ jsx8(SheetPrimitive.Root, { "data-slot": "sheet", ...props });
774
+ return /* @__PURE__ */ jsx7(SheetPrimitive.Root, { "data-slot": "sheet", ...props });
767
775
  }
768
776
  function SheetPortal({
769
777
  ...props
770
778
  }) {
771
- return /* @__PURE__ */ jsx8(SheetPrimitive.Portal, { "data-slot": "sheet-portal", ...props });
779
+ return /* @__PURE__ */ jsx7(SheetPrimitive.Portal, { "data-slot": "sheet-portal", ...props });
772
780
  }
773
781
  function SheetOverlay({
774
782
  className,
775
783
  ...props
776
784
  }) {
777
- return /* @__PURE__ */ jsx8(
785
+ return /* @__PURE__ */ jsx7(
778
786
  SheetPrimitive.Overlay,
779
787
  {
780
788
  "data-slot": "sheet-overlay",
781
789
  className: cn(
782
- "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",
790
+ "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=open]:opacity-100 fixed inset-0 z-50 bg-[var(--overlay,oklch(0_0_0/0.5))]",
783
791
  className
784
792
  ),
785
793
  ...props
@@ -792,14 +800,14 @@ function SheetContent({
792
800
  side = "right",
793
801
  ...props
794
802
  }) {
795
- return /* @__PURE__ */ jsxs6(SheetPortal, { children: [
796
- /* @__PURE__ */ jsx8(SheetOverlay, {}),
797
- /* @__PURE__ */ jsxs6(
803
+ return /* @__PURE__ */ jsxs7(SheetPortal, { children: [
804
+ /* @__PURE__ */ jsx7(SheetOverlay, {}),
805
+ /* @__PURE__ */ jsxs7(
798
806
  SheetPrimitive.Content,
799
807
  {
800
808
  "data-slot": "sheet-content",
801
809
  className: cn(
802
- "bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500",
810
+ "bg-background text-foreground border-border data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=open]:opacity-100 fixed z-[51] flex min-w-0 flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500",
803
811
  side === "right" && "data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm",
804
812
  side === "left" && "data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm",
805
813
  side === "top" && "data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b",
@@ -809,9 +817,9 @@ function SheetContent({
809
817
  ...props,
810
818
  children: [
811
819
  children,
812
- /* @__PURE__ */ jsxs6(SheetPrimitive.Close, { className: "ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none", children: [
813
- /* @__PURE__ */ jsx8(IconX, { className: "size-4" }),
814
- /* @__PURE__ */ jsx8("span", { className: "sr-only", children: "Close" })
820
+ /* @__PURE__ */ jsxs7(SheetPrimitive.Close, { className: "ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none", children: [
821
+ /* @__PURE__ */ jsx7(IconX, { className: "size-4" }),
822
+ /* @__PURE__ */ jsx7("span", { className: "sr-only", children: "Close" })
815
823
  ] })
816
824
  ]
817
825
  }
@@ -819,7 +827,7 @@ function SheetContent({
819
827
  ] });
820
828
  }
821
829
  function SheetHeader({ className, ...props }) {
822
- return /* @__PURE__ */ jsx8(
830
+ return /* @__PURE__ */ jsx7(
823
831
  "div",
824
832
  {
825
833
  "data-slot": "sheet-header",
@@ -832,7 +840,7 @@ function SheetTitle({
832
840
  className,
833
841
  ...props
834
842
  }) {
835
- return /* @__PURE__ */ jsx8(
843
+ return /* @__PURE__ */ jsx7(
836
844
  SheetPrimitive.Title,
837
845
  {
838
846
  "data-slot": "sheet-title",
@@ -843,12 +851,12 @@ function SheetTitle({
843
851
  }
844
852
 
845
853
  // src/components/entity/entity-drawer.tsx
846
- import { Fragment as Fragment2, jsx as jsx9, jsxs as jsxs7 } from "react/jsx-runtime";
854
+ import { Fragment as Fragment2, jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
847
855
  var sizeClasses = {
848
- sm: "sm:max-w-sm",
849
- md: "sm:max-w-md",
850
- lg: "sm:max-w-lg",
851
- xl: "sm:max-w-xl"
856
+ sm: "w-full min-w-0 sm:!max-w-[24rem]",
857
+ md: "w-full min-w-0 sm:!max-w-[28rem]",
858
+ lg: "w-full min-w-0 sm:!max-w-[32rem]",
859
+ xl: "w-full min-w-0 sm:!max-w-[36rem]"
852
860
  };
853
861
  function EntityDrawer({
854
862
  title,
@@ -871,11 +879,11 @@ function EntityDrawer({
871
879
  setShowConfirm(false);
872
880
  onClose();
873
881
  };
874
- return /* @__PURE__ */ jsxs7(Fragment2, { children: [
875
- /* @__PURE__ */ jsx9(Sheet, { open, onOpenChange: (isOpen) => !isOpen && handleClose(), children: /* @__PURE__ */ jsxs7(
882
+ return /* @__PURE__ */ jsxs8(Fragment2, { children: [
883
+ /* @__PURE__ */ jsx8(Sheet, { open, onOpenChange: (isOpen) => !isOpen && handleClose(), children: /* @__PURE__ */ jsxs8(
876
884
  SheetContent,
877
885
  {
878
- className: `${sizeClasses[size]} flex flex-col p-0`,
886
+ className: `${sizeClasses[size]} flex min-h-0 flex-col overflow-hidden p-0`,
879
887
  onInteractOutside: (e) => {
880
888
  if (isDirty) {
881
889
  e.preventDefault();
@@ -889,20 +897,20 @@ function EntityDrawer({
889
897
  }
890
898
  },
891
899
  children: [
892
- /* @__PURE__ */ jsx9(SheetHeader, { className: "border-b px-6 py-4", children: /* @__PURE__ */ jsx9(SheetTitle, { children: title }) }),
893
- /* @__PURE__ */ jsx9("div", { className: "flex-1 overflow-y-auto px-6 py-4", children: form }),
894
- /* @__PURE__ */ jsx9("div", { className: "border-t px-6 py-4", children: actions })
900
+ /* @__PURE__ */ jsx8(SheetHeader, { className: "border-border bg-background border-b px-6 py-4", children: /* @__PURE__ */ jsx8(SheetTitle, { children: title }) }),
901
+ /* @__PURE__ */ jsx8("div", { className: "bg-background flex-1 overflow-y-auto px-6 py-4", children: form }),
902
+ /* @__PURE__ */ jsx8("div", { className: "border-border bg-background border-t px-6 py-4", children: actions })
895
903
  ]
896
904
  }
897
905
  ) }),
898
- /* @__PURE__ */ jsx9(AlertDialog, { open: showConfirm, onOpenChange: setShowConfirm, children: /* @__PURE__ */ jsxs7(AlertDialogContent, { children: [
899
- /* @__PURE__ */ jsxs7(AlertDialogHeader, { children: [
900
- /* @__PURE__ */ jsx9(AlertDialogTitle, { children: "Discard changes?" }),
901
- /* @__PURE__ */ jsx9(AlertDialogDescription, { children: "You have unsaved changes. Are you sure you want to discard them?" })
906
+ /* @__PURE__ */ jsx8(AlertDialog, { open: showConfirm, onOpenChange: setShowConfirm, children: /* @__PURE__ */ jsxs8(AlertDialogContent, { children: [
907
+ /* @__PURE__ */ jsxs8(AlertDialogHeader, { children: [
908
+ /* @__PURE__ */ jsx8(AlertDialogTitle, { children: "Discard changes?" }),
909
+ /* @__PURE__ */ jsx8(AlertDialogDescription, { children: "You have unsaved changes. Are you sure you want to discard them?" })
902
910
  ] }),
903
- /* @__PURE__ */ jsxs7(AlertDialogFooter, { children: [
904
- /* @__PURE__ */ jsx9(AlertDialogCancel, { children: "Cancel" }),
905
- /* @__PURE__ */ jsx9(
911
+ /* @__PURE__ */ jsxs8(AlertDialogFooter, { children: [
912
+ /* @__PURE__ */ jsx8(AlertDialogCancel, { children: "Cancel" }),
913
+ /* @__PURE__ */ jsx8(
906
914
  AlertDialogAction,
907
915
  {
908
916
  onClick: handleConfirmDiscard,
@@ -918,7 +926,7 @@ function EntityDrawer({
918
926
  // src/components/entity/entity-drawer-trigger.tsx
919
927
  import { IconChevronRight as IconChevronRight2, IconPencil, IconPlus } from "@tabler/icons-react";
920
928
  import { useState as useState4 } from "react";
921
- import { Fragment as Fragment3, jsx as jsx10, jsxs as jsxs8 } from "react/jsx-runtime";
929
+ import { Fragment as Fragment3, jsx as jsx9, jsxs as jsxs9 } from "react/jsx-runtime";
922
930
  function EntityDrawerTrigger({
923
931
  mode,
924
932
  entity,
@@ -948,19 +956,19 @@ function EntityDrawerTrigger({
948
956
  }
949
957
  };
950
958
  const buttonLabel = label || (mode === "new" ? `New ${entity}` : `Edit ${entity}`);
951
- return /* @__PURE__ */ jsxs8(Fragment3, { children: [
952
- mode === "edit" && variant === "icon" && /* @__PURE__ */ jsx10(
959
+ return /* @__PURE__ */ jsxs9(Fragment3, { children: [
960
+ mode === "edit" && variant === "icon" && /* @__PURE__ */ jsx9(
953
961
  Button,
954
962
  {
955
963
  variant: "ghost",
956
964
  size: "icon",
957
- className: `h-8 w-8 opacity-0 group-hover:opacity-100 transition-opacity ${className}`,
965
+ className: `size-8 opacity-0 group-hover:opacity-100 transition-opacity ${className}`,
958
966
  onClick: handleOpen,
959
967
  disabled,
960
- children: /* @__PURE__ */ jsx10(IconChevronRight2, { className: "h-4 w-4" })
968
+ children: /* @__PURE__ */ jsx9(IconChevronRight2, { className: "size-4" })
961
969
  }
962
970
  ),
963
- mode === "edit" && variant !== "icon" && /* @__PURE__ */ jsxs8(
971
+ mode === "edit" && variant !== "icon" && /* @__PURE__ */ jsx9(
964
972
  Button,
965
973
  {
966
974
  variant: variant === "outline" ? "outline" : "default",
@@ -968,13 +976,11 @@ function EntityDrawerTrigger({
968
976
  onClick: handleOpen,
969
977
  disabled,
970
978
  className,
971
- children: [
972
- /* @__PURE__ */ jsx10(IconPencil, { className: "mr-2 h-4 w-4" }),
973
- buttonLabel
974
- ]
979
+ leftIcon: /* @__PURE__ */ jsx9(IconPencil, { className: "size-4" }),
980
+ children: buttonLabel
975
981
  }
976
982
  ),
977
- mode === "new" && /* @__PURE__ */ jsxs8(
983
+ mode === "new" && /* @__PURE__ */ jsx9(
978
984
  Button,
979
985
  {
980
986
  variant: variant === "outline" ? "outline" : "default",
@@ -985,10 +991,8 @@ function EntityDrawerTrigger({
985
991
  "max-sm:h-8 max-sm:w-8 max-sm:shrink-0 max-sm:justify-center max-sm:p-0",
986
992
  className
987
993
  ),
988
- children: [
989
- /* @__PURE__ */ jsx10(IconPlus, { className: "h-4 w-4 sm:mr-2" }),
990
- /* @__PURE__ */ jsx10("span", { className: "hidden sm:inline", children: buttonLabel })
991
- ]
994
+ leftIcon: /* @__PURE__ */ jsx9(IconPlus, { className: "size-4" }),
995
+ children: /* @__PURE__ */ jsx9("span", { className: "hidden sm:inline", children: buttonLabel })
992
996
  }
993
997
  ),
994
998
  open && children(open, handleClose)
@@ -1000,9 +1004,9 @@ import { IconPackage } from "@tabler/icons-react";
1000
1004
 
1001
1005
  // src/components/empty.tsx
1002
1006
  import { cva as cva2 } from "class-variance-authority";
1003
- import { jsx as jsx11 } from "react/jsx-runtime";
1007
+ import { jsx as jsx10 } from "react/jsx-runtime";
1004
1008
  function Empty({ className, ...props }) {
1005
- return /* @__PURE__ */ jsx11(
1009
+ return /* @__PURE__ */ jsx10(
1006
1010
  "div",
1007
1011
  {
1008
1012
  "data-slot": "empty",
@@ -1015,7 +1019,7 @@ function Empty({ className, ...props }) {
1015
1019
  );
1016
1020
  }
1017
1021
  function EmptyHeader({ className, ...props }) {
1018
- return /* @__PURE__ */ jsx11(
1022
+ return /* @__PURE__ */ jsx10(
1019
1023
  "div",
1020
1024
  {
1021
1025
  "data-slot": "empty-header",
@@ -1046,7 +1050,7 @@ function EmptyMedia({
1046
1050
  variant = "default",
1047
1051
  ...props
1048
1052
  }) {
1049
- return /* @__PURE__ */ jsx11(
1053
+ return /* @__PURE__ */ jsx10(
1050
1054
  "div",
1051
1055
  {
1052
1056
  "data-slot": "empty-icon",
@@ -1057,7 +1061,7 @@ function EmptyMedia({
1057
1061
  );
1058
1062
  }
1059
1063
  function EmptyTitle({ className, ...props }) {
1060
- return /* @__PURE__ */ jsx11(
1064
+ return /* @__PURE__ */ jsx10(
1061
1065
  "div",
1062
1066
  {
1063
1067
  "data-slot": "empty-title",
@@ -1067,7 +1071,7 @@ function EmptyTitle({ className, ...props }) {
1067
1071
  );
1068
1072
  }
1069
1073
  function EmptyDescription({ className, ...props }) {
1070
- return /* @__PURE__ */ jsx11(
1074
+ return /* @__PURE__ */ jsx10(
1071
1075
  "div",
1072
1076
  {
1073
1077
  "data-slot": "empty-description",
@@ -1080,7 +1084,7 @@ function EmptyDescription({ className, ...props }) {
1080
1084
  );
1081
1085
  }
1082
1086
  function EmptyContent({ className, ...props }) {
1083
- return /* @__PURE__ */ jsx11(
1087
+ return /* @__PURE__ */ jsx10(
1084
1088
  "div",
1085
1089
  {
1086
1090
  "data-slot": "empty-content",
@@ -1094,7 +1098,7 @@ function EmptyContent({ className, ...props }) {
1094
1098
  }
1095
1099
 
1096
1100
  // src/components/entity/entity-empty-state.tsx
1097
- import { jsx as jsx12, jsxs as jsxs9 } from "react/jsx-runtime";
1101
+ import { jsx as jsx11, jsxs as jsxs10 } from "react/jsx-runtime";
1098
1102
  function EntityEmptyState({
1099
1103
  icon: Icon2 = IconPackage,
1100
1104
  title,
@@ -1108,20 +1112,20 @@ function EntityEmptyState({
1108
1112
  const defaultTitle = `No ${entityName}s yet`;
1109
1113
  const defaultDescription = `Get started by creating your first ${entityName}.`;
1110
1114
  const defaultActionLabel = `Create ${entityName}`;
1111
- return /* @__PURE__ */ jsxs9(Empty, { className: cn("border py-12", className), children: [
1112
- /* @__PURE__ */ jsxs9(EmptyHeader, { children: [
1113
- /* @__PURE__ */ jsx12(EmptyMedia, { variant: "icon", children: /* @__PURE__ */ jsx12(Icon2, { className: "size-5" }) }),
1114
- /* @__PURE__ */ jsx12(EmptyTitle, { children: title ?? defaultTitle }),
1115
- /* @__PURE__ */ jsx12(EmptyDescription, { children: description ?? defaultDescription })
1115
+ return /* @__PURE__ */ jsxs10(Empty, { className: cn("border py-12", className), children: [
1116
+ /* @__PURE__ */ jsxs10(EmptyHeader, { children: [
1117
+ /* @__PURE__ */ jsx11(EmptyMedia, { variant: "icon", children: /* @__PURE__ */ jsx11(Icon2, { className: "size-5" }) }),
1118
+ /* @__PURE__ */ jsx11(EmptyTitle, { children: title ?? defaultTitle }),
1119
+ /* @__PURE__ */ jsx11(EmptyDescription, { children: description ?? defaultDescription })
1116
1120
  ] }),
1117
- /* @__PURE__ */ jsx12(EmptyContent, { children: children ?? (onAction && /* @__PURE__ */ jsx12(Button, { onClick: onAction, children: actionLabel ?? defaultActionLabel })) })
1121
+ /* @__PURE__ */ jsx11(EmptyContent, { children: children ?? (onAction && /* @__PURE__ */ jsx11(Button, { onClick: onAction, children: actionLabel ?? defaultActionLabel })) })
1118
1122
  ] });
1119
1123
  }
1120
1124
 
1121
1125
  // src/components/entity/entity-filter.tsx
1122
1126
  import { IconFilter } from "@tabler/icons-react";
1123
1127
  import { parseAsInteger, parseAsString, useQueryState } from "nuqs";
1124
- import { jsx as jsx13, jsxs as jsxs10 } from "react/jsx-runtime";
1128
+ import { jsx as jsx12, jsxs as jsxs11 } from "react/jsx-runtime";
1125
1129
  function EntityFilter({
1126
1130
  options,
1127
1131
  placeholder = "Filter",
@@ -1140,16 +1144,16 @@ function EntityFilter({
1140
1144
  };
1141
1145
  const validOptions = options.filter((opt) => opt.value !== "");
1142
1146
  const displayValue = value || (options.some((opt) => opt.value === "") ? "__all__" : void 0);
1143
- return /* @__PURE__ */ jsxs10("div", { className: cn("flex w-full items-center gap-2", className), children: [
1144
- label && /* @__PURE__ */ jsx13("span", { className: "shrink-0 text-sm text-muted-foreground", children: label }),
1145
- /* @__PURE__ */ jsx13("div", { className: "min-w-0 flex-1", children: /* @__PURE__ */ jsxs10(Select, { value: displayValue, onValueChange: handleChange, children: [
1146
- /* @__PURE__ */ jsxs10(SelectTrigger, { className: "h-9 w-full min-w-[150px]", children: [
1147
- /* @__PURE__ */ jsx13(IconFilter, { className: "mr-2 h-4 w-4" }),
1148
- /* @__PURE__ */ jsx13(SelectValue, { placeholder })
1147
+ return /* @__PURE__ */ jsxs11("div", { className: cn("flex w-full items-center gap-2", className), children: [
1148
+ label && /* @__PURE__ */ jsx12("span", { className: "shrink-0 text-sm text-muted-foreground", children: label }),
1149
+ /* @__PURE__ */ jsx12("div", { className: "min-w-0 flex-1", children: /* @__PURE__ */ jsxs11(Select, { value: displayValue, onValueChange: handleChange, children: [
1150
+ /* @__PURE__ */ jsxs11(SelectTrigger, { className: "h-9 w-full min-w-[150px]", children: [
1151
+ /* @__PURE__ */ jsx12(IconFilter, { className: "size-4" }),
1152
+ /* @__PURE__ */ jsx12(SelectValue, { placeholder })
1149
1153
  ] }),
1150
- /* @__PURE__ */ jsxs10(SelectContent, { children: [
1151
- options.some((opt) => opt.value === "") && /* @__PURE__ */ jsx13(SelectItem, { value: "__all__", children: options.find((opt) => opt.value === "")?.label || "All" }, "__all__"),
1152
- validOptions.map((option) => /* @__PURE__ */ jsx13(SelectItem, { value: option.value, children: option.label }, option.value))
1154
+ /* @__PURE__ */ jsxs11(SelectContent, { children: [
1155
+ options.some((opt) => opt.value === "") && /* @__PURE__ */ jsx12(SelectItem, { value: "__all__", children: options.find((opt) => opt.value === "")?.label || "All" }, "__all__"),
1156
+ validOptions.map((option) => /* @__PURE__ */ jsx12(SelectItem, { value: option.value, children: option.label }, option.value))
1153
1157
  ] })
1154
1158
  ] }) })
1155
1159
  ] });
@@ -1164,12 +1168,12 @@ import {
1164
1168
 
1165
1169
  // src/components/spinner.tsx
1166
1170
  import { IconLoader2 } from "@tabler/icons-react";
1167
- import { jsx as jsx14 } from "react/jsx-runtime";
1171
+ import { jsx as jsx13 } from "react/jsx-runtime";
1168
1172
  function Spinner({
1169
1173
  className,
1170
1174
  ...props
1171
1175
  }) {
1172
- return /* @__PURE__ */ jsx14(
1176
+ return /* @__PURE__ */ jsx13(
1173
1177
  IconLoader2,
1174
1178
  {
1175
1179
  role: "status",
@@ -1181,7 +1185,7 @@ function Spinner({
1181
1185
  }
1182
1186
 
1183
1187
  // src/components/entity/entity-form-actions.tsx
1184
- import { jsx as jsx15, jsxs as jsxs11 } from "react/jsx-runtime";
1188
+ import { jsx as jsx14, jsxs as jsxs12 } from "react/jsx-runtime";
1185
1189
  function EntityFormActions({
1186
1190
  mode,
1187
1191
  onSubmit,
@@ -1197,21 +1201,18 @@ function EntityFormActions({
1197
1201
  }) {
1198
1202
  const defaultSubmitLabel = mode === "new" ? "Create" : "Update";
1199
1203
  const label = submitLabel || defaultSubmitLabel;
1200
- return /* @__PURE__ */ jsxs11("div", { className: "flex items-center gap-3", children: [
1201
- onSubmit && /* @__PURE__ */ jsxs11(
1204
+ return /* @__PURE__ */ jsxs12("div", { className: "flex items-center gap-3", children: [
1205
+ onSubmit && /* @__PURE__ */ jsx14(
1202
1206
  Button,
1203
1207
  {
1204
1208
  onClick: onSubmit,
1205
1209
  disabled: disabled || isSubmitting,
1206
1210
  className: "cursor-pointer",
1207
- children: [
1208
- isSubmitting && /* @__PURE__ */ jsx15(Spinner, { className: " h-4 w-4" }),
1209
- !isSubmitting && /* @__PURE__ */ jsx15(IconDeviceFloppy, { className: " h-4 w-4" }),
1210
- label
1211
- ]
1211
+ leftIcon: isSubmitting ? /* @__PURE__ */ jsx14(Spinner, { className: "size-4" }) : /* @__PURE__ */ jsx14(IconDeviceFloppy, { className: "size-4" }),
1212
+ children: label
1212
1213
  }
1213
1214
  ),
1214
- mode === "new" && onReset && /* @__PURE__ */ jsxs11(
1215
+ mode === "new" && onReset && /* @__PURE__ */ jsxs12(
1215
1216
  Button,
1216
1217
  {
1217
1218
  variant: "outline",
@@ -1219,37 +1220,34 @@ function EntityFormActions({
1219
1220
  disabled,
1220
1221
  className: "cursor-pointer",
1221
1222
  children: [
1222
- /* @__PURE__ */ jsx15(IconRotateClockwise, { className: " h-4 w-4" }),
1223
+ /* @__PURE__ */ jsx14(IconRotateClockwise, { className: " h-4 w-4" }),
1223
1224
  "Reset"
1224
1225
  ]
1225
1226
  }
1226
1227
  ),
1227
- mode === "edit" && onDelete && /* @__PURE__ */ jsxs11(AlertDialog, { children: [
1228
- /* @__PURE__ */ jsx15(AlertDialogTrigger, { asChild: true, children: /* @__PURE__ */ jsxs11(
1228
+ mode === "edit" && onDelete && /* @__PURE__ */ jsxs12(AlertDialog, { children: [
1229
+ /* @__PURE__ */ jsx14(AlertDialogTrigger, { asChild: true, children: /* @__PURE__ */ jsx14(
1229
1230
  Button,
1230
1231
  {
1231
1232
  variant: "destructive",
1232
1233
  disabled: disabled || isDeleting,
1233
1234
  className: "cursor-pointer",
1234
- children: [
1235
- isDeleting && /* @__PURE__ */ jsx15(Spinner, { className: " h-4 w-4" }),
1236
- /* @__PURE__ */ jsx15(IconTrash2, { className: " h-4 w-4" }),
1237
- deleteLabel
1238
- ]
1235
+ leftIcon: isDeleting ? /* @__PURE__ */ jsx14(Spinner, { className: "size-4" }) : /* @__PURE__ */ jsx14(IconTrash2, { className: "size-4" }),
1236
+ children: deleteLabel
1239
1237
  }
1240
1238
  ) }),
1241
- /* @__PURE__ */ jsxs11(AlertDialogContent, { children: [
1242
- /* @__PURE__ */ jsxs11(AlertDialogHeader, { children: [
1243
- /* @__PURE__ */ jsx15(AlertDialogTitle, { children: "Are you sure?" }),
1244
- /* @__PURE__ */ jsxs11(AlertDialogDescription, { children: [
1239
+ /* @__PURE__ */ jsxs12(AlertDialogContent, { children: [
1240
+ /* @__PURE__ */ jsxs12(AlertDialogHeader, { children: [
1241
+ /* @__PURE__ */ jsx14(AlertDialogTitle, { children: "Are you sure?" }),
1242
+ /* @__PURE__ */ jsxs12(AlertDialogDescription, { children: [
1245
1243
  "This will permanently delete this ",
1246
1244
  itemName,
1247
1245
  ". This action cannot be undone."
1248
1246
  ] })
1249
1247
  ] }),
1250
- /* @__PURE__ */ jsxs11(AlertDialogFooter, { children: [
1251
- /* @__PURE__ */ jsx15(AlertDialogCancel, { children: "Cancel" }),
1252
- /* @__PURE__ */ jsx15(
1248
+ /* @__PURE__ */ jsxs12(AlertDialogFooter, { children: [
1249
+ /* @__PURE__ */ jsx14(AlertDialogCancel, { children: "Cancel" }),
1250
+ /* @__PURE__ */ jsx14(
1253
1251
  AlertDialogAction,
1254
1252
  {
1255
1253
  onClick: onDelete,
@@ -1260,7 +1258,7 @@ function EntityFormActions({
1260
1258
  ] })
1261
1259
  ] })
1262
1260
  ] }),
1263
- onCancel && /* @__PURE__ */ jsx15(
1261
+ onCancel && /* @__PURE__ */ jsx14(
1264
1262
  Button,
1265
1263
  {
1266
1264
  variant: "ghost",
@@ -1276,7 +1274,7 @@ function EntityFormActions({
1276
1274
  // src/components/entity/entity-header.tsx
1277
1275
  import { IconChevronDown as IconChevronDown4, IconChevronUp as IconChevronUp2 } from "@tabler/icons-react";
1278
1276
  import { useState as useState5 } from "react";
1279
- import { jsx as jsx16, jsxs as jsxs12 } from "react/jsx-runtime";
1277
+ import { jsx as jsx15, jsxs as jsxs13 } from "react/jsx-runtime";
1280
1278
  function EntityHeader({
1281
1279
  title,
1282
1280
  icon,
@@ -1288,15 +1286,15 @@ function EntityHeader({
1288
1286
  }) {
1289
1287
  const [toolbarOpen, setToolbarOpen] = useState5(false);
1290
1288
  const hasToolbar = [search, filter, sort, view].some(Boolean);
1291
- return /* @__PURE__ */ jsx16(Card, { className: "p-4", children: /* @__PURE__ */ jsxs12("div", { className: "flex flex-col gap-4", children: [
1292
- /* @__PURE__ */ jsxs12("div", { className: "flex items-center justify-between", children: [
1293
- /* @__PURE__ */ jsxs12("div", { className: "flex items-center gap-2", children: [
1289
+ return /* @__PURE__ */ jsx15(Card, { className: "p-4", children: /* @__PURE__ */ jsxs13("div", { className: "flex flex-col gap-4", children: [
1290
+ /* @__PURE__ */ jsxs13("div", { className: "flex items-center justify-between", children: [
1291
+ /* @__PURE__ */ jsxs13("div", { className: "flex items-center gap-2", children: [
1294
1292
  icon,
1295
- /* @__PURE__ */ jsx16("span", { className: "text-lg font-semibold", children: title })
1293
+ /* @__PURE__ */ jsx15("span", { className: "text-lg font-semibold", children: title })
1296
1294
  ] }),
1297
- /* @__PURE__ */ jsxs12("div", { className: "flex items-center gap-2", children: [
1295
+ /* @__PURE__ */ jsxs13("div", { className: "flex items-center gap-3", children: [
1298
1296
  actions,
1299
- hasToolbar && /* @__PURE__ */ jsx16(
1297
+ hasToolbar && /* @__PURE__ */ jsx15(
1300
1298
  Button,
1301
1299
  {
1302
1300
  variant: "secondary",
@@ -1305,22 +1303,22 @@ function EntityHeader({
1305
1303
  onClick: () => setToolbarOpen((o) => !o),
1306
1304
  "aria-expanded": toolbarOpen,
1307
1305
  "aria-label": toolbarOpen ? "Hide filters" : "Show filters",
1308
- children: toolbarOpen ? /* @__PURE__ */ jsx16(IconChevronUp2, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx16(IconChevronDown4, { className: "h-4 w-4" })
1306
+ children: toolbarOpen ? /* @__PURE__ */ jsx15(IconChevronUp2, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx15(IconChevronDown4, { className: "h-4 w-4" })
1309
1307
  }
1310
1308
  )
1311
1309
  ] })
1312
1310
  ] }),
1313
- hasToolbar && /* @__PURE__ */ jsxs12(
1311
+ hasToolbar && /* @__PURE__ */ jsxs13(
1314
1312
  "div",
1315
1313
  {
1316
1314
  className: cn(
1317
- "flex flex-col gap-2 md:flex-row md:items-center md:justify-between",
1315
+ "flex flex-col gap-2 md:flex-row md:items-center md:gap-2 md:justify-between",
1318
1316
  !toolbarOpen && "hidden",
1319
1317
  "md:flex"
1320
1318
  ),
1321
1319
  children: [
1322
- /* @__PURE__ */ jsx16("div", { className: "w-full *:w-full *:max-w-none md:*:max-w-md md:grow", children: search }),
1323
- /* @__PURE__ */ jsxs12("div", { className: "flex w-full flex-col gap-2 *:w-full md:w-auto md:flex-row md:items-center md:gap-2 md:*:w-auto", children: [
1320
+ /* @__PURE__ */ jsx15("div", { className: "w-full min-w-0 flex-1 md:min-w-[12rem]", children: search }),
1321
+ /* @__PURE__ */ jsxs13("div", { className: "flex w-full shrink-0 flex-col gap-2 *:w-full md:w-auto md:flex-row md:items-center md:gap-2 md:*:w-auto", children: [
1324
1322
  filter,
1325
1323
  sort,
1326
1324
  view
@@ -1332,9 +1330,9 @@ function EntityHeader({
1332
1330
  }
1333
1331
 
1334
1332
  // src/components/skeleton.tsx
1335
- import { jsx as jsx17 } from "react/jsx-runtime";
1333
+ import { jsx as jsx16 } from "react/jsx-runtime";
1336
1334
  function Skeleton({ className, ...props }) {
1337
- return /* @__PURE__ */ jsx17(
1335
+ return /* @__PURE__ */ jsx16(
1338
1336
  "div",
1339
1337
  {
1340
1338
  "data-slot": "skeleton",
@@ -1345,14 +1343,14 @@ function Skeleton({ className, ...props }) {
1345
1343
  }
1346
1344
 
1347
1345
  // src/components/table.tsx
1348
- import { jsx as jsx18 } from "react/jsx-runtime";
1346
+ import { jsx as jsx17 } from "react/jsx-runtime";
1349
1347
  function Table({ className, ...props }) {
1350
- return /* @__PURE__ */ jsx18(
1348
+ return /* @__PURE__ */ jsx17(
1351
1349
  "div",
1352
1350
  {
1353
1351
  "data-slot": "table-container",
1354
1352
  className: "relative w-full overflow-x-auto",
1355
- children: /* @__PURE__ */ jsx18(
1353
+ children: /* @__PURE__ */ jsx17(
1356
1354
  "table",
1357
1355
  {
1358
1356
  "data-slot": "table",
@@ -1364,7 +1362,7 @@ function Table({ className, ...props }) {
1364
1362
  );
1365
1363
  }
1366
1364
  function TableHeader({ className, ...props }) {
1367
- return /* @__PURE__ */ jsx18(
1365
+ return /* @__PURE__ */ jsx17(
1368
1366
  "thead",
1369
1367
  {
1370
1368
  "data-slot": "table-header",
@@ -1374,7 +1372,7 @@ function TableHeader({ className, ...props }) {
1374
1372
  );
1375
1373
  }
1376
1374
  function TableBody({ className, ...props }) {
1377
- return /* @__PURE__ */ jsx18(
1375
+ return /* @__PURE__ */ jsx17(
1378
1376
  "tbody",
1379
1377
  {
1380
1378
  "data-slot": "table-body",
@@ -1384,7 +1382,7 @@ function TableBody({ className, ...props }) {
1384
1382
  );
1385
1383
  }
1386
1384
  function TableRow({ className, ...props }) {
1387
- return /* @__PURE__ */ jsx18(
1385
+ return /* @__PURE__ */ jsx17(
1388
1386
  "tr",
1389
1387
  {
1390
1388
  "data-slot": "table-row",
@@ -1397,7 +1395,7 @@ function TableRow({ className, ...props }) {
1397
1395
  );
1398
1396
  }
1399
1397
  function TableHead({ className, ...props }) {
1400
- return /* @__PURE__ */ jsx18(
1398
+ return /* @__PURE__ */ jsx17(
1401
1399
  "th",
1402
1400
  {
1403
1401
  "data-slot": "table-head",
@@ -1410,7 +1408,7 @@ function TableHead({ className, ...props }) {
1410
1408
  );
1411
1409
  }
1412
1410
  function TableCell({ className, ...props }) {
1413
- return /* @__PURE__ */ jsx18(
1411
+ return /* @__PURE__ */ jsx17(
1414
1412
  "td",
1415
1413
  {
1416
1414
  "data-slot": "table-cell",
@@ -1424,7 +1422,7 @@ function TableCell({ className, ...props }) {
1424
1422
  }
1425
1423
 
1426
1424
  // src/components/entity/entity-loading-state.tsx
1427
- import { jsx as jsx19, jsxs as jsxs13 } from "react/jsx-runtime";
1425
+ import { jsx as jsx18, jsxs as jsxs14 } from "react/jsx-runtime";
1428
1426
  function EntityLoadingState({
1429
1427
  view,
1430
1428
  rowCount = 5,
@@ -1433,31 +1431,38 @@ function EntityLoadingState({
1433
1431
  className
1434
1432
  }) {
1435
1433
  if (view === "table") {
1436
- return /* @__PURE__ */ jsx19("div", { className: cn("rounded-md border", className), children: /* @__PURE__ */ jsxs13(Table, { children: [
1437
- /* @__PURE__ */ jsx19(TableHeader, { children: /* @__PURE__ */ jsx19(TableRow, { children: Array.from({ length: columnCount }).map((_, i) => /* @__PURE__ */ jsx19(TableHead, { children: /* @__PURE__ */ jsx19(Skeleton, { className: "h-4 w-24" }) }, `header-${i}`)) }) }),
1438
- /* @__PURE__ */ jsx19(TableBody, { children: Array.from({ length: rowCount }).map((_, rowIndex) => /* @__PURE__ */ jsx19(TableRow, { children: Array.from({ length: columnCount }).map((_2, colIndex) => /* @__PURE__ */ jsx19(TableCell, { children: /* @__PURE__ */ jsx19(Skeleton, { className: "h-4 w-full" }) }, `cell-${rowIndex}-${colIndex}`)) }, `row-${rowIndex}`)) })
1434
+ return /* @__PURE__ */ jsx18("div", { className: cn("rounded-md border", className), children: /* @__PURE__ */ jsxs14(Table, { children: [
1435
+ /* @__PURE__ */ jsx18(TableHeader, { children: /* @__PURE__ */ jsx18(TableRow, { children: Array.from({ length: columnCount }).map((_, i) => /* @__PURE__ */ jsx18(TableHead, { children: /* @__PURE__ */ jsx18(Skeleton, { className: "h-4 w-24" }) }, `header-${i}`)) }) }),
1436
+ /* @__PURE__ */ jsx18(TableBody, { children: Array.from({ length: rowCount }).map((_, rowIndex) => /* @__PURE__ */ jsx18(TableRow, { children: Array.from({ length: columnCount }).map((_2, colIndex) => /* @__PURE__ */ jsx18(TableCell, { children: /* @__PURE__ */ jsx18(Skeleton, { className: "h-4 w-full" }) }, `cell-${rowIndex}-${colIndex}`)) }, `row-${rowIndex}`)) })
1439
1437
  ] }) });
1440
1438
  }
1441
- return /* @__PURE__ */ jsx19(
1439
+ return /* @__PURE__ */ jsx18(
1442
1440
  "div",
1443
1441
  {
1444
1442
  className: cn(
1445
1443
  "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4",
1446
1444
  className
1447
1445
  ),
1448
- children: Array.from({ length: cardCount }).map((_, i) => /* @__PURE__ */ jsxs13("div", { className: "space-y-3 rounded-lg border p-4", children: [
1449
- /* @__PURE__ */ jsxs13("div", { className: "flex items-center gap-2", children: [
1450
- /* @__PURE__ */ jsx19(Skeleton, { className: "h-4 w-4 rounded-full" }),
1451
- /* @__PURE__ */ jsx19(Skeleton, { className: "h-5 w-32" })
1452
- ] }),
1453
- /* @__PURE__ */ jsxs13("div", { className: "flex gap-2", children: [
1454
- /* @__PURE__ */ jsx19(Skeleton, { className: "h-5 w-16" }),
1455
- /* @__PURE__ */ jsx19(Skeleton, { className: "h-5 w-16" })
1456
- ] }),
1457
- /* @__PURE__ */ jsx19(Skeleton, { className: "h-4 w-full" }),
1458
- /* @__PURE__ */ jsx19(Skeleton, { className: "h-4 w-3/4" }),
1459
- /* @__PURE__ */ jsx19(Skeleton, { className: "h-3 w-24" })
1460
- ] }, `card-${i}`))
1446
+ children: Array.from({ length: cardCount }).map((_, i) => /* @__PURE__ */ jsxs14(
1447
+ "div",
1448
+ {
1449
+ className: "border-border space-y-3 rounded-lg border p-4",
1450
+ children: [
1451
+ /* @__PURE__ */ jsxs14("div", { className: "flex items-center gap-2", children: [
1452
+ /* @__PURE__ */ jsx18(Skeleton, { className: "h-4 w-4 rounded-full" }),
1453
+ /* @__PURE__ */ jsx18(Skeleton, { className: "h-5 w-32" })
1454
+ ] }),
1455
+ /* @__PURE__ */ jsxs14("div", { className: "flex gap-2", children: [
1456
+ /* @__PURE__ */ jsx18(Skeleton, { className: "h-5 w-16" }),
1457
+ /* @__PURE__ */ jsx18(Skeleton, { className: "h-5 w-16" })
1458
+ ] }),
1459
+ /* @__PURE__ */ jsx18(Skeleton, { className: "h-4 w-full" }),
1460
+ /* @__PURE__ */ jsx18(Skeleton, { className: "h-4 w-3/4" }),
1461
+ /* @__PURE__ */ jsx18(Skeleton, { className: "h-3 w-24" })
1462
+ ]
1463
+ },
1464
+ `card-${i}`
1465
+ ))
1461
1466
  }
1462
1467
  );
1463
1468
  }
@@ -1469,9 +1474,9 @@ import { useRef as useRef2 } from "react";
1469
1474
  import { useDebouncedCallback } from "use-debounce";
1470
1475
 
1471
1476
  // src/components/input.tsx
1472
- import { jsx as jsx20 } from "react/jsx-runtime";
1477
+ import { jsx as jsx19 } from "react/jsx-runtime";
1473
1478
  function Input({ className, type, ...props }) {
1474
- return /* @__PURE__ */ jsx20(
1479
+ return /* @__PURE__ */ jsx19(
1475
1480
  "input",
1476
1481
  {
1477
1482
  type,
@@ -1488,7 +1493,7 @@ function Input({ className, type, ...props }) {
1488
1493
  }
1489
1494
 
1490
1495
  // src/components/entity/entity-search.tsx
1491
- import { jsx as jsx21, jsxs as jsxs14 } from "react/jsx-runtime";
1496
+ import { jsx as jsx20, jsxs as jsxs15 } from "react/jsx-runtime";
1492
1497
  function EntitySearch({
1493
1498
  paramKey = "search",
1494
1499
  placeholder = "Search...",
@@ -1511,9 +1516,9 @@ function EntitySearch({
1511
1516
  ref.current.value = "";
1512
1517
  }
1513
1518
  };
1514
- return /* @__PURE__ */ jsxs14("div", { className: cn("relative w-full min-w-0", className), children: [
1515
- /* @__PURE__ */ jsx21(IconSearch, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground" }),
1516
- /* @__PURE__ */ jsx21(
1519
+ return /* @__PURE__ */ jsxs15("div", { className: cn("relative w-full min-w-0", className), children: [
1520
+ /* @__PURE__ */ jsx20(IconSearch, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground" }),
1521
+ /* @__PURE__ */ jsx20(
1517
1522
  Input,
1518
1523
  {
1519
1524
  ref,
@@ -1523,13 +1528,13 @@ function EntitySearch({
1523
1528
  className: "w-full min-w-0 pl-9 pr-9"
1524
1529
  }
1525
1530
  ),
1526
- value && /* @__PURE__ */ jsx21(
1531
+ value && /* @__PURE__ */ jsx20(
1527
1532
  "button",
1528
1533
  {
1529
1534
  type: "button",
1530
1535
  onClick: handleClear,
1531
1536
  className: "absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground",
1532
- children: /* @__PURE__ */ jsx21(IconX2, { className: "h-4 w-4" })
1537
+ children: /* @__PURE__ */ jsx20(IconX2, { className: "h-4 w-4" })
1533
1538
  }
1534
1539
  )
1535
1540
  ] });
@@ -1541,7 +1546,7 @@ import {
1541
1546
  IconSortDescendingLetters
1542
1547
  } from "@tabler/icons-react";
1543
1548
  import { parseAsInteger as parseAsInteger3, parseAsString as parseAsString3, useQueryState as useQueryState3 } from "nuqs";
1544
- import { jsx as jsx22, jsxs as jsxs15 } from "react/jsx-runtime";
1549
+ import { jsx as jsx21, jsxs as jsxs16 } from "react/jsx-runtime";
1545
1550
  function EntitySort({
1546
1551
  options,
1547
1552
  defaultSort = "createdAt",
@@ -1565,19 +1570,19 @@ function EntitySort({
1565
1570
  setOrder(order === "asc" ? "desc" : "asc");
1566
1571
  setPage(1);
1567
1572
  };
1568
- return /* @__PURE__ */ jsxs15("div", { className: cn("flex w-full items-center gap-0", className), children: [
1569
- /* @__PURE__ */ jsx22("div", { className: "min-w-0 flex-1", children: /* @__PURE__ */ jsxs15(Select, { value: sort, onValueChange: handleSortChange, children: [
1570
- /* @__PURE__ */ jsx22(SelectTrigger, { className: "h-9 w-full min-w-[150px] rounded-r-none border-r-0", children: /* @__PURE__ */ jsx22(SelectValue, { placeholder: "Sort by" }) }),
1571
- /* @__PURE__ */ jsx22(SelectContent, { children: options.map((option) => /* @__PURE__ */ jsx22(SelectItem, { value: option.value, children: option.label }, option.value)) })
1573
+ return /* @__PURE__ */ jsxs16("div", { className: cn("flex w-full items-center gap-0", className), children: [
1574
+ /* @__PURE__ */ jsx21("div", { className: "min-w-0 flex-1", children: /* @__PURE__ */ jsxs16(Select, { value: sort, onValueChange: handleSortChange, children: [
1575
+ /* @__PURE__ */ jsx21(SelectTrigger, { className: "h-9 w-full min-w-[150px] rounded-r-none border-r-0", children: /* @__PURE__ */ jsx21(SelectValue, { placeholder: "Sort by" }) }),
1576
+ /* @__PURE__ */ jsx21(SelectContent, { children: options.map((option) => /* @__PURE__ */ jsx21(SelectItem, { value: option.value, children: option.label }, option.value)) })
1572
1577
  ] }) }),
1573
- /* @__PURE__ */ jsx22(
1578
+ /* @__PURE__ */ jsx21(
1574
1579
  Button,
1575
1580
  {
1576
1581
  variant: "outline",
1577
1582
  size: "icon",
1578
1583
  className: "h-9 shrink-0 rounded-l-none",
1579
1584
  onClick: toggleOrder,
1580
- children: order === "asc" ? /* @__PURE__ */ jsx22(IconSortAscendingLetters, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx22(IconSortDescendingLetters, { className: "h-4 w-4" })
1585
+ children: order === "asc" ? /* @__PURE__ */ jsx21(IconSortAscendingLetters, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx21(IconSortDescendingLetters, { className: "h-4 w-4" })
1581
1586
  }
1582
1587
  )
1583
1588
  ] });
@@ -1590,7 +1595,7 @@ import { parseAsString as parseAsString4, useQueryState as useQueryState4 } from
1590
1595
  // src/components/toggle.tsx
1591
1596
  import * as TogglePrimitive from "@radix-ui/react-toggle";
1592
1597
  import { cva as cva3 } from "class-variance-authority";
1593
- import { jsx as jsx23 } from "react/jsx-runtime";
1598
+ import { jsx as jsx22 } from "react/jsx-runtime";
1594
1599
  var toggleVariants = cva3(
1595
1600
  "inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap",
1596
1601
  {
@@ -1615,7 +1620,7 @@ var toggleVariants = cva3(
1615
1620
  // src/components/toggle-group.tsx
1616
1621
  import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
1617
1622
  import * as React from "react";
1618
- import { jsx as jsx24 } from "react/jsx-runtime";
1623
+ import { jsx as jsx23 } from "react/jsx-runtime";
1619
1624
  var ToggleGroupContext = React.createContext({
1620
1625
  size: "default",
1621
1626
  variant: "default",
@@ -1629,7 +1634,7 @@ function ToggleGroup({
1629
1634
  children,
1630
1635
  ...props
1631
1636
  }) {
1632
- return /* @__PURE__ */ jsx24(
1637
+ return /* @__PURE__ */ jsx23(
1633
1638
  ToggleGroupPrimitive.Root,
1634
1639
  {
1635
1640
  "data-slot": "toggle-group",
@@ -1642,7 +1647,7 @@ function ToggleGroup({
1642
1647
  className
1643
1648
  ),
1644
1649
  ...props,
1645
- children: /* @__PURE__ */ jsx24(ToggleGroupContext.Provider, { value: { variant, size, spacing }, children })
1650
+ children: /* @__PURE__ */ jsx23(ToggleGroupContext.Provider, { value: { variant, size, spacing }, children })
1646
1651
  }
1647
1652
  );
1648
1653
  }
@@ -1654,7 +1659,7 @@ function ToggleGroupItem({
1654
1659
  ...props
1655
1660
  }) {
1656
1661
  const context = React.useContext(ToggleGroupContext);
1657
- return /* @__PURE__ */ jsx24(
1662
+ return /* @__PURE__ */ jsx23(
1658
1663
  ToggleGroupPrimitive.Item,
1659
1664
  {
1660
1665
  "data-slot": "toggle-group-item",
@@ -1677,11 +1682,11 @@ function ToggleGroupItem({
1677
1682
  }
1678
1683
 
1679
1684
  // src/components/entity/entity-view-toggle.tsx
1680
- import { jsx as jsx25 } from "react/jsx-runtime";
1685
+ import { jsx as jsx24 } from "react/jsx-runtime";
1681
1686
  var viewIcons = {
1682
- table: /* @__PURE__ */ jsx25(IconTable, { className: "h-4 w-4" }),
1683
- card: /* @__PURE__ */ jsx25(IconGridDots, { className: "h-4 w-4" }),
1684
- list: /* @__PURE__ */ jsx25(IconList, { className: "h-4 w-4" })
1687
+ table: /* @__PURE__ */ jsx24(IconTable, { className: "h-4 w-4" }),
1688
+ card: /* @__PURE__ */ jsx24(IconGridDots, { className: "h-4 w-4" }),
1689
+ list: /* @__PURE__ */ jsx24(IconList, { className: "h-4 w-4" })
1685
1690
  };
1686
1691
  function EntityViewToggle({
1687
1692
  views = ["table", "card"],
@@ -1691,14 +1696,14 @@ function EntityViewToggle({
1691
1696
  "view",
1692
1697
  parseAsString4.withDefault("table")
1693
1698
  );
1694
- return /* @__PURE__ */ jsx25(
1699
+ return /* @__PURE__ */ jsx24(
1695
1700
  ToggleGroup,
1696
1701
  {
1697
1702
  type: "single",
1698
1703
  value,
1699
1704
  onValueChange: (v) => v && setValue(v),
1700
1705
  className: cn("w-full! border rounded-md md:w-auto!", className),
1701
- children: views.map((v) => /* @__PURE__ */ jsx25(
1706
+ children: views.map((v) => /* @__PURE__ */ jsx24(
1702
1707
  ToggleGroupItem,
1703
1708
  {
1704
1709
  value: v,