@motor-hero/ui-kit 0.36.2 → 0.37.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.js CHANGED
@@ -575,6 +575,88 @@ function ColorPicker({
575
575
  ] });
576
576
  }
577
577
 
578
+ // src/components/rating.tsx
579
+ import * as ToggleGroup from "@radix-ui/react-toggle-group";
580
+ import { Star } from "lucide-react";
581
+ import { jsx as jsx8 } from "react/jsx-runtime";
582
+ var MAX_STARS = 5;
583
+ var sizeClasses2 = {
584
+ sm: "h-4 w-4",
585
+ md: "h-5 w-5",
586
+ lg: "h-6 w-6"
587
+ };
588
+ function defaultLabel(value) {
589
+ return value > 0 ? `Avalia\xE7\xE3o: ${value} de ${MAX_STARS} estrelas` : "Avalia\xE7\xE3o: sem nota";
590
+ }
591
+ function Rating({
592
+ value = 0,
593
+ onChange,
594
+ readOnly = false,
595
+ size = "md",
596
+ className,
597
+ "aria-label": ariaLabel
598
+ }) {
599
+ const clamped = Math.min(MAX_STARS, Math.max(0, value));
600
+ const label = ariaLabel ?? defaultLabel(clamped);
601
+ if (readOnly) {
602
+ return /* @__PURE__ */ jsx8(
603
+ "div",
604
+ {
605
+ role: "img",
606
+ "aria-label": label,
607
+ className: cn("inline-flex items-center gap-0.5", className),
608
+ children: Array.from({ length: MAX_STARS }, (_, index) => /* @__PURE__ */ jsx8(
609
+ Star,
610
+ {
611
+ "aria-hidden": true,
612
+ className: cn(
613
+ sizeClasses2[size],
614
+ index < clamped ? "fill-amber-400 text-amber-400" : "text-muted-foreground"
615
+ )
616
+ },
617
+ index
618
+ ))
619
+ }
620
+ );
621
+ }
622
+ return /* @__PURE__ */ jsx8(
623
+ ToggleGroup.Root,
624
+ {
625
+ type: "single",
626
+ value: clamped > 0 ? String(clamped) : "",
627
+ onValueChange: (next) => {
628
+ if (next) onChange?.(Number(next));
629
+ },
630
+ "aria-label": label,
631
+ className: cn("inline-flex items-center gap-0.5", className),
632
+ children: Array.from({ length: MAX_STARS }, (_, index) => {
633
+ const starValue = index + 1;
634
+ const filled = starValue <= clamped;
635
+ return /* @__PURE__ */ jsx8(
636
+ ToggleGroup.Item,
637
+ {
638
+ value: String(starValue),
639
+ "aria-label": `${starValue} ${starValue === 1 ? "estrela" : "estrelas"}`,
640
+ className: "inline-flex cursor-pointer items-center justify-center rounded-sm bg-transparent p-0.5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
641
+ children: /* @__PURE__ */ jsx8(
642
+ Star,
643
+ {
644
+ "aria-hidden": true,
645
+ className: cn(
646
+ sizeClasses2[size],
647
+ "transition-colors",
648
+ filled ? "fill-amber-400 text-amber-400" : "text-muted-foreground hover:text-amber-400"
649
+ )
650
+ }
651
+ )
652
+ },
653
+ starValue
654
+ );
655
+ })
656
+ }
657
+ );
658
+ }
659
+
578
660
  // src/components/combobox.tsx
579
661
  import * as PopoverPrimitive2 from "@radix-ui/react-popover";
580
662
  import { Command as CommandPrimitive } from "cmdk";
