@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.
Files changed (36) hide show
  1. package/.turbo/turbo-build.log +154 -138
  2. package/CHANGELOG.md +6 -0
  3. package/README.md +82 -0
  4. package/dist/chunk-3EQP72AW.mjs +58 -0
  5. package/dist/chunk-5JGQAAQV.mjs +212 -0
  6. package/dist/chunk-GLW2UO6O.mjs +212 -0
  7. package/dist/chunk-RN67642N.mjs +171 -0
  8. package/dist/chunk-UEL4RD5P.mjs +272 -0
  9. package/dist/chunk-YBXCIF5Q.mjs +198 -0
  10. package/dist/components/ui/cashflow-bar-chart.js +596 -0
  11. package/dist/components/ui/cashflow-bar-chart.mjs +16 -0
  12. package/dist/components/ui/combobox.js +261 -0
  13. package/dist/components/ui/combobox.mjs +28 -0
  14. package/dist/components/ui/data-table.mjs +3 -3
  15. package/dist/components/ui/expense-bar-chart.js +543 -0
  16. package/dist/components/ui/expense-bar-chart.mjs +16 -0
  17. package/dist/components/ui/field.mjs +2 -2
  18. package/dist/components/ui/income-bar-chart.js +543 -0
  19. package/dist/components/ui/income-bar-chart.mjs +16 -0
  20. package/dist/components/ui/transactions-income-expense-bar-chart.js +478 -0
  21. package/dist/components/ui/transactions-income-expense-bar-chart.mjs +16 -0
  22. package/dist/index.js +1685 -725
  23. package/dist/index.mjs +152 -111
  24. package/dist/styles.css +1 -1
  25. package/package.json +30 -2
  26. package/src/components/index.tsx +56 -0
  27. package/src/components/ui/cashflow-bar-chart.tsx +336 -0
  28. package/src/components/ui/chart-shared.tsx +100 -0
  29. package/src/components/ui/combobox.tsx +217 -0
  30. package/src/components/ui/expense-bar-chart.tsx +278 -0
  31. package/src/components/ui/income-bar-chart.tsx +278 -0
  32. package/src/components/ui/transactions-income-expense-bar-chart.tsx +198 -0
  33. package/src/styles/styles-css.ts +1 -1
  34. package/tsup.config.ts +5 -0
  35. package/dist/{chunk-K76E2TQU.mjs → chunk-CJ46PDXE.mjs} +5 -5
  36. 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: () => 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/accordion.tsx
360
- var import_lucide_react = require("lucide-react");
361
- var import_accordion = require("@base-ui/react/accordion");
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
- function Accordion(props) {
364
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_accordion.Accordion.Root, __spreadValues({ "data-slot": "accordion" }, props));
383
+ var ThemeVarsContext = (0, import_react.createContext)({});
384
+ function useThemeVars() {
385
+ return (0, import_react.useContext)(ThemeVarsContext);
365
386
  }
