@motor-hero/ui-kit 0.25.1 → 0.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -32,6 +32,7 @@ var index_exports = {};
32
32
  __export(index_exports, {
33
33
  AppShell: () => AppShell,
34
34
  AuthCard: () => AuthCard,
35
+ BaseDialog: () => BaseDialog,
35
36
  ColorPicker: () => ColorPicker,
36
37
  Combobox: () => Combobox,
37
38
  ConfirmDialog: () => ConfirmDialog,
@@ -443,10 +444,27 @@ function FormField({ label, htmlFor, error, required, children, className }) {
443
444
  ] });
444
445
  }
445
446
 
446
- // src/components/form-dialog.tsx
447
+ // src/components/base-dialog.tsx
447
448
  var Dialog = __toESM(require("@radix-ui/react-dialog"), 1);
448
449
  var import_lucide_react2 = require("lucide-react");
450
+ var React2 = __toESM(require("react"), 1);
451
+
452
+ // src/hooks/use-is-desktop.ts
449
453
  var React = __toESM(require("react"), 1);
454
+ var DESKTOP_QUERY = "(min-width: 640px)";
455
+ function useIsDesktop() {
456
+ const [isDesktop, setIsDesktop] = React.useState(
457
+ () => typeof window !== "undefined" ? window.matchMedia(DESKTOP_QUERY).matches : true
458
+ );
459
+ React.useEffect(() => {
460
+ const mql = window.matchMedia(DESKTOP_QUERY);
461
+ const onChange = () => setIsDesktop(mql.matches);
462
+ onChange();
463
+ mql.addEventListener("change", onChange);
464
+ return () => mql.removeEventListener("change", onChange);
465
+ }, []);
466
+ return isDesktop;
467
+ }
450
468
 
451
469
  // src/lib/utils.ts
452
470
  var import_clsx = require("clsx");
@@ -455,43 +473,8 @@ function cn(...inputs) {
455
473
  return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
456
474
  }
457
475
 
458
- // src/components/form-dialog.tsx
476
+ // src/components/base-dialog.tsx
459
477
  var import_jsx_runtime10 = require("react/jsx-runtime");
460
- function FormDialogLayout({
461
- title,
462
- children,
463
- onSubmit,
464
- submitLabel = "Salvar",
465
- cancelLabel = "Cancelar",
466
- onCancel,
467
- isSubmitting = false,
468
- isDisabled = false
469
- }) {
470
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("form", { onSubmit, children: [
471
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "flex flex-col space-y-1.5 text-center sm:text-left", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("h2", { className: "text-lg font-semibold leading-none tracking-tight", children: title }) }),
472
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "space-y-4 py-4", children }),
473
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", children: [
474
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
475
- "button",
476
- {
477
- type: "button",
478
- onClick: onCancel,
479
- className: "inline-flex h-9 items-center justify-center rounded-md border border-input bg-background px-4 text-sm font-medium shadow-sm transition-colors hover:bg-accent hover:text-accent-foreground cursor-pointer disabled:pointer-events-none disabled:opacity-50",
480
- children: cancelLabel
481
- }
482
- ),
483
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
484
- "button",
485
- {
486
- type: "submit",
487
- disabled: isSubmitting || isDisabled,
488
- className: "inline-flex h-9 items-center justify-center rounded-md bg-primary px-4 text-sm font-medium text-primary-foreground shadow transition-colors hover:bg-primary/90 cursor-pointer disabled:pointer-events-none disabled:opacity-50",
489
- children: isSubmitting ? "Salvando..." : submitLabel
490
- }
491
- )
492
- ] })
493
- ] });
494
- }
495
478
  var sizeClasses2 = {
496
479
  sm: "sm:max-w-sm",
497
480
  md: "sm:max-w-md",
@@ -499,18 +482,20 @@ var sizeClasses2 = {
499
482
  xl: "sm:max-w-xl",
500
483
  "2xl": "sm:max-w-2xl"
501
484
  };
502
- function FormDialog({
485
+ function BaseDialog({
503
486
  open,
504
487
  onOpenChange,
505
488
  title,
506
489
  description,
507
490
  children,
508
491
  footer,
509
- onSubmit,
510
492
  size = "lg",
511
- className
493
+ className,
494
+ modal,
495
+ contentWrapper = (content) => content
512
496
  }) {
513
- React.useEffect(() => {
497
+ const isDesktop = useIsDesktop();
498
+ React2.useEffect(() => {
514
499
  if (open) return;
515
500
  const id = window.setTimeout(() => {
516
501
  if (document.body.style.pointerEvents === "none") {
@@ -537,7 +522,7 @@ function FormDialog({
537
522
  /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "min-h-0 flex-1 overflow-y-auto px-6 py-4", children }),
538
523
  footer && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "flex shrink-0 flex-col-reverse gap-2 border-t px-6 py-3 sm:flex-row sm:justify-end", children: footer })
539
524
  ] });
540
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Dialog.Root, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(Dialog.Portal, { children: [
525
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Dialog.Root, { open, onOpenChange, modal: modal ?? !isDesktop, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(Dialog.Portal, { children: [
541
526
  /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Dialog.Overlay, { className: "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0" }),
542
527
  /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
543
528
  Dialog.Content,
@@ -553,37 +538,77 @@ function FormDialog({
553
538
  sizeClasses2[size],
554
539
  className
555
540
  ),
556
- children: onSubmit ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
557
- "form",
558
- {
559
- onSubmit,
560
- className: "flex min-h-0 flex-1 flex-col",
561
- children: body
562
- }
563
- ) : body
541
+ children: contentWrapper(body)
564
542
  }
565
543
  )
566
544
  ] }) });
567
545
  }
568
546
 
569
- // src/components/auth-card.tsx
547
+ // src/components/form-dialog.tsx
570
548
  var import_jsx_runtime11 = require("react/jsx-runtime");
549
+ function FormDialogLayout({
550
+ title,
551
+ children,
552
+ onSubmit,
553
+ submitLabel = "Salvar",
554
+ cancelLabel = "Cancelar",
555
+ onCancel,
556
+ isSubmitting = false,
557
+ isDisabled = false
558
+ }) {
559
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("form", { onSubmit, children: [
560
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "flex flex-col space-y-1.5 text-center sm:text-left", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("h2", { className: "text-lg font-semibold leading-none tracking-tight", children: title }) }),
561
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "space-y-4 py-4", children }),
562
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", children: [
563
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
564
+ "button",
565
+ {
566
+ type: "button",
567
+ onClick: onCancel,
568
+ className: "inline-flex h-9 items-center justify-center rounded-md border border-input bg-background px-4 text-sm font-medium shadow-sm transition-colors hover:bg-accent hover:text-accent-foreground cursor-pointer disabled:pointer-events-none disabled:opacity-50",
569
+ children: cancelLabel
570
+ }
571
+ ),
572
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
573
+ "button",
574
+ {
575
+ type: "submit",
576
+ disabled: isSubmitting || isDisabled,
577
+ className: "inline-flex h-9 items-center justify-center rounded-md bg-primary px-4 text-sm font-medium text-primary-foreground shadow transition-colors hover:bg-primary/90 cursor-pointer disabled:pointer-events-none disabled:opacity-50",
578
+ children: isSubmitting ? "Salvando..." : submitLabel
579
+ }
580
+ )
581
+ ] })
582
+ ] });
583
+ }
584
+ function FormDialog({ onSubmit, ...rest }) {
585
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
586
+ BaseDialog,
587
+ {
588
+ ...rest,
589
+ contentWrapper: onSubmit ? (content) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("form", { onSubmit, className: "flex min-h-0 flex-1 flex-col", children: content }) : void 0
590
+ }
591
+ );
592
+ }
593
+
594
+ // src/components/auth-card.tsx
595
+ var import_jsx_runtime12 = require("react/jsx-runtime");
571
596
  function AuthCard({ title, description, children, footer }) {
572
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "flex min-h-screen items-center justify-center px-4", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "w-full max-w-sm rounded-lg border bg-card p-6 shadow-sm", children: [
573
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "mb-6 text-center", children: [
574
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("h1", { className: "text-2xl font-semibold tracking-tight", children: title }),
575
- description && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("p", { className: "mt-1 text-sm text-muted-foreground", children: description })
597
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: "flex min-h-screen items-center justify-center px-4", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "w-full max-w-sm rounded-lg border bg-card p-6 shadow-sm", children: [
598
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "mb-6 text-center", children: [
599
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("h1", { className: "text-2xl font-semibold tracking-tight", children: title }),
600
+ description && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("p", { className: "mt-1 text-sm text-muted-foreground", children: description })
576
601
  ] }),
577
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "space-y-4", children }),
578
- footer && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "mt-4", children: footer })
602
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: "space-y-4", children }),
603
+ footer && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: "mt-4", children: footer })
579
604
  ] }) });
