@ceed/ads 1.41.3 → 1.41.4

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
@@ -347,7 +347,7 @@ function Alert(inProps) {
347
347
  Alert.displayName = "Alert";
348
348
 
349
349
  // src/components/Autocomplete/Autocomplete.tsx
350
- var import_react6 = __toESM(require("react"));
350
+ var import_react7 = __toESM(require("react"));
351
351
  var import_joy10 = require("@mui/joy");
352
352
  var import_base = require("@mui/base");
353
353
  var import_Close = __toESM(require("@mui/icons-material/Close"));
@@ -439,6 +439,46 @@ function useControlledState(controlledValue, defaultValue, onChange) {
439
439
  return [displayValue, handleChange, isControlled];
440
440
  }
441
441
 
442
+ // src/libs/slot-props.ts
443
+ var import_react6 = require("react");
444
+ function assignRef(ref, value) {
445
+ if (typeof ref === "function") ref(value);
446
+ else if (ref) ref.current = value;
447
+ }
448
+ function mergeRefs(...refs) {
449
+ const live = refs.filter((r) => r != null);
450
+ if (live.length === 0) return void 0;
451
+ if (live.length === 1) return live[0];
452
+ return (value) => live.forEach((r) => assignRef(r, value));
453
+ }
454
+ function useMergedRef(a, b) {
455
+ return (0, import_react6.useMemo)(() => mergeRefs(a, b), [a, b]);
456
+ }
457
+ function useSlotRef(slotProp, ref) {
458
+ const isFunctionForm = typeof slotProp === "function";
459
+ const slotRef = isFunctionForm ? void 0 : slotProp?.ref;
460
+ const mergedRef = useMergedRef(slotRef, ref);
461
+ const latestSlotRef = (0, import_react6.useRef)(null);
462
+ const stableMergedRef = (0, import_react6.useCallback)(
463
+ (value) => {
464
+ assignRef(latestSlotRef.current, value);
465
+ assignRef(ref, value);
466
+ },
467
+ [ref]
468
+ );
469
+ return (0, import_react6.useMemo)(() => {
470
+ if (isFunctionForm) {
471
+ return ((ownerState) => {
472
+ const resolved = slotProp(ownerState) ?? {};
473
+ const resolvedRef = resolved.ref;
474
+ latestSlotRef.current = resolvedRef ?? null;
475
+ return resolvedRef || ref ? { ...resolved, ref: stableMergedRef } : { ...resolved };
476
+ });
477
+ }
478
+ return mergedRef ? { ...slotProp, ref: mergedRef } : { ...slotProp };
479
+ }, [isFunctionForm, slotProp, mergedRef, ref, stableMergedRef]);
480
+ }
481
+
442
482
  // src/components/Autocomplete/Autocomplete.tsx
443
483
  var AutocompletePopper = (0, import_joy10.styled)(import_base2.Popper, {
444
484
  name: "Autocomplete",
@@ -451,7 +491,7 @@ var itemHeightMap = {
451
491
  md: { default: 36, secondary: 55 },
452
492
  lg: { default: 44, secondary: 65 }
453
493
  };
454
- var AutocompleteListBox = import_react6.default.forwardRef((props, ref) => {
494
+ var AutocompleteListBox = import_react7.default.forwardRef((props, ref) => {
455
495
  const {
456
496
  anchorEl,
457
497
  open,
@@ -461,13 +501,13 @@ var AutocompleteListBox = import_react6.default.forwardRef((props, ref) => {
461
501
  ownerState: { loading, size: fontSize },
462
502
  ...innerProps
463
503
  } = props;
464
- const parentRef = (0, import_react6.useRef)(null);
504
+ const parentRef = (0, import_react7.useRef)(null);
465
505
  const isGrouped = children[0].every((child) => child.hasOwnProperty("group"));
466
- const itemHeight = (0, import_react6.useMemo)(() => {
506
+ const itemHeight = (0, import_react7.useMemo)(() => {
467
507
  const heights = itemHeightMap[fontSize ?? "md"];
468
508
  return hasSecondaryText ? heights.secondary : heights.default;
469
509
  }, [fontSize, hasSecondaryText]);
470
- const renderTargets = (0, import_react6.useMemo)(() => {
510
+ const renderTargets = (0, import_react7.useMemo)(() => {
471
511
  if (loading) {
472
512
  return [children[1]];
473
513
  }
@@ -476,7 +516,7 @@ var AutocompleteListBox = import_react6.default.forwardRef((props, ref) => {
476
516
  }
477
517
  if (isGrouped) {
478
518
  return children[0].flatMap((child) => [
479
- /* @__PURE__ */ import_react6.default.createElement(import_joy10.ListSubheader, { key: child.key, component: "li" }, child.group),
519
+ /* @__PURE__ */ import_react7.default.createElement(import_joy10.ListSubheader, { key: child.key, component: "li" }, child.group),
480
520
  ...child.children
481
521
  ]);
482
522
  }
@@ -490,12 +530,12 @@ var AutocompleteListBox = import_react6.default.forwardRef((props, ref) => {
490
530
  overscan: 5
491
531
  });
492
532
  const items = virtualizer.getVirtualItems();
493
- (0, import_react6.useEffect)(() => {
533
+ (0, import_react7.useEffect)(() => {
494
534
  if (open) {
495
535
  virtualizer.measure();
496
536
  }
497
537
  }, [open, virtualizer]);
498
- return /* @__PURE__ */ import_react6.default.createElement(AutocompletePopper, { ref, anchorEl, open, modifiers }, /* @__PURE__ */ import_react6.default.createElement(import_joy10.AutocompleteListbox, { ...innerProps, size: fontSize }, /* @__PURE__ */ import_react6.default.createElement("div", { ref: parentRef, style: { overflow: "auto" } }, /* @__PURE__ */ import_react6.default.createElement(
538
+ return /* @__PURE__ */ import_react7.default.createElement(AutocompletePopper, { ref, anchorEl, open, modifiers }, /* @__PURE__ */ import_react7.default.createElement(import_joy10.AutocompleteListbox, { ...innerProps, size: fontSize }, /* @__PURE__ */ import_react7.default.createElement("div", { ref: parentRef, style: { overflow: "auto" } }, /* @__PURE__ */ import_react7.default.createElement(
499
539
  "div",
500
540
  {
501
541
  style: {
@@ -504,7 +544,7 @@ var AutocompleteListBox = import_react6.default.forwardRef((props, ref) => {
504
544
  }
505
545
  },
506
546
  items.map(
507
- ({ index, size, start, key }) => import_react6.default.cloneElement(renderTargets[index], {
547
+ ({ index, size, start, key }) => import_react7.default.cloneElement(renderTargets[index], {
508
548
  key,
509
549
  style: {
510
550
  position: "absolute",
@@ -516,7 +556,7 @@ var AutocompleteListBox = import_react6.default.forwardRef((props, ref) => {
516
556
  transform: `translateY(${start}px)`,
517
557
  overflow: "visible"
518
558
  },
519
- children: /* @__PURE__ */ import_react6.default.createElement(
559
+ children: /* @__PURE__ */ import_react7.default.createElement(
520
560
  "div",
521
561
  {
522
562
  style: {
@@ -559,7 +599,7 @@ var autocompleteFilterOptions = (0, import_base.createFilterOptions)({
559
599
  }
560
600
  });
561
601
  var getOptionLabel = (option) => `${option.label ?? ""}`;
562
- function Autocomplete(props) {
602
+ function AutocompleteInner(props, ref) {
563
603
  const {
564
604
  label,
565
605
  error,
@@ -578,7 +618,7 @@ function Autocomplete(props) {
578
618
  const [rawValue, setValue] = useControlledState(
579
619
  props.value,
580
620
  props.defaultValue ?? null,
581
- (0, import_react6.useCallback)(
621
+ (0, import_react7.useCallback)(
582
622
  (value2) => onChange?.({
583
623
  target: {
584
624
  value: value2,
@@ -589,7 +629,7 @@ function Autocomplete(props) {
589
629
  )
590
630
  );
591
631
  const _value = rawValue ?? (props.multiple ? EMPTY_MULTIPLE_VALUE : "");
592
- const options = (0, import_react6.useMemo)(
632
+ const options = (0, import_react7.useMemo)(
593
633
  () => props.options.map((option) => {
594
634
  if (typeof option !== "object") {
595
635
  return {
@@ -601,19 +641,19 @@ function Autocomplete(props) {
601
641
  }),
602
642
  [props.options]
603
643
  );
604
- const optionMap = (0, import_react6.useMemo)(() => {
644
+ const optionMap = (0, import_react7.useMemo)(() => {
605
645
  const map = /* @__PURE__ */ new Map();
606
646
  options.forEach((option) => {
607
647
  map.set(option.value, option);
608
648
  });
609
649
  return map;
610
650
  }, [options]);
611
- const value = (0, import_react6.useMemo)(() => {
651
+ const value = (0, import_react7.useMemo)(() => {
612
652
  if (props.loading) {
613
653
  return {
614
654
  value: "",
615
655
  label: "",
616
- startDecorator: /* @__PURE__ */ import_react6.default.createElement(import_joy10.CircularProgress, { size: "sm", color: "neutral", variant: "plain", thickness: 3 })
656
+ startDecorator: /* @__PURE__ */ import_react7.default.createElement(import_joy10.CircularProgress, { size: "sm", color: "neutral", variant: "plain", thickness: 3 })
617
657
  };
618
658
  }
619
659
  if (Array.isArray(_value)) {
@@ -621,31 +661,33 @@ function Autocomplete(props) {
621
661
  }
622
662
  return optionMap.get(_value);
623
663
  }, [_value, optionMap, props.loading]);
624
- const applySize = (0, import_react6.useCallback)(
664
+ const applySize = (0, import_react7.useCallback)(
625
665
  (node) => {
626
- return import_react6.default.isValidElement(node) && !props.loading ? import_react6.default.cloneElement(node, { ...{ size } }) : node;
666
+ return import_react7.default.isValidElement(node) && !props.loading ? import_react7.default.cloneElement(node, { ...{ size } }) : node;
627
667
  },
628
668
  [size, props.loading]
629
669
  );
630
- const startDecorator = (0, import_react6.useMemo)(
670
+ const startDecorator = (0, import_react7.useMemo)(
631
671
  () => applySize(value?.startDecorator || props.startDecorator),
632
672
  [value, applySize, props.startDecorator]
633
673
  );
634
- const endDecorator = (0, import_react6.useMemo)(
674
+ const endDecorator = (0, import_react7.useMemo)(
635
675
  () => applySize(value?.endDecorator || props.endDecorator),
636
676
  [value, applySize, props.endDecorator]
637
677
  );
638
- const slotProps = (0, import_react6.useMemo)(
678
+ const inputSlotProps = useSlotRef(props.slotProps?.input, ref);
679
+ const slotProps = (0, import_react7.useMemo)(
639
680
  () => ({
640
681
  ...props.slotProps,
641
682
  listbox: {
642
683
  ...props.slotProps?.listbox,
643
684
  hasSecondaryText: options.some((opt) => opt.secondaryText)
644
- }
685
+ },
686
+ input: inputSlotProps
645
687
  }),
646
- [options, props.slotProps]
688
+ [options, props.slotProps, inputSlotProps]
647
689
  );
648
- const handleChange = (0, import_react6.useCallback)(
690
+ const handleChange = (0, import_react7.useCallback)(
649
691
  (event, value2) => {
650
692
  const newValue = value2;
651
693
  const _value2 = Array.isArray(newValue) ? newValue.map((value3) => value3.value) : newValue?.value;
@@ -662,7 +704,7 @@ function Autocomplete(props) {
662
704
  },
663
705
  [onChangeComplete, setValue, optionMap]
664
706
  );
665
- const autocomplete = /* @__PURE__ */ import_react6.default.createElement(
707
+ const autocomplete = /* @__PURE__ */ import_react7.default.createElement(
666
708
  import_joy10.Autocomplete,
667
709
  {
668
710
  ...innerProps,
@@ -677,10 +719,10 @@ function Autocomplete(props) {
677
719
  endDecorator,
678
720
  getOptionLabel,
679
721
  renderTags: (tags, getTagProps) => tags.map((tag, index) => {
680
- const { onClick, ...rest } = getTagProps({ index });
722
+ const { onClick, key, ...rest } = getTagProps({ index });
681
723
  return applySize(
682
- /* @__PURE__ */ import_react6.default.createElement(Chip_default, { color: "primary", ...rest }, /* @__PURE__ */ import_react6.default.createElement(Stack_default, { direction: "row", alignItems: "center", gap: 2, py: 0.5 }, tag.value, applySize(
683
- /* @__PURE__ */ import_react6.default.createElement(AutocompleteTagDelete, { color: "primary", variant: "soft", onClick, size }, /* @__PURE__ */ import_react6.default.createElement(import_Close.default, null))
724
+ /* @__PURE__ */ import_react7.default.createElement(Chip_default, { key, color: "primary", ...rest }, /* @__PURE__ */ import_react7.default.createElement(Stack_default, { direction: "row", alignItems: "center", gap: 2, py: 0.5 }, tag.value, applySize(
725
+ /* @__PURE__ */ import_react7.default.createElement(AutocompleteTagDelete, { color: "primary", variant: "soft", onClick, size }, /* @__PURE__ */ import_react7.default.createElement(import_Close.default, null))
684
726
  )))
685
727
  );
686
728
  }),
@@ -689,30 +731,33 @@ function Autocomplete(props) {
689
731
  },
690
732
  slotProps,
691
733
  filterOptions: autocompleteFilterOptions,
692
- renderOption: (props2, option) => /* @__PURE__ */ import_react6.default.createElement(import_joy10.AutocompleteOption, { ...props2 }, option.startDecorator && /* @__PURE__ */ import_react6.default.createElement(
693
- import_joy10.ListItemDecorator,
694
- {
695
- sx: (theme) => ({
696
- marginInlineEnd: `var(--Input-gap, ${theme.spacing(1)})`
697
- })
698
- },
699
- applySize(option.startDecorator)
700
- ), option.secondaryText ? /* @__PURE__ */ import_react6.default.createElement(import_joy10.ListItemContent, { sx: { gap: 0.5 } }, /* @__PURE__ */ import_react6.default.createElement(import_joy10.Typography, { level: "inherit" }, applySize(option.label)), /* @__PURE__ */ import_react6.default.createElement(import_joy10.Typography, { level: secondaryTextLevelMap[size ?? "md"], textColor: "text.tertiary" }, option.secondaryText)) : (
701
- // TODO: haulla에서 사용할 때, label을 ReactNode로 넘기면 에러가 발생함....
702
- applySize(option.label)
703
- ), option.endDecorator && /* @__PURE__ */ import_react6.default.createElement(
704
- import_joy10.ListItemDecorator,
705
- {
706
- sx: (theme) => ({
707
- marginInlineStart: `var(--Input-gap, ${theme.spacing(1)})`
708
- })
709
- },
710
- applySize(option.endDecorator)
711
- )),
734
+ renderOption: (props2, option) => {
735
+ const { key, ...optionProps } = props2;
736
+ return /* @__PURE__ */ import_react7.default.createElement(import_joy10.AutocompleteOption, { key, ...optionProps }, option.startDecorator && /* @__PURE__ */ import_react7.default.createElement(
737
+ import_joy10.ListItemDecorator,
738
+ {
739
+ sx: (theme) => ({
740
+ marginInlineEnd: `var(--Input-gap, ${theme.spacing(1)})`
741
+ })
742
+ },
743
+ applySize(option.startDecorator)
744
+ ), option.secondaryText ? /* @__PURE__ */ import_react7.default.createElement(import_joy10.ListItemContent, { sx: { gap: 0.5 } }, /* @__PURE__ */ import_react7.default.createElement(import_joy10.Typography, { level: "inherit" }, applySize(option.label)), /* @__PURE__ */ import_react7.default.createElement(import_joy10.Typography, { level: secondaryTextLevelMap[size ?? "md"], textColor: "text.tertiary" }, option.secondaryText)) : (
745
+ // TODO: haulla에서 사용할 때, label을 ReactNode로 넘기면 에러가 발생함....
746
+ applySize(option.label)
747
+ ), option.endDecorator && /* @__PURE__ */ import_react7.default.createElement(
748
+ import_joy10.ListItemDecorator,
749
+ {
750
+ sx: (theme) => ({
751
+ marginInlineStart: `var(--Input-gap, ${theme.spacing(1)})`
752
+ })
753
+ },
754
+ applySize(option.endDecorator)
755
+ ));
756
+ },
712
757
  renderGroup: (params) => params
713
758
  }
714
759
  );
715
- return /* @__PURE__ */ import_react6.default.createElement(
760
+ return /* @__PURE__ */ import_react7.default.createElement(
716
761
  FormControl_default,
717
762
  {
718
763
  required,
@@ -723,18 +768,19 @@ function Autocomplete(props) {
723
768
  sx,
724
769
  className
725
770
  },
726
- label && /* @__PURE__ */ import_react6.default.createElement(FormLabel_default, null, label),
771
+ label && /* @__PURE__ */ import_react7.default.createElement(FormLabel_default, null, label),
727
772
  autocomplete,
728
- helperText && /* @__PURE__ */ import_react6.default.createElement(FormHelperText_default, null, helperText)
773
+ helperText && /* @__PURE__ */ import_react7.default.createElement(FormHelperText_default, null, helperText)
729
774
  );
730
775
  }
776
+ var Autocomplete = import_react7.default.forwardRef(AutocompleteInner);
731
777
  Autocomplete.displayName = "Autocomplete";
732
778
 
733
779
  // src/components/Autocomplete/index.ts
734
780
  var Autocomplete_default = Autocomplete;
735
781
 
736
782
  // src/components/Avatar/Avatar.tsx
737
- var import_react7 = __toESM(require("react"));
783
+ var import_react8 = __toESM(require("react"));
738
784
  var import_joy11 = require("@mui/joy");
739
785
  var StyledAvatar = (0, import_joy11.styled)(import_joy11.Avatar, {
740
786
  name: "Avatar",
@@ -756,19 +802,19 @@ var defaultGetInitial = (name) => {
756
802
  return (firstName.charAt(0) + lastName.charAt(0)).toUpperCase();
757
803
  }
758
804
  };
759
- var Avatar = (0, import_react7.forwardRef)(function Avatar2(inProps, ref) {
805
+ var Avatar = (0, import_react8.forwardRef)(function Avatar2(inProps, ref) {
760
806
  const props = (0, import_joy11.useThemeProps)({
761
807
  props: inProps,
762
808
  name: "Avatar"
763
809
  });
764
810
  const { children, getInitial = defaultGetInitial, ...inheritProps } = props;
765
- const calcChildren = (0, import_react7.useMemo)(() => {
811
+ const calcChildren = (0, import_react8.useMemo)(() => {
766
812
  if (typeof children === "string") {
767
813
  return getInitial?.(children) ?? "";
768
814
  }
769
815
  return children;
770
816
  }, [children, getInitial]);
771
- return /* @__PURE__ */ import_react7.default.createElement(StyledAvatar, { ...inheritProps, children: calcChildren, ref });
817
+ return /* @__PURE__ */ import_react8.default.createElement(StyledAvatar, { ...inheritProps, children: calcChildren, ref });
772
818
  });
773
819
 
774
820
  // src/components/Box/Box.tsx
@@ -782,16 +828,16 @@ Box.displayName = "Box";
782
828
  var Box_default = Box;
783
829
 
784
830
  // src/components/Breadcrumbs/Breadcrumbs.tsx
785
- var import_react10 = __toESM(require("react"));
831
+ var import_react11 = __toESM(require("react"));
786
832
  var import_joy16 = require("@mui/joy");
787
833
 
788
834
  // src/components/Menu/Menu.tsx
789
- var import_react8 = __toESM(require("react"));
835
+ var import_react9 = __toESM(require("react"));
790
836
  var import_joy13 = require("@mui/joy");
791
837
  var import_framer_motion10 = require("framer-motion");
792
838
  var MotionMenu = (0, import_framer_motion10.motion)(import_joy13.Menu);
793
839
  var Menu = (props) => {
794
- return /* @__PURE__ */ import_react8.default.createElement(MotionMenu, { ...props });
840
+ return /* @__PURE__ */ import_react9.default.createElement(MotionMenu, { ...props });
795
841
  };
796
842
  Menu.displayName = "Menu";
797
843
  var MenuItem = import_joy13.MenuItem;
@@ -800,22 +846,22 @@ var MenuItem = import_joy13.MenuItem;
800
846
  var Menu_default = Menu;
801
847
 
802
848
  // src/components/Dropdown/Dropdown.tsx
803
- var import_react9 = __toESM(require("react"));
849
+ var import_react10 = __toESM(require("react"));
804
850
  var import_joy14 = require("@mui/joy");
805
851
  var import_joy15 = require("@mui/joy");
806
852
  var import_useMenuButton = require("@mui/base/useMenuButton");
807
- var DropdownNestedRegistryContext = (0, import_react9.createContext)(null);
853
+ var DropdownNestedRegistryContext = (0, import_react10.createContext)(null);
808
854
  function Dropdown({ open: openProp, defaultOpen = false, onOpenChange, ...rest }) {
809
- const [nestedCount, setNestedCount] = (0, import_react9.useState)(0);
855
+ const [nestedCount, setNestedCount] = (0, import_react10.useState)(0);
810
856
  const [open, setOpen] = useControlledState(openProp, defaultOpen);
811
- const registry = (0, import_react9.useMemo)(
857
+ const registry = (0, import_react10.useMemo)(
812
858
  () => ({
813
859
  register: () => setNestedCount((c) => c + 1),
814
860
  unregister: () => setNestedCount((c) => Math.max(0, c - 1))
815
861
  }),
816
862
  []
817
863
  );
818
- const handleOpenChange = (0, import_react9.useCallback)(
864
+ const handleOpenChange = (0, import_react10.useCallback)(
819
865
  (event, isOpen) => {
820
866
  if (nestedCount > 0 && !isOpen && event?.type === "blur") {
821
867
  return;
@@ -825,7 +871,7 @@ function Dropdown({ open: openProp, defaultOpen = false, onOpenChange, ...rest }
825
871
  },
826
872
  [nestedCount, setOpen, onOpenChange]
827
873
  );
828
- return /* @__PURE__ */ import_react9.default.createElement(DropdownNestedRegistryContext.Provider, { value: registry }, /* @__PURE__ */ import_react9.default.createElement(import_joy14.Dropdown, { open, onOpenChange: handleOpenChange, ...rest }));
874
+ return /* @__PURE__ */ import_react10.default.createElement(DropdownNestedRegistryContext.Provider, { value: registry }, /* @__PURE__ */ import_react10.default.createElement(import_joy14.Dropdown, { open, onOpenChange: handleOpenChange, ...rest }));
829
875
  }
830
876
  Dropdown.displayName = "Dropdown";
831
877
 
@@ -848,29 +894,29 @@ function Breadcrumbs(props) {
848
894
  } = props;
849
895
  const Crumb = (props2) => {
850
896
  if (props2.type === "link" && Link4) {
851
- return /* @__PURE__ */ import_react10.default.createElement(Link4, { to: props2.linkHref, href: props2.linkHref, ...linkProps }, props2.label);
897
+ return /* @__PURE__ */ import_react11.default.createElement(Link4, { to: props2.linkHref, href: props2.linkHref, ...linkProps }, props2.label);
852
898
  } else {
853
- return /* @__PURE__ */ import_react10.default.createElement(Typography_default, null, props2.label);
899
+ return /* @__PURE__ */ import_react11.default.createElement(Typography_default, null, props2.label);
854
900
  }
855
901
  };
856
902
  if (!collapsed) {
857
- return /* @__PURE__ */ import_react10.default.createElement(import_joy16.Breadcrumbs, { size, slots: restSlots, slotProps: restSlotProps, ...innerProps }, crumbs.map((crumb, index) => /* @__PURE__ */ import_react10.default.createElement(Crumb, { key: `breadcrumb-${index}`, ...crumb })));
903
+ return /* @__PURE__ */ import_react11.default.createElement(import_joy16.Breadcrumbs, { size, slots: restSlots, slotProps: restSlotProps, ...innerProps }, crumbs.map((crumb, index) => /* @__PURE__ */ import_react11.default.createElement(Crumb, { key: `breadcrumb-${index}`, ...crumb })));
858
904
  }
859
905
  const _endCrumbCount = Math.max(1, endCrumbCount);
860
- const frontCrumbs = crumbs.slice(0, startCrumbCount).map((crumb) => /* @__PURE__ */ import_react10.default.createElement(Crumb, { key: `breadcrumb-${crumb.label}`, ...crumb }));
861
- const backCrumbs = (startCrumbCount + _endCrumbCount > crumbs.length ? crumbs.slice(startCrumbCount) : crumbs.slice(-_endCrumbCount)).map((crumb) => /* @__PURE__ */ import_react10.default.createElement(Crumb, { key: `breadcrumb-${crumb.label}`, ...crumb }));
862
- const collapsedCrumbs = crumbs.slice(startCrumbCount, -_endCrumbCount).map((crumb) => /* @__PURE__ */ import_react10.default.createElement(MenuItem, { key: `breadcrumb-${crumb.label}` }, /* @__PURE__ */ import_react10.default.createElement(Crumb, { ...crumb })));
863
- return /* @__PURE__ */ import_react10.default.createElement(import_joy16.Breadcrumbs, { size, slots: restSlots, slotProps: restSlotProps, ...innerProps }, frontCrumbs, collapsedCrumbs.length && /* @__PURE__ */ import_react10.default.createElement(Dropdown_default, null, /* @__PURE__ */ import_react10.default.createElement(import_joy16.MenuButton, { size, variant: "plain" }, "..."), /* @__PURE__ */ import_react10.default.createElement(Menu_default, { size }, collapsedCrumbs)), backCrumbs);
906
+ const frontCrumbs = crumbs.slice(0, startCrumbCount).map((crumb) => /* @__PURE__ */ import_react11.default.createElement(Crumb, { key: `breadcrumb-${crumb.label}`, ...crumb }));
907
+ const backCrumbs = (startCrumbCount + _endCrumbCount > crumbs.length ? crumbs.slice(startCrumbCount) : crumbs.slice(-_endCrumbCount)).map((crumb) => /* @__PURE__ */ import_react11.default.createElement(Crumb, { key: `breadcrumb-${crumb.label}`, ...crumb }));
908
+ const collapsedCrumbs = crumbs.slice(startCrumbCount, -_endCrumbCount).map((crumb) => /* @__PURE__ */ import_react11.default.createElement(MenuItem, { key: `breadcrumb-${crumb.label}` }, /* @__PURE__ */ import_react11.default.createElement(Crumb, { ...crumb })));
909
+ return /* @__PURE__ */ import_react11.default.createElement(import_joy16.Breadcrumbs, { size, slots: restSlots, slotProps: restSlotProps, ...innerProps }, frontCrumbs, collapsedCrumbs.length && /* @__PURE__ */ import_react11.default.createElement(Dropdown_default, null, /* @__PURE__ */ import_react11.default.createElement(import_joy16.MenuButton, { size, variant: "plain" }, "..."), /* @__PURE__ */ import_react11.default.createElement(Menu_default, { size }, collapsedCrumbs)), backCrumbs);
864
910
  }
865
911
  Breadcrumbs.displayName = "Breadcrumbs";
866
912
 
867
913
  // src/components/Button/Button.tsx
868
- var import_react11 = __toESM(require("react"));
914
+ var import_react12 = __toESM(require("react"));
869
915
  var import_joy17 = require("@mui/joy");
870
916
  var import_framer_motion11 = require("framer-motion");
871
917
  var MotionButton = (0, import_framer_motion11.motion)(import_joy17.Button);
872
- var Button = (0, import_react11.forwardRef)(({ ...props }, ref) => {
873
- return /* @__PURE__ */ import_react11.default.createElement(MotionButton, { ref, ...props });
918
+ var Button = (0, import_react12.forwardRef)(({ ...props }, ref) => {
919
+ return /* @__PURE__ */ import_react12.default.createElement(MotionButton, { ref, ...props });
874
920
  });
875
921
  Button.displayName = "Button";
876
922
 
@@ -878,19 +924,19 @@ Button.displayName = "Button";
878
924
  var Button_default = Button;
879
925
 
880
926
  // src/components/Calendar/Calendar.tsx
881
- var import_react15 = __toESM(require("react"));
927
+ var import_react16 = __toESM(require("react"));
882
928
  var import_joy20 = require("@mui/joy");
883
929
  var import_ChevronLeft = __toESM(require("@mui/icons-material/ChevronLeft"));
884
930
  var import_ChevronRight = __toESM(require("@mui/icons-material/ChevronRight"));
885
931
  var import_framer_motion13 = require("framer-motion");
886
932
 
887
933
  // src/components/Tooltip/Tooltip.tsx
888
- var import_react12 = __toESM(require("react"));
934
+ var import_react13 = __toESM(require("react"));
889
935
  var import_joy18 = require("@mui/joy");
890
936
  var import_framer_motion12 = require("framer-motion");
891
937
  var MotionTooltip = (0, import_framer_motion12.motion)(import_joy18.Tooltip);
892
938
  var Tooltip = (props) => {
893
- return /* @__PURE__ */ import_react12.default.createElement(MotionTooltip, { ...props });
939
+ return /* @__PURE__ */ import_react13.default.createElement(MotionTooltip, { ...props });
894
940
  };
895
941
  Tooltip.displayName = "Tooltip";
896
942
 
@@ -972,43 +1018,43 @@ var isSameMonth = (date1, date2) => {
972
1018
  };
973
1019
 
974
1020
  // src/components/Calendar/hooks/use-calendar-props.ts
975
- var import_react13 = require("react");
1021
+ var import_react14 = require("react");
976
1022
  var import_joy19 = require("@mui/joy");
977
1023
  var resolveView = (view, views) => {
978
1024
  return views.includes(view) ? view : views[0];
979
1025
  };
980
1026
  var useCalendarProps = (inProps) => {
981
- const [uncontrolledView, setUncontrolledView] = (0, import_react13.useState)(
1027
+ const [uncontrolledView, setUncontrolledView] = (0, import_react14.useState)(
982
1028
  () => resolveView(inProps.view || "day", inProps.views || ["day", "month"])
983
1029
  );
984
- const [uncontrolledValue, setUncontrolledValue] = (0, import_react13.useState)(
1030
+ const [uncontrolledValue, setUncontrolledValue] = (0, import_react14.useState)(
985
1031
  inProps.defaultValue
986
1032
  );
987
- const [viewMonth, setViewMonth] = (0, import_react13.useState)(() => {
1033
+ const [viewMonth, setViewMonth] = (0, import_react14.useState)(() => {
988
1034
  const today = /* @__PURE__ */ new Date();
989
1035
  today.setDate(1);
990
1036
  today.setHours(0, 0, 0, 0);
991
1037
  return inProps.value?.[0] || inProps.defaultValue?.[0] || today;
992
1038
  });
993
- const [[page, direction], setPage] = (0, import_react13.useState)([0, 0]);
1039
+ const [[page, direction], setPage] = (0, import_react14.useState)([0, 0]);
994
1040
  const resolvedView = inProps.view ?? uncontrolledView;
995
- const resolvedMinDate = (0, import_react13.useMemo)(() => {
1041
+ const resolvedMinDate = (0, import_react14.useMemo)(() => {
996
1042
  const minDate = inProps.minDate || /* @__PURE__ */ new Date(0);
997
1043
  minDate.setHours(0, 0, 0, 0);
998
1044
  return minDate;
999
1045
  }, [inProps.minDate]);
1000
- const resolvedMaxDate = (0, import_react13.useMemo)(() => {
1046
+ const resolvedMaxDate = (0, import_react14.useMemo)(() => {
1001
1047
  const maxDate = inProps.maxDate || /* @__PURE__ */ new Date(864e13);
1002
1048
  maxDate.setHours(0, 0, 0, 0);
1003
1049
  return maxDate;
1004
1050
  }, [inProps.maxDate]);
1005
- const paginate = (0, import_react13.useCallback)(
1051
+ const paginate = (0, import_react14.useCallback)(
1006
1052
  (newDirection) => {
1007
1053
  setPage([page + newDirection, newDirection]);
1008
1054
  },
1009
1055
  [page]
1010
1056
  );
1011
- const handleViewMonthChange = (0, import_react13.useCallback)(
1057
+ const handleViewMonthChange = (0, import_react14.useCallback)(
1012
1058
  (newMonth) => {
1013
1059
  setViewMonth(newMonth);
1014
1060
  if (resolvedView === "month") {
@@ -1056,22 +1102,22 @@ var useCalendarProps = (inProps) => {
1056
1102
  },
1057
1103
  name: "Calendar"
1058
1104
  });
1059
- const ownerState = (0, import_react13.useMemo)(() => ({ ...props, viewMonth, direction }), [props, viewMonth, direction]);
1105
+ const ownerState = (0, import_react14.useMemo)(() => ({ ...props, viewMonth, direction }), [props, viewMonth, direction]);
1060
1106
  return [props, ownerState];
1061
1107
  };
1062
1108
 
1063
1109
  // src/components/Calendar/hooks/use-calendar.ts
1064
- var import_react14 = require("react");
1110
+ var import_react15 = require("react");
1065
1111
  var useCalendar = (ownerState) => {
1066
- const [localHoverDay, setLocalHoverDay] = (0, import_react14.useState)(null);
1067
- const [localHoverMonth, setLocalHoverMonth] = (0, import_react14.useState)(null);
1112
+ const [localHoverDay, setLocalHoverDay] = (0, import_react15.useState)(null);
1113
+ const [localHoverMonth, setLocalHoverMonth] = (0, import_react15.useState)(null);
1068
1114
  const hoverDay = ownerState.hoverDay !== void 0 ? ownerState.hoverDay : localHoverDay;
1069
1115
  const setHoverDay = ownerState.onHoverDayChange ?? setLocalHoverDay;
1070
1116
  const hoverMonth = ownerState.hoverMonth !== void 0 ? ownerState.hoverMonth : localHoverMonth;
1071
1117
  const setHoverMonth = ownerState.onHoverMonthChange ?? setLocalHoverMonth;
1072
1118
  return {
1073
1119
  calendarTitle: ownerState.view === "month" ? getYearName(ownerState.viewMonth, ownerState.locale || "default") : getMonthName(ownerState.viewMonth, ownerState.locale || "default"),
1074
- onPrev: (0, import_react14.useCallback)(() => {
1120
+ onPrev: (0, import_react15.useCallback)(() => {
1075
1121
  if (ownerState.view === "day") {
1076
1122
  const currentDate = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
1077
1123
  const currentYear = currentDate.getFullYear();
@@ -1088,7 +1134,7 @@ var useCalendar = (ownerState) => {
1088
1134
  ownerState.onMonthChange?.(prevYear);
1089
1135
  }
1090
1136
  }, [ownerState.onMonthChange, ownerState.viewMonth, ownerState.view]),
1091
- onNext: (0, import_react14.useCallback)(() => {
1137
+ onNext: (0, import_react15.useCallback)(() => {
1092
1138
  if (ownerState.view === "day") {
1093
1139
  const currentDate = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
1094
1140
  const currentYear = currentDate.getFullYear();
@@ -1105,7 +1151,7 @@ var useCalendar = (ownerState) => {
1105
1151
  ownerState.onMonthChange?.(nextYear);
1106
1152
  }
1107
1153
  }, [ownerState.onMonthChange, ownerState.viewMonth, ownerState.view]),
1108
- getDayCellProps: (0, import_react14.useCallback)(
1154
+ getDayCellProps: (0, import_react15.useCallback)(
1109
1155
  (day) => {
1110
1156
  const thisDay = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
1111
1157
  thisDay.setHours(0, 0, 0, 0);
@@ -1120,7 +1166,7 @@ var useCalendar = (ownerState) => {
1120
1166
  },
1121
1167
  [ownerState.rangeSelection, ownerState.value, ownerState.viewMonth, hoverDay]
1122
1168
  ),
1123
- getMonthCellProps: (0, import_react14.useCallback)(
1169
+ getMonthCellProps: (0, import_react15.useCallback)(
1124
1170
  (monthIndex) => {
1125
1171
  const thisMonth = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
1126
1172
  thisMonth.setDate(1);
@@ -1137,7 +1183,7 @@ var useCalendar = (ownerState) => {
1137
1183
  },
1138
1184
  [ownerState.rangeSelection, ownerState.value, ownerState.viewMonth, hoverMonth]
1139
1185
  ),
1140
- getPickerDayProps: (0, import_react14.useCallback)(
1186
+ getPickerDayProps: (0, import_react15.useCallback)(
1141
1187
  (day) => {
1142
1188
  const thisDay = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
1143
1189
  thisDay.setHours(0, 0, 0, 0);
@@ -1191,7 +1237,7 @@ var useCalendar = (ownerState) => {
1191
1237
  hoverDay
1192
1238
  ]
1193
1239
  ),
1194
- getPickerMonthProps: (0, import_react14.useCallback)(
1240
+ getPickerMonthProps: (0, import_react15.useCallback)(
1195
1241
  (monthIndex) => {
1196
1242
  const thisMonth = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
1197
1243
  thisMonth.setDate(1);
@@ -1488,9 +1534,9 @@ var swipePower = (offset, velocity) => {
1488
1534
  var PickerDays = (props) => {
1489
1535
  const { ownerState } = props;
1490
1536
  const { getPickerDayProps, getDayCellProps } = useCalendar(ownerState);
1491
- const calendarDates = (0, import_react15.useMemo)(() => getCalendarDates(ownerState.viewMonth), [ownerState.viewMonth]);
1492
- const weekdayNames = (0, import_react15.useMemo)(() => getWeekdayNames(ownerState.locale || "default"), [ownerState.locale]);
1493
- return /* @__PURE__ */ import_react15.default.createElement(CalendarViewContainer, { calendarType: "datePicker" }, /* @__PURE__ */ import_react15.default.createElement(import_framer_motion13.AnimatePresence, { initial: false, custom: ownerState.direction }, /* @__PURE__ */ import_react15.default.createElement(
1537
+ const calendarDates = (0, import_react16.useMemo)(() => getCalendarDates(ownerState.viewMonth), [ownerState.viewMonth]);
1538
+ const weekdayNames = (0, import_react16.useMemo)(() => getWeekdayNames(ownerState.locale || "default"), [ownerState.locale]);
1539
+ return /* @__PURE__ */ import_react16.default.createElement(CalendarViewContainer, { calendarType: "datePicker" }, /* @__PURE__ */ import_react16.default.createElement(import_framer_motion13.AnimatePresence, { initial: false, custom: ownerState.direction }, /* @__PURE__ */ import_react16.default.createElement(
1494
1540
  CalendarViewTable,
1495
1541
  {
1496
1542
  key: `${ownerState.viewMonth.toString()}_${ownerState.direction}`,
@@ -1519,10 +1565,10 @@ var PickerDays = (props) => {
1519
1565
  }
1520
1566
  }
1521
1567
  },
1522
- /* @__PURE__ */ import_react15.default.createElement(CalendarWeekHeaderContainer, null, /* @__PURE__ */ import_react15.default.createElement("tr", null, weekdayNames.map((name, i) => /* @__PURE__ */ import_react15.default.createElement(import_react15.Fragment, { key: `${ownerState.viewMonth}_${name}_${i}` }, /* @__PURE__ */ import_react15.default.createElement("th", null, /* @__PURE__ */ import_react15.default.createElement(Typography_default, { level: "body-xs", textAlign: "center" }, name)), i < 6 && /* @__PURE__ */ import_react15.default.createElement("th", { style: { width: 4 }, "aria-hidden": "true", "aria-description": "cell-gap" }))))),
1523
- /* @__PURE__ */ import_react15.default.createElement(CalendarDayPickerContainer, null, calendarDates.map((weekDates, rowIndex) => /* @__PURE__ */ import_react15.default.createElement(import_react15.Fragment, { key: `${ownerState.viewMonth}_${rowIndex}` }, /* @__PURE__ */ import_react15.default.createElement("tr", null, weekDates.map(
1524
- (date, i) => date ? /* @__PURE__ */ import_react15.default.createElement(import_react15.Fragment, { key: `${ownerState.viewMonth}_${date}_${i}` }, /* @__PURE__ */ import_react15.default.createElement(CalendarDayCell, { ...getDayCellProps(date) }, /* @__PURE__ */ import_react15.default.createElement(CalendarDay, { size: "sm", variant: "plain", color: "neutral", ...getPickerDayProps(date) }, date)), i < 6 && /* @__PURE__ */ import_react15.default.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" })) : /* @__PURE__ */ import_react15.default.createElement(import_react15.Fragment, { key: `${ownerState.viewMonth}_${i}` }, /* @__PURE__ */ import_react15.default.createElement("td", null), i < 6 && /* @__PURE__ */ import_react15.default.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" }))
1525
- )), rowIndex < calendarDates.length - 1 && /* @__PURE__ */ import_react15.default.createElement("tr", { "aria-hidden": "true", "aria-description": "row-gap" }, /* @__PURE__ */ import_react15.default.createElement("td", { colSpan: 13, style: { height: 4 } })))))
1568
+ /* @__PURE__ */ import_react16.default.createElement(CalendarWeekHeaderContainer, null, /* @__PURE__ */ import_react16.default.createElement("tr", null, weekdayNames.map((name, i) => /* @__PURE__ */ import_react16.default.createElement(import_react16.Fragment, { key: `${ownerState.viewMonth}_${name}_${i}` }, /* @__PURE__ */ import_react16.default.createElement("th", null, /* @__PURE__ */ import_react16.default.createElement(Typography_default, { level: "body-xs", textAlign: "center" }, name)), i < 6 && /* @__PURE__ */ import_react16.default.createElement("th", { style: { width: 4 }, "aria-hidden": "true", "aria-description": "cell-gap" }))))),
1569
+ /* @__PURE__ */ import_react16.default.createElement(CalendarDayPickerContainer, null, calendarDates.map((weekDates, rowIndex) => /* @__PURE__ */ import_react16.default.createElement(import_react16.Fragment, { key: `${ownerState.viewMonth}_${rowIndex}` }, /* @__PURE__ */ import_react16.default.createElement("tr", null, weekDates.map(
1570
+ (date, i) => date ? /* @__PURE__ */ import_react16.default.createElement(import_react16.Fragment, { key: `${ownerState.viewMonth}_${date}_${i}` }, /* @__PURE__ */ import_react16.default.createElement(CalendarDayCell, { ...getDayCellProps(date) }, /* @__PURE__ */ import_react16.default.createElement(CalendarDay, { size: "sm", variant: "plain", color: "neutral", ...getPickerDayProps(date) }, date)), i < 6 && /* @__PURE__ */ import_react16.default.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" })) : /* @__PURE__ */ import_react16.default.createElement(import_react16.Fragment, { key: `${ownerState.viewMonth}_${i}` }, /* @__PURE__ */ import_react16.default.createElement("td", null), i < 6 && /* @__PURE__ */ import_react16.default.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" }))
1571
+ )), rowIndex < calendarDates.length - 1 && /* @__PURE__ */ import_react16.default.createElement("tr", { "aria-hidden": "true", "aria-description": "row-gap" }, /* @__PURE__ */ import_react16.default.createElement("td", { colSpan: 13, style: { height: 4 } })))))
1526
1572
  )));
1527
1573
  };
1528
1574
  var PickerMonths = (props) => {
@@ -1539,7 +1585,7 @@ var PickerMonths = (props) => {
1539
1585
  [[]]
1540
1586
  );
1541
1587
  const isMonthPicker = !ownerState.views?.find((view) => view === "day");
1542
- return /* @__PURE__ */ import_react15.default.createElement(CalendarViewContainer, { calendarType: isMonthPicker ? "monthPicker" : "datePicker" }, /* @__PURE__ */ import_react15.default.createElement(import_framer_motion13.AnimatePresence, { initial: false, custom: ownerState.direction }, /* @__PURE__ */ import_react15.default.createElement(
1588
+ return /* @__PURE__ */ import_react16.default.createElement(CalendarViewContainer, { calendarType: isMonthPicker ? "monthPicker" : "datePicker" }, /* @__PURE__ */ import_react16.default.createElement(import_framer_motion13.AnimatePresence, { initial: false, custom: ownerState.direction }, /* @__PURE__ */ import_react16.default.createElement(
1543
1589
  CalendarViewTable,
1544
1590
  {
1545
1591
  key: `${ownerState.viewMonth.getFullYear()}_${ownerState.direction}`,
@@ -1568,16 +1614,16 @@ var PickerMonths = (props) => {
1568
1614
  }
1569
1615
  }
1570
1616
  },
1571
- /* @__PURE__ */ import_react15.default.createElement("tbody", null, chunkedMonths.map((months, i) => /* @__PURE__ */ import_react15.default.createElement(import_react15.Fragment, { key: months.join("_") }, /* @__PURE__ */ import_react15.default.createElement("tr", null, months.map((monthIndex, j) => /* @__PURE__ */ import_react15.default.createElement(import_react15.Fragment, { key: monthIndex }, /* @__PURE__ */ import_react15.default.createElement(CalendarMonthCell, { ...getMonthCellProps(monthIndex) }, /* @__PURE__ */ import_react15.default.createElement(CalendarMonth, { size: "sm", variant: "plain", color: "neutral", ...getPickerMonthProps(monthIndex) }, getMonthNameFromIndex(monthIndex, ownerState.locale))), j < 3 && /* @__PURE__ */ import_react15.default.createElement("td", { style: { width: 4 }, "aria-hidden": "true", "aria-description": "cell-gap" })))), i < chunkedMonths.length - 1 && /* @__PURE__ */ import_react15.default.createElement("tr", { "aria-hidden": "true", "aria-description": "row-gap" }, /* @__PURE__ */ import_react15.default.createElement("td", { colSpan: 7, style: { height: 4 } })))))
1617
+ /* @__PURE__ */ import_react16.default.createElement("tbody", null, chunkedMonths.map((months, i) => /* @__PURE__ */ import_react16.default.createElement(import_react16.Fragment, { key: months.join("_") }, /* @__PURE__ */ import_react16.default.createElement("tr", null, months.map((monthIndex, j) => /* @__PURE__ */ import_react16.default.createElement(import_react16.Fragment, { key: monthIndex }, /* @__PURE__ */ import_react16.default.createElement(CalendarMonthCell, { ...getMonthCellProps(monthIndex) }, /* @__PURE__ */ import_react16.default.createElement(CalendarMonth, { size: "sm", variant: "plain", color: "neutral", ...getPickerMonthProps(monthIndex) }, getMonthNameFromIndex(monthIndex, ownerState.locale))), j < 3 && /* @__PURE__ */ import_react16.default.createElement("td", { style: { width: 4 }, "aria-hidden": "true", "aria-description": "cell-gap" })))), i < chunkedMonths.length - 1 && /* @__PURE__ */ import_react16.default.createElement("tr", { "aria-hidden": "true", "aria-description": "row-gap" }, /* @__PURE__ */ import_react16.default.createElement("td", { colSpan: 7, style: { height: 4 } })))))
1572
1618
  )));
1573
1619
  };
1574
1620
  var PlainPickerDays = ({ ownerState }) => {
1575
1621
  const { getPickerDayProps, getDayCellProps } = useCalendar(ownerState);
1576
- const calendarDates = (0, import_react15.useMemo)(() => getCalendarDates(ownerState.viewMonth), [ownerState.viewMonth]);
1577
- const weekdayNames = (0, import_react15.useMemo)(() => getWeekdayNames(ownerState.locale || "default"), [ownerState.locale]);
1578
- return /* @__PURE__ */ import_react15.default.createElement(StaticCalendarViewTable, null, /* @__PURE__ */ import_react15.default.createElement(CalendarWeekHeaderContainer, null, /* @__PURE__ */ import_react15.default.createElement("tr", null, weekdayNames.map((name, i) => /* @__PURE__ */ import_react15.default.createElement(import_react15.Fragment, { key: `${ownerState.viewMonth}_${name}_${i}` }, /* @__PURE__ */ import_react15.default.createElement("th", null, /* @__PURE__ */ import_react15.default.createElement(Typography_default, { level: "body-xs", textAlign: "center" }, name)), i < 6 && /* @__PURE__ */ import_react15.default.createElement("th", { style: { width: 4 }, "aria-hidden": "true", "aria-description": "cell-gap" }))))), /* @__PURE__ */ import_react15.default.createElement(CalendarDayPickerContainer, null, calendarDates.map((weekDates, rowIndex) => /* @__PURE__ */ import_react15.default.createElement(import_react15.Fragment, { key: `${ownerState.viewMonth}_${rowIndex}` }, /* @__PURE__ */ import_react15.default.createElement("tr", null, weekDates.map(
1579
- (date, i) => date ? /* @__PURE__ */ import_react15.default.createElement(import_react15.Fragment, { key: `${ownerState.viewMonth}_${date}_${i}` }, /* @__PURE__ */ import_react15.default.createElement(CalendarDayCell, { ...getDayCellProps(date) }, /* @__PURE__ */ import_react15.default.createElement(CalendarDay, { size: "sm", variant: "plain", color: "neutral", ...getPickerDayProps(date) }, date)), i < 6 && /* @__PURE__ */ import_react15.default.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" })) : /* @__PURE__ */ import_react15.default.createElement(import_react15.Fragment, { key: `${ownerState.viewMonth}_${i}` }, /* @__PURE__ */ import_react15.default.createElement("td", null), i < 6 && /* @__PURE__ */ import_react15.default.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" }))
1580
- )), rowIndex < calendarDates.length - 1 && /* @__PURE__ */ import_react15.default.createElement("tr", { "aria-hidden": "true", "aria-description": "row-gap" }, /* @__PURE__ */ import_react15.default.createElement("td", { colSpan: 13, style: { height: 4 } }))))));
1622
+ const calendarDates = (0, import_react16.useMemo)(() => getCalendarDates(ownerState.viewMonth), [ownerState.viewMonth]);
1623
+ const weekdayNames = (0, import_react16.useMemo)(() => getWeekdayNames(ownerState.locale || "default"), [ownerState.locale]);
1624
+ return /* @__PURE__ */ import_react16.default.createElement(StaticCalendarViewTable, null, /* @__PURE__ */ import_react16.default.createElement(CalendarWeekHeaderContainer, null, /* @__PURE__ */ import_react16.default.createElement("tr", null, weekdayNames.map((name, i) => /* @__PURE__ */ import_react16.default.createElement(import_react16.Fragment, { key: `${ownerState.viewMonth}_${name}_${i}` }, /* @__PURE__ */ import_react16.default.createElement("th", null, /* @__PURE__ */ import_react16.default.createElement(Typography_default, { level: "body-xs", textAlign: "center" }, name)), i < 6 && /* @__PURE__ */ import_react16.default.createElement("th", { style: { width: 4 }, "aria-hidden": "true", "aria-description": "cell-gap" }))))), /* @__PURE__ */ import_react16.default.createElement(CalendarDayPickerContainer, null, calendarDates.map((weekDates, rowIndex) => /* @__PURE__ */ import_react16.default.createElement(import_react16.Fragment, { key: `${ownerState.viewMonth}_${rowIndex}` }, /* @__PURE__ */ import_react16.default.createElement("tr", null, weekDates.map(
1625
+ (date, i) => date ? /* @__PURE__ */ import_react16.default.createElement(import_react16.Fragment, { key: `${ownerState.viewMonth}_${date}_${i}` }, /* @__PURE__ */ import_react16.default.createElement(CalendarDayCell, { ...getDayCellProps(date) }, /* @__PURE__ */ import_react16.default.createElement(CalendarDay, { size: "sm", variant: "plain", color: "neutral", ...getPickerDayProps(date) }, date)), i < 6 && /* @__PURE__ */ import_react16.default.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" })) : /* @__PURE__ */ import_react16.default.createElement(import_react16.Fragment, { key: `${ownerState.viewMonth}_${i}` }, /* @__PURE__ */ import_react16.default.createElement("td", null), i < 6 && /* @__PURE__ */ import_react16.default.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" }))
1626
+ )), rowIndex < calendarDates.length - 1 && /* @__PURE__ */ import_react16.default.createElement("tr", { "aria-hidden": "true", "aria-description": "row-gap" }, /* @__PURE__ */ import_react16.default.createElement("td", { colSpan: 13, style: { height: 4 } }))))));
1581
1627
  };
1582
1628
  var MultiMonthPickerDays = ({
1583
1629
  panels,
@@ -1596,7 +1642,7 @@ var MultiMonthPickerDays = ({
1596
1642
  })
1597
1643
  };
1598
1644
  const key = `${panels[0].viewMonth.toISOString()}_${direction}`;
1599
- return /* @__PURE__ */ import_react15.default.createElement("div", { style: { position: "relative", overflow: "hidden", minHeight: "250px" } }, /* @__PURE__ */ import_react15.default.createElement(import_framer_motion13.AnimatePresence, { initial: false, custom: direction }, /* @__PURE__ */ import_react15.default.createElement(
1645
+ return /* @__PURE__ */ import_react16.default.createElement("div", { style: { position: "relative", overflow: "hidden", minHeight: "250px" } }, /* @__PURE__ */ import_react16.default.createElement(import_framer_motion13.AnimatePresence, { initial: false, custom: direction }, /* @__PURE__ */ import_react16.default.createElement(
1600
1646
  import_framer_motion13.motion.div,
1601
1647
  {
1602
1648
  key,
@@ -1626,7 +1672,7 @@ var MultiMonthPickerDays = ({
1626
1672
  },
1627
1673
  style: { display: "flex", gap: `${CALENDAR_PANEL_GAP}px`, top: 0, left: 0, width: "100%" }
1628
1674
  },
1629
- panels.map((panelOwnerState) => /* @__PURE__ */ import_react15.default.createElement(
1675
+ panels.map((panelOwnerState) => /* @__PURE__ */ import_react16.default.createElement(
1630
1676
  "div",
1631
1677
  {
1632
1678
  key: panelOwnerState.viewMonth.toISOString(),
@@ -1638,7 +1684,7 @@ var MultiMonthPickerDays = ({
1638
1684
  boxSizing: "border-box"
1639
1685
  }
1640
1686
  },
1641
- /* @__PURE__ */ import_react15.default.createElement(PlainPickerDays, { ownerState: panelOwnerState })
1687
+ /* @__PURE__ */ import_react16.default.createElement(PlainPickerDays, { ownerState: panelOwnerState })
1642
1688
  ))
1643
1689
  )));
1644
1690
  };
@@ -1655,7 +1701,7 @@ var CalendarPanel = ({
1655
1701
  const showPrev = panelIndex === 0;
1656
1702
  const showNext = panelIndex === totalPanels - 1;
1657
1703
  const title = ownerState.view === "month" ? getYearName(ownerState.viewMonth, ownerState.locale || "default") : getMonthName(ownerState.viewMonth, ownerState.locale || "default");
1658
- return /* @__PURE__ */ import_react15.default.createElement("div", { style: { flex: 1, maxWidth: `${CALENDAR_PANEL_WIDTH}px` } }, /* @__PURE__ */ import_react15.default.createElement(CalendarHeader, null, /* @__PURE__ */ import_react15.default.createElement(
1704
+ return /* @__PURE__ */ import_react16.default.createElement("div", { style: { flex: 1, maxWidth: `${CALENDAR_PANEL_WIDTH}px` } }, /* @__PURE__ */ import_react16.default.createElement(CalendarHeader, null, /* @__PURE__ */ import_react16.default.createElement(
1659
1705
  IconButton_default,
1660
1706
  {
1661
1707
  size: "sm",
@@ -1663,8 +1709,8 @@ var CalendarPanel = ({
1663
1709
  "aria-label": `Previous ${ownerState.view === "day" ? "Month" : "Year"}`,
1664
1710
  style: { visibility: showPrev ? "visible" : "hidden" }
1665
1711
  },
1666
- /* @__PURE__ */ import_react15.default.createElement(import_ChevronLeft.default, null)
1667
- ), /* @__PURE__ */ import_react15.default.createElement(
1712
+ /* @__PURE__ */ import_react16.default.createElement(import_ChevronLeft.default, null)
1713
+ ), /* @__PURE__ */ import_react16.default.createElement(
1668
1714
  Tooltip_default,
1669
1715
  {
1670
1716
  title: monthViewHintMessage,
@@ -1676,7 +1722,7 @@ var CalendarPanel = ({
1676
1722
  disableTouchListener: true,
1677
1723
  variant: "solid"
1678
1724
  },
1679
- /* @__PURE__ */ import_react15.default.createElement(
1725
+ /* @__PURE__ */ import_react16.default.createElement(
1680
1726
  CalendarSwitchViewButton,
1681
1727
  {
1682
1728
  ownerState,
@@ -1687,7 +1733,7 @@ var CalendarPanel = ({
1687
1733
  },
1688
1734
  title
1689
1735
  )
1690
- ), /* @__PURE__ */ import_react15.default.createElement(
1736
+ ), /* @__PURE__ */ import_react16.default.createElement(
1691
1737
  IconButton_default,
1692
1738
  {
1693
1739
  size: "sm",
@@ -1695,10 +1741,10 @@ var CalendarPanel = ({
1695
1741
  "aria-label": `Next ${ownerState.view === "day" ? "Month" : "Year"}`,
1696
1742
  style: { visibility: showNext ? "visible" : "hidden" }
1697
1743
  },
1698
- /* @__PURE__ */ import_react15.default.createElement(import_ChevronRight.default, null)
1744
+ /* @__PURE__ */ import_react16.default.createElement(import_ChevronRight.default, null)
1699
1745
  )));
1700
1746
  };
1701
- var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
1747
+ var Calendar = (0, import_react16.forwardRef)((inProps, ref) => {
1702
1748
  const [props, ownerState] = useCalendarProps(inProps);
1703
1749
  const {
1704
1750
  value,
@@ -1714,42 +1760,44 @@ var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
1714
1760
  maxDate,
1715
1761
  disableFuture,
1716
1762
  disablePast,
1763
+ shouldDisableDate,
1764
+ slots,
1717
1765
  numberOfMonths,
1718
1766
  ...others
1719
1767
  } = props;
1720
1768
  const { calendarTitle, onPrev, onNext } = useCalendar(ownerState);
1721
- const [isMonthViewAssistHintOpen, setIsMonthViewAssistHintOpen] = (0, import_react15.useState)(false);
1722
- const monthNavClickTimestampsRef = (0, import_react15.useRef)([]);
1723
- const monthViewAssistHintShownInSessionRef = (0, import_react15.useRef)(false);
1724
- const monthViewAssistHintTimeoutRef = (0, import_react15.useRef)(null);
1725
- const [hoverDay, setHoverDay] = (0, import_react15.useState)(null);
1726
- const [hoverMonth, setHoverMonth] = (0, import_react15.useState)(null);
1769
+ const [isMonthViewAssistHintOpen, setIsMonthViewAssistHintOpen] = (0, import_react16.useState)(false);
1770
+ const monthNavClickTimestampsRef = (0, import_react16.useRef)([]);
1771
+ const monthViewAssistHintShownInSessionRef = (0, import_react16.useRef)(false);
1772
+ const monthViewAssistHintTimeoutRef = (0, import_react16.useRef)(null);
1773
+ const [hoverDay, setHoverDay] = (0, import_react16.useState)(null);
1774
+ const [hoverMonth, setHoverMonth] = (0, import_react16.useState)(null);
1727
1775
  const resolvedNumberOfMonths = numberOfMonths ?? 1;
1728
1776
  const hasEndDate = Boolean(value?.[1]);
1729
1777
  const isRangeHintEligible = Boolean(rangeSelection && !hasEndDate);
1730
1778
  const isHintEligible = Boolean(view === "day" && (!rangeSelection || isRangeHintEligible));
1731
1779
  const monthViewHintMessage = MONTH_VIEW_HINT_MESSAGE;
1732
- (0, import_react15.useEffect)(() => {
1780
+ (0, import_react16.useEffect)(() => {
1733
1781
  if (!isHintEligible) {
1734
1782
  monthNavClickTimestampsRef.current = [];
1735
1783
  setIsMonthViewAssistHintOpen(false);
1736
1784
  }
1737
1785
  }, [isHintEligible]);
1738
- (0, import_react15.useEffect)(() => {
1786
+ (0, import_react16.useEffect)(() => {
1739
1787
  return () => {
1740
1788
  if (monthViewAssistHintTimeoutRef.current) {
1741
1789
  clearTimeout(monthViewAssistHintTimeoutRef.current);
1742
1790
  }
1743
1791
  };
1744
1792
  }, []);
1745
- const closeMonthViewAssistHint = (0, import_react15.useCallback)(() => {
1793
+ const closeMonthViewAssistHint = (0, import_react16.useCallback)(() => {
1746
1794
  if (monthViewAssistHintTimeoutRef.current) {
1747
1795
  clearTimeout(monthViewAssistHintTimeoutRef.current);
1748
1796
  monthViewAssistHintTimeoutRef.current = null;
1749
1797
  }
1750
1798
  setIsMonthViewAssistHintOpen(false);
1751
1799
  }, []);
1752
- const showMonthViewAssistHint = (0, import_react15.useCallback)(() => {
1800
+ const showMonthViewAssistHint = (0, import_react16.useCallback)(() => {
1753
1801
  const now = Date.now();
1754
1802
  if (monthViewAssistHintShownInSessionRef.current) return;
1755
1803
  if (now - lastMonthViewAssistHintShownAt < MONTH_VIEW_HINT_COOLDOWN_MS) return;
@@ -1764,7 +1812,7 @@ var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
1764
1812
  monthViewAssistHintTimeoutRef.current = null;
1765
1813
  }, MONTH_VIEW_HINT_DURATION_MS);
1766
1814
  }, []);
1767
- const trackFastMonthNavigation = (0, import_react15.useCallback)(() => {
1815
+ const trackFastMonthNavigation = (0, import_react16.useCallback)(() => {
1768
1816
  if (!isHintEligible) return;
1769
1817
  const now = Date.now();
1770
1818
  monthNavClickTimestampsRef.current = [
@@ -1775,15 +1823,15 @@ var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
1775
1823
  showMonthViewAssistHint();
1776
1824
  }
1777
1825
  }, [isHintEligible, showMonthViewAssistHint]);
1778
- const handlePrevClick = (0, import_react15.useCallback)(() => {
1826
+ const handlePrevClick = (0, import_react16.useCallback)(() => {
1779
1827
  onPrev();
1780
1828
  trackFastMonthNavigation();
1781
1829
  }, [onPrev, trackFastMonthNavigation]);
1782
- const handleNextClick = (0, import_react15.useCallback)(() => {
1830
+ const handleNextClick = (0, import_react16.useCallback)(() => {
1783
1831
  onNext();
1784
1832
  trackFastMonthNavigation();
1785
1833
  }, [onNext, trackFastMonthNavigation]);
1786
- const handleSwitchViewClick = (0, import_react15.useCallback)(() => {
1834
+ const handleSwitchViewClick = (0, import_react16.useCallback)(() => {
1787
1835
  closeMonthViewAssistHint();
1788
1836
  onViewChange?.();
1789
1837
  }, [closeMonthViewAssistHint, onViewChange]);
@@ -1803,9 +1851,9 @@ var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
1803
1851
  onHoverMonthChange: setHoverMonth
1804
1852
  };
1805
1853
  });
1806
- return /* @__PURE__ */ import_react15.default.createElement(CalendarRoot, { ref, ...others, style: { maxWidth: `${maxWidth}px` } }, view === "month" ? (
1854
+ return /* @__PURE__ */ import_react16.default.createElement(CalendarRoot, { ref, ...others, style: { maxWidth: `${maxWidth}px` } }, view === "month" ? (
1807
1855
  // Month view: single header + single month grid (consistent with single-month path)
1808
- /* @__PURE__ */ import_react15.default.createElement(import_react15.default.Fragment, null, /* @__PURE__ */ import_react15.default.createElement(CalendarHeader, null, /* @__PURE__ */ import_react15.default.createElement(IconButton_default, { size: "sm", onClick: handlePrevClick, "aria-label": "Previous Year" }, /* @__PURE__ */ import_react15.default.createElement(import_ChevronLeft.default, null)), /* @__PURE__ */ import_react15.default.createElement(
1856
+ /* @__PURE__ */ import_react16.default.createElement(import_react16.default.Fragment, null, /* @__PURE__ */ import_react16.default.createElement(CalendarHeader, null, /* @__PURE__ */ import_react16.default.createElement(IconButton_default, { size: "sm", onClick: handlePrevClick, "aria-label": "Previous Year" }, /* @__PURE__ */ import_react16.default.createElement(import_ChevronLeft.default, null)), /* @__PURE__ */ import_react16.default.createElement(
1809
1857
  Tooltip_default,
1810
1858
  {
1811
1859
  title: monthViewHintMessage,
@@ -1817,7 +1865,7 @@ var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
1817
1865
  disableTouchListener: true,
1818
1866
  variant: "solid"
1819
1867
  },
1820
- /* @__PURE__ */ import_react15.default.createElement(
1868
+ /* @__PURE__ */ import_react16.default.createElement(
1821
1869
  CalendarSwitchViewButton,
1822
1870
  {
1823
1871
  ownerState,
@@ -1828,8 +1876,8 @@ var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
1828
1876
  },
1829
1877
  calendarTitle
1830
1878
  )
1831
- ), /* @__PURE__ */ import_react15.default.createElement(IconButton_default, { size: "sm", onClick: handleNextClick, "aria-label": "Next Year" }, /* @__PURE__ */ import_react15.default.createElement(import_ChevronRight.default, null))), /* @__PURE__ */ import_react15.default.createElement(PickerMonths, { ownerState }))
1832
- ) : /* @__PURE__ */ import_react15.default.createElement(import_react15.default.Fragment, null, /* @__PURE__ */ import_react15.default.createElement(CalendarMultiContainer, null, panels.map((panelOwnerState, i) => /* @__PURE__ */ import_react15.default.createElement(
1879
+ ), /* @__PURE__ */ import_react16.default.createElement(IconButton_default, { size: "sm", onClick: handleNextClick, "aria-label": "Next Year" }, /* @__PURE__ */ import_react16.default.createElement(import_ChevronRight.default, null))), /* @__PURE__ */ import_react16.default.createElement(PickerMonths, { ownerState }))
1880
+ ) : /* @__PURE__ */ import_react16.default.createElement(import_react16.default.Fragment, null, /* @__PURE__ */ import_react16.default.createElement(CalendarMultiContainer, null, panels.map((panelOwnerState, i) => /* @__PURE__ */ import_react16.default.createElement(
1833
1881
  CalendarPanel,
1834
1882
  {
1835
1883
  key: panelOwnerState.viewMonth.toISOString(),
@@ -1842,7 +1890,7 @@ var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
1842
1890
  isMonthViewAssistHintOpen,
1843
1891
  monthViewHintMessage
1844
1892
  }
1845
- ))), /* @__PURE__ */ import_react15.default.createElement(
1893
+ ))), /* @__PURE__ */ import_react16.default.createElement(
1846
1894
  MultiMonthPickerDays,
1847
1895
  {
1848
1896
  panels,
@@ -1851,7 +1899,7 @@ var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
1851
1899
  }
1852
1900
  )));
1853
1901
  }
1854
- return /* @__PURE__ */ import_react15.default.createElement(CalendarRoot, { ref, ...others, style: { maxWidth: `${maxWidth}px` } }, /* @__PURE__ */ import_react15.default.createElement(CalendarHeader, null, /* @__PURE__ */ import_react15.default.createElement(IconButton_default, { size: "sm", onClick: handlePrevClick, "aria-label": `Previous ${view === "day" ? "Month" : "Year"}` }, /* @__PURE__ */ import_react15.default.createElement(import_ChevronLeft.default, null)), /* @__PURE__ */ import_react15.default.createElement(
1902
+ return /* @__PURE__ */ import_react16.default.createElement(CalendarRoot, { ref, ...others, style: { maxWidth: `${maxWidth}px` } }, /* @__PURE__ */ import_react16.default.createElement(CalendarHeader, null, /* @__PURE__ */ import_react16.default.createElement(IconButton_default, { size: "sm", onClick: handlePrevClick, "aria-label": `Previous ${view === "day" ? "Month" : "Year"}` }, /* @__PURE__ */ import_react16.default.createElement(import_ChevronLeft.default, null)), /* @__PURE__ */ import_react16.default.createElement(
1855
1903
  Tooltip_default,
1856
1904
  {
1857
1905
  title: monthViewHintMessage,
@@ -1863,7 +1911,7 @@ var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
1863
1911
  disableTouchListener: true,
1864
1912
  variant: "solid"
1865
1913
  },
1866
- /* @__PURE__ */ import_react15.default.createElement(
1914
+ /* @__PURE__ */ import_react16.default.createElement(
1867
1915
  CalendarSwitchViewButton,
1868
1916
  {
1869
1917
  ownerState,
@@ -1874,7 +1922,7 @@ var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
1874
1922
  },
1875
1923
  calendarTitle
1876
1924
  )
1877
- ), /* @__PURE__ */ import_react15.default.createElement(IconButton_default, { size: "sm", onClick: handleNextClick, "aria-label": `Next ${view === "day" ? "Month" : "Year"}` }, /* @__PURE__ */ import_react15.default.createElement(import_ChevronRight.default, null))), view === "day" && /* @__PURE__ */ import_react15.default.createElement(PickerDays, { ownerState }), view === "month" && /* @__PURE__ */ import_react15.default.createElement(PickerMonths, { ownerState }));
1925
+ ), /* @__PURE__ */ import_react16.default.createElement(IconButton_default, { size: "sm", onClick: handleNextClick, "aria-label": `Next ${view === "day" ? "Month" : "Year"}` }, /* @__PURE__ */ import_react16.default.createElement(import_ChevronRight.default, null))), view === "day" && /* @__PURE__ */ import_react16.default.createElement(PickerDays, { ownerState }), view === "month" && /* @__PURE__ */ import_react16.default.createElement(PickerMonths, { ownerState }));
1878
1926
  });
1879
1927
  Calendar.displayName = "Calendar";
1880
1928
 
@@ -1901,12 +1949,12 @@ var CardOverflow = MotionCardOverflow;
1901
1949
  CardOverflow.displayName = "CardOverflow";
1902
1950
 
1903
1951
  // src/components/Checkbox/Checkbox.tsx
1904
- var import_react16 = __toESM(require("react"));
1952
+ var import_react17 = __toESM(require("react"));
1905
1953
  var import_joy22 = require("@mui/joy");
1906
1954
  var import_framer_motion15 = require("framer-motion");
1907
1955
  var MotionCheckbox = (0, import_framer_motion15.motion)(import_joy22.Checkbox);
1908
1956
  var Checkbox = (props) => {
1909
- return /* @__PURE__ */ import_react16.default.createElement(MotionCheckbox, { ...props });
1957
+ return /* @__PURE__ */ import_react17.default.createElement(MotionCheckbox, { ...props });
1910
1958
  };
1911
1959
  Checkbox.displayName = "Checkbox";
1912
1960
 
@@ -1915,7 +1963,7 @@ var Checkbox_default = Checkbox;
1915
1963
 
1916
1964
  // src/components/Container/Container.tsx
1917
1965
  var import_joy23 = require("@mui/joy");
1918
- var import_react17 = __toESM(require("react"));
1966
+ var import_react18 = __toESM(require("react"));
1919
1967
  var ContainerRoot = (0, import_joy23.styled)("div", {
1920
1968
  name: "Container",
1921
1969
  slot: "root",
@@ -1941,24 +1989,24 @@ var ContainerRoot = (0, import_joy23.styled)("div", {
1941
1989
  paddingRight: theme.breakpoints.values[overrideBreakpoint] >= theme.breakpoints.values.lg ? theme.spacing(8) : theme.spacing(4)
1942
1990
  } : null
1943
1991
  ]);
1944
- var Container = (0, import_react17.forwardRef)(function Container2(props, ref) {
1945
- return /* @__PURE__ */ import_react17.default.createElement(ContainerRoot, { ref, ...props });
1992
+ var Container = (0, import_react18.forwardRef)(function Container2(props, ref) {
1993
+ return /* @__PURE__ */ import_react18.default.createElement(ContainerRoot, { ref, ...props });
1946
1994
  });
1947
1995
  Container.displayName = "Container";
1948
1996
 
1949
1997
  // src/components/CurrencyInput/CurrencyInput.tsx
1950
- var import_react19 = __toESM(require("react"));
1998
+ var import_react20 = __toESM(require("react"));
1951
1999
  var import_react_number_format = require("react-number-format");
1952
2000
 
1953
2001
  // src/components/Input/Input.tsx
1954
- var import_react18 = __toESM(require("react"));
2002
+ var import_react19 = __toESM(require("react"));
1955
2003
  var import_joy24 = require("@mui/joy");
1956
2004
  var import_framer_motion16 = require("framer-motion");
1957
2005
  var import_Close2 = __toESM(require("@mui/icons-material/Close"));
1958
2006
  var import_Visibility = __toESM(require("@mui/icons-material/Visibility"));
1959
2007
  var import_VisibilityOff = __toESM(require("@mui/icons-material/VisibilityOff"));
1960
2008
  var MotionInput = (0, import_framer_motion16.motion)(import_joy24.Input);
1961
- var Input = import_react18.default.forwardRef((props, ref) => {
2009
+ var Input = import_react19.default.forwardRef((props, ref) => {
1962
2010
  const {
1963
2011
  label,
1964
2012
  helperText,
@@ -1985,11 +2033,11 @@ var Input = import_react18.default.forwardRef((props, ref) => {
1985
2033
  if (type === "password" && innerProps.endDecorator) {
1986
2034
  console.warn('Input: endDecorator is not supported when type="password"');
1987
2035
  }
1988
- const [passwordVisible, setPasswordVisible] = (0, import_react18.useState)(false);
2036
+ const [passwordVisible, setPasswordVisible] = (0, import_react19.useState)(false);
1989
2037
  const [value, setValue] = useControlledState(
1990
2038
  valueProp,
1991
2039
  defaultValueProp ?? null,
1992
- (0, import_react18.useCallback)(
2040
+ (0, import_react19.useCallback)(
1993
2041
  (value2) => {
1994
2042
  onChange?.({
1995
2043
  /**
@@ -2016,7 +2064,7 @@ var Input = import_react18.default.forwardRef((props, ref) => {
2016
2064
  const actualType = type === "password" && passwordVisible ? "text" : type;
2017
2065
  const isPasswordType = type === "password";
2018
2066
  const showPasswordToggle = isPasswordType && !disableTogglePasswordButton;
2019
- const input = /* @__PURE__ */ import_react18.default.createElement(
2067
+ const input = /* @__PURE__ */ import_react19.default.createElement(
2020
2068
  MotionInput,
2021
2069
  {
2022
2070
  value: displayValue ?? "",
@@ -2031,7 +2079,7 @@ var Input = import_react18.default.forwardRef((props, ref) => {
2031
2079
  ...innerProps.slotProps
2032
2080
  },
2033
2081
  ...innerProps,
2034
- endDecorator: isPasswordType ? showPasswordToggle ? /* @__PURE__ */ import_react18.default.createElement(Stack_default, { gap: 1, direction: "row" }, /* @__PURE__ */ import_react18.default.createElement(
2082
+ endDecorator: isPasswordType ? showPasswordToggle ? /* @__PURE__ */ import_react19.default.createElement(Stack_default, { gap: 1, direction: "row" }, /* @__PURE__ */ import_react19.default.createElement(
2035
2083
  IconButton_default,
2036
2084
  {
2037
2085
  onMouseDown: (e) => e.preventDefault(),
@@ -2039,19 +2087,19 @@ var Input = import_react18.default.forwardRef((props, ref) => {
2039
2087
  disabled,
2040
2088
  "aria-label": passwordVisible ? "Hide password" : "Show password"
2041
2089
  },
2042
- passwordVisible ? /* @__PURE__ */ import_react18.default.createElement(import_VisibilityOff.default, null) : /* @__PURE__ */ import_react18.default.createElement(import_Visibility.default, null)
2043
- )) : null : enableClearable ? /* @__PURE__ */ import_react18.default.createElement(Stack_default, { gap: 1, direction: "row" }, innerProps.endDecorator, displayValue && /* @__PURE__ */ import_react18.default.createElement(
2090
+ passwordVisible ? /* @__PURE__ */ import_react19.default.createElement(import_VisibilityOff.default, null) : /* @__PURE__ */ import_react19.default.createElement(import_Visibility.default, null)
2091
+ )) : null : enableClearable ? /* @__PURE__ */ import_react19.default.createElement(Stack_default, { gap: 1, direction: "row" }, innerProps.endDecorator, displayValue && /* @__PURE__ */ import_react19.default.createElement(
2044
2092
  IconButton_default,
2045
2093
  {
2046
2094
  onMouseDown: (e) => e.preventDefault(),
2047
2095
  onClick: handleClear,
2048
2096
  "aria-label": "Clear"
2049
2097
  },
2050
- /* @__PURE__ */ import_react18.default.createElement(import_Close2.default, null)
2098
+ /* @__PURE__ */ import_react19.default.createElement(import_Close2.default, null)
2051
2099
  )) : innerProps.endDecorator
2052
2100
  }
2053
2101
  );
2054
- return /* @__PURE__ */ import_react18.default.createElement(
2102
+ return /* @__PURE__ */ import_react19.default.createElement(
2055
2103
  FormControl_default,
2056
2104
  {
2057
2105
  required,
@@ -2062,9 +2110,9 @@ var Input = import_react18.default.forwardRef((props, ref) => {
2062
2110
  sx,
2063
2111
  className
2064
2112
  },
2065
- label && /* @__PURE__ */ import_react18.default.createElement(FormLabel_default, null, label),
2113
+ label && /* @__PURE__ */ import_react19.default.createElement(FormLabel_default, null, label),
2066
2114
  input,
2067
- helperText && /* @__PURE__ */ import_react18.default.createElement(FormHelperText_default, null, helperText)
2115
+ helperText && /* @__PURE__ */ import_react19.default.createElement(FormHelperText_default, null, helperText)
2068
2116
  );
2069
2117
  });
2070
2118
  Input.displayName = "Input";
@@ -2236,9 +2284,9 @@ var useCurrencySetting = (props) => {
2236
2284
  };
2237
2285
 
2238
2286
  // src/components/CurrencyInput/CurrencyInput.tsx
2239
- var TextMaskAdapter = import_react19.default.forwardRef(function TextMaskAdapter2(props, ref) {
2287
+ var TextMaskAdapter = import_react20.default.forwardRef(function TextMaskAdapter2(props, ref) {
2240
2288
  const { onChange, ...innerProps } = props;
2241
- return /* @__PURE__ */ import_react19.default.createElement(
2289
+ return /* @__PURE__ */ import_react20.default.createElement(
2242
2290
  import_react_number_format.NumericFormat,
2243
2291
  {
2244
2292
  ...innerProps,
@@ -2258,7 +2306,7 @@ var CurrencyInputRoot = (0, import_joy25.styled)(Input_default, {
2258
2306
  slot: "root",
2259
2307
  overridesResolver: (props, styles) => styles.root
2260
2308
  })({});
2261
- var CurrencyInput = import_react19.default.forwardRef(function CurrencyInput2(inProps, ref) {
2309
+ var CurrencyInput = import_react20.default.forwardRef(function CurrencyInput2(inProps, ref) {
2262
2310
  const props = (0, import_joy25.useThemeProps)({ props: inProps, name: "CurrencyInput" });
2263
2311
  const {
2264
2312
  currency = "USD",
@@ -2279,22 +2327,22 @@ var CurrencyInput = import_react19.default.forwardRef(function CurrencyInput2(in
2279
2327
  const [_value, setValue] = useControlledState(
2280
2328
  props.value,
2281
2329
  props.defaultValue ?? null,
2282
- (0, import_react19.useCallback)((value2) => onChange?.({ target: { name, value: value2 } }), [onChange, name])
2330
+ (0, import_react20.useCallback)((value2) => onChange?.({ target: { name, value: value2 } }), [onChange, name])
2283
2331
  );
2284
- const value = (0, import_react19.useMemo)(() => {
2332
+ const value = (0, import_react20.useMemo)(() => {
2285
2333
  if (_value && useMinorUnit) {
2286
2334
  return _value / Math.pow(10, decimalScale);
2287
2335
  }
2288
2336
  return _value;
2289
2337
  }, [_value, useMinorUnit, decimalScale]);
2290
- const max = (0, import_react19.useMemo)(() => {
2338
+ const max = (0, import_react20.useMemo)(() => {
2291
2339
  if (props.max && useMinorUnit) {
2292
2340
  return props.max / Math.pow(10, decimalScale);
2293
2341
  }
2294
2342
  return props.max;
2295
2343
  }, [props.max, useMinorUnit, decimalScale]);
2296
- const isOverLimit = (0, import_react19.useMemo)(() => max != null && value != null && value > max, [max, value]);
2297
- const handleChange = (0, import_react19.useCallback)(
2344
+ const isOverLimit = (0, import_react20.useMemo)(() => max != null && value != null && value > max, [max, value]);
2345
+ const handleChange = (0, import_react20.useCallback)(
2298
2346
  (event) => {
2299
2347
  if (event.target.value === "") {
2300
2348
  setValue(null);
@@ -2305,7 +2353,7 @@ var CurrencyInput = import_react19.default.forwardRef(function CurrencyInput2(in
2305
2353
  },
2306
2354
  [decimalSeparator, useMinorUnit, setValue]
2307
2355
  );
2308
- return /* @__PURE__ */ import_react19.default.createElement(
2356
+ return /* @__PURE__ */ import_react20.default.createElement(
2309
2357
  CurrencyInputRoot,
2310
2358
  {
2311
2359
  ...innerProps,
@@ -2342,7 +2390,7 @@ var CurrencyInput = import_react19.default.forwardRef(function CurrencyInput2(in
2342
2390
  var CurrencyInput_default = CurrencyInput;
2343
2391
 
2344
2392
  // src/components/DataTable/DataTable.tsx
2345
- var import_react29 = __toESM(require("react"));
2393
+ var import_react30 = __toESM(require("react"));
2346
2394
  var import_react_virtual2 = require("@tanstack/react-virtual");
2347
2395
 
2348
2396
  // src/libs/text-measurer.ts
@@ -2570,9 +2618,15 @@ function computeAutoFitWidth(params) {
2570
2618
  if (!isNaN(maxPx) && maxPx > 0) finalWidth = Math.min(finalWidth, maxPx);
2571
2619
  return finalWidth;
2572
2620
  }
2621
+ function getHeaderCellId(tableId, field) {
2622
+ return `${tableId}_header_${sanitizeColumnId(field)}`;
2623
+ }
2624
+ function sanitizeColumnId(field) {
2625
+ return String(field).trim().replace(/\s+/g, "_");
2626
+ }
2573
2627
 
2574
2628
  // src/components/DataTable/styled.tsx
2575
- var import_react20 = __toESM(require("react"));
2629
+ var import_react21 = __toESM(require("react"));
2576
2630
  var import_joy26 = require("@mui/joy");
2577
2631
  var import_framer_motion17 = require("framer-motion");
2578
2632
  var import_ArrowUpwardRounded = __toESM(require("@mui/icons-material/ArrowUpwardRounded"));
@@ -2678,9 +2732,9 @@ var StyledTd = (0, import_joy26.styled)("td")(({ theme }) => ({
2678
2732
  }
2679
2733
  }));
2680
2734
  var MotionSortIcon = (0, import_framer_motion17.motion)(import_ArrowUpwardRounded.default);
2681
- var DefaultLoadingOverlay = () => /* @__PURE__ */ import_react20.default.createElement(import_joy26.LinearProgress, { value: 8, variant: "plain" });
2682
- var DefaultNoRowsOverlay = () => /* @__PURE__ */ import_react20.default.createElement(import_joy26.Typography, { level: "body-sm", textColor: "text.tertiary" }, "No rows");
2683
- var Resizer = (ref, targetRef = ref, onResizeStateChange, onAutoFit) => /* @__PURE__ */ import_react20.default.createElement(
2735
+ var DefaultLoadingOverlay = () => /* @__PURE__ */ import_react21.default.createElement(import_joy26.LinearProgress, { value: 8, variant: "plain" });
2736
+ var DefaultNoRowsOverlay = () => /* @__PURE__ */ import_react21.default.createElement(import_joy26.Typography, { level: "body-sm", textColor: "text.tertiary" }, "No rows");
2737
+ var Resizer = (ref, targetRef = ref, onResizeStateChange, onAutoFit) => /* @__PURE__ */ import_react21.default.createElement(
2684
2738
  Box_default,
2685
2739
  {
2686
2740
  sx: {
@@ -2757,12 +2811,12 @@ var Resizer = (ref, targetRef = ref, onResizeStateChange, onAutoFit) => /* @__PU
2757
2811
  );
2758
2812
 
2759
2813
  // src/components/DataTable/components.tsx
2760
- var import_react25 = __toESM(require("react"));
2814
+ var import_react26 = __toESM(require("react"));
2761
2815
  var import_joy33 = require("@mui/joy");
2762
2816
  var import_framer_motion21 = require("framer-motion");
2763
2817
 
2764
2818
  // src/components/DatePicker/DatePicker.tsx
2765
- var import_react21 = __toESM(require("react"));
2819
+ var import_react22 = __toESM(require("react"));
2766
2820
  var import_react_imask = require("react-imask");
2767
2821
  var import_CalendarToday = __toESM(require("@mui/icons-material/CalendarToday"));
2768
2822
  var import_joy29 = require("@mui/joy");
@@ -2915,9 +2969,9 @@ function parseDate(dateString, format) {
2915
2969
  var formatToPattern = (format) => {
2916
2970
  return format.replace(/YYYY/g, "Y").replace(/MM/g, "M").replace(/DD/g, "D").replace(/[^YMD\s]/g, (match) => `${match}\``);
2917
2971
  };
2918
- var TextMaskAdapter3 = import_react21.default.forwardRef(function TextMaskAdapter4(props, ref) {
2972
+ var TextMaskAdapter3 = import_react22.default.forwardRef(function TextMaskAdapter4(props, ref) {
2919
2973
  const { onChange, format, ...other } = props;
2920
- return /* @__PURE__ */ import_react21.default.createElement(
2974
+ return /* @__PURE__ */ import_react22.default.createElement(
2921
2975
  import_react_imask.IMaskInput,
2922
2976
  {
2923
2977
  ...other,
@@ -2952,7 +3006,7 @@ var TextMaskAdapter3 = import_react21.default.forwardRef(function TextMaskAdapte
2952
3006
  }
2953
3007
  );
2954
3008
  });
2955
- var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
3009
+ var DatePicker = (0, import_react22.forwardRef)((inProps, ref) => {
2956
3010
  const props = (0, import_joy29.useThemeProps)({ props: inProps, name: "DatePicker" });
2957
3011
  const {
2958
3012
  onChange,
@@ -2979,29 +3033,29 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
2979
3033
  presets,
2980
3034
  ...innerProps
2981
3035
  } = props;
2982
- const innerRef = (0, import_react21.useRef)(null);
2983
- const buttonRef = (0, import_react21.useRef)(null);
3036
+ const innerRef = (0, import_react22.useRef)(null);
3037
+ const buttonRef = (0, import_react22.useRef)(null);
2984
3038
  const [rawValue, setValue] = useControlledState(
2985
3039
  props.value,
2986
3040
  props.defaultValue ?? null,
2987
- (0, import_react21.useCallback)(
3041
+ (0, import_react22.useCallback)(
2988
3042
  (value2) => onChange?.({ target: { name: props.name, value: value2 ?? "" } }),
2989
3043
  [props.name, onChange]
2990
3044
  )
2991
3045
  );
2992
3046
  const value = rawValue ?? "";
2993
3047
  const isAlphabeticDisplay = hasAlphabeticMonth(displayFormat);
2994
- const [displayValue, setDisplayValue] = (0, import_react21.useState)(
3048
+ const [displayValue, setDisplayValue] = (0, import_react22.useState)(
2995
3049
  () => value ? formatValueString(parseDate(value, format), displayFormat, locale) : ""
2996
3050
  );
2997
- const [anchorEl, setAnchorEl] = (0, import_react21.useState)(null);
3051
+ const [anchorEl, setAnchorEl] = (0, import_react22.useState)(null);
2998
3052
  const open = Boolean(anchorEl);
2999
- (0, import_react21.useEffect)(() => {
3053
+ (0, import_react22.useEffect)(() => {
3000
3054
  if (!anchorEl) {
3001
3055
  innerRef.current?.blur();
3002
3056
  }
3003
3057
  }, [anchorEl, innerRef]);
3004
- (0, import_react21.useEffect)(() => {
3058
+ (0, import_react22.useEffect)(() => {
3005
3059
  if (value === "") {
3006
3060
  setDisplayValue("");
3007
3061
  return;
@@ -3011,8 +3065,8 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
3011
3065
  setDisplayValue(formattedValue);
3012
3066
  }
3013
3067
  }, [displayFormat, displayValue, format, locale, value]);
3014
- (0, import_react21.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
3015
- const handleChange = (0, import_react21.useCallback)(
3068
+ (0, import_react22.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
3069
+ const handleChange = (0, import_react22.useCallback)(
3016
3070
  (event) => {
3017
3071
  const value2 = event.target.value;
3018
3072
  setDisplayValue(value2 ? formatValueString(parseDate(value2, format), displayFormat, locale) : value2);
@@ -3020,7 +3074,7 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
3020
3074
  },
3021
3075
  [displayFormat, format, locale, setValue]
3022
3076
  );
3023
- const handleDisplayInputChange = (0, import_react21.useCallback)(
3077
+ const handleDisplayInputChange = (0, import_react22.useCallback)(
3024
3078
  (event) => {
3025
3079
  if (event.target.value === "") {
3026
3080
  handleChange({
@@ -3045,7 +3099,7 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
3045
3099
  },
3046
3100
  [displayFormat, format, handleChange, props.name]
3047
3101
  );
3048
- const handleCalendarToggle = (0, import_react21.useCallback)(
3102
+ const handleCalendarToggle = (0, import_react22.useCallback)(
3049
3103
  (event) => {
3050
3104
  setAnchorEl(anchorEl ? null : event.currentTarget);
3051
3105
  setTimeout(() => {
@@ -3054,7 +3108,7 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
3054
3108
  },
3055
3109
  [anchorEl, setAnchorEl, innerRef]
3056
3110
  );
3057
- const handleInputMouseDown = (0, import_react21.useCallback)(
3111
+ const handleInputMouseDown = (0, import_react22.useCallback)(
3058
3112
  (event) => {
3059
3113
  if (inputReadOnly || isAlphabeticDisplay) {
3060
3114
  event.preventDefault();
@@ -3063,7 +3117,7 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
3063
3117
  },
3064
3118
  [inputReadOnly, isAlphabeticDisplay, buttonRef]
3065
3119
  );
3066
- const handleInputClick = (0, import_react21.useCallback)(
3120
+ const handleInputClick = (0, import_react22.useCallback)(
3067
3121
  (event) => {
3068
3122
  if (inputReadOnly && !readOnly) {
3069
3123
  handleCalendarToggle(event);
@@ -3071,7 +3125,7 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
3071
3125
  },
3072
3126
  [inputReadOnly, readOnly, handleCalendarToggle]
3073
3127
  );
3074
- const handlePresetClick = (0, import_react21.useCallback)(
3128
+ const handlePresetClick = (0, import_react22.useCallback)(
3075
3129
  (presetValue) => {
3076
3130
  handleChange({
3077
3131
  target: {
@@ -3083,7 +3137,7 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
3083
3137
  },
3084
3138
  [handleChange, props.name]
3085
3139
  );
3086
- const isPresetDisabled = (0, import_react21.useCallback)(
3140
+ const isPresetDisabled = (0, import_react22.useCallback)(
3087
3141
  (presetValue) => {
3088
3142
  try {
3089
3143
  const date = parseDate(presetValue, format);
@@ -3100,7 +3154,7 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
3100
3154
  },
3101
3155
  [format, minDate, maxDate, disableFuture, disablePast, shouldDisableDate]
3102
3156
  );
3103
- return /* @__PURE__ */ import_react21.default.createElement(DatePickerRoot, { sx, className }, /* @__PURE__ */ import_react21.default.createElement(import_base3.FocusTrap, { open: true }, /* @__PURE__ */ import_react21.default.createElement(import_react21.default.Fragment, null, /* @__PURE__ */ import_react21.default.createElement(
3157
+ return /* @__PURE__ */ import_react22.default.createElement(DatePickerRoot, { sx, className }, /* @__PURE__ */ import_react22.default.createElement(import_base3.FocusTrap, { open: true }, /* @__PURE__ */ import_react22.default.createElement(import_react22.default.Fragment, null, /* @__PURE__ */ import_react22.default.createElement(
3104
3158
  Input_default,
3105
3159
  {
3106
3160
  ...innerProps,
@@ -3127,7 +3181,7 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
3127
3181
  }
3128
3182
  },
3129
3183
  sx: { width: "100%" },
3130
- endDecorator: /* @__PURE__ */ import_react21.default.createElement(
3184
+ endDecorator: /* @__PURE__ */ import_react22.default.createElement(
3131
3185
  CalendarButton,
3132
3186
  {
3133
3187
  ref: buttonRef,
@@ -3139,13 +3193,13 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
3139
3193
  "aria-expanded": open,
3140
3194
  disabled
3141
3195
  },
3142
- /* @__PURE__ */ import_react21.default.createElement(import_CalendarToday.default, null)
3196
+ /* @__PURE__ */ import_react22.default.createElement(import_CalendarToday.default, null)
3143
3197
  ),
3144
3198
  label,
3145
3199
  helperText,
3146
3200
  readOnly: readOnly || inputReadOnly || isAlphabeticDisplay
3147
3201
  }
3148
- ), open && /* @__PURE__ */ import_react21.default.createElement(import_base3.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react21.default.createElement(
3202
+ ), open && /* @__PURE__ */ import_react22.default.createElement(import_base3.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react22.default.createElement(
3149
3203
  StyledPopper,
3150
3204
  {
3151
3205
  id: "date-picker-popper",
@@ -3164,7 +3218,7 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
3164
3218
  "aria-label": "Calendar Tooltip",
3165
3219
  "aria-expanded": open
3166
3220
  },
3167
- /* @__PURE__ */ import_react21.default.createElement(CalendarSheet, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react21.default.createElement(CalendarSheetContent, null, /* @__PURE__ */ import_react21.default.createElement(CalendarSection, null, /* @__PURE__ */ import_react21.default.createElement(
3221
+ /* @__PURE__ */ import_react22.default.createElement(CalendarSheet, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react22.default.createElement(CalendarSheetContent, null, /* @__PURE__ */ import_react22.default.createElement(CalendarSection, null, /* @__PURE__ */ import_react22.default.createElement(
3168
3222
  Calendar_default,
3169
3223
  {
3170
3224
  value: value && !Number.isNaN(parseDate(value, format).getTime()) ? [parseDate(value, format), void 0] : void 0,
@@ -3184,14 +3238,14 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
3184
3238
  shouldDisableDate: shouldDisableDate ? (date) => shouldDisableDate(formatValueString(date, format)) : void 0,
3185
3239
  locale
3186
3240
  }
3187
- ), !hideClearButton && /* @__PURE__ */ import_react21.default.createElement(
3241
+ ), !hideClearButton && /* @__PURE__ */ import_react22.default.createElement(
3188
3242
  DialogActions_default,
3189
3243
  {
3190
3244
  sx: {
3191
3245
  p: 1
3192
3246
  }
3193
3247
  },
3194
- /* @__PURE__ */ import_react21.default.createElement(
3248
+ /* @__PURE__ */ import_react22.default.createElement(
3195
3249
  Button_default,
3196
3250
  {
3197
3251
  size,
@@ -3209,9 +3263,9 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
3209
3263
  },
3210
3264
  "Clear"
3211
3265
  )
3212
- )), presets && presets.length > 0 && /* @__PURE__ */ import_react21.default.createElement(PresetPanel, null, presets.map((preset) => {
3266
+ )), presets && presets.length > 0 && /* @__PURE__ */ import_react22.default.createElement(PresetPanel, null, presets.map((preset) => {
3213
3267
  const disabled2 = isPresetDisabled(preset.value);
3214
- return /* @__PURE__ */ import_react21.default.createElement(
3268
+ return /* @__PURE__ */ import_react22.default.createElement(
3215
3269
  PresetItem,
3216
3270
  {
3217
3271
  key: preset.label,
@@ -3232,11 +3286,11 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
3232
3286
  var DatePicker_default = DatePicker;
3233
3287
 
3234
3288
  // src/components/Textarea/Textarea.tsx
3235
- var import_react22 = __toESM(require("react"));
3289
+ var import_react23 = __toESM(require("react"));
3236
3290
  var import_joy30 = require("@mui/joy");
3237
3291
  var import_framer_motion19 = require("framer-motion");
3238
3292
  var MotionTextarea = (0, import_framer_motion19.motion)(import_joy30.Textarea);
3239
- var Textarea = (props) => {
3293
+ var TextareaBase = (props) => {
3240
3294
  const {
3241
3295
  label,
3242
3296
  error,
@@ -3252,7 +3306,7 @@ var Textarea = (props) => {
3252
3306
  className,
3253
3307
  ...innerProps
3254
3308
  } = props;
3255
- const textarea = /* @__PURE__ */ import_react22.default.createElement(
3309
+ const textarea = /* @__PURE__ */ import_react23.default.createElement(
3256
3310
  MotionTextarea,
3257
3311
  {
3258
3312
  required,
@@ -3264,7 +3318,7 @@ var Textarea = (props) => {
3264
3318
  ...innerProps
3265
3319
  }
3266
3320
  );
3267
- return /* @__PURE__ */ import_react22.default.createElement(
3321
+ return /* @__PURE__ */ import_react23.default.createElement(
3268
3322
  FormControl_default,
3269
3323
  {
3270
3324
  required,
@@ -3275,18 +3329,22 @@ var Textarea = (props) => {
3275
3329
  sx,
3276
3330
  className
3277
3331
  },
3278
- label && /* @__PURE__ */ import_react22.default.createElement(FormLabel_default, null, label),
3332
+ label && /* @__PURE__ */ import_react23.default.createElement(FormLabel_default, null, label),
3279
3333
  textarea,
3280
- helperText && /* @__PURE__ */ import_react22.default.createElement(FormHelperText_default, null, helperText)
3334
+ helperText && /* @__PURE__ */ import_react23.default.createElement(FormHelperText_default, null, helperText)
3281
3335
  );
3282
3336
  };
3337
+ var Textarea = import_react23.default.forwardRef((props, ref) => {
3338
+ const textareaSlotProps = useSlotRef(props.slotProps?.textarea, ref);
3339
+ return /* @__PURE__ */ import_react23.default.createElement(TextareaBase, { ...props, slotProps: { ...props.slotProps, textarea: textareaSlotProps } });
3340
+ });
3283
3341
  Textarea.displayName = "Textarea";
3284
3342
 
3285
3343
  // src/components/Textarea/index.ts
3286
3344
  var Textarea_default = Textarea;
3287
3345
 
3288
3346
  // src/components/Select/Select.tsx
3289
- var import_react23 = __toESM(require("react"));
3347
+ var import_react24 = __toESM(require("react"));
3290
3348
  var import_joy31 = require("@mui/joy");
3291
3349
  var import_framer_motion20 = require("framer-motion");
3292
3350
  var MotionOption = (0, import_framer_motion20.motion)(import_joy31.Option);
@@ -3297,7 +3355,7 @@ var secondaryTextLevelMap2 = {
3297
3355
  lg: "body-md"
3298
3356
  };
3299
3357
  Option.displayName = "Option";
3300
- function Select(props) {
3358
+ function SelectInner(props, ref) {
3301
3359
  const {
3302
3360
  label,
3303
3361
  helperText,
@@ -3323,7 +3381,7 @@ function Select(props) {
3323
3381
  formHelperText: formHelperTextProps,
3324
3382
  ...joySlotProps
3325
3383
  } = slotProps ?? {};
3326
- const options = (0, import_react23.useMemo)(
3384
+ const options = (0, import_react24.useMemo)(
3327
3385
  () => props.options.map((option) => {
3328
3386
  if (option.hasOwnProperty("value") && option.hasOwnProperty("label")) {
3329
3387
  return option;
@@ -3348,14 +3406,15 @@ function Select(props) {
3348
3406
  };
3349
3407
  onChange?.(newEvent, newValue);
3350
3408
  };
3351
- const optionMap = (0, import_react23.useMemo)(() => {
3409
+ const optionMap = (0, import_react24.useMemo)(() => {
3352
3410
  const map = /* @__PURE__ */ new Map();
3353
3411
  options.forEach((option) => {
3354
3412
  map.set(option.value, option);
3355
3413
  });
3356
3414
  return map;
3357
3415
  }, [options]);
3358
- const select = /* @__PURE__ */ import_react23.default.createElement(
3416
+ const buttonSlotProps = useSlotRef(joySlotProps.button, ref);
3417
+ const select = /* @__PURE__ */ import_react24.default.createElement(
3359
3418
  import_joy31.Select,
3360
3419
  {
3361
3420
  ...innerProps,
@@ -3363,7 +3422,7 @@ function Select(props) {
3363
3422
  disabled,
3364
3423
  size,
3365
3424
  color: error ? "danger" : color,
3366
- slotProps: joySlotProps,
3425
+ slotProps: { ...joySlotProps, button: buttonSlotProps },
3367
3426
  onChange: handleChange,
3368
3427
  renderValue: (selected) => {
3369
3428
  if (!selected) return null;
@@ -3373,9 +3432,9 @@ function Select(props) {
3373
3432
  return optionMap.get(selected.value)?.label;
3374
3433
  }
3375
3434
  },
3376
- options.map((option) => /* @__PURE__ */ import_react23.default.createElement(Option, { key: option.value, value: option.value, disabled: option.disabled }, option.secondaryText ? /* @__PURE__ */ import_react23.default.createElement(import_joy31.ListItemContent, { sx: { gap: 0.5 } }, /* @__PURE__ */ import_react23.default.createElement(import_joy31.Typography, { level: "inherit" }, option.label), /* @__PURE__ */ import_react23.default.createElement(import_joy31.Typography, { level: secondaryTextLevelMap2[size ?? "md"], textColor: "text.tertiary" }, option.secondaryText)) : option.label))
3435
+ options.map((option) => /* @__PURE__ */ import_react24.default.createElement(Option, { key: option.value, value: option.value, disabled: option.disabled }, option.secondaryText ? /* @__PURE__ */ import_react24.default.createElement(import_joy31.ListItemContent, { sx: { gap: 0.5 } }, /* @__PURE__ */ import_react24.default.createElement(import_joy31.Typography, { level: "inherit" }, option.label), /* @__PURE__ */ import_react24.default.createElement(import_joy31.Typography, { level: secondaryTextLevelMap2[size ?? "md"], textColor: "text.tertiary" }, option.secondaryText)) : option.label))
3377
3436
  );
3378
- return /* @__PURE__ */ import_react23.default.createElement(
3437
+ return /* @__PURE__ */ import_react24.default.createElement(
3379
3438
  FormControl_default,
3380
3439
  {
3381
3440
  required,
@@ -3388,11 +3447,12 @@ function Select(props) {
3388
3447
  className,
3389
3448
  ...formControlProps
3390
3449
  },
3391
- label && /* @__PURE__ */ import_react23.default.createElement(FormLabel_default, { ...formLabelProps }, label),
3450
+ label && /* @__PURE__ */ import_react24.default.createElement(FormLabel_default, { ...formLabelProps }, label),
3392
3451
  select,
3393
- helperText && /* @__PURE__ */ import_react23.default.createElement(FormHelperText_default, { ...formHelperTextProps }, helperText)
3452
+ helperText && /* @__PURE__ */ import_react24.default.createElement(FormHelperText_default, { ...formHelperTextProps }, helperText)
3394
3453
  );
3395
3454
  }
3455
+ var Select = import_react24.default.forwardRef(SelectInner);
3396
3456
  Select.displayName = "Select";
3397
3457
 
3398
3458
  // src/components/Select/index.ts
@@ -3402,7 +3462,7 @@ var Select_default = Select;
3402
3462
  var import_joy34 = require("@mui/joy");
3403
3463
 
3404
3464
  // src/components/InfoSign/InfoSign.tsx
3405
- var import_react24 = __toESM(require("react"));
3465
+ var import_react25 = __toESM(require("react"));
3406
3466
  var import_joy32 = require("@mui/joy");
3407
3467
  var import_Info = __toESM(require("@mui/icons-material/Info"));
3408
3468
  var InfoIcon = (0, import_joy32.styled)(import_Info.default, {
@@ -3415,7 +3475,7 @@ var InfoIcon = (0, import_joy32.styled)(import_Info.default, {
3415
3475
  }));
3416
3476
  function InfoSign(props) {
3417
3477
  const { message, placement } = props;
3418
- return /* @__PURE__ */ import_react24.default.createElement(
3478
+ return /* @__PURE__ */ import_react25.default.createElement(
3419
3479
  Tooltip_default,
3420
3480
  {
3421
3481
  arrow: true,
@@ -3425,9 +3485,9 @@ function InfoSign(props) {
3425
3485
  maxWidth: "320px"
3426
3486
  }
3427
3487
  },
3428
- title: message?.split("\n").map((line, i) => /* @__PURE__ */ import_react24.default.createElement("div", { key: `info-sign-${i}` }, line))
3488
+ title: message?.split("\n").map((line, i) => /* @__PURE__ */ import_react25.default.createElement("div", { key: `info-sign-${i}` }, line))
3429
3489
  },
3430
- /* @__PURE__ */ import_react24.default.createElement(InfoIcon, null)
3490
+ /* @__PURE__ */ import_react25.default.createElement(InfoIcon, null)
3431
3491
  );
3432
3492
  }
3433
3493
 
@@ -3440,9 +3500,9 @@ var TextEllipsis = ({
3440
3500
  lineClamp,
3441
3501
  ...rest
3442
3502
  }) => {
3443
- const textRef = (0, import_react25.useRef)(null);
3444
- const [showTooltip, setShowTooltip] = (0, import_react25.useState)(false);
3445
- (0, import_react25.useLayoutEffect)(() => {
3503
+ const textRef = (0, import_react26.useRef)(null);
3504
+ const [showTooltip, setShowTooltip] = (0, import_react26.useState)(false);
3505
+ (0, import_react26.useLayoutEffect)(() => {
3446
3506
  const element = textRef.current;
3447
3507
  if (!element) return;
3448
3508
  const checkTruncation = () => {
@@ -3454,21 +3514,21 @@ var TextEllipsis = ({
3454
3514
  ro.observe(element);
3455
3515
  return () => ro.disconnect();
3456
3516
  }, [children, lineClamp]);
3457
- return /* @__PURE__ */ import_react25.default.createElement(Tooltip_default, { title: showTooltip ? children : "", placement: "top" }, /* @__PURE__ */ import_react25.default.createElement(EllipsisDiv, { ref: textRef, lineClamp, ...rest }, children));
3517
+ return /* @__PURE__ */ import_react26.default.createElement(Tooltip_default, { title: showTooltip ? children : "", placement: "top" }, /* @__PURE__ */ import_react26.default.createElement(EllipsisDiv, { ref: textRef, lineClamp, ...rest }, children));
3458
3518
  };
3459
3519
  var CellTextEllipsis = ({ children }) => {
3460
- const textRef = (0, import_react25.useRef)(null);
3461
- const [showTooltip, setShowTooltip] = (0, import_react25.useState)(false);
3462
- (0, import_react25.useLayoutEffect)(() => {
3520
+ const textRef = (0, import_react26.useRef)(null);
3521
+ const [showTooltip, setShowTooltip] = (0, import_react26.useState)(false);
3522
+ (0, import_react26.useLayoutEffect)(() => {
3463
3523
  const element = textRef.current;
3464
3524
  if (element) {
3465
3525
  const isTextTruncated = element.scrollWidth > element.clientWidth;
3466
3526
  setShowTooltip(isTextTruncated);
3467
3527
  }
3468
3528
  }, [children]);
3469
- const content = /* @__PURE__ */ import_react25.default.createElement(EllipsisDiv, { ref: textRef }, children);
3529
+ const content = /* @__PURE__ */ import_react26.default.createElement(EllipsisDiv, { ref: textRef }, children);
3470
3530
  if (showTooltip) {
3471
- return /* @__PURE__ */ import_react25.default.createElement(
3531
+ return /* @__PURE__ */ import_react26.default.createElement(
3472
3532
  Tooltip_default,
3473
3533
  {
3474
3534
  title: children,
@@ -3512,18 +3572,15 @@ var HeadCell = (props) => {
3512
3572
  const theme = (0, import_joy33.useTheme)();
3513
3573
  const ref = headerRef;
3514
3574
  const colRef = tableColRef;
3515
- const localRef = (0, import_react25.useRef)(null);
3516
- (0, import_react25.useLayoutEffect)(() => {
3575
+ const localRef = (0, import_react26.useRef)(null);
3576
+ (0, import_react26.useLayoutEffect)(() => {
3517
3577
  ref.current = localRef.current;
3518
3578
  }, [ref]);
3519
- const [isHovered, setIsHovered] = (0, import_react25.useState)(false);
3579
+ const [isHovered, setIsHovered] = (0, import_react26.useState)(false);
3520
3580
  const sortable = type === "actions" ? false : _sortable;
3521
- const headId = (0, import_react25.useMemo)(
3522
- () => `${tableId}_header_${headerName ?? field}`.trim(),
3523
- [tableId, headerName, field]
3524
- );
3525
- const isResizingRef = (0, import_react25.useRef)(false);
3526
- const resizer = (0, import_react25.useMemo)(
3581
+ const headId = (0, import_react26.useMemo)(() => getHeaderCellId(tableId, field), [tableId, field]);
3582
+ const isResizingRef = (0, import_react26.useRef)(false);
3583
+ const resizer = (0, import_react26.useMemo)(
3527
3584
  () => resizable ?? true ? Resizer(
3528
3585
  ref,
3529
3586
  colRef,
@@ -3534,7 +3591,7 @@ var HeadCell = (props) => {
3534
3591
  ) : null,
3535
3592
  [resizable, ref, colRef, onAutoFit, field]
3536
3593
  );
3537
- const style = (0, import_react25.useMemo)(
3594
+ const style = (0, import_react26.useMemo)(
3538
3595
  () => ({
3539
3596
  width,
3540
3597
  minWidth: minWidth ?? "50px",
@@ -3552,10 +3609,10 @@ var HeadCell = (props) => {
3552
3609
  );
3553
3610
  const textAlign = getTextAlign(props);
3554
3611
  const initialSort = sortOrder[0];
3555
- const sortIcon = (0, import_react25.useMemo)(() => {
3612
+ const sortIcon = (0, import_react26.useMemo)(() => {
3556
3613
  const isSorted = !!sort;
3557
3614
  const isVisible = sortable && (isSorted || isHovered);
3558
- return /* @__PURE__ */ import_react25.default.createElement(import_framer_motion21.AnimatePresence, { mode: "wait" }, isVisible && /* @__PURE__ */ import_react25.default.createElement(
3615
+ return /* @__PURE__ */ import_react26.default.createElement(import_framer_motion21.AnimatePresence, { mode: "wait" }, isVisible && /* @__PURE__ */ import_react26.default.createElement(
3559
3616
  MotionSortIcon,
3560
3617
  {
3561
3618
  key: "sort-icon",
@@ -3583,21 +3640,21 @@ var HeadCell = (props) => {
3583
3640
  }
3584
3641
  ));
3585
3642
  }, [headId, initialSort, sort, sortable, isHovered]);
3586
- const infoSign = (0, import_react25.useMemo)(
3587
- () => description ? /* @__PURE__ */ import_react25.default.createElement(InfoSign_default, { message: description, placement: "bottom" }) : null,
3643
+ const infoSign = (0, import_react26.useMemo)(
3644
+ () => description ? /* @__PURE__ */ import_react26.default.createElement(InfoSign_default, { message: description, placement: "bottom" }) : null,
3588
3645
  [description]
3589
3646
  );
3590
- const params = (0, import_react25.useMemo)(
3647
+ const params = (0, import_react26.useMemo)(
3591
3648
  () => ({
3592
3649
  field
3593
3650
  }),
3594
3651
  [field]
3595
3652
  );
3596
- const computedHeaderClassName = (0, import_react25.useMemo)(
3653
+ const computedHeaderClassName = (0, import_react26.useMemo)(
3597
3654
  () => (typeof headerClassName === "function" ? headerClassName(params) : headerClassName) || void 0,
3598
3655
  [headerClassName, params]
3599
3656
  );
3600
- return /* @__PURE__ */ import_react25.default.createElement(
3657
+ return /* @__PURE__ */ import_react26.default.createElement(
3601
3658
  StyledTh,
3602
3659
  {
3603
3660
  id: headId,
@@ -3606,7 +3663,7 @@ var HeadCell = (props) => {
3606
3663
  ref: localRef,
3607
3664
  key: field,
3608
3665
  style,
3609
- onClick: (0, import_react25.useCallback)(
3666
+ onClick: (0, import_react26.useCallback)(
3610
3667
  (e) => {
3611
3668
  if (isResizingRef.current) return;
3612
3669
  if (!(e.target instanceof Element) || !e.currentTarget.contains(e.target)) return;
@@ -3620,7 +3677,7 @@ var HeadCell = (props) => {
3620
3677
  initial: "initial",
3621
3678
  className: computedHeaderClassName
3622
3679
  },
3623
- /* @__PURE__ */ import_react25.default.createElement(Stack_default, { gap: 1, direction: "row", justifyContent: textAlign, alignItems: "center", sx: { minWidth: 0 } }, textAlign === "end" && sortIcon, textAlign === "end" && infoSign, /* @__PURE__ */ import_react25.default.createElement(TextEllipsis, { lineClamp: headerLineClamp, "data-slot": "header-text" }, headerName ?? field, editMode && required && /* @__PURE__ */ import_react25.default.createElement(Asterisk, null, "*")), textAlign === "start" && infoSign, textAlign === "start" && sortIcon),
3680
+ /* @__PURE__ */ import_react26.default.createElement(Stack_default, { gap: 1, direction: "row", justifyContent: textAlign, alignItems: "center", sx: { minWidth: 0 } }, textAlign === "end" && sortIcon, textAlign === "end" && infoSign, /* @__PURE__ */ import_react26.default.createElement(TextEllipsis, { lineClamp: headerLineClamp, "data-slot": "header-text" }, headerName ?? field, editMode && required && /* @__PURE__ */ import_react26.default.createElement(Asterisk, null, "*")), textAlign === "start" && infoSign, textAlign === "start" && sortIcon),
3624
3681
  resizer
3625
3682
  );
3626
3683
  };
@@ -3645,9 +3702,9 @@ var BodyCell = (props) => {
3645
3702
  onCellEditStop
3646
3703
  } = props;
3647
3704
  const theme = (0, import_joy33.useTheme)();
3648
- const [value, setValue] = (0, import_react25.useState)(row[field]);
3649
- const cellRef = (0, import_react25.useRef)(null);
3650
- const params = (0, import_react25.useMemo)(
3705
+ const [value, setValue] = (0, import_react26.useState)(row[field]);
3706
+ const cellRef = (0, import_react26.useRef)(null);
3707
+ const params = (0, import_react26.useMemo)(
3651
3708
  () => ({
3652
3709
  row,
3653
3710
  value,
@@ -3656,20 +3713,20 @@ var BodyCell = (props) => {
3656
3713
  }),
3657
3714
  [row, rowId, value, field]
3658
3715
  );
3659
- const editMode = (0, import_react25.useMemo)(
3716
+ const editMode = (0, import_react26.useMemo)(
3660
3717
  () => !!(props.editMode && (typeof isCellEditable === "function" ? isCellEditable(params) : isCellEditable ?? true)),
3661
3718
  [props.editMode, isCellEditable, params]
3662
3719
  );
3663
3720
  const propsComponentProps = "componentProps" in props ? props.componentProps : null;
3664
3721
  const hasComponentProps = "componentProps" in props;
3665
- const componentProps = (0, import_react25.useMemo)(
3722
+ const componentProps = (0, import_react26.useMemo)(
3666
3723
  () => ({
3667
3724
  ...hasComponentProps && (typeof propsComponentProps === "function" ? propsComponentProps(params) : propsComponentProps || {}),
3668
3725
  size: "sm"
3669
3726
  }),
3670
3727
  [hasComponentProps, propsComponentProps, params]
3671
3728
  );
3672
- const editModeComponentProps = (0, import_react25.useMemo)(
3729
+ const editModeComponentProps = (0, import_react26.useMemo)(
3673
3730
  () => ({
3674
3731
  ...componentProps,
3675
3732
  onChange: (e) => {
@@ -3731,25 +3788,25 @@ var BodyCell = (props) => {
3731
3788
  }),
3732
3789
  [params, row, field, value, componentProps, type, onCellEditStop, onCellEditStart]
3733
3790
  );
3734
- const MemoizedRenderEditCell = (0, import_react25.useMemo)(() => renderEditCell ? (0, import_react25.memo)(renderEditCell) : null, [renderEditCell]);
3735
- const MemoizedRenderCell = (0, import_react25.useMemo)(() => renderCell ? (0, import_react25.memo)(renderCell) : null, [renderCell]);
3736
- const EditModeComponent = (0, import_react25.useMemo)(() => {
3791
+ const MemoizedRenderEditCell = (0, import_react26.useMemo)(() => renderEditCell ? (0, import_react26.memo)(renderEditCell) : null, [renderEditCell]);
3792
+ const MemoizedRenderCell = (0, import_react26.useMemo)(() => renderCell ? (0, import_react26.memo)(renderCell) : null, [renderCell]);
3793
+ const EditModeComponent = (0, import_react26.useMemo)(() => {
3737
3794
  if (MemoizedRenderEditCell) {
3738
- return (0, import_react25.createElement)(MemoizedRenderEditCell, params);
3795
+ return (0, import_react26.createElement)(MemoizedRenderEditCell, params);
3739
3796
  }
3740
3797
  return {
3741
- date: /* @__PURE__ */ import_react25.default.createElement(DatePicker_default, { value, ...editModeComponentProps }),
3742
- currency: /* @__PURE__ */ import_react25.default.createElement(
3798
+ date: /* @__PURE__ */ import_react26.default.createElement(DatePicker_default, { value, ...editModeComponentProps }),
3799
+ currency: /* @__PURE__ */ import_react26.default.createElement(
3743
3800
  CurrencyInput_default,
3744
3801
  {
3745
3802
  value,
3746
3803
  ...editModeComponentProps
3747
3804
  }
3748
3805
  ),
3749
- number: /* @__PURE__ */ import_react25.default.createElement(Input_default, { value, type: "number", ...editModeComponentProps }),
3750
- text: /* @__PURE__ */ import_react25.default.createElement(Input_default, { value, type: "text", ...editModeComponentProps }),
3751
- longText: /* @__PURE__ */ import_react25.default.createElement(Textarea_default, { value, ...editModeComponentProps }),
3752
- autocomplete: /* @__PURE__ */ import_react25.default.createElement(
3806
+ number: /* @__PURE__ */ import_react26.default.createElement(Input_default, { value, type: "number", ...editModeComponentProps }),
3807
+ text: /* @__PURE__ */ import_react26.default.createElement(Input_default, { value, type: "text", ...editModeComponentProps }),
3808
+ longText: /* @__PURE__ */ import_react26.default.createElement(Textarea_default, { value, ...editModeComponentProps }),
3809
+ autocomplete: /* @__PURE__ */ import_react26.default.createElement(
3753
3810
  Autocomplete_default,
3754
3811
  {
3755
3812
  value,
@@ -3757,7 +3814,7 @@ var BodyCell = (props) => {
3757
3814
  ...editModeComponentProps
3758
3815
  }
3759
3816
  ),
3760
- select: /* @__PURE__ */ import_react25.default.createElement(
3817
+ select: /* @__PURE__ */ import_react26.default.createElement(
3761
3818
  Select_default,
3762
3819
  {
3763
3820
  value,
@@ -3768,13 +3825,13 @@ var BodyCell = (props) => {
3768
3825
  }[type || "text"];
3769
3826
  }, [value, editModeComponentProps, type, MemoizedRenderEditCell, params]);
3770
3827
  const linkComponentFromProps = props.component;
3771
- const ReadModeComponent = (0, import_react25.useMemo)(() => {
3828
+ const ReadModeComponent = (0, import_react26.useMemo)(() => {
3772
3829
  if (MemoizedRenderCell) {
3773
- return (0, import_react25.createElement)(MemoizedRenderCell, params);
3830
+ return (0, import_react26.createElement)(MemoizedRenderCell, params);
3774
3831
  }
3775
3832
  const innerText = value;
3776
3833
  const typedComponent = {
3777
- link: import_react25.default.createElement(linkComponentFromProps || import_joy34.Link, {
3834
+ link: import_react26.default.createElement(linkComponentFromProps || import_joy34.Link, {
3778
3835
  children: innerText,
3779
3836
  ...componentProps
3780
3837
  })
@@ -3782,27 +3839,27 @@ var BodyCell = (props) => {
3782
3839
  return typedComponent || innerText;
3783
3840
  }, [value, MemoizedRenderCell, params, type, componentProps, linkComponentFromProps]);
3784
3841
  const getActions = props.getActions;
3785
- const CellComponent = (0, import_react25.useMemo)(() => {
3842
+ const CellComponent = (0, import_react26.useMemo)(() => {
3786
3843
  if (type === "actions") {
3787
- return /* @__PURE__ */ import_react25.default.createElement(Stack_default, { direction: "row", gap: 1, justifyContent: "center", alignItems: "center" }, getActions?.(params));
3844
+ return /* @__PURE__ */ import_react26.default.createElement(Stack_default, { direction: "row", gap: 1, justifyContent: "center", alignItems: "center" }, getActions?.(params));
3788
3845
  }
3789
3846
  return editMode && EditModeComponent ? EditModeComponent : ReadModeComponent;
3790
3847
  }, [type, getActions, params, editMode, EditModeComponent, ReadModeComponent]);
3791
- const showTooltip = (0, import_react25.useMemo)(() => noWrap && type === "longText", [noWrap, type]);
3848
+ const showTooltip = (0, import_react26.useMemo)(() => noWrap && type === "longText", [noWrap, type]);
3792
3849
  const isBoundary = props.isLastStartPinnedColumn || props.isLastEndPinnedColumn;
3793
- const computedCellClassName = (0, import_react25.useMemo)(
3850
+ const computedCellClassName = (0, import_react26.useMemo)(
3794
3851
  () => (typeof cellClassName === "function" ? cellClassName(params) : cellClassName) || "",
3795
3852
  [cellClassName, params]
3796
3853
  );
3797
- (0, import_react25.useEffect)(() => {
3854
+ (0, import_react26.useEffect)(() => {
3798
3855
  setValue(row[field]);
3799
3856
  }, [row, field]);
3800
- return /* @__PURE__ */ import_react25.default.createElement(
3857
+ return /* @__PURE__ */ import_react26.default.createElement(
3801
3858
  StyledTd,
3802
3859
  {
3803
3860
  ref: cellRef,
3804
3861
  key: field,
3805
- headers: `${tableId}_header_${props.headerName ?? field}`,
3862
+ headers: getHeaderCellId(tableId, field),
3806
3863
  sx: {
3807
3864
  textAlign: getTextAlign({ type }),
3808
3865
  verticalAlign: editMode ? "top" : "middle",
@@ -3814,16 +3871,16 @@ var BodyCell = (props) => {
3814
3871
  },
3815
3872
  className: [isLastStartPinnedColumn && "is-last-left", isLastEndPinnedColumn && "is-last-right", computedCellClassName].filter(Boolean).join(" ") || ""
3816
3873
  },
3817
- (0, import_react25.useMemo)(
3818
- () => showTooltip ? /* @__PURE__ */ import_react25.default.createElement(CellTextEllipsis, null, CellComponent) : CellComponent,
3874
+ (0, import_react26.useMemo)(
3875
+ () => showTooltip ? /* @__PURE__ */ import_react26.default.createElement(CellTextEllipsis, null, CellComponent) : CellComponent,
3819
3876
  [CellComponent, showTooltip]
3820
3877
  )
3821
3878
  );
3822
3879
  };
3823
- var BodyRow = (0, import_react25.memo)(
3880
+ var BodyRow = (0, import_react26.memo)(
3824
3881
  (props) => {
3825
3882
  const { tableId, columns, rowId, editMode, noWrap, row } = props;
3826
- return /* @__PURE__ */ import_react25.default.createElement(import_react25.default.Fragment, null, columns.map((column, i) => /* @__PURE__ */ import_react25.default.createElement(
3883
+ return /* @__PURE__ */ import_react26.default.createElement(import_react26.default.Fragment, null, columns.map((column, i) => /* @__PURE__ */ import_react26.default.createElement(
3827
3884
  BodyCell,
3828
3885
  {
3829
3886
  key: `${rowId}_${column.field.toString()}_${i}`,
@@ -3856,7 +3913,7 @@ var StyledTableRow2 = (0, import_joy33.styled)("tr", {
3856
3913
  }
3857
3914
  }
3858
3915
  }));
3859
- var VirtualizedTableRow = (0, import_react25.memo)(StyledTableRow2, (prevProps, nextProps) => {
3916
+ var VirtualizedTableRow = (0, import_react26.memo)(StyledTableRow2, (prevProps, nextProps) => {
3860
3917
  return prevProps.striped === nextProps.striped && prevProps.style?.height === nextProps.style?.height && prevProps.style?.transform === nextProps.style?.transform && // @ts-ignore
3861
3918
  prevProps["data-row-id"] === nextProps["data-row-id"] && // @ts-ignore
3862
3919
  prevProps["data-index"] === nextProps["data-index"] && prevProps.tabIndex === nextProps.tabIndex && prevProps["aria-checked"] === nextProps["aria-checked"] && // Track column structure changes (e.g. isCellEditable toggled, columns added/removed)
@@ -3867,19 +3924,20 @@ var VirtualizedTableRow = (0, import_react25.memo)(StyledTableRow2, (prevProps,
3867
3924
  });
3868
3925
 
3869
3926
  // src/components/DataTable/hooks.ts
3870
- var import_react26 = require("react");
3927
+ var import_react27 = require("react");
3871
3928
  function useColumnWidths(columnsByField) {
3872
- const [widths, setWidths] = (0, import_react26.useState)({});
3873
- const roRef = (0, import_react26.useRef)();
3874
- (0, import_react26.useLayoutEffect)(() => {
3929
+ const [widths, setWidths] = (0, import_react27.useState)({});
3930
+ const roRef = (0, import_react27.useRef)();
3931
+ (0, import_react27.useLayoutEffect)(() => {
3875
3932
  if (roRef.current) roRef.current.disconnect();
3876
3933
  roRef.current = new ResizeObserver((entries) => {
3877
- let changed = false;
3878
3934
  setWidths((prev) => {
3935
+ let changed = false;
3879
3936
  const next = { ...prev };
3880
3937
  entries.forEach((entry) => {
3881
3938
  const field = entry.target.dataset.field;
3882
3939
  const w = Math.round(entry.target.getBoundingClientRect().width);
3940
+ if (w === 0) return;
3883
3941
  if (next[field] !== w) {
3884
3942
  next[field] = w;
3885
3943
  changed = true;
@@ -3888,13 +3946,21 @@ function useColumnWidths(columnsByField) {
3888
3946
  return changed ? next : prev;
3889
3947
  });
3890
3948
  });
3949
+ const measured = {};
3891
3950
  Object.entries(columnsByField).forEach(([field, def]) => {
3892
3951
  const el = def.headerRef.current;
3893
3952
  if (el) {
3894
3953
  el.dataset.field = field;
3954
+ const w = Math.round(el.getBoundingClientRect().width);
3955
+ if (w > 0) measured[field] = w;
3895
3956
  roRef.current.observe(el);
3896
3957
  }
3897
3958
  });
3959
+ setWidths((prev) => {
3960
+ const keys = Object.keys(measured);
3961
+ const same = keys.every((key) => prev[key] === measured[key]);
3962
+ return same ? prev : { ...prev, ...measured };
3963
+ });
3898
3964
  return () => roRef.current?.disconnect();
3899
3965
  }, [columnsByField]);
3900
3966
  return widths;
@@ -3928,33 +3994,40 @@ function useDataTableRenderer({
3928
3994
  "You cannot use both `pinnedColumns` and `columnGroupingModel` at the same time. Please choose one of them."
3929
3995
  );
3930
3996
  }
3931
- const onSelectionModelChangeRef = (0, import_react26.useRef)(onSelectionModelChange);
3997
+ const duplicatedField = (0, import_react27.useMemo)(() => {
3998
+ const ids = columnsProp.map((column) => sanitizeColumnId(column.field));
3999
+ const index = ids.findIndex((id, i) => ids.indexOf(id) !== i);
4000
+ return index === -1 ? void 0 : columnsProp[index].field;
4001
+ }, [columnsProp]);
4002
+ if (duplicatedField !== void 0)
4003
+ throw new Error(`DataTable: column \`field\` must be unique. Duplicated: "${String(duplicatedField)}"`);
4004
+ const onSelectionModelChangeRef = (0, import_react27.useRef)(onSelectionModelChange);
3932
4005
  onSelectionModelChangeRef.current = onSelectionModelChange;
3933
- const [focusedRowId, setFocusedRowId] = (0, import_react26.useState)(null);
3934
- const [selectionAnchor, setSelectionAnchor] = (0, import_react26.useState)(null);
4006
+ const [focusedRowId, setFocusedRowId] = (0, import_react27.useState)(null);
4007
+ const [selectionAnchor, setSelectionAnchor] = (0, import_react27.useState)(null);
3935
4008
  const [sortModel, setSortModel] = useControlledState(
3936
4009
  controlledSortModel,
3937
4010
  initialState?.sorting?.sortModel ?? [],
3938
- (0, import_react26.useCallback)((sortModel2) => onSortModelChange?.(sortModel2), [onSortModelChange])
4011
+ (0, import_react27.useCallback)((sortModel2) => onSortModelChange?.(sortModel2), [onSortModelChange])
3939
4012
  );
3940
4013
  const [visibilityModel] = useControlledState(
3941
4014
  columnVisibilityModel,
3942
4015
  initialState?.columns?.columnVisibilityModel ?? {},
3943
- (0, import_react26.useCallback)(
4016
+ (0, import_react27.useCallback)(
3944
4017
  (model) => onColumnVisibilityModelChange?.(model),
3945
4018
  [onColumnVisibilityModelChange]
3946
4019
  )
3947
4020
  );
3948
- const reorderedColumns = (0, import_react26.useMemo)(() => {
4021
+ const reorderedColumns = (0, import_react27.useMemo)(() => {
3949
4022
  if (!columnGroupingModel) return columnsProp;
3950
4023
  return reorderColumnsByGroupingModel(columnsProp, columnGroupingModel);
3951
4024
  }, [columnsProp, columnGroupingModel]);
3952
- const visibleColumns = (0, import_react26.useMemo)(
4025
+ const visibleColumns = (0, import_react27.useMemo)(
3953
4026
  () => reorderedColumns.filter((col) => visibilityModel[col.field] !== false),
3954
4027
  [reorderedColumns, visibilityModel]
3955
4028
  );
3956
- const visibleFieldSet = (0, import_react26.useMemo)(() => new Set(visibleColumns.map((c) => c.field)), [visibleColumns]);
3957
- const tableMinWidth = (0, import_react26.useMemo)(() => {
4029
+ const visibleFieldSet = (0, import_react27.useMemo)(() => new Set(visibleColumns.map((c) => c.field)), [visibleColumns]);
4030
+ const tableMinWidth = (0, import_react27.useMemo)(() => {
3958
4031
  const DEFAULT_MIN = 50;
3959
4032
  let total = checkboxSelection ? 40 : 0;
3960
4033
  for (const col of visibleColumns) {
@@ -3962,7 +4035,7 @@ function useDataTableRenderer({
3962
4035
  }
3963
4036
  return total;
3964
4037
  }, [visibleColumns, checkboxSelection]);
3965
- const allColumnsByField = (0, import_react26.useMemo)(
4038
+ const allColumnsByField = (0, import_react27.useMemo)(
3966
4039
  () => reorderedColumns.reduce(
3967
4040
  (acc, curr) => ({
3968
4041
  ...acc,
@@ -3972,21 +4045,20 @@ function useDataTableRenderer({
3972
4045
  ),
3973
4046
  [reorderedColumns]
3974
4047
  );
3975
- const visibleColumnsByField = (0, import_react26.useMemo)(
3976
- () => visibleColumns.reduce(
3977
- (acc, curr) => ({
3978
- ...acc,
3979
- [curr.field]: {
3980
- ...curr,
3981
- headerRef: (0, import_react26.createRef)(),
3982
- tableColRef: (0, import_react26.createRef)()
4048
+ const visibleColumnsByField = (0, import_react27.useMemo)(
4049
+ () => Object.fromEntries(
4050
+ visibleColumns.map((column) => [
4051
+ column.field,
4052
+ {
4053
+ ...column,
4054
+ headerRef: (0, import_react27.createRef)(),
4055
+ tableColRef: (0, import_react27.createRef)()
3983
4056
  }
3984
- }),
3985
- {}
4057
+ ])
3986
4058
  ),
3987
4059
  [visibleColumns]
3988
4060
  );
3989
- const sortComparator = (0, import_react26.useCallback)(
4061
+ const sortComparator = (0, import_react27.useCallback)(
3990
4062
  (rowA, rowB) => {
3991
4063
  for (const sort of sortModel) {
3992
4064
  const { field, sort: direction } = sort;
@@ -4015,33 +4087,33 @@ function useDataTableRenderer({
4015
4087
  },
4016
4088
  [sortModel, allColumnsByField]
4017
4089
  );
4018
- const rows = (0, import_react26.useMemo)(
4090
+ const rows = (0, import_react27.useMemo)(
4019
4091
  () => sortModel.length ? [..._rows].sort(sortComparator) : _rows,
4020
4092
  [_rows, sortModel, sortComparator]
4021
4093
  );
4022
- const sortOrder = (0, import_react26.useMemo)(
4094
+ const sortOrder = (0, import_react27.useMemo)(
4023
4095
  () => Array.from(new Set(_sortOrder || ["asc", "desc", null])),
4024
4096
  [_sortOrder]
4025
4097
  );
4026
- const [page, setPage] = (0, import_react26.useState)(paginationModel?.page || 1);
4098
+ const [page, setPage] = (0, import_react27.useState)(paginationModel?.page || 1);
4027
4099
  const pageSize = paginationModel?.pageSize || 20;
4028
- const getId = (0, import_react26.useCallback)(
4100
+ const getId = (0, import_react27.useCallback)(
4029
4101
  (row, index) => _getId?.(row) ?? row.id ?? `${(index || 0) + (page - 1) * pageSize}`,
4030
4102
  [_getId, page, pageSize]
4031
4103
  );
4032
- const selectedModelSet = (0, import_react26.useMemo)(() => new Set(selectionModel || []), [selectionModel]);
4033
- const dataInPage = (0, import_react26.useMemo)(
4104
+ const selectedModelSet = (0, import_react27.useMemo)(() => new Set(selectionModel || []), [selectionModel]);
4105
+ const dataInPage = (0, import_react27.useMemo)(
4034
4106
  () => !pagination || paginationMode === "server" ? rows : rows.slice((page - 1) * pageSize, (page - 1) * pageSize + pageSize),
4035
4107
  [rows, page, pageSize, paginationMode, pagination]
4036
4108
  );
4037
- const selectableDataInPage = (0, import_react26.useMemo)(
4109
+ const selectableDataInPage = (0, import_react27.useMemo)(
4038
4110
  () => dataInPage.filter((row, i) => {
4039
4111
  if (!isRowSelectable) return true;
4040
4112
  return isRowSelectable({ row, id: getId(row, i) });
4041
4113
  }),
4042
4114
  [dataInPage, isRowSelectable, getId]
4043
4115
  );
4044
- const handleRangeSelection = (0, import_react26.useCallback)(
4116
+ const handleRangeSelection = (0, import_react27.useCallback)(
4045
4117
  (anchor, targetIndex) => {
4046
4118
  const startIndex = Math.min(anchor.rowIndex, targetIndex);
4047
4119
  const endIndex = Math.max(anchor.rowIndex, targetIndex);
@@ -4064,40 +4136,41 @@ function useDataTableRenderer({
4064
4136
  },
4065
4137
  [dataInPage, getId, isRowSelectable, selectionModel, onSelectionModelChange]
4066
4138
  );
4067
- const isAllSelected = (0, import_react26.useMemo)(
4139
+ const isAllSelected = (0, import_react27.useMemo)(
4068
4140
  () => selectableDataInPage.length > 0 && selectableDataInPage.every((row, i) => selectedModelSet.has(getId(row, i))),
4069
4141
  [selectableDataInPage, selectedModelSet, getId]
4070
4142
  );
4071
4143
  const rowCount = totalRowsProp || rows.length;
4072
- const selectableRowCount = (0, import_react26.useMemo)(() => {
4144
+ const selectableRowCount = (0, import_react27.useMemo)(() => {
4073
4145
  if (!isRowSelectable) return rowCount;
4074
4146
  return rows.filter((row, i) => isRowSelectable({ row, id: getId(row, i) })).length;
4075
4147
  }, [rows, isRowSelectable, getId, rowCount]);
4076
- const isTotalSelected = (0, import_react26.useMemo)(
4148
+ const isTotalSelected = (0, import_react27.useMemo)(
4077
4149
  () => _isTotalSelected ?? (selectableRowCount > 0 && (selectionModel?.length || 0) === selectableRowCount),
4078
4150
  [_isTotalSelected, selectionModel, selectableRowCount]
4079
4151
  );
4080
4152
  const columnWidths = useColumnWidths(visibleColumnsByField);
4081
- const getWidth = (0, import_react26.useCallback)(
4082
- (f) => columnWidths[f] ?? allColumnsByField[f]?.width ?? // Column prop 으로 지정된 width
4083
- allColumnsByField[f]?.minWidth ?? 0,
4153
+ const getWidth = (0, import_react27.useCallback)(
4154
+ // 반환값은 pinned offset으로 더해지므로 반드시 숫자여야 한다. width/minWidth는 '500px' 같은 문자열.
4155
+ (f) => columnWidths[f] ?? parsePxValue(allColumnsByField[f]?.width) ?? // Column prop 으로 지정된 width
4156
+ parsePxValue(allColumnsByField[f]?.minWidth) ?? 0,
4084
4157
  [columnWidths, allColumnsByField]
4085
4158
  );
4086
- const processedColumnGroups = (0, import_react26.useMemo)(() => {
4159
+ const processedColumnGroups = (0, import_react27.useMemo)(() => {
4087
4160
  if (!columnGroupingModel) return null;
4088
4161
  return calculateColumnGroups(columnGroupingModel, visibleColumns, visibleFieldSet);
4089
4162
  }, [columnGroupingModel, visibleColumns, visibleFieldSet]);
4090
- const effectivePinnedLeft = (0, import_react26.useMemo)(
4163
+ const effectivePinnedLeft = (0, import_react27.useMemo)(
4091
4164
  () => pinnedColumns?.left?.filter((f) => visibleFieldSet.has(f)),
4092
4165
  [pinnedColumns?.left, visibleFieldSet]
4093
4166
  );
4094
- const effectivePinnedRight = (0, import_react26.useMemo)(
4167
+ const effectivePinnedRight = (0, import_react27.useMemo)(
4095
4168
  () => pinnedColumns?.right?.filter((f) => visibleFieldSet.has(f)),
4096
4169
  [pinnedColumns?.right, visibleFieldSet]
4097
4170
  );
4098
4171
  const inferredFieldsKey = JSON.stringify(Object.keys(rows[0] || {}));
4099
- const inferredFields = (0, import_react26.useMemo)(() => JSON.parse(inferredFieldsKey), [inferredFieldsKey]);
4100
- const columns = (0, import_react26.useMemo)(() => {
4172
+ const inferredFields = (0, import_react27.useMemo)(() => JSON.parse(inferredFieldsKey), [inferredFieldsKey]);
4173
+ const columns = (0, import_react27.useMemo)(() => {
4101
4174
  const baseColumns = visibleColumns.length > 0 ? visibleColumns : reorderedColumns.length > 0 ? [] : inferredFields.map((key) => ({
4102
4175
  field: key
4103
4176
  }));
@@ -4132,14 +4205,14 @@ function useDataTableRenderer({
4132
4205
  sortOrder,
4133
4206
  getWidth
4134
4207
  ]);
4135
- const handlePageChange = (0, import_react26.useCallback)(
4208
+ const handlePageChange = (0, import_react27.useCallback)(
4136
4209
  (newPage) => {
4137
4210
  setPage(newPage);
4138
4211
  onPaginationModelChange?.({ page: newPage, pageSize });
4139
4212
  },
4140
4213
  [onPaginationModelChange, pageSize]
4141
4214
  );
4142
- const handleSortChange = (0, import_react26.useCallback)(
4215
+ const handleSortChange = (0, import_react27.useCallback)(
4143
4216
  (props) => {
4144
4217
  const { field, currentSort, multiple } = props;
4145
4218
  const column = allColumnsByField[field];
@@ -4162,38 +4235,37 @@ function useDataTableRenderer({
4162
4235
  },
4163
4236
  [sortOrder, allColumnsByField, sortModel, setSortModel]
4164
4237
  );
4165
- (0, import_react26.useEffect)(() => {
4238
+ (0, import_react27.useEffect)(() => {
4166
4239
  if (!paginationModel) {
4167
4240
  handlePageChange(1);
4168
4241
  }
4169
4242
  }, [rowCount, handlePageChange, paginationModel]);
4170
- (0, import_react26.useEffect)(() => {
4243
+ (0, import_react27.useEffect)(() => {
4171
4244
  const lastPage = Math.max(1, Math.ceil(rowCount / pageSize));
4172
4245
  if (page > lastPage) {
4173
4246
  handlePageChange(lastPage);
4174
4247
  }
4175
4248
  }, [page, rowCount, pageSize, handlePageChange]);
4176
- (0, import_react26.useEffect)(() => {
4249
+ (0, import_react27.useEffect)(() => {
4177
4250
  onSelectionModelChangeRef.current?.([]);
4178
4251
  setSelectionAnchor(null);
4179
4252
  }, [page]);
4180
- const prevRowsRef = (0, import_react26.useRef)(_rows);
4181
- (0, import_react26.useEffect)(() => {
4253
+ const prevRowsRef = (0, import_react27.useRef)(_rows);
4254
+ (0, import_react27.useEffect)(() => {
4182
4255
  if (prevRowsRef.current !== _rows) {
4183
4256
  setSelectionAnchor(null);
4184
4257
  prevRowsRef.current = _rows;
4185
4258
  }
4186
4259
  }, [_rows]);
4187
- const handleAutoFit = (0, import_react26.useCallback)(
4260
+ const handleAutoFit = (0, import_react27.useCallback)(
4188
4261
  (field) => {
4189
4262
  const colDef = visibleColumnsByField[field];
4190
4263
  if (!colDef?.headerRef.current) return;
4191
- const column = allColumnsByField[field];
4192
- const columnType = column && "type" in column ? column.type : void 0;
4264
+ const columnType = "type" in colDef ? colDef.type : void 0;
4193
4265
  if (columnType === "actions") return;
4194
4266
  const optimalWidth = computeAutoFitWidth({
4195
4267
  headerEl: colDef.headerRef.current,
4196
- field,
4268
+ field: colDef.field,
4197
4269
  dataInPage
4198
4270
  });
4199
4271
  if (optimalWidth == null) return;
@@ -4201,7 +4273,7 @@ function useDataTableRenderer({
4201
4273
  colDef.headerRef.current.style.width = widthPx;
4202
4274
  if (colDef.tableColRef.current) colDef.tableColRef.current.style.width = widthPx;
4203
4275
  },
4204
- [visibleColumnsByField, allColumnsByField, dataInPage]
4276
+ [visibleColumnsByField, dataInPage]
4205
4277
  );
4206
4278
  return {
4207
4279
  rowCount,
@@ -4217,8 +4289,8 @@ function useDataTableRenderer({
4217
4289
  handleAutoFit,
4218
4290
  isAllSelected,
4219
4291
  isTotalSelected,
4220
- isSelectedRow: (0, import_react26.useCallback)((model) => selectedModelSet.has(model), [selectedModelSet]),
4221
- isRowSelectable: (0, import_react26.useCallback)(
4292
+ isSelectedRow: (0, import_react27.useCallback)((model) => selectedModelSet.has(model), [selectedModelSet]),
4293
+ isRowSelectable: (0, import_react27.useCallback)(
4222
4294
  (rowId, row) => {
4223
4295
  if (!isRowSelectable) return true;
4224
4296
  return isRowSelectable({ row, id: rowId });
@@ -4226,13 +4298,13 @@ function useDataTableRenderer({
4226
4298
  [isRowSelectable]
4227
4299
  ),
4228
4300
  focusedRowId,
4229
- onRowFocus: (0, import_react26.useCallback)((rowId) => {
4301
+ onRowFocus: (0, import_react27.useCallback)((rowId) => {
4230
4302
  setFocusedRowId(rowId);
4231
4303
  }, []),
4232
- onAllCheckboxChange: (0, import_react26.useCallback)(() => {
4304
+ onAllCheckboxChange: (0, import_react27.useCallback)(() => {
4233
4305
  onSelectionModelChange?.(isAllSelected ? [] : selectableDataInPage.map(getId));
4234
4306
  }, [isAllSelected, selectableDataInPage, onSelectionModelChange, getId]),
4235
- onCheckboxChange: (0, import_react26.useCallback)(
4307
+ onCheckboxChange: (0, import_react27.useCallback)(
4236
4308
  (event, selectedModel) => {
4237
4309
  const isShiftClick = "shiftKey" in event && event.shiftKey;
4238
4310
  const rowIndex = dataInPage.findIndex((row, i) => getId(row, i) === selectedModel);
@@ -4266,7 +4338,7 @@ function useDataTableRenderer({
4266
4338
  columns,
4267
4339
  tableMinWidth,
4268
4340
  processedColumnGroups,
4269
- onTotalSelect: (0, import_react26.useCallback)(() => {
4341
+ onTotalSelect: (0, import_react27.useCallback)(() => {
4270
4342
  const selectableRows = rows.filter((row, i) => {
4271
4343
  if (!isRowSelectable) return true;
4272
4344
  return isRowSelectable({ row, id: getId(row, i) });
@@ -4280,11 +4352,11 @@ function useDataTableRenderer({
4280
4352
  }
4281
4353
 
4282
4354
  // src/components/Table/Table.tsx
4283
- var import_react27 = __toESM(require("react"));
4355
+ var import_react28 = __toESM(require("react"));
4284
4356
  var import_joy35 = require("@mui/joy");
4285
4357
  var Table = (props) => {
4286
4358
  const { children, ...inheritProps } = props;
4287
- return /* @__PURE__ */ import_react27.default.createElement(import_joy35.Table, { ...inheritProps }, children);
4359
+ return /* @__PURE__ */ import_react28.default.createElement(import_joy35.Table, { ...inheritProps }, children);
4288
4360
  };
4289
4361
  Table.displayName = "Table";
4290
4362
  function TableHead(props) {
@@ -4295,7 +4367,7 @@ function TableHead(props) {
4295
4367
  slots: { checkbox: RenderCheckbox = Checkbox_default } = {},
4296
4368
  slotProps: { checkbox: checkboxProps = {} } = {}
4297
4369
  } = props;
4298
- return /* @__PURE__ */ import_react27.default.createElement("thead", null, /* @__PURE__ */ import_react27.default.createElement("tr", null, showCheckbox && /* @__PURE__ */ import_react27.default.createElement(
4370
+ return /* @__PURE__ */ import_react28.default.createElement("thead", null, /* @__PURE__ */ import_react28.default.createElement("tr", null, showCheckbox && /* @__PURE__ */ import_react28.default.createElement(
4299
4371
  "th",
4300
4372
  {
4301
4373
  style: {
@@ -4303,8 +4375,8 @@ function TableHead(props) {
4303
4375
  textAlign: "center"
4304
4376
  }
4305
4377
  },
4306
- /* @__PURE__ */ import_react27.default.createElement(RenderCheckbox, { onChange: onCheckboxChange, ...checkboxProps })
4307
- ), headCells.map((headCell) => /* @__PURE__ */ import_react27.default.createElement(
4378
+ /* @__PURE__ */ import_react28.default.createElement(RenderCheckbox, { onChange: onCheckboxChange, ...checkboxProps })
4379
+ ), headCells.map((headCell) => /* @__PURE__ */ import_react28.default.createElement(
4308
4380
  "th",
4309
4381
  {
4310
4382
  key: headCell.label,
@@ -4329,15 +4401,15 @@ function TableBody(props) {
4329
4401
  slots: { checkbox: RenderCheckbox = Checkbox_default } = {},
4330
4402
  slotProps: { checkbox: checkboxProps = {} } = {}
4331
4403
  } = props;
4332
- return /* @__PURE__ */ import_react27.default.createElement("tbody", null, rows.map((row, rowIndex) => /* @__PURE__ */ import_react27.default.createElement("tr", { key: `table-row-${rowIndex}` }, showCheckbox && /* @__PURE__ */ import_react27.default.createElement(
4404
+ return /* @__PURE__ */ import_react28.default.createElement("tbody", null, rows.map((row, rowIndex) => /* @__PURE__ */ import_react28.default.createElement("tr", { key: `table-row-${rowIndex}` }, showCheckbox && /* @__PURE__ */ import_react28.default.createElement(
4333
4405
  "td",
4334
4406
  {
4335
4407
  style: {
4336
4408
  textAlign: "center"
4337
4409
  }
4338
4410
  },
4339
- /* @__PURE__ */ import_react27.default.createElement(RenderCheckbox, { onChange: (event) => onCheckboxChange?.(event, rowIndex), ...checkboxProps })
4340
- ), cellOrder.map((cellKey) => /* @__PURE__ */ import_react27.default.createElement(
4411
+ /* @__PURE__ */ import_react28.default.createElement(RenderCheckbox, { onChange: (event) => onCheckboxChange?.(event, rowIndex), ...checkboxProps })
4412
+ ), cellOrder.map((cellKey) => /* @__PURE__ */ import_react28.default.createElement(
4341
4413
  "td",
4342
4414
  {
4343
4415
  key: cellKey,
@@ -4351,7 +4423,7 @@ function TableBody(props) {
4351
4423
  TableBody.displayName = "TableBody";
4352
4424
 
4353
4425
  // src/components/Pagination/Pagination.tsx
4354
- var import_react28 = __toESM(require("react"));
4426
+ var import_react29 = __toESM(require("react"));
4355
4427
  var import_ChevronLeftRounded = __toESM(require("@mui/icons-material/ChevronLeftRounded"));
4356
4428
  var import_ChevronRightRounded = __toESM(require("@mui/icons-material/ChevronRightRounded"));
4357
4429
  var import_FirstPageRounded = __toESM(require("@mui/icons-material/FirstPageRounded"));
@@ -4421,7 +4493,7 @@ function Pagination(inProps) {
4421
4493
  const [paginationModel, setPaginationModel] = useControlledState(
4422
4494
  _paginationModel,
4423
4495
  defaultPaginationModel,
4424
- (0, import_react28.useCallback)(
4496
+ (0, import_react29.useCallback)(
4425
4497
  (newPage) => {
4426
4498
  onPageChange(newPage.page);
4427
4499
  },
@@ -4437,7 +4509,7 @@ function Pagination(inProps) {
4437
4509
  const afterPages = [paginationModel.page + 1, paginationModel.page + 2].filter((p) => p <= lastPage - 1);
4438
4510
  const isMoreAfterPages = lastPage > 1 && paginationModel.page < lastPage - 3;
4439
4511
  const isMoreBeforePages = lastPage > 1 && paginationModel.page > 4;
4440
- (0, import_react28.useEffect)(() => {
4512
+ (0, import_react29.useEffect)(() => {
4441
4513
  if (paginationModel.page > lastPage) {
4442
4514
  setPaginationModel({ ...paginationModel, page: lastPage });
4443
4515
  }
@@ -4447,7 +4519,7 @@ function Pagination(inProps) {
4447
4519
  value: `${i + 1}`
4448
4520
  }));
4449
4521
  if (variant === "compact") {
4450
- return /* @__PURE__ */ import_react28.default.createElement(PaginationRoot, { ...innerProps }, /* @__PURE__ */ import_react28.default.createElement(PaginationContainer, { direction: "row", size, alignItems: "center" }, /* @__PURE__ */ import_react28.default.createElement(Stack_default, { direction: "row" }, /* @__PURE__ */ import_react28.default.createElement(
4522
+ return /* @__PURE__ */ import_react29.default.createElement(PaginationRoot, { ...innerProps }, /* @__PURE__ */ import_react29.default.createElement(PaginationContainer, { direction: "row", size, alignItems: "center" }, /* @__PURE__ */ import_react29.default.createElement(Stack_default, { direction: "row" }, /* @__PURE__ */ import_react29.default.createElement(
4451
4523
  PaginationIconButton,
4452
4524
  {
4453
4525
  size,
@@ -4457,8 +4529,8 @@ function Pagination(inProps) {
4457
4529
  disabled: paginationModel.page === firstPage,
4458
4530
  "aria-label": "First page"
4459
4531
  },
4460
- /* @__PURE__ */ import_react28.default.createElement(import_FirstPageRounded.default, null)
4461
- ), /* @__PURE__ */ import_react28.default.createElement(
4532
+ /* @__PURE__ */ import_react29.default.createElement(import_FirstPageRounded.default, null)
4533
+ ), /* @__PURE__ */ import_react29.default.createElement(
4462
4534
  PaginationIconButton,
4463
4535
  {
4464
4536
  size,
@@ -4468,8 +4540,8 @@ function Pagination(inProps) {
4468
4540
  disabled: paginationModel.page === firstPage,
4469
4541
  "aria-label": "Previous page"
4470
4542
  },
4471
- /* @__PURE__ */ import_react28.default.createElement(import_ChevronLeftRounded.default, null)
4472
- )), /* @__PURE__ */ import_react28.default.createElement(
4543
+ /* @__PURE__ */ import_react29.default.createElement(import_ChevronLeftRounded.default, null)
4544
+ )), /* @__PURE__ */ import_react29.default.createElement(
4473
4545
  Autocomplete_default,
4474
4546
  {
4475
4547
  size,
@@ -4488,7 +4560,7 @@ function Pagination(inProps) {
4488
4560
  }[size]
4489
4561
  }
4490
4562
  }
4491
- ), /* @__PURE__ */ import_react28.default.createElement(
4563
+ ), /* @__PURE__ */ import_react29.default.createElement(
4492
4564
  Typography_default,
4493
4565
  {
4494
4566
  level: `body-${size}`,
@@ -4499,7 +4571,7 @@ function Pagination(inProps) {
4499
4571
  },
4500
4572
  "/ ",
4501
4573
  lastPage
4502
- ), /* @__PURE__ */ import_react28.default.createElement(Stack_default, { direction: "row" }, /* @__PURE__ */ import_react28.default.createElement(
4574
+ ), /* @__PURE__ */ import_react29.default.createElement(Stack_default, { direction: "row" }, /* @__PURE__ */ import_react29.default.createElement(
4503
4575
  PaginationIconButton,
4504
4576
  {
4505
4577
  size,
@@ -4509,8 +4581,8 @@ function Pagination(inProps) {
4509
4581
  disabled: paginationModel.page === lastPage,
4510
4582
  "aria-label": "Next page"
4511
4583
  },
4512
- /* @__PURE__ */ import_react28.default.createElement(import_ChevronRightRounded.default, null)
4513
- ), /* @__PURE__ */ import_react28.default.createElement(
4584
+ /* @__PURE__ */ import_react29.default.createElement(import_ChevronRightRounded.default, null)
4585
+ ), /* @__PURE__ */ import_react29.default.createElement(
4514
4586
  PaginationIconButton,
4515
4587
  {
4516
4588
  size,
@@ -4520,10 +4592,10 @@ function Pagination(inProps) {
4520
4592
  disabled: paginationModel.page === lastPage,
4521
4593
  "aria-label": "Last page"
4522
4594
  },
4523
- /* @__PURE__ */ import_react28.default.createElement(import_LastPageRounded.default, null)
4595
+ /* @__PURE__ */ import_react29.default.createElement(import_LastPageRounded.default, null)
4524
4596
  ))));
4525
4597
  }
4526
- return /* @__PURE__ */ import_react28.default.createElement(PaginationRoot, { ...innerProps }, /* @__PURE__ */ import_react28.default.createElement(PaginationContainer, { direction: "row", size, alignItems: "center" }, /* @__PURE__ */ import_react28.default.createElement(
4598
+ return /* @__PURE__ */ import_react29.default.createElement(PaginationRoot, { ...innerProps }, /* @__PURE__ */ import_react29.default.createElement(PaginationContainer, { direction: "row", size, alignItems: "center" }, /* @__PURE__ */ import_react29.default.createElement(
4527
4599
  PaginationIconButton,
4528
4600
  {
4529
4601
  size,
@@ -4533,8 +4605,8 @@ function Pagination(inProps) {
4533
4605
  disabled: paginationModel.page === firstPage,
4534
4606
  "aria-label": "Previous page"
4535
4607
  },
4536
- /* @__PURE__ */ import_react28.default.createElement(import_ChevronLeftRounded.default, null)
4537
- ), paginationModel.page !== firstPage && /* @__PURE__ */ import_react28.default.createElement(PaginationButton, { size, variant: "plain", color: "neutral", onClick: () => handlePageChange(firstPage) }, firstPage), isMoreBeforePages && /* @__PURE__ */ import_react28.default.createElement(
4608
+ /* @__PURE__ */ import_react29.default.createElement(import_ChevronLeftRounded.default, null)
4609
+ ), paginationModel.page !== firstPage && /* @__PURE__ */ import_react29.default.createElement(PaginationButton, { size, variant: "plain", color: "neutral", onClick: () => handlePageChange(firstPage) }, firstPage), isMoreBeforePages && /* @__PURE__ */ import_react29.default.createElement(
4538
4610
  PaginationButton,
4539
4611
  {
4540
4612
  size,
@@ -4544,7 +4616,7 @@ function Pagination(inProps) {
4544
4616
  "aria-label": "More previous pages"
4545
4617
  },
4546
4618
  "..."
4547
- ), beforePages.map((p) => /* @__PURE__ */ import_react28.default.createElement(PaginationButton, { key: p, size, variant: "plain", color: "neutral", onClick: () => handlePageChange(p) }, p)), /* @__PURE__ */ import_react28.default.createElement(PaginationButton, { active: "true", size, "aria-current": "page" }, paginationModel.page), afterPages.map((p) => /* @__PURE__ */ import_react28.default.createElement(PaginationButton, { key: p, size, variant: "plain", color: "neutral", onClick: () => handlePageChange(p) }, p)), isMoreAfterPages && /* @__PURE__ */ import_react28.default.createElement(
4619
+ ), beforePages.map((p) => /* @__PURE__ */ import_react29.default.createElement(PaginationButton, { key: p, size, variant: "plain", color: "neutral", onClick: () => handlePageChange(p) }, p)), /* @__PURE__ */ import_react29.default.createElement(PaginationButton, { active: "true", size, "aria-current": "page" }, paginationModel.page), afterPages.map((p) => /* @__PURE__ */ import_react29.default.createElement(PaginationButton, { key: p, size, variant: "plain", color: "neutral", onClick: () => handlePageChange(p) }, p)), isMoreAfterPages && /* @__PURE__ */ import_react29.default.createElement(
4548
4620
  PaginationButton,
4549
4621
  {
4550
4622
  size,
@@ -4554,7 +4626,7 @@ function Pagination(inProps) {
4554
4626
  onClick: () => handlePageChange(paginationModel.page + 3)
4555
4627
  },
4556
4628
  "..."
4557
- ), paginationModel.page !== lastPage && /* @__PURE__ */ import_react28.default.createElement(PaginationButton, { size, variant: "plain", color: "neutral", onClick: () => handlePageChange(lastPage) }, lastPage), /* @__PURE__ */ import_react28.default.createElement(
4629
+ ), paginationModel.page !== lastPage && /* @__PURE__ */ import_react29.default.createElement(PaginationButton, { size, variant: "plain", color: "neutral", onClick: () => handlePageChange(lastPage) }, lastPage), /* @__PURE__ */ import_react29.default.createElement(
4558
4630
  PaginationIconButton,
4559
4631
  {
4560
4632
  size,
@@ -4564,7 +4636,7 @@ function Pagination(inProps) {
4564
4636
  disabled: paginationModel.page === lastPage,
4565
4637
  "aria-label": "Next page"
4566
4638
  },
4567
- /* @__PURE__ */ import_react28.default.createElement(import_ChevronRightRounded.default, null)
4639
+ /* @__PURE__ */ import_react29.default.createElement(import_ChevronRightRounded.default, null)
4568
4640
  )));
4569
4641
  }
4570
4642
  Pagination.displayName = "Pagination";
@@ -4638,9 +4710,9 @@ function Component(props, apiRef) {
4638
4710
  isTotalSelected: ___________,
4639
4711
  ...innerProps
4640
4712
  } = props;
4641
- const tableId = (0, import_react29.useId)();
4642
- const parentRef = (0, import_react29.useRef)(null);
4643
- const tableBodyRef = (0, import_react29.useRef)(null);
4713
+ const tableId = (0, import_react30.useId)();
4714
+ const parentRef = (0, import_react30.useRef)(null);
4715
+ const tableBodyRef = (0, import_react30.useRef)(null);
4644
4716
  const {
4645
4717
  columns,
4646
4718
  processedColumnGroups,
@@ -4676,10 +4748,10 @@ function Component(props, apiRef) {
4676
4748
  measureElement: (element) => element.clientHeight,
4677
4749
  overscan: 10
4678
4750
  });
4679
- const paginationModel = (0, import_react29.useMemo)(() => ({ page, pageSize }), [page, pageSize]);
4751
+ const paginationModel = (0, import_react30.useMemo)(() => ({ page, pageSize }), [page, pageSize]);
4680
4752
  const columnsKey = getObjectVersion(columns);
4681
- const headerCheckboxElement = (0, import_react29.useMemo)(
4682
- () => /* @__PURE__ */ import_react29.default.createElement(
4753
+ const headerCheckboxElement = (0, import_react30.useMemo)(
4754
+ () => /* @__PURE__ */ import_react30.default.createElement(
4683
4755
  RenderCheckbox,
4684
4756
  {
4685
4757
  onChange: onAllCheckboxChange,
@@ -4704,20 +4776,20 @@ function Component(props, apiRef) {
4704
4776
  const showNoRowsOverlay = !loading && rowCount === 0;
4705
4777
  const showFillerColumn = columns.length > 0 && columns.every((c) => !!c.width);
4706
4778
  const totalColCount = Math.max(1, columns.length + (checkboxSelection ? 1 : 0) + (showFillerColumn ? 1 : 0));
4707
- const getRowClickHandler = (0, import_react29.useCallback)(
4779
+ const getRowClickHandler = (0, import_react30.useCallback)(
4708
4780
  (row, rowId) => (e) => {
4709
4781
  onRowClick?.({ row, rowId }, e);
4710
4782
  checkboxSelection && !disableSelectionOnClick && isRowSelectableCheck(rowId, row) && onCheckboxChange(e, rowId);
4711
4783
  },
4712
4784
  [onRowClick, checkboxSelection, disableSelectionOnClick, onCheckboxChange, isRowSelectableCheck]
4713
4785
  );
4714
- const getRowFocusHandler = (0, import_react29.useCallback)(
4786
+ const getRowFocusHandler = (0, import_react30.useCallback)(
4715
4787
  (rowId) => () => {
4716
4788
  onRowFocus(rowId);
4717
4789
  },
4718
4790
  [onRowFocus]
4719
4791
  );
4720
- const getCheckboxClickHandler = (0, import_react29.useCallback)(
4792
+ const getCheckboxClickHandler = (0, import_react30.useCallback)(
4721
4793
  (rowId, row) => (e) => {
4722
4794
  e.stopPropagation();
4723
4795
  if (isRowSelectableCheck(rowId, row)) {
@@ -4727,7 +4799,7 @@ function Component(props, apiRef) {
4727
4799
  },
4728
4800
  [onCheckboxChange, isRowSelectableCheck, onRowFocus]
4729
4801
  );
4730
- const handleTableKeyDown = (0, import_react29.useCallback)(
4802
+ const handleTableKeyDown = (0, import_react30.useCallback)(
4731
4803
  (e) => {
4732
4804
  const supportedKeys = ["ArrowUp", "ArrowDown", " ", "Home", "End", "PageUp", "PageDown"];
4733
4805
  if (!supportedKeys.includes(e.key)) return;
@@ -4817,7 +4889,7 @@ function Component(props, apiRef) {
4817
4889
  virtualizer
4818
4890
  ]
4819
4891
  );
4820
- (0, import_react29.useImperativeHandle)(apiRef, () => ({
4892
+ (0, import_react30.useImperativeHandle)(apiRef, () => ({
4821
4893
  getRowIndexRelativeToVisibleRows(rowId) {
4822
4894
  return dataInPage.findIndex((row) => String(getId(row)) === rowId);
4823
4895
  },
@@ -4833,7 +4905,7 @@ function Component(props, apiRef) {
4833
4905
  });
4834
4906
  }
4835
4907
  }));
4836
- return /* @__PURE__ */ import_react29.default.createElement(
4908
+ return /* @__PURE__ */ import_react30.default.createElement(
4837
4909
  Box_default,
4838
4910
  {
4839
4911
  sx: {
@@ -4843,7 +4915,7 @@ function Component(props, apiRef) {
4843
4915
  flexDirection: "column"
4844
4916
  }
4845
4917
  },
4846
- (!!checkboxSelection || !!Toolbar) && /* @__PURE__ */ import_react29.default.createElement(
4918
+ (!!checkboxSelection || !!Toolbar) && /* @__PURE__ */ import_react30.default.createElement(
4847
4919
  Stack_default,
4848
4920
  {
4849
4921
  direction: "row",
@@ -4853,10 +4925,10 @@ function Component(props, apiRef) {
4853
4925
  justifyContent: "space-between",
4854
4926
  alignItems: "center"
4855
4927
  },
4856
- !!checkboxSelection && /* @__PURE__ */ import_react29.default.createElement(Stack_default, { direction: "row", spacing: 1 }, !isAllSelected && /* @__PURE__ */ import_react29.default.createElement(Typography_default, { level: "body-xs" }, numberFormatter(selectionModel?.length || 0), " items selected"), isAllSelected && !isTotalSelected && /* @__PURE__ */ import_react29.default.createElement(Stack_default, { direction: "row", spacing: 1, alignItems: "center" }, /* @__PURE__ */ import_react29.default.createElement(Typography_default, { level: "body-xs" }, "All ", numberFormatter(selectionModel?.length || 0), " items on this page are selected."), /* @__PURE__ */ import_react29.default.createElement(Button_default, { size: "sm", variant: "plain", onClick: onTotalSelect }, "Select all ", numberFormatter(selectableRowCount), " items")), isTotalSelected && /* @__PURE__ */ import_react29.default.createElement(Stack_default, { direction: "row", spacing: 1, alignItems: "center" }, /* @__PURE__ */ import_react29.default.createElement(Typography_default, { level: "body-xs" }, "All ", numberFormatter(selectableRowCount), " items are selected."), /* @__PURE__ */ import_react29.default.createElement(Button_default, { size: "sm", variant: "plain", color: "danger", onClick: onTotalSelect }, "Cancel"))),
4857
- Toolbar && /* @__PURE__ */ import_react29.default.createElement(Toolbar, { ...toolbarProps || {} })
4928
+ !!checkboxSelection && /* @__PURE__ */ import_react30.default.createElement(Stack_default, { direction: "row", spacing: 1 }, !isAllSelected && /* @__PURE__ */ import_react30.default.createElement(Typography_default, { level: "body-xs" }, numberFormatter(selectionModel?.length || 0), " items selected"), isAllSelected && !isTotalSelected && /* @__PURE__ */ import_react30.default.createElement(Stack_default, { direction: "row", spacing: 1, alignItems: "center" }, /* @__PURE__ */ import_react30.default.createElement(Typography_default, { level: "body-xs" }, "All ", numberFormatter(selectionModel?.length || 0), " items on this page are selected."), /* @__PURE__ */ import_react30.default.createElement(Button_default, { size: "sm", variant: "plain", onClick: onTotalSelect }, "Select all ", numberFormatter(selectableRowCount), " items")), isTotalSelected && /* @__PURE__ */ import_react30.default.createElement(Stack_default, { direction: "row", spacing: 1, alignItems: "center" }, /* @__PURE__ */ import_react30.default.createElement(Typography_default, { level: "body-xs" }, "All ", numberFormatter(selectableRowCount), " items are selected."), /* @__PURE__ */ import_react30.default.createElement(Button_default, { size: "sm", variant: "plain", color: "danger", onClick: onTotalSelect }, "Cancel"))),
4929
+ Toolbar && /* @__PURE__ */ import_react30.default.createElement(Toolbar, { ...toolbarProps || {} })
4858
4930
  ),
4859
- /* @__PURE__ */ import_react29.default.createElement(
4931
+ /* @__PURE__ */ import_react30.default.createElement(
4860
4932
  Sheet_default,
4861
4933
  {
4862
4934
  variant: "outlined",
@@ -4877,24 +4949,24 @@ function Component(props, apiRef) {
4877
4949
  ref: parentRef,
4878
4950
  ...backgroundProps
4879
4951
  },
4880
- /* @__PURE__ */ import_react29.default.createElement(Table, { ...innerProps, sx: { ...innerProps.sx, minWidth: tableMinWidth } }, /* @__PURE__ */ import_react29.default.createElement("colgroup", null, checkboxSelection && /* @__PURE__ */ import_react29.default.createElement(
4952
+ /* @__PURE__ */ import_react30.default.createElement(Table, { ...innerProps, sx: { ...innerProps.sx, minWidth: tableMinWidth } }, /* @__PURE__ */ import_react30.default.createElement("colgroup", null, checkboxSelection && /* @__PURE__ */ import_react30.default.createElement(
4881
4953
  "col",
4882
4954
  {
4883
4955
  style: {
4884
4956
  width: "40px"
4885
4957
  }
4886
4958
  }
4887
- ), columns.map((c) => /* @__PURE__ */ import_react29.default.createElement(
4959
+ ), columns.map((c) => /* @__PURE__ */ import_react30.default.createElement(
4888
4960
  "col",
4889
4961
  {
4890
4962
  ref: c.tableColRef,
4891
- key: `${c.field.toString()}_${c.width}`,
4963
+ key: c.field.toString(),
4892
4964
  style: {
4893
4965
  width: c.width,
4894
4966
  minWidth: c.minWidth ?? "50px"
4895
4967
  }
4896
4968
  }
4897
- )), showFillerColumn && /* @__PURE__ */ import_react29.default.createElement("col", { style: { minWidth: 0 } })), /* @__PURE__ */ import_react29.default.createElement("thead", null, processedColumnGroups && processedColumnGroups.groups.length > 0 && processedColumnGroups.groups.map((levelGroups, level) => /* @__PURE__ */ import_react29.default.createElement("tr", { key: `group-level-${level}` }, checkboxSelection && level === 0 && /* @__PURE__ */ import_react29.default.createElement(
4969
+ )), showFillerColumn && /* @__PURE__ */ import_react30.default.createElement("col", { style: { minWidth: 0 } })), /* @__PURE__ */ import_react30.default.createElement("thead", null, processedColumnGroups && processedColumnGroups.groups.length > 0 && processedColumnGroups.groups.map((levelGroups, level) => /* @__PURE__ */ import_react30.default.createElement("tr", { key: `group-level-${level}` }, checkboxSelection && level === 0 && /* @__PURE__ */ import_react30.default.createElement(
4898
4970
  "th",
4899
4971
  {
4900
4972
  rowSpan: processedColumnGroups.maxLevel + 2,
@@ -4905,12 +4977,12 @@ function Component(props, apiRef) {
4905
4977
  }
4906
4978
  },
4907
4979
  headerCheckboxElement
4908
- ), level > 0 && Array.from({ length: levelGroups[0]?.startIndex || 0 }).map((_2, i) => /* @__PURE__ */ import_react29.default.createElement("th", { key: `empty-${level}-${i}` })), levelGroups.filter((g) => g.colspan > 0).map((group, groupIndex) => {
4980
+ ), level > 0 && Array.from({ length: levelGroups[0]?.startIndex || 0 }).map((_2, i) => /* @__PURE__ */ import_react30.default.createElement("th", { key: `empty-${level}-${i}` })), levelGroups.filter((g) => g.colspan > 0).map((group, groupIndex) => {
4909
4981
  const nextGroup = levelGroups[groupIndex + 1];
4910
4982
  const emptyCells = nextGroup ? nextGroup.startIndex - (group.startIndex + group.colspan) : columns.length - (group.startIndex + group.colspan);
4911
4983
  const params = { groupId: group.groupId };
4912
4984
  const computedHeaderClassName = group.headerClassName ? typeof group.headerClassName === "function" ? group.headerClassName(params) : group.headerClassName : void 0;
4913
- return /* @__PURE__ */ import_react29.default.createElement(import_react29.Fragment, { key: group.groupId }, /* @__PURE__ */ import_react29.default.createElement(
4985
+ return /* @__PURE__ */ import_react30.default.createElement(import_react30.Fragment, { key: group.groupId }, /* @__PURE__ */ import_react30.default.createElement(
4914
4986
  "th",
4915
4987
  {
4916
4988
  colSpan: group.colspan,
@@ -4922,14 +4994,14 @@ function Component(props, apiRef) {
4922
4994
  className: computedHeaderClassName
4923
4995
  },
4924
4996
  group.headerName ?? group.groupId
4925
- ), emptyCells > 0 && Array.from({ length: emptyCells }).map((_2, i) => /* @__PURE__ */ import_react29.default.createElement("th", { key: `empty-between-${level}-${groupIndex}-${i}`, colSpan: 1 })));
4926
- }), showFillerColumn && level === 0 && /* @__PURE__ */ import_react29.default.createElement(
4997
+ ), emptyCells > 0 && Array.from({ length: emptyCells }).map((_2, i) => /* @__PURE__ */ import_react30.default.createElement("th", { key: `empty-between-${level}-${groupIndex}-${i}`, colSpan: 1 })));
4998
+ }), showFillerColumn && level === 0 && /* @__PURE__ */ import_react30.default.createElement(
4927
4999
  "th",
4928
5000
  {
4929
5001
  "aria-hidden": "true",
4930
5002
  rowSpan: processedColumnGroups.maxLevel + 2
4931
5003
  }
4932
- ))), /* @__PURE__ */ import_react29.default.createElement("tr", null, (!processedColumnGroups || processedColumnGroups.groups.length === 0) && checkboxSelection && /* @__PURE__ */ import_react29.default.createElement(
5004
+ ))), /* @__PURE__ */ import_react30.default.createElement("tr", null, (!processedColumnGroups || processedColumnGroups.groups.length === 0) && checkboxSelection && /* @__PURE__ */ import_react30.default.createElement(
4933
5005
  "th",
4934
5006
  {
4935
5007
  style: {
@@ -4938,13 +5010,13 @@ function Component(props, apiRef) {
4938
5010
  }
4939
5011
  },
4940
5012
  headerCheckboxElement
4941
- ), columns.map((c, i) => (
5013
+ ), columns.map((c) => (
4942
5014
  // @ts-ignore
4943
- /* @__PURE__ */ import_react29.default.createElement(
5015
+ /* @__PURE__ */ import_react30.default.createElement(
4944
5016
  HeadCell2,
4945
5017
  {
4946
5018
  tableId,
4947
- key: `${c.field.toString()}_${i}`,
5019
+ key: c.field.toString(),
4948
5020
  stickyHeader: props.stickyHeader,
4949
5021
  editMode: !!c.isCellEditable,
4950
5022
  onSortChange: handleSortChange,
@@ -4952,7 +5024,7 @@ function Component(props, apiRef) {
4952
5024
  ...c
4953
5025
  }
4954
5026
  )
4955
- )), showFillerColumn && (!processedColumnGroups || processedColumnGroups.groups.length === 0) && /* @__PURE__ */ import_react29.default.createElement("th", { "aria-hidden": "true" }))), /* @__PURE__ */ import_react29.default.createElement(
5027
+ )), showFillerColumn && (!processedColumnGroups || processedColumnGroups.groups.length === 0) && /* @__PURE__ */ import_react30.default.createElement("th", { "aria-hidden": "true" }))), /* @__PURE__ */ import_react30.default.createElement(
4956
5028
  VirtualizedTableBody,
4957
5029
  {
4958
5030
  ref: tableBodyRef,
@@ -4963,7 +5035,7 @@ function Component(props, apiRef) {
4963
5035
  role: "rowgroup",
4964
5036
  "aria-label": "DataTableBody"
4965
5037
  },
4966
- !!loading && /* @__PURE__ */ import_react29.default.createElement(OverlayWrapper, null, /* @__PURE__ */ import_react29.default.createElement(
5038
+ !!loading && /* @__PURE__ */ import_react30.default.createElement(OverlayWrapper, null, /* @__PURE__ */ import_react30.default.createElement(
4967
5039
  "td",
4968
5040
  {
4969
5041
  style: {
@@ -4972,7 +5044,7 @@ function Component(props, apiRef) {
4972
5044
  overflow: "visible"
4973
5045
  }
4974
5046
  },
4975
- /* @__PURE__ */ import_react29.default.createElement(
5047
+ /* @__PURE__ */ import_react30.default.createElement(
4976
5048
  Box_default,
4977
5049
  {
4978
5050
  sx: {
@@ -4982,10 +5054,10 @@ function Component(props, apiRef) {
4982
5054
  right: 0
4983
5055
  }
4984
5056
  },
4985
- /* @__PURE__ */ import_react29.default.createElement(LoadingOverlay, null)
5057
+ /* @__PURE__ */ import_react30.default.createElement(LoadingOverlay, null)
4986
5058
  )
4987
5059
  )),
4988
- showNoRowsOverlay && /* @__PURE__ */ import_react29.default.createElement("tr", null, /* @__PURE__ */ import_react29.default.createElement("td", { colSpan: totalColCount, style: { border: "none" } }, /* @__PURE__ */ import_react29.default.createElement(
5060
+ showNoRowsOverlay && /* @__PURE__ */ import_react30.default.createElement("tr", null, /* @__PURE__ */ import_react30.default.createElement("td", { colSpan: totalColCount, style: { border: "none" } }, /* @__PURE__ */ import_react30.default.createElement(
4989
5061
  Box_default,
4990
5062
  {
4991
5063
  sx: {
@@ -4995,14 +5067,14 @@ function Component(props, apiRef) {
4995
5067
  minHeight: "150px"
4996
5068
  }
4997
5069
  },
4998
- /* @__PURE__ */ import_react29.default.createElement(NoRowsOverlay, { ...noRowsOverlayProps })
5070
+ /* @__PURE__ */ import_react30.default.createElement(NoRowsOverlay, { ...noRowsOverlayProps })
4999
5071
  ))),
5000
5072
  virtualizedItems.map((virtualizedRow, index) => {
5001
5073
  const rowIndex = virtualizedRow.index;
5002
5074
  const row = dataInPage[rowIndex];
5003
5075
  const rowId = getId(row, rowIndex);
5004
5076
  const striped = stripe && (stripe === "even" && (rowIndex + 1) % 2 === 0 || stripe === "odd" && (rowIndex + 1) % 2 === 1);
5005
- return /* @__PURE__ */ import_react29.default.createElement(
5077
+ return /* @__PURE__ */ import_react30.default.createElement(
5006
5078
  VirtualizedTableRow,
5007
5079
  {
5008
5080
  key: virtualizedRow.key,
@@ -5022,7 +5094,7 @@ function Component(props, apiRef) {
5022
5094
  transform: `translateY(${virtualizedRow.start - index * virtualizedRow.size}px)`
5023
5095
  }
5024
5096
  },
5025
- checkboxSelection && /* @__PURE__ */ import_react29.default.createElement(
5097
+ checkboxSelection && /* @__PURE__ */ import_react30.default.createElement(
5026
5098
  "th",
5027
5099
  {
5028
5100
  scope: "row",
@@ -5030,7 +5102,7 @@ function Component(props, apiRef) {
5030
5102
  textAlign: "center"
5031
5103
  }
5032
5104
  },
5033
- /* @__PURE__ */ import_react29.default.createElement(
5105
+ /* @__PURE__ */ import_react30.default.createElement(
5034
5106
  RenderCheckbox,
5035
5107
  {
5036
5108
  onClick: getCheckboxClickHandler(rowId, row),
@@ -5041,7 +5113,7 @@ function Component(props, apiRef) {
5041
5113
  }
5042
5114
  )
5043
5115
  ),
5044
- /* @__PURE__ */ import_react29.default.createElement(
5116
+ /* @__PURE__ */ import_react30.default.createElement(
5045
5117
  BodyRow2,
5046
5118
  {
5047
5119
  tableId,
@@ -5052,12 +5124,12 @@ function Component(props, apiRef) {
5052
5124
  noWrap: props.noWrap
5053
5125
  }
5054
5126
  ),
5055
- showFillerColumn && /* @__PURE__ */ import_react29.default.createElement("td", { "aria-hidden": "true" })
5127
+ showFillerColumn && /* @__PURE__ */ import_react30.default.createElement("td", { "aria-hidden": "true" })
5056
5128
  );
5057
5129
  })
5058
- ), Footer && /* @__PURE__ */ import_react29.default.createElement(Footer, null))
5130
+ ), Footer && /* @__PURE__ */ import_react30.default.createElement(Footer, null))
5059
5131
  ),
5060
- pagination && /* @__PURE__ */ import_react29.default.createElement(
5132
+ pagination && /* @__PURE__ */ import_react30.default.createElement(
5061
5133
  Pagination_default,
5062
5134
  {
5063
5135
  pt: 2,
@@ -5070,11 +5142,11 @@ function Component(props, apiRef) {
5070
5142
  )
5071
5143
  );
5072
5144
  }
5073
- var DataTable = (0, import_react29.forwardRef)(Component);
5145
+ var DataTable = (0, import_react30.forwardRef)(Component);
5074
5146
  DataTable.displayName = "DataTable";
5075
5147
 
5076
5148
  // src/components/DateRangePicker/DateRangePicker.tsx
5077
- var import_react30 = __toESM(require("react"));
5149
+ var import_react31 = __toESM(require("react"));
5078
5150
  var import_react_imask2 = require("react-imask");
5079
5151
  var import_CalendarToday2 = __toESM(require("@mui/icons-material/CalendarToday"));
5080
5152
  var import_joy37 = require("@mui/joy");
@@ -5216,9 +5288,9 @@ var parseDates = (str, format) => {
5216
5288
  var formatToPattern2 = (format) => {
5217
5289
  return `${format} - ${format}`.replace(/YYYY/g, "Y").replace(/MM/g, "M").replace(/DD/g, "D").replace(/[^YMD\s]/g, (match) => `${match}\``);
5218
5290
  };
5219
- var TextMaskAdapter5 = import_react30.default.forwardRef(function TextMaskAdapter6(props, ref) {
5291
+ var TextMaskAdapter5 = import_react31.default.forwardRef(function TextMaskAdapter6(props, ref) {
5220
5292
  const { onChange, format, ...other } = props;
5221
- return /* @__PURE__ */ import_react30.default.createElement(
5293
+ return /* @__PURE__ */ import_react31.default.createElement(
5222
5294
  import_react_imask2.IMaskInput,
5223
5295
  {
5224
5296
  ...other,
@@ -5252,7 +5324,7 @@ var TextMaskAdapter5 = import_react30.default.forwardRef(function TextMaskAdapte
5252
5324
  }
5253
5325
  );
5254
5326
  });
5255
- var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5327
+ var DateRangePicker = (0, import_react31.forwardRef)((inProps, ref) => {
5256
5328
  const props = (0, import_joy37.useThemeProps)({ props: inProps, name: "DateRangePicker" });
5257
5329
  const {
5258
5330
  onChange,
@@ -5279,28 +5351,28 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5279
5351
  numberOfMonths,
5280
5352
  ...innerProps
5281
5353
  } = props;
5282
- const innerRef = (0, import_react30.useRef)(null);
5283
- const buttonRef = (0, import_react30.useRef)(null);
5354
+ const innerRef = (0, import_react31.useRef)(null);
5355
+ const buttonRef = (0, import_react31.useRef)(null);
5284
5356
  const [rawValue, setValue] = useControlledState(
5285
5357
  props.value,
5286
5358
  props.defaultValue ?? null,
5287
- (0, import_react30.useCallback)(
5359
+ (0, import_react31.useCallback)(
5288
5360
  (value2) => onChange?.({ target: { name: props.name, value: value2 ?? "" } }),
5289
5361
  [props.name, onChange]
5290
5362
  )
5291
5363
  );
5292
5364
  const value = rawValue ?? "";
5293
5365
  const isAlphabeticDisplay = hasAlphabeticMonth2(displayFormat);
5294
- const [displayValue, setDisplayValue] = (0, import_react30.useState)(
5366
+ const [displayValue, setDisplayValue] = (0, import_react31.useState)(
5295
5367
  () => value ? formatValueString2(parseDates(value, format), displayFormat, locale) : ""
5296
5368
  );
5297
- const [anchorEl, setAnchorEl] = (0, import_react30.useState)(null);
5369
+ const [anchorEl, setAnchorEl] = (0, import_react31.useState)(null);
5298
5370
  const open = Boolean(anchorEl);
5299
- const calendarValue = (0, import_react30.useMemo)(
5371
+ const calendarValue = (0, import_react31.useMemo)(
5300
5372
  () => value ? parseDates(value, format) : void 0,
5301
5373
  [value, format]
5302
5374
  );
5303
- (0, import_react30.useEffect)(() => {
5375
+ (0, import_react31.useEffect)(() => {
5304
5376
  if (value) {
5305
5377
  try {
5306
5378
  const dates = parseDates(value, format);
@@ -5312,13 +5384,13 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5312
5384
  setDisplayValue("");
5313
5385
  }
5314
5386
  }, [displayFormat, locale, value, format]);
5315
- (0, import_react30.useEffect)(() => {
5387
+ (0, import_react31.useEffect)(() => {
5316
5388
  if (!anchorEl) {
5317
5389
  innerRef.current?.blur();
5318
5390
  }
5319
5391
  }, [anchorEl, innerRef]);
5320
- (0, import_react30.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
5321
- const handleChange = (0, import_react30.useCallback)(
5392
+ (0, import_react31.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
5393
+ const handleChange = (0, import_react31.useCallback)(
5322
5394
  (event) => {
5323
5395
  const value2 = event.target.value;
5324
5396
  setDisplayValue(value2 ? formatValueString2(parseDates(value2, format), displayFormat, locale) : value2);
@@ -5326,7 +5398,7 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5326
5398
  },
5327
5399
  [displayFormat, format, locale, setValue]
5328
5400
  );
5329
- const handleDisplayInputChange = (0, import_react30.useCallback)(
5401
+ const handleDisplayInputChange = (0, import_react31.useCallback)(
5330
5402
  (event) => {
5331
5403
  if (event.target.value === "") {
5332
5404
  handleChange({
@@ -5351,14 +5423,14 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5351
5423
  },
5352
5424
  [displayFormat, format, handleChange, props.name]
5353
5425
  );
5354
- const handleCalendarToggle = (0, import_react30.useCallback)(
5426
+ const handleCalendarToggle = (0, import_react31.useCallback)(
5355
5427
  (event) => {
5356
5428
  setAnchorEl(anchorEl ? null : event.currentTarget);
5357
5429
  innerRef.current?.focus();
5358
5430
  },
5359
5431
  [anchorEl, setAnchorEl, innerRef]
5360
5432
  );
5361
- const handleCalendarChange = (0, import_react30.useCallback)(
5433
+ const handleCalendarChange = (0, import_react31.useCallback)(
5362
5434
  ([date1, date2]) => {
5363
5435
  if (!date1 || !date2) return;
5364
5436
  const formattedValue = formatValueString2([date1, date2], format);
@@ -5372,7 +5444,7 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5372
5444
  },
5373
5445
  [props.value, props.name, onChange, setValue, setAnchorEl, format, displayFormat, locale]
5374
5446
  );
5375
- const handleInputMouseDown = (0, import_react30.useCallback)(
5447
+ const handleInputMouseDown = (0, import_react31.useCallback)(
5376
5448
  (event) => {
5377
5449
  if (inputReadOnly || isAlphabeticDisplay) {
5378
5450
  event.preventDefault();
@@ -5381,7 +5453,7 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5381
5453
  },
5382
5454
  [inputReadOnly, isAlphabeticDisplay, buttonRef]
5383
5455
  );
5384
- const handleInputClick = (0, import_react30.useCallback)(
5456
+ const handleInputClick = (0, import_react31.useCallback)(
5385
5457
  (event) => {
5386
5458
  if (inputReadOnly && !readOnly) {
5387
5459
  handleCalendarToggle(event);
@@ -5389,7 +5461,7 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5389
5461
  },
5390
5462
  [inputReadOnly, readOnly, handleCalendarToggle]
5391
5463
  );
5392
- const handlePresetClick = (0, import_react30.useCallback)(
5464
+ const handlePresetClick = (0, import_react31.useCallback)(
5393
5465
  (presetValue) => {
5394
5466
  if (props.value !== void 0) {
5395
5467
  onChange?.({ target: { name: props.name, value: presetValue } });
@@ -5402,7 +5474,7 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5402
5474
  },
5403
5475
  [props.value, props.name, onChange, setValue, setAnchorEl, format, displayFormat, locale]
5404
5476
  );
5405
- const isPresetDisabled = (0, import_react30.useCallback)(
5477
+ const isPresetDisabled = (0, import_react31.useCallback)(
5406
5478
  (presetValue) => {
5407
5479
  try {
5408
5480
  const dates = parseDates(presetValue, format);
@@ -5421,7 +5493,7 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5421
5493
  },
5422
5494
  [format, minDate, maxDate, disableFuture, disablePast]
5423
5495
  );
5424
- return /* @__PURE__ */ import_react30.default.createElement(DateRangePickerRoot, { sx, className }, /* @__PURE__ */ import_react30.default.createElement(import_base4.FocusTrap, { open: true }, /* @__PURE__ */ import_react30.default.createElement(import_react30.default.Fragment, null, /* @__PURE__ */ import_react30.default.createElement(
5496
+ return /* @__PURE__ */ import_react31.default.createElement(DateRangePickerRoot, { sx, className }, /* @__PURE__ */ import_react31.default.createElement(import_base4.FocusTrap, { open: true }, /* @__PURE__ */ import_react31.default.createElement(import_react31.default.Fragment, null, /* @__PURE__ */ import_react31.default.createElement(
5425
5497
  Input_default,
5426
5498
  {
5427
5499
  ...innerProps,
@@ -5448,7 +5520,7 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5448
5520
  },
5449
5521
  error,
5450
5522
  sx: { width: "100%" },
5451
- endDecorator: /* @__PURE__ */ import_react30.default.createElement(
5523
+ endDecorator: /* @__PURE__ */ import_react31.default.createElement(
5452
5524
  CalendarButton2,
5453
5525
  {
5454
5526
  ref: buttonRef,
@@ -5460,13 +5532,13 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5460
5532
  "aria-expanded": open,
5461
5533
  disabled
5462
5534
  },
5463
- /* @__PURE__ */ import_react30.default.createElement(import_CalendarToday2.default, null)
5535
+ /* @__PURE__ */ import_react31.default.createElement(import_CalendarToday2.default, null)
5464
5536
  ),
5465
5537
  label,
5466
5538
  helperText,
5467
5539
  readOnly: readOnly || inputReadOnly || isAlphabeticDisplay
5468
5540
  }
5469
- ), open && /* @__PURE__ */ import_react30.default.createElement(import_base4.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react30.default.createElement(
5541
+ ), open && /* @__PURE__ */ import_react31.default.createElement(import_base4.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react31.default.createElement(
5470
5542
  StyledPopper2,
5471
5543
  {
5472
5544
  id: "date-range-picker-popper",
@@ -5485,7 +5557,7 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5485
5557
  "aria-label": "Calendar Tooltip",
5486
5558
  "aria-expanded": open
5487
5559
  },
5488
- /* @__PURE__ */ import_react30.default.createElement(CalendarSheet2, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react30.default.createElement(CalendarSheetContent2, null, /* @__PURE__ */ import_react30.default.createElement(CalendarSection2, { style: { width: "auto" } }, /* @__PURE__ */ import_react30.default.createElement(
5560
+ /* @__PURE__ */ import_react31.default.createElement(CalendarSheet2, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react31.default.createElement(CalendarSheetContent2, null, /* @__PURE__ */ import_react31.default.createElement(CalendarSection2, { style: { width: "auto" } }, /* @__PURE__ */ import_react31.default.createElement(
5489
5561
  Calendar_default,
5490
5562
  {
5491
5563
  rangeSelection: true,
@@ -5498,14 +5570,14 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5498
5570
  locale,
5499
5571
  numberOfMonths
5500
5572
  }
5501
- ), !hideClearButton && /* @__PURE__ */ import_react30.default.createElement(
5573
+ ), !hideClearButton && /* @__PURE__ */ import_react31.default.createElement(
5502
5574
  DialogActions_default,
5503
5575
  {
5504
5576
  sx: {
5505
5577
  p: 1
5506
5578
  }
5507
5579
  },
5508
- /* @__PURE__ */ import_react30.default.createElement(
5580
+ /* @__PURE__ */ import_react31.default.createElement(
5509
5581
  Button_default,
5510
5582
  {
5511
5583
  size,
@@ -5519,9 +5591,9 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5519
5591
  },
5520
5592
  "Clear"
5521
5593
  )
5522
- )), presets && presets.length > 0 && /* @__PURE__ */ import_react30.default.createElement(PresetPanel2, null, presets.map((preset) => {
5594
+ )), presets && presets.length > 0 && /* @__PURE__ */ import_react31.default.createElement(PresetPanel2, null, presets.map((preset) => {
5523
5595
  const disabled2 = isPresetDisabled(preset.value);
5524
- return /* @__PURE__ */ import_react30.default.createElement(
5596
+ return /* @__PURE__ */ import_react31.default.createElement(
5525
5597
  PresetItem2,
5526
5598
  {
5527
5599
  key: preset.label,
@@ -5566,10 +5638,10 @@ DialogTitle.displayName = "DialogTitle";
5566
5638
  var DialogTitle_default = DialogTitle;
5567
5639
 
5568
5640
  // src/components/DialogFrame/DialogFrame.tsx
5569
- var import_react32 = __toESM(require("react"));
5641
+ var import_react33 = __toESM(require("react"));
5570
5642
 
5571
5643
  // src/components/Modal/Modal.tsx
5572
- var import_react31 = __toESM(require("react"));
5644
+ var import_react32 = __toESM(require("react"));
5573
5645
  var import_joy40 = require("@mui/joy");
5574
5646
  var import_framer_motion24 = require("framer-motion");
5575
5647
  var MotionModal = (0, import_framer_motion24.motion)(import_joy40.Modal);
@@ -5584,10 +5656,10 @@ var ModalClose = import_joy40.ModalClose;
5584
5656
  var MotionModalOverflow = (0, import_framer_motion24.motion)(import_joy40.ModalOverflow);
5585
5657
  var ModalOverflow = MotionModalOverflow;
5586
5658
  ModalOverflow.displayName = "ModalOverflow";
5587
- function ModalFrame(props) {
5659
+ var ModalFrame = import_react32.default.forwardRef((props, ref) => {
5588
5660
  const { title, children, titleStartDecorator, onClose, ...innerProps } = props;
5589
- return /* @__PURE__ */ import_react31.default.createElement(StyledModalDialog, { ...innerProps }, /* @__PURE__ */ import_react31.default.createElement(ModalClose, { onClick: onClose }), /* @__PURE__ */ import_react31.default.createElement(DialogTitle_default, null, titleStartDecorator, title), /* @__PURE__ */ import_react31.default.createElement(DialogContent_default, null, children));
5590
- }
5661
+ return /* @__PURE__ */ import_react32.default.createElement(StyledModalDialog, { ...innerProps, ref }, /* @__PURE__ */ import_react32.default.createElement(ModalClose, { onClick: onClose }), /* @__PURE__ */ import_react32.default.createElement(DialogTitle_default, null, titleStartDecorator, title), /* @__PURE__ */ import_react32.default.createElement(DialogContent_default, null, children));
5662
+ });
5591
5663
  ModalFrame.displayName = "ModalFrame";
5592
5664
 
5593
5665
  // src/components/DialogFrame/DialogFrame.tsx
@@ -5598,20 +5670,20 @@ var StyledDialogFrame = (0, import_joy41.styled)(ModalDialog, {
5598
5670
  })({
5599
5671
  padding: 0
5600
5672
  });
5601
- var DialogFrame = import_react32.default.forwardRef((props, ref) => {
5673
+ var DialogFrame = import_react33.default.forwardRef((props, ref) => {
5602
5674
  const { title, children, actions, fullscreen, onSubmit, ...innerProps } = props;
5603
5675
  const formProps = onSubmit ? { component: "form", onSubmit } : void 0;
5604
- return /* @__PURE__ */ import_react32.default.createElement(StyledDialogFrame, { layout: fullscreen ? "fullscreen" : "center", ref, ...formProps, ...innerProps }, /* @__PURE__ */ import_react32.default.createElement(DialogTitle_default, null, title), /* @__PURE__ */ import_react32.default.createElement(DialogContent_default, null, children), /* @__PURE__ */ import_react32.default.createElement(DialogActions_default, null, actions));
5676
+ return /* @__PURE__ */ import_react33.default.createElement(StyledDialogFrame, { layout: fullscreen ? "fullscreen" : "center", ref, ...formProps, ...innerProps }, /* @__PURE__ */ import_react33.default.createElement(DialogTitle_default, null, title), /* @__PURE__ */ import_react33.default.createElement(DialogContent_default, null, children), /* @__PURE__ */ import_react33.default.createElement(DialogActions_default, null, actions));
5605
5677
  });
5606
5678
  DialogFrame.displayName = "DialogFrame";
5607
5679
 
5608
5680
  // src/components/Divider/Divider.tsx
5609
- var import_react33 = __toESM(require("react"));
5681
+ var import_react34 = __toESM(require("react"));
5610
5682
  var import_joy42 = require("@mui/joy");
5611
5683
  var import_framer_motion25 = require("framer-motion");
5612
5684
  var MotionDivider = (0, import_framer_motion25.motion)(import_joy42.Divider);
5613
5685
  var Divider = (props) => {
5614
- return /* @__PURE__ */ import_react33.default.createElement(MotionDivider, { ...props });
5686
+ return /* @__PURE__ */ import_react34.default.createElement(MotionDivider, { ...props });
5615
5687
  };
5616
5688
  Divider.displayName = "Divider";
5617
5689
 
@@ -5632,16 +5704,16 @@ var InsetDrawer = (0, import_joy43.styled)(import_joy43.Drawer)(({ theme }) => (
5632
5704
  }));
5633
5705
 
5634
5706
  // src/components/FilterableCheckboxGroup/FilterableCheckboxGroup.tsx
5635
- var import_react34 = __toESM(require("react"));
5707
+ var import_react35 = __toESM(require("react"));
5636
5708
  var import_Search = __toESM(require("@mui/icons-material/Search"));
5637
5709
  var import_joy44 = require("@mui/joy");
5638
5710
  var import_react_virtual3 = require("@tanstack/react-virtual");
5639
5711
  var EMPTY_VALUE = [];
5640
5712
  function LabelWithTooltip(props) {
5641
5713
  const { label, size } = props;
5642
- const labelContentRef = (0, import_react34.useRef)(null);
5643
- const [isOverflowing, setIsOverflowing] = (0, import_react34.useState)(false);
5644
- const labelContent = /* @__PURE__ */ import_react34.default.createElement(
5714
+ const labelContentRef = (0, import_react35.useRef)(null);
5715
+ const [isOverflowing, setIsOverflowing] = (0, import_react35.useState)(false);
5716
+ const labelContent = /* @__PURE__ */ import_react35.default.createElement(
5645
5717
  "span",
5646
5718
  {
5647
5719
  ref: labelContentRef,
@@ -5657,14 +5729,14 @@ function LabelWithTooltip(props) {
5657
5729
  },
5658
5730
  label
5659
5731
  );
5660
- (0, import_react34.useEffect)(() => {
5732
+ (0, import_react35.useEffect)(() => {
5661
5733
  const element = labelContentRef.current;
5662
5734
  if (element) {
5663
5735
  setIsOverflowing(element.scrollWidth > element.clientWidth);
5664
5736
  }
5665
5737
  }, [label]);
5666
5738
  if (isOverflowing) {
5667
- return /* @__PURE__ */ import_react34.default.createElement(Tooltip_default, { variant: "solid", size, title: label, placement: "bottom-start" }, labelContent);
5739
+ return /* @__PURE__ */ import_react35.default.createElement(Tooltip_default, { variant: "solid", size, title: label, placement: "bottom-start" }, labelContent);
5668
5740
  }
5669
5741
  return labelContent;
5670
5742
  }
@@ -5682,22 +5754,22 @@ function FilterableCheckboxGroup(inProps) {
5682
5754
  maxHeight = 300,
5683
5755
  disabled
5684
5756
  } = props;
5685
- const [searchTerm, setSearchTerm] = (0, import_react34.useState)("");
5686
- const [sortedOptions, setSortedOptions] = (0, import_react34.useState)(options);
5757
+ const [searchTerm, setSearchTerm] = (0, import_react35.useState)("");
5758
+ const [sortedOptions, setSortedOptions] = (0, import_react35.useState)(options);
5687
5759
  const [rawValue, setInternalValue] = useControlledState(
5688
5760
  value,
5689
5761
  value ?? EMPTY_VALUE,
5690
- (0, import_react34.useCallback)((newValue) => onChange?.(newValue ?? []), [onChange])
5762
+ (0, import_react35.useCallback)((newValue) => onChange?.(newValue ?? []), [onChange])
5691
5763
  );
5692
5764
  const internalValue = rawValue ?? EMPTY_VALUE;
5693
- const parentRef = (0, import_react34.useRef)(null);
5694
- const isInitialSortRef = (0, import_react34.useRef)(false);
5695
- const prevOptionsRef = (0, import_react34.useRef)([...options]);
5696
- const filteredOptions = (0, import_react34.useMemo)(() => {
5765
+ const parentRef = (0, import_react35.useRef)(null);
5766
+ const isInitialSortRef = (0, import_react35.useRef)(false);
5767
+ const prevOptionsRef = (0, import_react35.useRef)([...options]);
5768
+ const filteredOptions = (0, import_react35.useMemo)(() => {
5697
5769
  if (!searchTerm) return sortedOptions;
5698
5770
  return sortedOptions.filter((option) => option.label.toLowerCase().includes(searchTerm.toLowerCase()));
5699
5771
  }, [sortedOptions, searchTerm]);
5700
- const itemSize = (0, import_react34.useMemo)(() => {
5772
+ const itemSize = (0, import_react35.useMemo)(() => {
5701
5773
  switch (size) {
5702
5774
  case "sm":
5703
5775
  return 28;
@@ -5715,7 +5787,7 @@ function FilterableCheckboxGroup(inProps) {
5715
5787
  overscan: 5
5716
5788
  });
5717
5789
  const items = virtualizer.getVirtualItems();
5718
- (0, import_react34.useEffect)(() => {
5790
+ (0, import_react35.useEffect)(() => {
5719
5791
  const optionsChanged = prevOptionsRef.current.length !== options.length || prevOptionsRef.current.some(
5720
5792
  (prevOption, index) => prevOption.value !== options[index]?.value || prevOption.label !== options[index]?.label || prevOption.disabled !== options[index]?.disabled
5721
5793
  );
@@ -5741,13 +5813,13 @@ function FilterableCheckboxGroup(inProps) {
5741
5813
  }
5742
5814
  }
5743
5815
  }, [options, value]);
5744
- (0, import_react34.useEffect)(() => {
5816
+ (0, import_react35.useEffect)(() => {
5745
5817
  virtualizer.measure();
5746
5818
  }, [virtualizer, filteredOptions, size]);
5747
- const handleSearchChange = (0, import_react34.useCallback)((event) => {
5819
+ const handleSearchChange = (0, import_react35.useCallback)((event) => {
5748
5820
  setSearchTerm(event.target.value);
5749
5821
  }, []);
5750
- const handleCheckboxChange = (0, import_react34.useCallback)(
5822
+ const handleCheckboxChange = (0, import_react35.useCallback)(
5751
5823
  (optionValue) => (event) => {
5752
5824
  const checked = event.target.checked;
5753
5825
  const newValue = checked ? [...internalValue, optionValue] : internalValue.filter((v) => v !== optionValue);
@@ -5755,7 +5827,7 @@ function FilterableCheckboxGroup(inProps) {
5755
5827
  },
5756
5828
  [internalValue, setInternalValue]
5757
5829
  );
5758
- const handleSelectAll = (0, import_react34.useCallback)(
5830
+ const handleSelectAll = (0, import_react35.useCallback)(
5759
5831
  (event) => {
5760
5832
  const checked = event.target.checked;
5761
5833
  const enabledOptions = filteredOptions.filter((option) => !option.disabled);
@@ -5771,10 +5843,10 @@ function FilterableCheckboxGroup(inProps) {
5771
5843
  },
5772
5844
  [filteredOptions, internalValue, setInternalValue]
5773
5845
  );
5774
- const enabledFilteredOptions = (0, import_react34.useMemo)(() => filteredOptions.filter((option) => !option.disabled), [filteredOptions]);
5846
+ const enabledFilteredOptions = (0, import_react35.useMemo)(() => filteredOptions.filter((option) => !option.disabled), [filteredOptions]);
5775
5847
  const isAllSelected = enabledFilteredOptions.length > 0 && enabledFilteredOptions.every((option) => internalValue.includes(option.value));
5776
5848
  const isIndeterminate = !isAllSelected && enabledFilteredOptions.some((option) => internalValue.includes(option.value));
5777
- return /* @__PURE__ */ import_react34.default.createElement("div", { style: { width: "100%" } }, /* @__PURE__ */ import_react34.default.createElement(
5849
+ return /* @__PURE__ */ import_react35.default.createElement("div", { style: { width: "100%" } }, /* @__PURE__ */ import_react35.default.createElement(
5778
5850
  Input_default,
5779
5851
  {
5780
5852
  label,
@@ -5787,9 +5859,9 @@ function FilterableCheckboxGroup(inProps) {
5787
5859
  onChange: handleSearchChange,
5788
5860
  size,
5789
5861
  disabled,
5790
- endDecorator: /* @__PURE__ */ import_react34.default.createElement(import_Search.default, null)
5862
+ endDecorator: /* @__PURE__ */ import_react35.default.createElement(import_Search.default, null)
5791
5863
  }
5792
- ), filteredOptions.length === 0 ? /* @__PURE__ */ import_react34.default.createElement(Typography_default, { level: `body-${size}`, textColor: "neutral.softDisabledColor", padding: "20px 12px", textAlign: "center" }, "No options found.") : /* @__PURE__ */ import_react34.default.createElement(
5864
+ ), filteredOptions.length === 0 ? /* @__PURE__ */ import_react35.default.createElement(Typography_default, { level: `body-${size}`, textColor: "neutral.softDisabledColor", padding: "20px 12px", textAlign: "center" }, "No options found.") : /* @__PURE__ */ import_react35.default.createElement(
5793
5865
  "div",
5794
5866
  {
5795
5867
  ref: parentRef,
@@ -5800,7 +5872,7 @@ function FilterableCheckboxGroup(inProps) {
5800
5872
  marginTop: "8px"
5801
5873
  }
5802
5874
  },
5803
- !searchTerm && /* @__PURE__ */ import_react34.default.createElement(
5875
+ !searchTerm && /* @__PURE__ */ import_react35.default.createElement(
5804
5876
  Checkbox_default,
5805
5877
  {
5806
5878
  label: "Select all",
@@ -5817,7 +5889,7 @@ function FilterableCheckboxGroup(inProps) {
5817
5889
  sx: { width: "100%", height: itemSize }
5818
5890
  }
5819
5891
  ),
5820
- /* @__PURE__ */ import_react34.default.createElement(
5892
+ /* @__PURE__ */ import_react35.default.createElement(
5821
5893
  Stack_default,
5822
5894
  {
5823
5895
  sx: {
@@ -5827,11 +5899,11 @@ function FilterableCheckboxGroup(inProps) {
5827
5899
  },
5828
5900
  items.map((virtualRow) => {
5829
5901
  const option = filteredOptions[virtualRow.index];
5830
- return /* @__PURE__ */ import_react34.default.createElement(
5902
+ return /* @__PURE__ */ import_react35.default.createElement(
5831
5903
  Checkbox_default,
5832
5904
  {
5833
5905
  key: virtualRow.key,
5834
- label: /* @__PURE__ */ import_react34.default.createElement(LabelWithTooltip, { label: option.label, size }),
5906
+ label: /* @__PURE__ */ import_react35.default.createElement(LabelWithTooltip, { label: option.label, size }),
5835
5907
  checked: internalValue.includes(option.value),
5836
5908
  onChange: handleCheckboxChange(option.value),
5837
5909
  size,
@@ -5859,16 +5931,16 @@ function FilterableCheckboxGroup(inProps) {
5859
5931
  FilterableCheckboxGroup.displayName = "FilterableCheckboxGroup";
5860
5932
 
5861
5933
  // src/components/FilterMenu/FilterMenu.tsx
5862
- var import_react47 = __toESM(require("react"));
5934
+ var import_react48 = __toESM(require("react"));
5863
5935
  var import_joy58 = require("@mui/joy");
5864
5936
 
5865
5937
  // src/components/FilterMenu/components/CheckboxGroup.tsx
5866
- var import_react35 = __toESM(require("react"));
5938
+ var import_react36 = __toESM(require("react"));
5867
5939
  var import_joy45 = require("@mui/joy");
5868
5940
  function CheckboxGroup(props) {
5869
5941
  const { id, label, options, value, onChange, hidden } = props;
5870
5942
  const [internalValue, setInternalValue] = useControlledState(value, [], onChange);
5871
- const handleCheckboxChange = (0, import_react35.useCallback)(
5943
+ const handleCheckboxChange = (0, import_react36.useCallback)(
5872
5944
  (optionValue) => (event) => {
5873
5945
  const checked = event.target.checked;
5874
5946
  let newValue;
@@ -5884,7 +5956,7 @@ function CheckboxGroup(props) {
5884
5956
  if (hidden) {
5885
5957
  return null;
5886
5958
  }
5887
- return /* @__PURE__ */ import_react35.default.createElement(import_joy45.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react35.default.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), options.map((option) => /* @__PURE__ */ import_react35.default.createElement(
5959
+ return /* @__PURE__ */ import_react36.default.createElement(import_joy45.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react36.default.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), options.map((option) => /* @__PURE__ */ import_react36.default.createElement(
5888
5960
  Checkbox_default,
5889
5961
  {
5890
5962
  key: `${id}-${option.value}`,
@@ -5897,12 +5969,12 @@ function CheckboxGroup(props) {
5897
5969
  CheckboxGroup.displayName = "CheckboxGroup";
5898
5970
 
5899
5971
  // src/components/FilterMenu/components/FilterableCheckboxGroup.tsx
5900
- var import_react36 = __toESM(require("react"));
5972
+ var import_react37 = __toESM(require("react"));
5901
5973
  var import_joy46 = require("@mui/joy");
5902
5974
  function FilterableCheckboxGroup2(props) {
5903
5975
  const { id, label, options, value, onChange, hidden, placeholder, maxHeight } = props;
5904
5976
  const [internalValue, setInternalValue] = useControlledState(value, [], onChange);
5905
- const handleChange = (0, import_react36.useCallback)(
5977
+ const handleChange = (0, import_react37.useCallback)(
5906
5978
  (newValue) => {
5907
5979
  setInternalValue(newValue);
5908
5980
  },
@@ -5911,7 +5983,7 @@ function FilterableCheckboxGroup2(props) {
5911
5983
  if (hidden) {
5912
5984
  return null;
5913
5985
  }
5914
- return /* @__PURE__ */ import_react36.default.createElement(import_joy46.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react36.default.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ import_react36.default.createElement(
5986
+ return /* @__PURE__ */ import_react37.default.createElement(import_joy46.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react37.default.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ import_react37.default.createElement(
5915
5987
  FilterableCheckboxGroup,
5916
5988
  {
5917
5989
  value: internalValue ?? [],
@@ -5926,7 +5998,7 @@ function FilterableCheckboxGroup2(props) {
5926
5998
  FilterableCheckboxGroup2.displayName = "FilterableCheckboxGroup";
5927
5999
 
5928
6000
  // src/components/FilterMenu/components/RadioGroup.tsx
5929
- var import_react37 = __toESM(require("react"));
6001
+ var import_react38 = __toESM(require("react"));
5930
6002
 
5931
6003
  // src/components/Radio/Radio.tsx
5932
6004
  var import_joy47 = require("@mui/joy");
@@ -5943,7 +6015,7 @@ var import_joy48 = require("@mui/joy");
5943
6015
  function RadioGroup2(props) {
5944
6016
  const { id, label, options, value, onChange, hidden } = props;
5945
6017
  const [internalValue, setInternalValue] = useControlledState(value, value ?? "", onChange);
5946
- const handleRadioChange = (0, import_react37.useCallback)(
6018
+ const handleRadioChange = (0, import_react38.useCallback)(
5947
6019
  (event) => {
5948
6020
  const newValue = event.target.value;
5949
6021
  const option = options.find((opt) => opt.value.toString() === newValue);
@@ -5955,12 +6027,12 @@ function RadioGroup2(props) {
5955
6027
  if (hidden) {
5956
6028
  return null;
5957
6029
  }
5958
- return /* @__PURE__ */ import_react37.default.createElement(import_joy48.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react37.default.createElement(import_joy48.Stack, { spacing: 1 }, /* @__PURE__ */ import_react37.default.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label)), /* @__PURE__ */ import_react37.default.createElement(RadioGroup, { name: id, value: internalValue?.toString(), onChange: handleRadioChange }, options.map((option) => /* @__PURE__ */ import_react37.default.createElement(Radio, { key: `${id}-${option.value}`, value: option.value.toString(), label: option.label }))));
6030
+ return /* @__PURE__ */ import_react38.default.createElement(import_joy48.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react38.default.createElement(import_joy48.Stack, { spacing: 1 }, /* @__PURE__ */ import_react38.default.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label)), /* @__PURE__ */ import_react38.default.createElement(RadioGroup, { name: id, value: internalValue?.toString(), onChange: handleRadioChange }, options.map((option) => /* @__PURE__ */ import_react38.default.createElement(Radio, { key: `${id}-${option.value}`, value: option.value.toString(), label: option.label }))));
5959
6031
  }
5960
6032
  RadioGroup2.displayName = "RadioGroup";
5961
6033
 
5962
6034
  // src/components/FilterMenu/components/DateRange.tsx
5963
- var import_react38 = __toESM(require("react"));
6035
+ var import_react39 = __toESM(require("react"));
5964
6036
  var import_joy49 = require("@mui/joy");
5965
6037
  function DateRange(props) {
5966
6038
  const {
@@ -5978,8 +6050,8 @@ function DateRange(props) {
5978
6050
  hideClearButton
5979
6051
  } = props;
5980
6052
  const [internalValue, setInternalValue] = useControlledState(value, null, onChange);
5981
- const [selectedOption, setSelectedOption] = (0, import_react38.useState)("all-time");
5982
- const dateRangeOptions = (0, import_react38.useMemo)(
6053
+ const [selectedOption, setSelectedOption] = (0, import_react39.useState)("all-time");
6054
+ const dateRangeOptions = (0, import_react39.useMemo)(
5983
6055
  () => [
5984
6056
  { label: "All Time", value: "all-time" },
5985
6057
  { label: "This Month", value: "this-month" },
@@ -5989,7 +6061,7 @@ function DateRange(props) {
5989
6061
  ],
5990
6062
  []
5991
6063
  );
5992
- const getDateRangeForOption = (0, import_react38.useCallback)(
6064
+ const getDateRangeForOption = (0, import_react39.useCallback)(
5993
6065
  (option) => {
5994
6066
  const now = /* @__PURE__ */ new Date();
5995
6067
  const currentYear = now.getFullYear();
@@ -6028,7 +6100,7 @@ function DateRange(props) {
6028
6100
  },
6029
6101
  [internalValue]
6030
6102
  );
6031
- const determineOptionFromValue = (0, import_react38.useCallback)(
6103
+ const determineOptionFromValue = (0, import_react39.useCallback)(
6032
6104
  (value2) => {
6033
6105
  if (!value2) {
6034
6106
  return "all-time";
@@ -6044,17 +6116,17 @@ function DateRange(props) {
6044
6116
  },
6045
6117
  [getDateRangeForOption]
6046
6118
  );
6047
- const customDateRangeValue = (0, import_react38.useMemo)(() => {
6119
+ const customDateRangeValue = (0, import_react39.useMemo)(() => {
6048
6120
  if (selectedOption === "custom" && internalValue) {
6049
6121
  return `${internalValue[0]} - ${internalValue[1]}`;
6050
6122
  }
6051
6123
  return "";
6052
6124
  }, [selectedOption, internalValue]);
6053
- (0, import_react38.useEffect)(() => {
6125
+ (0, import_react39.useEffect)(() => {
6054
6126
  const newOption = determineOptionFromValue(internalValue);
6055
6127
  setSelectedOption(newOption);
6056
6128
  }, [internalValue, determineOptionFromValue]);
6057
- const handleOptionChange = (0, import_react38.useCallback)(
6129
+ const handleOptionChange = (0, import_react39.useCallback)(
6058
6130
  (event) => {
6059
6131
  const newOption = event.target.value;
6060
6132
  setSelectedOption(newOption);
@@ -6063,7 +6135,7 @@ function DateRange(props) {
6063
6135
  },
6064
6136
  [getDateRangeForOption, setInternalValue]
6065
6137
  );
6066
- const handleCustomDateChange = (0, import_react38.useCallback)(
6138
+ const handleCustomDateChange = (0, import_react39.useCallback)(
6067
6139
  (event) => {
6068
6140
  const dateRangeString = event.target.value;
6069
6141
  if (dateRangeString && dateRangeString.includes(" - ")) {
@@ -6084,7 +6156,7 @@ function DateRange(props) {
6084
6156
  if (hidden) {
6085
6157
  return null;
6086
6158
  }
6087
- return /* @__PURE__ */ import_react38.default.createElement(import_joy49.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react38.default.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ import_react38.default.createElement(RadioGroup, { name: `${id}-options`, value: selectedOption, onChange: handleOptionChange }, dateRangeOptions.map((option) => /* @__PURE__ */ import_react38.default.createElement(Radio, { key: `${id}-${option.value}`, value: option.value, label: option.label }))), selectedOption === "custom" && /* @__PURE__ */ import_react38.default.createElement(
6159
+ return /* @__PURE__ */ import_react39.default.createElement(import_joy49.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react39.default.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ import_react39.default.createElement(RadioGroup, { name: `${id}-options`, value: selectedOption, onChange: handleOptionChange }, dateRangeOptions.map((option) => /* @__PURE__ */ import_react39.default.createElement(Radio, { key: `${id}-${option.value}`, value: option.value, label: option.label }))), selectedOption === "custom" && /* @__PURE__ */ import_react39.default.createElement(
6088
6160
  DateRangePicker,
6089
6161
  {
6090
6162
  value: customDateRangeValue,
@@ -6103,11 +6175,11 @@ function DateRange(props) {
6103
6175
  DateRange.displayName = "DateRange";
6104
6176
 
6105
6177
  // src/components/FilterMenu/components/MonthRange.tsx
6106
- var import_react40 = __toESM(require("react"));
6178
+ var import_react41 = __toESM(require("react"));
6107
6179
  var import_joy51 = require("@mui/joy");
6108
6180
 
6109
6181
  // src/components/MonthRangePicker/MonthRangePicker.tsx
6110
- var import_react39 = __toESM(require("react"));
6182
+ var import_react40 = __toESM(require("react"));
6111
6183
  var import_react_imask3 = require("react-imask");
6112
6184
  var import_CalendarToday3 = __toESM(require("@mui/icons-material/CalendarToday"));
6113
6185
  var import_joy50 = require("@mui/joy");
@@ -6168,9 +6240,9 @@ var parseDates2 = (str) => {
6168
6240
  var formatToPattern3 = (format) => {
6169
6241
  return `${format} - ${format}`.replace(/YYYY/g, "Y").replace(/MM/g, "m").replace(/[^YMm\s]/g, (match) => `${match}\``);
6170
6242
  };
6171
- var TextMaskAdapter7 = import_react39.default.forwardRef(function TextMaskAdapter8(props, ref) {
6243
+ var TextMaskAdapter7 = import_react40.default.forwardRef(function TextMaskAdapter8(props, ref) {
6172
6244
  const { onChange, format, ...other } = props;
6173
- return /* @__PURE__ */ import_react39.default.createElement(
6245
+ return /* @__PURE__ */ import_react40.default.createElement(
6174
6246
  import_react_imask3.IMaskInput,
6175
6247
  {
6176
6248
  ...other,
@@ -6198,7 +6270,7 @@ var TextMaskAdapter7 = import_react39.default.forwardRef(function TextMaskAdapte
6198
6270
  }
6199
6271
  );
6200
6272
  });
6201
- var MonthRangePicker = (0, import_react39.forwardRef)((inProps, ref) => {
6273
+ var MonthRangePicker = (0, import_react40.forwardRef)((inProps, ref) => {
6202
6274
  const props = (0, import_joy50.useThemeProps)({ props: inProps, name: "MonthRangePicker" });
6203
6275
  const {
6204
6276
  onChange,
@@ -6222,24 +6294,24 @@ var MonthRangePicker = (0, import_react39.forwardRef)((inProps, ref) => {
6222
6294
  } = props;
6223
6295
  const displayFormat = displayFormatProp ?? format;
6224
6296
  const isAlphabeticDisplay = hasAlphabeticMonth3(displayFormat);
6225
- const innerRef = (0, import_react39.useRef)(null);
6226
- const buttonRef = (0, import_react39.useRef)(null);
6297
+ const innerRef = (0, import_react40.useRef)(null);
6298
+ const buttonRef = (0, import_react40.useRef)(null);
6227
6299
  const [rawValue, setValue] = useControlledState(
6228
6300
  props.value,
6229
6301
  props.defaultValue ?? null,
6230
- (0, import_react39.useCallback)(
6302
+ (0, import_react40.useCallback)(
6231
6303
  (value2) => onChange?.({ target: { name: props.name, value: value2 ?? "" } }),
6232
6304
  [props.name, onChange]
6233
6305
  )
6234
6306
  );
6235
6307
  const value = rawValue ?? "";
6236
- const [displayValue, setDisplayValue] = (0, import_react39.useState)(
6308
+ const [displayValue, setDisplayValue] = (0, import_react40.useState)(
6237
6309
  () => value ? formatValueString3(parseDates2(value), displayFormat, locale) : ""
6238
6310
  );
6239
- const [anchorEl, setAnchorEl] = (0, import_react39.useState)(null);
6311
+ const [anchorEl, setAnchorEl] = (0, import_react40.useState)(null);
6240
6312
  const open = Boolean(anchorEl);
6241
- const calendarValue = (0, import_react39.useMemo)(() => value ? parseDates2(value) : void 0, [value]);
6242
- (0, import_react39.useEffect)(() => {
6313
+ const calendarValue = (0, import_react40.useMemo)(() => value ? parseDates2(value) : void 0, [value]);
6314
+ (0, import_react40.useEffect)(() => {
6243
6315
  if (value) {
6244
6316
  try {
6245
6317
  const dates = parseDates2(value);
@@ -6251,13 +6323,13 @@ var MonthRangePicker = (0, import_react39.forwardRef)((inProps, ref) => {
6251
6323
  setDisplayValue("");
6252
6324
  }
6253
6325
  }, [displayFormat, locale, value]);
6254
- (0, import_react39.useEffect)(() => {
6326
+ (0, import_react40.useEffect)(() => {
6255
6327
  if (!anchorEl) {
6256
6328
  innerRef.current?.blur();
6257
6329
  }
6258
6330
  }, [anchorEl, innerRef]);
6259
- (0, import_react39.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
6260
- const handleChange = (0, import_react39.useCallback)(
6331
+ (0, import_react40.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
6332
+ const handleChange = (0, import_react40.useCallback)(
6261
6333
  (event) => {
6262
6334
  setDisplayValue(
6263
6335
  event.target.value ? formatValueString3(parseDates2(event.target.value), displayFormat, locale) : ""
@@ -6266,7 +6338,7 @@ var MonthRangePicker = (0, import_react39.forwardRef)((inProps, ref) => {
6266
6338
  },
6267
6339
  [displayFormat, locale, setValue]
6268
6340
  );
6269
- const handleInputMouseDown = (0, import_react39.useCallback)(
6341
+ const handleInputMouseDown = (0, import_react40.useCallback)(
6270
6342
  (event) => {
6271
6343
  if (isAlphabeticDisplay) {
6272
6344
  event.preventDefault();
@@ -6275,14 +6347,14 @@ var MonthRangePicker = (0, import_react39.forwardRef)((inProps, ref) => {
6275
6347
  },
6276
6348
  [isAlphabeticDisplay, buttonRef]
6277
6349
  );
6278
- const handleCalendarToggle = (0, import_react39.useCallback)(
6350
+ const handleCalendarToggle = (0, import_react40.useCallback)(
6279
6351
  (event) => {
6280
6352
  setAnchorEl(anchorEl ? null : event.currentTarget);
6281
6353
  innerRef.current?.focus();
6282
6354
  },
6283
6355
  [anchorEl, setAnchorEl, innerRef]
6284
6356
  );
6285
- const handleCalendarChange = (0, import_react39.useCallback)(
6357
+ const handleCalendarChange = (0, import_react40.useCallback)(
6286
6358
  ([date1, date2]) => {
6287
6359
  if (!date1 || !date2) return;
6288
6360
  const formattedValue = formatValueString3([date1, date2], format);
@@ -6292,7 +6364,7 @@ var MonthRangePicker = (0, import_react39.forwardRef)((inProps, ref) => {
6292
6364
  },
6293
6365
  [setValue, setAnchorEl, format, displayFormat, locale]
6294
6366
  );
6295
- return /* @__PURE__ */ import_react39.default.createElement(MonthRangePickerRoot, null, /* @__PURE__ */ import_react39.default.createElement(import_base5.FocusTrap, { open: true }, /* @__PURE__ */ import_react39.default.createElement(import_react39.default.Fragment, null, /* @__PURE__ */ import_react39.default.createElement(
6367
+ return /* @__PURE__ */ import_react40.default.createElement(MonthRangePickerRoot, null, /* @__PURE__ */ import_react40.default.createElement(import_base5.FocusTrap, { open: true }, /* @__PURE__ */ import_react40.default.createElement(import_react40.default.Fragment, null, /* @__PURE__ */ import_react40.default.createElement(
6296
6368
  Input_default,
6297
6369
  {
6298
6370
  ...innerProps,
@@ -6322,7 +6394,7 @@ var MonthRangePicker = (0, import_react39.forwardRef)((inProps, ref) => {
6322
6394
  // NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
6323
6395
  fontFamily: "monospace"
6324
6396
  },
6325
- endDecorator: /* @__PURE__ */ import_react39.default.createElement(
6397
+ endDecorator: /* @__PURE__ */ import_react40.default.createElement(
6326
6398
  IconButton_default,
6327
6399
  {
6328
6400
  ref: buttonRef,
@@ -6333,12 +6405,12 @@ var MonthRangePicker = (0, import_react39.forwardRef)((inProps, ref) => {
6333
6405
  "aria-haspopup": "dialog",
6334
6406
  "aria-expanded": open
6335
6407
  },
6336
- /* @__PURE__ */ import_react39.default.createElement(import_CalendarToday3.default, null)
6408
+ /* @__PURE__ */ import_react40.default.createElement(import_CalendarToday3.default, null)
6337
6409
  ),
6338
6410
  label,
6339
6411
  helperText
6340
6412
  }
6341
- ), open && /* @__PURE__ */ import_react39.default.createElement(import_base5.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react39.default.createElement(
6413
+ ), open && /* @__PURE__ */ import_react40.default.createElement(import_base5.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react40.default.createElement(
6342
6414
  StyledPopper3,
6343
6415
  {
6344
6416
  id: "month-range-picker-popper",
@@ -6357,7 +6429,7 @@ var MonthRangePicker = (0, import_react39.forwardRef)((inProps, ref) => {
6357
6429
  "aria-label": "Calendar Tooltip",
6358
6430
  "aria-expanded": open
6359
6431
  },
6360
- /* @__PURE__ */ import_react39.default.createElement(CalendarSheet3, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react39.default.createElement(
6432
+ /* @__PURE__ */ import_react40.default.createElement(CalendarSheet3, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react40.default.createElement(
6361
6433
  Calendar_default,
6362
6434
  {
6363
6435
  view: "month",
@@ -6371,14 +6443,14 @@ var MonthRangePicker = (0, import_react39.forwardRef)((inProps, ref) => {
6371
6443
  disablePast,
6372
6444
  locale
6373
6445
  }
6374
- ), /* @__PURE__ */ import_react39.default.createElement(
6446
+ ), /* @__PURE__ */ import_react40.default.createElement(
6375
6447
  DialogActions_default,
6376
6448
  {
6377
6449
  sx: {
6378
6450
  p: 1
6379
6451
  }
6380
6452
  },
6381
- /* @__PURE__ */ import_react39.default.createElement(
6453
+ /* @__PURE__ */ import_react40.default.createElement(
6382
6454
  Button_default,
6383
6455
  {
6384
6456
  size,
@@ -6413,11 +6485,11 @@ function MonthRange(props) {
6413
6485
  locale
6414
6486
  } = props;
6415
6487
  const [internalValue, setInternalValue] = useControlledState(value, null, onChange);
6416
- const pickerValue = (0, import_react40.useMemo)(
6488
+ const pickerValue = (0, import_react41.useMemo)(
6417
6489
  () => internalValue ? `${internalValue[0]} - ${internalValue[1]}` : "",
6418
6490
  [internalValue]
6419
6491
  );
6420
- const handleChange = (0, import_react40.useCallback)(
6492
+ const handleChange = (0, import_react41.useCallback)(
6421
6493
  (event) => {
6422
6494
  const rangeString = event.target.value;
6423
6495
  if (rangeString && rangeString.includes(" - ")) {
@@ -6434,7 +6506,7 @@ function MonthRange(props) {
6434
6506
  if (hidden) {
6435
6507
  return null;
6436
6508
  }
6437
- return /* @__PURE__ */ import_react40.default.createElement(import_joy51.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react40.default.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ import_react40.default.createElement(
6509
+ return /* @__PURE__ */ import_react41.default.createElement(import_joy51.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react41.default.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ import_react41.default.createElement(
6438
6510
  MonthRangePicker,
6439
6511
  {
6440
6512
  value: pickerValue,
@@ -6452,12 +6524,12 @@ function MonthRange(props) {
6452
6524
  MonthRange.displayName = "MonthRange";
6453
6525
 
6454
6526
  // src/components/FilterMenu/components/CurrencyInput.tsx
6455
- var import_react41 = __toESM(require("react"));
6527
+ var import_react42 = __toESM(require("react"));
6456
6528
  var import_joy52 = require("@mui/joy");
6457
6529
  function CurrencyInput3(props) {
6458
6530
  const { id, label, value, onChange, hidden, max, placeholder, useMinorUnit, currency = "USD" } = props;
6459
6531
  const [internalValue, setInternalValue] = useControlledState(value, value, onChange);
6460
- const handleCurrencyChange = (0, import_react41.useCallback)(
6532
+ const handleCurrencyChange = (0, import_react42.useCallback)(
6461
6533
  (event) => {
6462
6534
  const newValue = event.target.value ?? void 0;
6463
6535
  setInternalValue(newValue);
@@ -6467,7 +6539,7 @@ function CurrencyInput3(props) {
6467
6539
  if (hidden) {
6468
6540
  return null;
6469
6541
  }
6470
- return /* @__PURE__ */ import_react41.default.createElement(import_joy52.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react41.default.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ import_react41.default.createElement(
6542
+ return /* @__PURE__ */ import_react42.default.createElement(import_joy52.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react42.default.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ import_react42.default.createElement(
6471
6543
  CurrencyInput,
6472
6544
  {
6473
6545
  value: internalValue,
@@ -6483,14 +6555,14 @@ function CurrencyInput3(props) {
6483
6555
  CurrencyInput3.displayName = "CurrencyInput";
6484
6556
 
6485
6557
  // src/components/FilterMenu/components/CurrencyRange.tsx
6486
- var import_react42 = __toESM(require("react"));
6558
+ var import_react43 = __toESM(require("react"));
6487
6559
  var import_joy53 = require("@mui/joy");
6488
6560
  function CurrencyRange(props) {
6489
6561
  const { id, label, value, onChange, hidden, max, placeholder, useMinorUnit, currency = "USD" } = props;
6490
6562
  const [internalValue, setInternalValue] = useControlledState(value, null, onChange);
6491
6563
  const minValue = internalValue?.[0];
6492
6564
  const maxValue = internalValue?.[1];
6493
- const handleMinChange = (0, import_react42.useCallback)(
6565
+ const handleMinChange = (0, import_react43.useCallback)(
6494
6566
  (event) => {
6495
6567
  const newMinValue = event.target.value ?? void 0;
6496
6568
  const currentMaxValue = maxValue;
@@ -6504,7 +6576,7 @@ function CurrencyRange(props) {
6504
6576
  },
6505
6577
  [maxValue, setInternalValue]
6506
6578
  );
6507
- const handleMaxChange = (0, import_react42.useCallback)(
6579
+ const handleMaxChange = (0, import_react43.useCallback)(
6508
6580
  (event) => {
6509
6581
  const newMaxValue = event.target.value ?? void 0;
6510
6582
  const currentMinValue = minValue;
@@ -6521,7 +6593,7 @@ function CurrencyRange(props) {
6521
6593
  if (hidden) {
6522
6594
  return null;
6523
6595
  }
6524
- return /* @__PURE__ */ import_react42.default.createElement(import_joy53.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react42.default.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ import_react42.default.createElement(import_joy53.Stack, { direction: "row", spacing: 2, alignItems: "flex-end" }, /* @__PURE__ */ import_react42.default.createElement(
6596
+ return /* @__PURE__ */ import_react43.default.createElement(import_joy53.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react43.default.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ import_react43.default.createElement(import_joy53.Stack, { direction: "row", spacing: 2, alignItems: "flex-end" }, /* @__PURE__ */ import_react43.default.createElement(
6525
6597
  CurrencyInput,
6526
6598
  {
6527
6599
  label: "Minimum",
@@ -6534,7 +6606,7 @@ function CurrencyRange(props) {
6534
6606
  "aria-labelledby": label ? id : void 0,
6535
6607
  "aria-label": "Minimum amount"
6536
6608
  }
6537
- ), /* @__PURE__ */ import_react42.default.createElement(
6609
+ ), /* @__PURE__ */ import_react43.default.createElement(
6538
6610
  CurrencyInput,
6539
6611
  {
6540
6612
  label: "Maximum",
@@ -6552,20 +6624,20 @@ function CurrencyRange(props) {
6552
6624
  CurrencyRange.displayName = "CurrencyRange";
6553
6625
 
6554
6626
  // src/components/FilterMenu/components/PercentageInput.tsx
6555
- var import_react44 = __toESM(require("react"));
6627
+ var import_react45 = __toESM(require("react"));
6556
6628
  var import_joy55 = require("@mui/joy");
6557
6629
 
6558
6630
  // src/components/PercentageInput/PercentageInput.tsx
6559
- var import_react43 = __toESM(require("react"));
6631
+ var import_react44 = __toESM(require("react"));
6560
6632
  var import_react_number_format2 = require("react-number-format");
6561
6633
  var import_joy54 = require("@mui/joy");
6562
6634
  var padDecimal = (value, decimalScale) => {
6563
6635
  const [integer, decimal = ""] = `${value}`.split(".");
6564
6636
  return Number(`${integer}${decimal.padEnd(decimalScale, "0")}`);
6565
6637
  };
6566
- var TextMaskAdapter9 = import_react43.default.forwardRef(function TextMaskAdapter10(props, ref) {
6638
+ var TextMaskAdapter9 = import_react44.default.forwardRef(function TextMaskAdapter10(props, ref) {
6567
6639
  const { onChange, min, max, ...innerProps } = props;
6568
- return /* @__PURE__ */ import_react43.default.createElement(
6640
+ return /* @__PURE__ */ import_react44.default.createElement(
6569
6641
  import_react_number_format2.NumericFormat,
6570
6642
  {
6571
6643
  ...innerProps,
@@ -6590,7 +6662,7 @@ var PercentageInputRoot = (0, import_joy54.styled)(Input_default, {
6590
6662
  slot: "Root",
6591
6663
  overridesResolver: (props, styles) => styles.root
6592
6664
  })({});
6593
- var PercentageInput = import_react43.default.forwardRef(
6665
+ var PercentageInput = import_react44.default.forwardRef(
6594
6666
  function PercentageInput2(inProps, ref) {
6595
6667
  const props = (0, import_joy54.useThemeProps)({ props: inProps, name: "PercentageInput" });
6596
6668
  const {
@@ -6613,19 +6685,19 @@ var PercentageInput = import_react43.default.forwardRef(
6613
6685
  const [_value, setValue] = useControlledState(
6614
6686
  props.value,
6615
6687
  props.defaultValue ?? null,
6616
- (0, import_react43.useCallback)((value2) => onChange?.({ target: { name, value: value2 } }), [onChange, name])
6688
+ (0, import_react44.useCallback)((value2) => onChange?.({ target: { name, value: value2 } }), [onChange, name])
6617
6689
  );
6618
- const value = (0, import_react43.useMemo)(() => {
6690
+ const value = (0, import_react44.useMemo)(() => {
6619
6691
  if (_value && useMinorUnit) {
6620
6692
  return _value / Math.pow(10, maxDecimalScale);
6621
6693
  }
6622
6694
  return _value;
6623
6695
  }, [_value, useMinorUnit, maxDecimalScale]);
6624
- const internalError = (0, import_react43.useMemo)(
6696
+ const internalError = (0, import_react44.useMemo)(
6625
6697
  () => value != null && (max != null && value > max || min != null && value < min),
6626
6698
  [max, min, value]
6627
6699
  );
6628
- const handleChange = (0, import_react43.useCallback)(
6700
+ const handleChange = (0, import_react44.useCallback)(
6629
6701
  (event) => {
6630
6702
  if (event.target.value === "") {
6631
6703
  setValue(null);
@@ -6637,7 +6709,7 @@ var PercentageInput = import_react43.default.forwardRef(
6637
6709
  },
6638
6710
  [setValue, useMinorUnit, maxDecimalScale]
6639
6711
  );
6640
- return /* @__PURE__ */ import_react43.default.createElement(
6712
+ return /* @__PURE__ */ import_react44.default.createElement(
6641
6713
  PercentageInputRoot,
6642
6714
  {
6643
6715
  ...innerProps,
@@ -6684,7 +6756,7 @@ var PercentageInput3 = ({
6684
6756
  if (hidden) {
6685
6757
  return null;
6686
6758
  }
6687
- return /* @__PURE__ */ import_react44.default.createElement(import_joy55.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react44.default.createElement(import_joy55.Typography, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ import_react44.default.createElement(
6759
+ return /* @__PURE__ */ import_react45.default.createElement(import_joy55.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react45.default.createElement(import_joy55.Typography, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ import_react45.default.createElement(
6688
6760
  PercentageInput,
6689
6761
  {
6690
6762
  value: _value,
@@ -6699,7 +6771,7 @@ var PercentageInput3 = ({
6699
6771
  };
6700
6772
 
6701
6773
  // src/components/FilterMenu/components/PercentageRange.tsx
6702
- var import_react45 = __toESM(require("react"));
6774
+ var import_react46 = __toESM(require("react"));
6703
6775
  var import_joy56 = require("@mui/joy");
6704
6776
  function PercentageRange(props) {
6705
6777
  const { id, label, value, onChange, hidden, useMinorUnit, maxDecimalScale, min, max } = props;
@@ -6710,7 +6782,7 @@ function PercentageRange(props) {
6710
6782
  );
6711
6783
  const minValue = internalValue?.[0];
6712
6784
  const maxValue = internalValue?.[1];
6713
- const handleMinChange = (0, import_react45.useCallback)(
6785
+ const handleMinChange = (0, import_react46.useCallback)(
6714
6786
  (event) => {
6715
6787
  const newMinValue = event.target.value ?? void 0;
6716
6788
  const currentMaxValue = maxValue;
@@ -6722,7 +6794,7 @@ function PercentageRange(props) {
6722
6794
  },
6723
6795
  [maxValue, setInternalValue]
6724
6796
  );
6725
- const handleMaxChange = (0, import_react45.useCallback)(
6797
+ const handleMaxChange = (0, import_react46.useCallback)(
6726
6798
  (event) => {
6727
6799
  const newMaxValue = event.target.value ?? void 0;
6728
6800
  const currentMinValue = minValue;
@@ -6737,7 +6809,7 @@ function PercentageRange(props) {
6737
6809
  if (hidden) {
6738
6810
  return null;
6739
6811
  }
6740
- return /* @__PURE__ */ import_react45.default.createElement(import_joy56.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react45.default.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ import_react45.default.createElement(import_joy56.Stack, { direction: "row", spacing: 2, alignItems: "flex-end" }, /* @__PURE__ */ import_react45.default.createElement(
6812
+ return /* @__PURE__ */ import_react46.default.createElement(import_joy56.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react46.default.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ import_react46.default.createElement(import_joy56.Stack, { direction: "row", spacing: 2, alignItems: "flex-end" }, /* @__PURE__ */ import_react46.default.createElement(
6741
6813
  PercentageInput,
6742
6814
  {
6743
6815
  label: "Minimum",
@@ -6751,7 +6823,7 @@ function PercentageRange(props) {
6751
6823
  "aria-label": "Minimum percentage",
6752
6824
  placeholder: "0%"
6753
6825
  }
6754
- ), /* @__PURE__ */ import_react45.default.createElement(
6826
+ ), /* @__PURE__ */ import_react46.default.createElement(
6755
6827
  PercentageInput,
6756
6828
  {
6757
6829
  label: "Maximum",
@@ -6770,13 +6842,13 @@ function PercentageRange(props) {
6770
6842
  PercentageRange.displayName = "PercentageRange";
6771
6843
 
6772
6844
  // src/components/FilterMenu/components/Autocomplete.tsx
6773
- var import_react46 = __toESM(require("react"));
6845
+ var import_react47 = __toESM(require("react"));
6774
6846
  var import_joy57 = require("@mui/joy");
6775
6847
  function Autocomplete2(props) {
6776
6848
  const { id, label, value, onChange, options, multiple, hidden, placeholder } = props;
6777
6849
  const [internalValue, setInternalValue] = useControlledState(value, void 0, onChange);
6778
6850
  const autocompleteValue = typeof internalValue === "string" || typeof internalValue === "number" ? String(internalValue) : void 0;
6779
- const handleChange = (0, import_react46.useCallback)(
6851
+ const handleChange = (0, import_react47.useCallback)(
6780
6852
  (event) => {
6781
6853
  const val = event.target.value ?? void 0;
6782
6854
  if (val) {
@@ -6791,7 +6863,7 @@ function Autocomplete2(props) {
6791
6863
  if (hidden) {
6792
6864
  return null;
6793
6865
  }
6794
- return /* @__PURE__ */ import_react46.default.createElement(import_joy57.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react46.default.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ import_react46.default.createElement(
6866
+ return /* @__PURE__ */ import_react47.default.createElement(import_joy57.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react47.default.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ import_react47.default.createElement(
6795
6867
  Autocomplete,
6796
6868
  {
6797
6869
  value: autocompleteValue,
@@ -6826,13 +6898,13 @@ function FilterMenu(props) {
6826
6898
  void 0
6827
6899
  // onChange는 Apply 버튼에서만 호출
6828
6900
  );
6829
- const dropdownRegistry = (0, import_react47.useContext)(DropdownNestedRegistryContext);
6830
- (0, import_react47.useEffect)(() => {
6901
+ const dropdownRegistry = (0, import_react48.useContext)(DropdownNestedRegistryContext);
6902
+ (0, import_react48.useEffect)(() => {
6831
6903
  if (!dropdownRegistry) return void 0;
6832
6904
  dropdownRegistry.register();
6833
6905
  return () => dropdownRegistry.unregister();
6834
6906
  }, [dropdownRegistry]);
6835
- const handleFilterChange = (0, import_react47.useCallback)(
6907
+ const handleFilterChange = (0, import_react48.useCallback)(
6836
6908
  (filterId, value) => {
6837
6909
  setInternalValues((prev) => ({
6838
6910
  ...prev,
@@ -6841,17 +6913,17 @@ function FilterMenu(props) {
6841
6913
  },
6842
6914
  [setInternalValues]
6843
6915
  );
6844
- const handleApply = (0, import_react47.useCallback)(() => {
6916
+ const handleApply = (0, import_react48.useCallback)(() => {
6845
6917
  onChange?.(internalValues);
6846
6918
  onClose?.();
6847
6919
  }, [onChange, onClose, internalValues]);
6848
- const handleClear = (0, import_react47.useCallback)(() => {
6920
+ const handleClear = (0, import_react48.useCallback)(() => {
6849
6921
  const clearedValues = resetValues || {};
6850
6922
  setInternalValues(clearedValues);
6851
6923
  onChange?.(clearedValues);
6852
6924
  onClose?.();
6853
6925
  }, [resetValues, setInternalValues, onChange, onClose]);
6854
- return /* @__PURE__ */ import_react47.default.createElement(
6926
+ return /* @__PURE__ */ import_react48.default.createElement(
6855
6927
  ModalDialog,
6856
6928
  {
6857
6929
  sx: {
@@ -6861,9 +6933,9 @@ function FilterMenu(props) {
6861
6933
  top: "initial"
6862
6934
  }
6863
6935
  },
6864
- /* @__PURE__ */ import_react47.default.createElement(DialogContent, { sx: { paddingTop: 5 } }, /* @__PURE__ */ import_react47.default.createElement(import_joy58.Stack, { spacing: 6 }, filters?.map((filter) => {
6936
+ /* @__PURE__ */ import_react48.default.createElement(DialogContent, { sx: { paddingTop: 5 } }, /* @__PURE__ */ import_react48.default.createElement(import_joy58.Stack, { spacing: 6 }, filters?.map((filter) => {
6865
6937
  const FilterComponent = componentMap[filter.type];
6866
- return FilterComponent ? /* @__PURE__ */ import_react47.default.createElement(
6938
+ return FilterComponent ? /* @__PURE__ */ import_react48.default.createElement(
6867
6939
  FilterComponent,
6868
6940
  {
6869
6941
  key: filter.id,
@@ -6875,13 +6947,13 @@ function FilterMenu(props) {
6875
6947
  }
6876
6948
  ) : null;
6877
6949
  }))),
6878
- /* @__PURE__ */ import_react47.default.createElement(DialogActions, { sx: { justifyContent: "space-between" } }, useClear && filters?.length === 1 && /* @__PURE__ */ import_react47.default.createElement(import_joy58.Button, { variant: "plain", color: "neutral", onClick: handleClear }, "Clear"), useReset && !useClear && /* @__PURE__ */ import_react47.default.createElement(import_joy58.Button, { variant: "plain", color: "neutral", onClick: handleClear }, "Reset"), /* @__PURE__ */ import_react47.default.createElement(import_joy58.Button, { variant: "solid", color: "primary", onClick: handleApply }, "Apply"))
6950
+ /* @__PURE__ */ import_react48.default.createElement(DialogActions, { sx: { justifyContent: "space-between" } }, useClear && filters?.length === 1 && /* @__PURE__ */ import_react48.default.createElement(import_joy58.Button, { variant: "plain", color: "neutral", onClick: handleClear }, "Clear"), useReset && !useClear && /* @__PURE__ */ import_react48.default.createElement(import_joy58.Button, { variant: "plain", color: "neutral", onClick: handleClear }, "Reset"), /* @__PURE__ */ import_react48.default.createElement(import_joy58.Button, { variant: "solid", color: "primary", onClick: handleApply }, "Apply"))
6879
6951
  );
6880
6952
  }
6881
6953
  FilterMenu.displayName = "FilterMenu";
6882
6954
 
6883
6955
  // src/components/Uploader/Uploader.tsx
6884
- var import_react48 = __toESM(require("react"));
6956
+ var import_react49 = __toESM(require("react"));
6885
6957
  var import_joy59 = require("@mui/joy");
6886
6958
  var import_CloudUploadRounded = __toESM(require("@mui/icons-material/CloudUploadRounded"));
6887
6959
  var import_UploadFileRounded = __toESM(require("@mui/icons-material/UploadFileRounded"));
@@ -6944,7 +7016,7 @@ var getFileSize = (n) => {
6944
7016
  };
6945
7017
  var Preview = (props) => {
6946
7018
  const { files, uploaded, onDelete } = props;
6947
- return /* @__PURE__ */ import_react48.default.createElement(PreviewRoot, { gap: 1 }, [...uploaded, ...files].map((file) => /* @__PURE__ */ import_react48.default.createElement(UploadCard, { key: file.name, size: "sm", color: "neutral" }, /* @__PURE__ */ import_react48.default.createElement(Stack_default, { direction: "row", alignItems: "center", gap: 2 }, /* @__PURE__ */ import_react48.default.createElement(UploadFileIcon, null), /* @__PURE__ */ import_react48.default.createElement(Stack_default, { flex: "1", sx: { overflow: "hidden" } }, /* @__PURE__ */ import_react48.default.createElement(
7019
+ return /* @__PURE__ */ import_react49.default.createElement(PreviewRoot, { gap: 1 }, [...uploaded, ...files].map((file) => /* @__PURE__ */ import_react49.default.createElement(UploadCard, { key: file.name, size: "sm", color: "neutral" }, /* @__PURE__ */ import_react49.default.createElement(Stack_default, { direction: "row", alignItems: "center", gap: 2 }, /* @__PURE__ */ import_react49.default.createElement(UploadFileIcon, null), /* @__PURE__ */ import_react49.default.createElement(Stack_default, { flex: "1", sx: { overflow: "hidden" } }, /* @__PURE__ */ import_react49.default.createElement(
6948
7020
  Typography_default,
6949
7021
  {
6950
7022
  level: "body-sm",
@@ -6956,7 +7028,7 @@ var Preview = (props) => {
6956
7028
  }
6957
7029
  },
6958
7030
  file.name
6959
- ), !!file.size && /* @__PURE__ */ import_react48.default.createElement(Typography_default, { level: "body-xs", fontWeight: "300", lineHeight: "1.33", textColor: "text.tertiary" }, getFileSize(file.size))), /* @__PURE__ */ import_react48.default.createElement(IconButton_default, { onClick: () => onDelete?.(file) }, /* @__PURE__ */ import_react48.default.createElement(ClearIcon2, null))))));
7031
+ ), !!file.size && /* @__PURE__ */ import_react49.default.createElement(Typography_default, { level: "body-xs", fontWeight: "300", lineHeight: "1.33", textColor: "text.tertiary" }, getFileSize(file.size))), /* @__PURE__ */ import_react49.default.createElement(IconButton_default, { onClick: () => onDelete?.(file) }, /* @__PURE__ */ import_react49.default.createElement(ClearIcon2, null))))));
6960
7032
  };
6961
7033
  var UploaderRoot = (0, import_joy59.styled)(Stack_default, {
6962
7034
  name: "Uploader",
@@ -6999,7 +7071,7 @@ var UploaderIcon = (0, import_joy59.styled)(import_CloudUploadRounded.default, {
6999
7071
  }
7000
7072
  })
7001
7073
  );
7002
- var Uploader = import_react48.default.memo((props) => {
7074
+ var Uploader = import_react49.default.memo((props) => {
7003
7075
  const {
7004
7076
  accept,
7005
7077
  minCount,
@@ -7015,14 +7087,14 @@ var Uploader = import_react48.default.memo((props) => {
7015
7087
  error: errorProp,
7016
7088
  helperText: helperTextProp
7017
7089
  } = props;
7018
- const dropZoneRef = (0, import_react48.useRef)(null);
7019
- const inputRef = (0, import_react48.useRef)(null);
7020
- const [errorText, setErrorText] = (0, import_react48.useState)();
7021
- const [files, setFiles] = (0, import_react48.useState)([]);
7022
- const [uploaded, setUploaded] = (0, import_react48.useState)(props.uploaded || []);
7023
- const [previewState, setPreviewState] = (0, import_react48.useState)("idle");
7024
- const accepts = (0, import_react48.useMemo)(() => accept.split(",").map((accept2) => accept2.trim()), [accept]);
7025
- const parsedAccepts = (0, import_react48.useMemo)(
7090
+ const dropZoneRef = (0, import_react49.useRef)(null);
7091
+ const inputRef = (0, import_react49.useRef)(null);
7092
+ const [errorText, setErrorText] = (0, import_react49.useState)();
7093
+ const [files, setFiles] = (0, import_react49.useState)([]);
7094
+ const [uploaded, setUploaded] = (0, import_react49.useState)(props.uploaded || []);
7095
+ const [previewState, setPreviewState] = (0, import_react49.useState)("idle");
7096
+ const accepts = (0, import_react49.useMemo)(() => accept.split(",").map((accept2) => accept2.trim()), [accept]);
7097
+ const parsedAccepts = (0, import_react49.useMemo)(
7026
7098
  () => accepts.flatMap((type) => {
7027
7099
  if (["image/*", "video/*", "audio/*"].includes(type)) {
7028
7100
  return ALL_EXTENSIONS_BY_TYPE[type];
@@ -7031,7 +7103,7 @@ var Uploader = import_react48.default.memo((props) => {
7031
7103
  }),
7032
7104
  [accepts]
7033
7105
  );
7034
- const helperText = (0, import_react48.useMemo)(() => {
7106
+ const helperText = (0, import_react49.useMemo)(() => {
7035
7107
  if (helperTextProp) {
7036
7108
  return helperTextProp;
7037
7109
  }
@@ -7061,12 +7133,12 @@ var Uploader = import_react48.default.memo((props) => {
7061
7133
  }
7062
7134
  return helperTexts.join(", ");
7063
7135
  }, [accepts, maxFileTotalSize, maxCount, helperTextProp]);
7064
- const error = (0, import_react48.useMemo)(() => !!errorText || errorProp, [errorProp, errorText]);
7065
- const showDropZone = (0, import_react48.useMemo)(
7136
+ const error = (0, import_react49.useMemo)(() => !!errorText || errorProp, [errorProp, errorText]);
7137
+ const showDropZone = (0, import_react49.useMemo)(
7066
7138
  () => !maxCount || maxCount && [...uploaded, ...files].length !== maxCount,
7067
7139
  [files, maxCount, uploaded]
7068
7140
  );
7069
- const addFiles = (0, import_react48.useCallback)(
7141
+ const addFiles = (0, import_react49.useCallback)(
7070
7142
  (uploads) => {
7071
7143
  try {
7072
7144
  const types = parsedAccepts.map((type) => type.replace(".", "")) || [];
@@ -7111,7 +7183,7 @@ var Uploader = import_react48.default.memo((props) => {
7111
7183
  },
7112
7184
  [files, uploaded, maxCount, parsedAccepts, maxFileSize, maxFileTotalSize, name, onChange]
7113
7185
  );
7114
- (0, import_react48.useEffect)(() => {
7186
+ (0, import_react49.useEffect)(() => {
7115
7187
  if (!dropZoneRef.current || disabled) {
7116
7188
  return;
7117
7189
  }
@@ -7139,7 +7211,7 @@ var Uploader = import_react48.default.memo((props) => {
7139
7211
  })
7140
7212
  );
7141
7213
  }, [disabled, addFiles]);
7142
- (0, import_react48.useEffect)(() => {
7214
+ (0, import_react49.useEffect)(() => {
7143
7215
  if (inputRef.current && minCount) {
7144
7216
  if (files.length < minCount) {
7145
7217
  inputRef.current.setCustomValidity(`At least ${minCount} files are required.`);
@@ -7148,14 +7220,14 @@ var Uploader = import_react48.default.memo((props) => {
7148
7220
  }
7149
7221
  }
7150
7222
  }, [inputRef, files, minCount]);
7151
- const handleFileChanged = (0, import_react48.useCallback)(
7223
+ const handleFileChanged = (0, import_react49.useCallback)(
7152
7224
  (event) => {
7153
7225
  const files2 = Array.from(event.target.files || []);
7154
7226
  addFiles(files2);
7155
7227
  },
7156
7228
  [addFiles]
7157
7229
  );
7158
- const handleDeleteFile = (0, import_react48.useCallback)(
7230
+ const handleDeleteFile = (0, import_react49.useCallback)(
7159
7231
  (deletedFile) => {
7160
7232
  if (deletedFile instanceof File) {
7161
7233
  setFiles((current) => {
@@ -7175,10 +7247,10 @@ var Uploader = import_react48.default.memo((props) => {
7175
7247
  },
7176
7248
  [name, onChange, onDelete]
7177
7249
  );
7178
- const handleUploaderButtonClick = (0, import_react48.useCallback)(() => {
7250
+ const handleUploaderButtonClick = (0, import_react49.useCallback)(() => {
7179
7251
  inputRef.current?.click();
7180
7252
  }, []);
7181
- const uploader = /* @__PURE__ */ import_react48.default.createElement(
7253
+ const uploader = /* @__PURE__ */ import_react49.default.createElement(
7182
7254
  FileDropZone,
7183
7255
  {
7184
7256
  state: previewState,
@@ -7187,8 +7259,8 @@ var Uploader = import_react48.default.memo((props) => {
7187
7259
  ref: dropZoneRef,
7188
7260
  onClick: handleUploaderButtonClick
7189
7261
  },
7190
- /* @__PURE__ */ import_react48.default.createElement(Stack_default, { alignItems: "center", gap: 1 }, /* @__PURE__ */ import_react48.default.createElement(UploaderIcon, { state: previewState, error: !!(error || errorText), disabled })),
7191
- /* @__PURE__ */ import_react48.default.createElement(
7262
+ /* @__PURE__ */ import_react49.default.createElement(Stack_default, { alignItems: "center", gap: 1 }, /* @__PURE__ */ import_react49.default.createElement(UploaderIcon, { state: previewState, error: !!(error || errorText), disabled })),
7263
+ /* @__PURE__ */ import_react49.default.createElement(
7192
7264
  VisuallyHiddenInput,
7193
7265
  {
7194
7266
  disabled,
@@ -7211,7 +7283,7 @@ var Uploader = import_react48.default.memo((props) => {
7211
7283
  }
7212
7284
  )
7213
7285
  );
7214
- return /* @__PURE__ */ import_react48.default.createElement(UploaderRoot, null, showDropZone && /* @__PURE__ */ import_react48.default.createElement(FormControl_default, { size, error: !!(error || errorText), disabled, required: !!minCount }, label && /* @__PURE__ */ import_react48.default.createElement(FormLabel_default, null, label), uploader, /* @__PURE__ */ import_react48.default.createElement(FormHelperText_default, null, /* @__PURE__ */ import_react48.default.createElement(Stack_default, null, errorText && /* @__PURE__ */ import_react48.default.createElement("div", null, errorText), /* @__PURE__ */ import_react48.default.createElement("div", null, helperText)))), [...uploaded, ...files].length > 0 && /* @__PURE__ */ import_react48.default.createElement(Preview, { files, uploaded, onDelete: handleDeleteFile }));
7286
+ return /* @__PURE__ */ import_react49.default.createElement(UploaderRoot, null, showDropZone && /* @__PURE__ */ import_react49.default.createElement(FormControl_default, { size, error: !!(error || errorText), disabled, required: !!minCount }, label && /* @__PURE__ */ import_react49.default.createElement(FormLabel_default, null, label), uploader, /* @__PURE__ */ import_react49.default.createElement(FormHelperText_default, null, /* @__PURE__ */ import_react49.default.createElement(Stack_default, null, errorText && /* @__PURE__ */ import_react49.default.createElement("div", null, errorText), /* @__PURE__ */ import_react49.default.createElement("div", null, helperText)))), [...uploaded, ...files].length > 0 && /* @__PURE__ */ import_react49.default.createElement(Preview, { files, uploaded, onDelete: handleDeleteFile }));
7215
7287
  });
7216
7288
  Uploader.displayName = "Uploader";
7217
7289
 
@@ -7219,9 +7291,12 @@ Uploader.displayName = "Uploader";
7219
7291
  var import_joy60 = require("@mui/joy");
7220
7292
 
7221
7293
  // src/components/IconMenuButton/IconMenuButton.tsx
7222
- var import_react49 = __toESM(require("react"));
7294
+ var import_react50 = __toESM(require("react"));
7223
7295
  var import_joy61 = require("@mui/joy");
7224
- function IconMenuButton(props) {
7296
+ var MenuButtonRootSlot = import_react50.default.forwardRef(function MenuButtonRootSlot2({ as, ownerState: _ownerState, ...rest }, ref) {
7297
+ return /* @__PURE__ */ import_react50.default.createElement(import_joy61.IconButton, { ...rest, component: as ?? "button", ref });
7298
+ });
7299
+ function IconMenuButtonInner(props, ref) {
7225
7300
  const {
7226
7301
  size,
7227
7302
  icon,
@@ -7232,8 +7307,10 @@ function IconMenuButton(props) {
7232
7307
  variant = "plain",
7233
7308
  placement = "bottom"
7234
7309
  } = props;
7310
+ const { ref: buttonComponentRef, ...buttonComponentProps } = props.buttonComponentProps ?? {};
7311
+ const mergedButtonRef = useMergedRef(buttonComponentRef, ref);
7235
7312
  if (!items.length) {
7236
- return /* @__PURE__ */ import_react49.default.createElement(
7313
+ return /* @__PURE__ */ import_react50.default.createElement(
7237
7314
  import_joy61.IconButton,
7238
7315
  {
7239
7316
  component: props.buttonComponent ?? "button",
@@ -7242,41 +7319,46 @@ function IconMenuButton(props) {
7242
7319
  color,
7243
7320
  disabled,
7244
7321
  loading,
7245
- ...props.buttonComponentProps ?? {}
7322
+ ...buttonComponentProps,
7323
+ ref: mergedButtonRef
7246
7324
  },
7247
7325
  icon
7248
7326
  );
7249
7327
  }
7250
- return /* @__PURE__ */ import_react49.default.createElement(Dropdown_default, null, /* @__PURE__ */ import_react49.default.createElement(
7328
+ return /* @__PURE__ */ import_react50.default.createElement(Dropdown_default, null, /* @__PURE__ */ import_react50.default.createElement(
7251
7329
  import_joy61.MenuButton,
7252
7330
  {
7253
- slots: { root: import_joy61.IconButton },
7331
+ slots: { root: MenuButtonRootSlot },
7254
7332
  slotProps: {
7255
7333
  root: {
7256
- component: props.buttonComponent ?? "button",
7334
+ // 기본값 'button'은 MenuButtonRootSlot 한 곳에만 둔다.
7335
+ component: props.buttonComponent,
7257
7336
  size,
7258
7337
  variant,
7259
7338
  color,
7260
7339
  disabled,
7261
7340
  loading,
7262
- ...props.buttonComponentProps ?? {}
7341
+ ...buttonComponentProps,
7342
+ // Joy의 useSlot이 내부 ref와 이 ref를 합쳐준다. 위 no-items 분기와 같은 경로로 ref를 넘긴다.
7343
+ ref: mergedButtonRef
7263
7344
  }
7264
7345
  }
7265
7346
  },
7266
7347
  icon
7267
- ), /* @__PURE__ */ import_react49.default.createElement(Menu, { placement, size }, items.map((i) => /* @__PURE__ */ import_react49.default.createElement(MenuItem, { key: i.text, component: i.component, ...i.componentProps ?? {} }, i.text))));
7348
+ ), /* @__PURE__ */ import_react50.default.createElement(Menu, { placement, size }, items.map((i) => /* @__PURE__ */ import_react50.default.createElement(MenuItem, { key: i.text, component: i.component, ...i.componentProps ?? {} }, i.text))));
7268
7349
  }
7350
+ var IconMenuButton = import_react50.default.forwardRef(IconMenuButtonInner);
7269
7351
  IconMenuButton.displayName = "IconMenuButton";
7270
7352
 
7271
7353
  // src/components/Markdown/Markdown.tsx
7272
- var import_react50 = __toESM(require("react"));
7354
+ var import_react51 = __toESM(require("react"));
7273
7355
  var import_joy62 = require("@mui/joy");
7274
7356
  var import_joy63 = require("@mui/joy");
7275
7357
  var import_remark_gfm = __toESM(require("remark-gfm"));
7276
- var LazyReactMarkdown = (0, import_react50.lazy)(() => import("react-markdown"));
7358
+ var LazyReactMarkdown = (0, import_react51.lazy)(() => import("react-markdown"));
7277
7359
  var Markdown = (props) => {
7278
- const [rehypeAccent2, setRehypeAccent] = (0, import_react50.useState)(null);
7279
- (0, import_react50.useEffect)(() => {
7360
+ const [rehypeAccent2, setRehypeAccent] = (0, import_react51.useState)(null);
7361
+ (0, import_react51.useEffect)(() => {
7280
7362
  const loadRehypeAccent = async () => {
7281
7363
  const module2 = await Promise.resolve().then(() => (init_rehype_accent(), rehype_accent_exports));
7282
7364
  setRehypeAccent(() => module2.rehypeAccent);
@@ -7298,8 +7380,8 @@ var Markdown = (props) => {
7298
7380
  if (!rehypeAccent2) {
7299
7381
  return null;
7300
7382
  }
7301
- return /* @__PURE__ */ import_react50.default.createElement(Typography, { component: "div", color, textColor, level: defaultLevel, ...innerProps }, /* @__PURE__ */ import_react50.default.createElement(
7302
- import_react50.Suspense,
7383
+ return /* @__PURE__ */ import_react51.default.createElement(Typography, { component: "div", color, textColor, level: defaultLevel, ...innerProps }, /* @__PURE__ */ import_react51.default.createElement(
7384
+ import_react51.Suspense,
7303
7385
  {
7304
7386
  fallback: (
7305
7387
  // While in the fallback state, prevent browser auto-translation (e.g. Chrome/Google Translate)
@@ -7307,10 +7389,10 @@ var Markdown = (props) => {
7307
7389
  // swaps the fallback for the real content via insertBefore; if the browser has mutated the DOM
7308
7390
  // in the meantime, the reference node's parent changes and React throws a DOMException
7309
7391
  // ("Failed to execute 'insertBefore' on 'Node'"), crashing the subtree. (cf. facebook/react#11538)
7310
- fallback || /* @__PURE__ */ import_react50.default.createElement(Typography, { translate: "no", className: "notranslate" }, /* @__PURE__ */ import_react50.default.createElement(import_joy62.Skeleton, null, content || ""))
7392
+ fallback || /* @__PURE__ */ import_react51.default.createElement(Typography, { translate: "no", className: "notranslate" }, /* @__PURE__ */ import_react51.default.createElement(import_joy62.Skeleton, null, content || ""))
7311
7393
  )
7312
7394
  },
7313
- /* @__PURE__ */ import_react50.default.createElement(
7395
+ /* @__PURE__ */ import_react51.default.createElement(
7314
7396
  LazyReactMarkdown,
7315
7397
  {
7316
7398
  ...markdownOptions,
@@ -7318,17 +7400,17 @@ var Markdown = (props) => {
7318
7400
  rehypePlugins: [[rehypeAccent2, { accentColor }]],
7319
7401
  remarkPlugins: [import_remark_gfm.default],
7320
7402
  components: {
7321
- a: ({ children, href }) => /* @__PURE__ */ import_react50.default.createElement(import_joy63.Link, { href, target: defaultLinkAction }, children),
7322
- hr: () => /* @__PURE__ */ import_react50.default.createElement(Divider, { sx: { display: "block" } }),
7323
- b: ({ children }) => /* @__PURE__ */ import_react50.default.createElement(Typography, { component: "strong", fontWeight: boldFontWeight || "lg" }, children),
7324
- strong: ({ children }) => /* @__PURE__ */ import_react50.default.createElement(Typography, { component: "strong", fontWeight: boldFontWeight || "lg" }, children),
7403
+ a: ({ children, href }) => /* @__PURE__ */ import_react51.default.createElement(import_joy63.Link, { href, target: defaultLinkAction }, children),
7404
+ hr: () => /* @__PURE__ */ import_react51.default.createElement(Divider, { sx: { display: "block" } }),
7405
+ b: ({ children }) => /* @__PURE__ */ import_react51.default.createElement(Typography, { component: "strong", fontWeight: boldFontWeight || "lg" }, children),
7406
+ strong: ({ children }) => /* @__PURE__ */ import_react51.default.createElement(Typography, { component: "strong", fontWeight: boldFontWeight || "lg" }, children),
7325
7407
  // Table components
7326
- table: ({ children }) => /* @__PURE__ */ import_react50.default.createElement(Sheet, { variant: "outlined", sx: { display: "block", borderRadius: "sm", overflow: "auto" } }, /* @__PURE__ */ import_react50.default.createElement(Table, { size: "sm" }, children)),
7408
+ table: ({ children }) => /* @__PURE__ */ import_react51.default.createElement(Sheet, { variant: "outlined", sx: { display: "block", borderRadius: "sm", overflow: "auto" } }, /* @__PURE__ */ import_react51.default.createElement(Table, { size: "sm" }, children)),
7327
7409
  // Code components
7328
7410
  code: ({ children, className }) => {
7329
7411
  const isBlock = className?.startsWith("language-");
7330
7412
  if (isBlock) {
7331
- return /* @__PURE__ */ import_react50.default.createElement(
7413
+ return /* @__PURE__ */ import_react51.default.createElement(
7332
7414
  Typography,
7333
7415
  {
7334
7416
  component: "code",
@@ -7342,7 +7424,7 @@ var Markdown = (props) => {
7342
7424
  children
7343
7425
  );
7344
7426
  }
7345
- return /* @__PURE__ */ import_react50.default.createElement(
7427
+ return /* @__PURE__ */ import_react51.default.createElement(
7346
7428
  Typography,
7347
7429
  {
7348
7430
  component: "code",
@@ -7357,7 +7439,7 @@ var Markdown = (props) => {
7357
7439
  children
7358
7440
  );
7359
7441
  },
7360
- pre: ({ children }) => /* @__PURE__ */ import_react50.default.createElement(
7442
+ pre: ({ children }) => /* @__PURE__ */ import_react51.default.createElement(
7361
7443
  Sheet,
7362
7444
  {
7363
7445
  variant: "soft",
@@ -7375,12 +7457,12 @@ var Markdown = (props) => {
7375
7457
  // Task list checkbox
7376
7458
  input: ({ checked, type }) => {
7377
7459
  if (type === "checkbox") {
7378
- return /* @__PURE__ */ import_react50.default.createElement(Checkbox, { checked, disabled: true, size: "sm", sx: { mr: 1 } });
7460
+ return /* @__PURE__ */ import_react51.default.createElement(Checkbox, { checked, disabled: true, size: "sm", sx: { mr: 1 } });
7379
7461
  }
7380
- return /* @__PURE__ */ import_react50.default.createElement("input", { checked, type });
7462
+ return /* @__PURE__ */ import_react51.default.createElement("input", { checked, type });
7381
7463
  },
7382
7464
  // Blockquote
7383
- blockquote: ({ children }) => /* @__PURE__ */ import_react50.default.createElement(
7465
+ blockquote: ({ children }) => /* @__PURE__ */ import_react51.default.createElement(
7384
7466
  Sheet,
7385
7467
  {
7386
7468
  variant: "soft",
@@ -7389,12 +7471,12 @@ var Markdown = (props) => {
7389
7471
  children
7390
7472
  ),
7391
7473
  // Image
7392
- img: ({ src, alt }) => /* @__PURE__ */ import_react50.default.createElement("img", { src, alt, style: { maxWidth: "100%", borderRadius: "4px" } }),
7474
+ img: ({ src, alt }) => /* @__PURE__ */ import_react51.default.createElement("img", { src, alt, style: { maxWidth: "100%", borderRadius: "4px" } }),
7393
7475
  // Text style components
7394
- em: ({ children }) => /* @__PURE__ */ import_react50.default.createElement(Typography, { component: "em", sx: { fontStyle: "italic" } }, children),
7395
- del: ({ children }) => /* @__PURE__ */ import_react50.default.createElement(Typography, { component: "del", sx: { textDecoration: "line-through" } }, children),
7476
+ em: ({ children }) => /* @__PURE__ */ import_react51.default.createElement(Typography, { component: "em", sx: { fontStyle: "italic" } }, children),
7477
+ del: ({ children }) => /* @__PURE__ */ import_react51.default.createElement(Typography, { component: "del", sx: { textDecoration: "line-through" } }, children),
7396
7478
  // Span for accent color (from rehype-accent plugin)
7397
- span: ({ children, node }) => /* @__PURE__ */ import_react50.default.createElement(Typography, { component: "span", textColor: node?.properties?.textColor }, children),
7479
+ span: ({ children, node }) => /* @__PURE__ */ import_react51.default.createElement(Typography, { component: "span", textColor: node?.properties?.textColor }, children),
7398
7480
  ...markdownOptions?.components
7399
7481
  }
7400
7482
  }
@@ -7404,7 +7486,7 @@ var Markdown = (props) => {
7404
7486
  Markdown.displayName = "Markdown";
7405
7487
 
7406
7488
  // src/components/MenuButton/MenuButton.tsx
7407
- var import_react51 = __toESM(require("react"));
7489
+ var import_react52 = __toESM(require("react"));
7408
7490
  var import_joy64 = require("@mui/joy");
7409
7491
  var import_ExpandMore = __toESM(require("@mui/icons-material/ExpandMore"));
7410
7492
  function MenuButton2(props) {
@@ -7422,7 +7504,7 @@ function MenuButton2(props) {
7422
7504
  placement = "bottom"
7423
7505
  } = props;
7424
7506
  if (!items.length) {
7425
- return /* @__PURE__ */ import_react51.default.createElement(
7507
+ return /* @__PURE__ */ import_react52.default.createElement(
7426
7508
  import_joy64.Button,
7427
7509
  {
7428
7510
  component: props.buttonComponent ?? "button",
@@ -7433,12 +7515,12 @@ function MenuButton2(props) {
7433
7515
  loading,
7434
7516
  startDecorator,
7435
7517
  ...props.buttonComponentProps ?? {},
7436
- endDecorator: showIcon ? /* @__PURE__ */ import_react51.default.createElement(import_react51.default.Fragment, null, endDecorator, /* @__PURE__ */ import_react51.default.createElement(import_ExpandMore.default, null)) : /* @__PURE__ */ import_react51.default.createElement(import_react51.default.Fragment, null, endDecorator)
7518
+ endDecorator: showIcon ? /* @__PURE__ */ import_react52.default.createElement(import_react52.default.Fragment, null, endDecorator, /* @__PURE__ */ import_react52.default.createElement(import_ExpandMore.default, null)) : /* @__PURE__ */ import_react52.default.createElement(import_react52.default.Fragment, null, endDecorator)
7437
7519
  },
7438
7520
  buttonText
7439
7521
  );
7440
7522
  }
7441
- return /* @__PURE__ */ import_react51.default.createElement(Dropdown_default, null, /* @__PURE__ */ import_react51.default.createElement(
7523
+ return /* @__PURE__ */ import_react52.default.createElement(Dropdown_default, null, /* @__PURE__ */ import_react52.default.createElement(
7442
7524
  import_joy64.MenuButton,
7443
7525
  {
7444
7526
  component: props.buttonComponent ?? "button",
@@ -7449,15 +7531,15 @@ function MenuButton2(props) {
7449
7531
  loading,
7450
7532
  startDecorator,
7451
7533
  ...props.buttonComponentProps ?? {},
7452
- endDecorator: showIcon ? /* @__PURE__ */ import_react51.default.createElement(import_react51.default.Fragment, null, endDecorator, /* @__PURE__ */ import_react51.default.createElement(import_ExpandMore.default, null)) : /* @__PURE__ */ import_react51.default.createElement(import_react51.default.Fragment, null, endDecorator)
7534
+ endDecorator: showIcon ? /* @__PURE__ */ import_react52.default.createElement(import_react52.default.Fragment, null, endDecorator, /* @__PURE__ */ import_react52.default.createElement(import_ExpandMore.default, null)) : /* @__PURE__ */ import_react52.default.createElement(import_react52.default.Fragment, null, endDecorator)
7453
7535
  },
7454
7536
  buttonText
7455
- ), /* @__PURE__ */ import_react51.default.createElement(Menu, { placement, size }, items.map((i) => /* @__PURE__ */ import_react51.default.createElement(MenuItem, { key: i.text, component: i.component, ...i.componentProps ?? {} }, i.text))));
7537
+ ), /* @__PURE__ */ import_react52.default.createElement(Menu, { placement, size }, items.map((i) => /* @__PURE__ */ import_react52.default.createElement(MenuItem, { key: i.text, component: i.component, ...i.componentProps ?? {} }, i.text))));
7456
7538
  }
7457
7539
  MenuButton2.displayName = "MenuButton";
7458
7540
 
7459
7541
  // src/components/MonthPicker/MonthPicker.tsx
7460
- var import_react52 = __toESM(require("react"));
7542
+ var import_react53 = __toESM(require("react"));
7461
7543
  var import_CalendarToday4 = __toESM(require("@mui/icons-material/CalendarToday"));
7462
7544
  var import_joy65 = require("@mui/joy");
7463
7545
  var import_base6 = require("@mui/base");
@@ -7513,7 +7595,7 @@ function parseDate4(dateString, format) {
7513
7595
  const result = new Date(year, month, day);
7514
7596
  return result;
7515
7597
  }
7516
- var MonthPicker = (0, import_react52.forwardRef)((inProps, ref) => {
7598
+ var MonthPicker = (0, import_react53.forwardRef)((inProps, ref) => {
7517
7599
  const props = (0, import_joy65.useThemeProps)({ props: inProps, name: "MonthPicker" });
7518
7600
  const {
7519
7601
  onChange,
@@ -7540,18 +7622,18 @@ var MonthPicker = (0, import_react52.forwardRef)((inProps, ref) => {
7540
7622
  locale,
7541
7623
  ...innerProps
7542
7624
  } = props;
7543
- const innerRef = (0, import_react52.useRef)(null);
7544
- const buttonRef = (0, import_react52.useRef)(null);
7625
+ const innerRef = (0, import_react53.useRef)(null);
7626
+ const buttonRef = (0, import_react53.useRef)(null);
7545
7627
  const [rawValue, setValue, isControlled] = useControlledState(
7546
7628
  props.value,
7547
7629
  props.defaultValue ?? null,
7548
- (0, import_react52.useCallback)(
7630
+ (0, import_react53.useCallback)(
7549
7631
  (value2) => onChange?.({ target: { name: props.name, value: value2 ?? "" } }),
7550
7632
  [props.name, onChange]
7551
7633
  )
7552
7634
  );
7553
7635
  const value = rawValue ?? "";
7554
- const getFormattedDisplayValue = (0, import_react52.useCallback)(
7636
+ const getFormattedDisplayValue = (0, import_react53.useCallback)(
7555
7637
  (inputValue) => {
7556
7638
  if (!inputValue) return "";
7557
7639
  try {
@@ -7562,19 +7644,19 @@ var MonthPicker = (0, import_react52.forwardRef)((inProps, ref) => {
7562
7644
  },
7563
7645
  [format, displayFormat, locale]
7564
7646
  );
7565
- const [displayValue, setDisplayValue] = (0, import_react52.useState)(() => getFormattedDisplayValue(value));
7566
- const [anchorEl, setAnchorEl] = (0, import_react52.useState)(null);
7647
+ const [displayValue, setDisplayValue] = (0, import_react53.useState)(() => getFormattedDisplayValue(value));
7648
+ const [anchorEl, setAnchorEl] = (0, import_react53.useState)(null);
7567
7649
  const open = Boolean(anchorEl);
7568
- (0, import_react52.useEffect)(() => {
7650
+ (0, import_react53.useEffect)(() => {
7569
7651
  if (!anchorEl) {
7570
7652
  innerRef.current?.blur();
7571
7653
  }
7572
7654
  }, [anchorEl, innerRef]);
7573
- (0, import_react52.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
7574
- (0, import_react52.useEffect)(() => {
7655
+ (0, import_react53.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
7656
+ (0, import_react53.useEffect)(() => {
7575
7657
  setDisplayValue(getFormattedDisplayValue(value));
7576
7658
  }, [value, getFormattedDisplayValue]);
7577
- const handleChange = (0, import_react52.useCallback)(
7659
+ const handleChange = (0, import_react53.useCallback)(
7578
7660
  (event) => {
7579
7661
  const newValue = event.target.value;
7580
7662
  setValue(newValue);
@@ -7584,21 +7666,21 @@ var MonthPicker = (0, import_react52.forwardRef)((inProps, ref) => {
7584
7666
  },
7585
7667
  [setValue, getFormattedDisplayValue, isControlled]
7586
7668
  );
7587
- const handleCalendarToggle = (0, import_react52.useCallback)(
7669
+ const handleCalendarToggle = (0, import_react53.useCallback)(
7588
7670
  (event) => {
7589
7671
  setAnchorEl(anchorEl ? null : event.currentTarget);
7590
7672
  innerRef.current?.focus();
7591
7673
  },
7592
7674
  [anchorEl, setAnchorEl, innerRef]
7593
7675
  );
7594
- const handleInputMouseDown = (0, import_react52.useCallback)(
7676
+ const handleInputMouseDown = (0, import_react53.useCallback)(
7595
7677
  (event) => {
7596
7678
  event.preventDefault();
7597
7679
  buttonRef.current?.focus();
7598
7680
  },
7599
7681
  [buttonRef]
7600
7682
  );
7601
- return /* @__PURE__ */ import_react52.default.createElement(MonthPickerRoot, null, /* @__PURE__ */ import_react52.default.createElement(import_base6.FocusTrap, { open: true }, /* @__PURE__ */ import_react52.default.createElement(import_react52.default.Fragment, null, /* @__PURE__ */ import_react52.default.createElement(
7683
+ return /* @__PURE__ */ import_react53.default.createElement(MonthPickerRoot, null, /* @__PURE__ */ import_react53.default.createElement(import_base6.FocusTrap, { open: true }, /* @__PURE__ */ import_react53.default.createElement(import_react53.default.Fragment, null, /* @__PURE__ */ import_react53.default.createElement(
7602
7684
  Input_default,
7603
7685
  {
7604
7686
  ...innerProps,
@@ -7628,7 +7710,7 @@ var MonthPicker = (0, import_react52.forwardRef)((inProps, ref) => {
7628
7710
  // NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
7629
7711
  fontFamily: "monospace"
7630
7712
  },
7631
- endDecorator: /* @__PURE__ */ import_react52.default.createElement(
7713
+ endDecorator: /* @__PURE__ */ import_react53.default.createElement(
7632
7714
  IconButton_default,
7633
7715
  {
7634
7716
  ref: buttonRef,
@@ -7640,12 +7722,12 @@ var MonthPicker = (0, import_react52.forwardRef)((inProps, ref) => {
7640
7722
  "aria-expanded": open,
7641
7723
  disabled
7642
7724
  },
7643
- /* @__PURE__ */ import_react52.default.createElement(import_CalendarToday4.default, null)
7725
+ /* @__PURE__ */ import_react53.default.createElement(import_CalendarToday4.default, null)
7644
7726
  ),
7645
7727
  label,
7646
7728
  helperText
7647
7729
  }
7648
- ), open && /* @__PURE__ */ import_react52.default.createElement(import_base6.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react52.default.createElement(
7730
+ ), open && /* @__PURE__ */ import_react53.default.createElement(import_base6.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react53.default.createElement(
7649
7731
  StyledPopper4,
7650
7732
  {
7651
7733
  id: "month-picker-popper",
@@ -7664,7 +7746,7 @@ var MonthPicker = (0, import_react52.forwardRef)((inProps, ref) => {
7664
7746
  "aria-label": "Calendar Tooltip",
7665
7747
  "aria-expanded": open
7666
7748
  },
7667
- /* @__PURE__ */ import_react52.default.createElement(CalendarSheet4, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react52.default.createElement(
7749
+ /* @__PURE__ */ import_react53.default.createElement(CalendarSheet4, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react53.default.createElement(
7668
7750
  Calendar_default,
7669
7751
  {
7670
7752
  view: "month",
@@ -7685,14 +7767,14 @@ var MonthPicker = (0, import_react52.forwardRef)((inProps, ref) => {
7685
7767
  disablePast,
7686
7768
  locale
7687
7769
  }
7688
- ), /* @__PURE__ */ import_react52.default.createElement(
7770
+ ), /* @__PURE__ */ import_react53.default.createElement(
7689
7771
  DialogActions_default,
7690
7772
  {
7691
7773
  sx: {
7692
7774
  p: 1
7693
7775
  }
7694
7776
  },
7695
- /* @__PURE__ */ import_react52.default.createElement(
7777
+ /* @__PURE__ */ import_react53.default.createElement(
7696
7778
  Button_default,
7697
7779
  {
7698
7780
  size,
@@ -7715,7 +7797,7 @@ var MonthPicker = (0, import_react52.forwardRef)((inProps, ref) => {
7715
7797
  });
7716
7798
 
7717
7799
  // src/components/NavigationGroup/NavigationGroup.tsx
7718
- var import_react53 = __toESM(require("react"));
7800
+ var import_react54 = __toESM(require("react"));
7719
7801
  var import_joy66 = require("@mui/joy");
7720
7802
  var AccordionSummary2 = (0, import_joy66.styled)(import_joy66.AccordionSummary, {
7721
7803
  name: "NavigationGroup",
@@ -7739,11 +7821,11 @@ var AccordionDetails2 = (0, import_joy66.styled)(import_joy66.AccordionDetails,
7739
7821
  }));
7740
7822
  function NavigationGroup(props) {
7741
7823
  const { title, children, startDecorator, level, ...rest } = props;
7742
- return /* @__PURE__ */ import_react53.default.createElement(import_joy66.Accordion, { ...rest }, /* @__PURE__ */ import_react53.default.createElement(AccordionSummary2, { useIcon: !!startDecorator, level }, /* @__PURE__ */ import_react53.default.createElement(import_joy66.Stack, { direction: "row", gap: 4 }, startDecorator, title)), /* @__PURE__ */ import_react53.default.createElement(AccordionDetails2, null, children));
7824
+ return /* @__PURE__ */ import_react54.default.createElement(import_joy66.Accordion, { ...rest }, /* @__PURE__ */ import_react54.default.createElement(AccordionSummary2, { useIcon: !!startDecorator, level }, /* @__PURE__ */ import_react54.default.createElement(import_joy66.Stack, { direction: "row", gap: 4 }, startDecorator, title)), /* @__PURE__ */ import_react54.default.createElement(AccordionDetails2, null, children));
7743
7825
  }
7744
7826
 
7745
7827
  // src/components/NavigationItem/NavigationItem.tsx
7746
- var import_react54 = __toESM(require("react"));
7828
+ var import_react55 = __toESM(require("react"));
7747
7829
  var import_joy67 = require("@mui/joy");
7748
7830
  var ListItemButton = (0, import_joy67.styled)(import_joy67.ListItemButton, {
7749
7831
  name: "NavigationItem",
@@ -7772,7 +7854,7 @@ function NavigationItem(props) {
7772
7854
  const handleClick = () => {
7773
7855
  onClick?.(id);
7774
7856
  };
7775
- return /* @__PURE__ */ import_react54.default.createElement(import_joy67.ListItem, { ...rest }, /* @__PURE__ */ import_react54.default.createElement(
7857
+ return /* @__PURE__ */ import_react55.default.createElement(import_joy67.ListItem, { ...rest }, /* @__PURE__ */ import_react55.default.createElement(
7776
7858
  ListItemButton,
7777
7859
  {
7778
7860
  level,
@@ -7781,21 +7863,21 @@ function NavigationItem(props) {
7781
7863
  "aria-current": selected,
7782
7864
  onClick: handleClick
7783
7865
  },
7784
- startDecorator && /* @__PURE__ */ import_react54.default.createElement(import_joy67.ListItemDecorator, null, startDecorator),
7866
+ startDecorator && /* @__PURE__ */ import_react55.default.createElement(import_joy67.ListItemDecorator, null, startDecorator),
7785
7867
  children
7786
7868
  ));
7787
7869
  }
7788
7870
 
7789
7871
  // src/components/Navigator/Navigator.tsx
7790
- var import_react55 = __toESM(require("react"));
7872
+ var import_react56 = __toESM(require("react"));
7791
7873
  function Navigator(props) {
7792
7874
  const { items, level = 0, onSelect } = props;
7793
7875
  const handleItemClick = (id) => {
7794
7876
  onSelect?.(id);
7795
7877
  };
7796
- return /* @__PURE__ */ import_react55.default.createElement("div", null, items.map((item, index) => {
7878
+ return /* @__PURE__ */ import_react56.default.createElement("div", null, items.map((item, index) => {
7797
7879
  if (item.type === "item") {
7798
- return /* @__PURE__ */ import_react55.default.createElement(
7880
+ return /* @__PURE__ */ import_react56.default.createElement(
7799
7881
  NavigationItem,
7800
7882
  {
7801
7883
  key: item.id,
@@ -7808,7 +7890,7 @@ function Navigator(props) {
7808
7890
  item.title
7809
7891
  );
7810
7892
  } else if (item.type === "group") {
7811
- return /* @__PURE__ */ import_react55.default.createElement(
7893
+ return /* @__PURE__ */ import_react56.default.createElement(
7812
7894
  NavigationGroup,
7813
7895
  {
7814
7896
  key: `${item.title}-${index}`,
@@ -7826,7 +7908,7 @@ function Navigator(props) {
7826
7908
  Navigator.displayName = "Navigator";
7827
7909
 
7828
7910
  // src/components/ProfileMenu/ProfileMenu.tsx
7829
- var import_react56 = __toESM(require("react"));
7911
+ var import_react57 = __toESM(require("react"));
7830
7912
  var import_joy68 = require("@mui/joy");
7831
7913
  var import_base7 = require("@mui/base");
7832
7914
  var import_ArrowDropDown = __toESM(require("@mui/icons-material/ArrowDropDown"));
@@ -7836,9 +7918,9 @@ var StyledProfileCard = (0, import_joy68.styled)(import_joy3.Stack, {
7836
7918
  })({});
7837
7919
  function ProfileCard(props) {
7838
7920
  const { children, chip, caption, size } = props;
7839
- const captionLevel = (0, import_react56.useMemo)(() => size === "sm" ? "body-xs" : "body-sm", [size]);
7840
- const nameLevel = (0, import_react56.useMemo)(() => size === "sm" ? "body-sm" : "body-md", [size]);
7841
- return /* @__PURE__ */ import_react56.default.createElement(StyledProfileCard, { px: 4, py: 2 }, /* @__PURE__ */ import_react56.default.createElement(import_joy3.Stack, { direction: "row", gap: 2 }, /* @__PURE__ */ import_react56.default.createElement(Typography, { level: nameLevel, fontWeight: "bold", textColor: "text.primary" }, children), chip && /* @__PURE__ */ import_react56.default.createElement(Chip, { size, color: "neutral", variant: "outlined" }, chip)), caption && /* @__PURE__ */ import_react56.default.createElement(Typography, { level: captionLevel, textColor: "text.tertiary" }, caption));
7921
+ const captionLevel = (0, import_react57.useMemo)(() => size === "sm" ? "body-xs" : "body-sm", [size]);
7922
+ const nameLevel = (0, import_react57.useMemo)(() => size === "sm" ? "body-sm" : "body-md", [size]);
7923
+ return /* @__PURE__ */ import_react57.default.createElement(StyledProfileCard, { px: 4, py: 2 }, /* @__PURE__ */ import_react57.default.createElement(import_joy3.Stack, { direction: "row", gap: 2 }, /* @__PURE__ */ import_react57.default.createElement(Typography, { level: nameLevel, fontWeight: "bold", textColor: "text.primary" }, children), chip && /* @__PURE__ */ import_react57.default.createElement(Chip, { size, color: "neutral", variant: "outlined" }, chip)), caption && /* @__PURE__ */ import_react57.default.createElement(Typography, { level: captionLevel, textColor: "text.tertiary" }, caption));
7842
7924
  }
7843
7925
  ProfileCard.displayName = "ProfileCard";
7844
7926
  var StyledProfileMenuButton = (0, import_joy68.styled)(import_joy68.MenuButton, {
@@ -7850,16 +7932,16 @@ var StyledProfileMenuButton = (0, import_joy68.styled)(import_joy68.MenuButton,
7850
7932
  }));
7851
7933
  function ProfileMenuButton(props) {
7852
7934
  const { size = "sm", src, alt, children, getInitial, ...innerProps } = props;
7853
- return /* @__PURE__ */ import_react56.default.createElement(
7935
+ return /* @__PURE__ */ import_react57.default.createElement(
7854
7936
  StyledProfileMenuButton,
7855
7937
  {
7856
7938
  variant: "plain",
7857
7939
  color: "neutral",
7858
7940
  size,
7859
- endDecorator: /* @__PURE__ */ import_react56.default.createElement(import_ArrowDropDown.default, null),
7941
+ endDecorator: /* @__PURE__ */ import_react57.default.createElement(import_ArrowDropDown.default, null),
7860
7942
  ...innerProps
7861
7943
  },
7862
- /* @__PURE__ */ import_react56.default.createElement(Avatar, { variant: "soft", color: "primary", size, src, alt, getInitial }, children)
7944
+ /* @__PURE__ */ import_react57.default.createElement(Avatar, { variant: "soft", color: "primary", size, src, alt, getInitial }, children)
7863
7945
  );
7864
7946
  }
7865
7947
  ProfileMenuButton.displayName = "ProfileMenuButton";
@@ -7879,9 +7961,9 @@ function ProfileMenu(inProps) {
7879
7961
  const [open, setOpen] = useControlledState(
7880
7962
  _open,
7881
7963
  defaultOpen ?? false,
7882
- (0, import_react56.useCallback)((value) => onOpenChange?.(value), [onOpenChange])
7964
+ (0, import_react57.useCallback)((value) => onOpenChange?.(value), [onOpenChange])
7883
7965
  );
7884
- return /* @__PURE__ */ import_react56.default.createElement(import_base7.ClickAwayListener, { onClickAway: () => setOpen(false) }, /* @__PURE__ */ import_react56.default.createElement("div", null, /* @__PURE__ */ import_react56.default.createElement(import_joy68.Dropdown, { open }, /* @__PURE__ */ import_react56.default.createElement(
7966
+ return /* @__PURE__ */ import_react57.default.createElement(import_base7.ClickAwayListener, { onClickAway: () => setOpen(false) }, /* @__PURE__ */ import_react57.default.createElement("div", null, /* @__PURE__ */ import_react57.default.createElement(import_joy68.Dropdown, { open }, /* @__PURE__ */ import_react57.default.createElement(
7885
7967
  ProfileMenuButton,
7886
7968
  {
7887
7969
  size,
@@ -7891,7 +7973,7 @@ function ProfileMenu(inProps) {
7891
7973
  getInitial
7892
7974
  },
7893
7975
  profile.name
7894
- ), /* @__PURE__ */ import_react56.default.createElement(ProfileMenuRoot, { size, placement: "bottom-end", ...innerProps, onClose: () => setOpen(false) }, /* @__PURE__ */ import_react56.default.createElement(ProfileCard, { size, caption: profile.caption, chip: profile.chip }, profile.name), !!menuItems.length && /* @__PURE__ */ import_react56.default.createElement(import_joy68.ListDivider, null), menuItems.map(({ label, ...menuProps }) => /* @__PURE__ */ import_react56.default.createElement(
7976
+ ), /* @__PURE__ */ import_react57.default.createElement(ProfileMenuRoot, { size, placement: "bottom-end", ...innerProps, onClose: () => setOpen(false) }, /* @__PURE__ */ import_react57.default.createElement(ProfileCard, { size, caption: profile.caption, chip: profile.chip }, profile.name), !!menuItems.length && /* @__PURE__ */ import_react57.default.createElement(import_joy68.ListDivider, null), menuItems.map(({ label, ...menuProps }) => /* @__PURE__ */ import_react57.default.createElement(
7895
7977
  MenuItem,
7896
7978
  {
7897
7979
  key: label,
@@ -7907,7 +7989,7 @@ function ProfileMenu(inProps) {
7907
7989
  ProfileMenu.displayName = "ProfileMenu";
7908
7990
 
7909
7991
  // src/components/RadioTileGroup/RadioTileGroup.tsx
7910
- var import_react57 = __toESM(require("react"));
7992
+ var import_react58 = __toESM(require("react"));
7911
7993
  var import_joy69 = require("@mui/joy");
7912
7994
  var RadioTileGroupRoot = (0, import_joy69.styled)(RadioGroup, {
7913
7995
  name: "RadioTileGroup",
@@ -7995,7 +8077,7 @@ function RadioTileGroup(props) {
7995
8077
  error,
7996
8078
  required
7997
8079
  } = props;
7998
- const radioGroup = /* @__PURE__ */ import_react57.default.createElement(
8080
+ const radioGroup = /* @__PURE__ */ import_react58.default.createElement(
7999
8081
  RadioTileGroupRoot,
8000
8082
  {
8001
8083
  overlay: true,
@@ -8006,7 +8088,7 @@ function RadioTileGroup(props) {
8006
8088
  flex,
8007
8089
  columns
8008
8090
  },
8009
- options.map((option) => /* @__PURE__ */ import_react57.default.createElement(
8091
+ options.map((option) => /* @__PURE__ */ import_react58.default.createElement(
8010
8092
  RadioTileSheet,
8011
8093
  {
8012
8094
  key: option.value,
@@ -8016,7 +8098,7 @@ function RadioTileGroup(props) {
8016
8098
  flex,
8017
8099
  textAlign
8018
8100
  },
8019
- /* @__PURE__ */ import_react57.default.createElement(
8101
+ /* @__PURE__ */ import_react58.default.createElement(
8020
8102
  Radio,
8021
8103
  {
8022
8104
  id: `${option.value}`,
@@ -8045,7 +8127,7 @@ function RadioTileGroup(props) {
8045
8127
  }
8046
8128
  }
8047
8129
  ),
8048
- option.startDecorator && /* @__PURE__ */ import_react57.default.createElement(
8130
+ option.startDecorator && /* @__PURE__ */ import_react58.default.createElement(
8049
8131
  Box_default,
8050
8132
  {
8051
8133
  sx: {
@@ -8066,15 +8148,15 @@ function RadioTileGroup(props) {
8066
8148
  )
8067
8149
  ))
8068
8150
  );
8069
- return /* @__PURE__ */ import_react57.default.createElement(FormControl_default, { required, disabled: allDisabled, error, size, sx, className }, label && /* @__PURE__ */ import_react57.default.createElement(FormLabel_default, null, label), radioGroup, helperText && /* @__PURE__ */ import_react57.default.createElement(FormHelperText_default, null, helperText));
8151
+ return /* @__PURE__ */ import_react58.default.createElement(FormControl_default, { required, disabled: allDisabled, error, size, sx, className }, label && /* @__PURE__ */ import_react58.default.createElement(FormLabel_default, null, label), radioGroup, helperText && /* @__PURE__ */ import_react58.default.createElement(FormHelperText_default, null, helperText));
8070
8152
  }
8071
8153
  RadioTileGroup.displayName = "RadioTileGroup";
8072
8154
 
8073
8155
  // src/components/RadioList/RadioList.tsx
8074
- var import_react58 = __toESM(require("react"));
8156
+ var import_react59 = __toESM(require("react"));
8075
8157
  function RadioList(props) {
8076
8158
  const { items, ...innerProps } = props;
8077
- return /* @__PURE__ */ import_react58.default.createElement(RadioGroup, { ...innerProps }, items.map((item) => /* @__PURE__ */ import_react58.default.createElement(Radio, { key: `${item.value}`, value: item.value, label: item.label })));
8159
+ return /* @__PURE__ */ import_react59.default.createElement(RadioGroup, { ...innerProps }, items.map((item) => /* @__PURE__ */ import_react59.default.createElement(Radio, { key: `${item.value}`, value: item.value, label: item.label })));
8078
8160
  }
8079
8161
  RadioList.displayName = "RadioList";
8080
8162
 
@@ -8165,7 +8247,7 @@ var SearchBar = React56.forwardRef(function SearchBar2(inProps, ref) {
8165
8247
  SearchBar.displayName = "SearchBar";
8166
8248
 
8167
8249
  // src/components/Stepper/Stepper.tsx
8168
- var import_react59 = __toESM(require("react"));
8250
+ var import_react60 = __toESM(require("react"));
8169
8251
  var import_joy70 = require("@mui/joy");
8170
8252
  var import_Check = __toESM(require("@mui/icons-material/Check"));
8171
8253
  var import_framer_motion27 = require("framer-motion");
@@ -8194,7 +8276,7 @@ function Stepper(props) {
8194
8276
  stepOrientation = "horizontal"
8195
8277
  } = props;
8196
8278
  const effectiveStepOrientation = orientation === "vertical" ? "horizontal" : stepOrientation;
8197
- return /* @__PURE__ */ import_react59.default.createElement(
8279
+ return /* @__PURE__ */ import_react60.default.createElement(
8198
8280
  MotionStepper,
8199
8281
  {
8200
8282
  orientation,
@@ -8233,23 +8315,23 @@ function Stepper(props) {
8233
8315
  const completed = activeStep > i + 1;
8234
8316
  const disabled = activeStep < i + 1;
8235
8317
  const hasContent = step.label || step.extraContent;
8236
- return /* @__PURE__ */ import_react59.default.createElement(
8318
+ return /* @__PURE__ */ import_react60.default.createElement(
8237
8319
  Step,
8238
8320
  {
8239
8321
  key: `step-${i}`,
8240
- indicator: /* @__PURE__ */ import_react59.default.createElement(StepIndicator, { variant: disabled ? "outlined" : "solid", color: disabled ? "neutral" : "primary" }, completed ? /* @__PURE__ */ import_react59.default.createElement(import_Check.default, null) : step.indicatorContent),
8322
+ indicator: /* @__PURE__ */ import_react60.default.createElement(StepIndicator, { variant: disabled ? "outlined" : "solid", color: disabled ? "neutral" : "primary" }, completed ? /* @__PURE__ */ import_react60.default.createElement(import_Check.default, null) : step.indicatorContent),
8241
8323
  active,
8242
8324
  completed,
8243
8325
  disabled,
8244
8326
  orientation: effectiveStepOrientation
8245
8327
  },
8246
- hasContent && /* @__PURE__ */ import_react59.default.createElement(
8328
+ hasContent && /* @__PURE__ */ import_react60.default.createElement(
8247
8329
  Stack_default,
8248
8330
  {
8249
8331
  sx: orientation === "horizontal" && effectiveStepOrientation === "vertical" ? { alignItems: "center" } : {}
8250
8332
  },
8251
- step.label && /* @__PURE__ */ import_react59.default.createElement(Typography_default, { level: "title-sm" }, step.label),
8252
- step.extraContent && /* @__PURE__ */ import_react59.default.createElement(Typography_default, { level: "body-xs" }, step.extraContent)
8333
+ step.label && /* @__PURE__ */ import_react60.default.createElement(Typography_default, { level: "title-sm" }, step.label),
8334
+ step.extraContent && /* @__PURE__ */ import_react60.default.createElement(Typography_default, { level: "body-xs" }, step.extraContent)
8253
8335
  )
8254
8336
  );
8255
8337
  })
@@ -8258,7 +8340,7 @@ function Stepper(props) {
8258
8340
  Stepper.displayName = "Stepper";
8259
8341
 
8260
8342
  // src/components/Switch/Switch.tsx
8261
- var import_react60 = __toESM(require("react"));
8343
+ var import_react61 = __toESM(require("react"));
8262
8344
  var import_joy71 = require("@mui/joy");
8263
8345
  var import_framer_motion28 = require("framer-motion");
8264
8346
  var MotionSwitch = (0, import_framer_motion28.motion)(import_joy71.Switch);
@@ -8280,14 +8362,14 @@ var StyledThumb = (0, import_joy71.styled)(import_framer_motion28.motion.div)({
8280
8362
  right: "var(--Switch-thumbOffset)"
8281
8363
  }
8282
8364
  });
8283
- var Thumb = (props) => /* @__PURE__ */ import_react60.default.createElement(StyledThumb, { ...props, layout: true, transition: spring });
8365
+ var Thumb = (props) => /* @__PURE__ */ import_react61.default.createElement(StyledThumb, { ...props, layout: true, transition: spring });
8284
8366
  var spring = {
8285
8367
  type: "spring",
8286
8368
  stiffness: 700,
8287
8369
  damping: 30
8288
8370
  };
8289
8371
  var Switch = (props) => {
8290
- return /* @__PURE__ */ import_react60.default.createElement(
8372
+ return /* @__PURE__ */ import_react61.default.createElement(
8291
8373
  MotionSwitch,
8292
8374
  {
8293
8375
  ...props,
@@ -8301,7 +8383,7 @@ var Switch = (props) => {
8301
8383
  Switch.displayName = "Switch";
8302
8384
 
8303
8385
  // src/components/Tabs/Tabs.tsx
8304
- var import_react61 = __toESM(require("react"));
8386
+ var import_react62 = __toESM(require("react"));
8305
8387
  var import_joy72 = require("@mui/joy");
8306
8388
  var StyledTabs = (0, import_joy72.styled)(import_joy72.Tabs)(({ theme }) => ({
8307
8389
  backgroundColor: theme.palette.background.body
@@ -8317,15 +8399,15 @@ var StyledTab = (0, import_joy72.styled)(import_joy72.Tab)(({ theme }) => ({
8317
8399
  backgroundColor: theme.palette.background.body
8318
8400
  }
8319
8401
  }));
8320
- var Tab = (0, import_react61.forwardRef)(function Tab2({ startDecorator, endDecorator, children, ...props }, ref) {
8321
- return /* @__PURE__ */ import_react61.default.createElement(StyledTab, { ...props, ref }, startDecorator, children, endDecorator);
8402
+ var Tab = (0, import_react62.forwardRef)(function Tab2({ startDecorator, endDecorator, children, ...props }, ref) {
8403
+ return /* @__PURE__ */ import_react62.default.createElement(StyledTab, { ...props, ref }, startDecorator, children, endDecorator);
8322
8404
  });
8323
8405
  Tab.displayName = "Tab";
8324
8406
  var TabList = import_joy72.TabList;
8325
8407
  var TabPanel = import_joy72.TabPanel;
8326
8408
 
8327
8409
  // src/components/ThemeProvider/ThemeProvider.tsx
8328
- var import_react62 = __toESM(require("react"));
8410
+ var import_react63 = __toESM(require("react"));
8329
8411
  var import_joy73 = require("@mui/joy");
8330
8412
  var colorScheme = {
8331
8413
  palette: {
@@ -8722,6 +8804,6 @@ var defaultTheme = (0, import_joy73.extendTheme)({
8722
8804
  });
8723
8805
  function ThemeProvider(props) {
8724
8806
  const theme = props.theme || defaultTheme;
8725
- return /* @__PURE__ */ import_react62.default.createElement(import_react62.default.Fragment, null, /* @__PURE__ */ import_react62.default.createElement(import_joy73.CssVarsProvider, { theme }, /* @__PURE__ */ import_react62.default.createElement(import_joy73.CssBaseline, null), props.children));
8807
+ return /* @__PURE__ */ import_react63.default.createElement(import_react63.default.Fragment, null, /* @__PURE__ */ import_react63.default.createElement(import_joy73.CssVarsProvider, { theme }, /* @__PURE__ */ import_react63.default.createElement(import_joy73.CssBaseline, null), props.children));
8726
8808
  }
8727
8809
  ThemeProvider.displayName = "ThemeProvider";