366
- function AccordionItem(_a) {
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, import_jsx_runtime.jsx)(
369
- import_accordion.Accordion.Item,
392
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
393
+ "div",
370
394
  __spreadValues({
371
- className: cn("border-b", className),
372
- "data-slot": "accordion-item"
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 AccordionTrigger(_a) {
377
- var _b = _a, {
378
- className,
379
- children
380
- } = _b, props = __objRest(_b, [
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
- // layout
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": "accordion-trigger"
403
- }, props), {
404
- children: [
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 AccordionContent(_a) {
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
- children
516
+ variant = "default"
415
517
  } = _b, props = __objRest(_b, [
416
518
  "className",
417
- "children"
519
+ "variant"
418
520
  ]);
419
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
420
- import_accordion.Accordion.Panel,
421
- __spreadProps(__spreadValues({
422
- 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",
423
- "data-slot": "accordion-content"
424
- }, props), {
425
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: cn("pb-4 text-muted-foreground", className), children })
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/alert-dialog.tsx
431
- var import_alert_dialog = require("@base-ui/react/alert-dialog");
432
-
433
- // src/lib/theme-provider.tsx
434
- var import_react = require("react");
435
- var import_jsx_runtime2 = require("react/jsx-runtime");
436
- var ThemeVarsContext = (0, import_react.createContext)({});
437
- function useThemeVars() {
438
- return (0, import_react.useContext)(ThemeVarsContext);
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 import_class_variance_authority = require("class-variance-authority");
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 import_jsx_runtime3 = require("react/jsx-runtime");
495
- var buttonVariants = (0, import_class_variance_authority.cva)(
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
- const Comp = asChild ? Slot : "button";
547
- const isIconOnly = size === "icon" || size === "icon-xs" || size === "icon-sm" || size === "icon-lg";
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(buttonVariants({ variant, size, className })),
552
- "data-size": size,
553
- "data-slot": "button",
554
- "data-variant": variant,
555
- disabled: loading || disabled,
556
- ref,
557
- type
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: loading ? /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
560
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react2.Loader2, { "aria-hidden": "true", className: "animate-spin" }),
561
- !isIconOnly && children
562
- ] }) : children
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 import_jsx_runtime4 = require("react/jsx-runtime");
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, import_jsx_runtime4.jsx)(import_alert_dialog.AlertDialog.Root, __spreadValues({ "data-slot": "alert-dialog" }, props));
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, import_jsx_runtime4.jsx)(import_alert_dialog.AlertDialog.Trigger, __spreadValues({ "data-slot": "alert-dialog-trigger" }, props));
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, import_jsx_runtime4.jsx)(import_alert_dialog.AlertDialog.Portal, __spreadValues({ "data-slot": "alert-dialog-portal" }, props));
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, import_jsx_runtime4.jsx)(
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, import_jsx_runtime4.jsxs)(AlertDialogPortal, { children: [
611
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(AlertDialogOverlay, {}),
612
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
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, import_jsx_runtime4.jsx)(
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, import_jsx_runtime4.jsx)(
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, import_jsx_runtime4.jsx)(
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, import_jsx_runtime4.jsx)(
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, import_jsx_runtime4.jsx)(
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, import_jsx_runtime4.jsx)(
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, import_jsx_runtime4.jsx)(
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 import_class_variance_authority2 = require("class-variance-authority");
753
- var import_jsx_runtime5 = require("react/jsx-runtime");
754
- var alertVariants = (0, import_class_variance_authority2.cva)(
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, import_jsx_runtime5.jsx)(
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, import_jsx_runtime5.jsx)(
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, import_jsx_runtime5.jsx)(
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 import_jsx_runtime6 = require("react/jsx-runtime");
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, import_jsx_runtime6.jsx)(
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, import_jsx_runtime6.jsx)(
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, import_jsx_runtime6.jsx)(
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, import_jsx_runtime6.jsx)(
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, import_jsx_runtime6.jsx)(
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, import_jsx_runtime6.jsx)(
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 import_class_variance_authority3 = require("class-variance-authority");
922
- var import_jsx_runtime7 = require("react/jsx-runtime");
923
- var badgeVariants = (0, import_class_variance_authority3.cva)(
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, import_jsx_runtime7.jsx)(
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 React3 = __toESM(require("react"));
964
- var import_lucide_react3 = require("lucide-react");
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 import_jsx_runtime8 = require("react/jsx-runtime");
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, import_jsx_runtime8.jsx)(
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, import_jsx_runtime8.jsx)(import_lucide_react3.ChevronLeftIcon, __spreadValues({ className: cn("size-4", className) }, props));
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, import_jsx_runtime8.jsx)(
997
- import_lucide_react3.ChevronRightIcon,
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, import_jsx_runtime8.jsx)(import_lucide_react3.ChevronDownIcon, __spreadValues({ className: cn("size-4", className) }, props));
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, import_jsx_runtime8.jsx)("td", __spreadProps(__spreadValues({}, props), { children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "flex size-(--cell-size) items-center justify-center text-center", children }) }));
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, import_jsx_runtime8.jsx)(
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 CardFooter(_a) {
1242
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1243
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1244
- "div",
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("flex items-center px-6 [.border-t]:pt-6", className),
1247
- "data-slot": "card-footer"
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 import_react3 = require("react");
1254
- var import_lucide_react4 = require("lucide-react");
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 import_jsx_runtime10 = require("react/jsx-runtime");
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, import_jsx_runtime10.jsx)(
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, import_jsx_runtime10.jsxs)(
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, import_jsx_runtime10.jsx)(import_lucide_react4.CheckIcon, { className: "size-3.5 group-data-indeterminate:hidden" }),
1285
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_lucide_react4.MinusIcon, { className: "size-3.5 hidden group-data-indeterminate:block" })
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, import_react3.useState)(
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, import_jsx_runtime10.jsxs)(
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, import_jsx_runtime10.jsx)(
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, import_jsx_runtime10.jsxs)("div", { className: "flex flex-col gap-1", children: [
1342
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "text-sm font-medium leading-none", children: label }),
1343
- description ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "text-sm text-muted-foreground", children: description }) : null
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 import_lucide_react5 = require("lucide-react");
1352
- var import_jsx_runtime11 = require("react/jsx-runtime");
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, import_jsx_runtime11.jsxs)(
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, import_jsx_runtime11.jsx)(
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, import_jsx_runtime11.jsx)(import_lucide_react5.X, { className: "size-3" })
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 React4 = __toESM(require("react"));
2492
+ var React8 = __toESM(require("react"));
1405
2493
  var import_react_table = require("@tanstack/react-table");