580
605
  }
581
606
 
582
607
  // src/components/pagination.tsx
583
- var import_jsx_runtime12 = require("react/jsx-runtime");
608
+ var import_jsx_runtime13 = require("react/jsx-runtime");
584
609
  function Pagination({ page, onPageChange, hasNextPage, hasPreviousPage, className }) {
585
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: `flex items-center justify-end gap-4 ${className ?? ""}`, children: [
586
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
610
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: `flex items-center justify-end gap-4 ${className ?? ""}`, children: [
611
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
587
612
  "button",
588
613
  {
589
614
  type: "button",
@@ -593,11 +618,11 @@ function Pagination({ page, onPageChange, hasNextPage, hasPreviousPage, classNam
593
618
  children: "Anterior"
594
619
  }
595
620
  ),
596
- /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("span", { className: "text-sm text-muted-foreground", children: [
621
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("span", { className: "text-sm text-muted-foreground", children: [
597
622
  "P\xE1gina ",
598
623
  page
599
624
  ] }),
600
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
625
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
601
626
  "button",
602
627
  {
603
628
  type: "button",
@@ -611,18 +636,18 @@ function Pagination({ page, onPageChange, hasNextPage, hasPreviousPage, classNam
611
636
  }
612
637
 
613
638
  // src/components/table-skeleton.tsx
614
- var import_jsx_runtime13 = require("react/jsx-runtime");
639
+ var import_jsx_runtime14 = require("react/jsx-runtime");
615
640
  function TableSkeleton({ rows = 5, columns = 4 }) {
616
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_jsx_runtime13.Fragment, { children: Array.from({ length: rows }).map((_, i) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("tr", { className: "border-b transition-colors", children: Array.from({ length: columns }).map((_2, j) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("td", { className: "p-4 align-middle", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: "h-5 w-full animate-pulse rounded bg-muted" }) }, j)) }, i)) });
641
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_jsx_runtime14.Fragment, { children: Array.from({ length: rows }).map((_, i) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("tr", { className: "border-b transition-colors", children: Array.from({ length: columns }).map((_2, j) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("td", { className: "p-4 align-middle", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "h-5 w-full animate-pulse rounded bg-muted" }) }, j)) }, i)) });
617
642
  }
618
643
 
619
644
  // src/components/search-input.tsx
620
- var React2 = __toESM(require("react"), 1);
621
- var import_jsx_runtime14 = require("react/jsx-runtime");
622
- var SearchInput = React2.forwardRef(
645
+ var React3 = __toESM(require("react"), 1);
646
+ var import_jsx_runtime15 = require("react/jsx-runtime");
647
+ var SearchInput = React3.forwardRef(
623
648
  ({ containerClassName, className, ...props }, ref) => {
624
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: `relative flex-1 ${containerClassName ?? ""}`, children: [
625
- /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
649
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: `relative flex-1 ${containerClassName ?? ""}`, children: [
650
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
626
651
  "svg",
627
652
  {
628
653
  xmlns: "http://www.w3.org/2000/svg",
@@ -636,12 +661,12 @@ var SearchInput = React2.forwardRef(
636
661
  strokeLinejoin: "round",
637
662
  className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground",
638
663
  children: [
639
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("circle", { cx: "11", cy: "11", r: "8" }),
640
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("path", { d: "m21 21-4.3-4.3" })
664
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("circle", { cx: "11", cy: "11", r: "8" }),
665
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("path", { d: "m21 21-4.3-4.3" })
641
666
  ]
642
667
  }
643
668
  ),
644
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
669
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
645
670
  "input",
646
671
  {
647
672
  ref,
@@ -657,12 +682,12 @@ SearchInput.displayName = "SearchInput";
657
682
 
658
683
  // src/components/password-input.tsx
659
684
  var import_lucide_react3 = require("lucide-react");
660
- var React3 = __toESM(require("react"), 1);
661
- var import_jsx_runtime15 = require("react/jsx-runtime");
662
- var PasswordInput = React3.forwardRef(({ containerClassName, className, ...props }, ref) => {
663
- const [visible, setVisible] = React3.useState(false);
664
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: `relative ${containerClassName ?? ""}`, children: [
665
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
685
+ var React4 = __toESM(require("react"), 1);
686
+ var import_jsx_runtime16 = require("react/jsx-runtime");
687
+ var PasswordInput = React4.forwardRef(({ containerClassName, className, ...props }, ref) => {
688
+ const [visible, setVisible] = React4.useState(false);
689
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: `relative ${containerClassName ?? ""}`, children: [
690
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
666
691
  "input",
667
692
  {
668
693
  ref,
@@ -671,7 +696,7 @@ var PasswordInput = React3.forwardRef(({ containerClassName, className, ...props
671
696
  ...props
672
697
  }
673
698
  ),
674
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
699
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
675
700
  "button",
676
701
  {
677
702
  type: "button",
@@ -679,7 +704,7 @@ var PasswordInput = React3.forwardRef(({ containerClassName, className, ...props
679
704
  "aria-label": visible ? "Ocultar senha" : "Mostrar senha",
680
705
  tabIndex: -1,
681
706
  className: "absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground transition-colors hover:text-foreground",
682
- children: visible ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react3.EyeOff, { className: "h-4 w-4" }) : /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react3.Eye, { className: "h-4 w-4" })
707
+ children: visible ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react3.EyeOff, { className: "h-4 w-4" }) : /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react3.Eye, { className: "h-4 w-4" })
683
708
  }
684
709
  )
685
710
  ] });
@@ -694,21 +719,21 @@ var React6 = __toESM(require("react"), 1);
694
719
  var import_vaul = require("vaul");
695
720
 
696
721
  // src/hooks/use-infinite-scroll-sentinel.ts
697
- var React4 = __toESM(require("react"), 1);
722
+ var React5 = __toESM(require("react"), 1);
698
723
  function useInfiniteScrollSentinel({
699
724
  enabled,
700
725
  loading,
701
726
  onLoadMore
702
727
  }) {
703
- const listRef = React4.useRef(null);
704
- const sentinelRef = React4.useRef(null);
705
- const loadingRef = React4.useRef(loading);
706
- const onLoadMoreRef = React4.useRef(onLoadMore);
707
- React4.useEffect(() => {
728
+ const listRef = React5.useRef(null);
729
+ const sentinelRef = React5.useRef(null);
730
+ const loadingRef = React5.useRef(loading);
731
+ const onLoadMoreRef = React5.useRef(onLoadMore);
732
+ React5.useEffect(() => {
708
733
  loadingRef.current = loading;
709
734
  onLoadMoreRef.current = onLoadMore;
710
735
  });
711
- React4.useEffect(() => {
736
+ React5.useEffect(() => {
712
737
  if (!enabled) return;
713
738
  const root = listRef.current;
714
739
  const sentinel = sentinelRef.current;
@@ -727,25 +752,8 @@ function useInfiniteScrollSentinel({
727
752
  return { listRef, sentinelRef };
728
753
  }
729
754
 
730
- // src/hooks/use-is-desktop.ts
731
- var React5 = __toESM(require("react"), 1);
732
- var DESKTOP_QUERY = "(min-width: 640px)";
733
- function useIsDesktop() {
734
- const [isDesktop, setIsDesktop] = React5.useState(
735
- () => typeof window !== "undefined" ? window.matchMedia(DESKTOP_QUERY).matches : true
736
- );
737
- React5.useEffect(() => {
738
- const mql = window.matchMedia(DESKTOP_QUERY);
739
- const onChange = () => setIsDesktop(mql.matches);
740
- onChange();
741
- mql.addEventListener("change", onChange);
742
- return () => mql.removeEventListener("change", onChange);
743
- }, []);
744
- return isDesktop;
745
- }
746
-
747
755
  // src/components/combobox.tsx
748
- var import_jsx_runtime16 = require("react/jsx-runtime");
756
+ var import_jsx_runtime17 = require("react/jsx-runtime");
749
757
  function Combobox({
750
758
  options,
751
759
  value,
@@ -792,7 +800,7 @@ function Combobox({
792
800
  loading,
793
801
  onLoadMore
794
802
  });
795
- const trigger = /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
803
+ const trigger = /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
796
804
  "button",
797
805
  {
798
806
  type: "button",
@@ -807,20 +815,20 @@ function Combobox({
807
815
  className
808
816
  ),
809
817
  children: [
810
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: cn("truncate", !selected && "text-muted-foreground"), children: selected ? selected.label : placeholder }),
811
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react4.ChevronsUpDown, { className: "h-4 w-4 shrink-0 opacity-50" })
818
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: cn("truncate", !selected && "text-muted-foreground"), children: selected ? selected.label : placeholder }),
819
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_lucide_react4.ChevronsUpDown, { className: "h-4 w-4 shrink-0 opacity-50" })
812
820
  ]
813
821
  }
814
822
  );
815
- const command = /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
823
+ const command = /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
816
824
  import_cmdk.Command,
817
825
  {
818
826
  shouldFilter: !isServer,
819
827
  className: "flex h-full w-full flex-col overflow-hidden",
820
828
  children: [
821
- /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "flex items-center border-b px-3", children: [
822
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react4.Search, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }),
823
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
829
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "flex items-center border-b px-3", children: [
830
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_lucide_react4.Search, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }),
831
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
824
832
  import_cmdk.Command.Input,
825
833
  {
826
834
  placeholder: searchPlaceholder,
@@ -829,28 +837,28 @@ function Combobox({
829
837
  }
830
838
  )
831
839
  ] }),
832
- /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
840
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
833
841
  import_cmdk.Command.List,
834
842
  {
835
843
  ref: listRef,
836
844
  className: "max-h-[50vh] overflow-y-auto overflow-x-hidden p-1 sm:max-h-60",
837
845
  children: [
838
- !isServer && !showCreate && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_cmdk.Command.Empty, { className: "py-6 text-center text-sm text-muted-foreground", children: emptyMessage }),
839
- showCreate && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
846
+ !isServer && !showCreate && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_cmdk.Command.Empty, { className: "py-6 text-center text-sm text-muted-foreground", children: emptyMessage }),
847
+ showCreate && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
840
848
  import_cmdk.Command.Item,
841
849
  {
842
850
  value: trimmedSearch,
843
851
  onSelect: () => handleSelect(trimmedSearch),
844
852
  className: "relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-2.5 text-sm outline-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground sm:py-1.5",
845
853
  children: [
846
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react4.Plus, { className: "h-4 w-4 shrink-0" }),
847
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "truncate", children: (formatCreateLabel ?? ((text) => `Usar "${text}"`))(
854
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_lucide_react4.Plus, { className: "h-4 w-4 shrink-0" }),
855
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "truncate", children: (formatCreateLabel ?? ((text) => `Usar "${text}"`))(
848
856
  trimmedSearch
849
857
  ) })
850
858
  ]
851
859
  }
852
860
  ),
853
- options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
861
+ options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
854
862
  import_cmdk.Command.Item,
855
863
  {
856
864
  value: isServer ? option.value : option.label,
@@ -858,7 +866,7 @@ function Combobox({
858
866
  onSelect: () => handleSelect(option.value),
859
867
  className: "relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-2.5 text-sm outline-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 sm:py-1.5",
860
868
  children: [
861
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
869
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
862
870
  import_lucide_react4.Check,
863
871
  {
864
872
  className: cn(
@@ -867,14 +875,14 @@ function Combobox({
867
875
  )
868
876
  }
869
877
  ),
870
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "truncate", children: option.label })
878
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "truncate", children: option.label })
871
879
  ]
872
880
  },
873
881
  option.value
874
882
  )),
875
- isServer && !loading && options.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "py-6 text-center text-sm text-muted-foreground", children: emptyMessage }),
876
- isServer && loading && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "flex items-center justify-center py-6", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react4.Loader2, { className: "h-4 w-4 animate-spin text-muted-foreground" }) }),
877
- isServer && hasMore && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { ref: sentinelRef, "aria-hidden": true, className: "h-1" })
883
+ isServer && !loading && options.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "py-6 text-center text-sm text-muted-foreground", children: emptyMessage }),
884
+ isServer && loading && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "flex items-center justify-center py-6", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_lucide_react4.Loader2, { className: "h-4 w-4 animate-spin text-muted-foreground" }) }),
885
+ isServer && hasMore && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { ref: sentinelRef, "aria-hidden": true, className: "h-1" })
878
886
  ]
