@wealthx/shadcn 1.0.2 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +154 -138
- package/CHANGELOG.md +6 -0
- package/README.md +82 -0
- package/dist/chunk-3EQP72AW.mjs +58 -0
- package/dist/chunk-5JGQAAQV.mjs +212 -0
- package/dist/chunk-GLW2UO6O.mjs +212 -0
- package/dist/chunk-RN67642N.mjs +171 -0
- package/dist/chunk-UEL4RD5P.mjs +272 -0
- package/dist/chunk-YBXCIF5Q.mjs +198 -0
- package/dist/components/ui/cashflow-bar-chart.js +596 -0
- package/dist/components/ui/cashflow-bar-chart.mjs +16 -0
- package/dist/components/ui/combobox.js +261 -0
- package/dist/components/ui/combobox.mjs +28 -0
- package/dist/components/ui/data-table.mjs +3 -3
- package/dist/components/ui/expense-bar-chart.js +543 -0
- package/dist/components/ui/expense-bar-chart.mjs +16 -0
- package/dist/components/ui/field.mjs +2 -2
- package/dist/components/ui/income-bar-chart.js +543 -0
- package/dist/components/ui/income-bar-chart.mjs +16 -0
- package/dist/components/ui/transactions-income-expense-bar-chart.js +478 -0
- package/dist/components/ui/transactions-income-expense-bar-chart.mjs +16 -0
- package/dist/index.js +1685 -725
- package/dist/index.mjs +152 -111
- package/dist/styles.css +1 -1
- package/package.json +30 -2
- package/src/components/index.tsx +56 -0
- package/src/components/ui/cashflow-bar-chart.tsx +336 -0
- package/src/components/ui/chart-shared.tsx +100 -0
- package/src/components/ui/combobox.tsx +217 -0
- package/src/components/ui/expense-bar-chart.tsx +278 -0
- package/src/components/ui/income-bar-chart.tsx +278 -0
- package/src/components/ui/transactions-income-expense-bar-chart.tsx +198 -0
- package/src/styles/styles-css.ts +1 -1
- package/tsup.config.ts +5 -0
- package/dist/{chunk-K76E2TQU.mjs → chunk-CJ46PDXE.mjs} +5 -5
- package/dist/{chunk-HUVTPUV2.mjs → chunk-NLLKTU4B.mjs} +3 -3
package/dist/index.js
CHANGED
|
@@ -95,9 +95,21 @@ __export(index_exports, {
|
|
|
95
95
|
CardFooter: () => CardFooter,
|
|
96
96
|
CardHeader: () => CardHeader,
|
|
97
97
|
CardTitle: () => CardTitle,
|
|
98
|
+
CashflowBarChart: () => CashflowBarChart,
|
|
98
99
|
Checkbox: () => Checkbox,
|
|
99
100
|
CheckboxCard: () => CheckboxCard,
|
|
100
101
|
Chip: () => Chip,
|
|
102
|
+
Combobox: () => Combobox,
|
|
103
|
+
ComboboxContent: () => ComboboxContent,
|
|
104
|
+
ComboboxEmpty: () => ComboboxEmpty,
|
|
105
|
+
ComboboxGroup: () => ComboboxGroup,
|
|
106
|
+
ComboboxGroupLabel: () => ComboboxGroupLabel,
|
|
107
|
+
ComboboxInput: () => ComboboxInput,
|
|
108
|
+
ComboboxItem: () => ComboboxItem,
|
|
109
|
+
ComboboxList: () => ComboboxList,
|
|
110
|
+
ComboboxSeparator: () => ComboboxSeparator,
|
|
111
|
+
ComboboxTrigger: () => ComboboxTrigger,
|
|
112
|
+
ComboboxValue: () => ComboboxValue,
|
|
101
113
|
DataTable: () => DataTable,
|
|
102
114
|
DataTableColumnHeader: () => DataTableColumnHeader,
|
|
103
115
|
DataTablePagination: () => DataTablePagination,
|
|
@@ -145,6 +157,7 @@ __export(index_exports, {
|
|
|
145
157
|
EmptyHeader: () => EmptyHeader,
|
|
146
158
|
EmptyMedia: () => EmptyMedia,
|
|
147
159
|
EmptyTitle: () => EmptyTitle,
|
|
160
|
+
ExpenseBarChart: () => ExpenseBarChart,
|
|
148
161
|
FONT_FAMILY_SANS: () => FONT_FAMILY_SANS,
|
|
149
162
|
Field: () => Field,
|
|
150
163
|
FieldContent: () => FieldContent,
|
|
@@ -156,6 +169,7 @@ __export(index_exports, {
|
|
|
156
169
|
FieldSeparator: () => FieldSeparator,
|
|
157
170
|
FieldSet: () => FieldSet,
|
|
158
171
|
FieldTitle: () => FieldTitle,
|
|
172
|
+
IncomeBarChart: () => IncomeBarChart,
|
|
159
173
|
Input: () => Input,
|
|
160
174
|
InputGroup: () => InputGroup,
|
|
161
175
|
InputGroupAddon: () => InputGroupAddon,
|
|
@@ -235,10 +249,11 @@ __export(index_exports, {
|
|
|
235
249
|
Toggle: () => Toggle,
|
|
236
250
|
ToggleGroup: () => ToggleGroup,
|
|
237
251
|
ToggleGroupItem: () => ToggleGroupItem,
|
|
238
|
-
Tooltip: () =>
|
|
252
|
+
Tooltip: () => Tooltip5,
|
|
239
253
|
TooltipContent: () => TooltipContent,
|
|
240
254
|
TooltipProvider: () => TooltipProvider,
|
|
241
255
|
TooltipTrigger: () => TooltipTrigger,
|
|
256
|
+
TransactionsIncomeExpenseBarChart: () => TransactionsIncomeExpenseBarChart,
|
|
242
257
|
badgeVariants: () => badgeVariants,
|
|
243
258
|
buttonVariants: () => buttonVariants,
|
|
244
259
|
cn: () => cn,
|
|
@@ -356,91 +371,235 @@ function getResponsiveTypographyCssVars(breakpoint) {
|
|
|
356
371
|
return vars;
|
|
357
372
|
}
|
|
358
373
|
|
|
359
|
-
// src/components/ui/
|
|
360
|
-
var
|
|
361
|
-
var
|
|
374
|
+
// src/components/ui/transactions-income-expense-bar-chart.tsx
|
|
375
|
+
var import_react3 = require("react");
|
|
376
|
+
var import_chart = require("chart.js");
|
|
377
|
+
var import_chartjs_plugin_datalabels = __toESM(require("chartjs-plugin-datalabels"));
|
|
378
|
+
var import_react_chartjs_2 = require("react-chartjs-2");
|
|
379
|
+
|
|
380
|
+
// src/lib/theme-provider.tsx
|
|
381
|
+
var import_react = require("react");
|
|
362
382
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
363
|
-
|
|
364
|
-
|
|
383
|
+
var ThemeVarsContext = (0, import_react.createContext)({});
|
|
384
|
+
function useThemeVars() {
|
|
385
|
+
return (0, import_react.useContext)(ThemeVarsContext);
|
|
365
386
|
}
|
|
366
|
-
|
|
387
|
+
|
|
388
|
+
// src/components/ui/card.tsx
|
|
389
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
390
|
+
function Card(_a) {
|
|
367
391
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
368
|
-
return /* @__PURE__ */ (0,
|
|
369
|
-
|
|
392
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
393
|
+
"div",
|
|
370
394
|
__spreadValues({
|
|
371
|
-
className: cn(
|
|
372
|
-
|
|
395
|
+
className: cn(
|
|
396
|
+
"flex flex-col gap-6 border bg-card py-6 text-card-foreground shadow-sm",
|
|
397
|
+
className
|
|
398
|
+
),
|
|
399
|
+
"data-slot": "card"
|
|
373
400
|
}, props)
|
|
374
401
|
);
|
|
375
402
|
}
|
|
376
|
-
function
|
|
377
|
-
var _b = _a, {
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
"className",
|
|
382
|
-
"children"
|
|
383
|
-
]);
|
|
384
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_accordion.Accordion.Header, { className: "flex", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
385
|
-
import_accordion.Accordion.Trigger,
|
|
386
|
-
__spreadProps(__spreadValues({
|
|
403
|
+
function CardHeader(_a) {
|
|
404
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
405
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
406
|
+
"div",
|
|
407
|
+
__spreadValues({
|
|
387
408
|
className: cn(
|
|
388
|
-
|
|
389
|
-
"flex flex-1 items-center justify-between gap-4 py-4 text-left",
|
|
390
|
-
// typography
|
|
391
|
-
"text-sm font-medium",
|
|
392
|
-
// base
|
|
393
|
-
"rounded-none outline-none transition-[color,opacity]",
|
|
394
|
-
// interactive states
|
|
395
|
-
"hover:underline",
|
|
396
|
-
"focus-visible:ring-2 focus-visible:ring-foreground/30",
|
|
397
|
-
"disabled:pointer-events-none disabled:opacity-50",
|
|
398
|
-
// chevron rotation when open
|
|
399
|
-
"[&[data-panel-open]>svg]:rotate-180",
|
|
409
|
+
"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",
|
|
400
410
|
className
|
|
401
411
|
),
|
|
402
|
-
"data-slot": "
|
|
403
|
-
}, props)
|
|
404
|
-
|
|
405
|
-
children,
|
|
406
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.ChevronDownIcon, { className: "pointer-events-none size-4 shrink-0 text-muted-foreground transition-transform duration-200" })
|
|
407
|
-
]
|
|
408
|
-
})
|
|
409
|
-
) });
|
|
412
|
+
"data-slot": "card-header"
|
|
413
|
+
}, props)
|
|
414
|
+
);
|
|
410
415
|
}
|
|
411
|
-
function
|
|
416
|
+
function CardTitle(_a) {
|
|
417
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
418
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
419
|
+
"div",
|
|
420
|
+
__spreadValues({
|
|
421
|
+
className: cn("leading-none font-semibold", className),
|
|
422
|
+
"data-slot": "card-title"
|
|
423
|
+
}, props)
|
|
424
|
+
);
|
|
425
|
+
}
|
|
426
|
+
function CardDescription(_a) {
|
|
427
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
428
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
429
|
+
"div",
|
|
430
|
+
__spreadValues({
|
|
431
|
+
className: cn("text-sm text-muted-foreground", className),
|
|
432
|
+
"data-slot": "card-description"
|
|
433
|
+
}, props)
|
|
434
|
+
);
|
|
435
|
+
}
|
|
436
|
+
function CardAction(_a) {
|
|
437
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
438
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
439
|
+
"div",
|
|
440
|
+
__spreadValues({
|
|
441
|
+
className: cn(
|
|
442
|
+
"col-start-2 row-span-2 row-start-1 self-start justify-self-end",
|
|
443
|
+
className
|
|
444
|
+
),
|
|
445
|
+
"data-slot": "card-action"
|
|
446
|
+
}, props)
|
|
447
|
+
);
|
|
448
|
+
}
|
|
449
|
+
function CardContent(_a) {
|
|
450
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
451
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
452
|
+
"div",
|
|
453
|
+
__spreadValues({
|
|
454
|
+
className: cn("px-6", className),
|
|
455
|
+
"data-slot": "card-content"
|
|
456
|
+
}, props)
|
|
457
|
+
);
|
|
458
|
+
}
|
|
459
|
+
function CardFooter(_a) {
|
|
460
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
461
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
462
|
+
"div",
|
|
463
|
+
__spreadValues({
|
|
464
|
+
className: cn("flex items-center px-6 [.border-t]:pt-6", className),
|
|
465
|
+
"data-slot": "card-footer"
|
|
466
|
+
}, props)
|
|
467
|
+
);
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
// src/components/ui/empty.tsx
|
|
471
|
+
var import_class_variance_authority = require("class-variance-authority");
|
|
472
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
473
|
+
function Empty(_a) {
|
|
474
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
475
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
476
|
+
"div",
|
|
477
|
+
__spreadValues({
|
|
478
|
+
className: cn(
|
|
479
|
+
"flex min-w-0 flex-1 flex-col items-center justify-center gap-6 border border-dashed p-6 text-center text-balance md:p-12",
|
|
480
|
+
className
|
|
481
|
+
),
|
|
482
|
+
"data-slot": "empty"
|
|
483
|
+
}, props)
|
|
484
|
+
);
|
|
485
|
+
}
|
|
486
|
+
function EmptyHeader(_a) {
|
|
487
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
488
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
489
|
+
"div",
|
|
490
|
+
__spreadValues({
|
|
491
|
+
className: cn(
|
|
492
|
+
"flex max-w-sm flex-col items-center gap-2 text-center",
|
|
493
|
+
className
|
|
494
|
+
),
|
|
495
|
+
"data-slot": "empty-header"
|
|
496
|
+
}, props)
|
|
497
|
+
);
|
|
498
|
+
}
|
|
499
|
+
var emptyMediaVariants = (0, import_class_variance_authority.cva)(
|
|
500
|
+
"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0",
|
|
501
|
+
{
|
|
502
|
+
variants: {
|
|
503
|
+
variant: {
|
|
504
|
+
default: "[&_svg:not([class*='size-'])]:size-10",
|
|
505
|
+
icon: "flex size-10 shrink-0 items-center justify-center text-muted-foreground [&_svg:not([class*='size-'])]:size-6"
|
|
506
|
+
}
|
|
507
|
+
},
|
|
508
|
+
defaultVariants: {
|
|
509
|
+
variant: "default"
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
);
|
|
513
|
+
function EmptyMedia(_a) {
|
|
412
514
|
var _b = _a, {
|
|
413
515
|
className,
|
|
414
|
-
|
|
516
|
+
variant = "default"
|
|
415
517
|
} = _b, props = __objRest(_b, [
|
|
416
518
|
"className",
|
|
417
|
-
"
|
|
519
|
+
"variant"
|
|
418
520
|
]);
|
|
419
|
-
return /* @__PURE__ */ (0,
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
className:
|
|
423
|
-
"data-slot": "
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
521
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
522
|
+
"div",
|
|
523
|
+
__spreadValues({
|
|
524
|
+
className: cn(emptyMediaVariants({ variant, className })),
|
|
525
|
+
"data-slot": "empty-icon",
|
|
526
|
+
"data-variant": variant
|
|
527
|
+
}, props)
|
|
528
|
+
);
|
|
529
|
+
}
|
|
530
|
+
function EmptyTitle(_a) {
|
|
531
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
532
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
533
|
+
"div",
|
|
534
|
+
__spreadValues({
|
|
535
|
+
className: cn("text-lg font-medium tracking-tight", className),
|
|
536
|
+
"data-slot": "empty-title"
|
|
537
|
+
}, props)
|
|
538
|
+
);
|
|
539
|
+
}
|
|
540
|
+
function EmptyDescription(_a) {
|
|
541
|
+
var _b = _a, {
|
|
542
|
+
className
|
|
543
|
+
} = _b, props = __objRest(_b, [
|
|
544
|
+
"className"
|
|
545
|
+
]);
|
|
546
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
547
|
+
"div",
|
|
548
|
+
__spreadValues({
|
|
549
|
+
className: cn(
|
|
550
|
+
"text-sm/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",
|
|
551
|
+
className
|
|
552
|
+
),
|
|
553
|
+
"data-slot": "empty-description"
|
|
554
|
+
}, props)
|
|
555
|
+
);
|
|
556
|
+
}
|
|
557
|
+
function EmptyContent(_a) {
|
|
558
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
559
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
560
|
+
"div",
|
|
561
|
+
__spreadValues({
|
|
562
|
+
className: cn(
|
|
563
|
+
"flex w-full max-w-sm min-w-0 flex-col items-center gap-4 text-sm text-balance",
|
|
564
|
+
className
|
|
565
|
+
),
|
|
566
|
+
"data-slot": "empty-content"
|
|
567
|
+
}, props)
|
|
427
568
|
);
|
|
428
569
|
}
|
|
429
570
|
|
|
430
|
-
// src/components/ui/
|
|
431
|
-
var
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
var
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
571
|
+
// src/components/ui/spinner.tsx
|
|
572
|
+
var import_class_variance_authority2 = require("class-variance-authority");
|
|
573
|
+
var import_lucide_react = require("lucide-react");
|
|
574
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
575
|
+
var spinnerVariants = (0, import_class_variance_authority2.cva)("animate-spin shrink-0", {
|
|
576
|
+
variants: {
|
|
577
|
+
size: {
|
|
578
|
+
sm: "size-3",
|
|
579
|
+
default: "size-4",
|
|
580
|
+
lg: "size-6",
|
|
581
|
+
xl: "size-8"
|
|
582
|
+
}
|
|
583
|
+
},
|
|
584
|
+
defaultVariants: {
|
|
585
|
+
size: "default"
|
|
586
|
+
}
|
|
587
|
+
});
|
|
588
|
+
function Spinner(_a) {
|
|
589
|
+
var _b = _a, { className, size } = _b, props = __objRest(_b, ["className", "size"]);
|
|
590
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
591
|
+
import_lucide_react.LoaderCircle,
|
|
592
|
+
__spreadValues({
|
|
593
|
+
"aria-hidden": "true",
|
|
594
|
+
className: cn(spinnerVariants({ size }), className),
|
|
595
|
+
"data-slot": "spinner"
|
|
596
|
+
}, props)
|
|
597
|
+
);
|
|
439
598
|
}
|
|
440
599
|
|
|
441
600
|
// src/components/ui/button.tsx
|
|
442
601
|
var import_react2 = require("react");
|
|
443
|
-
var
|
|
602
|
+
var import_class_variance_authority3 = require("class-variance-authority");
|
|
444
603
|
var import_lucide_react2 = require("lucide-react");
|
|
445
604
|
|
|
446
605
|
// src/lib/slot.tsx
|
|
@@ -491,8 +650,8 @@ var Slot = React2.forwardRef(
|
|
|
491
650
|
Slot.displayName = "Slot";
|
|
492
651
|
|
|
493
652
|
// src/components/ui/button.tsx
|
|
494
|
-
var
|
|
495
|
-
var buttonVariants = (0,
|
|
653
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
654
|
+
var buttonVariants = (0, import_class_variance_authority3.cva)(
|
|
496
655
|
"inline-flex shrink-0 cursor-pointer items-center justify-center gap-2 font-sans text-sm font-medium whitespace-nowrap transition-all active:scale-[0.98] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
497
656
|
{
|
|
498
657
|
variants: {
|
|
@@ -521,62 +680,897 @@ var buttonVariants = (0, import_class_variance_authority.cva)(
|
|
|
521
680
|
variant: "default",
|
|
522
681
|
size: "default"
|
|
523
682
|
}
|
|
524
|
-
}
|
|
525
|
-
);
|
|
526
|
-
var Button = (0, import_react2.forwardRef)(function Button2(_a, ref) {
|
|
683
|
+
}
|
|
684
|
+
);
|
|
685
|
+
var Button = (0, import_react2.forwardRef)(function Button2(_a, ref) {
|
|
686
|
+
var _b = _a, {
|
|
687
|
+
className,
|
|
688
|
+
variant,
|
|
689
|
+
size,
|
|
690
|
+
asChild = false,
|
|
691
|
+
loading = false,
|
|
692
|
+
disabled,
|
|
693
|
+
type = "button",
|
|
694
|
+
children
|
|
695
|
+
} = _b, props = __objRest(_b, [
|
|
696
|
+
"className",
|
|
697
|
+
"variant",
|
|
698
|
+
"size",
|
|
699
|
+
"asChild",
|
|
700
|
+
"loading",
|
|
701
|
+
"disabled",
|
|
702
|
+
"type",
|
|
703
|
+
"children"
|
|
704
|
+
]);
|
|
705
|
+
const Comp = asChild ? Slot : "button";
|
|
706
|
+
const isIconOnly = size === "icon" || size === "icon-xs" || size === "icon-sm" || size === "icon-lg";
|
|
707
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
708
|
+
Comp,
|
|
709
|
+
__spreadProps(__spreadValues({
|
|
710
|
+
className: cn(buttonVariants({ variant, size, className })),
|
|
711
|
+
"data-size": size,
|
|
712
|
+
"data-slot": "button",
|
|
713
|
+
"data-variant": variant,
|
|
714
|
+
disabled: loading || disabled,
|
|
715
|
+
ref,
|
|
716
|
+
type
|
|
717
|
+
}, props), {
|
|
718
|
+
children: loading ? /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
|
|
719
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.Loader2, { "aria-hidden": "true", className: "animate-spin" }),
|
|
720
|
+
!isIconOnly && children
|
|
721
|
+
] }) : children
|
|
722
|
+
})
|
|
723
|
+
);
|
|
724
|
+
});
|
|
725
|
+
|
|
726
|
+
// src/components/ui/chart-shared.tsx
|
|
727
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
728
|
+
var CHART_SLICE_COUNT = {
|
|
729
|
+
monthly: { 1: 1, 3: 3, 6: 6, 12: 12 },
|
|
730
|
+
daily: { 1: 30, 3: 90, 6: 180, 12: 365 }
|
|
731
|
+
};
|
|
732
|
+
var CHART_PERIODS = {
|
|
733
|
+
monthly: [3, 6, 12],
|
|
734
|
+
daily: [1, 3, 6, 12]
|
|
735
|
+
};
|
|
736
|
+
function hexToRgba(hex, alpha) {
|
|
737
|
+
const clean = hex.replace("#", "");
|
|
738
|
+
const full = clean.length === 3 ? clean.split("").map((c) => c + c).join("") : clean;
|
|
739
|
+
const r = parseInt(full.slice(0, 2), 16);
|
|
740
|
+
const g = parseInt(full.slice(2, 4), 16);
|
|
741
|
+
const b = parseInt(full.slice(4, 6), 16);
|
|
742
|
+
return `rgba(${r},${g},${b},${alpha})`;
|
|
743
|
+
}
|
|
744
|
+
var DATASET_ALPHAS = [1, 0.72, 0.52, 0.36, 0.24, 0.15];
|
|
745
|
+
var FALLBACK_TICK = "#9EAAB5";
|
|
746
|
+
function formatTooltipDate(iso, granularity) {
|
|
747
|
+
const d = new Date(iso);
|
|
748
|
+
return d.toLocaleDateString(
|
|
749
|
+
"en-US",
|
|
750
|
+
granularity === "daily" ? { month: "short", day: "numeric", year: "numeric" } : { month: "short", year: "numeric" }
|
|
751
|
+
);
|
|
752
|
+
}
|
|
753
|
+
function ChartLegendItem({ label, color }) {
|
|
754
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "flex items-center gap-1.5", children: [
|
|
755
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { style: { width: 10, height: 10, backgroundColor: color, flexShrink: 0 } }),
|
|
756
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "text-[11px] text-muted-foreground leading-none", children: label })
|
|
757
|
+
] });
|
|
758
|
+
}
|
|
759
|
+
function ChartPeriodButton({
|
|
760
|
+
period,
|
|
761
|
+
active,
|
|
762
|
+
onClick
|
|
763
|
+
}) {
|
|
764
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(Button, { variant: active ? "default" : "outline", size: "xs", onClick, children: [
|
|
765
|
+
period,
|
|
766
|
+
"M"
|
|
767
|
+
] });
|
|
768
|
+
}
|
|
769
|
+
|
|
770
|
+
// src/components/ui/transactions-income-expense-bar-chart.tsx
|
|
771
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
772
|
+
import_chart.Chart.register(import_chart.CategoryScale, import_chart.LinearScale, import_chart.BarElement, import_chart.Tooltip);
|
|
773
|
+
var FALLBACK_PRIMARY = "#33FF99";
|
|
774
|
+
var FALLBACK_SECONDARY = "#162029";
|
|
775
|
+
var VALUE_LABEL_COLOR = "#162029";
|
|
776
|
+
function formatDollar(value) {
|
|
777
|
+
return `$${value.toLocaleString(void 0, {
|
|
778
|
+
minimumFractionDigits: 2,
|
|
779
|
+
maximumFractionDigits: 2
|
|
780
|
+
})}`;
|
|
781
|
+
}
|
|
782
|
+
function TransactionsIncomeExpenseBarChart({
|
|
783
|
+
totalIncome,
|
|
784
|
+
totalExpense,
|
|
785
|
+
title = "Transactions \u2014 Income vs Expense",
|
|
786
|
+
height = 120,
|
|
787
|
+
width = "100%",
|
|
788
|
+
className,
|
|
789
|
+
isLoading = false
|
|
790
|
+
}) {
|
|
791
|
+
const themeVars = useThemeVars();
|
|
792
|
+
const brandPrimary = themeVars["--theme-primary"] || FALLBACK_PRIMARY;
|
|
793
|
+
const brandSecondary = themeVars["--theme-secondary"] || FALLBACK_SECONDARY;
|
|
794
|
+
const hasData = totalIncome != null && totalExpense != null;
|
|
795
|
+
const incomeVal = totalIncome != null ? totalIncome : 0;
|
|
796
|
+
const expenseVal = Math.abs(totalExpense != null ? totalExpense : 0);
|
|
797
|
+
const maxVal = Math.max(incomeVal, expenseVal);
|
|
798
|
+
const chartData = (0, import_react3.useMemo)(() => {
|
|
799
|
+
if (!hasData) return { labels: [], datasets: [] };
|
|
800
|
+
return {
|
|
801
|
+
labels: ["Incoming", "Outgoing"],
|
|
802
|
+
datasets: [
|
|
803
|
+
{
|
|
804
|
+
barThickness: 40,
|
|
805
|
+
backgroundColor: [brandPrimary, brandSecondary],
|
|
806
|
+
hoverBackgroundColor: [brandPrimary, brandSecondary],
|
|
807
|
+
borderWidth: 0,
|
|
808
|
+
borderRadius: 0,
|
|
809
|
+
borderSkipped: false,
|
|
810
|
+
data: [incomeVal, expenseVal],
|
|
811
|
+
// chartjs-plugin-datalabels config — typed via plugin module augmentation
|
|
812
|
+
datalabels: {
|
|
813
|
+
labels: {
|
|
814
|
+
value: {
|
|
815
|
+
anchor: "end",
|
|
816
|
+
align: "end",
|
|
817
|
+
offset: 10,
|
|
818
|
+
clamp: false,
|
|
819
|
+
font: { weight: "bold", size: 14 },
|
|
820
|
+
color: VALUE_LABEL_COLOR,
|
|
821
|
+
textAlign: "left",
|
|
822
|
+
// Returns array for multi-line: dollar value on line 1, blank on line 2
|
|
823
|
+
formatter: (v) => [formatDollar(v), ""]
|
|
824
|
+
},
|
|
825
|
+
name: {
|
|
826
|
+
anchor: "end",
|
|
827
|
+
align: "end",
|
|
828
|
+
offset: 10,
|
|
829
|
+
clamp: false,
|
|
830
|
+
font: { size: 12 },
|
|
831
|
+
color: FALLBACK_TICK,
|
|
832
|
+
textAlign: "left",
|
|
833
|
+
// Returns array for multi-line: blank on line 1, bar label on line 2
|
|
834
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
835
|
+
formatter: (_, ctx) => {
|
|
836
|
+
var _a, _b;
|
|
837
|
+
return ["", String((_b = (_a = ctx.chart.data.labels) == null ? void 0 : _a[ctx.dataIndex]) != null ? _b : "")];
|
|
838
|
+
}
|
|
839
|
+
}
|
|
840
|
+
}
|
|
841
|
+
}
|
|
842
|
+
}
|
|
843
|
+
]
|
|
844
|
+
};
|
|
845
|
+
}, [hasData, incomeVal, expenseVal, brandPrimary, brandSecondary]);
|
|
846
|
+
const options = (0, import_react3.useMemo)(() => ({
|
|
847
|
+
indexAxis: "y",
|
|
848
|
+
responsive: true,
|
|
849
|
+
maintainAspectRatio: false,
|
|
850
|
+
animation: { duration: 800, easing: "easeOutQuart" },
|
|
851
|
+
layout: {
|
|
852
|
+
// Right padding reserves space for the datalabels rendered outside the bar area
|
|
853
|
+
padding: { right: 180, left: 0, top: 10, bottom: 10 }
|
|
854
|
+
},
|
|
855
|
+
plugins: {
|
|
856
|
+
legend: { display: false },
|
|
857
|
+
tooltip: { enabled: false }
|
|
858
|
+
},
|
|
859
|
+
scales: {
|
|
860
|
+
y: {
|
|
861
|
+
display: true,
|
|
862
|
+
grid: { display: false },
|
|
863
|
+
border: { display: false },
|
|
864
|
+
ticks: { display: false }
|
|
865
|
+
},
|
|
866
|
+
x: {
|
|
867
|
+
display: true,
|
|
868
|
+
suggestedMax: maxVal * 1.3,
|
|
869
|
+
grid: { display: false },
|
|
870
|
+
border: { display: false },
|
|
871
|
+
ticks: { display: false }
|
|
872
|
+
}
|
|
873
|
+
}
|
|
874
|
+
}), [maxVal]);
|
|
875
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
876
|
+
Card,
|
|
877
|
+
{
|
|
878
|
+
className: cn("w-full py-4 sm:py-6 gap-2", className),
|
|
879
|
+
style: { maxWidth: width },
|
|
880
|
+
children: [
|
|
881
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CardHeader, { className: "px-3 sm:px-6", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CardTitle, { className: "text-sm sm:text-base", children: title }) }),
|
|
882
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CardContent, { className: "px-3 sm:px-6", children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
883
|
+
"div",
|
|
884
|
+
{
|
|
885
|
+
className: "flex items-center justify-center text-muted-foreground",
|
|
886
|
+
style: { height, width: "100%" },
|
|
887
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Spinner, { size: "lg" })
|
|
888
|
+
}
|
|
889
|
+
) : !hasData ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Empty, { className: "flex-none p-4", style: { height }, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(EmptyDescription, { children: "No data available" }) }) : /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { style: { height, width: "100%", position: "relative" }, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
890
|
+
import_react_chartjs_2.Chart,
|
|
891
|
+
{
|
|
892
|
+
type: "bar",
|
|
893
|
+
data: chartData,
|
|
894
|
+
options,
|
|
895
|
+
plugins: [import_chartjs_plugin_datalabels.default],
|
|
896
|
+
"aria-label": title
|
|
897
|
+
},
|
|
898
|
+
`${brandPrimary}__${brandSecondary}`
|
|
899
|
+
) }) })
|
|
900
|
+
]
|
|
901
|
+
}
|
|
902
|
+
);
|
|
903
|
+
}
|
|
904
|
+
|
|
905
|
+
// src/components/ui/cashflow-bar-chart.tsx
|
|
906
|
+
var import_react4 = require("react");
|
|
907
|
+
var import_chart2 = require("chart.js");
|
|
908
|
+
var import_react_chartjs_22 = require("react-chartjs-2");
|
|
909
|
+
|
|
910
|
+
// src/components/ui/skeleton.tsx
|
|
911
|
+
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
912
|
+
function Skeleton(_a) {
|
|
913
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
914
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
915
|
+
"div",
|
|
916
|
+
__spreadValues({
|
|
917
|
+
className: cn("animate-pulse bg-muted", className),
|
|
918
|
+
"data-slot": "skeleton"
|
|
919
|
+
}, props)
|
|
920
|
+
);
|
|
921
|
+
}
|
|
922
|
+
|
|
923
|
+
// src/components/ui/cashflow-bar-chart.tsx
|
|
924
|
+
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
925
|
+
import_chart2.Chart.register(import_chart2.CategoryScale, import_chart2.LinearScale, import_chart2.BarElement, import_chart2.Tooltip, import_chart2.Legend);
|
|
926
|
+
function LegendItem({ label, fillColor, strokeColor, strokeWidth = 1.5 }) {
|
|
927
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "flex items-center gap-1.5", children: [
|
|
928
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
929
|
+
"div",
|
|
930
|
+
{
|
|
931
|
+
style: {
|
|
932
|
+
width: 10,
|
|
933
|
+
height: 10,
|
|
934
|
+
backgroundColor: fillColor,
|
|
935
|
+
border: strokeWidth > 0 ? `${strokeWidth}px solid ${strokeColor}` : "none",
|
|
936
|
+
flexShrink: 0
|
|
937
|
+
}
|
|
938
|
+
}
|
|
939
|
+
),
|
|
940
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "text-[11px] text-muted-foreground leading-none", children: label })
|
|
941
|
+
] });
|
|
942
|
+
}
|
|
943
|
+
function ChartLegend({ primary, secondary }) {
|
|
944
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "flex flex-wrap gap-x-3 gap-y-1.5 pb-2", children: [
|
|
945
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
946
|
+
LegendItem,
|
|
947
|
+
{
|
|
948
|
+
label: "Income",
|
|
949
|
+
fillColor: hexToRgba(primary, 0.2),
|
|
950
|
+
strokeColor: primary
|
|
951
|
+
}
|
|
952
|
+
),
|
|
953
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
954
|
+
LegendItem,
|
|
955
|
+
{
|
|
956
|
+
label: "Expenses and Liabilities",
|
|
957
|
+
fillColor: hexToRgba(secondary, 0.2),
|
|
958
|
+
strokeColor: secondary
|
|
959
|
+
}
|
|
960
|
+
),
|
|
961
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
962
|
+
LegendItem,
|
|
963
|
+
{
|
|
964
|
+
label: "Surplus Income",
|
|
965
|
+
fillColor: primary,
|
|
966
|
+
strokeColor: primary,
|
|
967
|
+
strokeWidth: 0
|
|
968
|
+
}
|
|
969
|
+
),
|
|
970
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
971
|
+
LegendItem,
|
|
972
|
+
{
|
|
973
|
+
label: "Over Spending",
|
|
974
|
+
fillColor: secondary,
|
|
975
|
+
strokeColor: secondary,
|
|
976
|
+
strokeWidth: 0
|
|
977
|
+
}
|
|
978
|
+
)
|
|
979
|
+
] });
|
|
980
|
+
}
|
|
981
|
+
var PERIODS = [3, 6, 12];
|
|
982
|
+
var FALLBACK_PRIMARY2 = "#33FF99";
|
|
983
|
+
var FALLBACK_SECONDARY2 = "#162029";
|
|
984
|
+
function CashflowBarChart({
|
|
985
|
+
cashflowData,
|
|
986
|
+
title = "Cashflow",
|
|
987
|
+
showLegend = true,
|
|
988
|
+
showXAxis = true,
|
|
989
|
+
showYAxis = true,
|
|
990
|
+
legendPosition = "top",
|
|
991
|
+
defaultPeriod = 6,
|
|
992
|
+
height = 280,
|
|
993
|
+
width = "100%",
|
|
994
|
+
className,
|
|
995
|
+
isLoading = false
|
|
996
|
+
}) {
|
|
997
|
+
const [period, setPeriod] = (0, import_react4.useState)(defaultPeriod);
|
|
998
|
+
const themeVars = useThemeVars();
|
|
999
|
+
const brandPrimary = themeVars["--theme-primary"] || FALLBACK_PRIMARY2;
|
|
1000
|
+
const brandSecondary = themeVars["--theme-secondary"] || FALLBACK_SECONDARY2;
|
|
1001
|
+
const sliced = (0, import_react4.useMemo)(() => {
|
|
1002
|
+
var _a;
|
|
1003
|
+
if (!((_a = cashflowData == null ? void 0 : cashflowData.data) == null ? void 0 : _a.length)) return null;
|
|
1004
|
+
const count = Math.min(period, cashflowData.data.length);
|
|
1005
|
+
const start = cashflowData.data.length - count;
|
|
1006
|
+
return {
|
|
1007
|
+
months: cashflowData.months.slice(start),
|
|
1008
|
+
data: cashflowData.data.slice(start)
|
|
1009
|
+
};
|
|
1010
|
+
}, [cashflowData, period]);
|
|
1011
|
+
const chartData = (0, import_react4.useMemo)(() => {
|
|
1012
|
+
if (!sliced) return { labels: [], datasets: [] };
|
|
1013
|
+
return {
|
|
1014
|
+
labels: sliced.months,
|
|
1015
|
+
datasets: [
|
|
1016
|
+
{
|
|
1017
|
+
label: "Income",
|
|
1018
|
+
data: sliced.data.map((d) => d.income),
|
|
1019
|
+
backgroundColor: hexToRgba(brandPrimary, 0.2),
|
|
1020
|
+
hoverBackgroundColor: hexToRgba(brandPrimary, 0.35),
|
|
1021
|
+
borderColor: brandPrimary,
|
|
1022
|
+
borderWidth: 1.5,
|
|
1023
|
+
borderRadius: 0,
|
|
1024
|
+
borderSkipped: false,
|
|
1025
|
+
barPercentage: 0.75,
|
|
1026
|
+
categoryPercentage: 0.7
|
|
1027
|
+
},
|
|
1028
|
+
{
|
|
1029
|
+
label: "Expenses and Liabilities",
|
|
1030
|
+
data: sliced.data.map((d) => d.expenses),
|
|
1031
|
+
backgroundColor: hexToRgba(brandSecondary, 0.2),
|
|
1032
|
+
hoverBackgroundColor: hexToRgba(brandSecondary, 0.35),
|
|
1033
|
+
borderColor: brandSecondary,
|
|
1034
|
+
borderWidth: 1.5,
|
|
1035
|
+
borderRadius: 0,
|
|
1036
|
+
borderSkipped: false,
|
|
1037
|
+
barPercentage: 0.75,
|
|
1038
|
+
categoryPercentage: 0.7
|
|
1039
|
+
},
|
|
1040
|
+
{
|
|
1041
|
+
label: "_thirdBar",
|
|
1042
|
+
data: sliced.data.map(
|
|
1043
|
+
(d) => d.overspending > 0 ? d.overspending : d.surplus
|
|
1044
|
+
),
|
|
1045
|
+
backgroundColor: sliced.data.map(
|
|
1046
|
+
(d) => d.overspending > 0 ? brandSecondary : brandPrimary
|
|
1047
|
+
),
|
|
1048
|
+
hoverBackgroundColor: sliced.data.map(
|
|
1049
|
+
(d) => d.overspending > 0 ? hexToRgba(brandSecondary, 0.8) : hexToRgba(brandPrimary, 0.8)
|
|
1050
|
+
),
|
|
1051
|
+
borderWidth: 0,
|
|
1052
|
+
borderRadius: 0,
|
|
1053
|
+
borderSkipped: false,
|
|
1054
|
+
barPercentage: 0.75,
|
|
1055
|
+
categoryPercentage: 0.7
|
|
1056
|
+
}
|
|
1057
|
+
]
|
|
1058
|
+
};
|
|
1059
|
+
}, [sliced, brandPrimary, brandSecondary]);
|
|
1060
|
+
const options = (0, import_react4.useMemo)(() => ({
|
|
1061
|
+
responsive: true,
|
|
1062
|
+
maintainAspectRatio: false,
|
|
1063
|
+
animation: { duration: 800, easing: "easeOutQuart" },
|
|
1064
|
+
layout: { padding: 0 },
|
|
1065
|
+
plugins: {
|
|
1066
|
+
legend: { display: false },
|
|
1067
|
+
tooltip: {
|
|
1068
|
+
mode: "index",
|
|
1069
|
+
intersect: false,
|
|
1070
|
+
padding: 12,
|
|
1071
|
+
cornerRadius: 0,
|
|
1072
|
+
titleFont: { size: 11, weight: "600" },
|
|
1073
|
+
bodyFont: { size: 12, weight: "500" },
|
|
1074
|
+
callbacks: {
|
|
1075
|
+
title: (tooltipItems) => {
|
|
1076
|
+
var _a, _b, _c, _d;
|
|
1077
|
+
const idx = (_a = tooltipItems[0]) == null ? void 0 : _a.dataIndex;
|
|
1078
|
+
if (idx != null && ((_b = sliced == null ? void 0 : sliced.data[idx]) == null ? void 0 : _b.date)) {
|
|
1079
|
+
return formatTooltipDate(sliced.data[idx].date, "monthly");
|
|
1080
|
+
}
|
|
1081
|
+
return (_d = (_c = tooltipItems[0]) == null ? void 0 : _c.label) != null ? _d : "";
|
|
1082
|
+
},
|
|
1083
|
+
label: (ctx) => {
|
|
1084
|
+
const val = ctx.raw;
|
|
1085
|
+
if (val === 0) return null;
|
|
1086
|
+
if (ctx.datasetIndex === 2) {
|
|
1087
|
+
const d = sliced == null ? void 0 : sliced.data[ctx.dataIndex];
|
|
1088
|
+
if (!d) return null;
|
|
1089
|
+
const lbl = d.overspending > 0 ? "Over Spending" : "Surplus Income";
|
|
1090
|
+
return ` ${lbl}: $${val.toLocaleString()}`;
|
|
1091
|
+
}
|
|
1092
|
+
return ` ${ctx.dataset.label}: $${val.toLocaleString()}`;
|
|
1093
|
+
}
|
|
1094
|
+
}
|
|
1095
|
+
}
|
|
1096
|
+
},
|
|
1097
|
+
scales: {
|
|
1098
|
+
x: {
|
|
1099
|
+
display: showXAxis,
|
|
1100
|
+
grid: { display: false },
|
|
1101
|
+
border: { display: false },
|
|
1102
|
+
ticks: { font: { size: 10 }, color: FALLBACK_TICK }
|
|
1103
|
+
},
|
|
1104
|
+
y: {
|
|
1105
|
+
display: showYAxis,
|
|
1106
|
+
grid: { display: false },
|
|
1107
|
+
border: { display: false },
|
|
1108
|
+
ticks: {
|
|
1109
|
+
font: { size: 10 },
|
|
1110
|
+
color: FALLBACK_TICK,
|
|
1111
|
+
maxTicksLimit: 5,
|
|
1112
|
+
padding: 8,
|
|
1113
|
+
callback: (v) => `$${Number(v).toLocaleString()}`
|
|
1114
|
+
}
|
|
1115
|
+
}
|
|
1116
|
+
}
|
|
1117
|
+
}), [showXAxis, showYAxis, sliced]);
|
|
1118
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
|
|
1119
|
+
Card,
|
|
1120
|
+
{
|
|
1121
|
+
className: cn("w-full py-4 sm:py-6 gap-2", className),
|
|
1122
|
+
style: { maxWidth: width },
|
|
1123
|
+
children: [
|
|
1124
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(CardHeader, { className: "px-3 sm:px-6", children: [
|
|
1125
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(CardTitle, { className: "text-sm sm:text-base", children: title }),
|
|
1126
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(CardAction, { children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "flex gap-0.5 sm:gap-1", children: PERIODS.map((p) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1127
|
+
ChartPeriodButton,
|
|
1128
|
+
{
|
|
1129
|
+
period: p,
|
|
1130
|
+
active: period === p,
|
|
1131
|
+
onClick: () => setPeriod(p)
|
|
1132
|
+
},
|
|
1133
|
+
p
|
|
1134
|
+
)) }) })
|
|
1135
|
+
] }),
|
|
1136
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(CardContent, { className: "px-3 sm:px-6", children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Skeleton, { style: { height, width: "100%" } }) : !sliced ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Empty, { className: "flex-none p-4", style: { height }, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(EmptyDescription, { children: "No data available" }) }) : /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "flex flex-col gap-2", children: [
|
|
1137
|
+
showLegend && legendPosition === "top" && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(ChartLegend, { primary: brandPrimary, secondary: brandSecondary }),
|
|
1138
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: { height, width: "100%", position: "relative" }, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1139
|
+
import_react_chartjs_22.Chart,
|
|
1140
|
+
{
|
|
1141
|
+
type: "bar",
|
|
1142
|
+
data: chartData,
|
|
1143
|
+
options,
|
|
1144
|
+
"aria-label": title
|
|
1145
|
+
},
|
|
1146
|
+
`${brandPrimary}__${brandSecondary}`
|
|
1147
|
+
) }),
|
|
1148
|
+
showLegend && legendPosition === "bottom" && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(ChartLegend, { primary: brandPrimary, secondary: brandSecondary })
|
|
1149
|
+
] }) })
|
|
1150
|
+
]
|
|
1151
|
+
}
|
|
1152
|
+
);
|
|
1153
|
+
}
|
|
1154
|
+
|
|
1155
|
+
// src/components/ui/expense-bar-chart.tsx
|
|
1156
|
+
var import_react5 = require("react");
|
|
1157
|
+
var import_chart3 = require("chart.js");
|
|
1158
|
+
var import_react_chartjs_23 = require("react-chartjs-2");
|
|
1159
|
+
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
1160
|
+
import_chart3.Chart.register(import_chart3.CategoryScale, import_chart3.LinearScale, import_chart3.BarElement, import_chart3.Tooltip, import_chart3.Legend);
|
|
1161
|
+
var FALLBACK_SECONDARY3 = "#162029";
|
|
1162
|
+
function ExpenseBarChart({
|
|
1163
|
+
expenseData,
|
|
1164
|
+
title = "Expenses",
|
|
1165
|
+
showLegend = true,
|
|
1166
|
+
showXAxis = true,
|
|
1167
|
+
showYAxis = true,
|
|
1168
|
+
legendPosition = "top",
|
|
1169
|
+
defaultPeriod = 6,
|
|
1170
|
+
granularity = "monthly",
|
|
1171
|
+
height = 280,
|
|
1172
|
+
width = "100%",
|
|
1173
|
+
className,
|
|
1174
|
+
isLoading = false
|
|
1175
|
+
}) {
|
|
1176
|
+
const periods = CHART_PERIODS[granularity];
|
|
1177
|
+
const [period, setPeriod] = (0, import_react5.useState)(defaultPeriod);
|
|
1178
|
+
const isFirstRender = (0, import_react5.useRef)(true);
|
|
1179
|
+
(0, import_react5.useEffect)(() => {
|
|
1180
|
+
if (isFirstRender.current) {
|
|
1181
|
+
isFirstRender.current = false;
|
|
1182
|
+
return;
|
|
1183
|
+
}
|
|
1184
|
+
setPeriod(CHART_PERIODS[granularity][0]);
|
|
1185
|
+
}, [granularity]);
|
|
1186
|
+
const themeVars = useThemeVars();
|
|
1187
|
+
const brandSecondary = themeVars["--theme-secondary"] || FALLBACK_SECONDARY3;
|
|
1188
|
+
const sliced = (0, import_react5.useMemo)(() => {
|
|
1189
|
+
var _a, _b;
|
|
1190
|
+
if (!((_a = expenseData == null ? void 0 : expenseData.months) == null ? void 0 : _a.length) || !expenseData.datasets.length) return null;
|
|
1191
|
+
const count = Math.min(CHART_SLICE_COUNT[granularity][period], expenseData.months.length);
|
|
1192
|
+
const start = expenseData.months.length - count;
|
|
1193
|
+
return {
|
|
1194
|
+
months: expenseData.months.slice(start),
|
|
1195
|
+
dates: (_b = expenseData.dates) == null ? void 0 : _b.slice(start),
|
|
1196
|
+
datasets: expenseData.datasets.map((ds) => __spreadProps(__spreadValues({}, ds), {
|
|
1197
|
+
data: ds.data.slice(start)
|
|
1198
|
+
}))
|
|
1199
|
+
};
|
|
1200
|
+
}, [expenseData, period, granularity]);
|
|
1201
|
+
const datasetColors = (0, import_react5.useMemo)(
|
|
1202
|
+
() => {
|
|
1203
|
+
var _a;
|
|
1204
|
+
return (_a = sliced == null ? void 0 : sliced.datasets.map(
|
|
1205
|
+
(_, i) => hexToRgba(brandSecondary, DATASET_ALPHAS[i % DATASET_ALPHAS.length])
|
|
1206
|
+
)) != null ? _a : [];
|
|
1207
|
+
},
|
|
1208
|
+
[sliced, brandSecondary]
|
|
1209
|
+
);
|
|
1210
|
+
const chartData = (0, import_react5.useMemo)(() => {
|
|
1211
|
+
if (!sliced) return { labels: [], datasets: [] };
|
|
1212
|
+
return {
|
|
1213
|
+
labels: sliced.months,
|
|
1214
|
+
datasets: sliced.datasets.map((ds, i) => ({
|
|
1215
|
+
label: ds.label,
|
|
1216
|
+
data: ds.data,
|
|
1217
|
+
backgroundColor: datasetColors[i],
|
|
1218
|
+
hoverBackgroundColor: hexToRgba(
|
|
1219
|
+
brandSecondary,
|
|
1220
|
+
Math.min(DATASET_ALPHAS[i % DATASET_ALPHAS.length] + 0.15, 1)
|
|
1221
|
+
),
|
|
1222
|
+
borderWidth: 0,
|
|
1223
|
+
borderRadius: 0,
|
|
1224
|
+
borderSkipped: false,
|
|
1225
|
+
barPercentage: 0.75,
|
|
1226
|
+
categoryPercentage: 0.7,
|
|
1227
|
+
stack: "expense"
|
|
1228
|
+
}))
|
|
1229
|
+
};
|
|
1230
|
+
}, [sliced, datasetColors, brandSecondary]);
|
|
1231
|
+
const options = (0, import_react5.useMemo)(() => ({
|
|
1232
|
+
responsive: true,
|
|
1233
|
+
maintainAspectRatio: false,
|
|
1234
|
+
animation: { duration: 800, easing: "easeOutQuart" },
|
|
1235
|
+
layout: { padding: 0 },
|
|
1236
|
+
plugins: {
|
|
1237
|
+
legend: { display: false },
|
|
1238
|
+
tooltip: {
|
|
1239
|
+
mode: "index",
|
|
1240
|
+
intersect: false,
|
|
1241
|
+
padding: 12,
|
|
1242
|
+
cornerRadius: 0,
|
|
1243
|
+
titleFont: { size: 11, weight: "600" },
|
|
1244
|
+
bodyFont: { size: 12, weight: "500" },
|
|
1245
|
+
callbacks: {
|
|
1246
|
+
title: (tooltipItems) => {
|
|
1247
|
+
var _a, _b, _c, _d;
|
|
1248
|
+
const idx = (_a = tooltipItems[0]) == null ? void 0 : _a.dataIndex;
|
|
1249
|
+
if (idx != null && ((_b = sliced == null ? void 0 : sliced.dates) == null ? void 0 : _b[idx])) {
|
|
1250
|
+
return formatTooltipDate(sliced.dates[idx], granularity);
|
|
1251
|
+
}
|
|
1252
|
+
return (_d = (_c = tooltipItems[0]) == null ? void 0 : _c.label) != null ? _d : "";
|
|
1253
|
+
},
|
|
1254
|
+
label: (ctx) => {
|
|
1255
|
+
const val = ctx.raw;
|
|
1256
|
+
if (val === 0) return null;
|
|
1257
|
+
return ` ${ctx.dataset.label}: $${val.toLocaleString()}`;
|
|
1258
|
+
}
|
|
1259
|
+
}
|
|
1260
|
+
}
|
|
1261
|
+
},
|
|
1262
|
+
scales: {
|
|
1263
|
+
x: {
|
|
1264
|
+
display: showXAxis,
|
|
1265
|
+
stacked: true,
|
|
1266
|
+
grid: { display: false },
|
|
1267
|
+
border: { display: false },
|
|
1268
|
+
ticks: { font: { size: 10 }, color: FALLBACK_TICK }
|
|
1269
|
+
},
|
|
1270
|
+
y: {
|
|
1271
|
+
display: showYAxis,
|
|
1272
|
+
stacked: true,
|
|
1273
|
+
grid: { display: false },
|
|
1274
|
+
border: { display: false },
|
|
1275
|
+
ticks: {
|
|
1276
|
+
font: { size: 10 },
|
|
1277
|
+
color: FALLBACK_TICK,
|
|
1278
|
+
maxTicksLimit: 5,
|
|
1279
|
+
padding: 8,
|
|
1280
|
+
callback: (v) => `$${Number(v).toLocaleString()}`
|
|
1281
|
+
}
|
|
1282
|
+
}
|
|
1283
|
+
}
|
|
1284
|
+
}), [showXAxis, showYAxis, sliced, granularity]);
|
|
1285
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
|
|
1286
|
+
Card,
|
|
1287
|
+
{
|
|
1288
|
+
className: cn("w-full py-4 sm:py-6 gap-2", className),
|
|
1289
|
+
style: { maxWidth: width },
|
|
1290
|
+
children: [
|
|
1291
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(CardHeader, { className: "px-3 sm:px-6", children: [
|
|
1292
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(CardTitle, { className: "text-sm sm:text-base", children: title }),
|
|
1293
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(CardAction, { children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "flex gap-0.5 sm:gap-1", children: periods.map((p) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1294
|
+
ChartPeriodButton,
|
|
1295
|
+
{
|
|
1296
|
+
period: p,
|
|
1297
|
+
active: period === p,
|
|
1298
|
+
onClick: () => setPeriod(p)
|
|
1299
|
+
},
|
|
1300
|
+
p
|
|
1301
|
+
)) }) })
|
|
1302
|
+
] }),
|
|
1303
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(CardContent, { className: "px-3 sm:px-6", children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Skeleton, { style: { height, width: "100%" } }) : !sliced ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Empty, { className: "flex-none p-4", style: { height }, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(EmptyDescription, { children: "No data available" }) }) : /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "flex flex-col gap-2", children: [
|
|
1304
|
+
showLegend && legendPosition === "top" && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "flex flex-wrap gap-x-3 gap-y-1.5 pb-2", children: sliced.datasets.map((ds, i) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ChartLegendItem, { label: ds.label, color: datasetColors[i] }, ds.label)) }),
|
|
1305
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { style: { height, width: "100%", position: "relative" }, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1306
|
+
import_react_chartjs_23.Chart,
|
|
1307
|
+
{
|
|
1308
|
+
type: "bar",
|
|
1309
|
+
data: chartData,
|
|
1310
|
+
options,
|
|
1311
|
+
"aria-label": title
|
|
1312
|
+
},
|
|
1313
|
+
brandSecondary
|
|
1314
|
+
) }),
|
|
1315
|
+
showLegend && legendPosition === "bottom" && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "flex flex-wrap gap-x-3 gap-y-1.5 pt-2", children: sliced.datasets.map((ds, i) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ChartLegendItem, { label: ds.label, color: datasetColors[i] }, ds.label)) })
|
|
1316
|
+
] }) })
|
|
1317
|
+
]
|
|
1318
|
+
}
|
|
1319
|
+
);
|
|
1320
|
+
}
|
|
1321
|
+
|
|
1322
|
+
// src/components/ui/income-bar-chart.tsx
|
|
1323
|
+
var import_react6 = require("react");
|
|
1324
|
+
var import_chart4 = require("chart.js");
|
|
1325
|
+
var import_react_chartjs_24 = require("react-chartjs-2");
|
|
1326
|
+
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
1327
|
+
import_chart4.Chart.register(import_chart4.CategoryScale, import_chart4.LinearScale, import_chart4.BarElement, import_chart4.Tooltip, import_chart4.Legend);
|
|
1328
|
+
var FALLBACK_PRIMARY3 = "#33FF99";
|
|
1329
|
+
function IncomeBarChart({
|
|
1330
|
+
incomeData,
|
|
1331
|
+
title = "Income",
|
|
1332
|
+
showLegend = true,
|
|
1333
|
+
showXAxis = true,
|
|
1334
|
+
showYAxis = true,
|
|
1335
|
+
legendPosition = "top",
|
|
1336
|
+
defaultPeriod = 6,
|
|
1337
|
+
granularity = "monthly",
|
|
1338
|
+
height = 280,
|
|
1339
|
+
width = "100%",
|
|
1340
|
+
className,
|
|
1341
|
+
isLoading = false
|
|
1342
|
+
}) {
|
|
1343
|
+
const periods = CHART_PERIODS[granularity];
|
|
1344
|
+
const [period, setPeriod] = (0, import_react6.useState)(defaultPeriod);
|
|
1345
|
+
const isFirstRender = (0, import_react6.useRef)(true);
|
|
1346
|
+
(0, import_react6.useEffect)(() => {
|
|
1347
|
+
if (isFirstRender.current) {
|
|
1348
|
+
isFirstRender.current = false;
|
|
1349
|
+
return;
|
|
1350
|
+
}
|
|
1351
|
+
setPeriod(CHART_PERIODS[granularity][0]);
|
|
1352
|
+
}, [granularity]);
|
|
1353
|
+
const themeVars = useThemeVars();
|
|
1354
|
+
const brandPrimary = themeVars["--theme-primary"] || FALLBACK_PRIMARY3;
|
|
1355
|
+
const sliced = (0, import_react6.useMemo)(() => {
|
|
1356
|
+
var _a, _b;
|
|
1357
|
+
if (!((_a = incomeData == null ? void 0 : incomeData.months) == null ? void 0 : _a.length) || !incomeData.datasets.length) return null;
|
|
1358
|
+
const count = Math.min(CHART_SLICE_COUNT[granularity][period], incomeData.months.length);
|
|
1359
|
+
const start = incomeData.months.length - count;
|
|
1360
|
+
return {
|
|
1361
|
+
months: incomeData.months.slice(start),
|
|
1362
|
+
dates: (_b = incomeData.dates) == null ? void 0 : _b.slice(start),
|
|
1363
|
+
datasets: incomeData.datasets.map((ds) => __spreadProps(__spreadValues({}, ds), {
|
|
1364
|
+
data: ds.data.slice(start)
|
|
1365
|
+
}))
|
|
1366
|
+
};
|
|
1367
|
+
}, [incomeData, period, granularity]);
|
|
1368
|
+
const datasetColors = (0, import_react6.useMemo)(
|
|
1369
|
+
() => {
|
|
1370
|
+
var _a;
|
|
1371
|
+
return (_a = sliced == null ? void 0 : sliced.datasets.map(
|
|
1372
|
+
(_, i) => hexToRgba(brandPrimary, DATASET_ALPHAS[i % DATASET_ALPHAS.length])
|
|
1373
|
+
)) != null ? _a : [];
|
|
1374
|
+
},
|
|
1375
|
+
[sliced, brandPrimary]
|
|
1376
|
+
);
|
|
1377
|
+
const chartData = (0, import_react6.useMemo)(() => {
|
|
1378
|
+
if (!sliced) return { labels: [], datasets: [] };
|
|
1379
|
+
return {
|
|
1380
|
+
labels: sliced.months,
|
|
1381
|
+
datasets: sliced.datasets.map((ds, i) => ({
|
|
1382
|
+
label: ds.label,
|
|
1383
|
+
data: ds.data,
|
|
1384
|
+
backgroundColor: datasetColors[i],
|
|
1385
|
+
hoverBackgroundColor: hexToRgba(
|
|
1386
|
+
brandPrimary,
|
|
1387
|
+
Math.min(DATASET_ALPHAS[i % DATASET_ALPHAS.length] + 0.15, 1)
|
|
1388
|
+
),
|
|
1389
|
+
borderWidth: 0,
|
|
1390
|
+
borderRadius: 0,
|
|
1391
|
+
borderSkipped: false,
|
|
1392
|
+
barPercentage: 0.75,
|
|
1393
|
+
categoryPercentage: 0.7,
|
|
1394
|
+
stack: "income"
|
|
1395
|
+
}))
|
|
1396
|
+
};
|
|
1397
|
+
}, [sliced, datasetColors, brandPrimary]);
|
|
1398
|
+
const options = (0, import_react6.useMemo)(() => ({
|
|
1399
|
+
responsive: true,
|
|
1400
|
+
maintainAspectRatio: false,
|
|
1401
|
+
animation: { duration: 800, easing: "easeOutQuart" },
|
|
1402
|
+
layout: { padding: 0 },
|
|
1403
|
+
plugins: {
|
|
1404
|
+
legend: { display: false },
|
|
1405
|
+
tooltip: {
|
|
1406
|
+
mode: "index",
|
|
1407
|
+
intersect: false,
|
|
1408
|
+
padding: 12,
|
|
1409
|
+
cornerRadius: 0,
|
|
1410
|
+
titleFont: { size: 11, weight: "600" },
|
|
1411
|
+
bodyFont: { size: 12, weight: "500" },
|
|
1412
|
+
callbacks: {
|
|
1413
|
+
title: (tooltipItems) => {
|
|
1414
|
+
var _a, _b, _c, _d;
|
|
1415
|
+
const idx = (_a = tooltipItems[0]) == null ? void 0 : _a.dataIndex;
|
|
1416
|
+
if (idx != null && ((_b = sliced == null ? void 0 : sliced.dates) == null ? void 0 : _b[idx])) {
|
|
1417
|
+
return formatTooltipDate(sliced.dates[idx], granularity);
|
|
1418
|
+
}
|
|
1419
|
+
return (_d = (_c = tooltipItems[0]) == null ? void 0 : _c.label) != null ? _d : "";
|
|
1420
|
+
},
|
|
1421
|
+
label: (ctx) => {
|
|
1422
|
+
const val = ctx.raw;
|
|
1423
|
+
if (val === 0) return null;
|
|
1424
|
+
return ` ${ctx.dataset.label}: $${val.toLocaleString()}`;
|
|
1425
|
+
}
|
|
1426
|
+
}
|
|
1427
|
+
}
|
|
1428
|
+
},
|
|
1429
|
+
scales: {
|
|
1430
|
+
x: {
|
|
1431
|
+
display: showXAxis,
|
|
1432
|
+
stacked: true,
|
|
1433
|
+
grid: { display: false },
|
|
1434
|
+
border: { display: false },
|
|
1435
|
+
ticks: { font: { size: 10 }, color: FALLBACK_TICK }
|
|
1436
|
+
},
|
|
1437
|
+
y: {
|
|
1438
|
+
display: showYAxis,
|
|
1439
|
+
stacked: true,
|
|
1440
|
+
grid: { display: false },
|
|
1441
|
+
border: { display: false },
|
|
1442
|
+
ticks: {
|
|
1443
|
+
font: { size: 10 },
|
|
1444
|
+
color: FALLBACK_TICK,
|
|
1445
|
+
maxTicksLimit: 5,
|
|
1446
|
+
padding: 8,
|
|
1447
|
+
callback: (v) => `$${Number(v).toLocaleString()}`
|
|
1448
|
+
}
|
|
1449
|
+
}
|
|
1450
|
+
}
|
|
1451
|
+
}), [showXAxis, showYAxis, sliced, granularity]);
|
|
1452
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
|
|
1453
|
+
Card,
|
|
1454
|
+
{
|
|
1455
|
+
className: cn("w-full py-4 sm:py-6 gap-2", className),
|
|
1456
|
+
style: { maxWidth: width },
|
|
1457
|
+
children: [
|
|
1458
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(CardHeader, { className: "px-3 sm:px-6", children: [
|
|
1459
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(CardTitle, { className: "text-sm sm:text-base", children: title }),
|
|
1460
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(CardAction, { children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "flex gap-0.5 sm:gap-1", children: periods.map((p) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
1461
|
+
ChartPeriodButton,
|
|
1462
|
+
{
|
|
1463
|
+
period: p,
|
|
1464
|
+
active: period === p,
|
|
1465
|
+
onClick: () => setPeriod(p)
|
|
1466
|
+
},
|
|
1467
|
+
p
|
|
1468
|
+
)) }) })
|
|
1469
|
+
] }),
|
|
1470
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(CardContent, { className: "px-3 sm:px-6", children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Skeleton, { style: { height, width: "100%" } }) : !sliced ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Empty, { className: "flex-none p-4", style: { height }, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(EmptyDescription, { children: "No data available" }) }) : /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "flex flex-col gap-2", children: [
|
|
1471
|
+
showLegend && legendPosition === "top" && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "flex flex-wrap gap-x-3 gap-y-1.5 pb-2", children: sliced.datasets.map((ds, i) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(ChartLegendItem, { label: ds.label, color: datasetColors[i] }, ds.label)) }),
|
|
1472
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { style: { height, width: "100%", position: "relative" }, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
1473
|
+
import_react_chartjs_24.Chart,
|
|
1474
|
+
{
|
|
1475
|
+
type: "bar",
|
|
1476
|
+
data: chartData,
|
|
1477
|
+
options,
|
|
1478
|
+
"aria-label": title
|
|
1479
|
+
},
|
|
1480
|
+
brandPrimary
|
|
1481
|
+
) }),
|
|
1482
|
+
showLegend && legendPosition === "bottom" && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "flex flex-wrap gap-x-3 gap-y-1.5 pt-2", children: sliced.datasets.map((ds, i) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(ChartLegendItem, { label: ds.label, color: datasetColors[i] }, ds.label)) })
|
|
1483
|
+
] }) })
|
|
1484
|
+
]
|
|
1485
|
+
}
|
|
1486
|
+
);
|
|
1487
|
+
}
|
|
1488
|
+
|
|
1489
|
+
// src/components/ui/accordion.tsx
|
|
1490
|
+
var import_lucide_react3 = require("lucide-react");
|
|
1491
|
+
var import_accordion = require("@base-ui/react/accordion");
|
|
1492
|
+
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
1493
|
+
function Accordion(props) {
|
|
1494
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_accordion.Accordion.Root, __spreadValues({ "data-slot": "accordion" }, props));
|
|
1495
|
+
}
|
|
1496
|
+
function AccordionItem(_a) {
|
|
1497
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1498
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
1499
|
+
import_accordion.Accordion.Item,
|
|
1500
|
+
__spreadValues({
|
|
1501
|
+
className: cn("border-b", className),
|
|
1502
|
+
"data-slot": "accordion-item"
|
|
1503
|
+
}, props)
|
|
1504
|
+
);
|
|
1505
|
+
}
|
|
1506
|
+
function AccordionTrigger(_a) {
|
|
527
1507
|
var _b = _a, {
|
|
528
1508
|
className,
|
|
529
|
-
variant,
|
|
530
|
-
size,
|
|
531
|
-
asChild = false,
|
|
532
|
-
loading = false,
|
|
533
|
-
disabled,
|
|
534
|
-
type = "button",
|
|
535
1509
|
children
|
|
536
1510
|
} = _b, props = __objRest(_b, [
|
|
537
1511
|
"className",
|
|
538
|
-
"variant",
|
|
539
|
-
"size",
|
|
540
|
-
"asChild",
|
|
541
|
-
"loading",
|
|
542
|
-
"disabled",
|
|
543
|
-
"type",
|
|
544
1512
|
"children"
|
|
545
1513
|
]);
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
549
|
-
Comp,
|
|
1514
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_accordion.Accordion.Header, { className: "flex", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
|
|
1515
|
+
import_accordion.Accordion.Trigger,
|
|
550
1516
|
__spreadProps(__spreadValues({
|
|
551
|
-
className: cn(
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
1517
|
+
className: cn(
|
|
1518
|
+
// layout
|
|
1519
|
+
"flex flex-1 items-center justify-between gap-4 py-4 text-left",
|
|
1520
|
+
// typography
|
|
1521
|
+
"text-sm font-medium",
|
|
1522
|
+
// base
|
|
1523
|
+
"rounded-none outline-none transition-[color,opacity]",
|
|
1524
|
+
// interactive states
|
|
1525
|
+
"hover:underline",
|
|
1526
|
+
"focus-visible:ring-2 focus-visible:ring-foreground/30",
|
|
1527
|
+
"disabled:pointer-events-none disabled:opacity-50",
|
|
1528
|
+
// chevron rotation when open
|
|
1529
|
+
"[&[data-panel-open]>svg]:rotate-180",
|
|
1530
|
+
className
|
|
1531
|
+
),
|
|
1532
|
+
"data-slot": "accordion-trigger"
|
|
558
1533
|
}, props), {
|
|
559
|
-
children:
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
]
|
|
1534
|
+
children: [
|
|
1535
|
+
children,
|
|
1536
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_lucide_react3.ChevronDownIcon, { className: "pointer-events-none size-4 shrink-0 text-muted-foreground transition-transform duration-200" })
|
|
1537
|
+
]
|
|
1538
|
+
})
|
|
1539
|
+
) });
|
|
1540
|
+
}
|
|
1541
|
+
function AccordionContent(_a) {
|
|
1542
|
+
var _b = _a, {
|
|
1543
|
+
className,
|
|
1544
|
+
children
|
|
1545
|
+
} = _b, props = __objRest(_b, [
|
|
1546
|
+
"className",
|
|
1547
|
+
"children"
|
|
1548
|
+
]);
|
|
1549
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
1550
|
+
import_accordion.Accordion.Panel,
|
|
1551
|
+
__spreadProps(__spreadValues({
|
|
1552
|
+
className: "overflow-hidden text-sm h-(--accordion-panel-height) transition-[height] duration-200 ease-out data-starting-style:h-0 data-ending-style:h-0",
|
|
1553
|
+
"data-slot": "accordion-content"
|
|
1554
|
+
}, props), {
|
|
1555
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: cn("pb-4 text-muted-foreground", className), children })
|
|
563
1556
|
})
|
|
564
1557
|
);
|
|
565
|
-
}
|
|
1558
|
+
}
|
|
566
1559
|
|
|
567
1560
|
// src/components/ui/alert-dialog.tsx
|
|
568
|
-
var
|
|
1561
|
+
var import_alert_dialog = require("@base-ui/react/alert-dialog");
|
|
1562
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
569
1563
|
function AlertDialog(_a) {
|
|
570
1564
|
var props = __objRest(_a, []);
|
|
571
|
-
return /* @__PURE__ */ (0,
|
|
1565
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_alert_dialog.AlertDialog.Root, __spreadValues({ "data-slot": "alert-dialog" }, props));
|
|
572
1566
|
}
|
|
573
1567
|
function AlertDialogTrigger(_a) {
|
|
574
1568
|
var props = __objRest(_a, []);
|
|
575
|
-
return /* @__PURE__ */ (0,
|
|
1569
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_alert_dialog.AlertDialog.Trigger, __spreadValues({ "data-slot": "alert-dialog-trigger" }, props));
|
|
576
1570
|
}
|
|
577
1571
|
function AlertDialogPortal(_a) {
|
|
578
1572
|
var props = __objRest(_a, []);
|
|
579
|
-
return /* @__PURE__ */ (0,
|
|
1573
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_alert_dialog.AlertDialog.Portal, __spreadValues({ "data-slot": "alert-dialog-portal" }, props));
|
|
580
1574
|
}
|
|
581
1575
|
function AlertDialogOverlay(_a) {
|
|
582
1576
|
var _b = _a, {
|
|
@@ -584,7 +1578,7 @@ function AlertDialogOverlay(_a) {
|
|
|
584
1578
|
} = _b, props = __objRest(_b, [
|
|
585
1579
|
"className"
|
|
586
1580
|
]);
|
|
587
|
-
return /* @__PURE__ */ (0,
|
|
1581
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
588
1582
|
import_alert_dialog.AlertDialog.Backdrop,
|
|
589
1583
|
__spreadValues({
|
|
590
1584
|
className: cn(
|
|
@@ -607,9 +1601,9 @@ function AlertDialogContent(_a) {
|
|
|
607
1601
|
"style"
|
|
608
1602
|
]);
|
|
609
1603
|
const themeVars = useThemeVars();
|
|
610
|
-
return /* @__PURE__ */ (0,
|
|
611
|
-
/* @__PURE__ */ (0,
|
|
612
|
-
/* @__PURE__ */ (0,
|
|
1604
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(AlertDialogPortal, { children: [
|
|
1605
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(AlertDialogOverlay, {}),
|
|
1606
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
613
1607
|
import_alert_dialog.AlertDialog.Popup,
|
|
614
1608
|
__spreadValues({
|
|
615
1609
|
className: cn(
|
|
@@ -630,7 +1624,7 @@ function AlertDialogHeader(_a) {
|
|
|
630
1624
|
} = _b, props = __objRest(_b, [
|
|
631
1625
|
"className"
|
|
632
1626
|
]);
|
|
633
|
-
return /* @__PURE__ */ (0,
|
|
1627
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
634
1628
|
"div",
|
|
635
1629
|
__spreadValues({
|
|
636
1630
|
className: cn(
|
|
@@ -647,7 +1641,7 @@ function AlertDialogFooter(_a) {
|
|
|
647
1641
|
} = _b, props = __objRest(_b, [
|
|
648
1642
|
"className"
|
|
649
1643
|
]);
|
|
650
|
-
return /* @__PURE__ */ (0,
|
|
1644
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
651
1645
|
"div",
|
|
652
1646
|
__spreadValues({
|
|
653
1647
|
className: cn(
|
|
@@ -665,7 +1659,7 @@ function AlertDialogTitle(_a) {
|
|
|
665
1659
|
} = _b, props = __objRest(_b, [
|
|
666
1660
|
"className"
|
|
667
1661
|
]);
|
|
668
|
-
return /* @__PURE__ */ (0,
|
|
1662
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
669
1663
|
import_alert_dialog.AlertDialog.Title,
|
|
670
1664
|
__spreadValues({
|
|
671
1665
|
className: cn(
|
|
@@ -682,7 +1676,7 @@ function AlertDialogDescription(_a) {
|
|
|
682
1676
|
} = _b, props = __objRest(_b, [
|
|
683
1677
|
"className"
|
|
684
1678
|
]);
|
|
685
|
-
return /* @__PURE__ */ (0,
|
|
1679
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
686
1680
|
import_alert_dialog.AlertDialog.Description,
|
|
687
1681
|
__spreadValues({
|
|
688
1682
|
className: cn(
|
|
@@ -699,7 +1693,7 @@ function AlertDialogMedia(_a) {
|
|
|
699
1693
|
} = _b, props = __objRest(_b, [
|
|
700
1694
|
"className"
|
|
701
1695
|
]);
|
|
702
|
-
return /* @__PURE__ */ (0,
|
|
1696
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
703
1697
|
"div",
|
|
704
1698
|
__spreadValues({
|
|
705
1699
|
className: cn(
|
|
@@ -721,7 +1715,7 @@ function AlertDialogAction(_a) {
|
|
|
721
1715
|
"variant",
|
|
722
1716
|
"size"
|
|
723
1717
|
]);
|
|
724
|
-
return /* @__PURE__ */ (0,
|
|
1718
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
725
1719
|
import_alert_dialog.AlertDialog.Close,
|
|
726
1720
|
__spreadValues({
|
|
727
1721
|
className: cn(buttonVariants({ variant, size }), className),
|
|
@@ -739,7 +1733,7 @@ function AlertDialogCancel(_a) {
|
|
|
739
1733
|
"variant",
|
|
740
1734
|
"size"
|
|
741
1735
|
]);
|
|
742
|
-
return /* @__PURE__ */ (0,
|
|
1736
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
743
1737
|
import_alert_dialog.AlertDialog.Close,
|
|
744
1738
|
__spreadValues({
|
|
745
1739
|
className: cn(buttonVariants({ variant, size }), className),
|
|
@@ -749,9 +1743,9 @@ function AlertDialogCancel(_a) {
|
|
|
749
1743
|
}
|
|
750
1744
|
|
|
751
1745
|
// src/components/ui/alert.tsx
|
|
752
|
-
var
|
|
753
|
-
var
|
|
754
|
-
var alertVariants = (0,
|
|
1746
|
+
var import_class_variance_authority4 = require("class-variance-authority");
|
|
1747
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
1748
|
+
var alertVariants = (0, import_class_variance_authority4.cva)(
|
|
755
1749
|
"relative grid w-full grid-cols-[0_1fr] items-start gap-y-0.5 border px-4 py-3 text-sm has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] has-[>svg]:gap-x-3 [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",
|
|
756
1750
|
{
|
|
757
1751
|
variants: {
|
|
@@ -776,7 +1770,7 @@ function Alert(_a) {
|
|
|
776
1770
|
"className",
|
|
777
1771
|
"variant"
|
|
778
1772
|
]);
|
|
779
|
-
return /* @__PURE__ */ (0,
|
|
1773
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
780
1774
|
"div",
|
|
781
1775
|
__spreadValues({
|
|
782
1776
|
className: cn(alertVariants({ variant }), className),
|
|
@@ -787,7 +1781,7 @@ function Alert(_a) {
|
|
|
787
1781
|
}
|
|
788
1782
|
function AlertTitle(_a) {
|
|
789
1783
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
790
|
-
return /* @__PURE__ */ (0,
|
|
1784
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
791
1785
|
"div",
|
|
792
1786
|
__spreadValues({
|
|
793
1787
|
className: cn(
|
|
@@ -804,7 +1798,7 @@ function AlertDescription(_a) {
|
|
|
804
1798
|
} = _b, props = __objRest(_b, [
|
|
805
1799
|
"className"
|
|
806
1800
|
]);
|
|
807
|
-
return /* @__PURE__ */ (0,
|
|
1801
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
808
1802
|
"div",
|
|
809
1803
|
__spreadValues({
|
|
810
1804
|
className: cn(
|
|
@@ -818,7 +1812,7 @@ function AlertDescription(_a) {
|
|
|
818
1812
|
|
|
819
1813
|
// src/components/ui/avatar.tsx
|
|
820
1814
|
var import_avatar = require("@base-ui/react/avatar");
|
|
821
|
-
var
|
|
1815
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
822
1816
|
function Avatar(_a) {
|
|
823
1817
|
var _b = _a, {
|
|
824
1818
|
className,
|
|
@@ -827,7 +1821,7 @@ function Avatar(_a) {
|
|
|
827
1821
|
"className",
|
|
828
1822
|
"size"
|
|
829
1823
|
]);
|
|
830
|
-
return /* @__PURE__ */ (0,
|
|
1824
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
831
1825
|
import_avatar.Avatar.Root,
|
|
832
1826
|
__spreadValues({
|
|
833
1827
|
className: cn(
|
|
@@ -845,7 +1839,7 @@ function AvatarImage(_a) {
|
|
|
845
1839
|
} = _b, props = __objRest(_b, [
|
|
846
1840
|
"className"
|
|
847
1841
|
]);
|
|
848
|
-
return /* @__PURE__ */ (0,
|
|
1842
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
849
1843
|
import_avatar.Avatar.Image,
|
|
850
1844
|
__spreadValues({
|
|
851
1845
|
className: cn("aspect-square size-full rounded-full", className),
|
|
@@ -859,7 +1853,7 @@ function AvatarFallback(_a) {
|
|
|
859
1853
|
} = _b, props = __objRest(_b, [
|
|
860
1854
|
"className"
|
|
861
1855
|
]);
|
|
862
|
-
return /* @__PURE__ */ (0,
|
|
1856
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
863
1857
|
import_avatar.Avatar.Fallback,
|
|
864
1858
|
__spreadValues({
|
|
865
1859
|
className: cn(
|
|
@@ -872,7 +1866,7 @@ function AvatarFallback(_a) {
|
|
|
872
1866
|
}
|
|
873
1867
|
function AvatarBadge(_a) {
|
|
874
1868
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
875
|
-
return /* @__PURE__ */ (0,
|
|
1869
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
876
1870
|
"span",
|
|
877
1871
|
__spreadValues({
|
|
878
1872
|
className: cn(
|
|
@@ -888,7 +1882,7 @@ function AvatarBadge(_a) {
|
|
|
888
1882
|
}
|
|
889
1883
|
function AvatarGroup(_a) {
|
|
890
1884
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
891
|
-
return /* @__PURE__ */ (0,
|
|
1885
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
892
1886
|
"div",
|
|
893
1887
|
__spreadValues({
|
|
894
1888
|
className: cn(
|
|
@@ -905,7 +1899,7 @@ function AvatarGroupCount(_a) {
|
|
|
905
1899
|
} = _b, props = __objRest(_b, [
|
|
906
1900
|
"className"
|
|
907
1901
|
]);
|
|
908
|
-
return /* @__PURE__ */ (0,
|
|
1902
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
909
1903
|
"div",
|
|
910
1904
|
__spreadValues({
|
|
911
1905
|
className: cn(
|
|
@@ -918,9 +1912,9 @@ function AvatarGroupCount(_a) {
|
|
|
918
1912
|
}
|
|
919
1913
|
|
|
920
1914
|
// src/components/ui/badge.tsx
|
|
921
|
-
var
|
|
922
|
-
var
|
|
923
|
-
var badgeVariants = (0,
|
|
1915
|
+
var import_class_variance_authority5 = require("class-variance-authority");
|
|
1916
|
+
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
1917
|
+
var badgeVariants = (0, import_class_variance_authority5.cva)(
|
|
924
1918
|
"inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent px-2 py-0.5 text-xs font-medium font-sans whitespace-nowrap transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3",
|
|
925
1919
|
{
|
|
926
1920
|
variants: {
|
|
@@ -949,7 +1943,7 @@ function Badge(_a) {
|
|
|
949
1943
|
"asChild"
|
|
950
1944
|
]);
|
|
951
1945
|
const Comp = asChild ? Slot : "span";
|
|
952
|
-
return /* @__PURE__ */ (0,
|
|
1946
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
953
1947
|
Comp,
|
|
954
1948
|
__spreadValues({
|
|
955
1949
|
className: cn(badgeVariants({ variant }), className),
|
|
@@ -960,10 +1954,10 @@ function Badge(_a) {
|
|
|
960
1954
|
}
|
|
961
1955
|
|
|
962
1956
|
// src/components/ui/calendar.tsx
|
|
963
|
-
var
|
|
964
|
-
var
|
|
1957
|
+
var React7 = __toESM(require("react"));
|
|
1958
|
+
var import_lucide_react4 = require("lucide-react");
|
|
965
1959
|
var import_react_day_picker = require("react-day-picker");
|
|
966
|
-
var
|
|
1960
|
+
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
967
1961
|
function CalendarRoot(_a) {
|
|
968
1962
|
var _b = _a, {
|
|
969
1963
|
className,
|
|
@@ -972,7 +1966,7 @@ function CalendarRoot(_a) {
|
|
|
972
1966
|
"className",
|
|
973
1967
|
"rootRef"
|
|
974
1968
|
]);
|
|
975
|
-
return /* @__PURE__ */ (0,
|
|
1969
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
976
1970
|
"div",
|
|
977
1971
|
__spreadValues({
|
|
978
1972
|
className: cn(className),
|
|
@@ -990,17 +1984,17 @@ function CalendarChevron(_a) {
|
|
|
990
1984
|
"orientation"
|
|
991
1985
|
]);
|
|
992
1986
|
if (orientation === "left") {
|
|
993
|
-
return /* @__PURE__ */ (0,
|
|
1987
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_lucide_react4.ChevronLeftIcon, __spreadValues({ className: cn("size-4", className) }, props));
|
|
994
1988
|
}
|
|
995
1989
|
if (orientation === "right") {
|
|
996
|
-
return /* @__PURE__ */ (0,
|
|
997
|
-
|
|
1990
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1991
|
+
import_lucide_react4.ChevronRightIcon,
|
|
998
1992
|
__spreadValues({
|
|
999
1993
|
className: cn("size-4", className)
|
|
1000
1994
|
}, props)
|
|
1001
1995
|
);
|
|
1002
1996
|
}
|
|
1003
|
-
return /* @__PURE__ */ (0,
|
|
1997
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_lucide_react4.ChevronDownIcon, __spreadValues({ className: cn("size-4", className) }, props));
|
|
1004
1998
|
}
|
|
1005
1999
|
function CalendarWeekNumber(_a) {
|
|
1006
2000
|
var _b = _a, {
|
|
@@ -1008,7 +2002,7 @@ function CalendarWeekNumber(_a) {
|
|
|
1008
2002
|
} = _b, props = __objRest(_b, [
|
|
1009
2003
|
"children"
|
|
1010
2004
|
]);
|
|
1011
|
-
return /* @__PURE__ */ (0,
|
|
2005
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("td", __spreadProps(__spreadValues({}, props), { children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "flex size-(--cell-size) items-center justify-center text-center", children }) }));
|
|
1012
2006
|
}
|
|
1013
2007
|
function Calendar(_a) {
|
|
1014
2008
|
var _b = _a, {
|
|
@@ -1029,7 +2023,7 @@ function Calendar(_a) {
|
|
|
1029
2023
|
"components"
|
|
1030
2024
|
]);
|
|
1031
2025
|
const defaultClassNames = (0, import_react_day_picker.getDefaultClassNames)();
|
|
1032
|
-
return /* @__PURE__ */ (0,
|
|
2026
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1033
2027
|
import_react_day_picker.DayPicker,
|
|
1034
2028
|
__spreadValues({
|
|
1035
2029
|
captionLayout,
|
|
@@ -1117,146 +2111,64 @@ function Calendar(_a) {
|
|
|
1117
2111
|
),
|
|
1118
2112
|
hidden: cn("invisible", defaultClassNames.hidden)
|
|
1119
2113
|
}, classNames),
|
|
1120
|
-
components: __spreadValues({
|
|
1121
|
-
Root: CalendarRoot,
|
|
1122
|
-
Chevron: CalendarChevron,
|
|
1123
|
-
DayButton: CalendarDayButton,
|
|
1124
|
-
WeekNumber: CalendarWeekNumber
|
|
1125
|
-
}, components),
|
|
1126
|
-
formatters: __spreadValues({
|
|
1127
|
-
formatMonthDropdown: (date) => date.toLocaleString("default", { month: "short" })
|
|
1128
|
-
}, formatters),
|
|
1129
|
-
showOutsideDays
|
|
1130
|
-
}, props)
|
|
1131
|
-
);
|
|
1132
|
-
}
|
|
1133
|
-
function CalendarDayButton(_a) {
|
|
1134
|
-
var _b = _a, {
|
|
1135
|
-
className,
|
|
1136
|
-
day,
|
|
1137
|
-
modifiers
|
|
1138
|
-
} = _b, props = __objRest(_b, [
|
|
1139
|
-
"className",
|
|
1140
|
-
"day",
|
|
1141
|
-
"modifiers"
|
|
1142
|
-
]);
|
|
1143
|
-
const defaultClassNames = (0, import_react_day_picker.getDefaultClassNames)();
|
|
1144
|
-
const ref = React3.useRef(null);
|
|
1145
|
-
React3.useEffect(() => {
|
|
1146
|
-
var _a2;
|
|
1147
|
-
if (modifiers.focused) (_a2 = ref.current) == null ? void 0 : _a2.focus();
|
|
1148
|
-
}, [modifiers.focused]);
|
|
1149
|
-
const selectedSingle = modifiers.selected && !modifiers.range_start && !modifiers.range_end ? !modifiers.range_middle : null;
|
|
1150
|
-
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
1151
|
-
Button,
|
|
1152
|
-
__spreadValues({
|
|
1153
|
-
className: cn(
|
|
1154
|
-
"flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal rounded-none group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:text-accent-foreground [&>span]:text-xs [&>span]:opacity-70",
|
|
1155
|
-
defaultClassNames.day,
|
|
1156
|
-
className
|
|
1157
|
-
),
|
|
1158
|
-
"data-day": day.date.toLocaleDateString(),
|
|
1159
|
-
"data-range-end": modifiers.range_end,
|
|
1160
|
-
"data-range-middle": modifiers.range_middle,
|
|
1161
|
-
"data-range-start": modifiers.range_start,
|
|
1162
|
-
"data-selected-single": selectedSingle,
|
|
1163
|
-
ref,
|
|
1164
|
-
size: "icon",
|
|
1165
|
-
variant: "ghost"
|
|
1166
|
-
}, props)
|
|
1167
|
-
);
|
|
1168
|
-
}
|
|
1169
|
-
|
|
1170
|
-
// src/components/ui/card.tsx
|
|
1171
|
-
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
1172
|
-
function Card(_a) {
|
|
1173
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1174
|
-
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1175
|
-
"div",
|
|
1176
|
-
__spreadValues({
|
|
1177
|
-
className: cn(
|
|
1178
|
-
"flex flex-col gap-6 border bg-card py-6 text-card-foreground shadow-sm",
|
|
1179
|
-
className
|
|
1180
|
-
),
|
|
1181
|
-
"data-slot": "card"
|
|
1182
|
-
}, props)
|
|
1183
|
-
);
|
|
1184
|
-
}
|
|
1185
|
-
function CardHeader(_a) {
|
|
1186
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1187
|
-
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1188
|
-
"div",
|
|
1189
|
-
__spreadValues({
|
|
1190
|
-
className: cn(
|
|
1191
|
-
"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",
|
|
1192
|
-
className
|
|
1193
|
-
),
|
|
1194
|
-
"data-slot": "card-header"
|
|
1195
|
-
}, props)
|
|
1196
|
-
);
|
|
1197
|
-
}
|
|
1198
|
-
function CardTitle(_a) {
|
|
1199
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1200
|
-
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1201
|
-
"div",
|
|
1202
|
-
__spreadValues({
|
|
1203
|
-
className: cn("leading-none font-semibold", className),
|
|
1204
|
-
"data-slot": "card-title"
|
|
1205
|
-
}, props)
|
|
1206
|
-
);
|
|
1207
|
-
}
|
|
1208
|
-
function CardDescription(_a) {
|
|
1209
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1210
|
-
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1211
|
-
"div",
|
|
1212
|
-
__spreadValues({
|
|
1213
|
-
className: cn("text-sm text-muted-foreground", className),
|
|
1214
|
-
"data-slot": "card-description"
|
|
1215
|
-
}, props)
|
|
1216
|
-
);
|
|
1217
|
-
}
|
|
1218
|
-
function CardAction(_a) {
|
|
1219
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1220
|
-
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1221
|
-
"div",
|
|
1222
|
-
__spreadValues({
|
|
1223
|
-
className: cn(
|
|
1224
|
-
"col-start-2 row-span-2 row-start-1 self-start justify-self-end",
|
|
1225
|
-
className
|
|
1226
|
-
),
|
|
1227
|
-
"data-slot": "card-action"
|
|
1228
|
-
}, props)
|
|
1229
|
-
);
|
|
1230
|
-
}
|
|
1231
|
-
function CardContent(_a) {
|
|
1232
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1233
|
-
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1234
|
-
"div",
|
|
1235
|
-
__spreadValues({
|
|
1236
|
-
className: cn("px-6", className),
|
|
1237
|
-
"data-slot": "card-content"
|
|
2114
|
+
components: __spreadValues({
|
|
2115
|
+
Root: CalendarRoot,
|
|
2116
|
+
Chevron: CalendarChevron,
|
|
2117
|
+
DayButton: CalendarDayButton,
|
|
2118
|
+
WeekNumber: CalendarWeekNumber
|
|
2119
|
+
}, components),
|
|
2120
|
+
formatters: __spreadValues({
|
|
2121
|
+
formatMonthDropdown: (date) => date.toLocaleString("default", { month: "short" })
|
|
2122
|
+
}, formatters),
|
|
2123
|
+
showOutsideDays
|
|
1238
2124
|
}, props)
|
|
1239
2125
|
);
|
|
1240
2126
|
}
|
|
1241
|
-
function
|
|
1242
|
-
var _b = _a, {
|
|
1243
|
-
|
|
1244
|
-
|
|
2127
|
+
function CalendarDayButton(_a) {
|
|
2128
|
+
var _b = _a, {
|
|
2129
|
+
className,
|
|
2130
|
+
day,
|
|
2131
|
+
modifiers
|
|
2132
|
+
} = _b, props = __objRest(_b, [
|
|
2133
|
+
"className",
|
|
2134
|
+
"day",
|
|
2135
|
+
"modifiers"
|
|
2136
|
+
]);
|
|
2137
|
+
const defaultClassNames = (0, import_react_day_picker.getDefaultClassNames)();
|
|
2138
|
+
const ref = React7.useRef(null);
|
|
2139
|
+
React7.useEffect(() => {
|
|
2140
|
+
var _a2;
|
|
2141
|
+
if (modifiers.focused) (_a2 = ref.current) == null ? void 0 : _a2.focus();
|
|
2142
|
+
}, [modifiers.focused]);
|
|
2143
|
+
const selectedSingle = modifiers.selected && !modifiers.range_start && !modifiers.range_end ? !modifiers.range_middle : null;
|
|
2144
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
2145
|
+
Button,
|
|
1245
2146
|
__spreadValues({
|
|
1246
|
-
className: cn(
|
|
1247
|
-
|
|
2147
|
+
className: cn(
|
|
2148
|
+
"flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal rounded-none group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:text-accent-foreground [&>span]:text-xs [&>span]:opacity-70",
|
|
2149
|
+
defaultClassNames.day,
|
|
2150
|
+
className
|
|
2151
|
+
),
|
|
2152
|
+
"data-day": day.date.toLocaleDateString(),
|
|
2153
|
+
"data-range-end": modifiers.range_end,
|
|
2154
|
+
"data-range-middle": modifiers.range_middle,
|
|
2155
|
+
"data-range-start": modifiers.range_start,
|
|
2156
|
+
"data-selected-single": selectedSingle,
|
|
2157
|
+
ref,
|
|
2158
|
+
size: "icon",
|
|
2159
|
+
variant: "ghost"
|
|
1248
2160
|
}, props)
|
|
1249
2161
|
);
|
|
1250
2162
|
}
|
|
1251
2163
|
|
|
1252
2164
|
// src/components/ui/checkbox.tsx
|
|
1253
|
-
var
|
|
1254
|
-
var
|
|
2165
|
+
var import_react7 = require("react");
|
|
2166
|
+
var import_lucide_react5 = require("lucide-react");
|
|
1255
2167
|
var import_checkbox = require("@base-ui/react/checkbox");
|
|
1256
|
-
var
|
|
2168
|
+
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
1257
2169
|
function Checkbox(_a) {
|
|
1258
2170
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1259
|
-
return /* @__PURE__ */ (0,
|
|
2171
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
1260
2172
|
import_checkbox.Checkbox.Root,
|
|
1261
2173
|
__spreadProps(__spreadValues({
|
|
1262
2174
|
className: cn(
|
|
@@ -1275,14 +2187,14 @@ function Checkbox(_a) {
|
|
|
1275
2187
|
),
|
|
1276
2188
|
"data-slot": "checkbox"
|
|
1277
2189
|
}, props), {
|
|
1278
|
-
children: /* @__PURE__ */ (0,
|
|
2190
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
1279
2191
|
import_checkbox.Checkbox.Indicator,
|
|
1280
2192
|
{
|
|
1281
2193
|
className: "grid place-content-center text-current transition-none",
|
|
1282
2194
|
"data-slot": "checkbox-indicator",
|
|
1283
2195
|
children: [
|
|
1284
|
-
/* @__PURE__ */ (0,
|
|
1285
|
-
/* @__PURE__ */ (0,
|
|
2196
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react5.CheckIcon, { className: "size-3.5 group-data-indeterminate:hidden" }),
|
|
2197
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react5.MinusIcon, { className: "size-3.5 hidden group-data-indeterminate:block" })
|
|
1286
2198
|
]
|
|
1287
2199
|
}
|
|
1288
2200
|
)
|
|
@@ -1309,12 +2221,12 @@ function CheckboxCard(_a) {
|
|
|
1309
2221
|
"label",
|
|
1310
2222
|
"description"
|
|
1311
2223
|
]);
|
|
1312
|
-
const [internalChecked, setInternalChecked] = (0,
|
|
2224
|
+
const [internalChecked, setInternalChecked] = (0, import_react7.useState)(
|
|
1313
2225
|
Boolean(defaultChecked)
|
|
1314
2226
|
);
|
|
1315
2227
|
const resolvedChecked = checked != null ? checked : internalChecked;
|
|
1316
2228
|
const isTinted = resolvedChecked;
|
|
1317
|
-
return /* @__PURE__ */ (0,
|
|
2229
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
1318
2230
|
"label",
|
|
1319
2231
|
{
|
|
1320
2232
|
className: cn(
|
|
@@ -1325,7 +2237,7 @@ function CheckboxCard(_a) {
|
|
|
1325
2237
|
),
|
|
1326
2238
|
"data-slot": "checkbox-card",
|
|
1327
2239
|
children: [
|
|
1328
|
-
/* @__PURE__ */ (0,
|
|
2240
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
1329
2241
|
Checkbox,
|
|
1330
2242
|
__spreadValues({
|
|
1331
2243
|
"aria-invalid": error || void 0,
|
|
@@ -1338,9 +2250,9 @@ function CheckboxCard(_a) {
|
|
|
1338
2250
|
}
|
|
1339
2251
|
}, props)
|
|
1340
2252
|
),
|
|
1341
|
-
/* @__PURE__ */ (0,
|
|
1342
|
-
/* @__PURE__ */ (0,
|
|
1343
|
-
description ? /* @__PURE__ */ (0,
|
|
2253
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "flex flex-col gap-1", children: [
|
|
2254
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "text-sm font-medium leading-none", children: label }),
|
|
2255
|
+
description ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "text-sm text-muted-foreground", children: description }) : null
|
|
1344
2256
|
] })
|
|
1345
2257
|
]
|
|
1346
2258
|
}
|
|
@@ -1348,8 +2260,8 @@ function CheckboxCard(_a) {
|
|
|
1348
2260
|
}
|
|
1349
2261
|
|
|
1350
2262
|
// src/components/ui/chip.tsx
|
|
1351
|
-
var
|
|
1352
|
-
var
|
|
2263
|
+
var import_lucide_react6 = require("lucide-react");
|
|
2264
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
1353
2265
|
function Chip(_a) {
|
|
1354
2266
|
var _b = _a, {
|
|
1355
2267
|
className,
|
|
@@ -1364,7 +2276,7 @@ function Chip(_a) {
|
|
|
1364
2276
|
"disabled",
|
|
1365
2277
|
"children"
|
|
1366
2278
|
]);
|
|
1367
|
-
return /* @__PURE__ */ (0,
|
|
2279
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
1368
2280
|
"span",
|
|
1369
2281
|
__spreadProps(__spreadValues({
|
|
1370
2282
|
"aria-disabled": disabled,
|
|
@@ -1380,7 +2292,7 @@ function Chip(_a) {
|
|
|
1380
2292
|
}, props), {
|
|
1381
2293
|
children: [
|
|
1382
2294
|
children,
|
|
1383
|
-
onRemove ? /* @__PURE__ */ (0,
|
|
2295
|
+
onRemove ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1384
2296
|
"button",
|
|
1385
2297
|
{
|
|
1386
2298
|
"aria-label": "Remove",
|
|
@@ -1392,7 +2304,7 @@ function Chip(_a) {
|
|
|
1392
2304
|
onRemove();
|
|
1393
2305
|
},
|
|
1394
2306
|
type: "button",
|
|
1395
|
-
children: /* @__PURE__ */ (0,
|
|
2307
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react6.X, { className: "size-3" })
|
|
1396
2308
|
}
|
|
1397
2309
|
) : null
|
|
1398
2310
|
]
|
|
@@ -1400,21 +2312,197 @@ function Chip(_a) {
|
|
|
1400
2312
|
);
|
|
1401
2313
|
}
|
|
1402
2314
|
|
|
2315
|
+
// src/components/ui/combobox.tsx
|
|
2316
|
+
var import_lucide_react7 = require("lucide-react");
|
|
2317
|
+
var import_combobox = require("@base-ui/react/combobox");
|
|
2318
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
2319
|
+
function Combobox(_a) {
|
|
2320
|
+
var props = __objRest(_a, []);
|
|
2321
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_combobox.Combobox.Root, __spreadValues({ "data-slot": "combobox" }, props));
|
|
2322
|
+
}
|
|
2323
|
+
function ComboboxTrigger(_a) {
|
|
2324
|
+
var _b = _a, {
|
|
2325
|
+
className,
|
|
2326
|
+
size = "default",
|
|
2327
|
+
children
|
|
2328
|
+
} = _b, props = __objRest(_b, [
|
|
2329
|
+
"className",
|
|
2330
|
+
"size",
|
|
2331
|
+
"children"
|
|
2332
|
+
]);
|
|
2333
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
2334
|
+
import_combobox.Combobox.Trigger,
|
|
2335
|
+
__spreadProps(__spreadValues({
|
|
2336
|
+
"data-slot": "combobox-trigger",
|
|
2337
|
+
"data-size": size,
|
|
2338
|
+
className: cn(
|
|
2339
|
+
"flex w-fit items-center justify-between gap-2 border border-input bg-transparent px-3 py-2 text-body-small whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-primary focus-visible:ring-[3px] focus-visible:ring-primary/20 data-[popup-open]:border-primary data-[popup-open]:ring-[3px] data-[popup-open]:ring-primary/20 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[placeholder]:text-muted-foreground data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=combobox-value]:line-clamp-1 *:data-[slot=combobox-value]:flex *:data-[slot=combobox-value]:items-center *:data-[slot=combobox-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground",
|
|
2340
|
+
className
|
|
2341
|
+
)
|
|
2342
|
+
}, props), {
|
|
2343
|
+
children: [
|
|
2344
|
+
children,
|
|
2345
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_combobox.Combobox.Icon, { className: "transition-transform duration-200 data-[popup-open]:rotate-180", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react7.ChevronDownIcon, { className: "size-4 opacity-50" }) })
|
|
2346
|
+
]
|
|
2347
|
+
})
|
|
2348
|
+
);
|
|
2349
|
+
}
|
|
2350
|
+
function ComboboxValue(_a) {
|
|
2351
|
+
var props = __objRest(_a, []);
|
|
2352
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_combobox.Combobox.Value, __spreadValues({ "data-slot": "combobox-value" }, props));
|
|
2353
|
+
}
|
|
2354
|
+
function ComboboxInput(_a) {
|
|
2355
|
+
var _b = _a, {
|
|
2356
|
+
className
|
|
2357
|
+
} = _b, props = __objRest(_b, [
|
|
2358
|
+
"className"
|
|
2359
|
+
]);
|
|
2360
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { "data-slot": "combobox-input-wrapper", className: "flex items-center gap-2 border-b border-border px-3", children: [
|
|
2361
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react7.SearchIcon, { className: "size-4 shrink-0 text-muted-foreground" }),
|
|
2362
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
2363
|
+
import_combobox.Combobox.Input,
|
|
2364
|
+
__spreadValues({
|
|
2365
|
+
"data-slot": "combobox-input",
|
|
2366
|
+
className: cn(
|
|
2367
|
+
"h-9 w-full min-w-0 bg-transparent py-1 text-body-small outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
|
|
2368
|
+
className
|
|
2369
|
+
)
|
|
2370
|
+
}, props)
|
|
2371
|
+
)
|
|
2372
|
+
] });
|
|
2373
|
+
}
|
|
2374
|
+
function ComboboxContent(_a) {
|
|
2375
|
+
var _b = _a, {
|
|
2376
|
+
className,
|
|
2377
|
+
children
|
|
2378
|
+
} = _b, props = __objRest(_b, [
|
|
2379
|
+
"className",
|
|
2380
|
+
"children"
|
|
2381
|
+
]);
|
|
2382
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_combobox.Combobox.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_combobox.Combobox.Positioner, { sideOffset: 4, align: "start", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
2383
|
+
import_combobox.Combobox.Popup,
|
|
2384
|
+
__spreadProps(__spreadValues({
|
|
2385
|
+
"data-slot": "combobox-content",
|
|
2386
|
+
className: cn(
|
|
2387
|
+
"relative z-50 max-h-[var(--available-height)] min-w-[8rem] overflow-hidden border bg-popover text-popover-foreground shadow-md 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 data-[ending-style]:animate-out data-[ending-style]:fade-out-0 data-[ending-style]:zoom-out-95 data-[open]:animate-in data-[open]:fade-in-0 data-[open]:zoom-in-95",
|
|
2388
|
+
className
|
|
2389
|
+
)
|
|
2390
|
+
}, props), {
|
|
2391
|
+
children
|
|
2392
|
+
})
|
|
2393
|
+
) }) });
|
|
2394
|
+
}
|
|
2395
|
+
function ComboboxList(_a) {
|
|
2396
|
+
var _b = _a, {
|
|
2397
|
+
className
|
|
2398
|
+
} = _b, props = __objRest(_b, [
|
|
2399
|
+
"className"
|
|
2400
|
+
]);
|
|
2401
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
2402
|
+
import_combobox.Combobox.List,
|
|
2403
|
+
__spreadValues({
|
|
2404
|
+
"data-slot": "combobox-list",
|
|
2405
|
+
className: cn(
|
|
2406
|
+
"max-h-[min(var(--available-height),18rem)] overflow-y-auto p-1",
|
|
2407
|
+
className
|
|
2408
|
+
)
|
|
2409
|
+
}, props)
|
|
2410
|
+
);
|
|
2411
|
+
}
|
|
2412
|
+
function ComboboxItem(_a) {
|
|
2413
|
+
var _b = _a, {
|
|
2414
|
+
className,
|
|
2415
|
+
children
|
|
2416
|
+
} = _b, props = __objRest(_b, [
|
|
2417
|
+
"className",
|
|
2418
|
+
"children"
|
|
2419
|
+
]);
|
|
2420
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
2421
|
+
import_combobox.Combobox.Item,
|
|
2422
|
+
__spreadProps(__spreadValues({
|
|
2423
|
+
"data-slot": "combobox-item",
|
|
2424
|
+
className: cn(
|
|
2425
|
+
"relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-body-small outline-hidden select-none data-[highlighted]:bg-primary/5 data-[highlighted]:text-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground",
|
|
2426
|
+
className
|
|
2427
|
+
)
|
|
2428
|
+
}, props), {
|
|
2429
|
+
children: [
|
|
2430
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
2431
|
+
"span",
|
|
2432
|
+
{
|
|
2433
|
+
"data-slot": "combobox-item-indicator",
|
|
2434
|
+
className: "absolute right-2 flex size-3.5 items-center justify-center",
|
|
2435
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_combobox.Combobox.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react7.CheckIcon, { className: "size-4" }) })
|
|
2436
|
+
}
|
|
2437
|
+
),
|
|
2438
|
+
children
|
|
2439
|
+
]
|
|
2440
|
+
})
|
|
2441
|
+
);
|
|
2442
|
+
}
|
|
2443
|
+
function ComboboxEmpty(_a) {
|
|
2444
|
+
var _b = _a, {
|
|
2445
|
+
className
|
|
2446
|
+
} = _b, props = __objRest(_b, [
|
|
2447
|
+
"className"
|
|
2448
|
+
]);
|
|
2449
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
2450
|
+
import_combobox.Combobox.Empty,
|
|
2451
|
+
__spreadValues({
|
|
2452
|
+
"data-slot": "combobox-empty",
|
|
2453
|
+
className: `text-body-small ${cn("py-6 text-center text-muted-foreground empty:hidden", className)}`
|
|
2454
|
+
}, props)
|
|
2455
|
+
);
|
|
2456
|
+
}
|
|
2457
|
+
function ComboboxGroup(_a) {
|
|
2458
|
+
var props = __objRest(_a, []);
|
|
2459
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_combobox.Combobox.Group, __spreadValues({ "data-slot": "combobox-group" }, props));
|
|
2460
|
+
}
|
|
2461
|
+
function ComboboxGroupLabel(_a) {
|
|
2462
|
+
var _b = _a, {
|
|
2463
|
+
className
|
|
2464
|
+
} = _b, props = __objRest(_b, [
|
|
2465
|
+
"className"
|
|
2466
|
+
]);
|
|
2467
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
2468
|
+
import_combobox.Combobox.GroupLabel,
|
|
2469
|
+
__spreadValues({
|
|
2470
|
+
"data-slot": "combobox-group-label",
|
|
2471
|
+
className: `text-label-small ${cn("px-2 py-1.5 uppercase text-muted-foreground", className)}`
|
|
2472
|
+
}, props)
|
|
2473
|
+
);
|
|
2474
|
+
}
|
|
2475
|
+
function ComboboxSeparator(_a) {
|
|
2476
|
+
var _b = _a, {
|
|
2477
|
+
className
|
|
2478
|
+
} = _b, props = __objRest(_b, [
|
|
2479
|
+
"className"
|
|
2480
|
+
]);
|
|
2481
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
2482
|
+
"div",
|
|
2483
|
+
__spreadValues({
|
|
2484
|
+
role: "separator",
|
|
2485
|
+
"data-slot": "combobox-separator",
|
|
2486
|
+
className: cn("pointer-events-none -mx-1 my-1 h-px bg-border", className)
|
|
2487
|
+
}, props)
|
|
2488
|
+
);
|
|
2489
|
+
}
|
|
2490
|
+
|
|
1403
2491
|
// src/components/ui/data-table.tsx
|
|
1404
|
-
var
|
|
2492
|
+
var React8 = __toESM(require("react"));
|
|
1405
2493
|
var import_react_table = require("@tanstack/react-table");
|
|
1406
|
-
var
|
|
2494
|
+
var import_lucide_react10 = require("lucide-react");
|
|
1407
2495
|
|
|
1408
2496
|
// src/components/ui/table.tsx
|
|
1409
|
-
var
|
|
2497
|
+
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
1410
2498
|
function Table(_a) {
|
|
1411
2499
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1412
|
-
return /* @__PURE__ */ (0,
|
|
2500
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1413
2501
|
"div",
|
|
1414
2502
|
{
|
|
1415
2503
|
className: "relative w-full overflow-x-auto",
|
|
1416
2504
|
"data-slot": "table-container",
|
|
1417
|
-
children: /* @__PURE__ */ (0,
|
|
2505
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1418
2506
|
"table",
|
|
1419
2507
|
__spreadValues({
|
|
1420
2508
|
className: cn("w-full caption-bottom text-sm", className),
|
|
@@ -1426,7 +2514,7 @@ function Table(_a) {
|
|
|
1426
2514
|
}
|
|
1427
2515
|
function TableHeader(_a) {
|
|
1428
2516
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1429
|
-
return /* @__PURE__ */ (0,
|
|
2517
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1430
2518
|
"thead",
|
|
1431
2519
|
__spreadValues({
|
|
1432
2520
|
className: cn("[&_tr]:border-b", className),
|
|
@@ -1436,7 +2524,7 @@ function TableHeader(_a) {
|
|
|
1436
2524
|
}
|
|
1437
2525
|
function TableBody(_a) {
|
|
1438
2526
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1439
|
-
return /* @__PURE__ */ (0,
|
|
2527
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1440
2528
|
"tbody",
|
|
1441
2529
|
__spreadValues({
|
|
1442
2530
|
className: cn("[&_tr:last-child]:border-0", className),
|
|
@@ -1446,7 +2534,7 @@ function TableBody(_a) {
|
|
|
1446
2534
|
}
|
|
1447
2535
|
function TableFooter(_a) {
|
|
1448
2536
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1449
|
-
return /* @__PURE__ */ (0,
|
|
2537
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1450
2538
|
"tfoot",
|
|
1451
2539
|
__spreadValues({
|
|
1452
2540
|
className: cn(
|
|
@@ -1459,7 +2547,7 @@ function TableFooter(_a) {
|
|
|
1459
2547
|
}
|
|
1460
2548
|
function TableRow(_a) {
|
|
1461
2549
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1462
|
-
return /* @__PURE__ */ (0,
|
|
2550
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1463
2551
|
"tr",
|
|
1464
2552
|
__spreadValues({
|
|
1465
2553
|
className: cn(
|
|
@@ -1472,7 +2560,7 @@ function TableRow(_a) {
|
|
|
1472
2560
|
}
|
|
1473
2561
|
function TableHead(_a) {
|
|
1474
2562
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1475
|
-
return /* @__PURE__ */ (0,
|
|
2563
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1476
2564
|
"th",
|
|
1477
2565
|
__spreadValues({
|
|
1478
2566
|
className: cn(
|
|
@@ -1486,7 +2574,7 @@ function TableHead(_a) {
|
|
|
1486
2574
|
}
|
|
1487
2575
|
function TableCell(_a) {
|
|
1488
2576
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1489
|
-
return /* @__PURE__ */ (0,
|
|
2577
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1490
2578
|
"td",
|
|
1491
2579
|
__spreadValues({
|
|
1492
2580
|
className: cn(
|
|
@@ -1504,7 +2592,7 @@ function TableCaption(_a) {
|
|
|
1504
2592
|
} = _b, props = __objRest(_b, [
|
|
1505
2593
|
"className"
|
|
1506
2594
|
]);
|
|
1507
|
-
return /* @__PURE__ */ (0,
|
|
2595
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1508
2596
|
"caption",
|
|
1509
2597
|
__spreadValues({
|
|
1510
2598
|
className: cn("mt-4 text-sm text-muted-foreground", className),
|
|
@@ -1514,10 +2602,10 @@ function TableCaption(_a) {
|
|
|
1514
2602
|
}
|
|
1515
2603
|
|
|
1516
2604
|
// src/components/ui/input.tsx
|
|
1517
|
-
var
|
|
2605
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
1518
2606
|
function Input(_a) {
|
|
1519
2607
|
var _b = _a, { className, type } = _b, props = __objRest(_b, ["className", "type"]);
|
|
1520
|
-
return /* @__PURE__ */ (0,
|
|
2608
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
1521
2609
|
"input",
|
|
1522
2610
|
__spreadValues({
|
|
1523
2611
|
className: cn(
|
|
@@ -1533,20 +2621,20 @@ function Input(_a) {
|
|
|
1533
2621
|
}
|
|
1534
2622
|
|
|
1535
2623
|
// src/components/ui/select.tsx
|
|
1536
|
-
var
|
|
2624
|
+
var import_lucide_react8 = require("lucide-react");
|
|
1537
2625
|
var import_select = require("@base-ui/react/select");
|
|
1538
|
-
var
|
|
2626
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
1539
2627
|
function Select(_a) {
|
|
1540
2628
|
var props = __objRest(_a, []);
|
|
1541
|
-
return /* @__PURE__ */ (0,
|
|
2629
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_select.Select.Root, __spreadValues({ "data-slot": "select" }, props));
|
|
1542
2630
|
}
|
|
1543
2631
|
function SelectGroup(_a) {
|
|
1544
2632
|
var props = __objRest(_a, []);
|
|
1545
|
-
return /* @__PURE__ */ (0,
|
|
2633
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_select.Select.Group, __spreadValues({ "data-slot": "select-group" }, props));
|
|
1546
2634
|
}
|
|
1547
2635
|
function SelectValue(_a) {
|
|
1548
2636
|
var props = __objRest(_a, []);
|
|
1549
|
-
return /* @__PURE__ */ (0,
|
|
2637
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_select.Select.Value, __spreadValues({ "data-slot": "select-value" }, props));
|
|
1550
2638
|
}
|
|
1551
2639
|
function SelectTrigger(_a) {
|
|
1552
2640
|
var _b = _a, {
|
|
@@ -1558,7 +2646,7 @@ function SelectTrigger(_a) {
|
|
|
1558
2646
|
"size",
|
|
1559
2647
|
"children"
|
|
1560
2648
|
]);
|
|
1561
|
-
return /* @__PURE__ */ (0,
|
|
2649
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
1562
2650
|
import_select.Select.Trigger,
|
|
1563
2651
|
__spreadProps(__spreadValues({
|
|
1564
2652
|
className: cn(
|
|
@@ -1570,7 +2658,7 @@ function SelectTrigger(_a) {
|
|
|
1570
2658
|
}, props), {
|
|
1571
2659
|
children: [
|
|
1572
2660
|
children,
|
|
1573
|
-
/* @__PURE__ */ (0,
|
|
2661
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_select.Select.Icon, { className: "transition-transform duration-200 data-popup-open:rotate-180", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react8.ChevronDownIcon, { className: "size-4 opacity-50" }) })
|
|
1574
2662
|
]
|
|
1575
2663
|
})
|
|
1576
2664
|
);
|
|
@@ -1586,7 +2674,7 @@ function SelectContent(_a) {
|
|
|
1586
2674
|
"style"
|
|
1587
2675
|
]);
|
|
1588
2676
|
const themeVars = useThemeVars();
|
|
1589
|
-
return /* @__PURE__ */ (0,
|
|
2677
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_select.Select.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_select.Select.Positioner, { align: "start", alignItemWithTrigger: false, sideOffset: 4, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
1590
2678
|
import_select.Select.Popup,
|
|
1591
2679
|
__spreadProps(__spreadValues({
|
|
1592
2680
|
className: cn(
|
|
@@ -1597,9 +2685,9 @@ function SelectContent(_a) {
|
|
|
1597
2685
|
style: __spreadValues(__spreadValues({}, themeVars), style2)
|
|
1598
2686
|
}, props), {
|
|
1599
2687
|
children: [
|
|
1600
|
-
/* @__PURE__ */ (0,
|
|
2688
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(SelectScrollUpButton, {}),
|
|
1601
2689
|
children,
|
|
1602
|
-
/* @__PURE__ */ (0,
|
|
2690
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(SelectScrollDownButton, {})
|
|
1603
2691
|
]
|
|
1604
2692
|
})
|
|
1605
2693
|
) }) });
|
|
@@ -1610,7 +2698,7 @@ function SelectLabel(_a) {
|
|
|
1610
2698
|
} = _b, props = __objRest(_b, [
|
|
1611
2699
|
"className"
|
|
1612
2700
|
]);
|
|
1613
|
-
return /* @__PURE__ */ (0,
|
|
2701
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1614
2702
|
import_select.Select.GroupLabel,
|
|
1615
2703
|
__spreadValues({
|
|
1616
2704
|
className: cn("px-2 py-1.5 text-xs font-semibold text-muted-foreground", className),
|
|
@@ -1626,7 +2714,7 @@ function SelectItem(_a) {
|
|
|
1626
2714
|
"className",
|
|
1627
2715
|
"children"
|
|
1628
2716
|
]);
|
|
1629
|
-
return /* @__PURE__ */ (0,
|
|
2717
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
1630
2718
|
import_select.Select.Item,
|
|
1631
2719
|
__spreadProps(__spreadValues({
|
|
1632
2720
|
className: cn(
|
|
@@ -1636,15 +2724,15 @@ function SelectItem(_a) {
|
|
|
1636
2724
|
"data-slot": "select-item"
|
|
1637
2725
|
}, props), {
|
|
1638
2726
|
children: [
|
|
1639
|
-
/* @__PURE__ */ (0,
|
|
2727
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1640
2728
|
"span",
|
|
1641
2729
|
{
|
|
1642
2730
|
className: "absolute right-2 flex size-3.5 items-center justify-center",
|
|
1643
2731
|
"data-slot": "select-item-indicator",
|
|
1644
|
-
children: /* @__PURE__ */ (0,
|
|
2732
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_select.Select.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react8.CheckIcon, { className: "size-4" }) })
|
|
1645
2733
|
}
|
|
1646
2734
|
),
|
|
1647
|
-
/* @__PURE__ */ (0,
|
|
2735
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_select.Select.ItemText, { children })
|
|
1648
2736
|
]
|
|
1649
2737
|
})
|
|
1650
2738
|
);
|
|
@@ -1655,7 +2743,7 @@ function SelectSeparator(_a) {
|
|
|
1655
2743
|
} = _b, props = __objRest(_b, [
|
|
1656
2744
|
"className"
|
|
1657
2745
|
]);
|
|
1658
|
-
return /* @__PURE__ */ (0,
|
|
2746
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1659
2747
|
"div",
|
|
1660
2748
|
__spreadValues({
|
|
1661
2749
|
className: cn("pointer-events-none -mx-1 my-1 h-px bg-border", className),
|
|
@@ -1670,7 +2758,7 @@ function SelectScrollUpButton(_a) {
|
|
|
1670
2758
|
} = _b, props = __objRest(_b, [
|
|
1671
2759
|
"className"
|
|
1672
2760
|
]);
|
|
1673
|
-
return /* @__PURE__ */ (0,
|
|
2761
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1674
2762
|
import_select.Select.ScrollUpArrow,
|
|
1675
2763
|
__spreadProps(__spreadValues({
|
|
1676
2764
|
className: cn(
|
|
@@ -1679,7 +2767,7 @@ function SelectScrollUpButton(_a) {
|
|
|
1679
2767
|
),
|
|
1680
2768
|
"data-slot": "select-scroll-up-button"
|
|
1681
2769
|
}, props), {
|
|
1682
|
-
children: /* @__PURE__ */ (0,
|
|
2770
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react8.ChevronUpIcon, { className: "size-4" })
|
|
1683
2771
|
})
|
|
1684
2772
|
);
|
|
1685
2773
|
}
|
|
@@ -1689,7 +2777,7 @@ function SelectScrollDownButton(_a) {
|
|
|
1689
2777
|
} = _b, props = __objRest(_b, [
|
|
1690
2778
|
"className"
|
|
1691
2779
|
]);
|
|
1692
|
-
return /* @__PURE__ */ (0,
|
|
2780
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1693
2781
|
import_select.Select.ScrollDownArrow,
|
|
1694
2782
|
__spreadProps(__spreadValues({
|
|
1695
2783
|
className: cn(
|
|
@@ -1698,26 +2786,26 @@ function SelectScrollDownButton(_a) {
|
|
|
1698
2786
|
),
|
|
1699
2787
|
"data-slot": "select-scroll-down-button"
|
|
1700
2788
|
}, props), {
|
|
1701
|
-
children: /* @__PURE__ */ (0,
|
|
2789
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react8.ChevronDownIcon, { className: "size-4" })
|
|
1702
2790
|
})
|
|
1703
2791
|
);
|
|
1704
2792
|
}
|
|
1705
2793
|
|
|
1706
2794
|
// src/components/ui/dropdown-menu.tsx
|
|
1707
|
-
var
|
|
2795
|
+
var import_lucide_react9 = require("lucide-react");
|
|
1708
2796
|
var import_menu = require("@base-ui/react/menu");
|
|
1709
|
-
var
|
|
2797
|
+
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
1710
2798
|
function DropdownMenu(_a) {
|
|
1711
2799
|
var props = __objRest(_a, []);
|
|
1712
|
-
return /* @__PURE__ */ (0,
|
|
2800
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_menu.Menu.Root, __spreadValues({ "data-slot": "dropdown-menu" }, props));
|
|
1713
2801
|
}
|
|
1714
2802
|
function DropdownMenuPortal(_a) {
|
|
1715
2803
|
var props = __objRest(_a, []);
|
|
1716
|
-
return /* @__PURE__ */ (0,
|
|
2804
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_menu.Menu.Portal, __spreadValues({ "data-slot": "dropdown-menu-portal" }, props));
|
|
1717
2805
|
}
|
|
1718
2806
|
function DropdownMenuTrigger(_a) {
|
|
1719
2807
|
var props = __objRest(_a, []);
|
|
1720
|
-
return /* @__PURE__ */ (0,
|
|
2808
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
1721
2809
|
import_menu.Menu.Trigger,
|
|
1722
2810
|
__spreadValues({
|
|
1723
2811
|
"data-slot": "dropdown-menu-trigger"
|
|
@@ -1735,7 +2823,7 @@ function DropdownMenuContent(_a) {
|
|
|
1735
2823
|
"style"
|
|
1736
2824
|
]);
|
|
1737
2825
|
const themeVars = useThemeVars();
|
|
1738
|
-
return /* @__PURE__ */ (0,
|
|
2826
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_menu.Menu.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_menu.Menu.Positioner, { sideOffset, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
1739
2827
|
import_menu.Menu.Popup,
|
|
1740
2828
|
__spreadValues({
|
|
1741
2829
|
className: cn(
|
|
@@ -1749,7 +2837,7 @@ function DropdownMenuContent(_a) {
|
|
|
1749
2837
|
}
|
|
1750
2838
|
function DropdownMenuGroup(_a) {
|
|
1751
2839
|
var props = __objRest(_a, []);
|
|
1752
|
-
return /* @__PURE__ */ (0,
|
|
2840
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_menu.Menu.Group, __spreadValues({ "data-slot": "dropdown-menu-group" }, props));
|
|
1753
2841
|
}
|
|
1754
2842
|
function DropdownMenuItem(_a) {
|
|
1755
2843
|
var _b = _a, {
|
|
@@ -1761,7 +2849,7 @@ function DropdownMenuItem(_a) {
|
|
|
1761
2849
|
"inset",
|
|
1762
2850
|
"variant"
|
|
1763
2851
|
]);
|
|
1764
|
-
return /* @__PURE__ */ (0,
|
|
2852
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
1765
2853
|
import_menu.Menu.Item,
|
|
1766
2854
|
__spreadValues({
|
|
1767
2855
|
className: cn(
|
|
@@ -1784,7 +2872,7 @@ function DropdownMenuCheckboxItem(_a) {
|
|
|
1784
2872
|
"children",
|
|
1785
2873
|
"checked"
|
|
1786
2874
|
]);
|
|
1787
|
-
return /* @__PURE__ */ (0,
|
|
2875
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
|
|
1788
2876
|
import_menu.Menu.CheckboxItem,
|
|
1789
2877
|
__spreadProps(__spreadValues({
|
|
1790
2878
|
checked,
|
|
@@ -1795,7 +2883,7 @@ function DropdownMenuCheckboxItem(_a) {
|
|
|
1795
2883
|
"data-slot": "dropdown-menu-checkbox-item"
|
|
1796
2884
|
}, props), {
|
|
1797
2885
|
children: [
|
|
1798
|
-
/* @__PURE__ */ (0,
|
|
2886
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_menu.Menu.CheckboxItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react9.CheckIcon, { className: "size-4" }) }) }),
|
|
1799
2887
|
children
|
|
1800
2888
|
]
|
|
1801
2889
|
})
|
|
@@ -1803,7 +2891,7 @@ function DropdownMenuCheckboxItem(_a) {
|
|
|
1803
2891
|
}
|
|
1804
2892
|
function DropdownMenuRadioGroup(_a) {
|
|
1805
2893
|
var props = __objRest(_a, []);
|
|
1806
|
-
return /* @__PURE__ */ (0,
|
|
2894
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
1807
2895
|
import_menu.Menu.RadioGroup,
|
|
1808
2896
|
__spreadValues({
|
|
1809
2897
|
"data-slot": "dropdown-menu-radio-group"
|
|
@@ -1818,7 +2906,7 @@ function DropdownMenuRadioItem(_a) {
|
|
|
1818
2906
|
"className",
|
|
1819
2907
|
"children"
|
|
1820
2908
|
]);
|
|
1821
|
-
return /* @__PURE__ */ (0,
|
|
2909
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
|
|
1822
2910
|
import_menu.Menu.RadioItem,
|
|
1823
2911
|
__spreadProps(__spreadValues({
|
|
1824
2912
|
className: cn(
|
|
@@ -1828,7 +2916,7 @@ function DropdownMenuRadioItem(_a) {
|
|
|
1828
2916
|
"data-slot": "dropdown-menu-radio-item"
|
|
1829
2917
|
}, props), {
|
|
1830
2918
|
children: [
|
|
1831
|
-
/* @__PURE__ */ (0,
|
|
2919
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_menu.Menu.RadioItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react9.CircleIcon, { className: "size-2 fill-current" }) }) }),
|
|
1832
2920
|
children
|
|
1833
2921
|
]
|
|
1834
2922
|
})
|
|
@@ -1842,7 +2930,7 @@ function DropdownMenuLabel(_a) {
|
|
|
1842
2930
|
"className",
|
|
1843
2931
|
"inset"
|
|
1844
2932
|
]);
|
|
1845
|
-
return /* @__PURE__ */ (0,
|
|
2933
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
1846
2934
|
import_menu.Menu.GroupLabel,
|
|
1847
2935
|
__spreadValues({
|
|
1848
2936
|
className: cn(
|
|
@@ -1860,7 +2948,7 @@ function DropdownMenuSeparator(_a) {
|
|
|
1860
2948
|
} = _b, props = __objRest(_b, [
|
|
1861
2949
|
"className"
|
|
1862
2950
|
]);
|
|
1863
|
-
return /* @__PURE__ */ (0,
|
|
2951
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
1864
2952
|
import_menu.Menu.Separator,
|
|
1865
2953
|
__spreadValues({
|
|
1866
2954
|
className: cn("-mx-1 my-1 h-px bg-border", className),
|
|
@@ -1874,7 +2962,7 @@ function DropdownMenuShortcut(_a) {
|
|
|
1874
2962
|
} = _b, props = __objRest(_b, [
|
|
1875
2963
|
"className"
|
|
1876
2964
|
]);
|
|
1877
|
-
return /* @__PURE__ */ (0,
|
|
2965
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
1878
2966
|
"span",
|
|
1879
2967
|
__spreadValues({
|
|
1880
2968
|
className: cn(
|
|
@@ -1887,7 +2975,7 @@ function DropdownMenuShortcut(_a) {
|
|
|
1887
2975
|
}
|
|
1888
2976
|
function DropdownMenuSub(_a) {
|
|
1889
2977
|
var props = __objRest(_a, []);
|
|
1890
|
-
return /* @__PURE__ */ (0,
|
|
2978
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_menu.Menu.SubmenuRoot, __spreadValues({ "data-slot": "dropdown-menu-sub" }, props));
|
|
1891
2979
|
}
|
|
1892
2980
|
function DropdownMenuSubTrigger(_a) {
|
|
1893
2981
|
var _b = _a, {
|
|
@@ -1899,7 +2987,7 @@ function DropdownMenuSubTrigger(_a) {
|
|
|
1899
2987
|
"inset",
|
|
1900
2988
|
"children"
|
|
1901
2989
|
]);
|
|
1902
|
-
return /* @__PURE__ */ (0,
|
|
2990
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
|
|
1903
2991
|
import_menu.Menu.SubmenuTrigger,
|
|
1904
2992
|
__spreadProps(__spreadValues({
|
|
1905
2993
|
className: cn(
|
|
@@ -1911,7 +2999,7 @@ function DropdownMenuSubTrigger(_a) {
|
|
|
1911
2999
|
}, props), {
|
|
1912
3000
|
children: [
|
|
1913
3001
|
children,
|
|
1914
|
-
/* @__PURE__ */ (0,
|
|
3002
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react9.ChevronRightIcon, { className: "ml-auto size-4" })
|
|
1915
3003
|
]
|
|
1916
3004
|
})
|
|
1917
3005
|
);
|
|
@@ -1927,7 +3015,7 @@ function DropdownMenuSubContent(_a) {
|
|
|
1927
3015
|
"style"
|
|
1928
3016
|
]);
|
|
1929
3017
|
const themeVars = useThemeVars();
|
|
1930
|
-
return /* @__PURE__ */ (0,
|
|
3018
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_menu.Menu.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_menu.Menu.Positioner, { sideOffset, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
1931
3019
|
import_menu.Menu.Popup,
|
|
1932
3020
|
__spreadValues({
|
|
1933
3021
|
className: cn(
|
|
@@ -1940,39 +3028,26 @@ function DropdownMenuSubContent(_a) {
|
|
|
1940
3028
|
) }) });
|
|
1941
3029
|
}
|
|
1942
3030
|
|
|
1943
|
-
// src/components/ui/skeleton.tsx
|
|
1944
|
-
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
1945
|
-
function Skeleton(_a) {
|
|
1946
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1947
|
-
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1948
|
-
"div",
|
|
1949
|
-
__spreadValues({
|
|
1950
|
-
className: cn("animate-pulse bg-muted", className),
|
|
1951
|
-
"data-slot": "skeleton"
|
|
1952
|
-
}, props)
|
|
1953
|
-
);
|
|
1954
|
-
}
|
|
1955
|
-
|
|
1956
3031
|
// src/components/ui/data-table.tsx
|
|
1957
|
-
var
|
|
3032
|
+
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
1958
3033
|
function DataTableColumnHeader({
|
|
1959
3034
|
column,
|
|
1960
3035
|
title,
|
|
1961
3036
|
className
|
|
1962
3037
|
}) {
|
|
1963
3038
|
if (!column.getCanSort()) {
|
|
1964
|
-
return /* @__PURE__ */ (0,
|
|
3039
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className, children: title });
|
|
1965
3040
|
}
|
|
1966
3041
|
const sorted = column.getIsSorted();
|
|
1967
3042
|
let sortIcon;
|
|
1968
3043
|
if (sorted === "asc") {
|
|
1969
|
-
sortIcon = /* @__PURE__ */ (0,
|
|
3044
|
+
sortIcon = /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react10.ArrowUp, { className: "ml-1 size-3.5" });
|
|
1970
3045
|
} else if (sorted === "desc") {
|
|
1971
|
-
sortIcon = /* @__PURE__ */ (0,
|
|
3046
|
+
sortIcon = /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react10.ArrowDown, { className: "ml-1 size-3.5" });
|
|
1972
3047
|
} else {
|
|
1973
|
-
sortIcon = /* @__PURE__ */ (0,
|
|
3048
|
+
sortIcon = /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react10.ArrowUpDown, { className: "ml-1 size-3.5" });
|
|
1974
3049
|
}
|
|
1975
|
-
return /* @__PURE__ */ (0,
|
|
3050
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
|
|
1976
3051
|
Button,
|
|
1977
3052
|
{
|
|
1978
3053
|
className: cn("-ml-3 h-8 font-medium text-muted-foreground hover:text-foreground", className),
|
|
@@ -1991,7 +3066,7 @@ function DataTableColumnHeader({
|
|
|
1991
3066
|
function getSelectionColumn() {
|
|
1992
3067
|
return {
|
|
1993
3068
|
id: "select",
|
|
1994
|
-
header: ({ table }) => /* @__PURE__ */ (0,
|
|
3069
|
+
header: ({ table }) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
1995
3070
|
Checkbox,
|
|
1996
3071
|
{
|
|
1997
3072
|
"aria-label": "Select all",
|
|
@@ -2002,7 +3077,7 @@ function getSelectionColumn() {
|
|
|
2002
3077
|
}
|
|
2003
3078
|
}
|
|
2004
3079
|
),
|
|
2005
|
-
cell: ({ row }) => /* @__PURE__ */ (0,
|
|
3080
|
+
cell: ({ row }) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2006
3081
|
Checkbox,
|
|
2007
3082
|
{
|
|
2008
3083
|
"aria-label": "Select row",
|
|
@@ -2023,8 +3098,8 @@ function DataTableToolbar({
|
|
|
2023
3098
|
enableColumnVisibility
|
|
2024
3099
|
}) {
|
|
2025
3100
|
var _a;
|
|
2026
|
-
return /* @__PURE__ */ (0,
|
|
2027
|
-
/* @__PURE__ */ (0,
|
|
3101
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "flex items-center justify-between gap-2 py-4", "data-slot": "data-table-toolbar", children: [
|
|
3102
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "flex flex-1 items-center gap-2", children: searchKey ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2028
3103
|
Input,
|
|
2029
3104
|
{
|
|
2030
3105
|
className: "max-w-xs",
|
|
@@ -2036,21 +3111,21 @@ function DataTableToolbar({
|
|
|
2036
3111
|
value: (_a = table.getColumn(searchKey)) == null ? void 0 : _a.getFilterValue()
|
|
2037
3112
|
}
|
|
2038
3113
|
) : null }),
|
|
2039
|
-
enableColumnVisibility ? /* @__PURE__ */ (0,
|
|
2040
|
-
/* @__PURE__ */ (0,
|
|
3114
|
+
enableColumnVisibility ? /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(DropdownMenu, { children: [
|
|
3115
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
|
|
2041
3116
|
DropdownMenuTrigger,
|
|
2042
3117
|
{
|
|
2043
|
-
render: /* @__PURE__ */ (0,
|
|
3118
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Button, { className: "ml-auto h-8 gap-1.5", size: "sm", variant: "outline" }),
|
|
2044
3119
|
children: [
|
|
2045
|
-
/* @__PURE__ */ (0,
|
|
2046
|
-
/* @__PURE__ */ (0,
|
|
3120
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react10.SlidersHorizontal, { className: "size-3.5" }),
|
|
3121
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "hidden sm:inline", children: "Columns" })
|
|
2047
3122
|
]
|
|
2048
3123
|
}
|
|
2049
3124
|
),
|
|
2050
|
-
/* @__PURE__ */ (0,
|
|
2051
|
-
/* @__PURE__ */ (0,
|
|
2052
|
-
/* @__PURE__ */ (0,
|
|
2053
|
-
table.getAllColumns().filter((col) => col.getCanHide()).map((col) => /* @__PURE__ */ (0,
|
|
3125
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(DropdownMenuContent, { children: /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(DropdownMenuGroup, { children: [
|
|
3126
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(DropdownMenuLabel, { children: "Toggle columns" }),
|
|
3127
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(DropdownMenuSeparator, {}),
|
|
3128
|
+
table.getAllColumns().filter((col) => col.getCanHide()).map((col) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2054
3129
|
DropdownMenuCheckboxItem,
|
|
2055
3130
|
{
|
|
2056
3131
|
checked: col.getIsVisible(),
|
|
@@ -2070,23 +3145,23 @@ function DataTablePagination({
|
|
|
2070
3145
|
table,
|
|
2071
3146
|
pageSizeOptions = [10, 20, 30, 50]
|
|
2072
3147
|
}) {
|
|
2073
|
-
return /* @__PURE__ */ (0,
|
|
3148
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
|
|
2074
3149
|
"div",
|
|
2075
3150
|
{
|
|
2076
3151
|
className: "flex items-center justify-between gap-4 py-4",
|
|
2077
3152
|
"data-slot": "data-table-pagination",
|
|
2078
3153
|
children: [
|
|
2079
|
-
/* @__PURE__ */ (0,
|
|
3154
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)("p", { className: "text-sm text-muted-foreground", children: table.getFilteredSelectedRowModel().rows.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_jsx_runtime25.Fragment, { children: [
|
|
2080
3155
|
table.getFilteredSelectedRowModel().rows.length,
|
|
2081
3156
|
" of",
|
|
2082
3157
|
" ",
|
|
2083
3158
|
table.getFilteredRowModel().rows.length,
|
|
2084
3159
|
" row(s) selected."
|
|
2085
3160
|
] }) }),
|
|
2086
|
-
/* @__PURE__ */ (0,
|
|
2087
|
-
/* @__PURE__ */ (0,
|
|
2088
|
-
/* @__PURE__ */ (0,
|
|
2089
|
-
/* @__PURE__ */ (0,
|
|
3161
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "flex items-center gap-6", children: [
|
|
3162
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
3163
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)("p", { className: "text-sm text-muted-foreground whitespace-nowrap", children: "Rows per page" }),
|
|
3164
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
|
|
2090
3165
|
Select,
|
|
2091
3166
|
{
|
|
2092
3167
|
onValueChange: (value) => {
|
|
@@ -2094,20 +3169,20 @@ function DataTablePagination({
|
|
|
2094
3169
|
},
|
|
2095
3170
|
value: `${table.getState().pagination.pageSize}`,
|
|
2096
3171
|
children: [
|
|
2097
|
-
/* @__PURE__ */ (0,
|
|
2098
|
-
/* @__PURE__ */ (0,
|
|
3172
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(SelectTrigger, { className: "w-[70px]", size: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(SelectValue, { placeholder: `${table.getState().pagination.pageSize}` }) }),
|
|
3173
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(SelectContent, { children: pageSizeOptions.map((pageSize) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(SelectItem, { value: `${pageSize}`, children: pageSize }, pageSize)) })
|
|
2099
3174
|
]
|
|
2100
3175
|
}
|
|
2101
3176
|
)
|
|
2102
3177
|
] }),
|
|
2103
|
-
/* @__PURE__ */ (0,
|
|
3178
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("p", { className: "text-sm text-muted-foreground whitespace-nowrap", children: [
|
|
2104
3179
|
"Page ",
|
|
2105
3180
|
table.getState().pagination.pageIndex + 1,
|
|
2106
3181
|
" of ",
|
|
2107
3182
|
table.getPageCount()
|
|
2108
3183
|
] }),
|
|
2109
|
-
/* @__PURE__ */ (0,
|
|
2110
|
-
/* @__PURE__ */ (0,
|
|
3184
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
3185
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2111
3186
|
Button,
|
|
2112
3187
|
{
|
|
2113
3188
|
"aria-label": "Go to first page",
|
|
@@ -2117,10 +3192,10 @@ function DataTablePagination({
|
|
|
2117
3192
|
},
|
|
2118
3193
|
size: "icon-sm",
|
|
2119
3194
|
variant: "outline",
|
|
2120
|
-
children: /* @__PURE__ */ (0,
|
|
3195
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react10.ChevronsLeftIcon, { className: "size-4" })
|
|
2121
3196
|
}
|
|
2122
3197
|
),
|
|
2123
|
-
/* @__PURE__ */ (0,
|
|
3198
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2124
3199
|
Button,
|
|
2125
3200
|
{
|
|
2126
3201
|
"aria-label": "Go to previous page",
|
|
@@ -2130,10 +3205,10 @@ function DataTablePagination({
|
|
|
2130
3205
|
},
|
|
2131
3206
|
size: "icon-sm",
|
|
2132
3207
|
variant: "outline",
|
|
2133
|
-
children: /* @__PURE__ */ (0,
|
|
3208
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react10.ChevronLeftIcon, { className: "size-4" })
|
|
2134
3209
|
}
|
|
2135
3210
|
),
|
|
2136
|
-
/* @__PURE__ */ (0,
|
|
3211
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2137
3212
|
Button,
|
|
2138
3213
|
{
|
|
2139
3214
|
"aria-label": "Go to next page",
|
|
@@ -2143,10 +3218,10 @@ function DataTablePagination({
|
|
|
2143
3218
|
},
|
|
2144
3219
|
size: "icon-sm",
|
|
2145
3220
|
variant: "outline",
|
|
2146
|
-
children: /* @__PURE__ */ (0,
|
|
3221
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react10.ChevronRightIcon, { className: "size-4" })
|
|
2147
3222
|
}
|
|
2148
3223
|
),
|
|
2149
|
-
/* @__PURE__ */ (0,
|
|
3224
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2150
3225
|
Button,
|
|
2151
3226
|
{
|
|
2152
3227
|
"aria-label": "Go to last page",
|
|
@@ -2156,7 +3231,7 @@ function DataTablePagination({
|
|
|
2156
3231
|
},
|
|
2157
3232
|
size: "icon-sm",
|
|
2158
3233
|
variant: "outline",
|
|
2159
|
-
children: /* @__PURE__ */ (0,
|
|
3234
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react10.ChevronsRightIcon, { className: "size-4" })
|
|
2160
3235
|
}
|
|
2161
3236
|
)
|
|
2162
3237
|
] })
|
|
@@ -2169,7 +3244,7 @@ function DataTableSkeleton({
|
|
|
2169
3244
|
columnCount,
|
|
2170
3245
|
rowCount = 5
|
|
2171
3246
|
}) {
|
|
2172
|
-
return /* @__PURE__ */ (0,
|
|
3247
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_jsx_runtime25.Fragment, { children: Array.from({ length: rowCount }).map((_, rowIdx) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(TableRow, { children: Array.from({ length: columnCount }).map((_inner, colIdx) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(TableCell, { children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Skeleton, { className: "h-4 w-3/4" }) }, `skeleton-cell-${String(rowIdx)}-${String(colIdx)}`)) }, `skeleton-row-${String(rowIdx)}`)) });
|
|
2173
3248
|
}
|
|
2174
3249
|
function DataTable({
|
|
2175
3250
|
columns: userColumns,
|
|
@@ -2186,11 +3261,11 @@ function DataTable({
|
|
|
2186
3261
|
toolbar,
|
|
2187
3262
|
emptyText = "No results."
|
|
2188
3263
|
}) {
|
|
2189
|
-
const [sorting, setSorting] =
|
|
2190
|
-
const [columnFilters, setColumnFilters] =
|
|
2191
|
-
const [columnVisibility, setColumnVisibility] =
|
|
2192
|
-
const [rowSelection, setRowSelection] =
|
|
2193
|
-
const resolvedColumns =
|
|
3264
|
+
const [sorting, setSorting] = React8.useState([]);
|
|
3265
|
+
const [columnFilters, setColumnFilters] = React8.useState([]);
|
|
3266
|
+
const [columnVisibility, setColumnVisibility] = React8.useState({});
|
|
3267
|
+
const [rowSelection, setRowSelection] = React8.useState({});
|
|
3268
|
+
const resolvedColumns = React8.useMemo(() => {
|
|
2194
3269
|
if (!enableRowSelection) return userColumns;
|
|
2195
3270
|
return [getSelectionColumn(), ...userColumns];
|
|
2196
3271
|
}, [userColumns, enableRowSelection]);
|
|
@@ -2219,19 +3294,19 @@ function DataTable({
|
|
|
2219
3294
|
});
|
|
2220
3295
|
function renderTableBody() {
|
|
2221
3296
|
if (loading) {
|
|
2222
|
-
return /* @__PURE__ */ (0,
|
|
3297
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(DataTableSkeleton, { columnCount: resolvedColumns.length, rowCount: skeletonRows });
|
|
2223
3298
|
}
|
|
2224
3299
|
if (table.getRowModel().rows.length) {
|
|
2225
|
-
return /* @__PURE__ */ (0,
|
|
3300
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_jsx_runtime25.Fragment, { children: table.getRowModel().rows.map((row) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2226
3301
|
TableRow,
|
|
2227
3302
|
{
|
|
2228
3303
|
"data-state": row.getIsSelected() ? "selected" : void 0,
|
|
2229
|
-
children: row.getVisibleCells().map((cell) => /* @__PURE__ */ (0,
|
|
3304
|
+
children: row.getVisibleCells().map((cell) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(TableCell, { children: (0, import_react_table.flexRender)(cell.column.columnDef.cell, cell.getContext()) }, cell.id))
|
|
2230
3305
|
},
|
|
2231
3306
|
row.id
|
|
2232
3307
|
)) });
|
|
2233
3308
|
}
|
|
2234
|
-
return /* @__PURE__ */ (0,
|
|
3309
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(TableRow, { children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2235
3310
|
TableCell,
|
|
2236
3311
|
{
|
|
2237
3312
|
className: "h-24 text-center text-muted-foreground",
|
|
@@ -2240,8 +3315,8 @@ function DataTable({
|
|
|
2240
3315
|
}
|
|
2241
3316
|
) });
|
|
2242
3317
|
}
|
|
2243
|
-
return /* @__PURE__ */ (0,
|
|
2244
|
-
toolbar ? toolbar(table) : (searchKey || enableColumnVisibility) && /* @__PURE__ */ (0,
|
|
3318
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: cn("w-full font-sans", className), "data-slot": "data-table", children: [
|
|
3319
|
+
toolbar ? toolbar(table) : (searchKey || enableColumnVisibility) && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2245
3320
|
DataTableToolbar,
|
|
2246
3321
|
{
|
|
2247
3322
|
enableColumnVisibility,
|
|
@@ -2250,29 +3325,29 @@ function DataTable({
|
|
|
2250
3325
|
table
|
|
2251
3326
|
}
|
|
2252
3327
|
),
|
|
2253
|
-
/* @__PURE__ */ (0,
|
|
2254
|
-
/* @__PURE__ */ (0,
|
|
2255
|
-
/* @__PURE__ */ (0,
|
|
3328
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "border border-border", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(Table, { children: [
|
|
3329
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(TableHeader, { children: table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(TableRow, { children: headerGroup.headers.map((header) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(TableHead, { children: header.isPlaceholder ? null : (0, import_react_table.flexRender)(header.column.columnDef.header, header.getContext()) }, header.id)) }, headerGroup.id)) }),
|
|
3330
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(TableBody, { children: renderTableBody() })
|
|
2256
3331
|
] }) }),
|
|
2257
|
-
/* @__PURE__ */ (0,
|
|
3332
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(DataTablePagination, { pageSizeOptions, table })
|
|
2258
3333
|
] });
|
|
2259
3334
|
}
|
|
2260
3335
|
|
|
2261
3336
|
// src/components/ui/date-picker.tsx
|
|
2262
|
-
var
|
|
3337
|
+
var React9 = __toESM(require("react"));
|
|
2263
3338
|
var import_date_fns = require("date-fns");
|
|
2264
|
-
var
|
|
3339
|
+
var import_lucide_react11 = require("lucide-react");
|
|
2265
3340
|
|
|
2266
3341
|
// src/components/ui/popover.tsx
|
|
2267
3342
|
var import_popover = require("@base-ui/react/popover");
|
|
2268
|
-
var
|
|
3343
|
+
var import_jsx_runtime26 = require("react/jsx-runtime");
|
|
2269
3344
|
function Popover(_a) {
|
|
2270
3345
|
var props = __objRest(_a, []);
|
|
2271
|
-
return /* @__PURE__ */ (0,
|
|
3346
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_popover.Popover.Root, __spreadValues({ "data-slot": "popover" }, props));
|
|
2272
3347
|
}
|
|
2273
3348
|
function PopoverTrigger(_a) {
|
|
2274
3349
|
var props = __objRest(_a, []);
|
|
2275
|
-
return /* @__PURE__ */ (0,
|
|
3350
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_popover.Popover.Trigger, __spreadValues({ "data-slot": "popover-trigger" }, props));
|
|
2276
3351
|
}
|
|
2277
3352
|
function PopoverContent(_a) {
|
|
2278
3353
|
var _b = _a, {
|
|
@@ -2287,12 +3362,12 @@ function PopoverContent(_a) {
|
|
|
2287
3362
|
"style"
|
|
2288
3363
|
]);
|
|
2289
3364
|
const themeVars = useThemeVars();
|
|
2290
|
-
return /* @__PURE__ */ (0,
|
|
3365
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_popover.Popover.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
2291
3366
|
import_popover.Popover.Positioner,
|
|
2292
3367
|
{
|
|
2293
3368
|
align,
|
|
2294
3369
|
sideOffset,
|
|
2295
|
-
children: /* @__PURE__ */ (0,
|
|
3370
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
2296
3371
|
import_popover.Popover.Popup,
|
|
2297
3372
|
__spreadValues({
|
|
2298
3373
|
className: cn(
|
|
@@ -2308,11 +3383,11 @@ function PopoverContent(_a) {
|
|
|
2308
3383
|
}
|
|
2309
3384
|
function PopoverAnchor(_a) {
|
|
2310
3385
|
var props = __objRest(_a, []);
|
|
2311
|
-
return /* @__PURE__ */ (0,
|
|
3386
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", __spreadValues({ "data-slot": "popover-anchor" }, props));
|
|
2312
3387
|
}
|
|
2313
3388
|
function PopoverHeader(_a) {
|
|
2314
3389
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
2315
|
-
return /* @__PURE__ */ (0,
|
|
3390
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
2316
3391
|
"div",
|
|
2317
3392
|
__spreadValues({
|
|
2318
3393
|
className: cn("flex flex-col gap-1 text-sm", className),
|
|
@@ -2324,7 +3399,7 @@ function PopoverTitle(_a) {
|
|
|
2324
3399
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
2325
3400
|
return (
|
|
2326
3401
|
// eslint-disable-next-line jsx-a11y/heading-has-content -- children passed via props spread
|
|
2327
|
-
/* @__PURE__ */ (0,
|
|
3402
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
2328
3403
|
"h2",
|
|
2329
3404
|
__spreadValues({
|
|
2330
3405
|
className: cn("font-medium", className),
|
|
@@ -2339,7 +3414,7 @@ function PopoverDescription(_a) {
|
|
|
2339
3414
|
} = _b, props = __objRest(_b, [
|
|
2340
3415
|
"className"
|
|
2341
3416
|
]);
|
|
2342
|
-
return /* @__PURE__ */ (0,
|
|
3417
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
2343
3418
|
"p",
|
|
2344
3419
|
__spreadValues({
|
|
2345
3420
|
className: cn("text-muted-foreground", className),
|
|
@@ -2349,7 +3424,7 @@ function PopoverDescription(_a) {
|
|
|
2349
3424
|
}
|
|
2350
3425
|
|
|
2351
3426
|
// src/components/ui/date-picker.tsx
|
|
2352
|
-
var
|
|
3427
|
+
var import_jsx_runtime27 = require("react/jsx-runtime");
|
|
2353
3428
|
function DatePicker({
|
|
2354
3429
|
value,
|
|
2355
3430
|
onChange,
|
|
@@ -2359,7 +3434,7 @@ function DatePicker({
|
|
|
2359
3434
|
className,
|
|
2360
3435
|
calendarProps
|
|
2361
3436
|
}) {
|
|
2362
|
-
const [open, setOpen] =
|
|
3437
|
+
const [open, setOpen] = React9.useState(false);
|
|
2363
3438
|
function handleDaySelect(day) {
|
|
2364
3439
|
if (!day) {
|
|
2365
3440
|
onChange == null ? void 0 : onChange(void 0);
|
|
@@ -2384,11 +3459,11 @@ function DatePicker({
|
|
|
2384
3459
|
} else if (value) {
|
|
2385
3460
|
displayValue = (0, import_date_fns.format)(value, "dd/MM/yyyy");
|
|
2386
3461
|
}
|
|
2387
|
-
return /* @__PURE__ */ (0,
|
|
2388
|
-
/* @__PURE__ */ (0,
|
|
3462
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(Popover, { onOpenChange: disabled ? void 0 : setOpen, open, children: [
|
|
3463
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
|
|
2389
3464
|
PopoverTrigger,
|
|
2390
3465
|
{
|
|
2391
|
-
render: /* @__PURE__ */ (0,
|
|
3466
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
2392
3467
|
Button,
|
|
2393
3468
|
{
|
|
2394
3469
|
className: cn(
|
|
@@ -2402,18 +3477,18 @@ function DatePicker({
|
|
|
2402
3477
|
}
|
|
2403
3478
|
),
|
|
2404
3479
|
children: [
|
|
2405
|
-
/* @__PURE__ */ (0,
|
|
3480
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react11.CalendarIcon, {}),
|
|
2406
3481
|
value ? displayValue : placeholder
|
|
2407
3482
|
]
|
|
2408
3483
|
}
|
|
2409
3484
|
),
|
|
2410
|
-
/* @__PURE__ */ (0,
|
|
3485
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
|
|
2411
3486
|
PopoverContent,
|
|
2412
3487
|
{
|
|
2413
3488
|
align: "start",
|
|
2414
3489
|
className: "w-auto rounded-none p-0 shadow-sm",
|
|
2415
3490
|
children: [
|
|
2416
|
-
/* @__PURE__ */ (0,
|
|
3491
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
2417
3492
|
Calendar,
|
|
2418
3493
|
__spreadProps(__spreadValues({
|
|
2419
3494
|
captionLayout: "dropdown",
|
|
@@ -2427,9 +3502,9 @@ function DatePicker({
|
|
|
2427
3502
|
)
|
|
2428
3503
|
})
|
|
2429
3504
|
),
|
|
2430
|
-
showTimePicker ? /* @__PURE__ */ (0,
|
|
3505
|
+
showTimePicker ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "border-t border-border px-3 pb-3 pt-2", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("label", { className: "mb-1.5 block text-xs font-medium text-muted-foreground", children: [
|
|
2431
3506
|
"Time",
|
|
2432
|
-
/* @__PURE__ */ (0,
|
|
3507
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
2433
3508
|
"input",
|
|
2434
3509
|
{
|
|
2435
3510
|
className: "mt-1.5 h-8 w-full rounded-none border border-input bg-transparent px-2 text-sm font-sans outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50",
|
|
@@ -2446,24 +3521,24 @@ function DatePicker({
|
|
|
2446
3521
|
}
|
|
2447
3522
|
|
|
2448
3523
|
// src/components/ui/dialog.tsx
|
|
2449
|
-
var
|
|
3524
|
+
var import_lucide_react12 = require("lucide-react");
|
|
2450
3525
|
var import_dialog = require("@base-ui/react/dialog");
|
|
2451
|
-
var
|
|
3526
|
+
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
2452
3527
|
function Dialog(_a) {
|
|
2453
3528
|
var props = __objRest(_a, []);
|
|
2454
|
-
return /* @__PURE__ */ (0,
|
|
3529
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_dialog.Dialog.Root, __spreadValues({ "data-slot": "dialog" }, props));
|
|
2455
3530
|
}
|
|
2456
3531
|
function DialogTrigger(_a) {
|
|
2457
3532
|
var props = __objRest(_a, []);
|
|
2458
|
-
return /* @__PURE__ */ (0,
|
|
3533
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_dialog.Dialog.Trigger, __spreadValues({ "data-slot": "dialog-trigger" }, props));
|
|
2459
3534
|
}
|
|
2460
3535
|
function DialogPortal(_a) {
|
|
2461
3536
|
var props = __objRest(_a, []);
|
|
2462
|
-
return /* @__PURE__ */ (0,
|
|
3537
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_dialog.Dialog.Portal, __spreadValues({ "data-slot": "dialog-portal" }, props));
|
|
2463
3538
|
}
|
|
2464
3539
|
function DialogClose(_a) {
|
|
2465
3540
|
var props = __objRest(_a, []);
|
|
2466
|
-
return /* @__PURE__ */ (0,
|
|
3541
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_dialog.Dialog.Close, __spreadValues({ "data-slot": "dialog-close" }, props));
|
|
2467
3542
|
}
|
|
2468
3543
|
function DialogOverlay(_a) {
|
|
2469
3544
|
var _b = _a, {
|
|
@@ -2471,7 +3546,7 @@ function DialogOverlay(_a) {
|
|
|
2471
3546
|
} = _b, props = __objRest(_b, [
|
|
2472
3547
|
"className"
|
|
2473
3548
|
]);
|
|
2474
|
-
return /* @__PURE__ */ (0,
|
|
3549
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
2475
3550
|
import_dialog.Dialog.Backdrop,
|
|
2476
3551
|
__spreadValues({
|
|
2477
3552
|
className: cn(
|
|
@@ -2496,9 +3571,9 @@ function DialogContent(_a) {
|
|
|
2496
3571
|
"style"
|
|
2497
3572
|
]);
|
|
2498
3573
|
const themeVars = useThemeVars();
|
|
2499
|
-
return /* @__PURE__ */ (0,
|
|
2500
|
-
/* @__PURE__ */ (0,
|
|
2501
|
-
/* @__PURE__ */ (0,
|
|
3574
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(DialogPortal, { children: [
|
|
3575
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(DialogOverlay, {}),
|
|
3576
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
|
|
2502
3577
|
import_dialog.Dialog.Popup,
|
|
2503
3578
|
__spreadProps(__spreadValues({
|
|
2504
3579
|
className: cn(
|
|
@@ -2511,14 +3586,14 @@ function DialogContent(_a) {
|
|
|
2511
3586
|
}, props), {
|
|
2512
3587
|
children: [
|
|
2513
3588
|
children,
|
|
2514
|
-
showCloseButton ? /* @__PURE__ */ (0,
|
|
3589
|
+
showCloseButton ? /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
|
|
2515
3590
|
import_dialog.Dialog.Close,
|
|
2516
3591
|
{
|
|
2517
3592
|
className: "absolute top-4 right-4 transition-colors hover:bg-foreground/5 focus:outline-hidden focus:ring-2 focus:ring-border focus:ring-offset-0 disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
2518
3593
|
"data-slot": "dialog-close",
|
|
2519
3594
|
children: [
|
|
2520
|
-
/* @__PURE__ */ (0,
|
|
2521
|
-
/* @__PURE__ */ (0,
|
|
3595
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react12.XIcon, {}),
|
|
3596
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "sr-only", children: "Close" })
|
|
2522
3597
|
]
|
|
2523
3598
|
}
|
|
2524
3599
|
) : null
|
|
@@ -2529,7 +3604,7 @@ function DialogContent(_a) {
|
|
|
2529
3604
|
}
|
|
2530
3605
|
function DialogHeader(_a) {
|
|
2531
3606
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
2532
|
-
return /* @__PURE__ */ (0,
|
|
3607
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
2533
3608
|
"div",
|
|
2534
3609
|
__spreadValues({
|
|
2535
3610
|
className: cn("flex flex-col gap-1.5", className),
|
|
@@ -2547,7 +3622,7 @@ function DialogFooter(_a) {
|
|
|
2547
3622
|
"showCloseButton",
|
|
2548
3623
|
"children"
|
|
2549
3624
|
]);
|
|
2550
|
-
return /* @__PURE__ */ (0,
|
|
3625
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
|
|
2551
3626
|
"div",
|
|
2552
3627
|
__spreadProps(__spreadValues({
|
|
2553
3628
|
className: cn(
|
|
@@ -2559,7 +3634,7 @@ function DialogFooter(_a) {
|
|
|
2559
3634
|
}, props), {
|
|
2560
3635
|
children: [
|
|
2561
3636
|
children,
|
|
2562
|
-
showCloseButton ? /* @__PURE__ */ (0,
|
|
3637
|
+
showCloseButton ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
2563
3638
|
import_dialog.Dialog.Close,
|
|
2564
3639
|
{
|
|
2565
3640
|
className: cn(buttonVariants({ variant: "outline" })),
|
|
@@ -2576,7 +3651,7 @@ function DialogTitle(_a) {
|
|
|
2576
3651
|
} = _b, props = __objRest(_b, [
|
|
2577
3652
|
"className"
|
|
2578
3653
|
]);
|
|
2579
|
-
return /* @__PURE__ */ (0,
|
|
3654
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
2580
3655
|
import_dialog.Dialog.Title,
|
|
2581
3656
|
__spreadValues({
|
|
2582
3657
|
className: cn("text-lg leading-none font-semibold", className),
|
|
@@ -2590,7 +3665,7 @@ function DialogDescription(_a) {
|
|
|
2590
3665
|
} = _b, props = __objRest(_b, [
|
|
2591
3666
|
"className"
|
|
2592
3667
|
]);
|
|
2593
|
-
return /* @__PURE__ */ (0,
|
|
3668
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
2594
3669
|
import_dialog.Dialog.Description,
|
|
2595
3670
|
__spreadValues({
|
|
2596
3671
|
className: cn("text-sm text-muted-foreground", className),
|
|
@@ -2601,22 +3676,22 @@ function DialogDescription(_a) {
|
|
|
2601
3676
|
|
|
2602
3677
|
// src/components/ui/drawer.tsx
|
|
2603
3678
|
var import_vaul = require("vaul");
|
|
2604
|
-
var
|
|
3679
|
+
var import_jsx_runtime29 = require("react/jsx-runtime");
|
|
2605
3680
|
function Drawer(_a) {
|
|
2606
3681
|
var props = __objRest(_a, []);
|
|
2607
|
-
return /* @__PURE__ */ (0,
|
|
3682
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_vaul.Drawer.Root, __spreadValues({ "data-slot": "drawer" }, props));
|
|
2608
3683
|
}
|
|
2609
3684
|
function DrawerTrigger(_a) {
|
|
2610
3685
|
var props = __objRest(_a, []);
|
|
2611
|
-
return /* @__PURE__ */ (0,
|
|
3686
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_vaul.Drawer.Trigger, __spreadValues({ "data-slot": "drawer-trigger" }, props));
|
|
2612
3687
|
}
|
|
2613
3688
|
function DrawerPortal(_a) {
|
|
2614
3689
|
var props = __objRest(_a, []);
|
|
2615
|
-
return /* @__PURE__ */ (0,
|
|
3690
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_vaul.Drawer.Portal, __spreadValues({ "data-slot": "drawer-portal" }, props));
|
|
2616
3691
|
}
|
|
2617
3692
|
function DrawerClose(_a) {
|
|
2618
3693
|
var props = __objRest(_a, []);
|
|
2619
|
-
return /* @__PURE__ */ (0,
|
|
3694
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_vaul.Drawer.Close, __spreadValues({ "data-slot": "drawer-close" }, props));
|
|
2620
3695
|
}
|
|
2621
3696
|
function DrawerOverlay(_a) {
|
|
2622
3697
|
var _b = _a, {
|
|
@@ -2624,7 +3699,7 @@ function DrawerOverlay(_a) {
|
|
|
2624
3699
|
} = _b, props = __objRest(_b, [
|
|
2625
3700
|
"className"
|
|
2626
3701
|
]);
|
|
2627
|
-
return /* @__PURE__ */ (0,
|
|
3702
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
2628
3703
|
import_vaul.Drawer.Overlay,
|
|
2629
3704
|
__spreadValues({
|
|
2630
3705
|
className: cn(
|
|
@@ -2647,9 +3722,9 @@ function DrawerContent(_a) {
|
|
|
2647
3722
|
"style"
|
|
2648
3723
|
]);
|
|
2649
3724
|
const themeVars = useThemeVars();
|
|
2650
|
-
return /* @__PURE__ */ (0,
|
|
2651
|
-
/* @__PURE__ */ (0,
|
|
2652
|
-
/* @__PURE__ */ (0,
|
|
3725
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(DrawerPortal, { "data-slot": "drawer-portal", children: [
|
|
3726
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(DrawerOverlay, {}),
|
|
3727
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
|
|
2653
3728
|
import_vaul.Drawer.Content,
|
|
2654
3729
|
__spreadProps(__spreadValues({
|
|
2655
3730
|
className: cn(
|
|
@@ -2665,7 +3740,7 @@ function DrawerContent(_a) {
|
|
|
2665
3740
|
style: __spreadValues(__spreadValues({}, themeVars), style2)
|
|
2666
3741
|
}, props), {
|
|
2667
3742
|
children: [
|
|
2668
|
-
/* @__PURE__ */ (0,
|
|
3743
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full bg-muted group-data-[vaul-drawer-direction=bottom]/drawer-content:block group-data-[vaul-drawer-direction=top]/drawer-content:block" }),
|
|
2669
3744
|
children
|
|
2670
3745
|
]
|
|
2671
3746
|
})
|
|
@@ -2674,7 +3749,7 @@ function DrawerContent(_a) {
|
|
|
2674
3749
|
}
|
|
2675
3750
|
function DrawerHeader(_a) {
|
|
2676
3751
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
2677
|
-
return /* @__PURE__ */ (0,
|
|
3752
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
2678
3753
|
"div",
|
|
2679
3754
|
__spreadValues({
|
|
2680
3755
|
className: cn("flex flex-col gap-1 p-4", className),
|
|
@@ -2684,7 +3759,7 @@ function DrawerHeader(_a) {
|
|
|
2684
3759
|
}
|
|
2685
3760
|
function DrawerFooter(_a) {
|
|
2686
3761
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
2687
|
-
return /* @__PURE__ */ (0,
|
|
3762
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
2688
3763
|
"div",
|
|
2689
3764
|
__spreadValues({
|
|
2690
3765
|
className: cn("mt-auto flex flex-col gap-2 p-4", className),
|
|
@@ -2698,7 +3773,7 @@ function DrawerTitle(_a) {
|
|
|
2698
3773
|
} = _b, props = __objRest(_b, [
|
|
2699
3774
|
"className"
|
|
2700
3775
|
]);
|
|
2701
|
-
return /* @__PURE__ */ (0,
|
|
3776
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
2702
3777
|
import_vaul.Drawer.Title,
|
|
2703
3778
|
__spreadValues({
|
|
2704
3779
|
className: cn("text-lg font-semibold text-foreground", className),
|
|
@@ -2712,7 +3787,7 @@ function DrawerDescription(_a) {
|
|
|
2712
3787
|
} = _b, props = __objRest(_b, [
|
|
2713
3788
|
"className"
|
|
2714
3789
|
]);
|
|
2715
|
-
return /* @__PURE__ */ (0,
|
|
3790
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
2716
3791
|
import_vaul.Drawer.Description,
|
|
2717
3792
|
__spreadValues({
|
|
2718
3793
|
className: cn("text-sm text-muted-foreground", className),
|
|
@@ -2721,113 +3796,12 @@ function DrawerDescription(_a) {
|
|
|
2721
3796
|
);
|
|
2722
3797
|
}
|
|
2723
3798
|
|
|
2724
|
-
// src/components/ui/empty.tsx
|
|
2725
|
-
var import_class_variance_authority4 = require("class-variance-authority");
|
|
2726
|
-
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
2727
|
-
function Empty(_a) {
|
|
2728
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
2729
|
-
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2730
|
-
"div",
|
|
2731
|
-
__spreadValues({
|
|
2732
|
-
className: cn(
|
|
2733
|
-
"flex min-w-0 flex-1 flex-col items-center justify-center gap-6 border border-dashed p-6 text-center text-balance md:p-12",
|
|
2734
|
-
className
|
|
2735
|
-
),
|
|
2736
|
-
"data-slot": "empty"
|
|
2737
|
-
}, props)
|
|
2738
|
-
);
|
|
2739
|
-
}
|
|
2740
|
-
function EmptyHeader(_a) {
|
|
2741
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
2742
|
-
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2743
|
-
"div",
|
|
2744
|
-
__spreadValues({
|
|
2745
|
-
className: cn(
|
|
2746
|
-
"flex max-w-sm flex-col items-center gap-2 text-center",
|
|
2747
|
-
className
|
|
2748
|
-
),
|
|
2749
|
-
"data-slot": "empty-header"
|
|
2750
|
-
}, props)
|
|
2751
|
-
);
|
|
2752
|
-
}
|
|
2753
|
-
var emptyMediaVariants = (0, import_class_variance_authority4.cva)(
|
|
2754
|
-
"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0",
|
|
2755
|
-
{
|
|
2756
|
-
variants: {
|
|
2757
|
-
variant: {
|
|
2758
|
-
default: "[&_svg:not([class*='size-'])]:size-10",
|
|
2759
|
-
icon: "flex size-10 shrink-0 items-center justify-center text-muted-foreground [&_svg:not([class*='size-'])]:size-6"
|
|
2760
|
-
}
|
|
2761
|
-
},
|
|
2762
|
-
defaultVariants: {
|
|
2763
|
-
variant: "default"
|
|
2764
|
-
}
|
|
2765
|
-
}
|
|
2766
|
-
);
|
|
2767
|
-
function EmptyMedia(_a) {
|
|
2768
|
-
var _b = _a, {
|
|
2769
|
-
className,
|
|
2770
|
-
variant = "default"
|
|
2771
|
-
} = _b, props = __objRest(_b, [
|
|
2772
|
-
"className",
|
|
2773
|
-
"variant"
|
|
2774
|
-
]);
|
|
2775
|
-
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2776
|
-
"div",
|
|
2777
|
-
__spreadValues({
|
|
2778
|
-
className: cn(emptyMediaVariants({ variant, className })),
|
|
2779
|
-
"data-slot": "empty-icon",
|
|
2780
|
-
"data-variant": variant
|
|
2781
|
-
}, props)
|
|
2782
|
-
);
|
|
2783
|
-
}
|
|
2784
|
-
function EmptyTitle(_a) {
|
|
2785
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
2786
|
-
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2787
|
-
"div",
|
|
2788
|
-
__spreadValues({
|
|
2789
|
-
className: cn("text-lg font-medium tracking-tight", className),
|
|
2790
|
-
"data-slot": "empty-title"
|
|
2791
|
-
}, props)
|
|
2792
|
-
);
|
|
2793
|
-
}
|
|
2794
|
-
function EmptyDescription(_a) {
|
|
2795
|
-
var _b = _a, {
|
|
2796
|
-
className
|
|
2797
|
-
} = _b, props = __objRest(_b, [
|
|
2798
|
-
"className"
|
|
2799
|
-
]);
|
|
2800
|
-
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2801
|
-
"div",
|
|
2802
|
-
__spreadValues({
|
|
2803
|
-
className: cn(
|
|
2804
|
-
"text-sm/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",
|
|
2805
|
-
className
|
|
2806
|
-
),
|
|
2807
|
-
"data-slot": "empty-description"
|
|
2808
|
-
}, props)
|
|
2809
|
-
);
|
|
2810
|
-
}
|
|
2811
|
-
function EmptyContent(_a) {
|
|
2812
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
2813
|
-
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2814
|
-
"div",
|
|
2815
|
-
__spreadValues({
|
|
2816
|
-
className: cn(
|
|
2817
|
-
"flex w-full max-w-sm min-w-0 flex-col items-center gap-4 text-sm text-balance",
|
|
2818
|
-
className
|
|
2819
|
-
),
|
|
2820
|
-
"data-slot": "empty-content"
|
|
2821
|
-
}, props)
|
|
2822
|
-
);
|
|
2823
|
-
}
|
|
2824
|
-
|
|
2825
3799
|
// src/components/ui/field.tsx
|
|
2826
|
-
var
|
|
2827
|
-
var
|
|
3800
|
+
var import_react8 = require("react");
|
|
3801
|
+
var import_class_variance_authority6 = require("class-variance-authority");
|
|
2828
3802
|
|
|
2829
3803
|
// src/components/ui/label.tsx
|
|
2830
|
-
var
|
|
3804
|
+
var import_jsx_runtime30 = (
|
|
2831
3805
|
// eslint-disable-next-line jsx-a11y/label-has-associated-control -- htmlFor is passed by the consumer
|
|
2832
3806
|
require("react/jsx-runtime")
|
|
2833
3807
|
);
|
|
@@ -2837,7 +3811,7 @@ function Label(_a) {
|
|
|
2837
3811
|
} = _b, props = __objRest(_b, [
|
|
2838
3812
|
"className"
|
|
2839
3813
|
]);
|
|
2840
|
-
return /* @__PURE__ */ (0,
|
|
3814
|
+
return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
2841
3815
|
"label",
|
|
2842
3816
|
__spreadValues({
|
|
2843
3817
|
className: cn(
|
|
@@ -2851,7 +3825,7 @@ function Label(_a) {
|
|
|
2851
3825
|
|
|
2852
3826
|
// src/components/ui/separator.tsx
|
|
2853
3827
|
var import_separator = require("@base-ui/react/separator");
|
|
2854
|
-
var
|
|
3828
|
+
var import_jsx_runtime31 = require("react/jsx-runtime");
|
|
2855
3829
|
function Separator(_a) {
|
|
2856
3830
|
var _b = _a, {
|
|
2857
3831
|
className,
|
|
@@ -2860,7 +3834,7 @@ function Separator(_a) {
|
|
|
2860
3834
|
"className",
|
|
2861
3835
|
"orientation"
|
|
2862
3836
|
]);
|
|
2863
|
-
return /* @__PURE__ */ (0,
|
|
3837
|
+
return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
2864
3838
|
import_separator.Separator,
|
|
2865
3839
|
__spreadValues({
|
|
2866
3840
|
className: cn(
|
|
@@ -2874,10 +3848,10 @@ function Separator(_a) {
|
|
|
2874
3848
|
}
|
|
2875
3849
|
|
|
2876
3850
|
// src/components/ui/field.tsx
|
|
2877
|
-
var
|
|
3851
|
+
var import_jsx_runtime32 = require("react/jsx-runtime");
|
|
2878
3852
|
function FieldSet(_a) {
|
|
2879
3853
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
2880
|
-
return /* @__PURE__ */ (0,
|
|
3854
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
2881
3855
|
"fieldset",
|
|
2882
3856
|
__spreadValues({
|
|
2883
3857
|
className: cn(
|
|
@@ -2897,7 +3871,7 @@ function FieldLegend(_a) {
|
|
|
2897
3871
|
"className",
|
|
2898
3872
|
"variant"
|
|
2899
3873
|
]);
|
|
2900
|
-
return /* @__PURE__ */ (0,
|
|
3874
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
2901
3875
|
"legend",
|
|
2902
3876
|
__spreadValues({
|
|
2903
3877
|
className: cn(
|
|
@@ -2913,7 +3887,7 @@ function FieldLegend(_a) {
|
|
|
2913
3887
|
}
|
|
2914
3888
|
function FieldGroup(_a) {
|
|
2915
3889
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
2916
|
-
return /* @__PURE__ */ (0,
|
|
3890
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
2917
3891
|
"div",
|
|
2918
3892
|
__spreadValues({
|
|
2919
3893
|
className: cn(
|
|
@@ -2924,7 +3898,7 @@ function FieldGroup(_a) {
|
|
|
2924
3898
|
}, props)
|
|
2925
3899
|
);
|
|
2926
3900
|
}
|
|
2927
|
-
var fieldVariants = (0,
|
|
3901
|
+
var fieldVariants = (0, import_class_variance_authority6.cva)(
|
|
2928
3902
|
"group/field flex w-full gap-3 data-[invalid=true]:text-destructive",
|
|
2929
3903
|
{
|
|
2930
3904
|
variants: {
|
|
@@ -2955,7 +3929,7 @@ function Field(_a) {
|
|
|
2955
3929
|
"className",
|
|
2956
3930
|
"orientation"
|
|
2957
3931
|
]);
|
|
2958
|
-
return /* @__PURE__ */ (0,
|
|
3932
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
2959
3933
|
"div",
|
|
2960
3934
|
__spreadValues({
|
|
2961
3935
|
className: cn(fieldVariants({ orientation }), className),
|
|
@@ -2967,7 +3941,7 @@ function Field(_a) {
|
|
|
2967
3941
|
}
|
|
2968
3942
|
function FieldContent(_a) {
|
|
2969
3943
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
2970
|
-
return /* @__PURE__ */ (0,
|
|
3944
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
2971
3945
|
"div",
|
|
2972
3946
|
__spreadValues({
|
|
2973
3947
|
className: cn(
|
|
@@ -2984,7 +3958,7 @@ function FieldLabel(_a) {
|
|
|
2984
3958
|
} = _b, props = __objRest(_b, [
|
|
2985
3959
|
"className"
|
|
2986
3960
|
]);
|
|
2987
|
-
return /* @__PURE__ */ (0,
|
|
3961
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
2988
3962
|
Label,
|
|
2989
3963
|
__spreadValues({
|
|
2990
3964
|
className: cn(
|
|
@@ -2999,7 +3973,7 @@ function FieldLabel(_a) {
|
|
|
2999
3973
|
}
|
|
3000
3974
|
function FieldTitle(_a) {
|
|
3001
3975
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3002
|
-
return /* @__PURE__ */ (0,
|
|
3976
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
3003
3977
|
"div",
|
|
3004
3978
|
__spreadValues({
|
|
3005
3979
|
className: cn(
|
|
@@ -3012,7 +3986,7 @@ function FieldTitle(_a) {
|
|
|
3012
3986
|
}
|
|
3013
3987
|
function FieldDescription(_a) {
|
|
3014
3988
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3015
|
-
return /* @__PURE__ */ (0,
|
|
3989
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
3016
3990
|
"p",
|
|
3017
3991
|
__spreadValues({
|
|
3018
3992
|
className: cn(
|
|
@@ -3033,7 +4007,7 @@ function FieldSeparator(_a) {
|
|
|
3033
4007
|
"children",
|
|
3034
4008
|
"className"
|
|
3035
4009
|
]);
|
|
3036
|
-
return /* @__PURE__ */ (0,
|
|
4010
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
|
|
3037
4011
|
"div",
|
|
3038
4012
|
__spreadProps(__spreadValues({
|
|
3039
4013
|
className: cn(
|
|
@@ -3044,8 +4018,8 @@ function FieldSeparator(_a) {
|
|
|
3044
4018
|
"data-slot": "field-separator"
|
|
3045
4019
|
}, props), {
|
|
3046
4020
|
children: [
|
|
3047
|
-
/* @__PURE__ */ (0,
|
|
3048
|
-
children ? /* @__PURE__ */ (0,
|
|
4021
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Separator, { className: "absolute inset-0 top-1/2" }),
|
|
4022
|
+
children ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
3049
4023
|
"span",
|
|
3050
4024
|
{
|
|
3051
4025
|
className: "relative mx-auto block w-fit bg-background px-2 text-muted-foreground",
|
|
@@ -3067,7 +4041,7 @@ function FieldError(_a) {
|
|
|
3067
4041
|
"children",
|
|
3068
4042
|
"errors"
|
|
3069
4043
|
]);
|
|
3070
|
-
const content = (0,
|
|
4044
|
+
const content = (0, import_react8.useMemo)(() => {
|
|
3071
4045
|
var _a2;
|
|
3072
4046
|
if (children) {
|
|
3073
4047
|
return children;
|
|
@@ -3081,14 +4055,14 @@ function FieldError(_a) {
|
|
|
3081
4055
|
if (uniqueErrors.length === 1) {
|
|
3082
4056
|
return (_a2 = uniqueErrors[0]) == null ? void 0 : _a2.message;
|
|
3083
4057
|
}
|
|
3084
|
-
return /* @__PURE__ */ (0,
|
|
3085
|
-
(error) => (error == null ? void 0 : error.message) && /* @__PURE__ */ (0,
|
|
4058
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("ul", { className: "ml-4 flex list-disc flex-col gap-1", children: uniqueErrors.map(
|
|
4059
|
+
(error) => (error == null ? void 0 : error.message) && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("li", { children: error.message }, error.message)
|
|
3086
4060
|
) });
|
|
3087
4061
|
}, [children, errors]);
|
|
3088
4062
|
if (!content) {
|
|
3089
4063
|
return null;
|
|
3090
4064
|
}
|
|
3091
|
-
return /* @__PURE__ */ (0,
|
|
4065
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
3092
4066
|
"div",
|
|
3093
4067
|
__spreadProps(__spreadValues({
|
|
3094
4068
|
className: cn("text-xs font-normal text-destructive", className),
|
|
@@ -3101,13 +4075,13 @@ function FieldError(_a) {
|
|
|
3101
4075
|
}
|
|
3102
4076
|
|
|
3103
4077
|
// src/components/ui/input-group.tsx
|
|
3104
|
-
var
|
|
4078
|
+
var import_class_variance_authority7 = require("class-variance-authority");
|
|
3105
4079
|
|
|
3106
4080
|
// src/components/ui/textarea.tsx
|
|
3107
|
-
var
|
|
4081
|
+
var import_jsx_runtime33 = require("react/jsx-runtime");
|
|
3108
4082
|
function Textarea(_a) {
|
|
3109
4083
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3110
|
-
return /* @__PURE__ */ (0,
|
|
4084
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
3111
4085
|
"textarea",
|
|
3112
4086
|
__spreadValues({
|
|
3113
4087
|
className: cn(
|
|
@@ -3121,10 +4095,10 @@ function Textarea(_a) {
|
|
|
3121
4095
|
}
|
|
3122
4096
|
|
|
3123
4097
|
// src/components/ui/input-group.tsx
|
|
3124
|
-
var
|
|
4098
|
+
var import_jsx_runtime34 = require("react/jsx-runtime");
|
|
3125
4099
|
function InputGroup(_a) {
|
|
3126
4100
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3127
|
-
return /* @__PURE__ */ (0,
|
|
4101
|
+
return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
3128
4102
|
"div",
|
|
3129
4103
|
__spreadValues({
|
|
3130
4104
|
className: cn(
|
|
@@ -3146,7 +4120,7 @@ function InputGroup(_a) {
|
|
|
3146
4120
|
}, props)
|
|
3147
4121
|
);
|
|
3148
4122
|
}
|
|
3149
|
-
var inputGroupAddonVariants = (0,
|
|
4123
|
+
var inputGroupAddonVariants = (0, import_class_variance_authority7.cva)(
|
|
3150
4124
|
"flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4",
|
|
3151
4125
|
{
|
|
3152
4126
|
variants: {
|
|
@@ -3172,7 +4146,7 @@ function InputGroupAddon(_a) {
|
|
|
3172
4146
|
]);
|
|
3173
4147
|
return (
|
|
3174
4148
|
// eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions -- click only forwards focus to the sibling input; the div is not truly interactive
|
|
3175
|
-
/* @__PURE__ */ (0,
|
|
4149
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
3176
4150
|
"div",
|
|
3177
4151
|
__spreadValues({
|
|
3178
4152
|
className: cn(inputGroupAddonVariants({ align }), className),
|
|
@@ -3196,7 +4170,7 @@ function InputGroupAddon(_a) {
|
|
|
3196
4170
|
)
|
|
3197
4171
|
);
|
|
3198
4172
|
}
|
|
3199
|
-
var inputGroupButtonVariants = (0,
|
|
4173
|
+
var inputGroupButtonVariants = (0, import_class_variance_authority7.cva)(
|
|
3200
4174
|
"flex items-center gap-2 text-sm shadow-none",
|
|
3201
4175
|
{
|
|
3202
4176
|
variants: {
|
|
@@ -3224,7 +4198,7 @@ function InputGroupButton(_a) {
|
|
|
3224
4198
|
"variant",
|
|
3225
4199
|
"size"
|
|
3226
4200
|
]);
|
|
3227
|
-
return /* @__PURE__ */ (0,
|
|
4201
|
+
return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
3228
4202
|
Button,
|
|
3229
4203
|
__spreadValues({
|
|
3230
4204
|
className: cn(inputGroupButtonVariants({ size }), className),
|
|
@@ -3236,7 +4210,7 @@ function InputGroupButton(_a) {
|
|
|
3236
4210
|
}
|
|
3237
4211
|
function InputGroupText(_a) {
|
|
3238
4212
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3239
|
-
return /* @__PURE__ */ (0,
|
|
4213
|
+
return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
3240
4214
|
"span",
|
|
3241
4215
|
__spreadValues({
|
|
3242
4216
|
className: cn(
|
|
@@ -3252,7 +4226,7 @@ function InputGroupInput(_a) {
|
|
|
3252
4226
|
} = _b, props = __objRest(_b, [
|
|
3253
4227
|
"className"
|
|
3254
4228
|
]);
|
|
3255
|
-
return /* @__PURE__ */ (0,
|
|
4229
|
+
return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
3256
4230
|
Input,
|
|
3257
4231
|
__spreadValues({
|
|
3258
4232
|
className: cn(
|
|
@@ -3269,7 +4243,7 @@ function InputGroupTextarea(_a) {
|
|
|
3269
4243
|
} = _b, props = __objRest(_b, [
|
|
3270
4244
|
"className"
|
|
3271
4245
|
]);
|
|
3272
|
-
return /* @__PURE__ */ (0,
|
|
4246
|
+
return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
3273
4247
|
Textarea,
|
|
3274
4248
|
__spreadValues({
|
|
3275
4249
|
className: cn(
|
|
@@ -3282,10 +4256,10 @@ function InputGroupTextarea(_a) {
|
|
|
3282
4256
|
}
|
|
3283
4257
|
|
|
3284
4258
|
// src/components/ui/input-otp.tsx
|
|
3285
|
-
var
|
|
4259
|
+
var React10 = __toESM(require("react"));
|
|
3286
4260
|
var import_input_otp = require("input-otp");
|
|
3287
|
-
var
|
|
3288
|
-
var
|
|
4261
|
+
var import_lucide_react13 = require("lucide-react");
|
|
4262
|
+
var import_jsx_runtime35 = require("react/jsx-runtime");
|
|
3289
4263
|
function InputOTP(_a) {
|
|
3290
4264
|
var _b = _a, {
|
|
3291
4265
|
className,
|
|
@@ -3294,7 +4268,7 @@ function InputOTP(_a) {
|
|
|
3294
4268
|
"className",
|
|
3295
4269
|
"containerClassName"
|
|
3296
4270
|
]);
|
|
3297
|
-
return /* @__PURE__ */ (0,
|
|
4271
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
3298
4272
|
import_input_otp.OTPInput,
|
|
3299
4273
|
__spreadValues({
|
|
3300
4274
|
className: cn("disabled:cursor-not-allowed", className),
|
|
@@ -3308,7 +4282,7 @@ function InputOTP(_a) {
|
|
|
3308
4282
|
}
|
|
3309
4283
|
function InputOTPGroup(_a) {
|
|
3310
4284
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3311
|
-
return /* @__PURE__ */ (0,
|
|
4285
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
3312
4286
|
"div",
|
|
3313
4287
|
__spreadValues({
|
|
3314
4288
|
className: cn("flex items-center", className),
|
|
@@ -3325,9 +4299,9 @@ function InputOTPSlot(_a) {
|
|
|
3325
4299
|
"className"
|
|
3326
4300
|
]);
|
|
3327
4301
|
var _a2;
|
|
3328
|
-
const inputOTPContext =
|
|
4302
|
+
const inputOTPContext = React10.useContext(import_input_otp.OTPInputContext);
|
|
3329
4303
|
const { char, hasFakeCaret, isActive } = (_a2 = inputOTPContext.slots[index]) != null ? _a2 : {};
|
|
3330
|
-
return /* @__PURE__ */ (0,
|
|
4304
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
|
|
3331
4305
|
"div",
|
|
3332
4306
|
__spreadProps(__spreadValues({
|
|
3333
4307
|
className: cn(
|
|
@@ -3339,22 +4313,22 @@ function InputOTPSlot(_a) {
|
|
|
3339
4313
|
}, props), {
|
|
3340
4314
|
children: [
|
|
3341
4315
|
char,
|
|
3342
|
-
hasFakeCaret ? /* @__PURE__ */ (0,
|
|
4316
|
+
hasFakeCaret ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "h-4 w-px animate-caret-blink bg-foreground duration-1000" }) }) : null
|
|
3343
4317
|
]
|
|
3344
4318
|
})
|
|
3345
4319
|
);
|
|
3346
4320
|
}
|
|
3347
4321
|
function InputOTPSeparator(_a) {
|
|
3348
4322
|
var props = __objRest(_a, []);
|
|
3349
|
-
return /* @__PURE__ */ (0,
|
|
4323
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", __spreadProps(__spreadValues({ "data-slot": "input-otp-separator", role: "separator" }, props), { children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react13.MinusIcon, {}) }));
|
|
3350
4324
|
}
|
|
3351
4325
|
|
|
3352
4326
|
// src/components/ui/pagination.tsx
|
|
3353
|
-
var
|
|
3354
|
-
var
|
|
4327
|
+
var import_lucide_react14 = require("lucide-react");
|
|
4328
|
+
var import_jsx_runtime36 = require("react/jsx-runtime");
|
|
3355
4329
|
function Pagination(_a) {
|
|
3356
4330
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3357
|
-
return /* @__PURE__ */ (0,
|
|
4331
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
3358
4332
|
"nav",
|
|
3359
4333
|
__spreadValues({
|
|
3360
4334
|
"aria-label": "pagination",
|
|
@@ -3370,7 +4344,7 @@ function PaginationContent(_a) {
|
|
|
3370
4344
|
} = _b, props = __objRest(_b, [
|
|
3371
4345
|
"className"
|
|
3372
4346
|
]);
|
|
3373
|
-
return /* @__PURE__ */ (0,
|
|
4347
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
3374
4348
|
"ul",
|
|
3375
4349
|
__spreadValues({
|
|
3376
4350
|
className: cn("flex flex-row items-center gap-1", className),
|
|
@@ -3380,7 +4354,7 @@ function PaginationContent(_a) {
|
|
|
3380
4354
|
}
|
|
3381
4355
|
function PaginationItem(_a) {
|
|
3382
4356
|
var props = __objRest(_a, []);
|
|
3383
|
-
return /* @__PURE__ */ (0,
|
|
4357
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("li", __spreadValues({ "data-slot": "pagination-item" }, props));
|
|
3384
4358
|
}
|
|
3385
4359
|
function PaginationLink(_a) {
|
|
3386
4360
|
var _b = _a, {
|
|
@@ -3394,7 +4368,7 @@ function PaginationLink(_a) {
|
|
|
3394
4368
|
]);
|
|
3395
4369
|
return (
|
|
3396
4370
|
// eslint-disable-next-line jsx-a11y/anchor-has-content -- children passed via props spread
|
|
3397
|
-
/* @__PURE__ */ (0,
|
|
4371
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
3398
4372
|
"a",
|
|
3399
4373
|
__spreadValues({
|
|
3400
4374
|
"aria-current": isActive ? "page" : void 0,
|
|
@@ -3417,7 +4391,7 @@ function PaginationPrevious(_a) {
|
|
|
3417
4391
|
} = _b, props = __objRest(_b, [
|
|
3418
4392
|
"className"
|
|
3419
4393
|
]);
|
|
3420
|
-
return /* @__PURE__ */ (0,
|
|
4394
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
|
|
3421
4395
|
PaginationLink,
|
|
3422
4396
|
__spreadProps(__spreadValues({
|
|
3423
4397
|
"aria-label": "Go to previous page",
|
|
@@ -3425,8 +4399,8 @@ function PaginationPrevious(_a) {
|
|
|
3425
4399
|
size: "default"
|
|
3426
4400
|
}, props), {
|
|
3427
4401
|
children: [
|
|
3428
|
-
/* @__PURE__ */ (0,
|
|
3429
|
-
/* @__PURE__ */ (0,
|
|
4402
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_lucide_react14.ChevronLeftIcon, {}),
|
|
4403
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "hidden sm:block", children: "Previous" })
|
|
3430
4404
|
]
|
|
3431
4405
|
})
|
|
3432
4406
|
);
|
|
@@ -3437,7 +4411,7 @@ function PaginationNext(_a) {
|
|
|
3437
4411
|
} = _b, props = __objRest(_b, [
|
|
3438
4412
|
"className"
|
|
3439
4413
|
]);
|
|
3440
|
-
return /* @__PURE__ */ (0,
|
|
4414
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
|
|
3441
4415
|
PaginationLink,
|
|
3442
4416
|
__spreadProps(__spreadValues({
|
|
3443
4417
|
"aria-label": "Go to next page",
|
|
@@ -3445,8 +4419,8 @@ function PaginationNext(_a) {
|
|
|
3445
4419
|
size: "default"
|
|
3446
4420
|
}, props), {
|
|
3447
4421
|
children: [
|
|
3448
|
-
/* @__PURE__ */ (0,
|
|
3449
|
-
/* @__PURE__ */ (0,
|
|
4422
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "hidden sm:block", children: "Next" }),
|
|
4423
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_lucide_react14.ChevronRightIcon, {})
|
|
3450
4424
|
]
|
|
3451
4425
|
})
|
|
3452
4426
|
);
|
|
@@ -3457,7 +4431,7 @@ function PaginationEllipsis(_a) {
|
|
|
3457
4431
|
} = _b, props = __objRest(_b, [
|
|
3458
4432
|
"className"
|
|
3459
4433
|
]);
|
|
3460
|
-
return /* @__PURE__ */ (0,
|
|
4434
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
|
|
3461
4435
|
"span",
|
|
3462
4436
|
__spreadProps(__spreadValues({
|
|
3463
4437
|
"aria-hidden": true,
|
|
@@ -3465,8 +4439,8 @@ function PaginationEllipsis(_a) {
|
|
|
3465
4439
|
"data-slot": "pagination-ellipsis"
|
|
3466
4440
|
}, props), {
|
|
3467
4441
|
children: [
|
|
3468
|
-
/* @__PURE__ */ (0,
|
|
3469
|
-
/* @__PURE__ */ (0,
|
|
4442
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_lucide_react14.MoreHorizontalIcon, { className: "size-4" }),
|
|
4443
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "sr-only", children: "More pages" })
|
|
3470
4444
|
]
|
|
3471
4445
|
})
|
|
3472
4446
|
);
|
|
@@ -3474,7 +4448,7 @@ function PaginationEllipsis(_a) {
|
|
|
3474
4448
|
|
|
3475
4449
|
// src/components/ui/progress.tsx
|
|
3476
4450
|
var import_progress = require("@base-ui/react/progress");
|
|
3477
|
-
var
|
|
4451
|
+
var import_jsx_runtime37 = require("react/jsx-runtime");
|
|
3478
4452
|
function Progress(_a) {
|
|
3479
4453
|
var _b = _a, {
|
|
3480
4454
|
className,
|
|
@@ -3483,7 +4457,7 @@ function Progress(_a) {
|
|
|
3483
4457
|
"className",
|
|
3484
4458
|
"value"
|
|
3485
4459
|
]);
|
|
3486
|
-
return /* @__PURE__ */ (0,
|
|
4460
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
|
|
3487
4461
|
import_progress.Progress.Root,
|
|
3488
4462
|
__spreadProps(__spreadValues({
|
|
3489
4463
|
className: cn(
|
|
@@ -3493,7 +4467,7 @@ function Progress(_a) {
|
|
|
3493
4467
|
"data-slot": "progress",
|
|
3494
4468
|
value
|
|
3495
4469
|
}, props), {
|
|
3496
|
-
children: /* @__PURE__ */ (0,
|
|
4470
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_progress.Progress.Track, { className: "h-full", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
|
|
3497
4471
|
import_progress.Progress.Indicator,
|
|
3498
4472
|
{
|
|
3499
4473
|
className: "h-full bg-primary transition-all",
|
|
@@ -3505,10 +4479,10 @@ function Progress(_a) {
|
|
|
3505
4479
|
}
|
|
3506
4480
|
|
|
3507
4481
|
// src/components/ui/radio-group.tsx
|
|
3508
|
-
var
|
|
4482
|
+
var import_lucide_react15 = require("lucide-react");
|
|
3509
4483
|
var import_radio_group = require("@base-ui/react/radio-group");
|
|
3510
4484
|
var import_radio = require("@base-ui/react/radio");
|
|
3511
|
-
var
|
|
4485
|
+
var import_jsx_runtime38 = require("react/jsx-runtime");
|
|
3512
4486
|
var CIRCLE_BASE = "inline-flex items-center justify-center aspect-square size-4 shrink-0 rounded-full border border-primary bg-background";
|
|
3513
4487
|
var INDICATOR_DOT = "size-2 fill-background text-background";
|
|
3514
4488
|
function RadioGroup(_a) {
|
|
@@ -3517,7 +4491,7 @@ function RadioGroup(_a) {
|
|
|
3517
4491
|
} = _b, props = __objRest(_b, [
|
|
3518
4492
|
"className"
|
|
3519
4493
|
]);
|
|
3520
|
-
return /* @__PURE__ */ (0,
|
|
4494
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
3521
4495
|
import_radio_group.RadioGroup,
|
|
3522
4496
|
__spreadValues({
|
|
3523
4497
|
className: cn("grid gap-3", className),
|
|
@@ -3531,7 +4505,7 @@ function RadioGroupItem(_a) {
|
|
|
3531
4505
|
} = _b, props = __objRest(_b, [
|
|
3532
4506
|
"className"
|
|
3533
4507
|
]);
|
|
3534
|
-
return /* @__PURE__ */ (0,
|
|
4508
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
3535
4509
|
import_radio.Radio.Root,
|
|
3536
4510
|
__spreadProps(__spreadValues({
|
|
3537
4511
|
className: cn(
|
|
@@ -3547,11 +4521,11 @@ function RadioGroupItem(_a) {
|
|
|
3547
4521
|
),
|
|
3548
4522
|
"data-slot": "radio-group-item"
|
|
3549
4523
|
}, props), {
|
|
3550
|
-
children: /* @__PURE__ */ (0,
|
|
4524
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
3551
4525
|
import_radio.Radio.Indicator,
|
|
3552
4526
|
{
|
|
3553
4527
|
"data-slot": "radio-group-indicator",
|
|
3554
|
-
children: /* @__PURE__ */ (0,
|
|
4528
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_lucide_react15.CircleIcon, { className: INDICATOR_DOT })
|
|
3555
4529
|
}
|
|
3556
4530
|
)
|
|
3557
4531
|
})
|
|
@@ -3573,7 +4547,7 @@ function RadioGroupCard(_a) {
|
|
|
3573
4547
|
"label",
|
|
3574
4548
|
"description"
|
|
3575
4549
|
]);
|
|
3576
|
-
return /* @__PURE__ */ (0,
|
|
4550
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
|
|
3577
4551
|
import_radio.Radio.Root,
|
|
3578
4552
|
__spreadProps(__spreadValues({
|
|
3579
4553
|
"aria-invalid": error || void 0,
|
|
@@ -3591,7 +4565,7 @@ function RadioGroupCard(_a) {
|
|
|
3591
4565
|
value
|
|
3592
4566
|
}, props), {
|
|
3593
4567
|
children: [
|
|
3594
|
-
/* @__PURE__ */ (0,
|
|
4568
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
3595
4569
|
"div",
|
|
3596
4570
|
{
|
|
3597
4571
|
className: cn(
|
|
@@ -3601,12 +4575,12 @@ function RadioGroupCard(_a) {
|
|
|
3601
4575
|
"group-aria-invalid/card:border-destructive",
|
|
3602
4576
|
"group-aria-invalid/card:group-data-[checked]/card:border-destructive group-aria-invalid/card:group-data-[checked]/card:bg-destructive"
|
|
3603
4577
|
),
|
|
3604
|
-
children: /* @__PURE__ */ (0,
|
|
4578
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_radio.Radio.Indicator, { children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_lucide_react15.CircleIcon, { className: INDICATOR_DOT }) })
|
|
3605
4579
|
}
|
|
3606
4580
|
),
|
|
3607
|
-
/* @__PURE__ */ (0,
|
|
3608
|
-
/* @__PURE__ */ (0,
|
|
3609
|
-
description ? /* @__PURE__ */ (0,
|
|
4581
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "flex flex-col gap-1", children: [
|
|
4582
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "text-sm font-medium leading-none", children: label }),
|
|
4583
|
+
description ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "text-sm text-muted-foreground", children: description }) : null
|
|
3610
4584
|
] })
|
|
3611
4585
|
]
|
|
3612
4586
|
})
|
|
@@ -3614,9 +4588,9 @@ function RadioGroupCard(_a) {
|
|
|
3614
4588
|
}
|
|
3615
4589
|
|
|
3616
4590
|
// src/components/ui/sheet.tsx
|
|
3617
|
-
var
|
|
4591
|
+
var import_lucide_react16 = require("lucide-react");
|
|
3618
4592
|
var import_dialog2 = require("@base-ui/react/dialog");
|
|
3619
|
-
var
|
|
4593
|
+
var import_jsx_runtime39 = require("react/jsx-runtime");
|
|
3620
4594
|
var SIDE_CLASSES = {
|
|
3621
4595
|
right: "inset-y-0 right-0 h-full w-3/4 border-l data-ending-style:slide-out-to-right data-open:slide-in-from-right sm:max-w-sm",
|
|
3622
4596
|
left: "inset-y-0 left-0 h-full w-3/4 border-r data-ending-style:slide-out-to-left data-open:slide-in-from-left sm:max-w-sm",
|
|
@@ -3625,19 +4599,19 @@ var SIDE_CLASSES = {
|
|
|
3625
4599
|
};
|
|
3626
4600
|
function Sheet(_a) {
|
|
3627
4601
|
var props = __objRest(_a, []);
|
|
3628
|
-
return /* @__PURE__ */ (0,
|
|
4602
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_dialog2.Dialog.Root, __spreadValues({ "data-slot": "sheet" }, props));
|
|
3629
4603
|
}
|
|
3630
4604
|
function SheetTrigger(_a) {
|
|
3631
4605
|
var props = __objRest(_a, []);
|
|
3632
|
-
return /* @__PURE__ */ (0,
|
|
4606
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_dialog2.Dialog.Trigger, __spreadValues({ "data-slot": "sheet-trigger" }, props));
|
|
3633
4607
|
}
|
|
3634
4608
|
function SheetClose(_a) {
|
|
3635
4609
|
var props = __objRest(_a, []);
|
|
3636
|
-
return /* @__PURE__ */ (0,
|
|
4610
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_dialog2.Dialog.Close, __spreadValues({ "data-slot": "sheet-close" }, props));
|
|
3637
4611
|
}
|
|
3638
4612
|
function SheetPortal(_a) {
|
|
3639
4613
|
var props = __objRest(_a, []);
|
|
3640
|
-
return /* @__PURE__ */ (0,
|
|
4614
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_dialog2.Dialog.Portal, __spreadValues({ "data-slot": "sheet-portal" }, props));
|
|
3641
4615
|
}
|
|
3642
4616
|
function SheetOverlay(_a) {
|
|
3643
4617
|
var _b = _a, {
|
|
@@ -3645,7 +4619,7 @@ function SheetOverlay(_a) {
|
|
|
3645
4619
|
} = _b, props = __objRest(_b, [
|
|
3646
4620
|
"className"
|
|
3647
4621
|
]);
|
|
3648
|
-
return /* @__PURE__ */ (0,
|
|
4622
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
3649
4623
|
import_dialog2.Dialog.Backdrop,
|
|
3650
4624
|
__spreadValues({
|
|
3651
4625
|
className: cn(
|
|
@@ -3671,9 +4645,9 @@ function SheetContent(_a) {
|
|
|
3671
4645
|
"style"
|
|
3672
4646
|
]);
|
|
3673
4647
|
const themeVars = useThemeVars();
|
|
3674
|
-
return /* @__PURE__ */ (0,
|
|
3675
|
-
/* @__PURE__ */ (0,
|
|
3676
|
-
/* @__PURE__ */ (0,
|
|
4648
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(SheetPortal, { children: [
|
|
4649
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)(SheetOverlay, {}),
|
|
4650
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(
|
|
3677
4651
|
import_dialog2.Dialog.Popup,
|
|
3678
4652
|
__spreadProps(__spreadValues({
|
|
3679
4653
|
className: cn(
|
|
@@ -3686,14 +4660,14 @@ function SheetContent(_a) {
|
|
|
3686
4660
|
}, props), {
|
|
3687
4661
|
children: [
|
|
3688
4662
|
children,
|
|
3689
|
-
showCloseButton ? /* @__PURE__ */ (0,
|
|
4663
|
+
showCloseButton ? /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(
|
|
3690
4664
|
import_dialog2.Dialog.Close,
|
|
3691
4665
|
{
|
|
3692
4666
|
className: "absolute top-4 right-4 transition-colors hover:bg-foreground/5 focus:outline-hidden focus:ring-2 focus:ring-border focus:ring-offset-0 disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
3693
4667
|
"data-slot": "sheet-icon-close",
|
|
3694
4668
|
children: [
|
|
3695
|
-
/* @__PURE__ */ (0,
|
|
3696
|
-
/* @__PURE__ */ (0,
|
|
4669
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_lucide_react16.XIcon, {}),
|
|
4670
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { className: "sr-only", children: "Close" })
|
|
3697
4671
|
]
|
|
3698
4672
|
}
|
|
3699
4673
|
) : null
|
|
@@ -3704,7 +4678,7 @@ function SheetContent(_a) {
|
|
|
3704
4678
|
}
|
|
3705
4679
|
function SheetHeader(_a) {
|
|
3706
4680
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3707
|
-
return /* @__PURE__ */ (0,
|
|
4681
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
3708
4682
|
"div",
|
|
3709
4683
|
__spreadValues({
|
|
3710
4684
|
className: cn("flex flex-col gap-1.5 p-4", className),
|
|
@@ -3714,7 +4688,7 @@ function SheetHeader(_a) {
|
|
|
3714
4688
|
}
|
|
3715
4689
|
function SheetFooter(_a) {
|
|
3716
4690
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3717
|
-
return /* @__PURE__ */ (0,
|
|
4691
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
3718
4692
|
"div",
|
|
3719
4693
|
__spreadValues({
|
|
3720
4694
|
className: cn("mt-auto flex flex-col gap-2 p-4", className),
|
|
@@ -3728,7 +4702,7 @@ function SheetTitle(_a) {
|
|
|
3728
4702
|
} = _b, props = __objRest(_b, [
|
|
3729
4703
|
"className"
|
|
3730
4704
|
]);
|
|
3731
|
-
return /* @__PURE__ */ (0,
|
|
4705
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
3732
4706
|
import_dialog2.Dialog.Title,
|
|
3733
4707
|
__spreadValues({
|
|
3734
4708
|
className: cn("text-lg font-semibold text-foreground", className),
|
|
@@ -3742,7 +4716,7 @@ function SheetDescription(_a) {
|
|
|
3742
4716
|
} = _b, props = __objRest(_b, [
|
|
3743
4717
|
"className"
|
|
3744
4718
|
]);
|
|
3745
|
-
return /* @__PURE__ */ (0,
|
|
4719
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
3746
4720
|
import_dialog2.Dialog.Description,
|
|
3747
4721
|
__spreadValues({
|
|
3748
4722
|
className: cn("text-sm text-muted-foreground", className),
|
|
@@ -3752,9 +4726,9 @@ function SheetDescription(_a) {
|
|
|
3752
4726
|
}
|
|
3753
4727
|
|
|
3754
4728
|
// src/components/ui/slider.tsx
|
|
3755
|
-
var
|
|
3756
|
-
var
|
|
3757
|
-
var Slider =
|
|
4729
|
+
var React11 = __toESM(require("react"));
|
|
4730
|
+
var import_jsx_runtime40 = require("react/jsx-runtime");
|
|
4731
|
+
var Slider = React11.forwardRef(
|
|
3758
4732
|
(_a, ref) => {
|
|
3759
4733
|
var _b = _a, {
|
|
3760
4734
|
className,
|
|
@@ -3775,7 +4749,7 @@ var Slider = React7.forwardRef(
|
|
|
3775
4749
|
"disabled",
|
|
3776
4750
|
"onValueChange"
|
|
3777
4751
|
]);
|
|
3778
|
-
const [internalValue, setInternalValue] =
|
|
4752
|
+
const [internalValue, setInternalValue] = React11.useState(defaultValue);
|
|
3779
4753
|
const currentValue = value !== void 0 ? value : internalValue;
|
|
3780
4754
|
const percentage = (currentValue - min) / (max - min) * 100;
|
|
3781
4755
|
const handleChange = (e) => {
|
|
@@ -3785,7 +4759,7 @@ var Slider = React7.forwardRef(
|
|
|
3785
4759
|
}
|
|
3786
4760
|
onValueChange == null ? void 0 : onValueChange(newValue);
|
|
3787
4761
|
};
|
|
3788
|
-
return /* @__PURE__ */ (0,
|
|
4762
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
|
|
3789
4763
|
"div",
|
|
3790
4764
|
{
|
|
3791
4765
|
"data-slot": "slider",
|
|
@@ -3795,12 +4769,12 @@ var Slider = React7.forwardRef(
|
|
|
3795
4769
|
className
|
|
3796
4770
|
),
|
|
3797
4771
|
children: [
|
|
3798
|
-
/* @__PURE__ */ (0,
|
|
4772
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
3799
4773
|
"div",
|
|
3800
4774
|
{
|
|
3801
4775
|
"data-slot": "slider-track",
|
|
3802
4776
|
className: "relative h-2 w-full overflow-hidden rounded-full bg-muted",
|
|
3803
|
-
children: /* @__PURE__ */ (0,
|
|
4777
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
3804
4778
|
"div",
|
|
3805
4779
|
{
|
|
3806
4780
|
"data-slot": "slider-range",
|
|
@@ -3810,7 +4784,7 @@ var Slider = React7.forwardRef(
|
|
|
3810
4784
|
)
|
|
3811
4785
|
}
|
|
3812
4786
|
),
|
|
3813
|
-
/* @__PURE__ */ (0,
|
|
4787
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
3814
4788
|
"input",
|
|
3815
4789
|
__spreadValues({
|
|
3816
4790
|
ref,
|
|
@@ -3827,7 +4801,7 @@ var Slider = React7.forwardRef(
|
|
|
3827
4801
|
)
|
|
3828
4802
|
}, props)
|
|
3829
4803
|
),
|
|
3830
|
-
/* @__PURE__ */ (0,
|
|
4804
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
3831
4805
|
"div",
|
|
3832
4806
|
{
|
|
3833
4807
|
"data-slot": "slider-thumb",
|
|
@@ -3846,21 +4820,21 @@ var Slider = React7.forwardRef(
|
|
|
3846
4820
|
Slider.displayName = "Slider";
|
|
3847
4821
|
|
|
3848
4822
|
// src/components/ui/sonner.tsx
|
|
3849
|
-
var
|
|
4823
|
+
var import_lucide_react17 = require("lucide-react");
|
|
3850
4824
|
var import_sonner = require("sonner");
|
|
3851
|
-
var
|
|
4825
|
+
var import_jsx_runtime41 = require("react/jsx-runtime");
|
|
3852
4826
|
function Toaster(_a) {
|
|
3853
4827
|
var _b = _a, { theme = "light" } = _b, props = __objRest(_b, ["theme"]);
|
|
3854
|
-
return /* @__PURE__ */ (0,
|
|
4828
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
3855
4829
|
import_sonner.Toaster,
|
|
3856
4830
|
__spreadValues({
|
|
3857
4831
|
className: "toaster group",
|
|
3858
4832
|
icons: {
|
|
3859
|
-
success: /* @__PURE__ */ (0,
|
|
3860
|
-
info: /* @__PURE__ */ (0,
|
|
3861
|
-
warning: /* @__PURE__ */ (0,
|
|
3862
|
-
error: /* @__PURE__ */ (0,
|
|
3863
|
-
loading: /* @__PURE__ */ (0,
|
|
4833
|
+
success: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_lucide_react17.CircleCheckIcon, { className: "size-4" }),
|
|
4834
|
+
info: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_lucide_react17.InfoIcon, { className: "size-4" }),
|
|
4835
|
+
warning: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_lucide_react17.TriangleAlertIcon, { className: "size-4" }),
|
|
4836
|
+
error: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_lucide_react17.OctagonXIcon, { className: "size-4" }),
|
|
4837
|
+
loading: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_lucide_react17.Loader2Icon, { className: "size-4 animate-spin" })
|
|
3864
4838
|
},
|
|
3865
4839
|
style: {
|
|
3866
4840
|
"--normal-bg": "var(--popover)",
|
|
@@ -3878,39 +4852,10 @@ function Toaster(_a) {
|
|
|
3878
4852
|
);
|
|
3879
4853
|
}
|
|
3880
4854
|
|
|
3881
|
-
// src/components/ui/spinner.tsx
|
|
3882
|
-
var import_class_variance_authority7 = require("class-variance-authority");
|
|
3883
|
-
var import_lucide_react16 = require("lucide-react");
|
|
3884
|
-
var import_jsx_runtime35 = require("react/jsx-runtime");
|
|
3885
|
-
var spinnerVariants = (0, import_class_variance_authority7.cva)("animate-spin shrink-0", {
|
|
3886
|
-
variants: {
|
|
3887
|
-
size: {
|
|
3888
|
-
sm: "size-3",
|
|
3889
|
-
default: "size-4",
|
|
3890
|
-
lg: "size-6",
|
|
3891
|
-
xl: "size-8"
|
|
3892
|
-
}
|
|
3893
|
-
},
|
|
3894
|
-
defaultVariants: {
|
|
3895
|
-
size: "default"
|
|
3896
|
-
}
|
|
3897
|
-
});
|
|
3898
|
-
function Spinner(_a) {
|
|
3899
|
-
var _b = _a, { className, size } = _b, props = __objRest(_b, ["className", "size"]);
|
|
3900
|
-
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
3901
|
-
import_lucide_react16.LoaderCircle,
|
|
3902
|
-
__spreadValues({
|
|
3903
|
-
"aria-hidden": "true",
|
|
3904
|
-
className: cn(spinnerVariants({ size }), className),
|
|
3905
|
-
"data-slot": "spinner"
|
|
3906
|
-
}, props)
|
|
3907
|
-
);
|
|
3908
|
-
}
|
|
3909
|
-
|
|
3910
4855
|
// src/components/ui/switch.tsx
|
|
3911
|
-
var
|
|
4856
|
+
var import_react9 = require("react");
|
|
3912
4857
|
var import_switch = require("@base-ui/react/switch");
|
|
3913
|
-
var
|
|
4858
|
+
var import_jsx_runtime42 = require("react/jsx-runtime");
|
|
3914
4859
|
function Switch(_a) {
|
|
3915
4860
|
var _b = _a, {
|
|
3916
4861
|
className,
|
|
@@ -3919,7 +4864,7 @@ function Switch(_a) {
|
|
|
3919
4864
|
"className",
|
|
3920
4865
|
"size"
|
|
3921
4866
|
]);
|
|
3922
|
-
return /* @__PURE__ */ (0,
|
|
4867
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
3923
4868
|
import_switch.Switch.Root,
|
|
3924
4869
|
__spreadProps(__spreadValues({
|
|
3925
4870
|
className: cn(
|
|
@@ -3936,7 +4881,7 @@ function Switch(_a) {
|
|
|
3936
4881
|
"data-size": size,
|
|
3937
4882
|
"data-slot": "switch"
|
|
3938
4883
|
}, props), {
|
|
3939
|
-
children: /* @__PURE__ */ (0,
|
|
4884
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
3940
4885
|
import_switch.Switch.Thumb,
|
|
3941
4886
|
{
|
|
3942
4887
|
className: cn(
|
|
@@ -3975,9 +4920,9 @@ function SwitchCard(_a) {
|
|
|
3975
4920
|
"switchPosition",
|
|
3976
4921
|
"size"
|
|
3977
4922
|
]);
|
|
3978
|
-
const [internalChecked, setInternalChecked] = (0,
|
|
4923
|
+
const [internalChecked, setInternalChecked] = (0, import_react9.useState)(defaultChecked != null ? defaultChecked : false);
|
|
3979
4924
|
const isChecked = checked != null ? checked : internalChecked;
|
|
3980
|
-
const switchElement = /* @__PURE__ */ (0,
|
|
4925
|
+
const switchElement = /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
3981
4926
|
Switch,
|
|
3982
4927
|
__spreadValues({
|
|
3983
4928
|
"aria-invalid": error || void 0,
|
|
@@ -3991,11 +4936,11 @@ function SwitchCard(_a) {
|
|
|
3991
4936
|
size
|
|
3992
4937
|
}, props)
|
|
3993
4938
|
);
|
|
3994
|
-
const contentElement = /* @__PURE__ */ (0,
|
|
3995
|
-
/* @__PURE__ */ (0,
|
|
3996
|
-
description ? /* @__PURE__ */ (0,
|
|
4939
|
+
const contentElement = /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { className: "flex flex-col gap-1", children: [
|
|
4940
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { className: "text-sm font-medium leading-none", children: label }),
|
|
4941
|
+
description ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { className: "text-sm text-muted-foreground", children: description }) : null
|
|
3997
4942
|
] });
|
|
3998
|
-
return /* @__PURE__ */ (0,
|
|
4943
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
3999
4944
|
"label",
|
|
4000
4945
|
{
|
|
4001
4946
|
className: cn(
|
|
@@ -4006,10 +4951,10 @@ function SwitchCard(_a) {
|
|
|
4006
4951
|
className
|
|
4007
4952
|
),
|
|
4008
4953
|
"data-slot": "switch-card",
|
|
4009
|
-
children: switchPosition === "left" ? /* @__PURE__ */ (0,
|
|
4954
|
+
children: switchPosition === "left" ? /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_jsx_runtime42.Fragment, { children: [
|
|
4010
4955
|
switchElement,
|
|
4011
4956
|
contentElement
|
|
4012
|
-
] }) : /* @__PURE__ */ (0,
|
|
4957
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_jsx_runtime42.Fragment, { children: [
|
|
4013
4958
|
contentElement,
|
|
4014
4959
|
switchElement
|
|
4015
4960
|
] })
|
|
@@ -4020,7 +4965,7 @@ function SwitchCard(_a) {
|
|
|
4020
4965
|
// src/components/ui/tabs.tsx
|
|
4021
4966
|
var import_class_variance_authority8 = require("class-variance-authority");
|
|
4022
4967
|
var import_tabs = require("@base-ui/react/tabs");
|
|
4023
|
-
var
|
|
4968
|
+
var import_jsx_runtime43 = require("react/jsx-runtime");
|
|
4024
4969
|
function Tabs(_a) {
|
|
4025
4970
|
var _b = _a, {
|
|
4026
4971
|
className,
|
|
@@ -4029,7 +4974,7 @@ function Tabs(_a) {
|
|
|
4029
4974
|
"className",
|
|
4030
4975
|
"orientation"
|
|
4031
4976
|
]);
|
|
4032
|
-
return /* @__PURE__ */ (0,
|
|
4977
|
+
return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
4033
4978
|
import_tabs.Tabs.Root,
|
|
4034
4979
|
__spreadValues({
|
|
4035
4980
|
className: cn(
|
|
@@ -4063,7 +5008,7 @@ function TabsList(_a) {
|
|
|
4063
5008
|
"className",
|
|
4064
5009
|
"variant"
|
|
4065
5010
|
]);
|
|
4066
|
-
return /* @__PURE__ */ (0,
|
|
5011
|
+
return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
4067
5012
|
import_tabs.Tabs.List,
|
|
4068
5013
|
__spreadValues({
|
|
4069
5014
|
className: cn(tabsListVariants({ variant }), className),
|
|
@@ -4078,7 +5023,7 @@ function TabsTrigger(_a) {
|
|
|
4078
5023
|
} = _b, props = __objRest(_b, [
|
|
4079
5024
|
"className"
|
|
4080
5025
|
]);
|
|
4081
|
-
return /* @__PURE__ */ (0,
|
|
5026
|
+
return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
4082
5027
|
import_tabs.Tabs.Tab,
|
|
4083
5028
|
__spreadValues({
|
|
4084
5029
|
className: cn(
|
|
@@ -4119,7 +5064,7 @@ function TabsContent(_a) {
|
|
|
4119
5064
|
} = _b, props = __objRest(_b, [
|
|
4120
5065
|
"className"
|
|
4121
5066
|
]);
|
|
4122
|
-
return /* @__PURE__ */ (0,
|
|
5067
|
+
return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
4123
5068
|
import_tabs.Tabs.Panel,
|
|
4124
5069
|
__spreadValues({
|
|
4125
5070
|
className: cn("flex-1 outline-none", className),
|
|
@@ -4129,14 +5074,14 @@ function TabsContent(_a) {
|
|
|
4129
5074
|
}
|
|
4130
5075
|
|
|
4131
5076
|
// src/components/ui/toggle-group.tsx
|
|
4132
|
-
var
|
|
5077
|
+
var React12 = __toESM(require("react"));
|
|
4133
5078
|
var import_toggle_group = require("@base-ui/react/toggle-group");
|
|
4134
5079
|
var import_toggle2 = require("@base-ui/react/toggle");
|
|
4135
5080
|
|
|
4136
5081
|
// src/components/ui/toggle.tsx
|
|
4137
5082
|
var import_class_variance_authority9 = require("class-variance-authority");
|
|
4138
5083
|
var import_toggle = require("@base-ui/react/toggle");
|
|
4139
|
-
var
|
|
5084
|
+
var import_jsx_runtime44 = require("react/jsx-runtime");
|
|
4140
5085
|
var toggleVariants = (0, import_class_variance_authority9.cva)(
|
|
4141
5086
|
"inline-flex items-center justify-center gap-2 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-pressed:bg-primary/10 data-pressed:inset-ring data-pressed:inset-ring-primary data-pressed:text-foreground data-pressed:hover:bg-primary/10 data-pressed:hover:text-foreground dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
4142
5087
|
{
|
|
@@ -4167,7 +5112,7 @@ function Toggle(_a) {
|
|
|
4167
5112
|
"variant",
|
|
4168
5113
|
"size"
|
|
4169
5114
|
]);
|
|
4170
|
-
return /* @__PURE__ */ (0,
|
|
5115
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
4171
5116
|
import_toggle.Toggle,
|
|
4172
5117
|
__spreadValues({
|
|
4173
5118
|
className: cn(toggleVariants({ variant, size, className })),
|
|
@@ -4177,8 +5122,8 @@ function Toggle(_a) {
|
|
|
4177
5122
|
}
|
|
4178
5123
|
|
|
4179
5124
|
// src/components/ui/toggle-group.tsx
|
|
4180
|
-
var
|
|
4181
|
-
var ToggleGroupContext =
|
|
5125
|
+
var import_jsx_runtime45 = require("react/jsx-runtime");
|
|
5126
|
+
var ToggleGroupContext = React12.createContext({
|
|
4182
5127
|
size: "default",
|
|
4183
5128
|
variant: "default",
|
|
4184
5129
|
spacing: 0
|
|
@@ -4199,7 +5144,7 @@ function ToggleGroup(_a) {
|
|
|
4199
5144
|
"type",
|
|
4200
5145
|
"children"
|
|
4201
5146
|
]);
|
|
4202
|
-
return /* @__PURE__ */ (0,
|
|
5147
|
+
return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
4203
5148
|
import_toggle_group.ToggleGroup,
|
|
4204
5149
|
__spreadProps(__spreadValues({
|
|
4205
5150
|
className: cn(
|
|
@@ -4214,7 +5159,7 @@ function ToggleGroup(_a) {
|
|
|
4214
5159
|
multiple: type === "multiple",
|
|
4215
5160
|
style: { "--gap": spacing }
|
|
4216
5161
|
}, props), {
|
|
4217
|
-
children: /* @__PURE__ */ (0,
|
|
5162
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(ToggleGroupContext.Provider, { value: { variant, size, spacing }, children })
|
|
4218
5163
|
})
|
|
4219
5164
|
);
|
|
4220
5165
|
}
|
|
@@ -4230,8 +5175,8 @@ function ToggleGroupItem(_a) {
|
|
|
4230
5175
|
"variant",
|
|
4231
5176
|
"size"
|
|
4232
5177
|
]);
|
|
4233
|
-
const context =
|
|
4234
|
-
return /* @__PURE__ */ (0,
|
|
5178
|
+
const context = React12.useContext(ToggleGroupContext);
|
|
5179
|
+
return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
4235
5180
|
import_toggle2.Toggle,
|
|
4236
5181
|
__spreadProps(__spreadValues({
|
|
4237
5182
|
className: cn(
|
|
@@ -4256,14 +5201,14 @@ function ToggleGroupItem(_a) {
|
|
|
4256
5201
|
|
|
4257
5202
|
// src/components/ui/tooltip.tsx
|
|
4258
5203
|
var import_tooltip = require("@base-ui/react/tooltip");
|
|
4259
|
-
var
|
|
5204
|
+
var import_jsx_runtime46 = require("react/jsx-runtime");
|
|
4260
5205
|
function TooltipProvider(_a) {
|
|
4261
5206
|
var _b = _a, {
|
|
4262
5207
|
delay = 0
|
|
4263
5208
|
} = _b, props = __objRest(_b, [
|
|
4264
5209
|
"delay"
|
|
4265
5210
|
]);
|
|
4266
|
-
return /* @__PURE__ */ (0,
|
|
5211
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
4267
5212
|
import_tooltip.Tooltip.Provider,
|
|
4268
5213
|
__spreadValues({
|
|
4269
5214
|
"data-slot": "tooltip-provider",
|
|
@@ -4271,13 +5216,13 @@ function TooltipProvider(_a) {
|
|
|
4271
5216
|
}, props)
|
|
4272
5217
|
);
|
|
4273
5218
|
}
|
|
4274
|
-
function
|
|
5219
|
+
function Tooltip5(_a) {
|
|
4275
5220
|
var props = __objRest(_a, []);
|
|
4276
|
-
return /* @__PURE__ */ (0,
|
|
5221
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_tooltip.Tooltip.Root, __spreadValues({ "data-slot": "tooltip" }, props));
|
|
4277
5222
|
}
|
|
4278
5223
|
function TooltipTrigger(_a) {
|
|
4279
5224
|
var props = __objRest(_a, []);
|
|
4280
|
-
return /* @__PURE__ */ (0,
|
|
5225
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_tooltip.Tooltip.Trigger, __spreadValues({ "data-slot": "tooltip-trigger" }, props));
|
|
4281
5226
|
}
|
|
4282
5227
|
function TooltipContent(_a) {
|
|
4283
5228
|
var _b = _a, {
|
|
@@ -4292,8 +5237,8 @@ function TooltipContent(_a) {
|
|
|
4292
5237
|
"style"
|
|
4293
5238
|
]);
|
|
4294
5239
|
const themeVars = useThemeVars();
|
|
4295
|
-
return /* @__PURE__ */ (0,
|
|
4296
|
-
/* @__PURE__ */ (0,
|
|
5240
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_tooltip.Tooltip.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(import_tooltip.Tooltip.Positioner, { sideOffset, children: [
|
|
5241
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
4297
5242
|
import_tooltip.Tooltip.Popup,
|
|
4298
5243
|
__spreadProps(__spreadValues({
|
|
4299
5244
|
className: cn(
|
|
@@ -4306,7 +5251,7 @@ function TooltipContent(_a) {
|
|
|
4306
5251
|
children
|
|
4307
5252
|
})
|
|
4308
5253
|
),
|
|
4309
|
-
/* @__PURE__ */ (0,
|
|
5254
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
4310
5255
|
import_tooltip.Tooltip.Arrow,
|
|
4311
5256
|
{
|
|
4312
5257
|
className: "z-50 size-2.5 rotate-45 bg-brand-secondary"
|
|
@@ -4352,9 +5297,21 @@ function TooltipContent(_a) {
|
|
|
4352
5297
|
CardFooter,
|
|
4353
5298
|
CardHeader,
|
|
4354
5299
|
CardTitle,
|
|
5300
|
+
CashflowBarChart,
|
|
4355
5301
|
Checkbox,
|
|
4356
5302
|
CheckboxCard,
|
|
4357
5303
|
Chip,
|
|
5304
|
+
Combobox,
|
|
5305
|
+
ComboboxContent,
|
|
5306
|
+
ComboboxEmpty,
|
|
5307
|
+
ComboboxGroup,
|
|
5308
|
+
ComboboxGroupLabel,
|
|
5309
|
+
ComboboxInput,
|
|
5310
|
+
ComboboxItem,
|
|
5311
|
+
ComboboxList,
|
|
5312
|
+
ComboboxSeparator,
|
|
5313
|
+
ComboboxTrigger,
|
|
5314
|
+
ComboboxValue,
|
|
4358
5315
|
DataTable,
|
|
4359
5316
|
DataTableColumnHeader,
|
|
4360
5317
|
DataTablePagination,
|
|
@@ -4402,6 +5359,7 @@ function TooltipContent(_a) {
|
|
|
4402
5359
|
EmptyHeader,
|
|
4403
5360
|
EmptyMedia,
|
|
4404
5361
|
EmptyTitle,
|
|
5362
|
+
ExpenseBarChart,
|
|
4405
5363
|
FONT_FAMILY_SANS,
|
|
4406
5364
|
Field,
|
|
4407
5365
|
FieldContent,
|
|
@@ -4413,6 +5371,7 @@ function TooltipContent(_a) {
|
|
|
4413
5371
|
FieldSeparator,
|
|
4414
5372
|
FieldSet,
|
|
4415
5373
|
FieldTitle,
|
|
5374
|
+
IncomeBarChart,
|
|
4416
5375
|
Input,
|
|
4417
5376
|
InputGroup,
|
|
4418
5377
|
InputGroupAddon,
|
|
@@ -4496,6 +5455,7 @@ function TooltipContent(_a) {
|
|
|
4496
5455
|
TooltipContent,
|
|
4497
5456
|
TooltipProvider,
|
|
4498
5457
|
TooltipTrigger,
|
|
5458
|
+
TransactionsIncomeExpenseBarChart,
|
|
4499
5459
|
badgeVariants,
|
|
4500
5460
|
buttonVariants,
|
|
4501
5461
|
cn,
|