1406
- var import_lucide_react8 = require("lucide-react");
2494
+ var import_lucide_react10 = require("lucide-react");
1407
2495
 
1408
2496
  // src/components/ui/table.tsx
1409
- var import_jsx_runtime12 = require("react/jsx-runtime");
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, import_jsx_runtime12.jsx)(
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, import_jsx_runtime12.jsx)(
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, import_jsx_runtime12.jsx)(
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, import_jsx_runtime12.jsx)(
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, import_jsx_runtime12.jsx)(
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, import_jsx_runtime12.jsx)(
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, import_jsx_runtime12.jsx)(
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, import_jsx_runtime12.jsx)(
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, import_jsx_runtime12.jsx)(
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 import_jsx_runtime13 = require("react/jsx-runtime");
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, import_jsx_runtime13.jsx)(
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 import_lucide_react6 = require("lucide-react");
2624
+ var import_lucide_react8 = require("lucide-react");
1537
2625
  var import_select = require("@base-ui/react/select");
1538
- var import_jsx_runtime14 = require("react/jsx-runtime");
2626
+ var import_jsx_runtime23 = require("react/jsx-runtime");
1539
2627
  function Select(_a) {
1540
2628
  var props = __objRest(_a, []);
1541
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_select.Select.Root, __spreadValues({ "data-slot": "select" }, props));
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, import_jsx_runtime14.jsx)(import_select.Select.Group, __spreadValues({ "data-slot": "select-group" }, props));
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, import_jsx_runtime14.jsx)(import_select.Select.Value, __spreadValues({ "data-slot": "select-value" }, props));
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, import_jsx_runtime14.jsxs)(
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, import_jsx_runtime14.jsx)(import_select.Select.Icon, { className: "transition-transform duration-200 data-popup-open:rotate-180", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_lucide_react6.ChevronDownIcon, { className: "size-4 opacity-50" }) })
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, import_jsx_runtime14.jsx)(import_select.Select.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_select.Select.Positioner, { align: "start", alignItemWithTrigger: false, sideOffset: 4, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
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, import_jsx_runtime14.jsx)(SelectScrollUpButton, {}),
2688
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(SelectScrollUpButton, {}),
1601
2689
  children,
1602
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(SelectScrollDownButton, {})
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, import_jsx_runtime14.jsx)(
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, import_jsx_runtime14.jsxs)(
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, import_jsx_runtime14.jsx)(
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, import_jsx_runtime14.jsx)(import_select.Select.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_lucide_react6.CheckIcon, { className: "size-4" }) })
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, import_jsx_runtime14.jsx)(import_select.Select.ItemText, { children })
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, import_jsx_runtime14.jsx)(
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, import_jsx_runtime14.jsx)(
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, import_jsx_runtime14.jsx)(import_lucide_react6.ChevronUpIcon, { className: "size-4" })
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, import_jsx_runtime14.jsx)(
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, import_jsx_runtime14.jsx)(import_lucide_react6.ChevronDownIcon, { className: "size-4" })
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 import_lucide_react7 = require("lucide-react");
2795
+ var import_lucide_react9 = require("lucide-react");
1708
2796
  var import_menu = require("@base-ui/react/menu");