879
887
  }
880
888
  )
@@ -882,9 +890,9 @@ function Combobox({
882
890
  }
883
891
  );
884
892
  if (isDesktop) {
885
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(PopoverPrimitive.Root, { open, onOpenChange: handleOpenChange, children: [
886
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(PopoverPrimitive.Trigger, { asChild: true, children: trigger }),
887
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(PopoverPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
893
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(PopoverPrimitive.Root, { open, onOpenChange: handleOpenChange, children: [
894
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(PopoverPrimitive.Trigger, { asChild: true, children: trigger }),
895
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(PopoverPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
888
896
  PopoverPrimitive.Content,
889
897
  {
890
898
  align: "start",
@@ -896,13 +904,13 @@ function Combobox({
896
904
  ) })
897
905
  ] });
898
906
  }
899
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_vaul.Drawer.Root, { open, onOpenChange: handleOpenChange, children: [
900
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_vaul.Drawer.Trigger, { asChild: true, children: trigger }),
901
- /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_vaul.Drawer.Portal, { children: [
902
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_vaul.Drawer.Overlay, { className: "fixed inset-0 z-50 bg-black/80" }),
903
- /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_vaul.Drawer.Content, { className: "fixed inset-x-0 bottom-0 z-50 mt-24 flex max-h-[85vh] flex-col rounded-t-2xl border bg-popover text-popover-foreground outline-none", children: [
904
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_vaul.Drawer.Title, { className: "sr-only", children: placeholder }),
905
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "mx-auto my-3 h-1.5 w-12 shrink-0 rounded-full bg-muted" }),
907
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_vaul.Drawer.Root, { open, onOpenChange: handleOpenChange, children: [
908
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_vaul.Drawer.Trigger, { asChild: true, children: trigger }),
909
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_vaul.Drawer.Portal, { children: [
910
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_vaul.Drawer.Overlay, { className: "fixed inset-0 z-50 bg-black/80" }),
911
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_vaul.Drawer.Content, { className: "fixed inset-x-0 bottom-0 z-50 mt-24 flex max-h-[85vh] flex-col rounded-t-2xl border bg-popover text-popover-foreground outline-none", children: [
912
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_vaul.Drawer.Title, { className: "sr-only", children: placeholder }),
913
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "mx-auto my-3 h-1.5 w-12 shrink-0 rounded-full bg-muted" }),
906
914
  command
907
915
  ] })
908
916
  ] })
@@ -915,7 +923,7 @@ var import_cmdk2 = require("cmdk");
915
923
  var import_lucide_react5 = require("lucide-react");
916
924
  var React7 = __toESM(require("react"), 1);
917
925
  var import_vaul2 = require("vaul");
918
- var import_jsx_runtime17 = require("react/jsx-runtime");
926
+ var import_jsx_runtime18 = require("react/jsx-runtime");
919
927
  function MultiCombobox({
920
928
  options,
921
929
  value,
@@ -956,7 +964,7 @@ function MultiCombobox({
956
964
  const removeValue = (optionValue) => {
957
965
  onChange(value.filter((v) => v !== optionValue));
958
966
  };
959
- const trigger = /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
967
+ const trigger = /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
960
968
  "div",
961
969
  {
962
970
  id,
@@ -978,13 +986,13 @@ function MultiCombobox({
978
986
  className
979
987
  ),
980
988
  children: [
981
- selected.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "text-muted-foreground", children: placeholder }) : selected.map((option) => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
989
+ selected.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "text-muted-foreground", children: placeholder }) : selected.map((option) => /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
982
990
  "span",
983
991
  {
984
992
  className: "inline-flex items-center gap-1 rounded bg-secondary px-1.5 py-0.5 text-xs text-secondary-foreground",
985
993
  children: [
986
994
  option.label,
987
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
995
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
988
996
  "button",
989
997
  {
990
998
  type: "button",
@@ -996,26 +1004,26 @@ function MultiCombobox({
996
1004
  },
997
1005
  onPointerDown: (event) => event.stopPropagation(),
998
1006
  className: "rounded-sm opacity-60 transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
999
- children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_lucide_react5.X, { className: "h-3 w-3" })
1007
+ children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react5.X, { className: "h-3 w-3" })
1000
1008
  }
1001
1009
  )
1002
1010
  ]
1003
1011
  },
1004
1012
  option.value
1005
1013
  )),
1006
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_lucide_react5.ChevronsUpDown, { className: "ml-auto h-4 w-4 shrink-0 opacity-50" })
1014
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react5.ChevronsUpDown, { className: "ml-auto h-4 w-4 shrink-0 opacity-50" })
1007
1015
  ]