@@ -617,7 +699,7 @@ function useInfiniteScrollSentinel({
617
699
  }
618
700
 
619
701
  // src/components/combobox.tsx
620
- import { jsx as jsx8, jsxs as jsxs7 } from "react/jsx-runtime";
702
+ import { jsx as jsx9, jsxs as jsxs7 } from "react/jsx-runtime";
621
703
  function Combobox({
622
704
  options,
623
705
  value,
@@ -636,7 +718,8 @@ function Combobox({
636
718
  hasMore,
637
719
  selectedOption,
638
720
  creatable,
639
- formatCreateLabel
721
+ formatCreateLabel,
722
+ deselectable
640
723
  }) {
641
724
  const [open, setOpen] = React5.useState(false);
642
725
  const [search, setSearch] = React5.useState("");
@@ -648,7 +731,7 @@ function Combobox({
648
731
  if (!next) setSearch("");
649
732
  };
650
733
  const handleSelect = (next) => {
651
- onChange(next);
734
+ onChange(deselectable && next === value ? "" : next);
652
735
  handleOpenChange(false);
653
736
  };
654
737
  const handleSearchChange = (next) => {
@@ -679,8 +762,8 @@ function Combobox({
679
762
  className
680
763
  ),
681
764
  children: [
682
- /* @__PURE__ */ jsx8("span", { className: cn("truncate", !selected && "text-muted-foreground"), children: selected ? selected.label : placeholder }),
683
- /* @__PURE__ */ jsx8(ChevronsUpDown2, { className: "h-4 w-4 shrink-0 opacity-50" })
765
+ /* @__PURE__ */ jsx9("span", { className: cn("truncate", !selected && "text-muted-foreground"), children: selected ? selected.label : placeholder }),
766
+ /* @__PURE__ */ jsx9(ChevronsUpDown2, { className: "h-4 w-4 shrink-0 opacity-50" })
684
767
  ]
685
768
  }
686
769
  );
@@ -691,8 +774,8 @@ function Combobox({
691
774
  className: "flex h-full w-full flex-col overflow-hidden",
692
775
  children: [
693
776
  /* @__PURE__ */ jsxs7("div", { className: "flex items-center border-b px-3", children: [
694
- /* @__PURE__ */ jsx8(Search, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }),
695
- /* @__PURE__ */ jsx8(
777
+ /* @__PURE__ */ jsx9(Search, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }),
778
+ /* @__PURE__ */ jsx9(
696
779
  CommandPrimitive.Input,
697
780
  {
698
781
  placeholder: searchPlaceholder,
@@ -707,7 +790,7 @@ function Combobox({
707
790
  ref: listRef,
708
791
  className: "max-h-[50vh] overflow-y-auto overflow-x-hidden p-1 sm:max-h-60",
709
792
  children: [
710
- !isServer && !showCreate && /* @__PURE__ */ jsx8(CommandPrimitive.Empty, { className: "py-6 text-center text-sm text-muted-foreground", children: emptyMessage }),
793
+ !isServer && !showCreate && /* @__PURE__ */ jsx9(CommandPrimitive.Empty, { className: "py-6 text-center text-sm text-muted-foreground", children: emptyMessage }),
711
794
  showCreate && /* @__PURE__ */ jsxs7(
712
795
  CommandPrimitive.Item,
713
796
  {
@@ -715,8 +798,8 @@ function Combobox({
715
798
  onSelect: () => handleSelect(trimmedSearch),
716
799
  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",
717
800
  children: [
718
- /* @__PURE__ */ jsx8(Plus, { className: "h-4 w-4 shrink-0" }),
719
- /* @__PURE__ */ jsx8("span", { className: "truncate", children: (formatCreateLabel ?? ((text) => `Usar "${text}"`))(
801
+ /* @__PURE__ */ jsx9(Plus, { className: "h-4 w-4 shrink-0" }),
802
+ /* @__PURE__ */ jsx9("span", { className: "truncate", children: (formatCreateLabel ?? ((text) => `Usar "${text}"`))(
720
803
  trimmedSearch
721
804
  ) })
722
805
  ]
@@ -730,7 +813,7 @@ function Combobox({
730
813
  onSelect: () => handleSelect(option.value),
731
814
  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",
732
815
  children: [
733
- /* @__PURE__ */ jsx8(
816
+ /* @__PURE__ */ jsx9(
734
817
  Check,
735
818
  {
736
819
  className: cn(
@@ -739,14 +822,14 @@ function Combobox({
739
822
  )
740
823
  }
741
824
  ),
742
- /* @__PURE__ */ jsx8("span", { className: "truncate", children: option.label })
825
+ /* @__PURE__ */ jsx9("span", { className: "truncate", children: option.label })
743
826
  ]
744
827
  },
745
828
  option.value
746
829
  )),
747
- isServer && !loading && options.length === 0 && /* @__PURE__ */ jsx8("div", { className: "py-6 text-center text-sm text-muted-foreground", children: emptyMessage }),
748
- isServer && loading && /* @__PURE__ */ jsx8("div", { className: "flex items-center justify-center py-6", children: /* @__PURE__ */ jsx8(Loader2, { className: "h-4 w-4 animate-spin text-muted-foreground" }) }),
749
- isServer && hasMore && /* @__PURE__ */ jsx8("div", { ref: sentinelRef, "aria-hidden": true, className: "h-1" })
830
+ isServer && !loading && options.length === 0 && /* @__PURE__ */ jsx9("div", { className: "py-6 text-center text-sm text-muted-foreground", children: emptyMessage }),
831
+ isServer && loading && /* @__PURE__ */ jsx9("div", { className: "flex items-center justify-center py-6", children: /* @__PURE__ */ jsx9(Loader2, { className: "h-4 w-4 animate-spin text-muted-foreground" }) }),
832
+ isServer && hasMore && /* @__PURE__ */ jsx9("div", { ref: sentinelRef, "aria-hidden": true, className: "h-1" })
750
833
  ]
751
834
  }
752
835
  )
@@ -755,8 +838,8 @@ function Combobox({
755
838
  );
756
839
  if (isDesktop) {
757
840
  return /* @__PURE__ */ jsxs7(PopoverPrimitive2.Root, { open, onOpenChange: handleOpenChange, children: [
758
- /* @__PURE__ */ jsx8(PopoverPrimitive2.Trigger, { asChild: true, children: trigger }),
759
- /* @__PURE__ */ jsx8(PopoverPrimitive2.Portal, { children: /* @__PURE__ */ jsx8(
841
+ /* @__PURE__ */ jsx9(PopoverPrimitive2.Trigger, { asChild: true, children: trigger }),
842
+ /* @__PURE__ */ jsx9(PopoverPrimitive2.Portal, { children: /* @__PURE__ */ jsx9(
760
843
  PopoverPrimitive2.Content,
761
844
  {
762
845
  align: "start",
@@ -769,12 +852,12 @@ function Combobox({
769
852
  ] });
770
853
  }
771
854
  return /* @__PURE__ */ jsxs7(DrawerPrimitive2.Root, { open, onOpenChange: handleOpenChange, children: [
772
- /* @__PURE__ */ jsx8(DrawerPrimitive2.Trigger, { asChild: true, children: trigger }),
855
+ /* @__PURE__ */ jsx9(DrawerPrimitive2.Trigger, { asChild: true, children: trigger }),
773
856
  /* @__PURE__ */ jsxs7(DrawerPrimitive2.Portal, { children: [
774
- /* @__PURE__ */ jsx8(DrawerPrimitive2.Overlay, { className: "fixed inset-0 z-50 bg-black/80" }),
857
+ /* @__PURE__ */ jsx9(DrawerPrimitive2.Overlay, { className: "fixed inset-0 z-50 bg-black/80" }),
775
858
  /* @__PURE__ */ jsxs7(DrawerPrimitive2.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: [
776
- /* @__PURE__ */ jsx8(DrawerPrimitive2.Title, { className: "sr-only", children: placeholder }),
777
- /* @__PURE__ */ jsx8("div", { className: "mx-auto my-3 h-1.5 w-12 shrink-0 rounded-full bg-muted" }),
859
+ /* @__PURE__ */ jsx9(DrawerPrimitive2.Title, { className: "sr-only", children: placeholder }),
860
+ /* @__PURE__ */ jsx9("div", { className: "mx-auto my-3 h-1.5 w-12 shrink-0 rounded-full bg-muted" }),
778
861
  command
779
862
  ] })
780
863
  ] })
@@ -783,7 +866,7 @@ function Combobox({
783
866
 
784
867
  // src/components/confirm-dialog.tsx
785
868
  import * as AlertDialog from "@radix-ui/react-alert-dialog";
786
- import { jsx as jsx9, jsxs as jsxs8 } from "react/jsx-runtime";
869
+ import { jsx as jsx10, jsxs as jsxs8 } from "react/jsx-runtime";
787
870
  function ConfirmDialog({
788
871
  open,
789
872
  onOpenChange,
@@ -797,8 +880,8 @@ function ConfirmDialog({
797
880
  blurBackdrop = true,
798
881
  backdropClassName
799
882
  }) {
800
- return /* @__PURE__ */ jsx9(AlertDialog.Root, { open, onOpenChange, children: /* @__PURE__ */ jsxs8(AlertDialog.Portal, { children: [
801
- /* @__PURE__ */ jsx9(
883
+ return /* @__PURE__ */ jsx10(AlertDialog.Root, { open, onOpenChange, children: /* @__PURE__ */ jsxs8(AlertDialog.Portal, { children: [
884
+ /* @__PURE__ */ jsx10(
802
885
  AlertDialog.Overlay,
803
886
  {
804
887
  className: cn(
@@ -810,12 +893,12 @@ function ConfirmDialog({
810
893
  ),
811
894
  /* @__PURE__ */ jsxs8(AlertDialog.Content, { className: "fixed left-1/2 top-1/2 z-50 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg", children: [
812
895
  /* @__PURE__ */ jsxs8("div", { className: "flex flex-col space-y-2 text-center sm:text-left", children: [
813
- /* @__PURE__ */ jsx9(AlertDialog.Title, { className: "text-lg font-semibold", children: title }),
814
- /* @__PURE__ */ jsx9(AlertDialog.Description, { className: "text-sm text-muted-foreground", children: description })
896
+ /* @__PURE__ */ jsx10(AlertDialog.Title, { className: "text-lg font-semibold", children: title }),
897
+ /* @__PURE__ */ jsx10(AlertDialog.Description, { className: "text-sm text-muted-foreground", children: description })
815
898
  ] }),
816
899
  /* @__PURE__ */ jsxs8("div", { className: "flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", children: [
817
- /* @__PURE__ */ jsx9(AlertDialog.Cancel, { 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 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 cursor-pointer", children: cancelLabel }),
818
- /* @__PURE__ */ jsx9(
900
+ /* @__PURE__ */ jsx10(AlertDialog.Cancel, { 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 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 cursor-pointer", children: cancelLabel }),
901
+ /* @__PURE__ */ jsx10(
819
902
  AlertDialog.Action,
820
903
  {
821
904
  onClick: onConfirm,
@@ -830,7 +913,7 @@ function ConfirmDialog({
830
913
  }
831
914
 
832
915
  // src/components/data-table-wrapper.tsx
833
- import { jsx as jsx10, jsxs as jsxs9 } from "react/jsx-runtime";
916
+ import { jsx as jsx11, jsxs as jsxs9 } from "react/jsx-runtime";
834
917
  function DataTableWrapper({
835
918
  children,
836
919
  isEmpty,
@@ -844,14 +927,14 @@ function DataTableWrapper({
844
927
  hasPreviousPage = false
845
928
  }) {
846
929
  return /* @__PURE__ */ jsxs9("div", { className: "space-y-4", children: [
847
- /* @__PURE__ */ jsx10("div", { className: "overflow-x-auto rounded-md border", children }),
930
+ /* @__PURE__ */ jsx11("div", { className: "overflow-x-auto rounded-md border", children }),
848
931
  !isLoading && isEmpty && /* @__PURE__ */ jsxs9("div", { className: "flex flex-col items-center justify-center py-16 text-center", children: [
849
- emptyIcon && /* @__PURE__ */ jsx10("div", { className: "mb-4 text-muted-foreground", children: emptyIcon }),
850
- /* @__PURE__ */ jsx10("h3", { className: "text-lg font-semibold tracking-tight", children: emptyTitle }),
851
- emptyDescription && /* @__PURE__ */ jsx10("p", { className: "mt-1 max-w-sm text-sm text-muted-foreground", children: emptyDescription })
932
+ emptyIcon && /* @__PURE__ */ jsx11("div", { className: "mb-4 text-muted-foreground", children: emptyIcon }),
933
+ /* @__PURE__ */ jsx11("h3", { className: "text-lg font-semibold tracking-tight", children: emptyTitle }),
934
+ emptyDescription && /* @__PURE__ */ jsx11("p", { className: "mt-1 max-w-sm text-sm text-muted-foreground", children: emptyDescription })
852
935
  ] }),
853
936
  page !== void 0 && onPageChange && /* @__PURE__ */ jsxs9("div", { className: "flex items-center justify-end gap-4", children: [
854
- /* @__PURE__ */ jsx10(
937
+ /* @__PURE__ */ jsx11(
855
938
  "button",
856
939
  {
857
940
  type: "button",
@@ -865,7 +948,7 @@ function DataTableWrapper({
865
948
  "P\xE1gina ",
866
949
  page
867
950
  ] }),
868
- /* @__PURE__ */ jsx10(
951
+ /* @__PURE__ */ jsx11(
869
952
  "button",
870
953
  {
871
954
  type: "button",
@@ -888,7 +971,7 @@ import { CalendarIcon, ChevronDown, ChevronLeft as ChevronLeft2, ChevronRight as
888
971
  import * as React6 from "react";
889
972
  import { DayPicker } from "react-day-picker";
890
973
  import { Drawer as DrawerPrimitive3 } from "vaul";
891
- import { Fragment as Fragment5, jsx as jsx11, jsxs as jsxs10 } from "react/jsx-runtime";
974
+ import { Fragment as Fragment5, jsx as jsx12, jsxs as jsxs10 } from "react/jsx-runtime";
892
975
  var DATE_MASK = "__/__/____";
893
976
  var TIME_MASK = "__:__";
894
977
  var MASK_REPLACEMENT = { _: /\d/ };
@@ -955,9 +1038,9 @@ var calendarClassNames = {
955
1038
  };
956
1039
  var calendarComponents = {
957
1040
  Chevron: ({ orientation }) => {
958
- if (orientation === "left") return /* @__PURE__ */ jsx11(ChevronLeft2, { className: "size-4" });
959
- if (orientation === "right") return /* @__PURE__ */ jsx11(ChevronRight2, { className: "size-4" });
960
- return /* @__PURE__ */ jsx11(ChevronDown, { className: "size-4" });
1041
+ if (orientation === "left") return /* @__PURE__ */ jsx12(ChevronLeft2, { className: "size-4" });
1042
+ if (orientation === "right") return /* @__PURE__ */ jsx12(ChevronRight2, { className: "size-4" });
1043
+ return /* @__PURE__ */ jsx12(ChevronDown, { className: "size-4" });
961
1044
  }
962
1045
  };
963
1046
  var formatMonthDropdown = (date) => date.toLocaleString("pt-BR", { month: "short" });
@@ -1043,7 +1126,7 @@ function DatePickerImpl({
1043
1126
  };
1044
1127
  const canApply = withTime && !!pendingDate && !!parseStrict(pendingTime, TIME_FORMAT);
1045
1128
  const trigger = /* @__PURE__ */ jsxs10("div", { ref: triggerRef, className: "relative", children: [
1046
- /* @__PURE__ */ jsx11(
1129
+ /* @__PURE__ */ jsx12(
1047
1130
  InputMask,
1048
1131
  {
1049
1132
  id,
@@ -1063,7 +1146,7 @@ function DatePickerImpl({
1063
1146
  className: cn(triggerInputClass, className)
1064
1147
  }
1065
1148
  ),
1066
- /* @__PURE__ */ jsx11(
1149
+ /* @__PURE__ */ jsx12(
1067
1150
  "button",
1068
1151
  {
1069
1152
  type: "button",
@@ -1073,12 +1156,12 @@ function DatePickerImpl({
1073
1156
  "aria-expanded": open,
1074
1157
  onClick: () => setOpen(!open),
1075
1158
  className: "absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground transition-colors hover:text-foreground disabled:pointer-events-none disabled:opacity-50",
1076
- children: withTime ? /* @__PURE__ */ jsx11(Clock, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx11(CalendarIcon, { className: "h-4 w-4" })
1159
+ children: withTime ? /* @__PURE__ */ jsx12(Clock, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx12(CalendarIcon, { className: "h-4 w-4" })
1077
1160
  }
1078
1161
  )
1079
1162
  ] });
1080
1163
  const content = /* @__PURE__ */ jsxs10("div", { className: withTime ? "p-3" : "", children: [
1081
- /* @__PURE__ */ jsx11(
1164
+ /* @__PURE__ */ jsx12(
1082
1165
  DayPicker,
1083
1166
  {
1084
1167
  mode: "single",
@@ -1098,8 +1181,8 @@ function DatePickerImpl({
1098
1181
  ),
1099
1182
  withTime && /* @__PURE__ */ jsxs10(Fragment5, { children: [
1100
1183
  /* @__PURE__ */ jsxs10("div", { className: "mt-2 flex items-center gap-2 border-t pt-3", children: [
1101
- /* @__PURE__ */ jsx11("span", { className: "text-sm text-muted-foreground", children: "Hor\xE1rio" }),
1102
- /* @__PURE__ */ jsx11(
1184
+ /* @__PURE__ */ jsx12("span", { className: "text-sm text-muted-foreground", children: "Hor\xE1rio" }),
1185
+ /* @__PURE__ */ jsx12(
1103
1186
  InputMask,
1104
1187
  {
1105
1188
  mask: TIME_MASK,
@@ -1112,7 +1195,7 @@ function DatePickerImpl({
1112
1195
  }
1113
1196
  )
1114
1197
  ] }),
1115
- /* @__PURE__ */ jsx11(
1198
+ /* @__PURE__ */ jsx12(
1116
1199
  "button",
1117
1200
  {
1118
1201
  type: "button",
@@ -1126,8 +1209,8 @@ function DatePickerImpl({
1126
1209
  ] });
1127
1210
  if (isDesktop) {
1128
1211
  return /* @__PURE__ */ jsxs10(PopoverPrimitive3.Root, { open, onOpenChange: setOpen, children: [
1129
- /* @__PURE__ */ jsx11(PopoverPrimitive3.Anchor, { asChild: true, children: trigger }),
1130
- /* @__PURE__ */ jsx11(PopoverPrimitive3.Portal, { children: /* @__PURE__ */ jsx11(
1212
+ /* @__PURE__ */ jsx12(PopoverPrimitive3.Anchor, { asChild: true, children: trigger }),
1213
+ /* @__PURE__ */ jsx12(PopoverPrimitive3.Portal, { children: /* @__PURE__ */ jsx12(
1131
1214
  PopoverPrimitive3.Content,
1132
1215
  {
1133
1216
  align: "start",
@@ -1145,7 +1228,7 @@ function DatePickerImpl({
1145
1228
  return /* @__PURE__ */ jsxs10(DrawerPrimitive3.Root, { open, onOpenChange: setOpen, children: [
1146
1229
  trigger,
1147
1230
  /* @__PURE__ */ jsxs10(DrawerPrimitive3.Portal, { children: [
1148
- /* @__PURE__ */ jsx11(DrawerPrimitive3.Overlay, { className: "fixed inset-0 z-50 bg-black/80" }),
1231
+ /* @__PURE__ */ jsx12(DrawerPrimitive3.Overlay, { className: "fixed inset-0 z-50 bg-black/80" }),
1149
1232
  /* @__PURE__ */ jsxs10(
1150
1233
  DrawerPrimitive3.Content,
1151
1234
  {
@@ -1155,9 +1238,9 @@ function DatePickerImpl({
1155
1238
  },
1156
1239
  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",
1157
1240
  children: [
1158
- /* @__PURE__ */ jsx11(DrawerPrimitive3.Title, { className: "sr-only", children: withTime ? "Selecione a data e o hor\xE1rio" : "Selecione a data" }),
1159
- /* @__PURE__ */ jsx11("div", { className: "mx-auto my-3 h-1.5 w-12 shrink-0 rounded-full bg-muted" }),
1160
- /* @__PURE__ */ jsx11("div", { className: "flex justify-center overflow-y-auto pb-4", children: content })
1241
+ /* @__PURE__ */ jsx12(DrawerPrimitive3.Title, { className: "sr-only", children: withTime ? "Selecione a data e o hor\xE1rio" : "Selecione a data" }),
1242
+ /* @__PURE__ */ jsx12("div", { className: "mx-auto my-3 h-1.5 w-12 shrink-0 rounded-full bg-muted" }),
1243
+ /* @__PURE__ */ jsx12("div", { className: "flex justify-center overflow-y-auto pb-4", children: content })
1161
1244
  ]
1162
1245
  }
1163
1246
  )
@@ -1165,20 +1248,20 @@ function DatePickerImpl({
1165
1248
  ] });
1166
1249
  }
1167
1250
  function DatePicker(props) {
1168
- return /* @__PURE__ */ jsx11(DatePickerImpl, { ...props });
1251
+ return /* @__PURE__ */ jsx12(DatePickerImpl, { ...props });
1169
1252
  }
1170
1253
  function DateTimePicker(props) {
1171
- return /* @__PURE__ */ jsx11(DatePickerImpl, { ...props, withTime: true });
1254
+ return /* @__PURE__ */ jsx12(DatePickerImpl, { ...props, withTime: true });
1172
1255
  }
1173
1256
 
1174
1257
  // src/components/empty-state.tsx
1175
- import { jsx as jsx12, jsxs as jsxs11 } from "react/jsx-runtime";
1258
+ import { jsx as jsx13, jsxs as jsxs11 } from "react/jsx-runtime";
1176
1259
  function EmptyState({ icon, title, description, action, className }) {
1177
1260
  return /* @__PURE__ */ jsxs11("div", { className: `flex flex-col items-center justify-center py-16 text-center ${className ?? ""}`, children: [
1178
- icon && /* @__PURE__ */ jsx12("div", { className: "mb-4 text-muted-foreground", children: icon }),
1179
- /* @__PURE__ */ jsx12("h3", { className: "text-lg font-semibold tracking-tight", children: title }),
1180
- description && /* @__PURE__ */ jsx12("p", { className: "mt-1 max-w-sm text-sm text-muted-foreground", children: description }),
1181
- action && /* @__PURE__ */ jsx12("div", { className: "mt-4", children: action })
1261
+ icon && /* @__PURE__ */ jsx13("div", { className: "mb-4 text-muted-foreground", children: icon }),
1262
+ /* @__PURE__ */ jsx13("h3", { className: "text-lg font-semibold tracking-tight", children: title }),
1263
+ description && /* @__PURE__ */ jsx13("p", { className: "mt-1 max-w-sm text-sm text-muted-foreground", children: description }),
1264
+ action && /* @__PURE__ */ jsx13("div", { className: "mt-4", children: action })
1182
1265
  ] });
1183
1266
  }
1184
1267
 
@@ -1187,7 +1270,7 @@ import * as PopoverPrimitive4 from "@radix-ui/react-popover";
1187
1270
  import { ChevronDown as ChevronDown2, X as X3 } from "lucide-react";
1188
1271
  import * as React7 from "react";
1189
1272
  import { Drawer as DrawerPrimitive4 } from "vaul";
1190
- import { jsx as jsx13, jsxs as jsxs12 } from "react/jsx-runtime";
1273
+ import { jsx as jsx14, jsxs as jsxs12 } from "react/jsx-runtime";
1191
1274
  function FilterToolbar({
1192
1275
  children,
1193
1276
  isFilterActive = false,
@@ -1211,7 +1294,7 @@ function FilterToolbar({
1211
1294
  onClick: onClear,
1212
1295
  className: "inline-flex h-9 shrink-0 items-center justify-center gap-1.5 self-start rounded-md px-2.5 text-sm text-muted-foreground transition-colors hover:text-foreground sm:self-auto",
1213
1296
  children: [
1214
- /* @__PURE__ */ jsx13(X3, { className: "h-4 w-4" }),
1297
+ /* @__PURE__ */ jsx14(X3, { className: "h-4 w-4" }),
1215
1298
  clearLabel
1216
1299
  ]
1217
1300
  }
@@ -1244,17 +1327,17 @@ function FilterPopover({
1244
1327
  active ? "border-ring/60 text-foreground" : "text-muted-foreground"
1245
1328
  ),
1246
1329
  children: [
1247
- Icon && /* @__PURE__ */ jsx13(Icon, { className: "h-4 w-4 shrink-0 opacity-70" }),
1248
- /* @__PURE__ */ jsx13("span", { className: "truncate", children: label }),
1249
- active && badge != null && /* @__PURE__ */ jsx13("span", { className: "inline-flex h-4 min-w-4 items-center justify-center rounded-full bg-primary px-1 text-[10px] font-medium leading-none text-primary-foreground", children: badge }),
1250
- /* @__PURE__ */ jsx13(ChevronDown2, { className: "h-4 w-4 shrink-0 opacity-50" })
1330
+ Icon && /* @__PURE__ */ jsx14(Icon, { className: "h-4 w-4 shrink-0 opacity-70" }),
1331
+ /* @__PURE__ */ jsx14("span", { className: "truncate", children: label }),
1332
+ active && badge != null && /* @__PURE__ */ jsx14("span", { className: "inline-flex h-4 min-w-4 items-center justify-center rounded-full bg-primary px-1 text-[10px] font-medium leading-none text-primary-foreground", children: badge }),
1333
+ /* @__PURE__ */ jsx14(ChevronDown2, { className: "h-4 w-4 shrink-0 opacity-50" })
1251
1334
  ]
1252
1335
  }
1253
1336
  );
1254
1337
  if (isDesktop) {
1255
1338
  return /* @__PURE__ */ jsxs12(PopoverPrimitive4.Root, { open, onOpenChange: setOpen, children: [
1256
- /* @__PURE__ */ jsx13(PopoverPrimitive4.Trigger, { asChild: true, children: trigger }),
1257
- /* @__PURE__ */ jsx13(PopoverPrimitive4.Portal, { children: /* @__PURE__ */ jsx13(
1339
+ /* @__PURE__ */ jsx14(PopoverPrimitive4.Trigger, { asChild: true, children: trigger }),
1340
+ /* @__PURE__ */ jsx14(PopoverPrimitive4.Portal, { children: /* @__PURE__ */ jsx14(
1258
1341
  PopoverPrimitive4.Content,
1259
1342
  {
1260
1343
  align,
@@ -1275,13 +1358,13 @@ function FilterPopover({
1275
1358
  ] });
1276
1359
  }
1277
1360
  return /* @__PURE__ */ jsxs12(DrawerPrimitive4.Root, { open, onOpenChange: setOpen, children: [
1278
- /* @__PURE__ */ jsx13(DrawerPrimitive4.Trigger, { asChild: true, children: trigger }),
1361
+ /* @__PURE__ */ jsx14(DrawerPrimitive4.Trigger, { asChild: true, children: trigger }),
1279
1362
  /* @__PURE__ */ jsxs12(DrawerPrimitive4.Portal, { children: [
1280
- /* @__PURE__ */ jsx13(DrawerPrimitive4.Overlay, { className: "fixed inset-0 z-50 bg-black/80" }),
1363
+ /* @__PURE__ */ jsx14(DrawerPrimitive4.Overlay, { className: "fixed inset-0 z-50 bg-black/80" }),
1281
1364
  /* @__PURE__ */ jsxs12(DrawerPrimitive4.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: [
1282
- /* @__PURE__ */ jsx13(DrawerPrimitive4.Title, { className: "sr-only", children: title ?? label }),
1283
- /* @__PURE__ */ jsx13("div", { className: "mx-auto my-3 h-1.5 w-12 shrink-0 rounded-full bg-muted" }),
1284
- /* @__PURE__ */ jsx13("div", { className: "overflow-y-auto p-2", children: content })
1365
+ /* @__PURE__ */ jsx14(DrawerPrimitive4.Title, { className: "sr-only", children: title ?? label }),
1366
+ /* @__PURE__ */ jsx14("div", { className: "mx-auto my-3 h-1.5 w-12 shrink-0 rounded-full bg-muted" }),
1367
+ /* @__PURE__ */ jsx14("div", { className: "overflow-y-auto p-2", children: content })
1285
1368
  ] })
1286
1369
  ] })
1287
1370
  ] });
@@ -1315,7 +1398,7 @@ function FilterOptionList({
1315
1398
  onClick: () => toggle(option.value),
1316
1399
  className: "flex cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-left text-sm transition-colors hover:bg-accent hover:text-accent-foreground",
1317
1400
  children: [
1318
- option.dotClassName && /* @__PURE__ */ jsx13(
1401
+ option.dotClassName && /* @__PURE__ */ jsx14(
1319
1402
  "span",
1320
1403
  {
1321
1404
  className: cn(
@@ -1324,14 +1407,14 @@ function FilterOptionList({
1324
1407
  )
1325
1408
  }
1326
1409
  ),
1327
- /* @__PURE__ */ jsx13("span", { className: "flex-1 truncate", children: option.label }),
1328
- isChecked && /* @__PURE__ */ jsx13("span", { className: "h-1.5 w-1.5 shrink-0 rounded-full bg-primary" })
1410
+ /* @__PURE__ */ jsx14("span", { className: "flex-1 truncate", children: option.label }),
1411
+ isChecked && /* @__PURE__ */ jsx14("span", { className: "h-1.5 w-1.5 shrink-0 rounded-full bg-primary" })
1329
1412
  ]
1330
1413
  },
1331
1414
  option.value
1332
1415
  );
1333
1416
  }),
1334
- clearable && hasSelection && /* @__PURE__ */ jsx13(
1417
+ clearable && hasSelection && /* @__PURE__ */ jsx14(
1335
1418
  "button",
1336
1419
  {
1337
1420
  type: "button",
@@ -1344,7 +1427,7 @@ function FilterOptionList({
1344
1427
  }
1345
1428
 
1346
1429
  // src/components/form-dialog.tsx
1347
- import { jsx as jsx14, jsxs as jsxs13 } from "react/jsx-runtime";
1430
+ import { jsx as jsx15, jsxs as jsxs13 } from "react/jsx-runtime";
1348
1431
  function FormDialogLayout({
1349
1432
  title,
1350
1433
  children,
@@ -1356,10 +1439,10 @@ function FormDialogLayout({
1356
1439
  isDisabled = false
1357
1440
  }) {
1358
1441
  return /* @__PURE__ */ jsxs13("form", { onSubmit, children: [
1359
- /* @__PURE__ */ jsx14("div", { className: "flex flex-col space-y-1.5 text-center sm:text-left", children: /* @__PURE__ */ jsx14("h2", { className: "text-lg font-semibold leading-none tracking-tight", children: title }) }),
1360
- /* @__PURE__ */ jsx14("div", { className: "space-y-4 py-4", children }),
1442
+ /* @__PURE__ */ jsx15("div", { className: "flex flex-col space-y-1.5 text-center sm:text-left", children: /* @__PURE__ */ jsx15("h2", { className: "text-lg font-semibold leading-none tracking-tight", children: title }) }),
1443
+ /* @__PURE__ */ jsx15("div", { className: "space-y-4 py-4", children }),
1361
1444
  /* @__PURE__ */ jsxs13("div", { className: "flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", children: [
1362
- /* @__PURE__ */ jsx14(
1445
+ /* @__PURE__ */ jsx15(
1363
1446
  "button",
1364
1447
  {
1365
1448
  type: "button",
@@ -1368,7 +1451,7 @@ function FormDialogLayout({
1368
1451
  children: cancelLabel
1369
1452
  }
1370
1453
  ),
1371
- /* @__PURE__ */ jsx14(
1454
+ /* @__PURE__ */ jsx15(
1372
1455
  "button",
1373
1456
  {
1374
1457
  type: "submit",
@@ -1381,18 +1464,18 @@ function FormDialogLayout({
1381
1464
  ] });
1382
1465
  }
1383
1466
  function FormDialog({ onSubmit, ...rest }) {
1384
- return /* @__PURE__ */ jsx14(
1467
+ return /* @__PURE__ */ jsx15(
1385
1468
  BaseDialog,
1386
1469
  {
1387
1470
  ...rest,
1388
- contentWrapper: onSubmit ? (content) => /* @__PURE__ */ jsx14("form", { onSubmit, className: "flex min-h-0 flex-1 flex-col", children: content }) : void 0
1471
+ contentWrapper: onSubmit ? (content) => /* @__PURE__ */ jsx15("form", { onSubmit, className: "flex min-h-0 flex-1 flex-col", children: content }) : void 0
1389
1472
  }
1390
1473
  );
1391
1474
  }
1392
1475
 
1393
1476
  // src/components/form-field.tsx
1394
1477
  import { cloneElement, isValidElement, useId } from "react";
1395
- import { jsx as jsx15, jsxs as jsxs14 } from "react/jsx-runtime";
1478
+ import { jsx as jsx16, jsxs as jsxs14 } from "react/jsx-runtime";
1396
1479
  function FormField({ label, htmlFor, error, required, children, className }) {
1397
1480
  const errorId = useId();
1398
1481
  const field = error && isValidElement(children) ? cloneElement(children, {
@@ -1410,18 +1493,18 @@ function FormField({ label, htmlFor, error, required, children, className }) {
1410
1493
  className: "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
1411
1494
  children: [
1412
1495
  label,
1413
- required && /* @__PURE__ */ jsx15("span", { className: "ml-1 text-destructive", children: "*" })
1496
+ required && /* @__PURE__ */ jsx16("span", { className: "ml-1 text-destructive", children: "*" })
1414
1497
  ]
1415
1498
  }
1416
1499
  ),
1417
1500
  field,
1418
- error && /* @__PURE__ */ jsx15("p", { id: errorId, className: "text-sm text-destructive", children: error })
1501
+ error && /* @__PURE__ */ jsx16("p", { id: errorId, className: "text-sm text-destructive", children: error })
1419
1502
  ] });
1420
1503
  }
1421
1504
 
1422
1505
  // src/components/mobile-card-list.tsx
1423
1506
  import { useRef as useRef3 } from "react";
1424
- import { jsx as jsx16, jsxs as jsxs15 } from "react/jsx-runtime";
1507
+ import { jsx as jsx17, jsxs as jsxs15 } from "react/jsx-runtime";
1425
1508
  var SCROLL_THRESHOLD = 8;
1426
1509
  function MobileCardList({
1427
1510
  data,
@@ -1452,26 +1535,26 @@ function MobileCardList({
1452
1535
  }
1453
1536
  };
1454
1537
  if (isLoading) {
1455
- return /* @__PURE__ */ jsx16("div", { className: `space-y-3 ${className ?? ""}`, children: Array.from({ length: loadingCount }).map((_, i) => /* @__PURE__ */ jsx16("div", { className: "rounded-xl border p-4", children: /* @__PURE__ */ jsxs15("div", { className: "space-y-3", children: [
1538
+ return /* @__PURE__ */ jsx17("div", { className: `space-y-3 ${className ?? ""}`, children: Array.from({ length: loadingCount }).map((_, i) => /* @__PURE__ */ jsx17("div", { className: "rounded-xl border p-4", children: /* @__PURE__ */ jsxs15("div", { className: "space-y-3", children: [
1456
1539
  /* @__PURE__ */ jsxs15("div", { className: "flex justify-between", children: [
1457
- /* @__PURE__ */ jsx16("div", { className: "h-5 w-32 animate-pulse rounded bg-muted" }),
1458
- /* @__PURE__ */ jsx16("div", { className: "h-5 w-16 animate-pulse rounded bg-muted" })
1540
+ /* @__PURE__ */ jsx17("div", { className: "h-5 w-32 animate-pulse rounded bg-muted" }),
1541
+ /* @__PURE__ */ jsx17("div", { className: "h-5 w-16 animate-pulse rounded bg-muted" })
1459
1542
  ] }),
1460
- /* @__PURE__ */ jsx16("div", { className: "h-4 w-48 animate-pulse rounded bg-muted" }),
1543
+ /* @__PURE__ */ jsx17("div", { className: "h-4 w-48 animate-pulse rounded bg-muted" }),
1461
1544
  /* @__PURE__ */ jsxs15("div", { className: "flex justify-between", children: [
1462
- /* @__PURE__ */ jsx16("div", { className: "h-4 w-24 animate-pulse rounded bg-muted" }),
1463
- /* @__PURE__ */ jsx16("div", { className: "h-4 w-20 animate-pulse rounded bg-muted" })
1545
+ /* @__PURE__ */ jsx17("div", { className: "h-4 w-24 animate-pulse rounded bg-muted" }),
1546
+ /* @__PURE__ */ jsx17("div", { className: "h-4 w-20 animate-pulse rounded bg-muted" })
1464
1547
  ] })
1465
1548
  ] }) }, i)) });
1466
1549
  }
1467
- return /* @__PURE__ */ jsx16(
1550
+ return /* @__PURE__ */ jsx17(
1468
1551
  "div",
1469
1552
  {
1470
1553
  className: `space-y-3 ${className ?? ""}`,
1471
1554
  onTouchStart,
1472
1555
  onTouchMove,
1473
1556
  onClickCapture,
1474
- children: data.map((item, index) => /* @__PURE__ */ jsx16(
1557
+ children: data.map((item, index) => /* @__PURE__ */ jsx17(
1475
1558
  "div",
1476
1559
  {
1477
1560
  className: "rounded-xl border p-4 transition-all duration-150 hover:border-foreground/20 active:scale-[0.99]",
@@ -1516,7 +1599,7 @@ function applyCompanyTheme(root, companyTheme, mode) {
1516
1599
  }
1517
1600
 
1518
1601
  // src/components/theme-provider.tsx
1519
- import { jsx as jsx17 } from "react/jsx-runtime";
1602
+ import { jsx as jsx18 } from "react/jsx-runtime";
1520
1603
  var initialState = {
1521
1604
  theme: "system",
1522
1605
  setTheme: () => null
@@ -1555,7 +1638,7 @@ function ThemeProvider({
1555
1638
  setTheme(theme2);
1556
1639
  }
1557
1640
  };
1558
- return /* @__PURE__ */ jsx17(ThemeProviderContext.Provider, { ...props, value, children });
1641
+ return /* @__PURE__ */ jsx18(ThemeProviderContext.Provider, { ...props, value, children });
1559
1642
  }
1560
1643
  function useTheme() {
1561
1644
  const context = useContext(ThemeProviderContext);
@@ -1566,23 +1649,23 @@ function useTheme() {
1566
1649
  }
1567
1650
 
1568
1651
  // src/components/mode-toggle.tsx
1569
- import { jsx as jsx18, jsxs as jsxs16 } from "react/jsx-runtime";
1652
+ import { jsx as jsx19, jsxs as jsxs16 } from "react/jsx-runtime";
1570
1653
  function ModeToggle() {
1571
1654
  const { setTheme } = useTheme();
1572
1655
  return /* @__PURE__ */ jsxs16(DropdownMenu2.Root, { children: [
1573
- /* @__PURE__ */ jsx18(DropdownMenu2.Trigger, { asChild: true, children: /* @__PURE__ */ jsxs16(
1656
+ /* @__PURE__ */ jsx19(DropdownMenu2.Trigger, { asChild: true, children: /* @__PURE__ */ jsxs16(
1574
1657
  "button",
1575
1658
  {
1576
1659
  type: "button",
1577
1660
  className: "relative inline-flex h-9 w-9 items-center justify-center rounded-md border border-input bg-background text-sm font-medium shadow-sm transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
1578
1661
  "aria-label": "Alternar tema",
1579
1662
  children: [
1580
- /* @__PURE__ */ jsx18(Sun, { className: "h-4 w-4 rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0" }),
1581
- /* @__PURE__ */ jsx18(Moon, { className: "absolute inset-0 m-auto h-4 w-4 rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100" })
1663
+ /* @__PURE__ */ jsx19(Sun, { className: "h-4 w-4 rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0" }),
1664
+ /* @__PURE__ */ jsx19(Moon, { className: "absolute inset-0 m-auto h-4 w-4 rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100" })
1582
1665
  ]
1583
1666
  }
1584
1667
  ) }),
1585
- /* @__PURE__ */ jsx18(DropdownMenu2.Portal, { children: /* @__PURE__ */ jsxs16(
1668
+ /* @__PURE__ */ jsx19(DropdownMenu2.Portal, { children: /* @__PURE__ */ jsxs16(
1586
1669
  DropdownMenu2.Content,
1587
1670
  {
1588
1671
  align: "end",
@@ -1594,7 +1677,7 @@ function ModeToggle() {
1594
1677
  className: "flex 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",
1595
1678
  onClick: () => setTheme("light"),
1596
1679
  children: [
1597
- /* @__PURE__ */ jsx18(Sun, { className: "h-4 w-4" }),
1680
+ /* @__PURE__ */ jsx19(Sun, { className: "h-4 w-4" }),
1598
1681
  " Claro"
1599
1682
  ]
1600
1683
  }
@@ -1605,7 +1688,7 @@ function ModeToggle() {
1605
1688
  className: "flex 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",
1606
1689
  onClick: () => setTheme("dark"),
1607
1690
  children: [
1608
- /* @__PURE__ */ jsx18(Moon, { className: "h-4 w-4" }),
1691
+ /* @__PURE__ */ jsx19(Moon, { className: "h-4 w-4" }),
1609
1692
  " Escuro"
1610
1693
  ]
1611
1694
  }
@@ -1616,7 +1699,7 @@ function ModeToggle() {
1616
1699
  className: "flex 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",
1617
1700
  onClick: () => setTheme("system"),
1618
1701
  children: [
1619
- /* @__PURE__ */ jsx18(Monitor, { className: "h-4 w-4" }),
1702
+ /* @__PURE__ */ jsx19(Monitor, { className: "h-4 w-4" }),
1620
1703
  " Sistema"
1621
1704
  ]
1622
1705
  }
@@ -1633,7 +1716,7 @@ import { Command as CommandPrimitive2 } from "cmdk";
1633
1716
  import { Check as Check2, ChevronsUpDown as ChevronsUpDown3, Loader2 as Loader22, Search as Search2, X as X4 } from "lucide-react";
1634
1717
  import * as React8 from "react";
1635
1718
  import { Drawer as DrawerPrimitive5 } from "vaul";
1636
- import { jsx as jsx19, jsxs as jsxs17 } from "react/jsx-runtime";
1719
+ import { jsx as jsx20, jsxs as jsxs17 } from "react/jsx-runtime";
1637
1720
  function MultiCombobox({
1638
1721
  options,
1639
1722
  value,
@@ -1696,13 +1779,13 @@ function MultiCombobox({
1696
1779
  className
1697
1780
  ),
1698
1781
  children: [
1699
- selected.length === 0 ? /* @__PURE__ */ jsx19("span", { className: "text-muted-foreground", children: placeholder }) : selected.map((option) => /* @__PURE__ */ jsxs17(
1782
+ selected.length === 0 ? /* @__PURE__ */ jsx20("span", { className: "text-muted-foreground", children: placeholder }) : selected.map((option) => /* @__PURE__ */ jsxs17(
1700
1783
  "span",
1701
1784
  {
1702
1785
  className: "inline-flex items-center gap-1 rounded bg-secondary px-1.5 py-0.5 text-xs text-secondary-foreground",
1703
1786
  children: [
1704
1787
  option.label,
1705
- /* @__PURE__ */ jsx19(
1788
+ /* @__PURE__ */ jsx20(
1706
1789
  "button",
1707
1790
  {
1708
1791
  type: "button",
@@ -1714,14 +1797,14 @@ function MultiCombobox({
1714
1797
  },
1715
1798
  onPointerDown: (event) => event.stopPropagation(),
1716
1799
  className: "rounded-sm opacity-60 transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
1717
- children: /* @__PURE__ */ jsx19(X4, { className: "h-3 w-3" })
1800
+ children: /* @__PURE__ */ jsx20(X4, { className: "h-3 w-3" })
1718
1801
  }
1719
1802
  )
1720
1803
  ]
1721
1804
  },
1722
1805
  option.value
1723
1806
  )),
1724
- /* @__PURE__ */ jsx19(ChevronsUpDown3, { className: "ml-auto h-4 w-4 shrink-0 opacity-50" })
1807
+ /* @__PURE__ */ jsx20(ChevronsUpDown3, { className: "ml-auto h-4 w-4 shrink-0 opacity-50" })
1725
1808
  ]
1726
1809
  }
1727
1810
  );
@@ -1732,8 +1815,8 @@ function MultiCombobox({
1732
1815
  className: "flex h-full w-full flex-col overflow-hidden",
1733
1816
  children: [
1734
1817
  /* @__PURE__ */ jsxs17("div", { className: "flex items-center border-b px-3", children: [
1735
- /* @__PURE__ */ jsx19(Search2, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }),
1736
- /* @__PURE__ */ jsx19(
1818
+ /* @__PURE__ */ jsx20(Search2, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }),
1819
+ /* @__PURE__ */ jsx20(
1737
1820
  CommandPrimitive2.Input,
1738
1821
  {
1739
1822
  placeholder: searchPlaceholder,
@@ -1748,7 +1831,7 @@ function MultiCombobox({
1748
1831
  ref: listRef,
1749
1832
  className: "max-h-[50vh] overflow-y-auto overflow-x-hidden p-1 sm:max-h-60",
1750
1833
  children: [
1751
- !isServer && /* @__PURE__ */ jsx19(CommandPrimitive2.Empty, { className: "py-6 text-center text-sm text-muted-foreground", children: emptyMessage }),
1834
+ !isServer && /* @__PURE__ */ jsx20(CommandPrimitive2.Empty, { className: "py-6 text-center text-sm text-muted-foreground", children: emptyMessage }),
1752
1835
  options.map((option) => /* @__PURE__ */ jsxs17(
1753
1836
  CommandPrimitive2.Item,
1754
1837
  {
@@ -1757,7 +1840,7 @@ function MultiCombobox({
1757
1840
  onSelect: () => toggleValue(option.value),
1758
1841
  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",
1759
1842
  children: [
1760
- /* @__PURE__ */ jsx19(
1843
+ /* @__PURE__ */ jsx20(
1761
1844
  Check2,
1762
1845
  {
1763
1846
  className: cn(
@@ -1766,14 +1849,14 @@ function MultiCombobox({
1766
1849
  )
1767
1850
  }
1768
1851
  ),
1769
- /* @__PURE__ */ jsx19("span", { className: "truncate", children: option.label })
1852
+ /* @__PURE__ */ jsx20("span", { className: "truncate", children: option.label })
1770
1853
  ]
1771
1854
  },
1772
1855
  option.value
1773
1856
  )),
1774
- isServer && !loading && options.length === 0 && /* @__PURE__ */ jsx19("div", { className: "py-6 text-center text-sm text-muted-foreground", children: emptyMessage }),
1775
- isServer && loading && /* @__PURE__ */ jsx19("div", { className: "flex items-center justify-center py-6", children: /* @__PURE__ */ jsx19(Loader22, { className: "h-4 w-4 animate-spin text-muted-foreground" }) }),
1776
- isServer && hasMore && /* @__PURE__ */ jsx19("div", { ref: sentinelRef, "aria-hidden": true, className: "h-1" })
1857
+ isServer && !loading && options.length === 0 && /* @__PURE__ */ jsx20("div", { className: "py-6 text-center text-sm text-muted-foreground", children: emptyMessage }),
1858
+ isServer && loading && /* @__PURE__ */ jsx20("div", { className: "flex items-center justify-center py-6", children: /* @__PURE__ */ jsx20(Loader22, { className: "h-4 w-4 animate-spin text-muted-foreground" }) }),
1859
+ isServer && hasMore && /* @__PURE__ */ jsx20("div", { ref: sentinelRef, "aria-hidden": true, className: "h-1" })
1777
1860
  ]
1778
1861
  }
1779
1862
  )
@@ -1782,8 +1865,8 @@ function MultiCombobox({
1782
1865
  );
1783
1866
  if (isDesktop) {
1784
1867
  return /* @__PURE__ */ jsxs17(PopoverPrimitive5.Root, { open, onOpenChange: setOpen, children: [
1785
- /* @__PURE__ */ jsx19(PopoverPrimitive5.Trigger, { asChild: true, disabled, children: trigger }),
1786
- /* @__PURE__ */ jsx19(PopoverPrimitive5.Portal, { children: /* @__PURE__ */ jsx19(
1868
+ /* @__PURE__ */ jsx20(PopoverPrimitive5.Trigger, { asChild: true, disabled, children: trigger }),
1869
+ /* @__PURE__ */ jsx20(PopoverPrimitive5.Portal, { children: /* @__PURE__ */ jsx20(
1787
1870
  PopoverPrimitive5.Content,
1788
1871
  {
1789
1872
  align: "start",
@@ -1796,12 +1879,12 @@ function MultiCombobox({
1796
1879
  ] });
1797
1880
  }
1798
1881
  return /* @__PURE__ */ jsxs17(DrawerPrimitive5.Root, { open, onOpenChange: setOpen, children: [
1799
- /* @__PURE__ */ jsx19(DrawerPrimitive5.Trigger, { asChild: true, disabled, children: trigger }),
1882
+ /* @__PURE__ */ jsx20(DrawerPrimitive5.Trigger, { asChild: true, disabled, children: trigger }),
1800
1883
  /* @__PURE__ */ jsxs17(DrawerPrimitive5.Portal, { children: [
1801
- /* @__PURE__ */ jsx19(DrawerPrimitive5.Overlay, { className: "fixed inset-0 z-50 bg-black/80" }),
1884
+ /* @__PURE__ */ jsx20(DrawerPrimitive5.Overlay, { className: "fixed inset-0 z-50 bg-black/80" }),
1802
1885
  /* @__PURE__ */ jsxs17(DrawerPrimitive5.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: [
1803
- /* @__PURE__ */ jsx19(DrawerPrimitive5.Title, { className: "sr-only", children: placeholder }),
1804
- /* @__PURE__ */ jsx19("div", { className: "mx-auto my-3 h-1.5 w-12 shrink-0 rounded-full bg-muted" }),
1886
+ /* @__PURE__ */ jsx20(DrawerPrimitive5.Title, { className: "sr-only", children: placeholder }),
1887
+ /* @__PURE__ */ jsx20("div", { className: "mx-auto my-3 h-1.5 w-12 shrink-0 rounded-full bg-muted" }),
1805
1888
  command
1806
1889
  ] })
1807
1890
  ] })
@@ -1809,7 +1892,7 @@ function MultiCombobox({
1809
1892
  }
1810
1893
 
1811
1894
  // src/components/page-header.tsx
1812
- import { jsx as jsx20, jsxs as jsxs18 } from "react/jsx-runtime";
1895
+ import { jsx as jsx21, jsxs as jsxs18 } from "react/jsx-runtime";
1813
1896
  function PageHeader({ title, description, action, className }) {
1814
1897
  return /* @__PURE__ */ jsxs18(
1815
1898
  "div",
@@ -1817,17 +1900,17 @@ function PageHeader({ title, description, action, className }) {
1817
1900
  className: `flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between ${className ?? ""}`,
1818
1901
  children: [
1819
1902
  /* @__PURE__ */ jsxs18("div", { className: "min-w-0", children: [
1820
- /* @__PURE__ */ jsx20("h1", { className: "truncate text-2xl font-semibold tracking-tight", children: title }),
1821
- description && /* @__PURE__ */ jsx20("p", { className: "text-sm text-muted-foreground", children: description })
1903
+ /* @__PURE__ */ jsx21("h1", { className: "truncate text-2xl font-semibold tracking-tight", children: title }),
1904
+ description && /* @__PURE__ */ jsx21("p", { className: "text-sm text-muted-foreground", children: description })
1822
1905
  ] }),
1823
- action && /* @__PURE__ */ jsx20("div", { className: "shrink-0", children: action })
1906
+ action && /* @__PURE__ */ jsx21("div", { className: "shrink-0", children: action })
1824
1907
  ]
1825
1908
  }
1826
1909
  );
1827
1910
  }
1828
1911
 
1829
1912
  // src/components/pagination.tsx
1830
- import { jsx as jsx21, jsxs as jsxs19 } from "react/jsx-runtime";
1913
+ import { jsx as jsx22, jsxs as jsxs19 } from "react/jsx-runtime";
1831
1914
  var navButtonClass2 = "inline-flex h-8 items-center justify-center rounded-md border border-input bg-background px-3 text-xs font-medium shadow-sm transition-colors hover:bg-accent hover:text-accent-foreground cursor-pointer disabled:pointer-events-none disabled:opacity-50";
1832
1915
  function Pagination({
1833
1916
  page,
@@ -1847,20 +1930,20 @@ function Pagination({
1847
1930
  className: `flex items-center ${showPageSizeSelector ? "justify-between" : "justify-end"} gap-4 ${className ?? ""}`,
1848
1931
  children: [
1849
1932
  showPageSizeSelector && /* @__PURE__ */ jsxs19("div", { className: "flex items-center gap-2", children: [
1850
- /* @__PURE__ */ jsx21("label", { htmlFor: "pagination-page-size", className: "text-sm text-muted-foreground", children: "Itens por p\xE1gina" }),
1851
- /* @__PURE__ */ jsx21(
1933
+ /* @__PURE__ */ jsx22("label", { htmlFor: "pagination-page-size", className: "text-sm text-muted-foreground", children: "Itens por p\xE1gina" }),
1934
+ /* @__PURE__ */ jsx22(
1852
1935
  "select",
1853
1936
  {
1854
1937
  id: "pagination-page-size",
1855
1938
  value: pageSize,
1856
1939
  onChange: (e) => onPageSizeChange?.(Number(e.target.value)),
1857
1940
  className: "h-8 rounded-md border border-input bg-background px-2 text-xs font-medium shadow-sm transition-colors hover:bg-accent focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring cursor-pointer",
1858
- children: (pageSizeOptions ?? []).map((size) => /* @__PURE__ */ jsx21("option", { value: size, children: size }, size))
1941
+ children: (pageSizeOptions ?? []).map((size) => /* @__PURE__ */ jsx22("option", { value: size, children: size }, size))
1859
1942
  }
1860
1943
  )
1861
1944
  ] }),
1862
1945
  /* @__PURE__ */ jsxs19("div", { className: "flex items-center gap-4", children: [
1863
- /* @__PURE__ */ jsx21(
1946
+ /* @__PURE__ */ jsx22(
1864
1947
  "button",
1865
1948
  {
1866
1949
  type: "button",
@@ -1875,7 +1958,7 @@ function Pagination({
1875
1958
  page,
1876
1959
  totalPages ? ` de ${totalPages}` : ""
1877
1960
  ] }),
1878
- /* @__PURE__ */ jsx21(
1961
+ /* @__PURE__ */ jsx22(
1879
1962
  "button",
1880
1963
  {
1881
1964
  type: "button",
@@ -1894,11 +1977,11 @@ function Pagination({
1894
1977
  // src/components/password-input.tsx
1895
1978
  import { Eye, EyeOff } from "lucide-react";
1896
1979
  import * as React9 from "react";
1897
- import { jsx as jsx22, jsxs as jsxs20 } from "react/jsx-runtime";
1980
+ import { jsx as jsx23, jsxs as jsxs20 } from "react/jsx-runtime";
1898
1981
  var PasswordInput = React9.forwardRef(({ containerClassName, className, ...props }, ref) => {
1899
1982
  const [visible, setVisible] = React9.useState(false);
1900
1983
  return /* @__PURE__ */ jsxs20("div", { className: `relative ${containerClassName ?? ""}`, children: [
1901
- /* @__PURE__ */ jsx22(
1984
+ /* @__PURE__ */ jsx23(
1902
1985
  "input",
1903
1986
  {
1904
1987
  ref,
@@ -1907,7 +1990,7 @@ var PasswordInput = React9.forwardRef(({ containerClassName, className, ...props
1907
1990
  ...props
1908
1991
  }
1909
1992
  ),
1910
- /* @__PURE__ */ jsx22(
1993
+ /* @__PURE__ */ jsx23(
1911
1994
  "button",
1912
1995
  {
1913
1996
  type: "button",
@@ -1915,7 +1998,7 @@ var PasswordInput = React9.forwardRef(({ containerClassName, className, ...props
1915
1998
  "aria-label": visible ? "Ocultar senha" : "Mostrar senha",
1916
1999
  tabIndex: -1,
1917
2000
  className: "absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground transition-colors hover:text-foreground",
1918
- children: visible ? /* @__PURE__ */ jsx22(EyeOff, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx22(Eye, { className: "h-4 w-4" })
2001
+ children: visible ? /* @__PURE__ */ jsx23(EyeOff, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx23(Eye, { className: "h-4 w-4" })
1919
2002
  }
1920
2003
  )
1921
2004
  ] });
@@ -1923,8 +2006,8 @@ var PasswordInput = React9.forwardRef(({ containerClassName, className, ...props
1923
2006
  PasswordInput.displayName = "PasswordInput";
1924
2007
 
1925
2008
  // src/components/progress-bar.tsx
1926
- import { jsx as jsx23, jsxs as jsxs21 } from "react/jsx-runtime";
1927
- var sizeClasses2 = {
2009
+ import { jsx as jsx24, jsxs as jsxs21 } from "react/jsx-runtime";
2010
+ var sizeClasses3 = {
1928
2011
  sm: "h-1.5",
1929
2012
  md: "h-2"
1930
2013
  };
@@ -1939,14 +2022,14 @@ function ProgressBar({
1939
2022
  const clamped = Math.min(100, Math.max(0, value));
1940
2023
  return /* @__PURE__ */ jsxs21("div", { className: `space-y-1.5 ${className ?? ""}`, children: [
1941
2024
  (label || valueLabel) && /* @__PURE__ */ jsxs21("div", { className: "flex items-baseline justify-between gap-2", children: [
1942
- label && /* @__PURE__ */ jsx23("span", { className: "text-sm text-muted-foreground", children: label }),
1943
- valueLabel && /* @__PURE__ */ jsx23("span", { className: "text-sm font-semibold", children: valueLabel })
2025
+ label && /* @__PURE__ */ jsx24("span", { className: "text-sm text-muted-foreground", children: label }),
2026
+ valueLabel && /* @__PURE__ */ jsx24("span", { className: "text-sm font-semibold", children: valueLabel })
1944
2027
  ] }),
1945
- /* @__PURE__ */ jsx23(
2028
+ /* @__PURE__ */ jsx24(
1946
2029
  "div",
1947
2030
  {
1948
- className: `w-full overflow-hidden rounded-full bg-muted ${sizeClasses2[size]}`,
1949
- children: /* @__PURE__ */ jsx23(
2031
+ className: `w-full overflow-hidden rounded-full bg-muted ${sizeClasses3[size]}`,
2032
+ children: /* @__PURE__ */ jsx24(
1950
2033
  "div",
1951
2034
  {
1952
2035
  className: `h-full rounded-full transition-all duration-300 ${indicatorClassName ?? "bg-primary"}`,
@@ -1959,7 +2042,7 @@ function ProgressBar({
1959
2042
  }
1960
2043
 
1961
2044
  // src/components/responsive-data-view.tsx
1962
- import { jsx as jsx24, jsxs as jsxs22 } from "react/jsx-runtime";
2045
+ import { jsx as jsx25, jsxs as jsxs22 } from "react/jsx-runtime";
1963
2046
  function ResponsiveDataView({
1964
2047
  table,
1965
2048
  cards,
@@ -1971,12 +2054,12 @@ function ResponsiveDataView({
1971
2054
  pagination
1972
2055
  }) {
1973
2056
  return /* @__PURE__ */ jsxs22("div", { className: "space-y-4", children: [
1974
- /* @__PURE__ */ jsx24("div", { className: "hidden overflow-x-auto rounded-md border md:block", children: table }),
1975
- /* @__PURE__ */ jsx24("div", { className: "md:hidden", children: cards }),
2057
+ /* @__PURE__ */ jsx25("div", { className: "hidden overflow-x-auto rounded-md border md:block", children: table }),
2058
+ /* @__PURE__ */ jsx25("div", { className: "md:hidden", children: cards }),
1976
2059
  !isLoading && isEmpty && /* @__PURE__ */ jsxs22("div", { className: "flex flex-col items-center justify-center py-16 text-center", children: [
1977
- emptyIcon && /* @__PURE__ */ jsx24("div", { className: "mb-4 text-muted-foreground", children: emptyIcon }),
1978
- /* @__PURE__ */ jsx24("h3", { className: "text-lg font-semibold tracking-tight", children: emptyTitle }),
1979
- emptyDescription && /* @__PURE__ */ jsx24("p", { className: "mt-1 max-w-sm text-sm text-muted-foreground", children: emptyDescription })
2060
+ emptyIcon && /* @__PURE__ */ jsx25("div", { className: "mb-4 text-muted-foreground", children: emptyIcon }),
2061
+ /* @__PURE__ */ jsx25("h3", { className: "text-lg font-semibold tracking-tight", children: emptyTitle }),
2062
+ emptyDescription && /* @__PURE__ */ jsx25("p", { className: "mt-1 max-w-sm text-sm text-muted-foreground", children: emptyDescription })
1980
2063
  ] }),
1981
2064
  pagination
1982
2065
  ] });
@@ -1987,7 +2070,7 @@ import * as DropdownMenu3 from "@radix-ui/react-dropdown-menu";
1987
2070
  import { MoreVertical } from "lucide-react";
1988
2071
  import { useState as useState11 } from "react";
1989
2072
  import { Drawer as DrawerPrimitive6 } from "vaul";
1990
- import { Fragment as Fragment6, jsx as jsx25, jsxs as jsxs23 } from "react/jsx-runtime";
2073
+ import { Fragment as Fragment6, jsx as jsx26, jsxs as jsxs23 } from "react/jsx-runtime";
1991
2074
  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";
1992
2075
  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";
1993
2076
  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";
@@ -2001,20 +2084,20 @@ function RowActionsMenu({
2001
2084
  const isDesktop = useIsDesktop();
2002
2085
  const [open, setOpen] = useState11(false);
2003
2086
  if (actions.length === 0) return null;
2004
- const trigger = /* @__PURE__ */ jsx25(
2087
+ const trigger = /* @__PURE__ */ jsx26(
2005
2088
  "button",
2006
2089
  {
2007
2090
  type: "button",
2008
2091
  disabled,
2009
2092
  "aria-label": label,
2010
2093
  className: triggerClass,
2011
- children: /* @__PURE__ */ jsx25(MoreVertical, { className: "h-4 w-4" })
2094
+ children: /* @__PURE__ */ jsx26(MoreVertical, { className: "h-4 w-4" })
2012
2095
  }
2013
2096
  );
2014
2097
  if (isDesktop) {
2015
2098
  return /* @__PURE__ */ jsxs23(DropdownMenu3.Root, { open, onOpenChange: setOpen, modal: false, children: [
2016
- /* @__PURE__ */ jsx25(DropdownMenu3.Trigger, { asChild: true, children: trigger }),
2017
- /* @__PURE__ */ jsx25(DropdownMenu3.Portal, { children: /* @__PURE__ */ jsx25(
2099
+ /* @__PURE__ */ jsx26(DropdownMenu3.Trigger, { asChild: true, children: trigger }),
2100
+ /* @__PURE__ */ jsx26(DropdownMenu3.Portal, { children: /* @__PURE__ */ jsx26(
2018
2101
  DropdownMenu3.Content,
2019
2102
  {
2020
2103
  align,
@@ -2025,7 +2108,7 @@ function RowActionsMenu({
2025
2108
  itemClass2,
2026
2109
  action.destructive && "text-destructive focus:bg-destructive/10"
2027
2110
  );
2028
- return action.href ? /* @__PURE__ */ jsx25(
2111
+ return action.href ? /* @__PURE__ */ jsx26(
2029
2112
  DropdownMenu3.Item,
2030
2113
  {
2031
2114
  asChild: true,
@@ -2059,12 +2142,12 @@ function RowActionsMenu({
2059
2142
  ] });
2060
2143
  }
2061
2144
  return /* @__PURE__ */ jsxs23(DrawerPrimitive6.Root, { open, onOpenChange: setOpen, children: [
2062
- /* @__PURE__ */ jsx25(DrawerPrimitive6.Trigger, { asChild: true, children: trigger }),
2145
+ /* @__PURE__ */ jsx26(DrawerPrimitive6.Trigger, { asChild: true, children: trigger }),
2063
2146
  /* @__PURE__ */ jsxs23(DrawerPrimitive6.Portal, { children: [
2064
- /* @__PURE__ */ jsx25(DrawerPrimitive6.Overlay, { className: "fixed inset-0 z-50 bg-black/80" }),
2147
+ /* @__PURE__ */ jsx26(DrawerPrimitive6.Overlay, { className: "fixed inset-0 z-50 bg-black/80" }),
2065
2148
  /* @__PURE__ */ jsxs23(DrawerPrimitive6.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: [
2066
- /* @__PURE__ */ jsx25(DrawerPrimitive6.Title, { className: "sr-only", children: label }),
2067
- /* @__PURE__ */ jsx25("div", { className: "mx-auto my-3 h-1.5 w-12 shrink-0 rounded-full bg-muted" }),
2149
+ /* @__PURE__ */ jsx26(DrawerPrimitive6.Title, { className: "sr-only", children: label }),
2150
+ /* @__PURE__ */ jsx26("div", { className: "mx-auto my-3 h-1.5 w-12 shrink-0 rounded-full bg-muted" }),
2068
2151
  actions.map((action) => {
2069
2152
  const cls = cn(
2070
2153
  sheetItemClass2,
@@ -2074,7 +2157,7 @@ function RowActionsMenu({
2074
2157
  action.icon,
2075
2158
  action.label
2076
2159
  ] });
2077
- return action.href ? /* @__PURE__ */ jsx25(
2160
+ return action.href ? /* @__PURE__ */ jsx26(
2078
2161
  "span",
2079
2162
  {
2080
2163
  onClick: () => setOpen(false),
@@ -2086,7 +2169,7 @@ function RowActionsMenu({
2086
2169
  })
2087
2170
  },
2088
2171
  action.label
2089
- ) : /* @__PURE__ */ jsx25(
2172
+ ) : /* @__PURE__ */ jsx26(
2090
2173
  "button",
2091
2174
  {
2092
2175
  type: "button",
@@ -2108,10 +2191,10 @@ function RowActionsMenu({
2108
2191
 
2109
2192
  // src/components/search-input.tsx
2110
2193
  import * as React10 from "react";
2111
- import { jsx as jsx26, jsxs as jsxs24 } from "react/jsx-runtime";
2194
+ import { jsx as jsx27, jsxs as jsxs24 } from "react/jsx-runtime";
2112
2195
  var SearchInput = React10.forwardRef(
2113
2196
  ({ containerClassName, className, ...props }, ref) => {
2114
- return /* @__PURE__ */ jsxs24("div", { className: `relative flex-1 ${containerClassName ?? ""}`, children: [
2197
+ return /* @__PURE__ */ jsxs24("div", { className: cn("relative flex-1", containerClassName), children: [
2115
2198
  /* @__PURE__ */ jsxs24(
2116
2199
  "svg",
2117
2200
  {
@@ -2124,19 +2207,23 @@ var SearchInput = React10.forwardRef(
2124
2207
  strokeWidth: "2",
2125
2208
  strokeLinecap: "round",
2126
2209
  strokeLinejoin: "round",
2210
+ "aria-hidden": "true",
2127
2211
  className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground",
2128
2212
  children: [
2129
- /* @__PURE__ */ jsx26("circle", { cx: "11", cy: "11", r: "8" }),
2130
- /* @__PURE__ */ jsx26("path", { d: "m21 21-4.3-4.3" })
2213
+ /* @__PURE__ */ jsx27("circle", { cx: "11", cy: "11", r: "8" }),
2214
+ /* @__PURE__ */ jsx27("path", { d: "m21 21-4.3-4.3" })
2131
2215
  ]
2132
2216
  }
2133
2217
  ),
2134
- /* @__PURE__ */ jsx26(
2218
+ /* @__PURE__ */ jsx27(
2135
2219
  "input",
2136
2220
  {
2137
2221
  ref,
2138
2222
  type: "text",
2139
- className: `flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 pl-10 text-sm shadow-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 ${className ?? ""}`,
2223
+ className: cn(
2224
+ "flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 pl-10 text-sm shadow-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",
2225
+ className
2226
+ ),
2140
2227
  ...props
2141
2228
  }
2142
2229
  )
@@ -2146,30 +2233,30 @@ var SearchInput = React10.forwardRef(
2146
2233
  SearchInput.displayName = "SearchInput";
2147
2234
 
2148
2235
  // src/components/stat-card.tsx
2149
- import { jsx as jsx27, jsxs as jsxs25 } from "react/jsx-runtime";
2236
+ import { jsx as jsx28, jsxs as jsxs25 } from "react/jsx-runtime";
2150
2237
  function StatCard({ label, value, detail, icon, isLoading }) {
2151
2238
  if (isLoading) {
2152
2239
  return /* @__PURE__ */ jsxs25("div", { className: "rounded-lg border bg-card p-6 shadow-sm", children: [
2153
2240
  /* @__PURE__ */ jsxs25("div", { className: "flex items-center justify-between pb-2", children: [
2154
- /* @__PURE__ */ jsx27("div", { className: "h-4 w-24 animate-pulse rounded bg-muted" }),
2155
- /* @__PURE__ */ jsx27("div", { className: "h-4 w-4 animate-pulse rounded bg-muted" })
2241
+ /* @__PURE__ */ jsx28("div", { className: "h-4 w-24 animate-pulse rounded bg-muted" }),
2242
+ /* @__PURE__ */ jsx28("div", { className: "h-4 w-4 animate-pulse rounded bg-muted" })
2156
2243
  ] }),
2157
- /* @__PURE__ */ jsx27("div", { className: "mt-2 h-7 w-16 animate-pulse rounded bg-muted" }),
2158
- /* @__PURE__ */ jsx27("div", { className: "mt-1 h-4 w-20 animate-pulse rounded bg-muted" })
2244
+ /* @__PURE__ */ jsx28("div", { className: "mt-2 h-7 w-16 animate-pulse rounded bg-muted" }),
2245
+ /* @__PURE__ */ jsx28("div", { className: "mt-1 h-4 w-20 animate-pulse rounded bg-muted" })
2159
2246
  ] });
2160
2247
  }
2161
2248
  return /* @__PURE__ */ jsxs25("div", { className: "rounded-lg border bg-card p-6 shadow-sm", children: [
2162
2249
  /* @__PURE__ */ jsxs25("div", { className: "flex items-center justify-between pb-2", children: [
2163
- /* @__PURE__ */ jsx27("span", { className: "text-sm font-medium text-muted-foreground", children: label }),
2164
- icon && /* @__PURE__ */ jsx27("span", { className: "text-muted-foreground", children: icon })
2250
+ /* @__PURE__ */ jsx28("span", { className: "text-sm font-medium text-muted-foreground", children: label }),
2251
+ icon && /* @__PURE__ */ jsx28("span", { className: "text-muted-foreground", children: icon })
2165
2252
  ] }),
2166
- /* @__PURE__ */ jsx27("div", { className: "text-2xl font-bold", children: value }),
2167
- detail && /* @__PURE__ */ jsx27("p", { className: "text-xs text-muted-foreground", children: detail })
2253
+ /* @__PURE__ */ jsx28("div", { className: "text-2xl font-bold", children: value }),
2254
+ detail && /* @__PURE__ */ jsx28("p", { className: "text-xs text-muted-foreground", children: detail })
2168
2255
  ] });
2169
2256
  }
2170
2257
 
2171
2258
  // src/components/status-badge.tsx
2172
- import { jsx as jsx28, jsxs as jsxs26 } from "react/jsx-runtime";
2259
+ import { jsx as jsx29, jsxs as jsxs26 } from "react/jsx-runtime";
2173
2260
  var variantClasses = {
2174
2261
  neutral: {
2175
2262
  badge: "bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-300",
@@ -2204,7 +2291,7 @@ function StatusBadge({
2204
2291
  {
2205
2292
  className: `inline-flex items-center gap-1.5 rounded-md px-2 py-0.5 text-xs font-medium ${classes.badge} ${className ?? ""}`,
2206
2293
  children: [
2207
- dot && /* @__PURE__ */ jsx28(
2294
+ dot && /* @__PURE__ */ jsx29(
2208
2295
  "span",
2209
2296
  {
2210
2297
  className: `inline-block h-1.5 w-1.5 shrink-0 rounded-full ${classes.dot}`
@@ -2217,31 +2304,31 @@ function StatusBadge({
2217
2304
  }
2218
2305
 
2219
2306
  // src/components/status-dot.tsx
2220
- import { jsx as jsx29, jsxs as jsxs27 } from "react/jsx-runtime";
2307
+ import { jsx as jsx30, jsxs as jsxs27 } from "react/jsx-runtime";
2221
2308
  function StatusDot({ active, label, className }) {
2222
2309
  return /* @__PURE__ */ jsxs27("span", { className: `inline-flex items-center gap-2 ${className ?? ""}`, children: [
2223
- /* @__PURE__ */ jsx29(
2310
+ /* @__PURE__ */ jsx30(
2224
2311
  "span",
2225
2312
  {
2226
2313
  className: `h-2 w-2 rounded-full ${active ? "bg-green-500" : "bg-red-500"}`
2227
2314
  }
2228
2315
  ),
2229
- label && /* @__PURE__ */ jsx29("span", { children: label })
2316
+ label && /* @__PURE__ */ jsx30("span", { children: label })
2230
2317
  ] });
2231
2318
  }
2232
2319
 
2233
2320
  // src/components/table-skeleton.tsx
2234
- import { Fragment as Fragment7, jsx as jsx30 } from "react/jsx-runtime";
2321
+ import { Fragment as Fragment7, jsx as jsx31 } from "react/jsx-runtime";
2235
2322
  function TableSkeleton({ rows = 5, columns = 4 }) {
2236
- return /* @__PURE__ */ jsx30(Fragment7, { children: Array.from({ length: rows }).map((_, i) => /* @__PURE__ */ jsx30("tr", { className: "border-b transition-colors", children: Array.from({ length: columns }).map((_2, j) => /* @__PURE__ */ jsx30("td", { className: "p-4 align-middle", children: /* @__PURE__ */ jsx30("div", { className: "h-5 w-full animate-pulse rounded bg-muted" }) }, j)) }, i)) });
2323
+ return /* @__PURE__ */ jsx31(Fragment7, { children: Array.from({ length: rows }).map((_, i) => /* @__PURE__ */ jsx31("tr", { className: "border-b transition-colors", children: Array.from({ length: columns }).map((_2, j) => /* @__PURE__ */ jsx31("td", { className: "p-4 align-middle", children: /* @__PURE__ */ jsx31("div", { className: "h-5 w-full animate-pulse rounded bg-muted" }) }, j)) }, i)) });
2237
2324
  }
2238
2325
 
2239
2326
  // src/components/toaster.tsx
2240
2327
  import { Toaster as Sonner } from "sonner";
2241
- import { jsx as jsx31 } from "react/jsx-runtime";
2328
+ import { jsx as jsx32 } from "react/jsx-runtime";
2242
2329
  function Toaster(props) {
2243
2330
  const { theme = "system" } = useTheme();
2244
- return /* @__PURE__ */ jsx31(
2331
+ return /* @__PURE__ */ jsx32(
2245
2332
  Sonner,
2246
2333
  {
2247
2334
  theme,
@@ -2365,6 +2452,7 @@ export {
2365
2452
  Pagination,
2366
2453
  PasswordInput,
2367
2454
  ProgressBar,
2455
+ Rating,
2368
2456
  ResponsiveDataView,
2369
2457
  RowActionsMenu,
2370
2458
  SearchInput,