1709
- var import_jsx_runtime15 = require("react/jsx-runtime");
2797
+ var import_jsx_runtime24 = require("react/jsx-runtime");
1710
2798
  function DropdownMenu(_a) {
1711
2799
  var props = __objRest(_a, []);
1712
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_menu.Menu.Root, __spreadValues({ "data-slot": "dropdown-menu" }, props));
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, import_jsx_runtime15.jsx)(import_menu.Menu.Portal, __spreadValues({ "data-slot": "dropdown-menu-portal" }, props));
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, import_jsx_runtime15.jsx)(
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, import_jsx_runtime15.jsx)(import_menu.Menu.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_menu.Menu.Positioner, { sideOffset, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
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, import_jsx_runtime15.jsx)(import_menu.Menu.Group, __spreadValues({ "data-slot": "dropdown-menu-group" }, props));
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, import_jsx_runtime15.jsx)(
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, import_jsx_runtime15.jsxs)(
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, import_jsx_runtime15.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_menu.Menu.CheckboxItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react7.CheckIcon, { className: "size-4" }) }) }),
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, import_jsx_runtime15.jsx)(
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, import_jsx_runtime15.jsxs)(
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, import_jsx_runtime15.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_menu.Menu.RadioItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react7.CircleIcon, { className: "size-2 fill-current" }) }) }),
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, import_jsx_runtime15.jsx)(
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, import_jsx_runtime15.jsx)(
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, import_jsx_runtime15.jsx)(
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, import_jsx_runtime15.jsx)(import_menu.Menu.SubmenuRoot, __spreadValues({ "data-slot": "dropdown-menu-sub" }, props));
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, import_jsx_runtime15.jsxs)(
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, import_jsx_runtime15.jsx)(import_lucide_react7.ChevronRightIcon, { className: "ml-auto size-4" })
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, import_jsx_runtime15.jsx)(import_menu.Menu.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_menu.Menu.Positioner, { sideOffset, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
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 import_jsx_runtime17 = require("react/jsx-runtime");
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, import_jsx_runtime17.jsx)("span", { className, children: title });
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, import_jsx_runtime17.jsx)(import_lucide_react8.ArrowUp, { className: "ml-1 size-3.5" });
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, import_jsx_runtime17.jsx)(import_lucide_react8.ArrowDown, { className: "ml-1 size-3.5" });
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, import_jsx_runtime17.jsx)(import_lucide_react8.ArrowUpDown, { className: "ml-1 size-3.5" });
3048
+ sortIcon = /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react10.ArrowUpDown, { className: "ml-1 size-3.5" });
1974
3049
  }
1975
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
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, import_jsx_runtime17.jsx)(
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, import_jsx_runtime17.jsx)(
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, import_jsx_runtime17.jsxs)("div", { className: "flex items-center justify-between gap-2 py-4", "data-slot": "data-table-toolbar", children: [
2027
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "flex flex-1 items-center gap-2", children: searchKey ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
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, import_jsx_runtime17.jsxs)(DropdownMenu, { children: [
2040
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
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, import_jsx_runtime17.jsx)(Button, { className: "ml-auto h-8 gap-1.5", size: "sm", variant: "outline" }),
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, import_jsx_runtime17.jsx)(import_lucide_react8.SlidersHorizontal, { className: "size-3.5" }),
2046
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "hidden sm:inline", children: "Columns" })
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, import_jsx_runtime17.jsx)(DropdownMenuContent, { children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(DropdownMenuGroup, { children: [
2051
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(DropdownMenuLabel, { children: "Toggle columns" }),
2052
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(DropdownMenuSeparator, {}),
2053
- table.getAllColumns().filter((col) => col.getCanHide()).map((col) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
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, import_jsx_runtime17.jsxs)(
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, import_jsx_runtime17.jsx)("p", { className: "text-sm text-muted-foreground", children: table.getFilteredSelectedRowModel().rows.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_jsx_runtime17.Fragment, { children: [
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, import_jsx_runtime17.jsxs)("div", { className: "flex items-center gap-6", children: [
2087
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "flex items-center gap-2", children: [
2088
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { className: "text-sm text-muted-foreground whitespace-nowrap", children: "Rows per page" }),
2089
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
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, import_jsx_runtime17.jsx)(SelectTrigger, { className: "w-[70px]", size: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SelectValue, { placeholder: `${table.getState().pagination.pageSize}` }) }),
2098
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SelectContent, { children: pageSizeOptions.map((pageSize) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SelectItem, { value: `${pageSize}`, children: pageSize }, pageSize)) })
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, import_jsx_runtime17.jsxs)("p", { className: "text-sm text-muted-foreground whitespace-nowrap", children: [
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, import_jsx_runtime17.jsxs)("div", { className: "flex items-center gap-1", children: [
2110
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
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, import_jsx_runtime17.jsx)(import_lucide_react8.ChevronsLeftIcon, { className: "size-4" })
3195
+ children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react10.ChevronsLeftIcon, { className: "size-4" })
2121
3196
  }
2122
3197
  ),
2123
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
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, import_jsx_runtime17.jsx)(import_lucide_react8.ChevronLeftIcon, { className: "size-4" })
3208
+ children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react10.ChevronLeftIcon, { className: "size-4" })
2134
3209
  }
2135
3210
  ),
2136
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
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, import_jsx_runtime17.jsx)(import_lucide_react8.ChevronRightIcon, { className: "size-4" })
3221
+ children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react10.ChevronRightIcon, { className: "size-4" })
2147
3222
  }