1008
1016
  }
1009
1017
  );
1010
- const command = /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
1018
+ const command = /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
1011
1019
  import_cmdk2.Command,
1012
1020
  {
1013
1021
  shouldFilter: !isServer,
1014
1022
  className: "flex h-full w-full flex-col overflow-hidden",
1015
1023
  children: [
1016
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "flex items-center border-b px-3", children: [
1017
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_lucide_react5.Search, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }),
1018
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1024
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "flex items-center border-b px-3", children: [
1025
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react5.Search, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }),
1026
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1019
1027
  import_cmdk2.Command.Input,
1020
1028
  {
1021
1029
  placeholder: searchPlaceholder,
@@ -1024,14 +1032,14 @@ function MultiCombobox({
1024
1032
  }
1025
1033
  )
1026
1034
  ] }),
1027
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
1035
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
1028
1036
  import_cmdk2.Command.List,
1029
1037
  {
1030
1038
  ref: listRef,
1031
1039
  className: "max-h-[50vh] overflow-y-auto overflow-x-hidden p-1 sm:max-h-60",
1032
1040
  children: [
1033
- !isServer && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_cmdk2.Command.Empty, { className: "py-6 text-center text-sm text-muted-foreground", children: emptyMessage }),
1034
- options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
1041
+ !isServer && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_cmdk2.Command.Empty, { className: "py-6 text-center text-sm text-muted-foreground", children: emptyMessage }),
1042
+ options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
1035
1043
  import_cmdk2.Command.Item,
1036
1044
  {
1037
1045
  value: isServer ? option.value : option.label,
@@ -1039,7 +1047,7 @@ function MultiCombobox({
1039
1047
  onSelect: () => toggleValue(option.value),
1040
1048
  className: "relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-2.5 text-sm outline-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 sm:py-1.5",
1041
1049
  children: [
1042
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1050
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1043
1051
  import_lucide_react5.Check,
1044
1052
  {
1045
1053
  className: cn(
@@ -1048,14 +1056,14 @@ function MultiCombobox({
1048
1056
  )
1049
1057
  }
1050
1058
  ),
1051
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "truncate", children: option.label })
1059
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "truncate", children: option.label })
1052
1060
  ]
1053
1061
  },
1054
1062
  option.value
1055
1063
  )),
1056
- isServer && !loading && options.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "py-6 text-center text-sm text-muted-foreground", children: emptyMessage }),
1057
- isServer && loading && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "flex items-center justify-center py-6", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_lucide_react5.Loader2, { className: "h-4 w-4 animate-spin text-muted-foreground" }) }),
1058
- isServer && hasMore && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { ref: sentinelRef, "aria-hidden": true, className: "h-1" })
1064
+ isServer && !loading && options.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "py-6 text-center text-sm text-muted-foreground", children: emptyMessage }),
1065
+ isServer && loading && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "flex items-center justify-center py-6", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react5.Loader2, { className: "h-4 w-4 animate-spin text-muted-foreground" }) }),
1066
+ isServer && hasMore && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { ref: sentinelRef, "aria-hidden": true, className: "h-1" })
1059
1067
  ]
1060
1068
  }
1061
1069
  )
@@ -1063,9 +1071,9 @@ function MultiCombobox({
1063
1071
  }
1064
1072
  );
1065
1073
  if (isDesktop) {
1066
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(PopoverPrimitive2.Root, { open, onOpenChange: setOpen, children: [
1067
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(PopoverPrimitive2.Trigger, { asChild: true, disabled, children: trigger }),
1068
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(PopoverPrimitive2.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1074
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(PopoverPrimitive2.Root, { open, onOpenChange: setOpen, children: [
1075
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(PopoverPrimitive2.Trigger, { asChild: true, disabled, children: trigger }),
1076
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(PopoverPrimitive2.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1069
1077
  PopoverPrimitive2.Content,
1070
1078
  {
1071
1079
  align: "start",
@@ -1077,13 +1085,13 @@ function MultiCombobox({
1077
1085
  ) })
1078
1086
  ] });
1079
1087
  }
1080
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_vaul2.Drawer.Root, { open, onOpenChange: setOpen, children: [
1081
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_vaul2.Drawer.Trigger, { asChild: true, disabled, children: trigger }),
1082
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_vaul2.Drawer.Portal, { children: [
1083
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_vaul2.Drawer.Overlay, { className: "fixed inset-0 z-50 bg-black/80" }),
1084
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_vaul2.Drawer.Content, { className: "fixed inset-x-0 bottom-0 z-50 mt-24 flex max-h-[85vh] flex-col rounded-t-2xl border bg-popover text-popover-foreground outline-none", children: [
1085
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_vaul2.Drawer.Title, { className: "sr-only", children: placeholder }),
1086
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "mx-auto my-3 h-1.5 w-12 shrink-0 rounded-full bg-muted" }),
1088
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_vaul2.Drawer.Root, { open, onOpenChange: setOpen, children: [
1089
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_vaul2.Drawer.Trigger, { asChild: true, disabled, children: trigger }),
1090
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_vaul2.Drawer.Portal, { children: [
1091
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_vaul2.Drawer.Overlay, { className: "fixed inset-0 z-50 bg-black/80" }),
1092
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_vaul2.Drawer.Content, { className: "fixed inset-x-0 bottom-0 z-50 mt-24 flex max-h-[85vh] flex-col rounded-t-2xl border bg-popover text-popover-foreground outline-none", children: [
1093
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_vaul2.Drawer.Title, { className: "sr-only", children: placeholder }),
1094
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "mx-auto my-3 h-1.5 w-12 shrink-0 rounded-full bg-muted" }),
1087
1095
  command
1088
1096
  ] })
1089
1097
  ] })
@@ -1095,7 +1103,7 @@ var PopoverPrimitive3 = __toESM(require("@radix-ui/react-popover"), 1);
1095
1103
  var import_lucide_react6 = require("lucide-react");
1096
1104
  var React8 = __toESM(require("react"), 1);
1097
1105
  var import_react_colorful = require("react-colorful");
1098
- var import_jsx_runtime18 = require("react/jsx-runtime");
1106
+ var import_jsx_runtime19 = require("react/jsx-runtime");
1099
1107
  function ColorPicker({
1100
1108
  value,
1101
1109
  onChange,
@@ -1108,8 +1116,8 @@ function ColorPicker({
1108
1116
  }) {
1109
1117
  const [open, setOpen] = React8.useState(false);
1110
1118
  const color = value || "";
1111
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(PopoverPrimitive3.Root, { open, onOpenChange: setOpen, children: [
1112
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(PopoverPrimitive3.Trigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
1119
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(PopoverPrimitive3.Root, { open, onOpenChange: setOpen, children: [
1120
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(PopoverPrimitive3.Trigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
1113
1121
  "button",
1114
1122
  {
1115
1123
  type: "button",
@@ -1122,8 +1130,8 @@ function ColorPicker({
1122
1130
  className
1123
1131
  ),
1124
1132
  children: [
1125
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("span", { className: "flex items-center gap-2 truncate", children: [
1126
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1133
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("span", { className: "flex items-center gap-2 truncate", children: [
1134
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1127
1135
  "span",
1128
1136
  {
1129
1137
  "aria-hidden": true,
@@ -1136,23 +1144,23 @@ function ColorPicker({
1136
1144
  }
1137
1145
  }
1138
1146
  ),
1139
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: cn("truncate", !color && "text-muted-foreground"), children: color || placeholder })
1147
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: cn("truncate", !color && "text-muted-foreground"), children: color || placeholder })
1140
1148
  ] }),
1141
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react6.ChevronsUpDown, { className: "h-4 w-4 shrink-0 opacity-50" })
1149
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react6.ChevronsUpDown, { className: "h-4 w-4 shrink-0 opacity-50" })
1142
1150
  ]
1143
1151
  }
1144
1152
  ) }),
1145
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(PopoverPrimitive3.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1153
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(PopoverPrimitive3.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1146
1154
  PopoverPrimitive3.Content,
1147
1155
  {
1148
1156
  align: "start",
1149
1157
  sideOffset: 4,
1150
1158
  className: "z-50 w-56 rounded-md border bg-popover p-3 text-popover-foreground shadow-md",
1151
- children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "mh-color-picker flex flex-col gap-3", children: [
1152
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_react_colorful.HexColorPicker, { color, onChange }),
1153
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "flex items-center gap-2", children: [
1154
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "text-sm text-muted-foreground", children: "#" }),
1155
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1159
+ children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "mh-color-picker flex flex-col gap-3", children: [
1160
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_react_colorful.HexColorPicker, { color, onChange }),
1161
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex items-center gap-2", children: [
1162
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "text-sm text-muted-foreground", children: "#" }),
1163
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1156
1164
  import_react_colorful.HexColorInput,
1157
1165
  {
1158
1166
  color,
@@ -1169,30 +1177,30 @@ function ColorPicker({
1169
1177
  }
1170
1178
 
1171
1179
  // src/components/stat-card.tsx
1172
- var import_jsx_runtime19 = require("react/jsx-runtime");
1180
+ var import_jsx_runtime20 = require("react/jsx-runtime");
1173
1181
  function StatCard({ label, value, detail, icon, isLoading }) {
1174
1182
  if (isLoading) {
1175
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "rounded-lg border bg-card p-6 shadow-sm", children: [
1176
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex items-center justify-between pb-2", children: [
1177
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "h-4 w-24 animate-pulse rounded bg-muted" }),
1178
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "h-4 w-4 animate-pulse rounded bg-muted" })
1183
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "rounded-lg border bg-card p-6 shadow-sm", children: [
1184
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "flex items-center justify-between pb-2", children: [
1185
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "h-4 w-24 animate-pulse rounded bg-muted" }),
1186
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "h-4 w-4 animate-pulse rounded bg-muted" })
1179
1187
  ] }),
1180
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "mt-2 h-7 w-16 animate-pulse rounded bg-muted" }),
1181
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "mt-1 h-4 w-20 animate-pulse rounded bg-muted" })
1188
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "mt-2 h-7 w-16 animate-pulse rounded bg-muted" }),
1189
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "mt-1 h-4 w-20 animate-pulse rounded bg-muted" })
1182
1190
  ] });
