@mesob/ui 0.2.0 → 0.2.2

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 (78) hide show
  1. package/dist/components/alert-dialog.js +10 -10
  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 +68 -53
  8. package/dist/components/app-header-actions.js.map +1 -1
  9. package/dist/components/app-sidebar.js +33 -28
  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 +15 -7
  15. package/dist/components/button.js.map +1 -1
  16. package/dist/components/calendar.js +15 -7
  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 +18 -10
  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 +129 -120
  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 +138 -133
  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 +15 -7
  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 +24 -16
  46. package/dist/components/page/index.js.map +1 -1
  47. package/dist/components/pagination.js +10 -10
  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 +19 -11
  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 -31
  58. package/dist/components/shell.js.map +1 -1
  59. package/dist/components/sidebar-context.d.ts +19 -0
  60. package/dist/components/sidebar-context.js +17 -0
  61. package/dist/components/sidebar-context.js.map +1 -0
  62. package/dist/components/sidebar.d.ts +2 -15
  63. package/dist/components/sidebar.js +51 -38
  64. package/dist/components/sidebar.js.map +1 -1
  65. package/dist/components/spotlight-search.js +38 -30
  66. package/dist/components/spotlight-search.js.map +1 -1
  67. package/dist/components/theme-toggle.js +17 -9
  68. package/dist/components/theme-toggle.js.map +1 -1
  69. package/dist/hooks/use-translation.js +3 -2
  70. package/dist/hooks/use-translation.js.map +1 -1
  71. package/dist/index.d.ts +1 -0
  72. package/dist/index.js +94 -1
  73. package/dist/index.js.map +1 -1
  74. package/dist/lib/theme-schema.d.ts +21 -0
  75. package/dist/lib/theme-schema.js +95 -0
  76. package/dist/lib/theme-schema.js.map +1 -0
  77. package/package.json +2 -5
  78. 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 { Fragment, jsx, 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,6 +45,9 @@ 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";
@@ -53,14 +56,19 @@ function Button({
53
56
  {
54
57
  "data-slot": "button",
55
58
  className: cn(buttonVariants({ variant, size, className })),
56
- ...props
59
+ ...props,
60
+ children: asChild ? children : /* @__PURE__ */ jsxs(Fragment, { 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 as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
64
72
  function AlertDialog({
65
73
  ...props
66
74
  }) {
@@ -85,7 +93,7 @@ function AlertDialogOverlay({
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: [
107
+ return /* @__PURE__ */ jsxs2(AlertDialogPortal, { children: [
100
108
  /* @__PURE__ */ jsx2(AlertDialogOverlay, {}),
101
109
  /* @__PURE__ */ jsx2(
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
@@ -194,7 +202,7 @@ 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 jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
198
206
  function DropdownMenu({
199
207
  ...props
200
208
  }) {
@@ -222,7 +230,7 @@ function DropdownMenuContent({
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
@@ -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 as Fragment2, jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
268
276
  function EntityBulkActions({
269
277
  selectedCount,
270
278
  actions,
@@ -291,9 +299,9 @@ function EntityBulkActions({
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(Fragment2, { children: [
303
+ /* @__PURE__ */ jsxs4(DropdownMenu, { children: [
304
+ /* @__PURE__ */ jsx4(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxs4(
297
305
  Button,
298
306
  {
299
307
  variant: "outline",
@@ -306,9 +314,9 @@ function EntityBulkActions({
306
314
  ]
307
315
  }
308
316
  ) }),
309
- /* @__PURE__ */ jsx4(DropdownMenuContent, { align: "end", children: allActions.map((action, index) => /* @__PURE__ */ jsxs3("div", { children: [
317
+ /* @__PURE__ */ jsx4(DropdownMenuContent, { align: "end", children: allActions.map((action, index) => /* @__PURE__ */ jsxs4("div", { children: [
310
318
  action.variant === "destructive" && index > 0 && /* @__PURE__ */ jsx4(DropdownMenuSeparator, {}),
311
- /* @__PURE__ */ jsxs3(
319
+ /* @__PURE__ */ jsxs4(
312
320
  DropdownMenuItem,
313
321
  {
314
322
  onClick: action.onClick,
@@ -321,22 +329,22 @@ 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__ */ jsx4(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: [
347
+ /* @__PURE__ */ jsxs4(AlertDialogFooter, { children: [
340
348
  /* @__PURE__ */ jsx4(AlertDialogCancel, { children: "Cancel" }),
341
349
  /* @__PURE__ */ jsx4(
342
350
  AlertDialogAction,
@@ -367,7 +375,7 @@ function Card({ className, ...props }) {
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,7 +386,7 @@ 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 jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
382
390
  function Select({
383
391
  ...props
384
392
  }) {
@@ -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",
@@ -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__ */ jsx6(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
  ),
@@ -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",
@@ -505,7 +513,7 @@ function SelectScrollDownButton({
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 jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
509
517
  function EntityDetailHeader({
510
518
  title,
511
519
  icon,
@@ -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
700
  /* @__PURE__ */ jsx7("span", { className: "text-lg font-semibold", children: title })
693
701
  ] }),
694
702
  actions && /* @__PURE__ */ jsx7("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: [
704
+ /* @__PURE__ */ jsxs6("div", { ref: containerRef, className: "w-full px-4", children: [
705
+ /* @__PURE__ */ jsx7("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: [
699
707
  /* @__PURE__ */ jsx7(IconMenu2, { className: "size-4 text-muted-foreground" }),
700
708
  /* @__PURE__ */ jsx7(SelectValue, {})
701
709
  ] }),
702
710
  /* @__PURE__ */ jsx7(SelectContent, { children: tabs.map((tab) => /* @__PURE__ */ jsx7(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,
@@ -761,7 +769,7 @@ 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 jsx8, jsxs as jsxs7 } from "react/jsx-runtime";
765
773
  function Sheet({ ...props }) {
766
774
  return /* @__PURE__ */ jsx8(SheetPrimitive.Root, { "data-slot": "sheet", ...props });
767
775
  }
@@ -779,7 +787,7 @@ function SheetOverlay({
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: [
803
+ return /* @__PURE__ */ jsxs7(SheetPortal, { children: [
796
804
  /* @__PURE__ */ jsx8(SheetOverlay, {}),
797
- /* @__PURE__ */ jsxs6(
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,7 +817,7 @@ 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: [
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: [
813
821
  /* @__PURE__ */ jsx8(IconX, { className: "size-4" }),
814
822
  /* @__PURE__ */ jsx8("span", { className: "sr-only", children: "Close" })
815
823
  ] })
@@ -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 Fragment3, jsx as jsx9, 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(Fragment3, { children: [
883
+ /* @__PURE__ */ jsx9(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,18 +897,18 @@ 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__ */ jsx9(SheetHeader, { className: "border-border bg-background border-b px-6 py-4", children: /* @__PURE__ */ jsx9(SheetTitle, { children: title }) }),
901
+ /* @__PURE__ */ jsx9("div", { className: "bg-background flex-1 overflow-y-auto px-6 py-4", children: form }),
902
+ /* @__PURE__ */ jsx9("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: [
906
+ /* @__PURE__ */ jsx9(AlertDialog, { open: showConfirm, onOpenChange: setShowConfirm, children: /* @__PURE__ */ jsxs8(AlertDialogContent, { children: [
907
+ /* @__PURE__ */ jsxs8(AlertDialogHeader, { children: [
900
908
  /* @__PURE__ */ jsx9(AlertDialogTitle, { children: "Discard changes?" }),
901
909
  /* @__PURE__ */ jsx9(AlertDialogDescription, { children: "You have unsaved changes. Are you sure you want to discard them?" })
902
910
  ] }),
903
- /* @__PURE__ */ jsxs7(AlertDialogFooter, { children: [
911
+ /* @__PURE__ */ jsxs8(AlertDialogFooter, { children: [
904
912
  /* @__PURE__ */ jsx9(AlertDialogCancel, { children: "Cancel" }),
905
913
  /* @__PURE__ */ jsx9(
906
914
  AlertDialogAction,
@@ -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 Fragment4, jsx as jsx10, 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: [
959
+ return /* @__PURE__ */ jsxs9(Fragment4, { children: [
952
960
  mode === "edit" && variant === "icon" && /* @__PURE__ */ jsx10(
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__ */ jsx10(IconChevronRight2, { className: "size-4" })
961
969
  }
962
970
  ),
963
- mode === "edit" && variant !== "icon" && /* @__PURE__ */ jsxs8(
971
+ mode === "edit" && variant !== "icon" && /* @__PURE__ */ jsx10(
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__ */ jsx10(IconPencil, { className: "size-4" }),
980
+ children: buttonLabel
975
981
  }
976
982
  ),
977
- mode === "new" && /* @__PURE__ */ jsxs8(
983
+ mode === "new" && /* @__PURE__ */ jsx10(
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__ */ jsx10(IconPlus, { className: "size-4" }),
995
+ children: /* @__PURE__ */ jsx10("span", { className: "hidden sm:inline", children: buttonLabel })
992
996
  }
993
997
  ),
994
998
  open && children(open, handleClose)
@@ -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 jsx12, jsxs as jsxs10 } from "react/jsx-runtime";
1098
1102
  function EntityEmptyState({
1099
1103
  icon: Icon2 = IconPackage,
1100
1104
  title,
@@ -1108,8 +1112,8 @@ 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: [
1115
+ return /* @__PURE__ */ jsxs10(Empty, { className: cn("border py-12", className), children: [
1116
+ /* @__PURE__ */ jsxs10(EmptyHeader, { children: [
1113
1117
  /* @__PURE__ */ jsx12(EmptyMedia, { variant: "icon", children: /* @__PURE__ */ jsx12(Icon2, { className: "size-5" }) }),
1114
1118
  /* @__PURE__ */ jsx12(EmptyTitle, { children: title ?? defaultTitle }),
1115
1119
  /* @__PURE__ */ jsx12(EmptyDescription, { children: description ?? defaultDescription })
@@ -1121,7 +1125,7 @@ function EntityEmptyState({
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 jsx13, jsxs as jsxs11 } from "react/jsx-runtime";
1125
1129
  function EntityFilter({
1126
1130
  options,
1127
1131
  placeholder = "Filter",
@@ -1140,14 +1144,14 @@ 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: [
1147
+ return /* @__PURE__ */ jsxs11("div", { className: cn("flex w-full items-center gap-2", className), children: [
1144
1148
  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" }),
1149
+ /* @__PURE__ */ jsx13("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__ */ jsx13(IconFilter, { className: "size-4" }),
1148
1152
  /* @__PURE__ */ jsx13(SelectValue, { placeholder })
1149
1153
  ] }),
1150
- /* @__PURE__ */ jsxs10(SelectContent, { children: [
1154
+ /* @__PURE__ */ jsxs11(SelectContent, { children: [
1151
1155
  options.some((opt) => opt.value === "") && /* @__PURE__ */ jsx13(SelectItem, { value: "__all__", children: options.find((opt) => opt.value === "")?.label || "All" }, "__all__"),
1152
1156
  validOptions.map((option) => /* @__PURE__ */ jsx13(SelectItem, { value: option.value, children: option.label }, option.value))
1153
1157
  ] })
@@ -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 jsx15, 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__ */ jsx15(
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__ */ jsx15(Spinner, { className: "size-4" }) : /* @__PURE__ */ jsx15(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",
@@ -1224,30 +1225,27 @@ function EntityFormActions({
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__ */ jsx15(AlertDialogTrigger, { asChild: true, children: /* @__PURE__ */ jsx15(
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__ */ jsx15(Spinner, { className: "size-4" }) : /* @__PURE__ */ jsx15(IconTrash2, { className: "size-4" }),
1236
+ children: deleteLabel
1239
1237
  }
1240
1238
  ) }),
1241
- /* @__PURE__ */ jsxs11(AlertDialogContent, { children: [
1242
- /* @__PURE__ */ jsxs11(AlertDialogHeader, { children: [
1239
+ /* @__PURE__ */ jsxs12(AlertDialogContent, { children: [
1240
+ /* @__PURE__ */ jsxs12(AlertDialogHeader, { children: [
1243
1241
  /* @__PURE__ */ jsx15(AlertDialogTitle, { children: "Are you sure?" }),
1244
- /* @__PURE__ */ jsxs11(AlertDialogDescription, { children: [
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: [
1248
+ /* @__PURE__ */ jsxs12(AlertDialogFooter, { children: [
1251
1249
  /* @__PURE__ */ jsx15(AlertDialogCancel, { children: "Cancel" }),
1252
1250
  /* @__PURE__ */ jsx15(
1253
1251
  AlertDialogAction,
@@ -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 jsx16, jsxs as jsxs13 } from "react/jsx-runtime";
1280
1278
  function EntityHeader({
1281
1279
  title,
1282
1280
  icon,
@@ -1288,13 +1286,13 @@ 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__ */ jsx16(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
1293
  /* @__PURE__ */ jsx16("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
1297
  hasToolbar && /* @__PURE__ */ jsx16(
1300
1298
  Button,
@@ -1310,17 +1308,17 @@ function EntityHeader({
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__ */ jsx16("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
@@ -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 jsx19, jsxs as jsxs14 } from "react/jsx-runtime";
1428
1426
  function EntityLoadingState({
1429
1427
  view,
1430
1428
  rowCount = 5,
@@ -1433,7 +1431,7 @@ 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: [
1434
+ return /* @__PURE__ */ jsx19("div", { className: cn("rounded-md border", className), children: /* @__PURE__ */ jsxs14(Table, { children: [
1437
1435
  /* @__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
1436
  /* @__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}`)) })
1439
1437
  ] }) });
@@ -1445,19 +1443,26 @@ function EntityLoadingState({
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__ */ jsx19(Skeleton, { className: "h-4 w-4 rounded-full" }),
1453
+ /* @__PURE__ */ jsx19(Skeleton, { className: "h-5 w-32" })
1454
+ ] }),
1455
+ /* @__PURE__ */ jsxs14("div", { className: "flex gap-2", children: [
1456
+ /* @__PURE__ */ jsx19(Skeleton, { className: "h-5 w-16" }),
1457
+ /* @__PURE__ */ jsx19(Skeleton, { className: "h-5 w-16" })
1458
+ ] }),
1459
+ /* @__PURE__ */ jsx19(Skeleton, { className: "h-4 w-full" }),
1460
+ /* @__PURE__ */ jsx19(Skeleton, { className: "h-4 w-3/4" }),
1461
+ /* @__PURE__ */ jsx19(Skeleton, { className: "h-3 w-24" })
1462
+ ]
1463
+ },
1464
+ `card-${i}`
1465
+ ))
1461
1466
  }
1462
1467
  );
1463
1468
  }
@@ -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 jsx21, jsxs as jsxs15 } from "react/jsx-runtime";
1492
1497
  function EntitySearch({
1493
1498
  paramKey = "search",
1494
1499
  placeholder = "Search...",
@@ -1511,7 +1516,7 @@ 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: [
1519
+ return /* @__PURE__ */ jsxs15("div", { className: cn("relative w-full min-w-0", className), children: [
1515
1520
  /* @__PURE__ */ jsx21(IconSearch, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground" }),
1516
1521
  /* @__PURE__ */ jsx21(
1517
1522
  Input,
@@ -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 jsx22, jsxs as jsxs16 } from "react/jsx-runtime";
1545
1550
  function EntitySort({
1546
1551
  options,
1547
1552
  defaultSort = "createdAt",
@@ -1565,8 +1570,8 @@ 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: [
1573
+ return /* @__PURE__ */ jsxs16("div", { className: cn("flex w-full items-center gap-0", className), children: [
1574
+ /* @__PURE__ */ jsx22("div", { className: "min-w-0 flex-1", children: /* @__PURE__ */ jsxs16(Select, { value: sort, onValueChange: handleSortChange, children: [
1570
1575
  /* @__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
1576
  /* @__PURE__ */ jsx22(SelectContent, { children: options.map((option) => /* @__PURE__ */ jsx22(SelectItem, { value: option.value, children: option.label }, option.value)) })
1572
1577
  ] }) }),