2148
3223
  ),
2149
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
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, import_jsx_runtime17.jsx)(import_lucide_react8.ChevronsRightIcon, { className: "size-4" })
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, import_jsx_runtime17.jsx)(import_jsx_runtime17.Fragment, { children: Array.from({ length: rowCount }).map((_, rowIdx) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(TableRow, { children: Array.from({ length: columnCount }).map((_inner, colIdx) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(TableCell, { children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Skeleton, { className: "h-4 w-3/4" }) }, `skeleton-cell-${String(rowIdx)}-${String(colIdx)}`)) }, `skeleton-row-${String(rowIdx)}`)) });
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] = React4.useState([]);
2190
- const [columnFilters, setColumnFilters] = React4.useState([]);
2191
- const [columnVisibility, setColumnVisibility] = React4.useState({});
2192
- const [rowSelection, setRowSelection] = React4.useState({});
2193
- const resolvedColumns = React4.useMemo(() => {
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, import_jsx_runtime17.jsx)(DataTableSkeleton, { columnCount: resolvedColumns.length, rowCount: skeletonRows });
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, import_jsx_runtime17.jsx)(import_jsx_runtime17.Fragment, { children: table.getRowModel().rows.map((row) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
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, import_jsx_runtime17.jsx)(TableCell, { children: (0, import_react_table.flexRender)(cell.column.columnDef.cell, cell.getContext()) }, cell.id))
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, import_jsx_runtime17.jsx)(TableRow, { children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
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, import_jsx_runtime17.jsxs)("div", { className: cn("w-full font-sans", className), "data-slot": "data-table", children: [
2244
- toolbar ? toolbar(table) : (searchKey || enableColumnVisibility) && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
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, import_jsx_runtime17.jsx)("div", { className: "border border-border", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(Table, { children: [
2254
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(TableHeader, { children: table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(TableRow, { children: headerGroup.headers.map((header) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(TableHead, { children: header.isPlaceholder ? null : (0, import_react_table.flexRender)(header.column.columnDef.header, header.getContext()) }, header.id)) }, headerGroup.id)) }),
2255
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(TableBody, { children: renderTableBody() })
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, import_jsx_runtime17.jsx)(DataTablePagination, { pageSizeOptions, table })
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 React5 = __toESM(require("react"));
3337
+ var React9 = __toESM(require("react"));
2263
3338
  var import_date_fns = require("date-fns");
2264
- var import_lucide_react9 = require("lucide-react");
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 import_jsx_runtime18 = require("react/jsx-runtime");
3343
+ var import_jsx_runtime26 = require("react/jsx-runtime");
2269
3344
  function Popover(_a) {
2270
3345
  var props = __objRest(_a, []);
2271
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_popover.Popover.Root, __spreadValues({ "data-slot": "popover" }, props));
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, import_jsx_runtime18.jsx)(import_popover.Popover.Trigger, __spreadValues({ "data-slot": "popover-trigger" }, props));
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, import_jsx_runtime18.jsx)(import_popover.Popover.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
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, import_jsx_runtime18.jsx)(
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, import_jsx_runtime18.jsx)("div", __spreadValues({ "data-slot": "popover-anchor" }, props));
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, import_jsx_runtime18.jsx)(
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, import_jsx_runtime18.jsx)(
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, import_jsx_runtime18.jsx)(
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 import_jsx_runtime19 = require("react/jsx-runtime");
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] = React5.useState(false);
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, import_jsx_runtime19.jsxs)(Popover, { onOpenChange: disabled ? void 0 : setOpen, open, children: [
2388
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
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, import_jsx_runtime19.jsx)(
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, import_jsx_runtime19.jsx)(import_lucide_react9.CalendarIcon, {}),
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, import_jsx_runtime19.jsxs)(
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, import_jsx_runtime19.jsx)(
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, import_jsx_runtime19.jsx)("div", { className: "border-t border-border px-3 pb-3 pt-2", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("label", { className: "mb-1.5 block text-xs font-medium text-muted-foreground", children: [
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, import_jsx_runtime19.jsx)(
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 import_lucide_react10 = require("lucide-react");
3524
+ var import_lucide_react12 = require("lucide-react");
2450
3525
  var import_dialog = require("@base-ui/react/dialog");
2451
- var import_jsx_runtime20 = require("react/jsx-runtime");
3526
+ var import_jsx_runtime28 = require("react/jsx-runtime");
2452
3527
  function Dialog(_a) {
2453
3528
  var props = __objRest(_a, []);
2454
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_dialog.Dialog.Root, __spreadValues({ "data-slot": "dialog" }, props));
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, import_jsx_runtime20.jsx)(import_dialog.Dialog.Trigger, __spreadValues({ "data-slot": "dialog-trigger" }, props));
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, import_jsx_runtime20.jsx)(import_dialog.Dialog.Portal, __spreadValues({ "data-slot": "dialog-portal" }, props));
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, import_jsx_runtime20.jsx)(import_dialog.Dialog.Close, __spreadValues({ "data-slot": "dialog-close" }, props));
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, import_jsx_runtime20.jsx)(
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, import_jsx_runtime20.jsxs)(DialogPortal, { children: [
2500
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(DialogOverlay, {}),
2501
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
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, import_jsx_runtime20.jsxs)(
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, import_jsx_runtime20.jsx)(import_lucide_react10.XIcon, {}),
2521
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "sr-only", children: "Close" })
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, import_jsx_runtime20.jsx)(
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, import_jsx_runtime20.jsxs)(
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, import_jsx_runtime20.jsx)(
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, import_jsx_runtime20.jsx)(
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, import_jsx_runtime20.jsx)(
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 import_jsx_runtime21 = require("react/jsx-runtime");
3679
+ var import_jsx_runtime29 = require("react/jsx-runtime");
2605
3680
  function Drawer(_a) {
2606
3681
  var props = __objRest(_a, []);
2607
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_vaul.Drawer.Root, __spreadValues({ "data-slot": "drawer" }, props));
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, import_jsx_runtime21.jsx)(import_vaul.Drawer.Trigger, __spreadValues({ "data-slot": "drawer-trigger" }, props));
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, import_jsx_runtime21.jsx)(import_vaul.Drawer.Portal, __spreadValues({ "data-slot": "drawer-portal" }, props));
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, import_jsx_runtime21.jsx)(import_vaul.Drawer.Close, __spreadValues({ "data-slot": "drawer-close" }, props));
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, import_jsx_runtime21.jsx)(
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, import_jsx_runtime21.jsxs)(DrawerPortal, { "data-slot": "drawer-portal", children: [
2651
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(DrawerOverlay, {}),
2652
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
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, import_jsx_runtime21.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" }),
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, import_jsx_runtime21.jsx)(
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, import_jsx_runtime21.jsx)(
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, import_jsx_runtime21.jsx)(
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, import_jsx_runtime21.jsx)(
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 import_react4 = require("react");
2827
- var import_class_variance_authority5 = require("class-variance-authority");
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 import_jsx_runtime23 = (
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, import_jsx_runtime23.jsx)(
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 import_jsx_runtime24 = require("react/jsx-runtime");
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, import_jsx_runtime24.jsx)(
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 import_jsx_runtime25 = require("react/jsx-runtime");
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, import_jsx_runtime25.jsx)(
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, import_jsx_runtime25.jsx)(
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, import_jsx_runtime25.jsx)(
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, import_class_variance_authority5.cva)(
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, import_jsx_runtime25.jsx)(
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, import_jsx_runtime25.jsx)(
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, import_jsx_runtime25.jsx)(
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, import_jsx_runtime25.jsx)(
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, import_jsx_runtime25.jsx)(
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, import_jsx_runtime25.jsxs)(
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, import_jsx_runtime25.jsx)(Separator, { className: "absolute inset-0 top-1/2" }),
3048
- children ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
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, import_react4.useMemo)(() => {
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, import_jsx_runtime25.jsx)("ul", { className: "ml-4 flex list-disc flex-col gap-1", children: uniqueErrors.map(
3085
- (error) => (error == null ? void 0 : error.message) && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("li", { children: error.message }, error.message)
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, import_jsx_runtime25.jsx)(
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 import_class_variance_authority6 = require("class-variance-authority");
4078
+ var import_class_variance_authority7 = require("class-variance-authority");
3105
4079
 
3106
4080
  // src/components/ui/textarea.tsx
3107
- var import_jsx_runtime26 = require("react/jsx-runtime");
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, import_jsx_runtime26.jsx)(
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 import_jsx_runtime27 = require("react/jsx-runtime");
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, import_jsx_runtime27.jsx)(
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, import_class_variance_authority6.cva)(
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, import_jsx_runtime27.jsx)(
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, import_class_variance_authority6.cva)(
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, import_jsx_runtime27.jsx)(
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, import_jsx_runtime27.jsx)(
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, import_jsx_runtime27.jsx)(
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, import_jsx_runtime27.jsx)(
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 React6 = __toESM(require("react"));
4259
+ var React10 = __toESM(require("react"));
3286
4260
  var import_input_otp = require("input-otp");
3287
- var import_lucide_react11 = require("lucide-react");
3288
- var import_jsx_runtime28 = require("react/jsx-runtime");
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, import_jsx_runtime28.jsx)(
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, import_jsx_runtime28.jsx)(
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 = React6.useContext(import_input_otp.OTPInputContext);
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, import_jsx_runtime28.jsxs)(
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, import_jsx_runtime28.jsx)("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "h-4 w-px animate-caret-blink bg-foreground duration-1000" }) }) : null
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, import_jsx_runtime28.jsx)("div", __spreadProps(__spreadValues({ "data-slot": "input-otp-separator", role: "separator" }, props), { children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react11.MinusIcon, {}) }));
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 import_lucide_react12 = require("lucide-react");
3354
- var import_jsx_runtime29 = require("react/jsx-runtime");
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, import_jsx_runtime29.jsx)(
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, import_jsx_runtime29.jsx)(
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, import_jsx_runtime29.jsx)("li", __spreadValues({ "data-slot": "pagination-item" }, props));
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, import_jsx_runtime29.jsx)(
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, import_jsx_runtime29.jsxs)(
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, import_jsx_runtime29.jsx)(import_lucide_react12.ChevronLeftIcon, {}),
3429
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: "hidden sm:block", children: "Previous" })
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, import_jsx_runtime29.jsxs)(
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, import_jsx_runtime29.jsx)("span", { className: "hidden sm:block", children: "Next" }),
3449
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_lucide_react12.ChevronRightIcon, {})
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, import_jsx_runtime29.jsxs)(
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, import_jsx_runtime29.jsx)(import_lucide_react12.MoreHorizontalIcon, { className: "size-4" }),
3469
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: "sr-only", children: "More pages" })
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 import_jsx_runtime30 = require("react/jsx-runtime");
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, import_jsx_runtime30.jsx)(
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, import_jsx_runtime30.jsx)(import_progress.Progress.Track, { className: "h-full", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
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 import_lucide_react13 = require("lucide-react");
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 import_jsx_runtime31 = require("react/jsx-runtime");
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, import_jsx_runtime31.jsx)(
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, import_jsx_runtime31.jsx)(
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, import_jsx_runtime31.jsx)(
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, import_jsx_runtime31.jsx)(import_lucide_react13.CircleIcon, { className: INDICATOR_DOT })
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, import_jsx_runtime31.jsxs)(
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, import_jsx_runtime31.jsx)(
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, import_jsx_runtime31.jsx)(import_radio.Radio.Indicator, { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_lucide_react13.CircleIcon, { className: INDICATOR_DOT }) })
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, import_jsx_runtime31.jsxs)("div", { className: "flex flex-col gap-1", children: [
3608
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { className: "text-sm font-medium leading-none", children: label }),
3609
- description ? /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { className: "text-sm text-muted-foreground", children: description }) : null
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 import_lucide_react14 = require("lucide-react");
4591
+ var import_lucide_react16 = require("lucide-react");
3618
4592
  var import_dialog2 = require("@base-ui/react/dialog");
3619
- var import_jsx_runtime32 = require("react/jsx-runtime");
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, import_jsx_runtime32.jsx)(import_dialog2.Dialog.Root, __spreadValues({ "data-slot": "sheet" }, props));
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, import_jsx_runtime32.jsx)(import_dialog2.Dialog.Trigger, __spreadValues({ "data-slot": "sheet-trigger" }, props));
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, import_jsx_runtime32.jsx)(import_dialog2.Dialog.Close, __spreadValues({ "data-slot": "sheet-close" }, props));
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, import_jsx_runtime32.jsx)(import_dialog2.Dialog.Portal, __spreadValues({ "data-slot": "sheet-portal" }, props));
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, import_jsx_runtime32.jsx)(
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, import_jsx_runtime32.jsxs)(SheetPortal, { children: [
3675
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SheetOverlay, {}),
3676
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
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, import_jsx_runtime32.jsxs)(
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, import_jsx_runtime32.jsx)(import_lucide_react14.XIcon, {}),
3696
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "sr-only", children: "Close" })
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, import_jsx_runtime32.jsx)(
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, import_jsx_runtime32.jsx)(
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, import_jsx_runtime32.jsx)(
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, import_jsx_runtime32.jsx)(
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 React7 = __toESM(require("react"));
3756
- var import_jsx_runtime33 = require("react/jsx-runtime");
3757
- var Slider = React7.forwardRef(
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] = React7.useState(defaultValue);
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, import_jsx_runtime33.jsxs)(
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, import_jsx_runtime33.jsx)(
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, import_jsx_runtime33.jsx)(
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, import_jsx_runtime33.jsx)(
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, import_jsx_runtime33.jsx)(
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 import_lucide_react15 = require("lucide-react");
4823
+ var import_lucide_react17 = require("lucide-react");
3850
4824
  var import_sonner = require("sonner");
3851
- var import_jsx_runtime34 = require("react/jsx-runtime");
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, import_jsx_runtime34.jsx)(
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, import_jsx_runtime34.jsx)(import_lucide_react15.CircleCheckIcon, { className: "size-4" }),
3860
- info: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_lucide_react15.InfoIcon, { className: "size-4" }),
3861
- warning: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_lucide_react15.TriangleAlertIcon, { className: "size-4" }),
3862
- error: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_lucide_react15.OctagonXIcon, { className: "size-4" }),
3863
- loading: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_lucide_react15.Loader2Icon, { className: "size-4 animate-spin" })
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 import_react5 = require("react");
4856
+ var import_react9 = require("react");
3912
4857
  var import_switch = require("@base-ui/react/switch");