1183
1191
  }
1184
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "rounded-lg border bg-card p-6 shadow-sm", children: [
1185
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex items-center justify-between pb-2", children: [
1186
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "text-sm font-medium text-muted-foreground", children: label }),
1187
- icon && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "text-muted-foreground", children: icon })
1192
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "rounded-lg border bg-card p-6 shadow-sm", children: [
1193
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "flex items-center justify-between pb-2", children: [
1194
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "text-sm font-medium text-muted-foreground", children: label }),
1195
+ icon && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "text-muted-foreground", children: icon })
1188
1196
  ] }),
1189
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "text-2xl font-bold", children: value }),
1190
- detail && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { className: "text-xs text-muted-foreground", children: detail })
1197
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "text-2xl font-bold", children: value }),
1198
+ detail && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("p", { className: "text-xs text-muted-foreground", children: detail })
1191
1199
  ] });
1192
1200
  }
1193
1201
 
1194
1202
  // src/components/data-table-wrapper.tsx
1195
- var import_jsx_runtime20 = require("react/jsx-runtime");
1203
+ var import_jsx_runtime21 = require("react/jsx-runtime");
1196
1204
  function DataTableWrapper({
1197
1205
  children,
1198
1206
  isEmpty,
@@ -1205,15 +1213,15 @@ function DataTableWrapper({
1205
1213
  hasNextPage = false,
1206
1214
  hasPreviousPage = false
1207
1215
  }) {
1208
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "space-y-4", children: [
1209
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "overflow-x-auto rounded-md border", children }),
1210
- !isLoading && isEmpty && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "flex flex-col items-center justify-center py-16 text-center", children: [
1211
- emptyIcon && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "mb-4 text-muted-foreground", children: emptyIcon }),
1212
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("h3", { className: "text-lg font-semibold tracking-tight", children: emptyTitle }),
1213
- emptyDescription && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("p", { className: "mt-1 max-w-sm text-sm text-muted-foreground", children: emptyDescription })
1216
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "space-y-4", children: [
1217
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "overflow-x-auto rounded-md border", children }),
1218
+ !isLoading && isEmpty && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "flex flex-col items-center justify-center py-16 text-center", children: [
1219
+ emptyIcon && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "mb-4 text-muted-foreground", children: emptyIcon }),
1220
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("h3", { className: "text-lg font-semibold tracking-tight", children: emptyTitle }),
1221
+ emptyDescription && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("p", { className: "mt-1 max-w-sm text-sm text-muted-foreground", children: emptyDescription })
1214
1222
  ] }),
1215
- page !== void 0 && onPageChange && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "flex items-center justify-end gap-4", children: [
1216
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1223
+ page !== void 0 && onPageChange && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "flex items-center justify-end gap-4", children: [
1224
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1217
1225
  "button",
1218
1226
  {
1219
1227
  type: "button",
@@ -1223,11 +1231,11 @@ function DataTableWrapper({
1223
1231
  children: "Anterior"
1224
1232
  }
1225
1233
  ),
1226
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("span", { className: "text-sm text-muted-foreground", children: [
1234
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("span", { className: "text-sm text-muted-foreground", children: [
1227
1235
  "P\xE1gina ",
1228
1236
  page
1229
1237
  ] }),
1230
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1238
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1231
1239
  "button",
1232
1240
  {
1233
1241
  type: "button",
@@ -1243,7 +1251,7 @@ function DataTableWrapper({
1243
1251
 
1244
1252
  // src/components/mobile-card-list.tsx
1245
1253
  var import_react4 = require("react");
1246
- var import_jsx_runtime21 = require("react/jsx-runtime");
1254
+ var import_jsx_runtime22 = require("react/jsx-runtime");
1247
1255
  var SCROLL_THRESHOLD = 8;
1248
1256
  function MobileCardList({
1249
1257
  data,
@@ -1274,26 +1282,26 @@ function MobileCardList({
1274
1282
  }
1275
1283
  };
1276
1284
  if (isLoading) {
1277
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: `space-y-3 ${className ?? ""}`, children: Array.from({ length: loadingCount }).map((_, i) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "rounded-xl border p-4", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "space-y-3", children: [
1278
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "flex justify-between", children: [
1279
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "h-5 w-32 animate-pulse rounded bg-muted" }),
1280
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "h-5 w-16 animate-pulse rounded bg-muted" })
1285
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: `space-y-3 ${className ?? ""}`, children: Array.from({ length: loadingCount }).map((_, i) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "rounded-xl border p-4", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "space-y-3", children: [
1286
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "flex justify-between", children: [
1287
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "h-5 w-32 animate-pulse rounded bg-muted" }),
1288
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "h-5 w-16 animate-pulse rounded bg-muted" })
1281
1289
  ] }),
1282
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "h-4 w-48 animate-pulse rounded bg-muted" }),
1283
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "flex justify-between", children: [
1284
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "h-4 w-24 animate-pulse rounded bg-muted" }),
1285
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "h-4 w-20 animate-pulse rounded bg-muted" })
1290
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "h-4 w-48 animate-pulse rounded bg-muted" }),
1291
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "flex justify-between", children: [
1292
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "h-4 w-24 animate-pulse rounded bg-muted" }),
1293
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "h-4 w-20 animate-pulse rounded bg-muted" })
1286
1294
  ] })
1287
1295
  ] }) }, i)) });
1288
1296
  }
1289
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1297
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1290
1298
  "div",
