@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.
- package/dist/components/alert-dialog.js +10 -10
- package/dist/components/alert-dialog.js.map +1 -1
- package/dist/components/alert.js +1 -1
- package/dist/components/alert.js.map +1 -1
- package/dist/components/animated-tabs.js +1 -1
- package/dist/components/animated-tabs.js.map +1 -1
- package/dist/components/app-header-actions.js +68 -53
- package/dist/components/app-header-actions.js.map +1 -1
- package/dist/components/app-sidebar.js +33 -28
- package/dist/components/app-sidebar.js.map +1 -1
- package/dist/components/button-group.js +1 -1
- package/dist/components/button-group.js.map +1 -1
- package/dist/components/button.d.ts +6 -3
- package/dist/components/button.js +15 -7
- package/dist/components/button.js.map +1 -1
- package/dist/components/calendar.js +15 -7
- package/dist/components/calendar.js.map +1 -1
- package/dist/components/card.js +1 -1
- package/dist/components/card.js.map +1 -1
- package/dist/components/carousel.js +18 -10
- package/dist/components/carousel.js.map +1 -1
- package/dist/components/command.js +5 -5
- package/dist/components/command.js.map +1 -1
- package/dist/components/context-menu.js +2 -2
- package/dist/components/context-menu.js.map +1 -1
- package/dist/components/data-table/index.js +129 -120
- package/dist/components/data-table/index.js.map +1 -1
- package/dist/components/dialog.js +2 -2
- package/dist/components/dialog.js.map +1 -1
- package/dist/components/drawer.js +2 -2
- package/dist/components/drawer.js.map +1 -1
- package/dist/components/dropdown-menu.js +2 -2
- package/dist/components/dropdown-menu.js.map +1 -1
- package/dist/components/entity/index.js +138 -133
- package/dist/components/entity/index.js.map +1 -1
- package/dist/components/hover-card.js +1 -1
- package/dist/components/hover-card.js.map +1 -1
- package/dist/components/input-group.js +15 -7
- package/dist/components/input-group.js.map +1 -1
- package/dist/components/item.d.ts +1 -1
- package/dist/components/menubar.js +3 -3
- package/dist/components/menubar.js.map +1 -1
- package/dist/components/navigation-menu.js +1 -1
- package/dist/components/navigation-menu.js.map +1 -1
- package/dist/components/page/index.js +24 -16
- package/dist/components/page/index.js.map +1 -1
- package/dist/components/pagination.js +10 -10
- package/dist/components/pagination.js.map +1 -1
- package/dist/components/popover.js +1 -1
- package/dist/components/popover.js.map +1 -1
- package/dist/components/section/index.js +19 -11
- package/dist/components/section/index.js.map +1 -1
- package/dist/components/select.js +1 -1
- package/dist/components/select.js.map +1 -1
- package/dist/components/sheet.js +2 -2
- package/dist/components/sheet.js.map +1 -1
- package/dist/components/shell.js +44 -31
- package/dist/components/shell.js.map +1 -1
- package/dist/components/sidebar-context.d.ts +19 -0
- package/dist/components/sidebar-context.js +17 -0
- package/dist/components/sidebar-context.js.map +1 -0
- package/dist/components/sidebar.d.ts +2 -15
- package/dist/components/sidebar.js +51 -38
- package/dist/components/sidebar.js.map +1 -1
- package/dist/components/spotlight-search.js +38 -30
- package/dist/components/spotlight-search.js.map +1 -1
- package/dist/components/theme-toggle.js +17 -9
- package/dist/components/theme-toggle.js.map +1 -1
- package/dist/hooks/use-translation.js +3 -2
- package/dist/hooks/use-translation.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +94 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/theme-schema.d.ts +21 -0
- package/dist/lib/theme-schema.js +95 -0
- package/dist/lib/theme-schema.js.map +1 -0
- package/package.json +2 -5
- 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
|
|
22
|
-
destructive: "bg-destructive text-
|
|
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
|
|
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-
|
|
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__ */
|
|
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-
|
|
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
|
|
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
|
|
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__ */
|
|
295
|
-
/* @__PURE__ */
|
|
296
|
-
/* @__PURE__ */ jsx4(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
325
|
-
/* @__PURE__ */
|
|
326
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
687
|
-
/* @__PURE__ */
|
|
688
|
-
/* @__PURE__ */
|
|
689
|
-
/* @__PURE__ */
|
|
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__ */
|
|
697
|
-
/* @__PURE__ */ jsx7("div", { className: "mb-3 w-full sm:hidden", children: /* @__PURE__ */
|
|
698
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
717
|
-
/* @__PURE__ */
|
|
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
|
|
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-
|
|
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__ */
|
|
803
|
+
return /* @__PURE__ */ jsxs7(SheetPortal, { children: [
|
|
796
804
|
/* @__PURE__ */ jsx8(SheetOverlay, {}),
|
|
797
|
-
/* @__PURE__ */
|
|
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-
|
|
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__ */
|
|
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
|
|
854
|
+
import { Fragment as Fragment3, jsx as jsx9, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
847
855
|
var sizeClasses = {
|
|
848
|
-
sm: "sm
|
|
849
|
-
md: "sm
|
|
850
|
-
lg: "sm
|
|
851
|
-
xl: "sm
|
|
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__ */
|
|
875
|
-
/* @__PURE__ */ jsx9(Sheet, { open, onOpenChange: (isOpen) => !isOpen && handleClose(), children: /* @__PURE__ */
|
|
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__ */
|
|
899
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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: `
|
|
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: "
|
|
968
|
+
children: /* @__PURE__ */ jsx10(IconChevronRight2, { className: "size-4" })
|
|
961
969
|
}
|
|
962
970
|
),
|
|
963
|
-
mode === "edit" && variant !== "icon" && /* @__PURE__ */
|
|
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
|
-
|
|
972
|
-
|
|
973
|
-
buttonLabel
|
|
974
|
-
]
|
|
979
|
+
leftIcon: /* @__PURE__ */ jsx10(IconPencil, { className: "size-4" }),
|
|
980
|
+
children: buttonLabel
|
|
975
981
|
}
|
|
976
982
|
),
|
|
977
|
-
mode === "new" && /* @__PURE__ */
|
|
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
|
-
|
|
989
|
-
|
|
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
|
|
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__ */
|
|
1112
|
-
/* @__PURE__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
1146
|
-
/* @__PURE__ */
|
|
1147
|
-
/* @__PURE__ */ jsx13(IconFilter, { className: "
|
|
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__ */
|
|
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
|
|
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__ */
|
|
1201
|
-
onSubmit && /* @__PURE__ */
|
|
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
|
-
|
|
1208
|
-
|
|
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__ */
|
|
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__ */
|
|
1228
|
-
/* @__PURE__ */ jsx15(AlertDialogTrigger, { asChild: true, children: /* @__PURE__ */
|
|
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
|
-
|
|
1235
|
-
|
|
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__ */
|
|
1242
|
-
/* @__PURE__ */
|
|
1239
|
+
/* @__PURE__ */ jsxs12(AlertDialogContent, { children: [
|
|
1240
|
+
/* @__PURE__ */ jsxs12(AlertDialogHeader, { children: [
|
|
1243
1241
|
/* @__PURE__ */ jsx15(AlertDialogTitle, { children: "Are you sure?" }),
|
|
1244
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
1292
|
-
/* @__PURE__ */
|
|
1293
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
1323
|
-
/* @__PURE__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
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
|
|
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__ */
|
|
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
|
|
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__ */
|
|
1569
|
-
/* @__PURE__ */ jsx22("div", { className: "min-w-0 flex-1", children: /* @__PURE__ */
|
|
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
|
] }) }),
|