3913
- var import_jsx_runtime36 = require("react/jsx-runtime");
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, import_jsx_runtime36.jsx)(
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, import_jsx_runtime36.jsx)(
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, import_react5.useState)(defaultChecked != null ? defaultChecked : false);
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, import_jsx_runtime36.jsx)(
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, import_jsx_runtime36.jsxs)("div", { className: "flex flex-col gap-1", children: [
3995
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "text-sm font-medium leading-none", children: label }),
3996
- description ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "text-sm text-muted-foreground", children: description }) : null
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, import_jsx_runtime36.jsx)(
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, import_jsx_runtime36.jsxs)(import_jsx_runtime36.Fragment, { children: [
4954
+ children: switchPosition === "left" ? /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_jsx_runtime42.Fragment, { children: [
4010
4955
  switchElement,
4011
4956
  contentElement
4012
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_jsx_runtime36.Fragment, { children: [
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 import_jsx_runtime37 = require("react/jsx-runtime");
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, import_jsx_runtime37.jsx)(
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, import_jsx_runtime37.jsx)(
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, import_jsx_runtime37.jsx)(
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, import_jsx_runtime37.jsx)(
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 React8 = __toESM(require("react"));
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 import_jsx_runtime38 = require("react/jsx-runtime");
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, import_jsx_runtime38.jsx)(
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 import_jsx_runtime39 = require("react/jsx-runtime");
4181
- var ToggleGroupContext = React8.createContext({
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, import_jsx_runtime39.jsx)(
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, import_jsx_runtime39.jsx)(ToggleGroupContext.Provider, { value: { variant, size, spacing }, children })
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 = React8.useContext(ToggleGroupContext);
4234
- return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
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 import_jsx_runtime40 = require("react/jsx-runtime");
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, import_jsx_runtime40.jsx)(
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 Tooltip(_a) {
5219
+ function Tooltip5(_a) {
4275
5220
  var props = __objRest(_a, []);
4276
- return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_tooltip.Tooltip.Root, __spreadValues({ "data-slot": "tooltip" }, props));
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, import_jsx_runtime40.jsx)(import_tooltip.Tooltip.Trigger, __spreadValues({ "data-slot": "tooltip-trigger" }, props));
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, import_jsx_runtime40.jsx)(import_tooltip.Tooltip.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_tooltip.Tooltip.Positioner, { sideOffset, children: [
4296
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
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, import_jsx_runtime40.jsx)(
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,