1291
1299
  {
1292
1300
  className: `space-y-3 ${className ?? ""}`,
1293
1301
  onTouchStart,
1294
1302
  onTouchMove,
1295
1303
  onClickCapture,
1296
- children: data.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1304
+ children: data.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1297
1305
  "div",
1298
1306
  {
1299
1307
  className: "rounded-xl border p-4 transition-all duration-150 hover:border-foreground/20 active:scale-[0.99]",
@@ -1306,7 +1314,7 @@ function MobileCardList({
1306
1314
  }
1307
1315
 
1308
1316
  // src/components/responsive-data-view.tsx
1309
- var import_jsx_runtime22 = require("react/jsx-runtime");
1317
+ var import_jsx_runtime23 = require("react/jsx-runtime");
1310
1318
  function ResponsiveDataView({
1311
1319
  table,
1312
1320
  cards,
@@ -1317,13 +1325,13 @@ function ResponsiveDataView({
1317
1325
  emptyDescription,
1318
1326
  pagination
1319
1327
  }) {
1320
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "space-y-4", children: [
1321
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "hidden overflow-x-auto rounded-md border md:block", children: table }),
1322
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "md:hidden", children: cards }),
1323
- !isLoading && isEmpty && /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "flex flex-col items-center justify-center py-16 text-center", children: [
1324
- emptyIcon && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "mb-4 text-muted-foreground", children: emptyIcon }),
1325
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("h3", { className: "text-lg font-semibold tracking-tight", children: emptyTitle }),
1326
- emptyDescription && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("p", { className: "mt-1 max-w-sm text-sm text-muted-foreground", children: emptyDescription })
1328
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "space-y-4", children: [
1329
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "hidden overflow-x-auto rounded-md border md:block", children: table }),
1330
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "md:hidden", children: cards }),
1331
+ !isLoading && isEmpty && /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "flex flex-col items-center justify-center py-16 text-center", children: [
1332
+ emptyIcon && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "mb-4 text-muted-foreground", children: emptyIcon }),
1333
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("h3", { className: "text-lg font-semibold tracking-tight", children: emptyTitle }),
1334
+ emptyDescription && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("p", { className: "mt-1 max-w-sm text-sm text-muted-foreground", children: emptyDescription })
1327
1335
  ] }),
1328
1336
  pagination
1329
1337
  ] });
@@ -1331,10 +1339,10 @@ function ResponsiveDataView({
1331
1339
 
1332
1340
  // src/components/toaster.tsx
1333
1341
  var import_sonner = require("sonner");
1334
- var import_jsx_runtime23 = require("react/jsx-runtime");
1342
+ var import_jsx_runtime24 = require("react/jsx-runtime");
1335
1343
  function Toaster(props) {
1336
1344
  const { theme = "system" } = useTheme();
1337
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1345
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
1338
1346
  import_sonner.Toaster,
1339
1347
  {
1340
1348
  theme,
@@ -1362,11 +1370,11 @@ var import_react7 = require("react");
1362
1370
  var import_react5 = require("react");
1363
1371
 
1364
1372
  // src/components/types.tsx
1365
- var import_jsx_runtime24 = require("react/jsx-runtime");
1366
- var defaultRenderLink = ({ children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("a", { ...props, children });
1373
+ var import_jsx_runtime25 = require("react/jsx-runtime");
1374
+ var defaultRenderLink = ({ children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("a", { ...props, children });
1367
1375
 
1368
1376
  // src/components/sidebar-nav.tsx
1369
- var import_jsx_runtime25 = require("react/jsx-runtime");
1377
+ var import_jsx_runtime26 = require("react/jsx-runtime");
1370
1378
  function defaultIsActive(item, activePath) {
1371
1379
  if (item.href === "/") return activePath === "/";
1372
1380
  return activePath === item.href || activePath.startsWith(item.href + "/");
@@ -1381,7 +1389,7 @@ function SidebarNav({
1381
1389
  onNavigate
1382
1390
  }) {
1383
1391
  const visible = items.filter((item) => !item.adminOnly || isAdmin);
1384
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("nav", { className: "flex flex-col gap-1", children: visible.map((item) => {
1392
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("nav", { className: "flex flex-col gap-1", children: visible.map((item) => {
1385
1393
  const active = isActive(item, activePath);
1386
1394
  const link = renderLink({
1387
1395
  href: item.href,
@@ -1393,12 +1401,12 @@ function SidebarNav({
1393
1401
  active ? "bg-accent text-accent-foreground font-semibold" : "text-muted-foreground hover:bg-accent hover:text-accent-foreground",
1394
1402
  isCollapsed && "justify-center px-2"
1395
1403
  ),
1396
- children: /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_jsx_runtime25.Fragment, { children: [
1397
- item.icon && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "shrink-0", children: item.icon }),
1398
- !isCollapsed && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "truncate", children: item.label })
1404
+ children: /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_jsx_runtime26.Fragment, { children: [
1405
+ item.icon && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: "shrink-0", children: item.icon }),
1406
+ !isCollapsed && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: "truncate", children: item.label })
1399
1407
  ] })
1400
1408
  });
1401
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_react5.Fragment, { children: link }, item.href);
1409
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_react5.Fragment, { children: link }, item.href);
1402
1410
  }) });
1403
1411
  }
1404
1412
 
@@ -1407,7 +1415,7 @@ var DropdownMenu2 = __toESM(require("@radix-ui/react-dropdown-menu"), 1);
1407
1415
  var import_lucide_react7 = require("lucide-react");
1408
1416
  var import_react6 = require("react");
1409
1417
  var import_vaul3 = require("vaul");
1410
- var import_jsx_runtime26 = require("react/jsx-runtime");
1418
+ var import_jsx_runtime27 = require("react/jsx-runtime");
1411
1419
  function initials(user) {
1412
1420
  const source = user?.name?.trim() || user?.email?.trim();
1413
1421
  if (!source) return "";
@@ -1428,50 +1436,50 @@ function UserMenu({
1428
1436
  const isDesktop = useIsDesktop();
1429
1437
  const [open, setOpen] = (0, import_react6.useState)(false);
1430
1438
  const label = initials(user);
1431
- const trigger = /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
1439
+ const trigger = /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
1432
1440
  "button",
1433
1441
  {
1434
1442
  type: "button",
1435
1443
  className: "inline-flex h-9 w-9 items-center justify-center overflow-hidden rounded-full border border-input bg-background text-xs font-semibold shadow-sm transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
1436
1444
  "aria-label": "Menu do usu\xE1rio",
1437
1445
  "data-testid": "user-menu",
1438
- children: user?.avatarUrl ? /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
1446
+ children: user?.avatarUrl ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
1439
1447
  "img",
1440
1448
  {
1441
1449
  src: user.avatarUrl,
1442
1450
  alt: user.name ?? user.email ?? "Avatar",
1443
1451
  className: "h-full w-full object-cover"
1444
1452
  }
1445
- ) : label ? /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { children: label }) : /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_lucide_react7.User, { className: "h-4 w-4" })
1453
+ ) : label ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { children: label }) : /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react7.User, { className: "h-4 w-4" })
1446
1454
  }
1447
1455
  );
1448
- const userInfo = (user?.name || user?.email) && /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "px-2 py-1.5", children: [
1449
- user.name && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("p", { className: "truncate text-sm font-medium", children: user.name }),
1450
- user.email && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("p", { className: "truncate text-xs text-muted-foreground", children: user.email })
1456
+ const userInfo = (user?.name || user?.email) && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "px-2 py-1.5", children: [
1457
+ user.name && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("p", { className: "truncate text-sm font-medium", children: user.name }),
1458
+ user.email && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("p", { className: "truncate text-xs text-muted-foreground", children: user.email })
1451
1459
  ] });
1452
1460
  if (isDesktop) {
1453
- return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(DropdownMenu2.Root, { open, onOpenChange: setOpen, children: [
1454
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(DropdownMenu2.Trigger, { asChild: true, children: trigger }),
1455
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(DropdownMenu2.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
1461
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(DropdownMenu2.Root, { open, onOpenChange: setOpen, children: [
1462
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(DropdownMenu2.Trigger, { asChild: true, children: trigger }),
1463
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(DropdownMenu2.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
1456
1464
  DropdownMenu2.Content,
1457
1465
  {
1458
1466
  align,
1459
1467
  sideOffset: 6,
1460
1468
  className: "z-50 min-w-[12rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95",
1461
1469
  children: [
1462
- userInfo && /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_jsx_runtime26.Fragment, { children: [
1470
+ userInfo && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_jsx_runtime27.Fragment, { children: [
1463
1471
  userInfo,
1464
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(DropdownMenu2.Separator, { className: "-mx-1 my-1 h-px bg-border" })
1472
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(DropdownMenu2.Separator, { className: "-mx-1 my-1 h-px bg-border" })
1465
1473
  ] }),
1466
1474
  items.map(
1467
- (item) => item.href ? /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(DropdownMenu2.Item, { asChild: true, children: renderLink({
1475
+ (item) => item.href ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(DropdownMenu2.Item, { asChild: true, children: renderLink({
1468
1476
  href: item.href,
1469
1477
  className: itemClass,
1470
- children: /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_jsx_runtime26.Fragment, { children: [
1478
+ children: /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_jsx_runtime27.Fragment, { children: [
1471
1479
  item.icon,
1472
1480
  item.label
1473
1481
  ] })
1474
- }) }, item.label) : /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
1482
+ }) }, item.label) : /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
1475
1483
  DropdownMenu2.Item,
1476
1484
  {
1477
1485
  className: itemClass,
@@ -1484,9 +1492,9 @@ function UserMenu({
1484
1492
  item.label
1485
1493
  )
1486
1494
  ),
1487
- onLogout && /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_jsx_runtime26.Fragment, { children: [
1488
- items.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(DropdownMenu2.Separator, { className: "-mx-1 my-1 h-px bg-border" }),
1489
- /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
1495
+ onLogout && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_jsx_runtime27.Fragment, { children: [
1496
+ items.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(DropdownMenu2.Separator, { className: "-mx-1 my-1 h-px bg-border" }),
1497
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
1490
1498
  DropdownMenu2.Item,
1491
1499
  {
1492
1500
  className: cn(
@@ -1495,7 +1503,7 @@ function UserMenu({
1495
1503
  ),
1496
1504
  onClick: onLogout,
1497
1505
  children: [
1498
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_lucide_react7.LogOut, { className: "h-4 w-4" }),
1506
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react7.LogOut, { className: "h-4 w-4" }),
1499
1507
  logoutLabel
1500
1508
  ]
1501
1509
  }
@@ -1506,19 +1514,19 @@ function UserMenu({
1506
1514
  ) })
1507
1515
  ] });
1508
1516
  }
1509
- return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_vaul3.Drawer.Root, { open, onOpenChange: setOpen, children: [
1510
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_vaul3.Drawer.Trigger, { asChild: true, children: trigger }),
1511
- /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_vaul3.Drawer.Portal, { children: [
1512
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_vaul3.Drawer.Overlay, { className: "fixed inset-0 z-50 bg-black/80" }),
1513
- /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_vaul3.Drawer.Content, { className: "fixed inset-x-0 bottom-0 z-50 flex flex-col rounded-t-2xl border bg-popover p-2 pb-[max(0.5rem,env(safe-area-inset-bottom))] text-popover-foreground outline-none", children: [
1514
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_vaul3.Drawer.Title, { className: "sr-only", children: "Menu do usu\xE1rio" }),
1515
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "mx-auto my-3 h-1.5 w-12 shrink-0 rounded-full bg-muted" }),
1516
- userInfo && /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_jsx_runtime26.Fragment, { children: [
1517
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_vaul3.Drawer.Root, { open, onOpenChange: setOpen, children: [
1518
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_vaul3.Drawer.Trigger, { asChild: true, children: trigger }),
1519
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_vaul3.Drawer.Portal, { children: [
1520
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_vaul3.Drawer.Overlay, { className: "fixed inset-0 z-50 bg-black/80" }),
1521
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_vaul3.Drawer.Content, { className: "fixed inset-x-0 bottom-0 z-50 flex flex-col rounded-t-2xl border bg-popover p-2 pb-[max(0.5rem,env(safe-area-inset-bottom))] text-popover-foreground outline-none", children: [
1522
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_vaul3.Drawer.Title, { className: "sr-only", children: "Menu do usu\xE1rio" }),
1523
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "mx-auto my-3 h-1.5 w-12 shrink-0 rounded-full bg-muted" }),
1524
+ userInfo && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_jsx_runtime27.Fragment, { children: [
1517
1525
  userInfo,
1518
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "-mx-1 my-1 h-px bg-border" })
1526
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "-mx-1 my-1 h-px bg-border" })
1519
1527
  ] }),
1520
1528
  items.map(
1521
- (item) => item.href ? /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
1529
+ (item) => item.href ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
1522
1530
  "span",
1523
1531
  {
1524
1532
  onClick: () => setOpen(false),
@@ -1526,14 +1534,14 @@ function UserMenu({
1526
1534
  children: renderLink({
1527
1535
  href: item.href,
1528
1536
  className: sheetItemClass,
1529
- children: /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_jsx_runtime26.Fragment, { children: [
1537
+ children: /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_jsx_runtime27.Fragment, { children: [
1530
1538
  item.icon,
1531
1539
  item.label
1532
1540
  ] })
1533
1541
  })
1534
1542
  },
1535
1543
  item.label
1536
- ) : /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
1544
+ ) : /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
1537
1545
  "button",
1538
1546
  {
1539
1547
  type: "button",
@@ -1550,9 +1558,9 @@ function UserMenu({
1550
1558
  item.label
1551
1559
  )
1552
1560
  ),
1553
- onLogout && /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_jsx_runtime26.Fragment, { children: [
1554
- items.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "-mx-1 my-1 h-px bg-border" }),
1555
- /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
1561
+ onLogout && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_jsx_runtime27.Fragment, { children: [
1562
+ items.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "-mx-1 my-1 h-px bg-border" }),
1563
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
1556
1564
  "button",
1557
1565
  {
1558
1566
  type: "button",
@@ -1562,7 +1570,7 @@ function UserMenu({
1562
1570
  setOpen(false);
1563
1571
  },
1564
1572
  children: [
1565
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_lucide_react7.LogOut, { className: "h-4 w-4" }),
1573
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react7.LogOut, { className: "h-4 w-4" }),
1566
1574
  logoutLabel
1567
1575
  ]
1568
1576
  }
@@ -1574,7 +1582,7 @@ function UserMenu({
1574
1582
  }
1575
1583
 
1576
1584
  // src/components/app-shell.tsx
1577
- var import_jsx_runtime27 = require("react/jsx-runtime");
1585
+ var import_jsx_runtime28 = require("react/jsx-runtime");
1578
1586
  function AppShell({
1579
1587
  brand,
1580
1588
  brandCollapsed,
@@ -1593,7 +1601,7 @@ function AppShell({
1593
1601
  }) {
1594
1602
  const [collapsed, setCollapsed] = (0, import_react7.useState)(defaultCollapsed);
1595
1603
  const [mobileOpen, setMobileOpen] = (0, import_react7.useState)(false);
1596
- const nav = (isCollapsed, onNavigate) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
1604
+ const nav = (isCollapsed, onNavigate) => /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
1597
1605
  SidebarNav,
1598
1606
  {
1599
1607
  items: navItems,
@@ -1605,8 +1613,8 @@ function AppShell({
1605
1613
  onNavigate
1606
1614
  }
1607
1615
  );
1608
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "flex h-screen overflow-hidden bg-background", children: [
1609
- /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
1616
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex h-screen overflow-hidden bg-background", children: [
1617
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
1610
1618
  "aside",
1611
1619
  {
1612
1620
  className: cn(
@@ -1614,22 +1622,22 @@ function AppShell({
1614
1622
  collapsed ? "w-16" : "w-60"
1615
1623
  ),
1616
1624
  children: [
1617
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "flex h-14 shrink-0 items-center border-b px-4", children: collapsed ? brandCollapsed ?? brand : brand }),
1618
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "flex-1 overflow-y-auto px-2 py-4", children: nav(collapsed) }),
1619
- collapsible && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "border-t p-2", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
1625
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "flex h-14 shrink-0 items-center border-b px-4", children: collapsed ? brandCollapsed ?? brand : brand }),
1626
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "flex-1 overflow-y-auto px-2 py-4", children: nav(collapsed) }),
1627
+ collapsible && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "border-t p-2", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
1620
1628
  "button",
1621
1629
  {
1622
1630
  type: "button",
1623
1631
  onClick: () => setCollapsed((v) => !v),
1624
1632
  className: "flex w-full items-center justify-center rounded-md px-2 py-2 text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground",
1625
1633
  "aria-label": collapsed ? "Expandir menu" : "Recolher menu",
1626
- children: collapsed ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react8.ChevronRight, { className: "h-4 w-4" }) : /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react8.ChevronLeft, { className: "h-4 w-4" })
1634
+ children: collapsed ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react8.ChevronRight, { className: "h-4 w-4" }) : /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react8.ChevronLeft, { className: "h-4 w-4" })
1627
1635
  }
1628
1636
  ) })
1629
1637
  ]
1630
1638
  }
1631
1639
  ),
1632
- /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
1640
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
1633
1641
  "div",
1634
1642
  {
1635
1643
  className: cn(
@@ -1638,8 +1646,8 @@ function AppShell({
1638
1646
  ),
1639
1647
  onClick: () => setMobileOpen(false),
1640
1648
  children: [
1641
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "absolute inset-0 bg-black/50" }),
1642
- /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
1649
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "absolute inset-0 bg-black/50" }),
1650
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
1643
1651
  "div",
1644
1652
  {
1645
1653
  className: cn(
@@ -1648,32 +1656,32 @@ function AppShell({
1648
1656
  ),
1649
1657
  onClick: (e) => e.stopPropagation(),
1650
1658
  children: [
1651
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "flex h-14 shrink-0 items-center border-b px-4", children: brand }),
1652
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "flex-1 overflow-y-auto px-2 py-4", children: nav(false, () => setMobileOpen(false)) })
1659
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "flex h-14 shrink-0 items-center border-b px-4", children: brand }),
1660
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "flex-1 overflow-y-auto px-2 py-4", children: nav(false, () => setMobileOpen(false)) })
1653
1661
  ]
1654
1662
  }
1655
1663
  )
1656
1664
  ]
1657
1665
  }
1658
1666
  ),
1659
- /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "flex flex-1 flex-col overflow-hidden", children: [
1660
- /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("header", { className: "flex h-14 shrink-0 items-center gap-2 border-b bg-background px-4", children: [
1661
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
1667
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex flex-1 flex-col overflow-hidden", children: [
1668
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("header", { className: "flex h-14 shrink-0 items-center gap-2 border-b bg-background px-4", children: [
1669
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
1662
1670
  "button",
1663
1671
  {
1664
1672
  type: "button",
1665
1673
  onClick: () => setMobileOpen(true),
1666
1674
  className: "inline-flex h-9 w-9 items-center justify-center rounded-md border border-input bg-background shadow-sm transition-colors hover:bg-accent hover:text-accent-foreground md:hidden",
1667
1675
  "aria-label": "Abrir menu",
1668
- children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react8.Menu, { className: "h-4 w-4" })
1676
+ children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react8.Menu, { className: "h-4 w-4" })
1669
1677
  }
1670
1678
  ),
1671
- /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "ml-auto flex items-center gap-2", children: [
1679
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "ml-auto flex items-center gap-2", children: [
1672
1680
  headerActions,
1673
- (user || onLogout) && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(UserMenu, { user, items: userMenuItems, onLogout, renderLink })
1681
+ (user || onLogout) && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(UserMenu, { user, items: userMenuItems, onLogout, renderLink })
1674
1682
  ] })
1675
1683
  ] }),
1676
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("main", { className: "flex-1 overflow-y-auto", children })
1684
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("main", { className: "flex-1 overflow-y-auto", children })
1677
1685
  ] })
1678
1686
  ] });
1679
1687
  }
@@ -1683,7 +1691,7 @@ var DropdownMenu3 = __toESM(require("@radix-ui/react-dropdown-menu"), 1);
1683
1691
  var import_lucide_react9 = require("lucide-react");
1684
1692
  var import_react8 = require("react");
1685
1693
  var import_vaul4 = require("vaul");
1686
- var import_jsx_runtime28 = require("react/jsx-runtime");
1694
+ var import_jsx_runtime29 = require("react/jsx-runtime");
1687
1695
  var triggerClass = "inline-flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50";
1688
1696
  var itemClass2 = "flex w-full cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-accent focus:bg-accent data-[disabled]:pointer-events-none data-[disabled]:opacity-50";
1689
1697
  var sheetItemClass2 = "flex w-full cursor-pointer select-none items-center gap-3 rounded-md px-3 py-3 text-base outline-none transition-colors hover:bg-accent active:bg-accent disabled:pointer-events-none disabled:opacity-50";
@@ -1697,20 +1705,20 @@ function RowActionsMenu({
1697
1705
  const isDesktop = useIsDesktop();
1698
1706
  const [open, setOpen] = (0, import_react8.useState)(false);
1699
1707
  if (actions.length === 0) return null;
1700
- const trigger = /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
1708
+ const trigger = /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
1701
1709
  "button",
1702
1710
  {
1703
1711
  type: "button",
1704
1712
  disabled,
1705
1713
  "aria-label": label,
1706
1714
  className: triggerClass,
1707
- children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react9.MoreVertical, { className: "h-4 w-4" })
1715
+ children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_lucide_react9.MoreVertical, { className: "h-4 w-4" })
1708
1716
  }
1709
1717
  );
1710
1718
  if (isDesktop) {
1711
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(DropdownMenu3.Root, { open, onOpenChange: setOpen, modal: false, children: [
1712
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(DropdownMenu3.Trigger, { asChild: true, children: trigger }),
1713
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(DropdownMenu3.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
1719
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(DropdownMenu3.Root, { open, onOpenChange: setOpen, modal: false, children: [
1720
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(DropdownMenu3.Trigger, { asChild: true, children: trigger }),
1721
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(DropdownMenu3.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
1714
1722
  DropdownMenu3.Content,
1715
1723
  {
1716
1724
  align,
@@ -1721,7 +1729,7 @@ function RowActionsMenu({
1721
1729
  itemClass2,
1722
1730
  action.destructive && "text-destructive focus:bg-destructive/10"
1723
1731
  );
1724
- return action.href ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
1732
+ return action.href ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
1725
1733
  DropdownMenu3.Item,
1726
1734
  {
1727
1735
  asChild: true,
@@ -1729,14 +1737,14 @@ function RowActionsMenu({
1729
1737
  children: renderLink({
1730
1738
  href: action.href,
1731
1739
  className: cls,
1732
- children: /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(import_jsx_runtime28.Fragment, { children: [
1740
+ children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_jsx_runtime29.Fragment, { children: [
1733
1741
  action.icon,
1734
1742
  action.label
1735
1743
  ] })
1736
1744
  })
1737
1745
  },
1738
1746
  action.label
1739
- ) : /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
1747
+ ) : /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
1740
1748
  DropdownMenu3.Item,
1741
1749
  {
1742
1750
  className: cls,
@@ -1754,23 +1762,23 @@ function RowActionsMenu({
1754
1762
  ) })
1755
1763
  ] });
1756
1764
  }
1757
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(import_vaul4.Drawer.Root, { open, onOpenChange: setOpen, children: [
1758
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_vaul4.Drawer.Trigger, { asChild: true, children: trigger }),
1759
- /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(import_vaul4.Drawer.Portal, { children: [
1760
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_vaul4.Drawer.Overlay, { className: "fixed inset-0 z-50 bg-black/80" }),
1761
- /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(import_vaul4.Drawer.Content, { className: "fixed inset-x-0 bottom-0 z-50 flex flex-col rounded-t-2xl border bg-popover p-2 pb-[max(0.5rem,env(safe-area-inset-bottom))] text-popover-foreground outline-none", children: [
1762
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_vaul4.Drawer.Title, { className: "sr-only", children: label }),
1763
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "mx-auto my-3 h-1.5 w-12 shrink-0 rounded-full bg-muted" }),
1765
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_vaul4.Drawer.Root, { open, onOpenChange: setOpen, children: [
1766
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_vaul4.Drawer.Trigger, { asChild: true, children: trigger }),
1767
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_vaul4.Drawer.Portal, { children: [
1768
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_vaul4.Drawer.Overlay, { className: "fixed inset-0 z-50 bg-black/80" }),
1769
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_vaul4.Drawer.Content, { className: "fixed inset-x-0 bottom-0 z-50 flex flex-col rounded-t-2xl border bg-popover p-2 pb-[max(0.5rem,env(safe-area-inset-bottom))] text-popover-foreground outline-none", children: [
1770
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_vaul4.Drawer.Title, { className: "sr-only", children: label }),
1771
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "mx-auto my-3 h-1.5 w-12 shrink-0 rounded-full bg-muted" }),
1764
1772
  actions.map((action) => {
1765
1773
  const cls = cn(
1766
1774
  sheetItemClass2,
1767
1775
  action.destructive && "text-destructive"
1768
1776
  );
1769
- const inner = /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(import_jsx_runtime28.Fragment, { children: [
1777
+ const inner = /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_jsx_runtime29.Fragment, { children: [
1770
1778
  action.icon,
1771
1779
  action.label
1772
1780
  ] });
1773
- return action.href ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
1781
+ return action.href ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
1774
1782
  "span",
1775
1783
  {
1776
1784
  onClick: () => setOpen(false),
@@ -1782,7 +1790,7 @@ function RowActionsMenu({
1782
1790
  })
1783
1791
  },
1784
1792
  action.label
1785
- ) : /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
1793
+ ) : /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
1786
1794
  "button",
1787
1795
  {
1788
1796
  type: "button",
@@ -1850,6 +1858,7 @@ function useCustomToast() {
1850
1858
  0 && (module.exports = {
1851
1859
  AppShell,
1852
1860
  AuthCard,
1861
+ BaseDialog,
1853
1862
  ColorPicker,
1854
1863
  Combobox,
1855
1864
  ConfirmDialog,