@ceed/cds 1.40.3 → 1.40.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
@@ -344,7 +344,7 @@ function Alert(inProps) {
344
344
  Alert.displayName = "Alert";
345
345
 
346
346
  // src/components/Autocomplete/Autocomplete.tsx
347
- var import_react6 = __toESM(require("react"));
347
+ var import_react7 = __toESM(require("react"));
348
348
  var import_joy10 = require("@mui/joy");
349
349
  var import_base = require("@mui/base");
350
350
  var import_Close = __toESM(require("@mui/icons-material/Close"));
@@ -441,6 +441,46 @@ function useControlledState(controlledValue, defaultValue, onChange) {
441
441
  return [displayValue, handleChange, isControlled];
442
442
  }
443
443
 
444
+ // src/libs/slot-props.ts
445
+ var import_react6 = require("react");
446
+ function assignRef(ref, value) {
447
+ if (typeof ref === "function") ref(value);
448
+ else if (ref) ref.current = value;
449
+ }
450
+ function mergeRefs(...refs) {
451
+ const live = refs.filter((r) => r != null);
452
+ if (live.length === 0) return void 0;
453
+ if (live.length === 1) return live[0];
454
+ return (value) => live.forEach((r) => assignRef(r, value));
455
+ }
456
+ function useMergedRef(a, b) {
457
+ return (0, import_react6.useMemo)(() => mergeRefs(a, b), [a, b]);
458
+ }
459
+ function useSlotRef(slotProp, ref) {
460
+ const isFunctionForm = typeof slotProp === "function";
461
+ const slotRef = isFunctionForm ? void 0 : slotProp?.ref;
462
+ const mergedRef = useMergedRef(slotRef, ref);
463
+ const latestSlotRef = (0, import_react6.useRef)(null);
464
+ const stableMergedRef = (0, import_react6.useCallback)(
465
+ (value) => {
466
+ assignRef(latestSlotRef.current, value);
467
+ assignRef(ref, value);
468
+ },
469
+ [ref]
470
+ );
471
+ return (0, import_react6.useMemo)(() => {
472
+ if (isFunctionForm) {
473
+ return ((ownerState) => {
474
+ const resolved = slotProp(ownerState) ?? {};
475
+ const resolvedRef = resolved.ref;
476
+ latestSlotRef.current = resolvedRef ?? null;
477
+ return resolvedRef || ref ? { ...resolved, ref: stableMergedRef } : { ...resolved };
478
+ });
479
+ }
480
+ return mergedRef ? { ...slotProp, ref: mergedRef } : { ...slotProp };
481
+ }, [isFunctionForm, slotProp, mergedRef, ref, stableMergedRef]);
482
+ }
483
+
444
484
  // src/components/Autocomplete/Autocomplete.tsx
445
485
  var AutocompletePopper = (0, import_joy10.styled)(import_base2.Popper, {
446
486
  name: "Autocomplete",
@@ -453,7 +493,7 @@ var itemHeightMap = {
453
493
  md: { default: 36, secondary: 55 },
454
494
  lg: { default: 44, secondary: 65 }
455
495
  };
456
- var AutocompleteListBox = import_react6.default.forwardRef((props, ref) => {
496
+ var AutocompleteListBox = import_react7.default.forwardRef((props, ref) => {
457
497
  const {
458
498
  anchorEl,
459
499
  open,
@@ -463,13 +503,13 @@ var AutocompleteListBox = import_react6.default.forwardRef((props, ref) => {
463
503
  ownerState: { loading, size: fontSize = "md" },
464
504
  ...innerProps
465
505
  } = props;
466
- const parentRef = (0, import_react6.useRef)(null);
506
+ const parentRef = (0, import_react7.useRef)(null);
467
507
  const isGrouped = children[0].every((child) => child.hasOwnProperty("group"));
468
- const itemHeight = (0, import_react6.useMemo)(() => {
508
+ const itemHeight = (0, import_react7.useMemo)(() => {
469
509
  const heights = itemHeightMap[fontSize ?? "md"];
470
510
  return hasSecondaryText ? heights.secondary : heights.default;
471
511
  }, [fontSize, hasSecondaryText]);
472
- const renderTargets = (0, import_react6.useMemo)(() => {
512
+ const renderTargets = (0, import_react7.useMemo)(() => {
473
513
  if (loading) {
474
514
  return [children[1]];
475
515
  }
@@ -478,7 +518,7 @@ var AutocompleteListBox = import_react6.default.forwardRef((props, ref) => {
478
518
  }
479
519
  if (isGrouped) {
480
520
  return children[0].flatMap((child) => [
481
- /* @__PURE__ */ import_react6.default.createElement(import_joy10.ListSubheader, { key: child.key, component: "li" }, child.group),
521
+ /* @__PURE__ */ import_react7.default.createElement(import_joy10.ListSubheader, { key: child.key, component: "li" }, child.group),
482
522
  ...child.children
483
523
  ]);
484
524
  }
@@ -492,12 +532,12 @@ var AutocompleteListBox = import_react6.default.forwardRef((props, ref) => {
492
532
  overscan: 5
493
533
  });
494
534
  const items = virtualizer.getVirtualItems();
495
- (0, import_react6.useEffect)(() => {
535
+ (0, import_react7.useEffect)(() => {
496
536
  if (open) {
497
537
  virtualizer.measure();
498
538
  }
499
539
  }, [open, virtualizer]);
500
- 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(
540
+ 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(
501
541
  "div",
502
542
  {
503
543
  style: {
@@ -506,7 +546,7 @@ var AutocompleteListBox = import_react6.default.forwardRef((props, ref) => {
506
546
  }
507
547
  },
508
548
  items.map(
509
- ({ index, size, start, key }) => import_react6.default.cloneElement(renderTargets[index], {
549
+ ({ index, size, start, key }) => import_react7.default.cloneElement(renderTargets[index], {
510
550
  key,
511
551
  style: {
512
552
  position: "absolute",
@@ -518,7 +558,7 @@ var AutocompleteListBox = import_react6.default.forwardRef((props, ref) => {
518
558
  transform: `translateY(${start}px)`,
519
559
  overflow: "visible"
520
560
  },
521
- children: /* @__PURE__ */ import_react6.default.createElement(
561
+ children: /* @__PURE__ */ import_react7.default.createElement(
522
562
  "div",
523
563
  {
524
564
  style: {
@@ -561,7 +601,7 @@ var autocompleteFilterOptions = (0, import_base.createFilterOptions)({
561
601
  }
562
602
  });
563
603
  var getOptionLabel = (option) => `${option.label ?? ""}`;
564
- function Autocomplete(props) {
604
+ function AutocompleteInner(props, ref) {
565
605
  const {
566
606
  label,
567
607
  error,
@@ -580,7 +620,7 @@ function Autocomplete(props) {
580
620
  const [rawValue, setValue] = useControlledState(
581
621
  props.value,
582
622
  props.defaultValue ?? null,
583
- (0, import_react6.useCallback)(
623
+ (0, import_react7.useCallback)(
584
624
  (value2) => onChange?.({
585
625
  target: {
586
626
  value: value2,
@@ -591,7 +631,7 @@ function Autocomplete(props) {
591
631
  )
592
632
  );
593
633
  const _value = rawValue ?? (props.multiple ? EMPTY_MULTIPLE_VALUE : "");
594
- const options = (0, import_react6.useMemo)(
634
+ const options = (0, import_react7.useMemo)(
595
635
  () => props.options.map((option) => {
596
636
  if (typeof option !== "object") {
597
637
  return {
@@ -603,19 +643,19 @@ function Autocomplete(props) {
603
643
  }),
604
644
  [props.options]
605
645
  );
606
- const optionMap = (0, import_react6.useMemo)(() => {
646
+ const optionMap = (0, import_react7.useMemo)(() => {
607
647
  const map = /* @__PURE__ */ new Map();
608
648
  options.forEach((option) => {
609
649
  map.set(option.value, option);
610
650
  });
611
651
  return map;
612
652
  }, [options]);
613
- const value = (0, import_react6.useMemo)(() => {
653
+ const value = (0, import_react7.useMemo)(() => {
614
654
  if (props.loading) {
615
655
  return {
616
656
  value: "",
617
657
  label: "",
618
- startDecorator: /* @__PURE__ */ import_react6.default.createElement(import_joy10.CircularProgress, { size: "sm", color: "neutral", variant: "plain", thickness: 3 })
658
+ startDecorator: /* @__PURE__ */ import_react7.default.createElement(import_joy10.CircularProgress, { size: "sm", color: "neutral", variant: "plain", thickness: 3 })
619
659
  };
620
660
  }
621
661
  if (Array.isArray(_value)) {
@@ -623,31 +663,33 @@ function Autocomplete(props) {
623
663
  }
624
664
  return optionMap.get(_value);
625
665
  }, [_value, optionMap, props.loading]);
626
- const applySize = (0, import_react6.useCallback)(
666
+ const applySize = (0, import_react7.useCallback)(
627
667
  (node) => {
628
- return import_react6.default.isValidElement(node) && !props.loading ? import_react6.default.cloneElement(node, { ...{ size } }) : node;
668
+ return import_react7.default.isValidElement(node) && !props.loading ? import_react7.default.cloneElement(node, { ...{ size } }) : node;
629
669
  },
630
670
  [size, props.loading]
631
671
  );
632
- const startDecorator = (0, import_react6.useMemo)(
672
+ const startDecorator = (0, import_react7.useMemo)(
633
673
  () => applySize(value?.startDecorator || props.startDecorator),
634
674
  [value, applySize, props.startDecorator]
635
675
  );
636
- const endDecorator = (0, import_react6.useMemo)(
676
+ const endDecorator = (0, import_react7.useMemo)(
637
677
  () => applySize(value?.endDecorator || props.endDecorator),
638
678
  [value, applySize, props.endDecorator]
639
679
  );
640
- const slotProps = (0, import_react6.useMemo)(
680
+ const inputSlotProps = useSlotRef(props.slotProps?.input, ref);
681
+ const slotProps = (0, import_react7.useMemo)(
641
682
  () => ({
642
683
  ...props.slotProps,
643
684
  listbox: {
644
685
  ...props.slotProps?.listbox,
645
686
  hasSecondaryText: options.some((opt) => opt.secondaryText)
646
- }
687
+ },
688
+ input: inputSlotProps
647
689
  }),
648
- [options, props.slotProps]
690
+ [options, props.slotProps, inputSlotProps]
649
691
  );
650
- const handleChange = (0, import_react6.useCallback)(
692
+ const handleChange = (0, import_react7.useCallback)(
651
693
  (event, value2) => {
652
694
  const newValue = value2;
653
695
  const _value2 = Array.isArray(newValue) ? newValue.map((value3) => value3.value) : newValue?.value;
@@ -664,7 +706,7 @@ function Autocomplete(props) {
664
706
  },
665
707
  [onChangeComplete, setValue, optionMap]
666
708
  );
667
- const autocomplete = /* @__PURE__ */ import_react6.default.createElement(
709
+ const autocomplete = /* @__PURE__ */ import_react7.default.createElement(
668
710
  import_joy10.Autocomplete,
669
711
  {
670
712
  ...innerProps,
@@ -679,10 +721,10 @@ function Autocomplete(props) {
679
721
  endDecorator,
680
722
  getOptionLabel,
681
723
  renderTags: (tags, getTagProps) => tags.map((tag, index) => {
682
- const { onClick, ...rest } = getTagProps({ index });
724
+ const { onClick, key, ...rest } = getTagProps({ index });
683
725
  return applySize(
684
- /* @__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(
685
- /* @__PURE__ */ import_react6.default.createElement(AutocompleteTagDelete, { color: "primary", variant: "soft", onClick }, /* @__PURE__ */ import_react6.default.createElement(import_Close.default, null))
726
+ /* @__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(
727
+ /* @__PURE__ */ import_react7.default.createElement(AutocompleteTagDelete, { color: "primary", variant: "soft", onClick }, /* @__PURE__ */ import_react7.default.createElement(import_Close.default, null))
686
728
  )))
687
729
  );
688
730
  }),
@@ -691,30 +733,33 @@ function Autocomplete(props) {
691
733
  },
692
734
  slotProps,
693
735
  filterOptions: autocompleteFilterOptions,
694
- renderOption: (props2, option) => /* @__PURE__ */ import_react6.default.createElement(import_joy10.AutocompleteOption, { ...props2 }, option.startDecorator && /* @__PURE__ */ import_react6.default.createElement(
695
- import_joy10.ListItemDecorator,
696
- {
697
- sx: (theme) => ({
698
- marginInlineEnd: `var(--Input-gap, ${theme.spacing(1)})`
699
- })
700
- },
701
- applySize(option.startDecorator)
702
- ), 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)) : (
703
- // TODO: haulla에서 사용할 때, label을 ReactNode로 넘기면 에러가 발생함....
704
- applySize(option.label)
705
- ), option.endDecorator && /* @__PURE__ */ import_react6.default.createElement(
706
- import_joy10.ListItemDecorator,
707
- {
708
- sx: (theme) => ({
709
- marginInlineStart: `var(--Input-gap, ${theme.spacing(1)})`
710
- })
711
- },
712
- applySize(option.endDecorator)
713
- )),
736
+ renderOption: (props2, option) => {
737
+ const { key, ...optionProps } = props2;
738
+ return /* @__PURE__ */ import_react7.default.createElement(import_joy10.AutocompleteOption, { key, ...optionProps }, option.startDecorator && /* @__PURE__ */ import_react7.default.createElement(
739
+ import_joy10.ListItemDecorator,
740
+ {
741
+ sx: (theme) => ({
742
+ marginInlineEnd: `var(--Input-gap, ${theme.spacing(1)})`
743
+ })
744
+ },
745
+ applySize(option.startDecorator)
746
+ ), 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)) : (
747
+ // TODO: haulla에서 사용할 때, label을 ReactNode로 넘기면 에러가 발생함....
748
+ applySize(option.label)
749
+ ), option.endDecorator && /* @__PURE__ */ import_react7.default.createElement(
750
+ import_joy10.ListItemDecorator,
751
+ {
752
+ sx: (theme) => ({
753
+ marginInlineStart: `var(--Input-gap, ${theme.spacing(1)})`
754
+ })
755
+ },
756
+ applySize(option.endDecorator)
757
+ ));
758
+ },
714
759
  renderGroup: (params) => params
715
760
  }
716
761
  );
717
- return /* @__PURE__ */ import_react6.default.createElement(
762
+ return /* @__PURE__ */ import_react7.default.createElement(
718
763
  FormControl_default,
719
764
  {
720
765
  required,
@@ -725,18 +770,19 @@ function Autocomplete(props) {
725
770
  sx,
726
771
  className
727
772
  },
728
- label && /* @__PURE__ */ import_react6.default.createElement(FormLabel_default, null, label),
773
+ label && /* @__PURE__ */ import_react7.default.createElement(FormLabel_default, null, label),
729
774
  autocomplete,
730
- helperText && /* @__PURE__ */ import_react6.default.createElement(FormHelperText_default, null, helperText)
775
+ helperText && /* @__PURE__ */ import_react7.default.createElement(FormHelperText_default, null, helperText)
731
776
  );
732
777
  }
778
+ var Autocomplete = import_react7.default.forwardRef(AutocompleteInner);
733
779
  Autocomplete.displayName = "Autocomplete";
734
780
 
735
781
  // src/components/Autocomplete/index.ts
736
782
  var Autocomplete_default = Autocomplete;
737
783
 
738
784
  // src/components/Avatar/Avatar.tsx
739
- var import_react7 = __toESM(require("react"));
785
+ var import_react8 = __toESM(require("react"));
740
786
  var import_joy11 = require("@mui/joy");
741
787
  var StyledAvatar = (0, import_joy11.styled)(import_joy11.Avatar, {
742
788
  name: "Avatar",
@@ -758,19 +804,19 @@ var defaultGetInitial = (name) => {
758
804
  return (firstName.charAt(0) + lastName.charAt(0)).toUpperCase();
759
805
  }
760
806
  };
761
- var Avatar = (0, import_react7.forwardRef)(function Avatar2(inProps, ref) {
807
+ var Avatar = (0, import_react8.forwardRef)(function Avatar2(inProps, ref) {
762
808
  const props = (0, import_joy11.useThemeProps)({
763
809
  props: inProps,
764
810
  name: "Avatar"
765
811
  });
766
812
  const { children, getInitial = defaultGetInitial, ...inheritProps } = props;
767
- const calcChildren = (0, import_react7.useMemo)(() => {
813
+ const calcChildren = (0, import_react8.useMemo)(() => {
768
814
  if (typeof children === "string") {
769
815
  return getInitial?.(children) ?? "";
770
816
  }
771
817
  return children;
772
818
  }, [children, getInitial]);
773
- return /* @__PURE__ */ import_react7.default.createElement(StyledAvatar, { ...inheritProps, children: calcChildren, ref });
819
+ return /* @__PURE__ */ import_react8.default.createElement(StyledAvatar, { ...inheritProps, children: calcChildren, ref });
774
820
  });
775
821
 
776
822
  // src/components/Box/Box.tsx
@@ -784,16 +830,16 @@ Box.displayName = "Box";
784
830
  var Box_default = Box;
785
831
 
786
832
  // src/components/Breadcrumbs/Breadcrumbs.tsx
787
- var import_react10 = __toESM(require("react"));
833
+ var import_react11 = __toESM(require("react"));
788
834
  var import_joy16 = require("@mui/joy");
789
835
 
790
836
  // src/components/Menu/Menu.tsx
791
- var import_react8 = __toESM(require("react"));
837
+ var import_react9 = __toESM(require("react"));
792
838
  var import_joy13 = require("@mui/joy");
793
839
  var import_framer_motion10 = require("framer-motion");
794
840
  var MotionMenu = (0, import_framer_motion10.motion)(import_joy13.Menu);
795
841
  var Menu = (props) => {
796
- return /* @__PURE__ */ import_react8.default.createElement(MotionMenu, { ...props });
842
+ return /* @__PURE__ */ import_react9.default.createElement(MotionMenu, { ...props });
797
843
  };
798
844
  Menu.displayName = "Menu";
799
845
  var MenuItem = import_joy13.MenuItem;
@@ -802,22 +848,22 @@ var MenuItem = import_joy13.MenuItem;
802
848
  var Menu_default = Menu;
803
849
 
804
850
  // src/components/Dropdown/Dropdown.tsx
805
- var import_react9 = __toESM(require("react"));
851
+ var import_react10 = __toESM(require("react"));
806
852
  var import_joy14 = require("@mui/joy");
807
853
  var import_joy15 = require("@mui/joy");
808
854
  var import_useMenuButton = require("@mui/base/useMenuButton");
809
- var DropdownNestedRegistryContext = (0, import_react9.createContext)(null);
855
+ var DropdownNestedRegistryContext = (0, import_react10.createContext)(null);
810
856
  function Dropdown({ open: openProp, defaultOpen = false, onOpenChange, ...rest }) {
811
- const [nestedCount, setNestedCount] = (0, import_react9.useState)(0);
857
+ const [nestedCount, setNestedCount] = (0, import_react10.useState)(0);
812
858
  const [open, setOpen] = useControlledState(openProp, defaultOpen);
813
- const registry = (0, import_react9.useMemo)(
859
+ const registry = (0, import_react10.useMemo)(
814
860
  () => ({
815
861
  register: () => setNestedCount((c) => c + 1),
816
862
  unregister: () => setNestedCount((c) => Math.max(0, c - 1))
817
863
  }),
818
864
  []
819
865
  );
820
- const handleOpenChange = (0, import_react9.useCallback)(
866
+ const handleOpenChange = (0, import_react10.useCallback)(
821
867
  (event, isOpen) => {
822
868
  if (nestedCount > 0 && !isOpen && event?.type === "blur") {
823
869
  return;
@@ -827,7 +873,7 @@ function Dropdown({ open: openProp, defaultOpen = false, onOpenChange, ...rest }
827
873
  },
828
874
  [nestedCount, setOpen, onOpenChange]
829
875
  );
830
- return /* @__PURE__ */ import_react9.default.createElement(DropdownNestedRegistryContext.Provider, { value: registry }, /* @__PURE__ */ import_react9.default.createElement(import_joy14.Dropdown, { open, onOpenChange: handleOpenChange, ...rest }));
876
+ return /* @__PURE__ */ import_react10.default.createElement(DropdownNestedRegistryContext.Provider, { value: registry }, /* @__PURE__ */ import_react10.default.createElement(import_joy14.Dropdown, { open, onOpenChange: handleOpenChange, ...rest }));
831
877
  }
832
878
  Dropdown.displayName = "Dropdown";
833
879
 
@@ -850,29 +896,29 @@ function Breadcrumbs(props) {
850
896
  } = props;
851
897
  const Crumb = (props2) => {
852
898
  if (props2.type === "link" && Link4) {
853
- return /* @__PURE__ */ import_react10.default.createElement(Link4, { to: props2.linkHref, href: props2.linkHref, ...linkProps }, props2.label);
899
+ return /* @__PURE__ */ import_react11.default.createElement(Link4, { to: props2.linkHref, href: props2.linkHref, ...linkProps }, props2.label);
854
900
  } else {
855
- return /* @__PURE__ */ import_react10.default.createElement(Typography_default, null, props2.label);
901
+ return /* @__PURE__ */ import_react11.default.createElement(Typography_default, null, props2.label);
856
902
  }
857
903
  };
858
904
  if (!collapsed) {
859
- 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 })));
905
+ 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 })));
860
906
  }
861
907
  const _endCrumbCount = Math.max(1, endCrumbCount);
862
- const frontCrumbs = crumbs.slice(0, startCrumbCount).map((crumb) => /* @__PURE__ */ import_react10.default.createElement(Crumb, { key: `breadcrumb-${crumb.label}`, ...crumb }));
863
- 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 }));
864
- 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 })));
865
- 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);
908
+ const frontCrumbs = crumbs.slice(0, startCrumbCount).map((crumb) => /* @__PURE__ */ import_react11.default.createElement(Crumb, { key: `breadcrumb-${crumb.label}`, ...crumb }));
909
+ 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 }));
910
+ 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 })));
911
+ 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);
866
912
  }
867
913
  Breadcrumbs.displayName = "Breadcrumbs";
868
914
 
869
915
  // src/components/Button/Button.tsx
870
- var import_react11 = __toESM(require("react"));
916
+ var import_react12 = __toESM(require("react"));
871
917
  var import_joy17 = require("@mui/joy");
872
918
  var import_framer_motion11 = require("framer-motion");
873
919
  var MotionButton = (0, import_framer_motion11.motion)(import_joy17.Button);
874
- var Button = (0, import_react11.forwardRef)(({ ...props }, ref) => {
875
- return /* @__PURE__ */ import_react11.default.createElement(MotionButton, { ref, ...props });
920
+ var Button = (0, import_react12.forwardRef)(({ ...props }, ref) => {
921
+ return /* @__PURE__ */ import_react12.default.createElement(MotionButton, { ref, ...props });
876
922
  });
877
923
  Button.displayName = "Button";
878
924
 
@@ -880,19 +926,19 @@ Button.displayName = "Button";
880
926
  var Button_default = Button;
881
927
 
882
928
  // src/components/Calendar/Calendar.tsx
883
- var import_react15 = __toESM(require("react"));
929
+ var import_react16 = __toESM(require("react"));
884
930
  var import_joy20 = require("@mui/joy");
885
931
  var import_ChevronLeft = __toESM(require("@mui/icons-material/ChevronLeft"));
886
932
  var import_ChevronRight = __toESM(require("@mui/icons-material/ChevronRight"));
887
933
  var import_framer_motion13 = require("framer-motion");
888
934
 
889
935
  // src/components/Tooltip/Tooltip.tsx
890
- var import_react12 = __toESM(require("react"));
936
+ var import_react13 = __toESM(require("react"));
891
937
  var import_joy18 = require("@mui/joy");
892
938
  var import_framer_motion12 = require("framer-motion");
893
939
  var MotionTooltip = (0, import_framer_motion12.motion)(import_joy18.Tooltip);
894
940
  var Tooltip = (props) => {
895
- return /* @__PURE__ */ import_react12.default.createElement(MotionTooltip, { ...props });
941
+ return /* @__PURE__ */ import_react13.default.createElement(MotionTooltip, { ...props });
896
942
  };
897
943
  Tooltip.displayName = "Tooltip";
898
944
 
@@ -974,43 +1020,43 @@ var isSameMonth = (date1, date2) => {
974
1020
  };
975
1021
 
976
1022
  // src/components/Calendar/hooks/use-calendar-props.ts
977
- var import_react13 = require("react");
1023
+ var import_react14 = require("react");
978
1024
  var import_joy19 = require("@mui/joy");
979
1025
  var resolveView = (view, views) => {
980
1026
  return views.includes(view) ? view : views[0];
981
1027
  };
982
1028
  var useCalendarProps = (inProps) => {
983
- const [uncontrolledView, setUncontrolledView] = (0, import_react13.useState)(
1029
+ const [uncontrolledView, setUncontrolledView] = (0, import_react14.useState)(
984
1030
  () => resolveView(inProps.view || "day", inProps.views || ["day", "month"])
985
1031
  );
986
- const [uncontrolledValue, setUncontrolledValue] = (0, import_react13.useState)(
1032
+ const [uncontrolledValue, setUncontrolledValue] = (0, import_react14.useState)(
987
1033
  inProps.defaultValue
988
1034
  );
989
- const [viewMonth, setViewMonth] = (0, import_react13.useState)(() => {
1035
+ const [viewMonth, setViewMonth] = (0, import_react14.useState)(() => {
990
1036
  const today = /* @__PURE__ */ new Date();
991
1037
  today.setDate(1);
992
1038
  today.setHours(0, 0, 0, 0);
993
1039
  return inProps.value?.[0] || inProps.defaultValue?.[0] || today;
994
1040
  });
995
- const [[page, direction], setPage] = (0, import_react13.useState)([0, 0]);
1041
+ const [[page, direction], setPage] = (0, import_react14.useState)([0, 0]);
996
1042
  const resolvedView = inProps.view ?? uncontrolledView;
997
- const resolvedMinDate = (0, import_react13.useMemo)(() => {
1043
+ const resolvedMinDate = (0, import_react14.useMemo)(() => {
998
1044
  const minDate = inProps.minDate || /* @__PURE__ */ new Date(0);
999
1045
  minDate.setHours(0, 0, 0, 0);
1000
1046
  return minDate;
1001
1047
  }, [inProps.minDate]);
1002
- const resolvedMaxDate = (0, import_react13.useMemo)(() => {
1048
+ const resolvedMaxDate = (0, import_react14.useMemo)(() => {
1003
1049
  const maxDate = inProps.maxDate || /* @__PURE__ */ new Date(864e13);
1004
1050
  maxDate.setHours(0, 0, 0, 0);
1005
1051
  return maxDate;
1006
1052
  }, [inProps.maxDate]);
1007
- const paginate = (0, import_react13.useCallback)(
1053
+ const paginate = (0, import_react14.useCallback)(
1008
1054
  (newDirection) => {
1009
1055
  setPage([page + newDirection, newDirection]);
1010
1056
  },
1011
1057
  [page]
1012
1058
  );
1013
- const handleViewMonthChange = (0, import_react13.useCallback)(
1059
+ const handleViewMonthChange = (0, import_react14.useCallback)(
1014
1060
  (newMonth) => {
1015
1061
  setViewMonth(newMonth);
1016
1062
  if (resolvedView === "month") {
@@ -1058,22 +1104,22 @@ var useCalendarProps = (inProps) => {
1058
1104
  },
1059
1105
  name: "Calendar"
1060
1106
  });
1061
- const ownerState = (0, import_react13.useMemo)(() => ({ ...props, viewMonth, direction }), [props, viewMonth, direction]);
1107
+ const ownerState = (0, import_react14.useMemo)(() => ({ ...props, viewMonth, direction }), [props, viewMonth, direction]);
1062
1108
  return [props, ownerState];
1063
1109
  };
1064
1110
 
1065
1111
  // src/components/Calendar/hooks/use-calendar.ts
1066
- var import_react14 = require("react");
1112
+ var import_react15 = require("react");
1067
1113
  var useCalendar = (ownerState) => {
1068
- const [localHoverDay, setLocalHoverDay] = (0, import_react14.useState)(null);
1069
- const [localHoverMonth, setLocalHoverMonth] = (0, import_react14.useState)(null);
1114
+ const [localHoverDay, setLocalHoverDay] = (0, import_react15.useState)(null);
1115
+ const [localHoverMonth, setLocalHoverMonth] = (0, import_react15.useState)(null);
1070
1116
  const hoverDay = ownerState.hoverDay !== void 0 ? ownerState.hoverDay : localHoverDay;
1071
1117
  const setHoverDay = ownerState.onHoverDayChange ?? setLocalHoverDay;
1072
1118
  const hoverMonth = ownerState.hoverMonth !== void 0 ? ownerState.hoverMonth : localHoverMonth;
1073
1119
  const setHoverMonth = ownerState.onHoverMonthChange ?? setLocalHoverMonth;
1074
1120
  return {
1075
1121
  calendarTitle: ownerState.view === "month" ? getYearName(ownerState.viewMonth, ownerState.locale || "default") : getMonthName(ownerState.viewMonth, ownerState.locale || "default"),
1076
- onPrev: (0, import_react14.useCallback)(() => {
1122
+ onPrev: (0, import_react15.useCallback)(() => {
1077
1123
  if (ownerState.view === "day") {
1078
1124
  const currentDate = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
1079
1125
  const currentYear = currentDate.getFullYear();
@@ -1090,7 +1136,7 @@ var useCalendar = (ownerState) => {
1090
1136
  ownerState.onMonthChange?.(prevYear);
1091
1137
  }
1092
1138
  }, [ownerState.onMonthChange, ownerState.viewMonth, ownerState.view]),
1093
- onNext: (0, import_react14.useCallback)(() => {
1139
+ onNext: (0, import_react15.useCallback)(() => {
1094
1140
  if (ownerState.view === "day") {
1095
1141
  const currentDate = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
1096
1142
  const currentYear = currentDate.getFullYear();
@@ -1107,7 +1153,7 @@ var useCalendar = (ownerState) => {
1107
1153
  ownerState.onMonthChange?.(nextYear);
1108
1154
  }
1109
1155
  }, [ownerState.onMonthChange, ownerState.viewMonth, ownerState.view]),
1110
- getDayCellProps: (0, import_react14.useCallback)(
1156
+ getDayCellProps: (0, import_react15.useCallback)(
1111
1157
  (day) => {
1112
1158
  const thisDay = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
1113
1159
  thisDay.setHours(0, 0, 0, 0);
@@ -1122,7 +1168,7 @@ var useCalendar = (ownerState) => {
1122
1168
  },
1123
1169
  [ownerState.rangeSelection, ownerState.value, ownerState.viewMonth, hoverDay]
1124
1170
  ),
1125
- getMonthCellProps: (0, import_react14.useCallback)(
1171
+ getMonthCellProps: (0, import_react15.useCallback)(
1126
1172
  (monthIndex) => {
1127
1173
  const thisMonth = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
1128
1174
  thisMonth.setDate(1);
@@ -1139,7 +1185,7 @@ var useCalendar = (ownerState) => {
1139
1185
  },
1140
1186
  [ownerState.rangeSelection, ownerState.value, ownerState.viewMonth, hoverMonth]
1141
1187
  ),
1142
- getPickerDayProps: (0, import_react14.useCallback)(
1188
+ getPickerDayProps: (0, import_react15.useCallback)(
1143
1189
  (day) => {
1144
1190
  const thisDay = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
1145
1191
  thisDay.setHours(0, 0, 0, 0);
@@ -1193,7 +1239,7 @@ var useCalendar = (ownerState) => {
1193
1239
  hoverDay
1194
1240
  ]
1195
1241
  ),
1196
- getPickerMonthProps: (0, import_react14.useCallback)(
1242
+ getPickerMonthProps: (0, import_react15.useCallback)(
1197
1243
  (monthIndex) => {
1198
1244
  const thisMonth = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
1199
1245
  thisMonth.setDate(1);
@@ -1490,9 +1536,9 @@ var swipePower = (offset, velocity) => {
1490
1536
  var PickerDays = (props) => {
1491
1537
  const { ownerState } = props;
1492
1538
  const { getPickerDayProps, getDayCellProps } = useCalendar(ownerState);
1493
- const calendarDates = (0, import_react15.useMemo)(() => getCalendarDates(ownerState.viewMonth), [ownerState.viewMonth]);
1494
- const weekdayNames = (0, import_react15.useMemo)(() => getWeekdayNames(ownerState.locale || "default"), [ownerState.locale]);
1495
- 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(
1539
+ const calendarDates = (0, import_react16.useMemo)(() => getCalendarDates(ownerState.viewMonth), [ownerState.viewMonth]);
1540
+ const weekdayNames = (0, import_react16.useMemo)(() => getWeekdayNames(ownerState.locale || "default"), [ownerState.locale]);
1541
+ 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(
1496
1542
  CalendarViewTable,
1497
1543
  {
1498
1544
  key: `${ownerState.viewMonth.toString()}_${ownerState.direction}`,
@@ -1521,10 +1567,10 @@ var PickerDays = (props) => {
1521
1567
  }
1522
1568
  }
1523
1569
  },
1524
- /* @__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" }))))),
1525
- /* @__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(
1526
- (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" }))
1527
- )), 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 } })))))
1570
+ /* @__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" }))))),
1571
+ /* @__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(
1572
+ (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" }))
1573
+ )), 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 } })))))
1528
1574
  )));
1529
1575
  };
1530
1576
  var PickerMonths = (props) => {
@@ -1541,7 +1587,7 @@ var PickerMonths = (props) => {
1541
1587
  [[]]
1542
1588
  );
1543
1589
  const isMonthPicker = !ownerState.views?.find((view) => view === "day");
1544
- 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(
1590
+ 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(
1545
1591
  CalendarViewTable,
1546
1592
  {
1547
1593
  key: `${ownerState.viewMonth.getFullYear()}_${ownerState.direction}`,
@@ -1570,16 +1616,16 @@ var PickerMonths = (props) => {
1570
1616
  }
1571
1617
  }
1572
1618
  },
1573
- /* @__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 } })))))
1619
+ /* @__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 } })))))
1574
1620
  )));
1575
1621
  };
1576
1622
  var PlainPickerDays = ({ ownerState }) => {
1577
1623
  const { getPickerDayProps, getDayCellProps } = useCalendar(ownerState);
1578
- const calendarDates = (0, import_react15.useMemo)(() => getCalendarDates(ownerState.viewMonth), [ownerState.viewMonth]);
1579
- const weekdayNames = (0, import_react15.useMemo)(() => getWeekdayNames(ownerState.locale || "default"), [ownerState.locale]);
1580
- 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(
1581
- (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" }))
1582
- )), 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 } }))))));
1624
+ const calendarDates = (0, import_react16.useMemo)(() => getCalendarDates(ownerState.viewMonth), [ownerState.viewMonth]);
1625
+ const weekdayNames = (0, import_react16.useMemo)(() => getWeekdayNames(ownerState.locale || "default"), [ownerState.locale]);
1626
+ 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(
1627
+ (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" }))
1628
+ )), 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 } }))))));
1583
1629
  };
1584
1630
  var MultiMonthPickerDays = ({
1585
1631
  panels,
@@ -1598,7 +1644,7 @@ var MultiMonthPickerDays = ({
1598
1644
  })
1599
1645
  };
1600
1646
  const key = `${panels[0].viewMonth.toISOString()}_${direction}`;
1601
- 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(
1647
+ 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(
1602
1648
  import_framer_motion13.motion.div,
1603
1649
  {
1604
1650
  key,
@@ -1628,7 +1674,7 @@ var MultiMonthPickerDays = ({
1628
1674
  },
1629
1675
  style: { display: "flex", gap: `${CALENDAR_PANEL_GAP}px`, top: 0, left: 0, width: "100%" }
1630
1676
  },
1631
- panels.map((panelOwnerState) => /* @__PURE__ */ import_react15.default.createElement(
1677
+ panels.map((panelOwnerState) => /* @__PURE__ */ import_react16.default.createElement(
1632
1678
  "div",
1633
1679
  {
1634
1680
  key: panelOwnerState.viewMonth.toISOString(),
@@ -1640,7 +1686,7 @@ var MultiMonthPickerDays = ({
1640
1686
  boxSizing: "border-box"
1641
1687
  }
1642
1688
  },
1643
- /* @__PURE__ */ import_react15.default.createElement(PlainPickerDays, { ownerState: panelOwnerState })
1689
+ /* @__PURE__ */ import_react16.default.createElement(PlainPickerDays, { ownerState: panelOwnerState })
1644
1690
  ))
1645
1691
  )));
1646
1692
  };
@@ -1657,7 +1703,7 @@ var CalendarPanel = ({
1657
1703
  const showPrev = panelIndex === 0;
1658
1704
  const showNext = panelIndex === totalPanels - 1;
1659
1705
  const title = ownerState.view === "month" ? getYearName(ownerState.viewMonth, ownerState.locale || "default") : getMonthName(ownerState.viewMonth, ownerState.locale || "default");
1660
- 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(
1706
+ 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(
1661
1707
  IconButton_default,
1662
1708
  {
1663
1709
  size: "sm",
@@ -1665,8 +1711,8 @@ var CalendarPanel = ({
1665
1711
  "aria-label": `Previous ${ownerState.view === "day" ? "Month" : "Year"}`,
1666
1712
  style: { visibility: showPrev ? "visible" : "hidden" }
1667
1713
  },
1668
- /* @__PURE__ */ import_react15.default.createElement(import_ChevronLeft.default, null)
1669
- ), /* @__PURE__ */ import_react15.default.createElement(
1714
+ /* @__PURE__ */ import_react16.default.createElement(import_ChevronLeft.default, null)
1715
+ ), /* @__PURE__ */ import_react16.default.createElement(
1670
1716
  Tooltip_default,
1671
1717
  {
1672
1718
  title: monthViewHintMessage,
@@ -1678,7 +1724,7 @@ var CalendarPanel = ({
1678
1724
  disableTouchListener: true,
1679
1725
  variant: "solid"
1680
1726
  },
1681
- /* @__PURE__ */ import_react15.default.createElement(
1727
+ /* @__PURE__ */ import_react16.default.createElement(
1682
1728
  CalendarSwitchViewButton,
1683
1729
  {
1684
1730
  ownerState,
@@ -1689,7 +1735,7 @@ var CalendarPanel = ({
1689
1735
  },
1690
1736
  title
1691
1737
  )
1692
- ), /* @__PURE__ */ import_react15.default.createElement(
1738
+ ), /* @__PURE__ */ import_react16.default.createElement(
1693
1739
  IconButton_default,
1694
1740
  {
1695
1741
  size: "sm",
@@ -1697,10 +1743,10 @@ var CalendarPanel = ({
1697
1743
  "aria-label": `Next ${ownerState.view === "day" ? "Month" : "Year"}`,
1698
1744
  style: { visibility: showNext ? "visible" : "hidden" }
1699
1745
  },
1700
- /* @__PURE__ */ import_react15.default.createElement(import_ChevronRight.default, null)
1746
+ /* @__PURE__ */ import_react16.default.createElement(import_ChevronRight.default, null)
1701
1747
  )));
1702
1748
  };
1703
- var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
1749
+ var Calendar = (0, import_react16.forwardRef)((inProps, ref) => {
1704
1750
  const [props, ownerState] = useCalendarProps(inProps);
1705
1751
  const {
1706
1752
  value,
@@ -1716,42 +1762,44 @@ var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
1716
1762
  maxDate,
1717
1763
  disableFuture,
1718
1764
  disablePast,
1765
+ shouldDisableDate,
1766
+ slots,
1719
1767
  numberOfMonths,
1720
1768
  ...others
1721
1769
  } = props;
1722
1770
  const { calendarTitle, onPrev, onNext } = useCalendar(ownerState);
1723
- const [isMonthViewAssistHintOpen, setIsMonthViewAssistHintOpen] = (0, import_react15.useState)(false);
1724
- const monthNavClickTimestampsRef = (0, import_react15.useRef)([]);
1725
- const monthViewAssistHintShownInSessionRef = (0, import_react15.useRef)(false);
1726
- const monthViewAssistHintTimeoutRef = (0, import_react15.useRef)(null);
1727
- const [hoverDay, setHoverDay] = (0, import_react15.useState)(null);
1728
- const [hoverMonth, setHoverMonth] = (0, import_react15.useState)(null);
1771
+ const [isMonthViewAssistHintOpen, setIsMonthViewAssistHintOpen] = (0, import_react16.useState)(false);
1772
+ const monthNavClickTimestampsRef = (0, import_react16.useRef)([]);
1773
+ const monthViewAssistHintShownInSessionRef = (0, import_react16.useRef)(false);
1774
+ const monthViewAssistHintTimeoutRef = (0, import_react16.useRef)(null);
1775
+ const [hoverDay, setHoverDay] = (0, import_react16.useState)(null);
1776
+ const [hoverMonth, setHoverMonth] = (0, import_react16.useState)(null);
1729
1777
  const resolvedNumberOfMonths = numberOfMonths ?? 1;
1730
1778
  const hasEndDate = Boolean(value?.[1]);
1731
1779
  const isRangeHintEligible = Boolean(rangeSelection && !hasEndDate);
1732
1780
  const isHintEligible = Boolean(view === "day" && (!rangeSelection || isRangeHintEligible));
1733
1781
  const monthViewHintMessage = MONTH_VIEW_HINT_MESSAGE;
1734
- (0, import_react15.useEffect)(() => {
1782
+ (0, import_react16.useEffect)(() => {
1735
1783
  if (!isHintEligible) {
1736
1784
  monthNavClickTimestampsRef.current = [];
1737
1785
  setIsMonthViewAssistHintOpen(false);
1738
1786
  }
1739
1787
  }, [isHintEligible]);
1740
- (0, import_react15.useEffect)(() => {
1788
+ (0, import_react16.useEffect)(() => {
1741
1789
  return () => {
1742
1790
  if (monthViewAssistHintTimeoutRef.current) {
1743
1791
  clearTimeout(monthViewAssistHintTimeoutRef.current);
1744
1792
  }
1745
1793
  };
1746
1794
  }, []);
1747
- const closeMonthViewAssistHint = (0, import_react15.useCallback)(() => {
1795
+ const closeMonthViewAssistHint = (0, import_react16.useCallback)(() => {
1748
1796
  if (monthViewAssistHintTimeoutRef.current) {
1749
1797
  clearTimeout(monthViewAssistHintTimeoutRef.current);
1750
1798
  monthViewAssistHintTimeoutRef.current = null;
1751
1799
  }
1752
1800
  setIsMonthViewAssistHintOpen(false);
1753
1801
  }, []);
1754
- const showMonthViewAssistHint = (0, import_react15.useCallback)(() => {
1802
+ const showMonthViewAssistHint = (0, import_react16.useCallback)(() => {
1755
1803
  const now = Date.now();
1756
1804
  if (monthViewAssistHintShownInSessionRef.current) return;
1757
1805
  if (now - lastMonthViewAssistHintShownAt < MONTH_VIEW_HINT_COOLDOWN_MS) return;
@@ -1766,7 +1814,7 @@ var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
1766
1814
  monthViewAssistHintTimeoutRef.current = null;
1767
1815
  }, MONTH_VIEW_HINT_DURATION_MS);
1768
1816
  }, []);
1769
- const trackFastMonthNavigation = (0, import_react15.useCallback)(() => {
1817
+ const trackFastMonthNavigation = (0, import_react16.useCallback)(() => {
1770
1818
  if (!isHintEligible) return;
1771
1819
  const now = Date.now();
1772
1820
  monthNavClickTimestampsRef.current = [
@@ -1777,15 +1825,15 @@ var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
1777
1825
  showMonthViewAssistHint();
1778
1826
  }
1779
1827
  }, [isHintEligible, showMonthViewAssistHint]);
1780
- const handlePrevClick = (0, import_react15.useCallback)(() => {
1828
+ const handlePrevClick = (0, import_react16.useCallback)(() => {
1781
1829
  onPrev();
1782
1830
  trackFastMonthNavigation();
1783
1831
  }, [onPrev, trackFastMonthNavigation]);
1784
- const handleNextClick = (0, import_react15.useCallback)(() => {
1832
+ const handleNextClick = (0, import_react16.useCallback)(() => {
1785
1833
  onNext();
1786
1834
  trackFastMonthNavigation();
1787
1835
  }, [onNext, trackFastMonthNavigation]);
1788
- const handleSwitchViewClick = (0, import_react15.useCallback)(() => {
1836
+ const handleSwitchViewClick = (0, import_react16.useCallback)(() => {
1789
1837
  closeMonthViewAssistHint();
1790
1838
  onViewChange?.();
1791
1839
  }, [closeMonthViewAssistHint, onViewChange]);
@@ -1805,9 +1853,9 @@ var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
1805
1853
  onHoverMonthChange: setHoverMonth
1806
1854
  };
1807
1855
  });
1808
- return /* @__PURE__ */ import_react15.default.createElement(CalendarRoot, { ref, ...others, style: { maxWidth: `${maxWidth}px` } }, view === "month" ? (
1856
+ return /* @__PURE__ */ import_react16.default.createElement(CalendarRoot, { ref, ...others, style: { maxWidth: `${maxWidth}px` } }, view === "month" ? (
1809
1857
  // Month view: single header + single month grid (consistent with single-month path)
1810
- /* @__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(
1858
+ /* @__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(
1811
1859
  Tooltip_default,
1812
1860
  {
1813
1861
  title: monthViewHintMessage,
@@ -1819,7 +1867,7 @@ var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
1819
1867
  disableTouchListener: true,
1820
1868
  variant: "solid"
1821
1869
  },
1822
- /* @__PURE__ */ import_react15.default.createElement(
1870
+ /* @__PURE__ */ import_react16.default.createElement(
1823
1871
  CalendarSwitchViewButton,
1824
1872
  {
1825
1873
  ownerState,
@@ -1830,8 +1878,8 @@ var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
1830
1878
  },
1831
1879
  calendarTitle
1832
1880
  )
1833
- ), /* @__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 }))
1834
- ) : /* @__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(
1881
+ ), /* @__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 }))
1882
+ ) : /* @__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(
1835
1883
  CalendarPanel,
1836
1884
  {
1837
1885
  key: panelOwnerState.viewMonth.toISOString(),
@@ -1844,7 +1892,7 @@ var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
1844
1892
  isMonthViewAssistHintOpen,
1845
1893
  monthViewHintMessage
1846
1894
  }
1847
- ))), /* @__PURE__ */ import_react15.default.createElement(
1895
+ ))), /* @__PURE__ */ import_react16.default.createElement(
1848
1896
  MultiMonthPickerDays,
1849
1897
  {
1850
1898
  panels,
@@ -1853,7 +1901,7 @@ var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
1853
1901
  }
1854
1902
  )));
1855
1903
  }
1856
- 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(
1904
+ 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(
1857
1905
  Tooltip_default,
1858
1906
  {
1859
1907
  title: monthViewHintMessage,
@@ -1865,7 +1913,7 @@ var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
1865
1913
  disableTouchListener: true,
1866
1914
  variant: "solid"
1867
1915
  },
1868
- /* @__PURE__ */ import_react15.default.createElement(
1916
+ /* @__PURE__ */ import_react16.default.createElement(
1869
1917
  CalendarSwitchViewButton,
1870
1918
  {
1871
1919
  ownerState,
@@ -1876,7 +1924,7 @@ var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
1876
1924
  },
1877
1925
  calendarTitle
1878
1926
  )
1879
- ), /* @__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 }));
1927
+ ), /* @__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 }));
1880
1928
  });
1881
1929
  Calendar.displayName = "Calendar";
1882
1930
 
@@ -1903,12 +1951,12 @@ var CardOverflow = MotionCardOverflow;
1903
1951
  CardOverflow.displayName = "CardOverflow";
1904
1952
 
1905
1953
  // src/components/Checkbox/Checkbox.tsx
1906
- var import_react16 = __toESM(require("react"));
1954
+ var import_react17 = __toESM(require("react"));
1907
1955
  var import_joy22 = require("@mui/joy");
1908
1956
  var import_framer_motion15 = require("framer-motion");
1909
1957
  var MotionCheckbox = (0, import_framer_motion15.motion)(import_joy22.Checkbox);
1910
1958
  var Checkbox = (props) => {
1911
- return /* @__PURE__ */ import_react16.default.createElement(MotionCheckbox, { ...props });
1959
+ return /* @__PURE__ */ import_react17.default.createElement(MotionCheckbox, { ...props });
1912
1960
  };
1913
1961
  Checkbox.displayName = "Checkbox";
1914
1962
 
@@ -1917,7 +1965,7 @@ var Checkbox_default = Checkbox;
1917
1965
 
1918
1966
  // src/components/Container/Container.tsx
1919
1967
  var import_joy23 = require("@mui/joy");
1920
- var import_react17 = __toESM(require("react"));
1968
+ var import_react18 = __toESM(require("react"));
1921
1969
  var ContainerRoot = (0, import_joy23.styled)("div", {
1922
1970
  name: "Container",
1923
1971
  slot: "root",
@@ -1943,24 +1991,24 @@ var ContainerRoot = (0, import_joy23.styled)("div", {
1943
1991
  paddingRight: theme.breakpoints.values[overrideBreakpoint] >= theme.breakpoints.values.lg ? theme.spacing(8) : theme.spacing(4)
1944
1992
  } : null
1945
1993
  ]);
1946
- var Container = (0, import_react17.forwardRef)(function Container2(props, ref) {
1947
- return /* @__PURE__ */ import_react17.default.createElement(ContainerRoot, { ref, ...props });
1994
+ var Container = (0, import_react18.forwardRef)(function Container2(props, ref) {
1995
+ return /* @__PURE__ */ import_react18.default.createElement(ContainerRoot, { ref, ...props });
1948
1996
  });
1949
1997
  Container.displayName = "Container";
1950
1998
 
1951
1999
  // src/components/CurrencyInput/CurrencyInput.tsx
1952
- var import_react19 = __toESM(require("react"));
2000
+ var import_react20 = __toESM(require("react"));
1953
2001
  var import_react_number_format = require("react-number-format");
1954
2002
 
1955
2003
  // src/components/Input/Input.tsx
1956
- var import_react18 = __toESM(require("react"));
2004
+ var import_react19 = __toESM(require("react"));
1957
2005
  var import_joy24 = require("@mui/joy");
1958
2006
  var import_framer_motion16 = require("framer-motion");
1959
2007
  var import_Close2 = __toESM(require("@mui/icons-material/Close"));
1960
2008
  var import_Visibility = __toESM(require("@mui/icons-material/Visibility"));
1961
2009
  var import_VisibilityOff = __toESM(require("@mui/icons-material/VisibilityOff"));
1962
2010
  var MotionInput = (0, import_framer_motion16.motion)(import_joy24.Input);
1963
- var Input = import_react18.default.forwardRef((props, ref) => {
2011
+ var Input = import_react19.default.forwardRef((props, ref) => {
1964
2012
  const {
1965
2013
  label,
1966
2014
  helperText,
@@ -1987,11 +2035,11 @@ var Input = import_react18.default.forwardRef((props, ref) => {
1987
2035
  if (type === "password" && innerProps.endDecorator) {
1988
2036
  console.warn('Input: endDecorator is not supported when type="password"');
1989
2037
  }
1990
- const [passwordVisible, setPasswordVisible] = (0, import_react18.useState)(false);
2038
+ const [passwordVisible, setPasswordVisible] = (0, import_react19.useState)(false);
1991
2039
  const [value, setValue] = useControlledState(
1992
2040
  valueProp,
1993
2041
  defaultValueProp ?? null,
1994
- (0, import_react18.useCallback)(
2042
+ (0, import_react19.useCallback)(
1995
2043
  (value2) => {
1996
2044
  onChange?.({
1997
2045
  /**
@@ -2018,7 +2066,7 @@ var Input = import_react18.default.forwardRef((props, ref) => {
2018
2066
  const actualType = type === "password" && passwordVisible ? "text" : type;
2019
2067
  const isPasswordType = type === "password";
2020
2068
  const showPasswordToggle = isPasswordType && !disableTogglePasswordButton;
2021
- const input = /* @__PURE__ */ import_react18.default.createElement(
2069
+ const input = /* @__PURE__ */ import_react19.default.createElement(
2022
2070
  MotionInput,
2023
2071
  {
2024
2072
  value: displayValue ?? "",
@@ -2033,7 +2081,7 @@ var Input = import_react18.default.forwardRef((props, ref) => {
2033
2081
  ...innerProps.slotProps
2034
2082
  },
2035
2083
  ...innerProps,
2036
- endDecorator: isPasswordType ? showPasswordToggle ? /* @__PURE__ */ import_react18.default.createElement(Stack_default, { gap: 1, direction: "row" }, /* @__PURE__ */ import_react18.default.createElement(
2084
+ endDecorator: isPasswordType ? showPasswordToggle ? /* @__PURE__ */ import_react19.default.createElement(Stack_default, { gap: 1, direction: "row" }, /* @__PURE__ */ import_react19.default.createElement(
2037
2085
  IconButton_default,
2038
2086
  {
2039
2087
  onMouseDown: (e) => e.preventDefault(),
@@ -2041,19 +2089,19 @@ var Input = import_react18.default.forwardRef((props, ref) => {
2041
2089
  disabled,
2042
2090
  "aria-label": passwordVisible ? "Hide password" : "Show password"
2043
2091
  },
2044
- passwordVisible ? /* @__PURE__ */ import_react18.default.createElement(import_VisibilityOff.default, null) : /* @__PURE__ */ import_react18.default.createElement(import_Visibility.default, null)
2045
- )) : null : enableClearable ? /* @__PURE__ */ import_react18.default.createElement(Stack_default, { gap: 1, direction: "row" }, innerProps.endDecorator, displayValue && /* @__PURE__ */ import_react18.default.createElement(
2092
+ passwordVisible ? /* @__PURE__ */ import_react19.default.createElement(import_VisibilityOff.default, null) : /* @__PURE__ */ import_react19.default.createElement(import_Visibility.default, null)
2093
+ )) : null : enableClearable ? /* @__PURE__ */ import_react19.default.createElement(Stack_default, { gap: 1, direction: "row" }, innerProps.endDecorator, displayValue && /* @__PURE__ */ import_react19.default.createElement(
2046
2094
  IconButton_default,
2047
2095
  {
2048
2096
  onMouseDown: (e) => e.preventDefault(),
2049
2097
  onClick: handleClear,
2050
2098
  "aria-label": "Clear"
2051
2099
  },
2052
- /* @__PURE__ */ import_react18.default.createElement(import_Close2.default, null)
2100
+ /* @__PURE__ */ import_react19.default.createElement(import_Close2.default, null)
2053
2101
  )) : innerProps.endDecorator
2054
2102
  }
2055
2103
  );
2056
- return /* @__PURE__ */ import_react18.default.createElement(
2104
+ return /* @__PURE__ */ import_react19.default.createElement(
2057
2105
  FormControl_default,
2058
2106
  {
2059
2107
  required,
@@ -2064,9 +2112,9 @@ var Input = import_react18.default.forwardRef((props, ref) => {
2064
2112
  sx,
2065
2113
  className
2066
2114
  },
2067
- label && /* @__PURE__ */ import_react18.default.createElement(FormLabel_default, null, label),
2115
+ label && /* @__PURE__ */ import_react19.default.createElement(FormLabel_default, null, label),
2068
2116
  input,
2069
- helperText && /* @__PURE__ */ import_react18.default.createElement(FormHelperText_default, null, helperText)
2117
+ helperText && /* @__PURE__ */ import_react19.default.createElement(FormHelperText_default, null, helperText)
2070
2118
  );
2071
2119
  });
2072
2120
  Input.displayName = "Input";
@@ -2238,9 +2286,9 @@ var useCurrencySetting = (props) => {
2238
2286
  };
2239
2287
 
2240
2288
  // src/components/CurrencyInput/CurrencyInput.tsx
2241
- var TextMaskAdapter = import_react19.default.forwardRef(function TextMaskAdapter2(props, ref) {
2289
+ var TextMaskAdapter = import_react20.default.forwardRef(function TextMaskAdapter2(props, ref) {
2242
2290
  const { onChange, ...innerProps } = props;
2243
- return /* @__PURE__ */ import_react19.default.createElement(
2291
+ return /* @__PURE__ */ import_react20.default.createElement(
2244
2292
  import_react_number_format.NumericFormat,
2245
2293
  {
2246
2294
  ...innerProps,
@@ -2260,7 +2308,7 @@ var CurrencyInputRoot = (0, import_joy25.styled)(Input_default, {
2260
2308
  slot: "root",
2261
2309
  overridesResolver: (props, styles) => styles.root
2262
2310
  })({});
2263
- var CurrencyInput = import_react19.default.forwardRef(function CurrencyInput2(inProps, ref) {
2311
+ var CurrencyInput = import_react20.default.forwardRef(function CurrencyInput2(inProps, ref) {
2264
2312
  const props = (0, import_joy25.useThemeProps)({ props: inProps, name: "CurrencyInput" });
2265
2313
  const {
2266
2314
  currency = "USD",
@@ -2281,22 +2329,22 @@ var CurrencyInput = import_react19.default.forwardRef(function CurrencyInput2(in
2281
2329
  const [_value, setValue] = useControlledState(
2282
2330
  props.value,
2283
2331
  props.defaultValue ?? null,
2284
- (0, import_react19.useCallback)((value2) => onChange?.({ target: { name, value: value2 } }), [onChange, name])
2332
+ (0, import_react20.useCallback)((value2) => onChange?.({ target: { name, value: value2 } }), [onChange, name])
2285
2333
  );
2286
- const value = (0, import_react19.useMemo)(() => {
2334
+ const value = (0, import_react20.useMemo)(() => {
2287
2335
  if (_value && useMinorUnit) {
2288
2336
  return _value / Math.pow(10, decimalScale);
2289
2337
  }
2290
2338
  return _value;
2291
2339
  }, [_value, useMinorUnit, decimalScale]);
2292
- const max = (0, import_react19.useMemo)(() => {
2340
+ const max = (0, import_react20.useMemo)(() => {
2293
2341
  if (props.max && useMinorUnit) {
2294
2342
  return props.max / Math.pow(10, decimalScale);
2295
2343
  }
2296
2344
  return props.max;
2297
2345
  }, [props.max, useMinorUnit, decimalScale]);
2298
- const isOverLimit = (0, import_react19.useMemo)(() => max != null && value != null && value > max, [max, value]);
2299
- const handleChange = (0, import_react19.useCallback)(
2346
+ const isOverLimit = (0, import_react20.useMemo)(() => max != null && value != null && value > max, [max, value]);
2347
+ const handleChange = (0, import_react20.useCallback)(
2300
2348
  (event) => {
2301
2349
  if (event.target.value === "") {
2302
2350
  setValue(null);
@@ -2307,7 +2355,7 @@ var CurrencyInput = import_react19.default.forwardRef(function CurrencyInput2(in
2307
2355
  },
2308
2356
  [decimalSeparator, useMinorUnit, setValue]
2309
2357
  );
2310
- return /* @__PURE__ */ import_react19.default.createElement(
2358
+ return /* @__PURE__ */ import_react20.default.createElement(
2311
2359
  CurrencyInputRoot,
2312
2360
  {
2313
2361
  ...innerProps,
@@ -2344,7 +2392,7 @@ var CurrencyInput = import_react19.default.forwardRef(function CurrencyInput2(in
2344
2392
  var CurrencyInput_default = CurrencyInput;
2345
2393
 
2346
2394
  // src/components/DataTable/DataTable.tsx
2347
- var import_react29 = __toESM(require("react"));
2395
+ var import_react30 = __toESM(require("react"));
2348
2396
  var import_react_virtual2 = require("@tanstack/react-virtual");
2349
2397
 
2350
2398
  // src/libs/text-measurer.ts
@@ -2572,9 +2620,15 @@ function computeAutoFitWidth(params) {
2572
2620
  if (!isNaN(maxPx) && maxPx > 0) finalWidth = Math.min(finalWidth, maxPx);
2573
2621
  return finalWidth;
2574
2622
  }
2623
+ function getHeaderCellId(tableId, field) {
2624
+ return `${tableId}_header_${sanitizeColumnId(field)}`;
2625
+ }
2626
+ function sanitizeColumnId(field) {
2627
+ return String(field).trim().replace(/\s+/g, "_");
2628
+ }
2575
2629
 
2576
2630
  // src/components/DataTable/styled.tsx
2577
- var import_react20 = __toESM(require("react"));
2631
+ var import_react21 = __toESM(require("react"));
2578
2632
  var import_joy26 = require("@mui/joy");
2579
2633
  var import_framer_motion17 = require("framer-motion");
2580
2634
  var import_ArrowUpwardRounded = __toESM(require("@mui/icons-material/ArrowUpwardRounded"));
@@ -2680,9 +2734,9 @@ var StyledTd = (0, import_joy26.styled)("td")(({ theme }) => ({
2680
2734
  }
2681
2735
  }));
2682
2736
  var MotionSortIcon = (0, import_framer_motion17.motion)(import_ArrowUpwardRounded.default);
2683
- var DefaultLoadingOverlay = () => /* @__PURE__ */ import_react20.default.createElement(import_joy26.LinearProgress, { value: 8, variant: "plain" });
2684
- var DefaultNoRowsOverlay = () => /* @__PURE__ */ import_react20.default.createElement(import_joy26.Typography, { level: "body-sm", textColor: "text.tertiary" }, "No rows");
2685
- var Resizer = (ref, targetRef = ref, onResizeStateChange, onAutoFit) => /* @__PURE__ */ import_react20.default.createElement(
2737
+ var DefaultLoadingOverlay = () => /* @__PURE__ */ import_react21.default.createElement(import_joy26.LinearProgress, { value: 8, variant: "plain" });
2738
+ var DefaultNoRowsOverlay = () => /* @__PURE__ */ import_react21.default.createElement(import_joy26.Typography, { level: "body-sm", textColor: "text.tertiary" }, "No rows");
2739
+ var Resizer = (ref, targetRef = ref, onResizeStateChange, onAutoFit) => /* @__PURE__ */ import_react21.default.createElement(
2686
2740
  Box_default,
2687
2741
  {
2688
2742
  sx: {
@@ -2759,12 +2813,12 @@ var Resizer = (ref, targetRef = ref, onResizeStateChange, onAutoFit) => /* @__PU
2759
2813
  );
2760
2814
 
2761
2815
  // src/components/DataTable/components.tsx
2762
- var import_react25 = __toESM(require("react"));
2816
+ var import_react26 = __toESM(require("react"));
2763
2817
  var import_joy33 = require("@mui/joy");
2764
2818
  var import_framer_motion21 = require("framer-motion");
2765
2819
 
2766
2820
  // src/components/DatePicker/DatePicker.tsx
2767
- var import_react21 = __toESM(require("react"));
2821
+ var import_react22 = __toESM(require("react"));
2768
2822
  var import_react_imask = require("react-imask");
2769
2823
  var import_CalendarToday = __toESM(require("@mui/icons-material/CalendarToday"));
2770
2824
  var import_joy29 = require("@mui/joy");
@@ -2917,9 +2971,9 @@ function parseDate(dateString, format) {
2917
2971
  var formatToPattern = (format) => {
2918
2972
  return format.replace(/YYYY/g, "Y").replace(/MM/g, "M").replace(/DD/g, "D").replace(/[^YMD\s]/g, (match) => `${match}\``);
2919
2973
  };
2920
- var TextMaskAdapter3 = import_react21.default.forwardRef(function TextMaskAdapter4(props, ref) {
2974
+ var TextMaskAdapter3 = import_react22.default.forwardRef(function TextMaskAdapter4(props, ref) {
2921
2975
  const { onChange, format, ...other } = props;
2922
- return /* @__PURE__ */ import_react21.default.createElement(
2976
+ return /* @__PURE__ */ import_react22.default.createElement(
2923
2977
  import_react_imask.IMaskInput,
2924
2978
  {
2925
2979
  ...other,
@@ -2954,7 +3008,7 @@ var TextMaskAdapter3 = import_react21.default.forwardRef(function TextMaskAdapte
2954
3008
  }
2955
3009
  );
2956
3010
  });
2957
- var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
3011
+ var DatePicker = (0, import_react22.forwardRef)((inProps, ref) => {
2958
3012
  const props = (0, import_joy29.useThemeProps)({ props: inProps, name: "DatePicker" });
2959
3013
  const {
2960
3014
  onChange,
@@ -2981,29 +3035,29 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
2981
3035
  presets,
2982
3036
  ...innerProps
2983
3037
  } = props;
2984
- const innerRef = (0, import_react21.useRef)(null);
2985
- const buttonRef = (0, import_react21.useRef)(null);
3038
+ const innerRef = (0, import_react22.useRef)(null);
3039
+ const buttonRef = (0, import_react22.useRef)(null);
2986
3040
  const [rawValue, setValue] = useControlledState(
2987
3041
  props.value,
2988
3042
  props.defaultValue ?? null,
2989
- (0, import_react21.useCallback)(
3043
+ (0, import_react22.useCallback)(
2990
3044
  (value2) => onChange?.({ target: { name: props.name, value: value2 ?? "" } }),
2991
3045
  [props.name, onChange]
2992
3046
  )
2993
3047
  );
2994
3048
  const value = rawValue ?? "";
2995
3049
  const isAlphabeticDisplay = hasAlphabeticMonth(displayFormat);
2996
- const [displayValue, setDisplayValue] = (0, import_react21.useState)(
3050
+ const [displayValue, setDisplayValue] = (0, import_react22.useState)(
2997
3051
  () => value ? formatValueString(parseDate(value, format), displayFormat, locale) : ""
2998
3052
  );
2999
- const [anchorEl, setAnchorEl] = (0, import_react21.useState)(null);
3053
+ const [anchorEl, setAnchorEl] = (0, import_react22.useState)(null);
3000
3054
  const open = Boolean(anchorEl);
3001
- (0, import_react21.useEffect)(() => {
3055
+ (0, import_react22.useEffect)(() => {
3002
3056
  if (!anchorEl) {
3003
3057
  innerRef.current?.blur();
3004
3058
  }
3005
3059
  }, [anchorEl, innerRef]);
3006
- (0, import_react21.useEffect)(() => {
3060
+ (0, import_react22.useEffect)(() => {
3007
3061
  if (value === "") {
3008
3062
  setDisplayValue("");
3009
3063
  return;
@@ -3013,8 +3067,8 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
3013
3067
  setDisplayValue(formattedValue);
3014
3068
  }
3015
3069
  }, [displayFormat, displayValue, format, locale, value]);
3016
- (0, import_react21.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
3017
- const handleChange = (0, import_react21.useCallback)(
3070
+ (0, import_react22.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
3071
+ const handleChange = (0, import_react22.useCallback)(
3018
3072
  (event) => {
3019
3073
  const value2 = event.target.value;
3020
3074
  setDisplayValue(value2 ? formatValueString(parseDate(value2, format), displayFormat, locale) : value2);
@@ -3022,7 +3076,7 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
3022
3076
  },
3023
3077
  [displayFormat, format, locale, setValue]
3024
3078
  );
3025
- const handleDisplayInputChange = (0, import_react21.useCallback)(
3079
+ const handleDisplayInputChange = (0, import_react22.useCallback)(
3026
3080
  (event) => {
3027
3081
  if (event.target.value === "") {
3028
3082
  handleChange({
@@ -3047,7 +3101,7 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
3047
3101
  },
3048
3102
  [displayFormat, format, handleChange, props.name]
3049
3103
  );
3050
- const handleCalendarToggle = (0, import_react21.useCallback)(
3104
+ const handleCalendarToggle = (0, import_react22.useCallback)(
3051
3105
  (event) => {
3052
3106
  setAnchorEl(anchorEl ? null : event.currentTarget);
3053
3107
  setTimeout(() => {
@@ -3056,7 +3110,7 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
3056
3110
  },
3057
3111
  [anchorEl, setAnchorEl, innerRef]
3058
3112
  );
3059
- const handleInputMouseDown = (0, import_react21.useCallback)(
3113
+ const handleInputMouseDown = (0, import_react22.useCallback)(
3060
3114
  (event) => {
3061
3115
  if (inputReadOnly || isAlphabeticDisplay) {
3062
3116
  event.preventDefault();
@@ -3065,7 +3119,7 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
3065
3119
  },
3066
3120
  [inputReadOnly, isAlphabeticDisplay, buttonRef]
3067
3121
  );
3068
- const handleInputClick = (0, import_react21.useCallback)(
3122
+ const handleInputClick = (0, import_react22.useCallback)(
3069
3123
  (event) => {
3070
3124
  if (inputReadOnly && !readOnly) {
3071
3125
  handleCalendarToggle(event);
@@ -3073,7 +3127,7 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
3073
3127
  },
3074
3128
  [inputReadOnly, readOnly, handleCalendarToggle]
3075
3129
  );
3076
- const handlePresetClick = (0, import_react21.useCallback)(
3130
+ const handlePresetClick = (0, import_react22.useCallback)(
3077
3131
  (presetValue) => {
3078
3132
  handleChange({
3079
3133
  target: {
@@ -3085,7 +3139,7 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
3085
3139
  },
3086
3140
  [handleChange, props.name]
3087
3141
  );
3088
- const isPresetDisabled = (0, import_react21.useCallback)(
3142
+ const isPresetDisabled = (0, import_react22.useCallback)(
3089
3143
  (presetValue) => {
3090
3144
  try {
3091
3145
  const date = parseDate(presetValue, format);
@@ -3102,7 +3156,7 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
3102
3156
  },
3103
3157
  [format, minDate, maxDate, disableFuture, disablePast, shouldDisableDate]
3104
3158
  );
3105
- 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(
3159
+ 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(
3106
3160
  Input_default,
3107
3161
  {
3108
3162
  ...innerProps,
@@ -3129,7 +3183,7 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
3129
3183
  }
3130
3184
  },
3131
3185
  sx: { width: "100%" },
3132
- endDecorator: /* @__PURE__ */ import_react21.default.createElement(
3186
+ endDecorator: /* @__PURE__ */ import_react22.default.createElement(
3133
3187
  CalendarButton,
3134
3188
  {
3135
3189
  ref: buttonRef,
@@ -3141,13 +3195,13 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
3141
3195
  "aria-expanded": open,
3142
3196
  disabled
3143
3197
  },
3144
- /* @__PURE__ */ import_react21.default.createElement(import_CalendarToday.default, null)
3198
+ /* @__PURE__ */ import_react22.default.createElement(import_CalendarToday.default, null)
3145
3199
  ),
3146
3200
  label,
3147
3201
  helperText,
3148
3202
  readOnly: readOnly || inputReadOnly || isAlphabeticDisplay
3149
3203
  }
3150
- ), open && /* @__PURE__ */ import_react21.default.createElement(import_base3.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react21.default.createElement(
3204
+ ), open && /* @__PURE__ */ import_react22.default.createElement(import_base3.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react22.default.createElement(
3151
3205
  StyledPopper,
3152
3206
  {
3153
3207
  id: "date-picker-popper",
@@ -3166,7 +3220,7 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
3166
3220
  "aria-label": "Calendar Tooltip",
3167
3221
  "aria-expanded": open
3168
3222
  },
3169
- /* @__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(
3223
+ /* @__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(
3170
3224
  Calendar_default,
3171
3225
  {
3172
3226
  value: value && !Number.isNaN(parseDate(value, format).getTime()) ? [parseDate(value, format), void 0] : void 0,
@@ -3186,14 +3240,14 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
3186
3240
  shouldDisableDate: shouldDisableDate ? (date) => shouldDisableDate(formatValueString(date, format)) : void 0,
3187
3241
  locale
3188
3242
  }
3189
- ), !hideClearButton && /* @__PURE__ */ import_react21.default.createElement(
3243
+ ), !hideClearButton && /* @__PURE__ */ import_react22.default.createElement(
3190
3244
  DialogActions_default,
3191
3245
  {
3192
3246
  sx: {
3193
3247
  p: 1
3194
3248
  }
3195
3249
  },
3196
- /* @__PURE__ */ import_react21.default.createElement(
3250
+ /* @__PURE__ */ import_react22.default.createElement(
3197
3251
  Button_default,
3198
3252
  {
3199
3253
  size,
@@ -3211,9 +3265,9 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
3211
3265
  },
3212
3266
  "Clear"
3213
3267
  )
3214
- )), presets && presets.length > 0 && /* @__PURE__ */ import_react21.default.createElement(PresetPanel, null, presets.map((preset) => {
3268
+ )), presets && presets.length > 0 && /* @__PURE__ */ import_react22.default.createElement(PresetPanel, null, presets.map((preset) => {
3215
3269
  const disabled2 = isPresetDisabled(preset.value);
3216
- return /* @__PURE__ */ import_react21.default.createElement(
3270
+ return /* @__PURE__ */ import_react22.default.createElement(
3217
3271
  PresetItem,
3218
3272
  {
3219
3273
  key: preset.label,
@@ -3234,11 +3288,11 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
3234
3288
  var DatePicker_default = DatePicker;
3235
3289
 
3236
3290
  // src/components/Textarea/Textarea.tsx
3237
- var import_react22 = __toESM(require("react"));
3291
+ var import_react23 = __toESM(require("react"));
3238
3292
  var import_joy30 = require("@mui/joy");
3239
3293
  var import_framer_motion19 = require("framer-motion");
3240
3294
  var MotionTextarea = (0, import_framer_motion19.motion)(import_joy30.Textarea);
3241
- var Textarea = (props) => {
3295
+ var TextareaBase = (props) => {
3242
3296
  const {
3243
3297
  label,
3244
3298
  error,
@@ -3254,7 +3308,7 @@ var Textarea = (props) => {
3254
3308
  className,
3255
3309
  ...innerProps
3256
3310
  } = props;
3257
- const textarea = /* @__PURE__ */ import_react22.default.createElement(
3311
+ const textarea = /* @__PURE__ */ import_react23.default.createElement(
3258
3312
  MotionTextarea,
3259
3313
  {
3260
3314
  required,
@@ -3266,7 +3320,7 @@ var Textarea = (props) => {
3266
3320
  ...innerProps
3267
3321
  }
3268
3322
  );
3269
- return /* @__PURE__ */ import_react22.default.createElement(
3323
+ return /* @__PURE__ */ import_react23.default.createElement(
3270
3324
  FormControl_default,
3271
3325
  {
3272
3326
  required,
@@ -3277,18 +3331,22 @@ var Textarea = (props) => {
3277
3331
  sx,
3278
3332
  className
3279
3333
  },
3280
- label && /* @__PURE__ */ import_react22.default.createElement(FormLabel_default, null, label),
3334
+ label && /* @__PURE__ */ import_react23.default.createElement(FormLabel_default, null, label),
3281
3335
  textarea,
3282
- helperText && /* @__PURE__ */ import_react22.default.createElement(FormHelperText_default, null, helperText)
3336
+ helperText && /* @__PURE__ */ import_react23.default.createElement(FormHelperText_default, null, helperText)
3283
3337
  );
3284
3338
  };
3339
+ var Textarea = import_react23.default.forwardRef((props, ref) => {
3340
+ const textareaSlotProps = useSlotRef(props.slotProps?.textarea, ref);
3341
+ return /* @__PURE__ */ import_react23.default.createElement(TextareaBase, { ...props, slotProps: { ...props.slotProps, textarea: textareaSlotProps } });
3342
+ });
3285
3343
  Textarea.displayName = "Textarea";
3286
3344
 
3287
3345
  // src/components/Textarea/index.ts
3288
3346
  var Textarea_default = Textarea;
3289
3347
 
3290
3348
  // src/components/Select/Select.tsx
3291
- var import_react23 = __toESM(require("react"));
3349
+ var import_react24 = __toESM(require("react"));
3292
3350
  var import_joy31 = require("@mui/joy");
3293
3351
  var import_framer_motion20 = require("framer-motion");
3294
3352
  var MotionOption = (0, import_framer_motion20.motion)(import_joy31.Option);
@@ -3299,7 +3357,7 @@ var secondaryTextLevelMap2 = {
3299
3357
  lg: "body-md"
3300
3358
  };
3301
3359
  Option.displayName = "Option";
3302
- function Select(props) {
3360
+ function SelectInner(props, ref) {
3303
3361
  const {
3304
3362
  label,
3305
3363
  helperText,
@@ -3325,7 +3383,7 @@ function Select(props) {
3325
3383
  formHelperText: formHelperTextProps,
3326
3384
  ...joySlotProps
3327
3385
  } = slotProps ?? {};
3328
- const options = (0, import_react23.useMemo)(
3386
+ const options = (0, import_react24.useMemo)(
3329
3387
  () => props.options.map((option) => {
3330
3388
  if (option.hasOwnProperty("value") && option.hasOwnProperty("label")) {
3331
3389
  return option;
@@ -3350,14 +3408,15 @@ function Select(props) {
3350
3408
  };
3351
3409
  onChange?.(newEvent, newValue);
3352
3410
  };
3353
- const optionMap = (0, import_react23.useMemo)(() => {
3411
+ const optionMap = (0, import_react24.useMemo)(() => {
3354
3412
  const map = /* @__PURE__ */ new Map();
3355
3413
  options.forEach((option) => {
3356
3414
  map.set(option.value, option);
3357
3415
  });
3358
3416
  return map;
3359
3417
  }, [options]);
3360
- const select = /* @__PURE__ */ import_react23.default.createElement(
3418
+ const buttonSlotProps = useSlotRef(joySlotProps.button, ref);
3419
+ const select = /* @__PURE__ */ import_react24.default.createElement(
3361
3420
  import_joy31.Select,
3362
3421
  {
3363
3422
  ...innerProps,
@@ -3365,7 +3424,7 @@ function Select(props) {
3365
3424
  disabled,
3366
3425
  size,
3367
3426
  color: error ? "danger" : color,
3368
- slotProps: joySlotProps,
3427
+ slotProps: { ...joySlotProps, button: buttonSlotProps },
3369
3428
  onChange: handleChange,
3370
3429
  renderValue: (selected) => {
3371
3430
  if (!selected) return null;
@@ -3375,9 +3434,9 @@ function Select(props) {
3375
3434
  return optionMap.get(selected.value)?.label;
3376
3435
  }
3377
3436
  },
3378
- 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))
3437
+ 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))
3379
3438
  );
3380
- return /* @__PURE__ */ import_react23.default.createElement(
3439
+ return /* @__PURE__ */ import_react24.default.createElement(
3381
3440
  FormControl_default,
3382
3441
  {
3383
3442
  required,
@@ -3390,11 +3449,12 @@ function Select(props) {
3390
3449
  className,
3391
3450
  ...formControlProps
3392
3451
  },
3393
- label && /* @__PURE__ */ import_react23.default.createElement(FormLabel_default, { ...formLabelProps }, label),
3452
+ label && /* @__PURE__ */ import_react24.default.createElement(FormLabel_default, { ...formLabelProps }, label),
3394
3453
  select,
3395
- helperText && /* @__PURE__ */ import_react23.default.createElement(FormHelperText_default, { ...formHelperTextProps }, helperText)
3454
+ helperText && /* @__PURE__ */ import_react24.default.createElement(FormHelperText_default, { ...formHelperTextProps }, helperText)
3396
3455
  );
3397
3456
  }
3457
+ var Select = import_react24.default.forwardRef(SelectInner);
3398
3458
  Select.displayName = "Select";
3399
3459
 
3400
3460
  // src/components/Select/index.ts
@@ -3404,7 +3464,7 @@ var Select_default = Select;
3404
3464
  var import_joy34 = require("@mui/joy");
3405
3465
 
3406
3466
  // src/components/InfoSign/InfoSign.tsx
3407
- var import_react24 = __toESM(require("react"));
3467
+ var import_react25 = __toESM(require("react"));
3408
3468
  var import_joy32 = require("@mui/joy");
3409
3469
  var import_Info = __toESM(require("@mui/icons-material/Info"));
3410
3470
  var InfoIcon = (0, import_joy32.styled)(import_Info.default, {
@@ -3417,7 +3477,7 @@ var InfoIcon = (0, import_joy32.styled)(import_Info.default, {
3417
3477
  }));
3418
3478
  function InfoSign(props) {
3419
3479
  const { message, placement } = props;
3420
- return /* @__PURE__ */ import_react24.default.createElement(
3480
+ return /* @__PURE__ */ import_react25.default.createElement(
3421
3481
  Tooltip_default,
3422
3482
  {
3423
3483
  arrow: true,
@@ -3427,9 +3487,9 @@ function InfoSign(props) {
3427
3487
  maxWidth: "320px"
3428
3488
  }
3429
3489
  },
3430
- title: message?.split("\n").map((line, i) => /* @__PURE__ */ import_react24.default.createElement("div", { key: `info-sign-${i}` }, line))
3490
+ title: message?.split("\n").map((line, i) => /* @__PURE__ */ import_react25.default.createElement("div", { key: `info-sign-${i}` }, line))
3431
3491
  },
3432
- /* @__PURE__ */ import_react24.default.createElement(InfoIcon, null)
3492
+ /* @__PURE__ */ import_react25.default.createElement(InfoIcon, null)
3433
3493
  );
3434
3494
  }
3435
3495
 
@@ -3442,9 +3502,9 @@ var TextEllipsis = ({
3442
3502
  lineClamp,
3443
3503
  ...rest
3444
3504
  }) => {
3445
- const textRef = (0, import_react25.useRef)(null);
3446
- const [showTooltip, setShowTooltip] = (0, import_react25.useState)(false);
3447
- (0, import_react25.useLayoutEffect)(() => {
3505
+ const textRef = (0, import_react26.useRef)(null);
3506
+ const [showTooltip, setShowTooltip] = (0, import_react26.useState)(false);
3507
+ (0, import_react26.useLayoutEffect)(() => {
3448
3508
  const element = textRef.current;
3449
3509
  if (!element) return;
3450
3510
  const checkTruncation = () => {
@@ -3456,21 +3516,21 @@ var TextEllipsis = ({
3456
3516
  ro.observe(element);
3457
3517
  return () => ro.disconnect();
3458
3518
  }, [children, lineClamp]);
3459
- return /* @__PURE__ */ import_react25.default.createElement(Tooltip_default, { title: showTooltip ? children : "", placement: "top" }, /* @__PURE__ */ import_react25.default.createElement(EllipsisDiv, { ref: textRef, lineClamp, ...rest }, children));
3519
+ return /* @__PURE__ */ import_react26.default.createElement(Tooltip_default, { title: showTooltip ? children : "", placement: "top" }, /* @__PURE__ */ import_react26.default.createElement(EllipsisDiv, { ref: textRef, lineClamp, ...rest }, children));
3460
3520
  };
3461
3521
  var CellTextEllipsis = ({ children }) => {
3462
- const textRef = (0, import_react25.useRef)(null);
3463
- const [showTooltip, setShowTooltip] = (0, import_react25.useState)(false);
3464
- (0, import_react25.useLayoutEffect)(() => {
3522
+ const textRef = (0, import_react26.useRef)(null);
3523
+ const [showTooltip, setShowTooltip] = (0, import_react26.useState)(false);
3524
+ (0, import_react26.useLayoutEffect)(() => {
3465
3525
  const element = textRef.current;
3466
3526
  if (element) {
3467
3527
  const isTextTruncated = element.scrollWidth > element.clientWidth;
3468
3528
  setShowTooltip(isTextTruncated);
3469
3529
  }
3470
3530
  }, [children]);
3471
- const content = /* @__PURE__ */ import_react25.default.createElement(EllipsisDiv, { ref: textRef }, children);
3531
+ const content = /* @__PURE__ */ import_react26.default.createElement(EllipsisDiv, { ref: textRef }, children);
3472
3532
  if (showTooltip) {
3473
- return /* @__PURE__ */ import_react25.default.createElement(
3533
+ return /* @__PURE__ */ import_react26.default.createElement(
3474
3534
  Tooltip_default,
3475
3535
  {
3476
3536
  title: children,
@@ -3514,18 +3574,15 @@ var HeadCell = (props) => {
3514
3574
  const theme = (0, import_joy33.useTheme)();
3515
3575
  const ref = headerRef;
3516
3576
  const colRef = tableColRef;
3517
- const localRef = (0, import_react25.useRef)(null);
3518
- (0, import_react25.useLayoutEffect)(() => {
3577
+ const localRef = (0, import_react26.useRef)(null);
3578
+ (0, import_react26.useLayoutEffect)(() => {
3519
3579
  ref.current = localRef.current;
3520
3580
  }, [ref]);
3521
- const [isHovered, setIsHovered] = (0, import_react25.useState)(false);
3581
+ const [isHovered, setIsHovered] = (0, import_react26.useState)(false);
3522
3582
  const sortable = type === "actions" ? false : _sortable;
3523
- const headId = (0, import_react25.useMemo)(
3524
- () => `${tableId}_header_${headerName ?? field}`.trim(),
3525
- [tableId, headerName, field]
3526
- );
3527
- const isResizingRef = (0, import_react25.useRef)(false);
3528
- const resizer = (0, import_react25.useMemo)(
3583
+ const headId = (0, import_react26.useMemo)(() => getHeaderCellId(tableId, field), [tableId, field]);
3584
+ const isResizingRef = (0, import_react26.useRef)(false);
3585
+ const resizer = (0, import_react26.useMemo)(
3529
3586
  () => resizable ?? true ? Resizer(
3530
3587
  ref,
3531
3588
  colRef,
@@ -3536,7 +3593,7 @@ var HeadCell = (props) => {
3536
3593
  ) : null,
3537
3594
  [resizable, ref, colRef, onAutoFit, field]
3538
3595
  );
3539
- const style = (0, import_react25.useMemo)(
3596
+ const style = (0, import_react26.useMemo)(
3540
3597
  () => ({
3541
3598
  width,
3542
3599
  minWidth: minWidth ?? "50px",
@@ -3554,10 +3611,10 @@ var HeadCell = (props) => {
3554
3611
  );
3555
3612
  const textAlign = getTextAlign(props);
3556
3613
  const initialSort = sortOrder[0];
3557
- const sortIcon = (0, import_react25.useMemo)(() => {
3614
+ const sortIcon = (0, import_react26.useMemo)(() => {
3558
3615
  const isSorted = !!sort;
3559
3616
  const isVisible = sortable && (isSorted || isHovered);
3560
- return /* @__PURE__ */ import_react25.default.createElement(import_framer_motion21.AnimatePresence, { mode: "wait" }, isVisible && /* @__PURE__ */ import_react25.default.createElement(
3617
+ return /* @__PURE__ */ import_react26.default.createElement(import_framer_motion21.AnimatePresence, { mode: "wait" }, isVisible && /* @__PURE__ */ import_react26.default.createElement(
3561
3618
  MotionSortIcon,
3562
3619
  {
3563
3620
  key: "sort-icon",
@@ -3585,21 +3642,21 @@ var HeadCell = (props) => {
3585
3642
  }
3586
3643
  ));
3587
3644
  }, [headId, initialSort, sort, sortable, isHovered]);
3588
- const infoSign = (0, import_react25.useMemo)(
3589
- () => description ? /* @__PURE__ */ import_react25.default.createElement(InfoSign_default, { message: description, placement: "bottom" }) : null,
3645
+ const infoSign = (0, import_react26.useMemo)(
3646
+ () => description ? /* @__PURE__ */ import_react26.default.createElement(InfoSign_default, { message: description, placement: "bottom" }) : null,
3590
3647
  [description]
3591
3648
  );
3592
- const params = (0, import_react25.useMemo)(
3649
+ const params = (0, import_react26.useMemo)(
3593
3650
  () => ({
3594
3651
  field
3595
3652
  }),
3596
3653
  [field]
3597
3654
  );
3598
- const computedHeaderClassName = (0, import_react25.useMemo)(
3655
+ const computedHeaderClassName = (0, import_react26.useMemo)(
3599
3656
  () => (typeof headerClassName === "function" ? headerClassName(params) : headerClassName) || void 0,
3600
3657
  [headerClassName, params]
3601
3658
  );
3602
- return /* @__PURE__ */ import_react25.default.createElement(
3659
+ return /* @__PURE__ */ import_react26.default.createElement(
3603
3660
  StyledTh,
3604
3661
  {
3605
3662
  id: headId,
@@ -3608,7 +3665,7 @@ var HeadCell = (props) => {
3608
3665
  ref: localRef,
3609
3666
  key: field,
3610
3667
  style,
3611
- onClick: (0, import_react25.useCallback)(
3668
+ onClick: (0, import_react26.useCallback)(
3612
3669
  (e) => {
3613
3670
  if (isResizingRef.current) return;
3614
3671
  if (!(e.target instanceof Element) || !e.currentTarget.contains(e.target)) return;
@@ -3622,7 +3679,7 @@ var HeadCell = (props) => {
3622
3679
  initial: "initial",
3623
3680
  className: computedHeaderClassName
3624
3681
  },
3625
- /* @__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),
3682
+ /* @__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),
3626
3683
  resizer
3627
3684
  );
3628
3685
  };
@@ -3647,9 +3704,9 @@ var BodyCell = (props) => {
3647
3704
  onCellEditStop
3648
3705
  } = props;
3649
3706
  const theme = (0, import_joy33.useTheme)();
3650
- const [value, setValue] = (0, import_react25.useState)(row[field]);
3651
- const cellRef = (0, import_react25.useRef)(null);
3652
- const params = (0, import_react25.useMemo)(
3707
+ const [value, setValue] = (0, import_react26.useState)(row[field]);
3708
+ const cellRef = (0, import_react26.useRef)(null);
3709
+ const params = (0, import_react26.useMemo)(
3653
3710
  () => ({
3654
3711
  row,
3655
3712
  value,
@@ -3658,20 +3715,20 @@ var BodyCell = (props) => {
3658
3715
  }),
3659
3716
  [row, rowId, value, field]
3660
3717
  );
3661
- const editMode = (0, import_react25.useMemo)(
3718
+ const editMode = (0, import_react26.useMemo)(
3662
3719
  () => !!(props.editMode && (typeof isCellEditable === "function" ? isCellEditable(params) : isCellEditable ?? true)),
3663
3720
  [props.editMode, isCellEditable, params]
3664
3721
  );
3665
3722
  const propsComponentProps = "componentProps" in props ? props.componentProps : null;
3666
3723
  const hasComponentProps = "componentProps" in props;
3667
- const componentProps = (0, import_react25.useMemo)(
3724
+ const componentProps = (0, import_react26.useMemo)(
3668
3725
  () => ({
3669
3726
  ...hasComponentProps && (typeof propsComponentProps === "function" ? propsComponentProps(params) : propsComponentProps || {}),
3670
3727
  size: "sm"
3671
3728
  }),
3672
3729
  [hasComponentProps, propsComponentProps, params]
3673
3730
  );
3674
- const editModeComponentProps = (0, import_react25.useMemo)(
3731
+ const editModeComponentProps = (0, import_react26.useMemo)(
3675
3732
  () => ({
3676
3733
  ...componentProps,
3677
3734
  onChange: (e) => {
@@ -3733,25 +3790,25 @@ var BodyCell = (props) => {
3733
3790
  }),
3734
3791
  [params, row, field, value, componentProps, type, onCellEditStop, onCellEditStart]
3735
3792
  );
3736
- const MemoizedRenderEditCell = (0, import_react25.useMemo)(() => renderEditCell ? (0, import_react25.memo)(renderEditCell) : null, [renderEditCell]);
3737
- const MemoizedRenderCell = (0, import_react25.useMemo)(() => renderCell ? (0, import_react25.memo)(renderCell) : null, [renderCell]);
3738
- const EditModeComponent = (0, import_react25.useMemo)(() => {
3793
+ const MemoizedRenderEditCell = (0, import_react26.useMemo)(() => renderEditCell ? (0, import_react26.memo)(renderEditCell) : null, [renderEditCell]);
3794
+ const MemoizedRenderCell = (0, import_react26.useMemo)(() => renderCell ? (0, import_react26.memo)(renderCell) : null, [renderCell]);
3795
+ const EditModeComponent = (0, import_react26.useMemo)(() => {
3739
3796
  if (MemoizedRenderEditCell) {
3740
- return (0, import_react25.createElement)(MemoizedRenderEditCell, params);
3797
+ return (0, import_react26.createElement)(MemoizedRenderEditCell, params);
3741
3798
  }
3742
3799
  return {
3743
- date: /* @__PURE__ */ import_react25.default.createElement(DatePicker_default, { value, ...editModeComponentProps }),
3744
- currency: /* @__PURE__ */ import_react25.default.createElement(
3800
+ date: /* @__PURE__ */ import_react26.default.createElement(DatePicker_default, { value, ...editModeComponentProps }),
3801
+ currency: /* @__PURE__ */ import_react26.default.createElement(
3745
3802
  CurrencyInput_default,
3746
3803
  {
3747
3804
  value,
3748
3805
  ...editModeComponentProps
3749
3806
  }
3750
3807
  ),
3751
- number: /* @__PURE__ */ import_react25.default.createElement(Input_default, { value, type: "number", ...editModeComponentProps }),
3752
- text: /* @__PURE__ */ import_react25.default.createElement(Input_default, { value, type: "text", ...editModeComponentProps }),
3753
- longText: /* @__PURE__ */ import_react25.default.createElement(Textarea_default, { value, ...editModeComponentProps }),
3754
- autocomplete: /* @__PURE__ */ import_react25.default.createElement(
3808
+ number: /* @__PURE__ */ import_react26.default.createElement(Input_default, { value, type: "number", ...editModeComponentProps }),
3809
+ text: /* @__PURE__ */ import_react26.default.createElement(Input_default, { value, type: "text", ...editModeComponentProps }),
3810
+ longText: /* @__PURE__ */ import_react26.default.createElement(Textarea_default, { value, ...editModeComponentProps }),
3811
+ autocomplete: /* @__PURE__ */ import_react26.default.createElement(
3755
3812
  Autocomplete_default,
3756
3813
  {
3757
3814
  value,
@@ -3759,7 +3816,7 @@ var BodyCell = (props) => {
3759
3816
  ...editModeComponentProps
3760
3817
  }
3761
3818
  ),
3762
- select: /* @__PURE__ */ import_react25.default.createElement(
3819
+ select: /* @__PURE__ */ import_react26.default.createElement(
3763
3820
  Select_default,
3764
3821
  {
3765
3822
  value,
@@ -3770,13 +3827,13 @@ var BodyCell = (props) => {
3770
3827
  }[type || "text"];
3771
3828
  }, [value, editModeComponentProps, type, MemoizedRenderEditCell, params]);
3772
3829
  const linkComponentFromProps = props.component;
3773
- const ReadModeComponent = (0, import_react25.useMemo)(() => {
3830
+ const ReadModeComponent = (0, import_react26.useMemo)(() => {
3774
3831
  if (MemoizedRenderCell) {
3775
- return (0, import_react25.createElement)(MemoizedRenderCell, params);
3832
+ return (0, import_react26.createElement)(MemoizedRenderCell, params);
3776
3833
  }
3777
3834
  const innerText = value;
3778
3835
  const typedComponent = {
3779
- link: import_react25.default.createElement(linkComponentFromProps || import_joy34.Link, {
3836
+ link: import_react26.default.createElement(linkComponentFromProps || import_joy34.Link, {
3780
3837
  children: innerText,
3781
3838
  ...componentProps
3782
3839
  })
@@ -3784,27 +3841,27 @@ var BodyCell = (props) => {
3784
3841
  return typedComponent || innerText;
3785
3842
  }, [value, MemoizedRenderCell, params, type, componentProps, linkComponentFromProps]);
3786
3843
  const getActions = props.getActions;
3787
- const CellComponent = (0, import_react25.useMemo)(() => {
3844
+ const CellComponent = (0, import_react26.useMemo)(() => {
3788
3845
  if (type === "actions") {
3789
- return /* @__PURE__ */ import_react25.default.createElement(Stack_default, { direction: "row", gap: 1, justifyContent: "center", alignItems: "center" }, getActions?.(params));
3846
+ return /* @__PURE__ */ import_react26.default.createElement(Stack_default, { direction: "row", gap: 1, justifyContent: "center", alignItems: "center" }, getActions?.(params));
3790
3847
  }
3791
3848
  return editMode && EditModeComponent ? EditModeComponent : ReadModeComponent;
3792
3849
  }, [type, getActions, params, editMode, EditModeComponent, ReadModeComponent]);
3793
- const showTooltip = (0, import_react25.useMemo)(() => noWrap && type === "longText", [noWrap, type]);
3850
+ const showTooltip = (0, import_react26.useMemo)(() => noWrap && type === "longText", [noWrap, type]);
3794
3851
  const isBoundary = props.isLastStartPinnedColumn || props.isLastEndPinnedColumn;
3795
- const computedCellClassName = (0, import_react25.useMemo)(
3852
+ const computedCellClassName = (0, import_react26.useMemo)(
3796
3853
  () => (typeof cellClassName === "function" ? cellClassName(params) : cellClassName) || "",
3797
3854
  [cellClassName, params]
3798
3855
  );
3799
- (0, import_react25.useEffect)(() => {
3856
+ (0, import_react26.useEffect)(() => {
3800
3857
  setValue(row[field]);
3801
3858
  }, [row, field]);
3802
- return /* @__PURE__ */ import_react25.default.createElement(
3859
+ return /* @__PURE__ */ import_react26.default.createElement(
3803
3860
  StyledTd,
3804
3861
  {
3805
3862
  ref: cellRef,
3806
3863
  key: field,
3807
- headers: `${tableId}_header_${props.headerName ?? field}`,
3864
+ headers: getHeaderCellId(tableId, field),
3808
3865
  sx: {
3809
3866
  textAlign: getTextAlign({ type }),
3810
3867
  verticalAlign: editMode ? "top" : "middle",
@@ -3816,16 +3873,16 @@ var BodyCell = (props) => {
3816
3873
  },
3817
3874
  className: [isLastStartPinnedColumn && "is-last-left", isLastEndPinnedColumn && "is-last-right", computedCellClassName].filter(Boolean).join(" ") || ""
3818
3875
  },
3819
- (0, import_react25.useMemo)(
3820
- () => showTooltip ? /* @__PURE__ */ import_react25.default.createElement(CellTextEllipsis, null, CellComponent) : CellComponent,
3876
+ (0, import_react26.useMemo)(
3877
+ () => showTooltip ? /* @__PURE__ */ import_react26.default.createElement(CellTextEllipsis, null, CellComponent) : CellComponent,
3821
3878
  [CellComponent, showTooltip]
3822
3879
  )
3823
3880
  );
3824
3881
  };
3825
- var BodyRow = (0, import_react25.memo)(
3882
+ var BodyRow = (0, import_react26.memo)(
3826
3883
  (props) => {
3827
3884
  const { tableId, columns, rowId, editMode, noWrap, row } = props;
3828
- return /* @__PURE__ */ import_react25.default.createElement(import_react25.default.Fragment, null, columns.map((column, i) => /* @__PURE__ */ import_react25.default.createElement(
3885
+ return /* @__PURE__ */ import_react26.default.createElement(import_react26.default.Fragment, null, columns.map((column, i) => /* @__PURE__ */ import_react26.default.createElement(
3829
3886
  BodyCell,
3830
3887
  {
3831
3888
  key: `${rowId}_${column.field.toString()}_${i}`,
@@ -3858,7 +3915,7 @@ var StyledTableRow2 = (0, import_joy33.styled)("tr", {
3858
3915
  }
3859
3916
  }
3860
3917
  }));
3861
- var VirtualizedTableRow = (0, import_react25.memo)(StyledTableRow2, (prevProps, nextProps) => {
3918
+ var VirtualizedTableRow = (0, import_react26.memo)(StyledTableRow2, (prevProps, nextProps) => {
3862
3919
  return prevProps.striped === nextProps.striped && prevProps.style?.height === nextProps.style?.height && prevProps.style?.transform === nextProps.style?.transform && // @ts-ignore
3863
3920
  prevProps["data-row-id"] === nextProps["data-row-id"] && // @ts-ignore
3864
3921
  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)
@@ -3869,19 +3926,20 @@ var VirtualizedTableRow = (0, import_react25.memo)(StyledTableRow2, (prevProps,
3869
3926
  });
3870
3927
 
3871
3928
  // src/components/DataTable/hooks.ts
3872
- var import_react26 = require("react");
3929
+ var import_react27 = require("react");
3873
3930
  function useColumnWidths(columnsByField) {
3874
- const [widths, setWidths] = (0, import_react26.useState)({});
3875
- const roRef = (0, import_react26.useRef)();
3876
- (0, import_react26.useLayoutEffect)(() => {
3931
+ const [widths, setWidths] = (0, import_react27.useState)({});
3932
+ const roRef = (0, import_react27.useRef)();
3933
+ (0, import_react27.useLayoutEffect)(() => {
3877
3934
  if (roRef.current) roRef.current.disconnect();
3878
3935
  roRef.current = new ResizeObserver((entries) => {
3879
- let changed = false;
3880
3936
  setWidths((prev) => {
3937
+ let changed = false;
3881
3938
  const next = { ...prev };
3882
3939
  entries.forEach((entry) => {
3883
3940
  const field = entry.target.dataset.field;
3884
3941
  const w = Math.round(entry.target.getBoundingClientRect().width);
3942
+ if (w === 0) return;
3885
3943
  if (next[field] !== w) {
3886
3944
  next[field] = w;
3887
3945
  changed = true;
@@ -3890,13 +3948,21 @@ function useColumnWidths(columnsByField) {
3890
3948
  return changed ? next : prev;
3891
3949
  });
3892
3950
  });
3951
+ const measured = {};
3893
3952
  Object.entries(columnsByField).forEach(([field, def]) => {
3894
3953
  const el = def.headerRef.current;
3895
3954
  if (el) {
3896
3955
  el.dataset.field = field;
3956
+ const w = Math.round(el.getBoundingClientRect().width);
3957
+ if (w > 0) measured[field] = w;
3897
3958
  roRef.current.observe(el);
3898
3959
  }
3899
3960
  });
3961
+ setWidths((prev) => {
3962
+ const keys = Object.keys(measured);
3963
+ const same = keys.every((key) => prev[key] === measured[key]);
3964
+ return same ? prev : { ...prev, ...measured };
3965
+ });
3900
3966
  return () => roRef.current?.disconnect();
3901
3967
  }, [columnsByField]);
3902
3968
  return widths;
@@ -3930,33 +3996,40 @@ function useDataTableRenderer({
3930
3996
  "You cannot use both `pinnedColumns` and `columnGroupingModel` at the same time. Please choose one of them."
3931
3997
  );
3932
3998
  }
3933
- const onSelectionModelChangeRef = (0, import_react26.useRef)(onSelectionModelChange);
3999
+ const duplicatedField = (0, import_react27.useMemo)(() => {
4000
+ const ids = columnsProp.map((column) => sanitizeColumnId(column.field));
4001
+ const index = ids.findIndex((id, i) => ids.indexOf(id) !== i);
4002
+ return index === -1 ? void 0 : columnsProp[index].field;
4003
+ }, [columnsProp]);
4004
+ if (duplicatedField !== void 0)
4005
+ throw new Error(`DataTable: column \`field\` must be unique. Duplicated: "${String(duplicatedField)}"`);
4006
+ const onSelectionModelChangeRef = (0, import_react27.useRef)(onSelectionModelChange);
3934
4007
  onSelectionModelChangeRef.current = onSelectionModelChange;
3935
- const [focusedRowId, setFocusedRowId] = (0, import_react26.useState)(null);
3936
- const [selectionAnchor, setSelectionAnchor] = (0, import_react26.useState)(null);
4008
+ const [focusedRowId, setFocusedRowId] = (0, import_react27.useState)(null);
4009
+ const [selectionAnchor, setSelectionAnchor] = (0, import_react27.useState)(null);
3937
4010
  const [sortModel, setSortModel] = useControlledState(
3938
4011
  controlledSortModel,
3939
4012
  initialState?.sorting?.sortModel ?? [],
3940
- (0, import_react26.useCallback)((sortModel2) => onSortModelChange?.(sortModel2), [onSortModelChange])
4013
+ (0, import_react27.useCallback)((sortModel2) => onSortModelChange?.(sortModel2), [onSortModelChange])
3941
4014
  );
3942
4015
  const [visibilityModel] = useControlledState(
3943
4016
  columnVisibilityModel,
3944
4017
  initialState?.columns?.columnVisibilityModel ?? {},
3945
- (0, import_react26.useCallback)(
4018
+ (0, import_react27.useCallback)(
3946
4019
  (model) => onColumnVisibilityModelChange?.(model),
3947
4020
  [onColumnVisibilityModelChange]
3948
4021
  )
3949
4022
  );
3950
- const reorderedColumns = (0, import_react26.useMemo)(() => {
4023
+ const reorderedColumns = (0, import_react27.useMemo)(() => {
3951
4024
  if (!columnGroupingModel) return columnsProp;
3952
4025
  return reorderColumnsByGroupingModel(columnsProp, columnGroupingModel);
3953
4026
  }, [columnsProp, columnGroupingModel]);
3954
- const visibleColumns = (0, import_react26.useMemo)(
4027
+ const visibleColumns = (0, import_react27.useMemo)(
3955
4028
  () => reorderedColumns.filter((col) => visibilityModel[col.field] !== false),
3956
4029
  [reorderedColumns, visibilityModel]
3957
4030
  );
3958
- const visibleFieldSet = (0, import_react26.useMemo)(() => new Set(visibleColumns.map((c) => c.field)), [visibleColumns]);
3959
- const tableMinWidth = (0, import_react26.useMemo)(() => {
4031
+ const visibleFieldSet = (0, import_react27.useMemo)(() => new Set(visibleColumns.map((c) => c.field)), [visibleColumns]);
4032
+ const tableMinWidth = (0, import_react27.useMemo)(() => {
3960
4033
  const DEFAULT_MIN = 50;
3961
4034
  let total = checkboxSelection ? 40 : 0;
3962
4035
  for (const col of visibleColumns) {
@@ -3964,7 +4037,7 @@ function useDataTableRenderer({
3964
4037
  }
3965
4038
  return total;
3966
4039
  }, [visibleColumns, checkboxSelection]);
3967
- const allColumnsByField = (0, import_react26.useMemo)(
4040
+ const allColumnsByField = (0, import_react27.useMemo)(
3968
4041
  () => reorderedColumns.reduce(
3969
4042
  (acc, curr) => ({
3970
4043
  ...acc,
@@ -3974,21 +4047,20 @@ function useDataTableRenderer({
3974
4047
  ),
3975
4048
  [reorderedColumns]
3976
4049
  );
3977
- const visibleColumnsByField = (0, import_react26.useMemo)(
3978
- () => visibleColumns.reduce(
3979
- (acc, curr) => ({
3980
- ...acc,
3981
- [curr.field]: {
3982
- ...curr,
3983
- headerRef: (0, import_react26.createRef)(),
3984
- tableColRef: (0, import_react26.createRef)()
4050
+ const visibleColumnsByField = (0, import_react27.useMemo)(
4051
+ () => Object.fromEntries(
4052
+ visibleColumns.map((column) => [
4053
+ column.field,
4054
+ {
4055
+ ...column,
4056
+ headerRef: (0, import_react27.createRef)(),
4057
+ tableColRef: (0, import_react27.createRef)()
3985
4058
  }
3986
- }),
3987
- {}
4059
+ ])
3988
4060
  ),
3989
4061
  [visibleColumns]
3990
4062
  );
3991
- const sortComparator = (0, import_react26.useCallback)(
4063
+ const sortComparator = (0, import_react27.useCallback)(
3992
4064
  (rowA, rowB) => {
3993
4065
  for (const sort of sortModel) {
3994
4066
  const { field, sort: direction } = sort;
@@ -4017,33 +4089,33 @@ function useDataTableRenderer({
4017
4089
  },
4018
4090
  [sortModel, allColumnsByField]
4019
4091
  );
4020
- const rows = (0, import_react26.useMemo)(
4092
+ const rows = (0, import_react27.useMemo)(
4021
4093
  () => sortModel.length ? [..._rows].sort(sortComparator) : _rows,
4022
4094
  [_rows, sortModel, sortComparator]
4023
4095
  );
4024
- const sortOrder = (0, import_react26.useMemo)(
4096
+ const sortOrder = (0, import_react27.useMemo)(
4025
4097
  () => Array.from(new Set(_sortOrder || ["asc", "desc", null])),
4026
4098
  [_sortOrder]
4027
4099
  );
4028
- const [page, setPage] = (0, import_react26.useState)(paginationModel?.page || 1);
4100
+ const [page, setPage] = (0, import_react27.useState)(paginationModel?.page || 1);
4029
4101
  const pageSize = paginationModel?.pageSize || 20;
4030
- const getId = (0, import_react26.useCallback)(
4102
+ const getId = (0, import_react27.useCallback)(
4031
4103
  (row, index) => _getId?.(row) ?? row.id ?? `${(index || 0) + (page - 1) * pageSize}`,
4032
4104
  [_getId, page, pageSize]
4033
4105
  );
4034
- const selectedModelSet = (0, import_react26.useMemo)(() => new Set(selectionModel || []), [selectionModel]);
4035
- const dataInPage = (0, import_react26.useMemo)(
4106
+ const selectedModelSet = (0, import_react27.useMemo)(() => new Set(selectionModel || []), [selectionModel]);
4107
+ const dataInPage = (0, import_react27.useMemo)(
4036
4108
  () => !pagination || paginationMode === "server" ? rows : rows.slice((page - 1) * pageSize, (page - 1) * pageSize + pageSize),
4037
4109
  [rows, page, pageSize, paginationMode, pagination]
4038
4110
  );
4039
- const selectableDataInPage = (0, import_react26.useMemo)(
4111
+ const selectableDataInPage = (0, import_react27.useMemo)(
4040
4112
  () => dataInPage.filter((row, i) => {
4041
4113
  if (!isRowSelectable) return true;
4042
4114
  return isRowSelectable({ row, id: getId(row, i) });
4043
4115
  }),
4044
4116
  [dataInPage, isRowSelectable, getId]
4045
4117
  );
4046
- const handleRangeSelection = (0, import_react26.useCallback)(
4118
+ const handleRangeSelection = (0, import_react27.useCallback)(
4047
4119
  (anchor, targetIndex) => {
4048
4120
  const startIndex = Math.min(anchor.rowIndex, targetIndex);
4049
4121
  const endIndex = Math.max(anchor.rowIndex, targetIndex);
@@ -4066,40 +4138,41 @@ function useDataTableRenderer({
4066
4138
  },
4067
4139
  [dataInPage, getId, isRowSelectable, selectionModel, onSelectionModelChange]
4068
4140
  );
4069
- const isAllSelected = (0, import_react26.useMemo)(
4141
+ const isAllSelected = (0, import_react27.useMemo)(
4070
4142
  () => selectableDataInPage.length > 0 && selectableDataInPage.every((row, i) => selectedModelSet.has(getId(row, i))),
4071
4143
  [selectableDataInPage, selectedModelSet, getId]
4072
4144
  );
4073
4145
  const rowCount = totalRowsProp || rows.length;
4074
- const selectableRowCount = (0, import_react26.useMemo)(() => {
4146
+ const selectableRowCount = (0, import_react27.useMemo)(() => {
4075
4147
  if (!isRowSelectable) return rowCount;
4076
4148
  return rows.filter((row, i) => isRowSelectable({ row, id: getId(row, i) })).length;
4077
4149
  }, [rows, isRowSelectable, getId, rowCount]);
4078
- const isTotalSelected = (0, import_react26.useMemo)(
4150
+ const isTotalSelected = (0, import_react27.useMemo)(
4079
4151
  () => _isTotalSelected ?? (selectableRowCount > 0 && (selectionModel?.length || 0) === selectableRowCount),
4080
4152
  [_isTotalSelected, selectionModel, selectableRowCount]
4081
4153
  );
4082
4154
  const columnWidths = useColumnWidths(visibleColumnsByField);
4083
- const getWidth = (0, import_react26.useCallback)(
4084
- (f) => columnWidths[f] ?? allColumnsByField[f]?.width ?? // Column prop 으로 지정된 width
4085
- allColumnsByField[f]?.minWidth ?? 0,
4155
+ const getWidth = (0, import_react27.useCallback)(
4156
+ // 반환값은 pinned offset으로 더해지므로 반드시 숫자여야 한다. width/minWidth는 '500px' 같은 문자열.
4157
+ (f) => columnWidths[f] ?? parsePxValue(allColumnsByField[f]?.width) ?? // Column prop 으로 지정된 width
4158
+ parsePxValue(allColumnsByField[f]?.minWidth) ?? 0,
4086
4159
  [columnWidths, allColumnsByField]
4087
4160
  );
4088
- const processedColumnGroups = (0, import_react26.useMemo)(() => {
4161
+ const processedColumnGroups = (0, import_react27.useMemo)(() => {
4089
4162
  if (!columnGroupingModel) return null;
4090
4163
  return calculateColumnGroups(columnGroupingModel, visibleColumns, visibleFieldSet);
4091
4164
  }, [columnGroupingModel, visibleColumns, visibleFieldSet]);
4092
- const effectivePinnedLeft = (0, import_react26.useMemo)(
4165
+ const effectivePinnedLeft = (0, import_react27.useMemo)(
4093
4166
  () => pinnedColumns?.left?.filter((f) => visibleFieldSet.has(f)),
4094
4167
  [pinnedColumns?.left, visibleFieldSet]
4095
4168
  );
4096
- const effectivePinnedRight = (0, import_react26.useMemo)(
4169
+ const effectivePinnedRight = (0, import_react27.useMemo)(
4097
4170
  () => pinnedColumns?.right?.filter((f) => visibleFieldSet.has(f)),
4098
4171
  [pinnedColumns?.right, visibleFieldSet]
4099
4172
  );
4100
4173
  const inferredFieldsKey = JSON.stringify(Object.keys(rows[0] || {}));
4101
- const inferredFields = (0, import_react26.useMemo)(() => JSON.parse(inferredFieldsKey), [inferredFieldsKey]);
4102
- const columns = (0, import_react26.useMemo)(() => {
4174
+ const inferredFields = (0, import_react27.useMemo)(() => JSON.parse(inferredFieldsKey), [inferredFieldsKey]);
4175
+ const columns = (0, import_react27.useMemo)(() => {
4103
4176
  const baseColumns = visibleColumns.length > 0 ? visibleColumns : reorderedColumns.length > 0 ? [] : inferredFields.map((key) => ({
4104
4177
  field: key
4105
4178
  }));
@@ -4134,14 +4207,14 @@ function useDataTableRenderer({
4134
4207
  sortOrder,
4135
4208
  getWidth
4136
4209
  ]);
4137
- const handlePageChange = (0, import_react26.useCallback)(
4210
+ const handlePageChange = (0, import_react27.useCallback)(
4138
4211
  (newPage) => {
4139
4212
  setPage(newPage);
4140
4213
  onPaginationModelChange?.({ page: newPage, pageSize });
4141
4214
  },
4142
4215
  [onPaginationModelChange, pageSize]
4143
4216
  );
4144
- const handleSortChange = (0, import_react26.useCallback)(
4217
+ const handleSortChange = (0, import_react27.useCallback)(
4145
4218
  (props) => {
4146
4219
  const { field, currentSort, multiple } = props;
4147
4220
  const column = allColumnsByField[field];
@@ -4164,38 +4237,37 @@ function useDataTableRenderer({
4164
4237
  },
4165
4238
  [sortOrder, allColumnsByField, sortModel, setSortModel]
4166
4239
  );
4167
- (0, import_react26.useEffect)(() => {
4240
+ (0, import_react27.useEffect)(() => {
4168
4241
  if (!paginationModel) {
4169
4242
  handlePageChange(1);
4170
4243
  }
4171
4244
  }, [rowCount, handlePageChange, paginationModel]);
4172
- (0, import_react26.useEffect)(() => {
4245
+ (0, import_react27.useEffect)(() => {
4173
4246
  const lastPage = Math.max(1, Math.ceil(rowCount / pageSize));
4174
4247
  if (page > lastPage) {
4175
4248
  handlePageChange(lastPage);
4176
4249
  }
4177
4250
  }, [page, rowCount, pageSize, handlePageChange]);
4178
- (0, import_react26.useEffect)(() => {
4251
+ (0, import_react27.useEffect)(() => {
4179
4252
  onSelectionModelChangeRef.current?.([]);
4180
4253
  setSelectionAnchor(null);
4181
4254
  }, [page]);
4182
- const prevRowsRef = (0, import_react26.useRef)(_rows);
4183
- (0, import_react26.useEffect)(() => {
4255
+ const prevRowsRef = (0, import_react27.useRef)(_rows);
4256
+ (0, import_react27.useEffect)(() => {
4184
4257
  if (prevRowsRef.current !== _rows) {
4185
4258
  setSelectionAnchor(null);
4186
4259
  prevRowsRef.current = _rows;
4187
4260
  }
4188
4261
  }, [_rows]);
4189
- const handleAutoFit = (0, import_react26.useCallback)(
4262
+ const handleAutoFit = (0, import_react27.useCallback)(
4190
4263
  (field) => {
4191
4264
  const colDef = visibleColumnsByField[field];
4192
4265
  if (!colDef?.headerRef.current) return;
4193
- const column = allColumnsByField[field];
4194
- const columnType = column && "type" in column ? column.type : void 0;
4266
+ const columnType = "type" in colDef ? colDef.type : void 0;
4195
4267
  if (columnType === "actions") return;
4196
4268
  const optimalWidth = computeAutoFitWidth({
4197
4269
  headerEl: colDef.headerRef.current,
4198
- field,
4270
+ field: colDef.field,
4199
4271
  dataInPage
4200
4272
  });
4201
4273
  if (optimalWidth == null) return;
@@ -4203,7 +4275,7 @@ function useDataTableRenderer({
4203
4275
  colDef.headerRef.current.style.width = widthPx;
4204
4276
  if (colDef.tableColRef.current) colDef.tableColRef.current.style.width = widthPx;
4205
4277
  },
4206
- [visibleColumnsByField, allColumnsByField, dataInPage]
4278
+ [visibleColumnsByField, dataInPage]
4207
4279
  );
4208
4280
  return {
4209
4281
  rowCount,
@@ -4219,8 +4291,8 @@ function useDataTableRenderer({
4219
4291
  handleAutoFit,
4220
4292
  isAllSelected,
4221
4293
  isTotalSelected,
4222
- isSelectedRow: (0, import_react26.useCallback)((model) => selectedModelSet.has(model), [selectedModelSet]),
4223
- isRowSelectable: (0, import_react26.useCallback)(
4294
+ isSelectedRow: (0, import_react27.useCallback)((model) => selectedModelSet.has(model), [selectedModelSet]),
4295
+ isRowSelectable: (0, import_react27.useCallback)(
4224
4296
  (rowId, row) => {
4225
4297
  if (!isRowSelectable) return true;
4226
4298
  return isRowSelectable({ row, id: rowId });
@@ -4228,13 +4300,13 @@ function useDataTableRenderer({
4228
4300
  [isRowSelectable]
4229
4301
  ),
4230
4302
  focusedRowId,
4231
- onRowFocus: (0, import_react26.useCallback)((rowId) => {
4303
+ onRowFocus: (0, import_react27.useCallback)((rowId) => {
4232
4304
  setFocusedRowId(rowId);
4233
4305
  }, []),
4234
- onAllCheckboxChange: (0, import_react26.useCallback)(() => {
4306
+ onAllCheckboxChange: (0, import_react27.useCallback)(() => {
4235
4307
  onSelectionModelChange?.(isAllSelected ? [] : selectableDataInPage.map(getId));
4236
4308
  }, [isAllSelected, selectableDataInPage, onSelectionModelChange, getId]),
4237
- onCheckboxChange: (0, import_react26.useCallback)(
4309
+ onCheckboxChange: (0, import_react27.useCallback)(
4238
4310
  (event, selectedModel) => {
4239
4311
  const isShiftClick = "shiftKey" in event && event.shiftKey;
4240
4312
  const rowIndex = dataInPage.findIndex((row, i) => getId(row, i) === selectedModel);
@@ -4268,7 +4340,7 @@ function useDataTableRenderer({
4268
4340
  columns,
4269
4341
  tableMinWidth,
4270
4342
  processedColumnGroups,
4271
- onTotalSelect: (0, import_react26.useCallback)(() => {
4343
+ onTotalSelect: (0, import_react27.useCallback)(() => {
4272
4344
  const selectableRows = rows.filter((row, i) => {
4273
4345
  if (!isRowSelectable) return true;
4274
4346
  return isRowSelectable({ row, id: getId(row, i) });
@@ -4282,11 +4354,11 @@ function useDataTableRenderer({
4282
4354
  }
4283
4355
 
4284
4356
  // src/components/Table/Table.tsx
4285
- var import_react27 = __toESM(require("react"));
4357
+ var import_react28 = __toESM(require("react"));
4286
4358
  var import_joy35 = require("@mui/joy");
4287
4359
  var Table = (props) => {
4288
4360
  const { children, ...inheritProps } = props;
4289
- return /* @__PURE__ */ import_react27.default.createElement(import_joy35.Table, { ...inheritProps }, children);
4361
+ return /* @__PURE__ */ import_react28.default.createElement(import_joy35.Table, { ...inheritProps }, children);
4290
4362
  };
4291
4363
  Table.displayName = "Table";
4292
4364
  function TableHead(props) {
@@ -4297,7 +4369,7 @@ function TableHead(props) {
4297
4369
  slots: { checkbox: RenderCheckbox = Checkbox_default } = {},
4298
4370
  slotProps: { checkbox: checkboxProps = {} } = {}
4299
4371
  } = props;
4300
- return /* @__PURE__ */ import_react27.default.createElement("thead", null, /* @__PURE__ */ import_react27.default.createElement("tr", null, showCheckbox && /* @__PURE__ */ import_react27.default.createElement(
4372
+ return /* @__PURE__ */ import_react28.default.createElement("thead", null, /* @__PURE__ */ import_react28.default.createElement("tr", null, showCheckbox && /* @__PURE__ */ import_react28.default.createElement(
4301
4373
  "th",
4302
4374
  {
4303
4375
  style: {
@@ -4305,8 +4377,8 @@ function TableHead(props) {
4305
4377
  textAlign: "center"
4306
4378
  }
4307
4379
  },
4308
- /* @__PURE__ */ import_react27.default.createElement(RenderCheckbox, { onChange: onCheckboxChange, ...checkboxProps })
4309
- ), headCells.map((headCell) => /* @__PURE__ */ import_react27.default.createElement(
4380
+ /* @__PURE__ */ import_react28.default.createElement(RenderCheckbox, { onChange: onCheckboxChange, ...checkboxProps })
4381
+ ), headCells.map((headCell) => /* @__PURE__ */ import_react28.default.createElement(
4310
4382
  "th",
4311
4383
  {
4312
4384
  key: headCell.label,
@@ -4331,15 +4403,15 @@ function TableBody(props) {
4331
4403
  slots: { checkbox: RenderCheckbox = Checkbox_default } = {},
4332
4404
  slotProps: { checkbox: checkboxProps = {} } = {}
4333
4405
  } = props;
4334
- 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(
4406
+ 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(
4335
4407
  "td",
4336
4408
  {
4337
4409
  style: {
4338
4410
  textAlign: "center"
4339
4411
  }
4340
4412
  },
4341
- /* @__PURE__ */ import_react27.default.createElement(RenderCheckbox, { onChange: (event) => onCheckboxChange?.(event, rowIndex), ...checkboxProps })
4342
- ), cellOrder.map((cellKey) => /* @__PURE__ */ import_react27.default.createElement(
4413
+ /* @__PURE__ */ import_react28.default.createElement(RenderCheckbox, { onChange: (event) => onCheckboxChange?.(event, rowIndex), ...checkboxProps })
4414
+ ), cellOrder.map((cellKey) => /* @__PURE__ */ import_react28.default.createElement(
4343
4415
  "td",
4344
4416
  {
4345
4417
  key: cellKey,
@@ -4353,7 +4425,7 @@ function TableBody(props) {
4353
4425
  TableBody.displayName = "TableBody";
4354
4426
 
4355
4427
  // src/components/Pagination/Pagination.tsx
4356
- var import_react28 = __toESM(require("react"));
4428
+ var import_react29 = __toESM(require("react"));
4357
4429
  var import_ChevronLeftRounded = __toESM(require("@mui/icons-material/ChevronLeftRounded"));
4358
4430
  var import_ChevronRightRounded = __toESM(require("@mui/icons-material/ChevronRightRounded"));
4359
4431
  var import_FirstPageRounded = __toESM(require("@mui/icons-material/FirstPageRounded"));
@@ -4423,7 +4495,7 @@ function Pagination(inProps) {
4423
4495
  const [paginationModel, setPaginationModel] = useControlledState(
4424
4496
  _paginationModel,
4425
4497
  defaultPaginationModel,
4426
- (0, import_react28.useCallback)(
4498
+ (0, import_react29.useCallback)(
4427
4499
  (newPage) => {
4428
4500
  onPageChange(newPage.page);
4429
4501
  },
@@ -4439,7 +4511,7 @@ function Pagination(inProps) {
4439
4511
  const afterPages = [paginationModel.page + 1, paginationModel.page + 2].filter((p) => p <= lastPage - 1);
4440
4512
  const isMoreAfterPages = lastPage > 1 && paginationModel.page < lastPage - 3;
4441
4513
  const isMoreBeforePages = lastPage > 1 && paginationModel.page > 4;
4442
- (0, import_react28.useEffect)(() => {
4514
+ (0, import_react29.useEffect)(() => {
4443
4515
  if (paginationModel.page > lastPage) {
4444
4516
  setPaginationModel({ ...paginationModel, page: lastPage });
4445
4517
  }
@@ -4449,7 +4521,7 @@ function Pagination(inProps) {
4449
4521
  value: `${i + 1}`
4450
4522
  }));
4451
4523
  if (variant === "compact") {
4452
- 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(
4524
+ 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(
4453
4525
  PaginationIconButton,
4454
4526
  {
4455
4527
  size,
@@ -4459,8 +4531,8 @@ function Pagination(inProps) {
4459
4531
  disabled: paginationModel.page === firstPage,
4460
4532
  "aria-label": "First page"
4461
4533
  },
4462
- /* @__PURE__ */ import_react28.default.createElement(import_FirstPageRounded.default, null)
4463
- ), /* @__PURE__ */ import_react28.default.createElement(
4534
+ /* @__PURE__ */ import_react29.default.createElement(import_FirstPageRounded.default, null)
4535
+ ), /* @__PURE__ */ import_react29.default.createElement(
4464
4536
  PaginationIconButton,
4465
4537
  {
4466
4538
  size,
@@ -4470,8 +4542,8 @@ function Pagination(inProps) {
4470
4542
  disabled: paginationModel.page === firstPage,
4471
4543
  "aria-label": "Previous page"
4472
4544
  },
4473
- /* @__PURE__ */ import_react28.default.createElement(import_ChevronLeftRounded.default, null)
4474
- )), /* @__PURE__ */ import_react28.default.createElement(
4545
+ /* @__PURE__ */ import_react29.default.createElement(import_ChevronLeftRounded.default, null)
4546
+ )), /* @__PURE__ */ import_react29.default.createElement(
4475
4547
  Autocomplete_default,
4476
4548
  {
4477
4549
  size,
@@ -4490,7 +4562,7 @@ function Pagination(inProps) {
4490
4562
  }[size]
4491
4563
  }
4492
4564
  }
4493
- ), /* @__PURE__ */ import_react28.default.createElement(
4565
+ ), /* @__PURE__ */ import_react29.default.createElement(
4494
4566
  Typography_default,
4495
4567
  {
4496
4568
  level: `body-${size}`,
@@ -4501,7 +4573,7 @@ function Pagination(inProps) {
4501
4573
  },
4502
4574
  "/ ",
4503
4575
  lastPage
4504
- ), /* @__PURE__ */ import_react28.default.createElement(Stack_default, { direction: "row" }, /* @__PURE__ */ import_react28.default.createElement(
4576
+ ), /* @__PURE__ */ import_react29.default.createElement(Stack_default, { direction: "row" }, /* @__PURE__ */ import_react29.default.createElement(
4505
4577
  PaginationIconButton,
4506
4578
  {
4507
4579
  size,
@@ -4511,8 +4583,8 @@ function Pagination(inProps) {
4511
4583
  disabled: paginationModel.page === lastPage,
4512
4584
  "aria-label": "Next page"
4513
4585
  },
4514
- /* @__PURE__ */ import_react28.default.createElement(import_ChevronRightRounded.default, null)
4515
- ), /* @__PURE__ */ import_react28.default.createElement(
4586
+ /* @__PURE__ */ import_react29.default.createElement(import_ChevronRightRounded.default, null)
4587
+ ), /* @__PURE__ */ import_react29.default.createElement(
4516
4588
  PaginationIconButton,
4517
4589
  {
4518
4590
  size,
@@ -4522,10 +4594,10 @@ function Pagination(inProps) {
4522
4594
  disabled: paginationModel.page === lastPage,
4523
4595
  "aria-label": "Last page"
4524
4596
  },
4525
- /* @__PURE__ */ import_react28.default.createElement(import_LastPageRounded.default, null)
4597
+ /* @__PURE__ */ import_react29.default.createElement(import_LastPageRounded.default, null)
4526
4598
  ))));
4527
4599
  }
4528
- return /* @__PURE__ */ import_react28.default.createElement(PaginationRoot, { ...innerProps }, /* @__PURE__ */ import_react28.default.createElement(PaginationContainer, { direction: "row", size, alignItems: "center" }, /* @__PURE__ */ import_react28.default.createElement(
4600
+ return /* @__PURE__ */ import_react29.default.createElement(PaginationRoot, { ...innerProps }, /* @__PURE__ */ import_react29.default.createElement(PaginationContainer, { direction: "row", size, alignItems: "center" }, /* @__PURE__ */ import_react29.default.createElement(
4529
4601
  PaginationIconButton,
4530
4602
  {
4531
4603
  size,
@@ -4535,8 +4607,8 @@ function Pagination(inProps) {
4535
4607
  disabled: paginationModel.page === firstPage,
4536
4608
  "aria-label": "Previous page"
4537
4609
  },
4538
- /* @__PURE__ */ import_react28.default.createElement(import_ChevronLeftRounded.default, null)
4539
- ), paginationModel.page !== firstPage && /* @__PURE__ */ import_react28.default.createElement(PaginationButton, { size, variant: "plain", color: "neutral", onClick: () => handlePageChange(firstPage) }, firstPage), isMoreBeforePages && /* @__PURE__ */ import_react28.default.createElement(
4610
+ /* @__PURE__ */ import_react29.default.createElement(import_ChevronLeftRounded.default, null)
4611
+ ), paginationModel.page !== firstPage && /* @__PURE__ */ import_react29.default.createElement(PaginationButton, { size, variant: "plain", color: "neutral", onClick: () => handlePageChange(firstPage) }, firstPage), isMoreBeforePages && /* @__PURE__ */ import_react29.default.createElement(
4540
4612
  PaginationButton,
4541
4613
  {
4542
4614
  size,
@@ -4546,7 +4618,7 @@ function Pagination(inProps) {
4546
4618
  "aria-label": "More previous pages"
4547
4619
  },
4548
4620
  "..."
4549
- ), 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: "active", 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(
4621
+ ), 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: "active", 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(
4550
4622
  PaginationButton,
4551
4623
  {
4552
4624
  size,
@@ -4556,7 +4628,7 @@ function Pagination(inProps) {
4556
4628
  onClick: () => handlePageChange(paginationModel.page + 3)
4557
4629
  },
4558
4630
  "..."
4559
- ), paginationModel.page !== lastPage && /* @__PURE__ */ import_react28.default.createElement(PaginationButton, { size, variant: "plain", color: "neutral", onClick: () => handlePageChange(lastPage) }, lastPage), /* @__PURE__ */ import_react28.default.createElement(
4631
+ ), paginationModel.page !== lastPage && /* @__PURE__ */ import_react29.default.createElement(PaginationButton, { size, variant: "plain", color: "neutral", onClick: () => handlePageChange(lastPage) }, lastPage), /* @__PURE__ */ import_react29.default.createElement(
4560
4632
  PaginationIconButton,
4561
4633
  {
4562
4634
  size,
@@ -4566,7 +4638,7 @@ function Pagination(inProps) {
4566
4638
  disabled: paginationModel.page === lastPage,
4567
4639
  "aria-label": "Next page"
4568
4640
  },
4569
- /* @__PURE__ */ import_react28.default.createElement(import_ChevronRightRounded.default, null)
4641
+ /* @__PURE__ */ import_react29.default.createElement(import_ChevronRightRounded.default, null)
4570
4642
  )));
4571
4643
  }
4572
4644
  Pagination.displayName = "Pagination";
@@ -4640,9 +4712,9 @@ function Component(props, apiRef) {
4640
4712
  isTotalSelected: ___________,
4641
4713
  ...innerProps
4642
4714
  } = props;
4643
- const tableId = (0, import_react29.useId)();
4644
- const parentRef = (0, import_react29.useRef)(null);
4645
- const tableBodyRef = (0, import_react29.useRef)(null);
4715
+ const tableId = (0, import_react30.useId)();
4716
+ const parentRef = (0, import_react30.useRef)(null);
4717
+ const tableBodyRef = (0, import_react30.useRef)(null);
4646
4718
  const {
4647
4719
  columns,
4648
4720
  processedColumnGroups,
@@ -4678,10 +4750,10 @@ function Component(props, apiRef) {
4678
4750
  measureElement: (element) => element.clientHeight,
4679
4751
  overscan: 10
4680
4752
  });
4681
- const paginationModel = (0, import_react29.useMemo)(() => ({ page, pageSize }), [page, pageSize]);
4753
+ const paginationModel = (0, import_react30.useMemo)(() => ({ page, pageSize }), [page, pageSize]);
4682
4754
  const columnsKey = getObjectVersion(columns);
4683
- const headerCheckboxElement = (0, import_react29.useMemo)(
4684
- () => /* @__PURE__ */ import_react29.default.createElement(
4755
+ const headerCheckboxElement = (0, import_react30.useMemo)(
4756
+ () => /* @__PURE__ */ import_react30.default.createElement(
4685
4757
  RenderCheckbox,
4686
4758
  {
4687
4759
  onChange: onAllCheckboxChange,
@@ -4706,20 +4778,20 @@ function Component(props, apiRef) {
4706
4778
  const showNoRowsOverlay = !loading && rowCount === 0;
4707
4779
  const showFillerColumn = columns.length > 0 && columns.every((c) => !!c.width);
4708
4780
  const totalColCount = Math.max(1, columns.length + (checkboxSelection ? 1 : 0) + (showFillerColumn ? 1 : 0));
4709
- const getRowClickHandler = (0, import_react29.useCallback)(
4781
+ const getRowClickHandler = (0, import_react30.useCallback)(
4710
4782
  (row, rowId) => (e) => {
4711
4783
  onRowClick?.({ row, rowId }, e);
4712
4784
  checkboxSelection && !disableSelectionOnClick && isRowSelectableCheck(rowId, row) && onCheckboxChange(e, rowId);
4713
4785
  },
4714
4786
  [onRowClick, checkboxSelection, disableSelectionOnClick, onCheckboxChange, isRowSelectableCheck]
4715
4787
  );
4716
- const getRowFocusHandler = (0, import_react29.useCallback)(
4788
+ const getRowFocusHandler = (0, import_react30.useCallback)(
4717
4789
  (rowId) => () => {
4718
4790
  onRowFocus(rowId);
4719
4791
  },
4720
4792
  [onRowFocus]
4721
4793
  );
4722
- const getCheckboxClickHandler = (0, import_react29.useCallback)(
4794
+ const getCheckboxClickHandler = (0, import_react30.useCallback)(
4723
4795
  (rowId, row) => (e) => {
4724
4796
  e.stopPropagation();
4725
4797
  if (isRowSelectableCheck(rowId, row)) {
@@ -4729,7 +4801,7 @@ function Component(props, apiRef) {
4729
4801
  },
4730
4802
  [onCheckboxChange, isRowSelectableCheck, onRowFocus]
4731
4803
  );
4732
- const handleTableKeyDown = (0, import_react29.useCallback)(
4804
+ const handleTableKeyDown = (0, import_react30.useCallback)(
4733
4805
  (e) => {
4734
4806
  const supportedKeys = ["ArrowUp", "ArrowDown", " ", "Home", "End", "PageUp", "PageDown"];
4735
4807
  if (!supportedKeys.includes(e.key)) return;
@@ -4819,7 +4891,7 @@ function Component(props, apiRef) {
4819
4891
  virtualizer
4820
4892
  ]
4821
4893
  );
4822
- (0, import_react29.useImperativeHandle)(apiRef, () => ({
4894
+ (0, import_react30.useImperativeHandle)(apiRef, () => ({
4823
4895
  getRowIndexRelativeToVisibleRows(rowId) {
4824
4896
  return dataInPage.findIndex((row) => String(getId(row)) === rowId);
4825
4897
  },
@@ -4835,7 +4907,7 @@ function Component(props, apiRef) {
4835
4907
  });
4836
4908
  }
4837
4909
  }));
4838
- return /* @__PURE__ */ import_react29.default.createElement(
4910
+ return /* @__PURE__ */ import_react30.default.createElement(
4839
4911
  Box_default,
4840
4912
  {
4841
4913
  sx: {
@@ -4845,7 +4917,7 @@ function Component(props, apiRef) {
4845
4917
  flexDirection: "column"
4846
4918
  }
4847
4919
  },
4848
- (!!checkboxSelection || !!Toolbar) && /* @__PURE__ */ import_react29.default.createElement(
4920
+ (!!checkboxSelection || !!Toolbar) && /* @__PURE__ */ import_react30.default.createElement(
4849
4921
  Stack_default,
4850
4922
  {
4851
4923
  direction: "row",
@@ -4855,10 +4927,10 @@ function Component(props, apiRef) {
4855
4927
  justifyContent: "space-between",
4856
4928
  alignItems: "center"
4857
4929
  },
4858
- !!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"))),
4859
- Toolbar && /* @__PURE__ */ import_react29.default.createElement(Toolbar, { ...toolbarProps || {} })
4930
+ !!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"))),
4931
+ Toolbar && /* @__PURE__ */ import_react30.default.createElement(Toolbar, { ...toolbarProps || {} })
4860
4932
  ),
4861
- /* @__PURE__ */ import_react29.default.createElement(
4933
+ /* @__PURE__ */ import_react30.default.createElement(
4862
4934
  Sheet_default,
4863
4935
  {
4864
4936
  variant: "outlined",
@@ -4879,24 +4951,24 @@ function Component(props, apiRef) {
4879
4951
  ref: parentRef,
4880
4952
  ...backgroundProps
4881
4953
  },
4882
- /* @__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(
4954
+ /* @__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(
4883
4955
  "col",
4884
4956
  {
4885
4957
  style: {
4886
4958
  width: "40px"
4887
4959
  }
4888
4960
  }
4889
- ), columns.map((c) => /* @__PURE__ */ import_react29.default.createElement(
4961
+ ), columns.map((c) => /* @__PURE__ */ import_react30.default.createElement(
4890
4962
  "col",
4891
4963
  {
4892
4964
  ref: c.tableColRef,
4893
- key: `${c.field.toString()}_${c.width}`,
4965
+ key: c.field.toString(),
4894
4966
  style: {
4895
4967
  width: c.width,
4896
4968
  minWidth: c.minWidth ?? "50px"
4897
4969
  }
4898
4970
  }
4899
- )), 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(
4971
+ )), 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(
4900
4972
  "th",
4901
4973
  {
4902
4974
  rowSpan: processedColumnGroups.maxLevel + 2,
@@ -4907,12 +4979,12 @@ function Component(props, apiRef) {
4907
4979
  }
4908
4980
  },
4909
4981
  headerCheckboxElement
4910
- ), 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) => {
4982
+ ), 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) => {
4911
4983
  const nextGroup = levelGroups[groupIndex + 1];
4912
4984
  const emptyCells = nextGroup ? nextGroup.startIndex - (group.startIndex + group.colspan) : columns.length - (group.startIndex + group.colspan);
4913
4985
  const params = { groupId: group.groupId };
4914
4986
  const computedHeaderClassName = group.headerClassName ? typeof group.headerClassName === "function" ? group.headerClassName(params) : group.headerClassName : void 0;
4915
- return /* @__PURE__ */ import_react29.default.createElement(import_react29.Fragment, { key: group.groupId }, /* @__PURE__ */ import_react29.default.createElement(
4987
+ return /* @__PURE__ */ import_react30.default.createElement(import_react30.Fragment, { key: group.groupId }, /* @__PURE__ */ import_react30.default.createElement(
4916
4988
  "th",
4917
4989
  {
4918
4990
  colSpan: group.colspan,
@@ -4924,14 +4996,14 @@ function Component(props, apiRef) {
4924
4996
  className: computedHeaderClassName
4925
4997
  },
4926
4998
  group.headerName ?? group.groupId
4927
- ), emptyCells > 0 && Array.from({ length: emptyCells }).map((_2, i) => /* @__PURE__ */ import_react29.default.createElement("th", { key: `empty-between-${level}-${groupIndex}-${i}`, colSpan: 1 })));
4928
- }), showFillerColumn && level === 0 && /* @__PURE__ */ import_react29.default.createElement(
4999
+ ), emptyCells > 0 && Array.from({ length: emptyCells }).map((_2, i) => /* @__PURE__ */ import_react30.default.createElement("th", { key: `empty-between-${level}-${groupIndex}-${i}`, colSpan: 1 })));
5000
+ }), showFillerColumn && level === 0 && /* @__PURE__ */ import_react30.default.createElement(
4929
5001
  "th",
4930
5002
  {
4931
5003
  "aria-hidden": "true",
4932
5004
  rowSpan: processedColumnGroups.maxLevel + 2
4933
5005
  }
4934
- ))), /* @__PURE__ */ import_react29.default.createElement("tr", null, (!processedColumnGroups || processedColumnGroups.groups.length === 0) && checkboxSelection && /* @__PURE__ */ import_react29.default.createElement(
5006
+ ))), /* @__PURE__ */ import_react30.default.createElement("tr", null, (!processedColumnGroups || processedColumnGroups.groups.length === 0) && checkboxSelection && /* @__PURE__ */ import_react30.default.createElement(
4935
5007
  "th",
4936
5008
  {
4937
5009
  style: {
@@ -4940,13 +5012,13 @@ function Component(props, apiRef) {
4940
5012
  }
4941
5013
  },
4942
5014
  headerCheckboxElement
4943
- ), columns.map((c, i) => (
5015
+ ), columns.map((c) => (
4944
5016
  // @ts-ignore
4945
- /* @__PURE__ */ import_react29.default.createElement(
5017
+ /* @__PURE__ */ import_react30.default.createElement(
4946
5018
  HeadCell2,
4947
5019
  {
4948
5020
  tableId,
4949
- key: `${c.field.toString()}_${i}`,
5021
+ key: c.field.toString(),
4950
5022
  stickyHeader: props.stickyHeader,
4951
5023
  editMode: !!c.isCellEditable,
4952
5024
  onSortChange: handleSortChange,
@@ -4954,7 +5026,7 @@ function Component(props, apiRef) {
4954
5026
  ...c
4955
5027
  }
4956
5028
  )
4957
- )), showFillerColumn && (!processedColumnGroups || processedColumnGroups.groups.length === 0) && /* @__PURE__ */ import_react29.default.createElement("th", { "aria-hidden": "true" }))), /* @__PURE__ */ import_react29.default.createElement(
5029
+ )), showFillerColumn && (!processedColumnGroups || processedColumnGroups.groups.length === 0) && /* @__PURE__ */ import_react30.default.createElement("th", { "aria-hidden": "true" }))), /* @__PURE__ */ import_react30.default.createElement(
4958
5030
  VirtualizedTableBody,
4959
5031
  {
4960
5032
  ref: tableBodyRef,
@@ -4965,7 +5037,7 @@ function Component(props, apiRef) {
4965
5037
  role: "rowgroup",
4966
5038
  "aria-label": "DataTableBody"
4967
5039
  },
4968
- !!loading && /* @__PURE__ */ import_react29.default.createElement(OverlayWrapper, null, /* @__PURE__ */ import_react29.default.createElement(
5040
+ !!loading && /* @__PURE__ */ import_react30.default.createElement(OverlayWrapper, null, /* @__PURE__ */ import_react30.default.createElement(
4969
5041
  "td",
4970
5042
  {
4971
5043
  style: {
@@ -4974,7 +5046,7 @@ function Component(props, apiRef) {
4974
5046
  overflow: "visible"
4975
5047
  }
4976
5048
  },
4977
- /* @__PURE__ */ import_react29.default.createElement(
5049
+ /* @__PURE__ */ import_react30.default.createElement(
4978
5050
  Box_default,
4979
5051
  {
4980
5052
  sx: {
@@ -4984,10 +5056,10 @@ function Component(props, apiRef) {
4984
5056
  right: 0
4985
5057
  }
4986
5058
  },
4987
- /* @__PURE__ */ import_react29.default.createElement(LoadingOverlay, null)
5059
+ /* @__PURE__ */ import_react30.default.createElement(LoadingOverlay, null)
4988
5060
  )
4989
5061
  )),
4990
- showNoRowsOverlay && /* @__PURE__ */ import_react29.default.createElement("tr", null, /* @__PURE__ */ import_react29.default.createElement("td", { colSpan: totalColCount, style: { border: "none" } }, /* @__PURE__ */ import_react29.default.createElement(
5062
+ showNoRowsOverlay && /* @__PURE__ */ import_react30.default.createElement("tr", null, /* @__PURE__ */ import_react30.default.createElement("td", { colSpan: totalColCount, style: { border: "none" } }, /* @__PURE__ */ import_react30.default.createElement(
4991
5063
  Box_default,
4992
5064
  {
4993
5065
  sx: {
@@ -4997,14 +5069,14 @@ function Component(props, apiRef) {
4997
5069
  minHeight: "150px"
4998
5070
  }
4999
5071
  },
5000
- /* @__PURE__ */ import_react29.default.createElement(NoRowsOverlay, { ...noRowsOverlayProps })
5072
+ /* @__PURE__ */ import_react30.default.createElement(NoRowsOverlay, { ...noRowsOverlayProps })
5001
5073
  ))),
5002
5074
  virtualizedItems.map((virtualizedRow, index) => {
5003
5075
  const rowIndex = virtualizedRow.index;
5004
5076
  const row = dataInPage[rowIndex];
5005
5077
  const rowId = getId(row, rowIndex);
5006
5078
  const striped = stripe && (stripe === "even" && (rowIndex + 1) % 2 === 0 || stripe === "odd" && (rowIndex + 1) % 2 === 1);
5007
- return /* @__PURE__ */ import_react29.default.createElement(
5079
+ return /* @__PURE__ */ import_react30.default.createElement(
5008
5080
  VirtualizedTableRow,
5009
5081
  {
5010
5082
  key: virtualizedRow.key,
@@ -5024,7 +5096,7 @@ function Component(props, apiRef) {
5024
5096
  transform: `translateY(${virtualizedRow.start - index * virtualizedRow.size}px)`
5025
5097
  }
5026
5098
  },
5027
- checkboxSelection && /* @__PURE__ */ import_react29.default.createElement(
5099
+ checkboxSelection && /* @__PURE__ */ import_react30.default.createElement(
5028
5100
  "th",
5029
5101
  {
5030
5102
  scope: "row",
@@ -5032,7 +5104,7 @@ function Component(props, apiRef) {
5032
5104
  textAlign: "center"
5033
5105
  }
5034
5106
  },
5035
- /* @__PURE__ */ import_react29.default.createElement(
5107
+ /* @__PURE__ */ import_react30.default.createElement(
5036
5108
  RenderCheckbox,
5037
5109
  {
5038
5110
  onClick: getCheckboxClickHandler(rowId, row),
@@ -5043,7 +5115,7 @@ function Component(props, apiRef) {
5043
5115
  }
5044
5116
  )
5045
5117
  ),
5046
- /* @__PURE__ */ import_react29.default.createElement(
5118
+ /* @__PURE__ */ import_react30.default.createElement(
5047
5119
  BodyRow2,
5048
5120
  {
5049
5121
  tableId,
@@ -5054,12 +5126,12 @@ function Component(props, apiRef) {
5054
5126
  noWrap: props.noWrap
5055
5127
  }
5056
5128
  ),
5057
- showFillerColumn && /* @__PURE__ */ import_react29.default.createElement("td", { "aria-hidden": "true" })
5129
+ showFillerColumn && /* @__PURE__ */ import_react30.default.createElement("td", { "aria-hidden": "true" })
5058
5130
  );
5059
5131
  })
5060
- ), Footer && /* @__PURE__ */ import_react29.default.createElement(Footer, null))
5132
+ ), Footer && /* @__PURE__ */ import_react30.default.createElement(Footer, null))
5061
5133
  ),
5062
- pagination && /* @__PURE__ */ import_react29.default.createElement(
5134
+ pagination && /* @__PURE__ */ import_react30.default.createElement(
5063
5135
  Pagination_default,
5064
5136
  {
5065
5137
  pt: 2,
@@ -5072,11 +5144,11 @@ function Component(props, apiRef) {
5072
5144
  )
5073
5145
  );
5074
5146
  }
5075
- var DataTable = (0, import_react29.forwardRef)(Component);
5147
+ var DataTable = (0, import_react30.forwardRef)(Component);
5076
5148
  DataTable.displayName = "DataTable";
5077
5149
 
5078
5150
  // src/components/DateRangePicker/DateRangePicker.tsx
5079
- var import_react30 = __toESM(require("react"));
5151
+ var import_react31 = __toESM(require("react"));
5080
5152
  var import_react_imask2 = require("react-imask");
5081
5153
  var import_CalendarToday2 = __toESM(require("@mui/icons-material/CalendarToday"));
5082
5154
  var import_joy37 = require("@mui/joy");
@@ -5218,9 +5290,9 @@ var parseDates = (str, format) => {
5218
5290
  var formatToPattern2 = (format) => {
5219
5291
  return `${format} - ${format}`.replace(/YYYY/g, "Y").replace(/MM/g, "M").replace(/DD/g, "D").replace(/[^YMD\s]/g, (match) => `${match}\``);
5220
5292
  };
5221
- var TextMaskAdapter5 = import_react30.default.forwardRef(function TextMaskAdapter6(props, ref) {
5293
+ var TextMaskAdapter5 = import_react31.default.forwardRef(function TextMaskAdapter6(props, ref) {
5222
5294
  const { onChange, format, ...other } = props;
5223
- return /* @__PURE__ */ import_react30.default.createElement(
5295
+ return /* @__PURE__ */ import_react31.default.createElement(
5224
5296
  import_react_imask2.IMaskInput,
5225
5297
  {
5226
5298
  ...other,
@@ -5254,7 +5326,7 @@ var TextMaskAdapter5 = import_react30.default.forwardRef(function TextMaskAdapte
5254
5326
  }
5255
5327
  );
5256
5328
  });
5257
- var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5329
+ var DateRangePicker = (0, import_react31.forwardRef)((inProps, ref) => {
5258
5330
  const props = (0, import_joy37.useThemeProps)({ props: inProps, name: "DateRangePicker" });
5259
5331
  const {
5260
5332
  onChange,
@@ -5281,28 +5353,28 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5281
5353
  numberOfMonths,
5282
5354
  ...innerProps
5283
5355
  } = props;
5284
- const innerRef = (0, import_react30.useRef)(null);
5285
- const buttonRef = (0, import_react30.useRef)(null);
5356
+ const innerRef = (0, import_react31.useRef)(null);
5357
+ const buttonRef = (0, import_react31.useRef)(null);
5286
5358
  const [rawValue, setValue] = useControlledState(
5287
5359
  props.value,
5288
5360
  props.defaultValue ?? null,
5289
- (0, import_react30.useCallback)(
5361
+ (0, import_react31.useCallback)(
5290
5362
  (value2) => onChange?.({ target: { name: props.name, value: value2 ?? "" } }),
5291
5363
  [props.name, onChange]
5292
5364
  )
5293
5365
  );
5294
5366
  const value = rawValue ?? "";
5295
5367
  const isAlphabeticDisplay = hasAlphabeticMonth2(displayFormat);
5296
- const [displayValue, setDisplayValue] = (0, import_react30.useState)(
5368
+ const [displayValue, setDisplayValue] = (0, import_react31.useState)(
5297
5369
  () => value ? formatValueString2(parseDates(value, format), displayFormat, locale) : ""
5298
5370
  );
5299
- const [anchorEl, setAnchorEl] = (0, import_react30.useState)(null);
5371
+ const [anchorEl, setAnchorEl] = (0, import_react31.useState)(null);
5300
5372
  const open = Boolean(anchorEl);
5301
- const calendarValue = (0, import_react30.useMemo)(
5373
+ const calendarValue = (0, import_react31.useMemo)(
5302
5374
  () => value ? parseDates(value, format) : void 0,
5303
5375
  [value, format]
5304
5376
  );
5305
- (0, import_react30.useEffect)(() => {
5377
+ (0, import_react31.useEffect)(() => {
5306
5378
  if (value) {
5307
5379
  try {
5308
5380
  const dates = parseDates(value, format);
@@ -5314,13 +5386,13 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5314
5386
  setDisplayValue("");
5315
5387
  }
5316
5388
  }, [displayFormat, locale, value, format]);
5317
- (0, import_react30.useEffect)(() => {
5389
+ (0, import_react31.useEffect)(() => {
5318
5390
  if (!anchorEl) {
5319
5391
  innerRef.current?.blur();
5320
5392
  }
5321
5393
  }, [anchorEl, innerRef]);
5322
- (0, import_react30.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
5323
- const handleChange = (0, import_react30.useCallback)(
5394
+ (0, import_react31.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
5395
+ const handleChange = (0, import_react31.useCallback)(
5324
5396
  (event) => {
5325
5397
  const value2 = event.target.value;
5326
5398
  setDisplayValue(value2 ? formatValueString2(parseDates(value2, format), displayFormat, locale) : value2);
@@ -5328,7 +5400,7 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5328
5400
  },
5329
5401
  [displayFormat, format, locale, setValue]
5330
5402
  );
5331
- const handleDisplayInputChange = (0, import_react30.useCallback)(
5403
+ const handleDisplayInputChange = (0, import_react31.useCallback)(
5332
5404
  (event) => {
5333
5405
  if (event.target.value === "") {
5334
5406
  handleChange({
@@ -5353,14 +5425,14 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5353
5425
  },
5354
5426
  [displayFormat, format, handleChange, props.name]
5355
5427
  );
5356
- const handleCalendarToggle = (0, import_react30.useCallback)(
5428
+ const handleCalendarToggle = (0, import_react31.useCallback)(
5357
5429
  (event) => {
5358
5430
  setAnchorEl(anchorEl ? null : event.currentTarget);
5359
5431
  innerRef.current?.focus();
5360
5432
  },
5361
5433
  [anchorEl, setAnchorEl, innerRef]
5362
5434
  );
5363
- const handleCalendarChange = (0, import_react30.useCallback)(
5435
+ const handleCalendarChange = (0, import_react31.useCallback)(
5364
5436
  ([date1, date2]) => {
5365
5437
  if (!date1 || !date2) return;
5366
5438
  const formattedValue = formatValueString2([date1, date2], format);
@@ -5374,7 +5446,7 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5374
5446
  },
5375
5447
  [props.value, props.name, onChange, setValue, setAnchorEl, format, displayFormat, locale]
5376
5448
  );
5377
- const handleInputMouseDown = (0, import_react30.useCallback)(
5449
+ const handleInputMouseDown = (0, import_react31.useCallback)(
5378
5450
  (event) => {
5379
5451
  if (inputReadOnly || isAlphabeticDisplay) {
5380
5452
  event.preventDefault();
@@ -5383,7 +5455,7 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5383
5455
  },
5384
5456
  [inputReadOnly, isAlphabeticDisplay, buttonRef]
5385
5457
  );
5386
- const handleInputClick = (0, import_react30.useCallback)(
5458
+ const handleInputClick = (0, import_react31.useCallback)(
5387
5459
  (event) => {
5388
5460
  if (inputReadOnly && !readOnly) {
5389
5461
  handleCalendarToggle(event);
@@ -5391,7 +5463,7 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5391
5463
  },
5392
5464
  [inputReadOnly, readOnly, handleCalendarToggle]
5393
5465
  );
5394
- const handlePresetClick = (0, import_react30.useCallback)(
5466
+ const handlePresetClick = (0, import_react31.useCallback)(
5395
5467
  (presetValue) => {
5396
5468
  if (props.value !== void 0) {
5397
5469
  onChange?.({ target: { name: props.name, value: presetValue } });
@@ -5404,7 +5476,7 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5404
5476
  },
5405
5477
  [props.value, props.name, onChange, setValue, setAnchorEl, format, displayFormat, locale]
5406
5478
  );
5407
- const isPresetDisabled = (0, import_react30.useCallback)(
5479
+ const isPresetDisabled = (0, import_react31.useCallback)(
5408
5480
  (presetValue) => {
5409
5481
  try {
5410
5482
  const dates = parseDates(presetValue, format);
@@ -5423,7 +5495,7 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5423
5495
  },
5424
5496
  [format, minDate, maxDate, disableFuture, disablePast]
5425
5497
  );
5426
- 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(
5498
+ 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(
5427
5499
  Input_default,
5428
5500
  {
5429
5501
  ...innerProps,
@@ -5450,7 +5522,7 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5450
5522
  },
5451
5523
  error,
5452
5524
  sx: { width: "100%" },
5453
- endDecorator: /* @__PURE__ */ import_react30.default.createElement(
5525
+ endDecorator: /* @__PURE__ */ import_react31.default.createElement(
5454
5526
  CalendarButton2,
5455
5527
  {
5456
5528
  ref: buttonRef,
@@ -5462,13 +5534,13 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5462
5534
  "aria-expanded": open,
5463
5535
  disabled
5464
5536
  },
5465
- /* @__PURE__ */ import_react30.default.createElement(import_CalendarToday2.default, null)
5537
+ /* @__PURE__ */ import_react31.default.createElement(import_CalendarToday2.default, null)
5466
5538
  ),
5467
5539
  label,
5468
5540
  helperText,
5469
5541
  readOnly: readOnly || inputReadOnly || isAlphabeticDisplay
5470
5542
  }
5471
- ), open && /* @__PURE__ */ import_react30.default.createElement(import_base4.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react30.default.createElement(
5543
+ ), open && /* @__PURE__ */ import_react31.default.createElement(import_base4.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react31.default.createElement(
5472
5544
  StyledPopper2,
5473
5545
  {
5474
5546
  id: "date-range-picker-popper",
@@ -5487,7 +5559,7 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5487
5559
  "aria-label": "Calendar Tooltip",
5488
5560
  "aria-expanded": open
5489
5561
  },
5490
- /* @__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(
5562
+ /* @__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(
5491
5563
  Calendar_default,
5492
5564
  {
5493
5565
  rangeSelection: true,
@@ -5500,14 +5572,14 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5500
5572
  locale,
5501
5573
  numberOfMonths
5502
5574
  }
5503
- ), !hideClearButton && /* @__PURE__ */ import_react30.default.createElement(
5575
+ ), !hideClearButton && /* @__PURE__ */ import_react31.default.createElement(
5504
5576
  DialogActions_default,
5505
5577
  {
5506
5578
  sx: {
5507
5579
  p: 1
5508
5580
  }
5509
5581
  },
5510
- /* @__PURE__ */ import_react30.default.createElement(
5582
+ /* @__PURE__ */ import_react31.default.createElement(
5511
5583
  Button_default,
5512
5584
  {
5513
5585
  size,
@@ -5521,9 +5593,9 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5521
5593
  },
5522
5594
  "Clear"
5523
5595
  )
5524
- )), presets && presets.length > 0 && /* @__PURE__ */ import_react30.default.createElement(PresetPanel2, null, presets.map((preset) => {
5596
+ )), presets && presets.length > 0 && /* @__PURE__ */ import_react31.default.createElement(PresetPanel2, null, presets.map((preset) => {
5525
5597
  const disabled2 = isPresetDisabled(preset.value);
5526
- return /* @__PURE__ */ import_react30.default.createElement(
5598
+ return /* @__PURE__ */ import_react31.default.createElement(
5527
5599
  PresetItem2,
5528
5600
  {
5529
5601
  key: preset.label,
@@ -5542,7 +5614,7 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5542
5614
  DateRangePicker.displayName = "DateRangePicker";
5543
5615
 
5544
5616
  // src/components/Drawer/Drawer.tsx
5545
- var import_react31 = __toESM(require("react"));
5617
+ var import_react32 = __toESM(require("react"));
5546
5618
  var import_joy38 = require("@mui/joy");
5547
5619
  var import_framer_motion22 = require("framer-motion");
5548
5620
  var MotionDrawer = (0, import_framer_motion22.motion)(import_joy38.Drawer);
@@ -5560,7 +5632,7 @@ var StyledDrawer = (0, import_joy38.styled)(MotionDrawer)(({ theme, size = "md"
5560
5632
  }));
5561
5633
  var Drawer = (props) => {
5562
5634
  const { children, ...innerProps } = props;
5563
- return /* @__PURE__ */ import_react31.default.createElement(StyledDrawer, { ...innerProps }, children);
5635
+ return /* @__PURE__ */ import_react32.default.createElement(StyledDrawer, { ...innerProps }, children);
5564
5636
  };
5565
5637
  Drawer.displayName = "Drawer";
5566
5638
 
@@ -5591,10 +5663,10 @@ DialogTitle.displayName = "DialogTitle";
5591
5663
  var DialogTitle_default = DialogTitle;
5592
5664
 
5593
5665
  // src/components/DialogFrame/DialogFrame.tsx
5594
- var import_react33 = __toESM(require("react"));
5666
+ var import_react34 = __toESM(require("react"));
5595
5667
 
5596
5668
  // src/components/Modal/Modal.tsx
5597
- var import_react32 = __toESM(require("react"));
5669
+ var import_react33 = __toESM(require("react"));
5598
5670
  var import_joy41 = require("@mui/joy");
5599
5671
  var import_framer_motion25 = require("framer-motion");
5600
5672
  var MotionModal = (0, import_framer_motion25.motion)(import_joy41.Modal);
@@ -5609,10 +5681,10 @@ var ModalClose = import_joy41.ModalClose;
5609
5681
  var MotionModalOverflow = (0, import_framer_motion25.motion)(import_joy41.ModalOverflow);
5610
5682
  var ModalOverflow = MotionModalOverflow;
5611
5683
  ModalOverflow.displayName = "ModalOverflow";
5612
- function ModalFrame(props) {
5684
+ var ModalFrame = import_react33.default.forwardRef((props, ref) => {
5613
5685
  const { title, children, titleStartDecorator, onClose, ...innerProps } = props;
5614
- return /* @__PURE__ */ import_react32.default.createElement(StyledModalDialog, { ...innerProps }, /* @__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));
5615
- }
5686
+ return /* @__PURE__ */ import_react33.default.createElement(StyledModalDialog, { ...innerProps, ref }, /* @__PURE__ */ import_react33.default.createElement(ModalClose, { onClick: onClose }), /* @__PURE__ */ import_react33.default.createElement(DialogTitle_default, null, titleStartDecorator, title), /* @__PURE__ */ import_react33.default.createElement(DialogContent_default, null, children));
5687
+ });
5616
5688
  ModalFrame.displayName = "ModalFrame";
5617
5689
 
5618
5690
  // src/components/DialogFrame/DialogFrame.tsx
@@ -5623,20 +5695,20 @@ var StyledDialogFrame = (0, import_joy42.styled)(ModalDialog, {
5623
5695
  })({
5624
5696
  padding: 0
5625
5697
  });
5626
- var DialogFrame = import_react33.default.forwardRef((props, ref) => {
5698
+ var DialogFrame = import_react34.default.forwardRef((props, ref) => {
5627
5699
  const { title, children, actions, fullscreen, onSubmit, ...innerProps } = props;
5628
5700
  const formProps = onSubmit ? { component: "form", onSubmit } : void 0;
5629
- 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));
5701
+ return /* @__PURE__ */ import_react34.default.createElement(StyledDialogFrame, { layout: fullscreen ? "fullscreen" : "center", ref, ...formProps, ...innerProps }, /* @__PURE__ */ import_react34.default.createElement(DialogTitle_default, null, title), /* @__PURE__ */ import_react34.default.createElement(DialogContent_default, null, children), /* @__PURE__ */ import_react34.default.createElement(DialogActions_default, null, actions));
5630
5702
  });
5631
5703
  DialogFrame.displayName = "DialogFrame";
5632
5704
 
5633
5705
  // src/components/Divider/Divider.tsx
5634
- var import_react34 = __toESM(require("react"));
5706
+ var import_react35 = __toESM(require("react"));
5635
5707
  var import_joy43 = require("@mui/joy");
5636
5708
  var import_framer_motion26 = require("framer-motion");
5637
5709
  var MotionDivider = (0, import_framer_motion26.motion)(import_joy43.Divider);
5638
5710
  var Divider = (props) => {
5639
- return /* @__PURE__ */ import_react34.default.createElement(MotionDivider, { ...props });
5711
+ return /* @__PURE__ */ import_react35.default.createElement(MotionDivider, { ...props });
5640
5712
  };
5641
5713
  Divider.displayName = "Divider";
5642
5714
 
@@ -5657,16 +5729,16 @@ var InsetDrawer = (0, import_joy44.styled)(import_joy44.Drawer)(({ theme }) => (
5657
5729
  }));
5658
5730
 
5659
5731
  // src/components/FilterableCheckboxGroup/FilterableCheckboxGroup.tsx
5660
- var import_react35 = __toESM(require("react"));
5732
+ var import_react36 = __toESM(require("react"));
5661
5733
  var import_Search = __toESM(require("@mui/icons-material/Search"));
5662
5734
  var import_joy45 = require("@mui/joy");
5663
5735
  var import_react_virtual3 = require("@tanstack/react-virtual");
5664
5736
  var EMPTY_VALUE = [];
5665
5737
  function LabelWithTooltip(props) {
5666
5738
  const { label, size } = props;
5667
- const labelContentRef = (0, import_react35.useRef)(null);
5668
- const [isOverflowing, setIsOverflowing] = (0, import_react35.useState)(false);
5669
- const labelContent = /* @__PURE__ */ import_react35.default.createElement(
5739
+ const labelContentRef = (0, import_react36.useRef)(null);
5740
+ const [isOverflowing, setIsOverflowing] = (0, import_react36.useState)(false);
5741
+ const labelContent = /* @__PURE__ */ import_react36.default.createElement(
5670
5742
  "span",
5671
5743
  {
5672
5744
  ref: labelContentRef,
@@ -5682,14 +5754,14 @@ function LabelWithTooltip(props) {
5682
5754
  },
5683
5755
  label
5684
5756
  );
5685
- (0, import_react35.useEffect)(() => {
5757
+ (0, import_react36.useEffect)(() => {
5686
5758
  const element = labelContentRef.current;
5687
5759
  if (element) {
5688
5760
  setIsOverflowing(element.scrollWidth > element.clientWidth);
5689
5761
  }
5690
5762
  }, [label]);
5691
5763
  if (isOverflowing) {
5692
- return /* @__PURE__ */ import_react35.default.createElement(Tooltip_default, { variant: "solid", size, title: label, placement: "bottom-start" }, labelContent);
5764
+ return /* @__PURE__ */ import_react36.default.createElement(Tooltip_default, { variant: "solid", size, title: label, placement: "bottom-start" }, labelContent);
5693
5765
  }
5694
5766
  return labelContent;
5695
5767
  }
@@ -5707,22 +5779,22 @@ function FilterableCheckboxGroup(inProps) {
5707
5779
  maxHeight = 300,
5708
5780
  disabled
5709
5781
  } = props;
5710
- const [searchTerm, setSearchTerm] = (0, import_react35.useState)("");
5711
- const [sortedOptions, setSortedOptions] = (0, import_react35.useState)(options);
5782
+ const [searchTerm, setSearchTerm] = (0, import_react36.useState)("");
5783
+ const [sortedOptions, setSortedOptions] = (0, import_react36.useState)(options);
5712
5784
  const [rawValue, setInternalValue] = useControlledState(
5713
5785
  value,
5714
5786
  value ?? EMPTY_VALUE,
5715
- (0, import_react35.useCallback)((newValue) => onChange?.(newValue ?? []), [onChange])
5787
+ (0, import_react36.useCallback)((newValue) => onChange?.(newValue ?? []), [onChange])
5716
5788
  );
5717
5789
  const internalValue = rawValue ?? EMPTY_VALUE;
5718
- const parentRef = (0, import_react35.useRef)(null);
5719
- const isInitialSortRef = (0, import_react35.useRef)(false);
5720
- const prevOptionsRef = (0, import_react35.useRef)([...options]);
5721
- const filteredOptions = (0, import_react35.useMemo)(() => {
5790
+ const parentRef = (0, import_react36.useRef)(null);
5791
+ const isInitialSortRef = (0, import_react36.useRef)(false);
5792
+ const prevOptionsRef = (0, import_react36.useRef)([...options]);
5793
+ const filteredOptions = (0, import_react36.useMemo)(() => {
5722
5794
  if (!searchTerm) return sortedOptions;
5723
5795
  return sortedOptions.filter((option) => option.label.toLowerCase().includes(searchTerm.toLowerCase()));
5724
5796
  }, [sortedOptions, searchTerm]);
5725
- const itemSize = (0, import_react35.useMemo)(() => {
5797
+ const itemSize = (0, import_react36.useMemo)(() => {
5726
5798
  switch (size) {
5727
5799
  case "sm":
5728
5800
  return 28;
@@ -5740,7 +5812,7 @@ function FilterableCheckboxGroup(inProps) {
5740
5812
  overscan: 5
5741
5813
  });
5742
5814
  const items = virtualizer.getVirtualItems();
5743
- (0, import_react35.useEffect)(() => {
5815
+ (0, import_react36.useEffect)(() => {
5744
5816
  const optionsChanged = prevOptionsRef.current.length !== options.length || prevOptionsRef.current.some(
5745
5817
  (prevOption, index) => prevOption.value !== options[index]?.value || prevOption.label !== options[index]?.label || prevOption.disabled !== options[index]?.disabled
5746
5818
  );
@@ -5766,13 +5838,13 @@ function FilterableCheckboxGroup(inProps) {
5766
5838
  }
5767
5839
  }
5768
5840
  }, [options, value]);
5769
- (0, import_react35.useEffect)(() => {
5841
+ (0, import_react36.useEffect)(() => {
5770
5842
  virtualizer.measure();
5771
5843
  }, [virtualizer, filteredOptions, size]);
5772
- const handleSearchChange = (0, import_react35.useCallback)((event) => {
5844
+ const handleSearchChange = (0, import_react36.useCallback)((event) => {
5773
5845
  setSearchTerm(event.target.value);
5774
5846
  }, []);
5775
- const handleCheckboxChange = (0, import_react35.useCallback)(
5847
+ const handleCheckboxChange = (0, import_react36.useCallback)(
5776
5848
  (optionValue) => (event) => {
5777
5849
  const checked = event.target.checked;
5778
5850
  const newValue = checked ? [...internalValue, optionValue] : internalValue.filter((v) => v !== optionValue);
@@ -5780,7 +5852,7 @@ function FilterableCheckboxGroup(inProps) {
5780
5852
  },
5781
5853
  [internalValue, setInternalValue]
5782
5854
  );
5783
- const handleSelectAll = (0, import_react35.useCallback)(
5855
+ const handleSelectAll = (0, import_react36.useCallback)(
5784
5856
  (event) => {
5785
5857
  const checked = event.target.checked;
5786
5858
  const enabledOptions = filteredOptions.filter((option) => !option.disabled);
@@ -5796,10 +5868,10 @@ function FilterableCheckboxGroup(inProps) {
5796
5868
  },
5797
5869
  [filteredOptions, internalValue, setInternalValue]
5798
5870
  );
5799
- const enabledFilteredOptions = (0, import_react35.useMemo)(() => filteredOptions.filter((option) => !option.disabled), [filteredOptions]);
5871
+ const enabledFilteredOptions = (0, import_react36.useMemo)(() => filteredOptions.filter((option) => !option.disabled), [filteredOptions]);
5800
5872
  const isAllSelected = enabledFilteredOptions.length > 0 && enabledFilteredOptions.every((option) => internalValue.includes(option.value));
5801
5873
  const isIndeterminate = !isAllSelected && enabledFilteredOptions.some((option) => internalValue.includes(option.value));
5802
- return /* @__PURE__ */ import_react35.default.createElement("div", { style: { width: "100%" } }, /* @__PURE__ */ import_react35.default.createElement(
5874
+ return /* @__PURE__ */ import_react36.default.createElement("div", { style: { width: "100%" } }, /* @__PURE__ */ import_react36.default.createElement(
5803
5875
  Input_default,
5804
5876
  {
5805
5877
  label,
@@ -5812,9 +5884,9 @@ function FilterableCheckboxGroup(inProps) {
5812
5884
  onChange: handleSearchChange,
5813
5885
  size,
5814
5886
  disabled,
5815
- endDecorator: /* @__PURE__ */ import_react35.default.createElement(import_Search.default, null)
5887
+ endDecorator: /* @__PURE__ */ import_react36.default.createElement(import_Search.default, null)
5816
5888
  }
5817
- ), 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(
5889
+ ), filteredOptions.length === 0 ? /* @__PURE__ */ import_react36.default.createElement(Typography_default, { level: `body-${size}`, textColor: "neutral.softDisabledColor", padding: "20px 12px", textAlign: "center" }, "No options found.") : /* @__PURE__ */ import_react36.default.createElement(
5818
5890
  "div",
5819
5891
  {
5820
5892
  ref: parentRef,
@@ -5825,7 +5897,7 @@ function FilterableCheckboxGroup(inProps) {
5825
5897
  marginTop: "8px"
5826
5898
  }
5827
5899
  },
5828
- !searchTerm && /* @__PURE__ */ import_react35.default.createElement(
5900
+ !searchTerm && /* @__PURE__ */ import_react36.default.createElement(
5829
5901
  Checkbox_default,
5830
5902
  {
5831
5903
  label: "Select all",
@@ -5842,7 +5914,7 @@ function FilterableCheckboxGroup(inProps) {
5842
5914
  sx: { width: "100%", height: itemSize }
5843
5915
  }
5844
5916
  ),
5845
- /* @__PURE__ */ import_react35.default.createElement(
5917
+ /* @__PURE__ */ import_react36.default.createElement(
5846
5918
  Stack_default,
5847
5919
  {
5848
5920
  sx: {
@@ -5852,11 +5924,11 @@ function FilterableCheckboxGroup(inProps) {
5852
5924
  },
5853
5925
  items.map((virtualRow) => {
5854
5926
  const option = filteredOptions[virtualRow.index];
5855
- return /* @__PURE__ */ import_react35.default.createElement(
5927
+ return /* @__PURE__ */ import_react36.default.createElement(
5856
5928
  Checkbox_default,
5857
5929
  {
5858
5930
  key: virtualRow.key,
5859
- label: /* @__PURE__ */ import_react35.default.createElement(LabelWithTooltip, { label: option.label, size }),
5931
+ label: /* @__PURE__ */ import_react36.default.createElement(LabelWithTooltip, { label: option.label, size }),
5860
5932
  checked: internalValue.includes(option.value),
5861
5933
  onChange: handleCheckboxChange(option.value),
5862
5934
  size,
@@ -5887,9 +5959,12 @@ FilterableCheckboxGroup.displayName = "FilterableCheckboxGroup";
5887
5959
  var import_joy46 = require("@mui/joy");
5888
5960
 
5889
5961
  // src/components/IconMenuButton/IconMenuButton.tsx
5890
- var import_react36 = __toESM(require("react"));
5962
+ var import_react37 = __toESM(require("react"));
5891
5963
  var import_joy47 = require("@mui/joy");
5892
- function IconMenuButton(props) {
5964
+ var MenuButtonRootSlot = import_react37.default.forwardRef(function MenuButtonRootSlot2({ as, ownerState: _ownerState, ...rest }, ref) {
5965
+ return /* @__PURE__ */ import_react37.default.createElement(import_joy47.IconButton, { ...rest, component: as ?? "button", ref });
5966
+ });
5967
+ function IconMenuButtonInner(props, ref) {
5893
5968
  const {
5894
5969
  size,
5895
5970
  icon,
@@ -5900,8 +5975,10 @@ function IconMenuButton(props) {
5900
5975
  variant = "plain",
5901
5976
  placement = "bottom"
5902
5977
  } = props;
5978
+ const { ref: buttonComponentRef, ...buttonComponentProps } = props.buttonComponentProps ?? {};
5979
+ const mergedButtonRef = useMergedRef(buttonComponentRef, ref);
5903
5980
  if (!items.length) {
5904
- return /* @__PURE__ */ import_react36.default.createElement(
5981
+ return /* @__PURE__ */ import_react37.default.createElement(
5905
5982
  import_joy47.IconButton,
5906
5983
  {
5907
5984
  component: props.buttonComponent ?? "button",
@@ -5910,41 +5987,46 @@ function IconMenuButton(props) {
5910
5987
  color,
5911
5988
  disabled,
5912
5989
  loading,
5913
- ...props.buttonComponentProps ?? {}
5990
+ ...buttonComponentProps,
5991
+ ref: mergedButtonRef
5914
5992
  },
5915
5993
  icon
5916
5994
  );
5917
5995
  }
5918
- return /* @__PURE__ */ import_react36.default.createElement(Dropdown_default, null, /* @__PURE__ */ import_react36.default.createElement(
5996
+ return /* @__PURE__ */ import_react37.default.createElement(Dropdown_default, null, /* @__PURE__ */ import_react37.default.createElement(
5919
5997
  import_joy47.MenuButton,
5920
5998
  {
5921
- slots: { root: import_joy47.IconButton },
5999
+ slots: { root: MenuButtonRootSlot },
5922
6000
  slotProps: {
5923
6001
  root: {
5924
- component: props.buttonComponent ?? "button",
6002
+ // 기본값 'button'은 MenuButtonRootSlot 한 곳에만 둔다.
6003
+ component: props.buttonComponent,
5925
6004
  size,
5926
6005
  variant,
5927
6006
  color,
5928
6007
  disabled,
5929
6008
  loading,
5930
- ...props.buttonComponentProps ?? {}
6009
+ ...buttonComponentProps,
6010
+ // Joy의 useSlot이 내부 ref와 이 ref를 합쳐준다. 위 no-items 분기와 같은 경로로 ref를 넘긴다.
6011
+ ref: mergedButtonRef
5931
6012
  }
5932
6013
  }
5933
6014
  },
5934
6015
  icon
5935
- ), /* @__PURE__ */ import_react36.default.createElement(Menu, { placement, size }, items.map((i) => /* @__PURE__ */ import_react36.default.createElement(MenuItem, { key: i.text, component: i.component, ...i.componentProps ?? {} }, i.text))));
6016
+ ), /* @__PURE__ */ import_react37.default.createElement(Menu, { placement, size }, items.map((i) => /* @__PURE__ */ import_react37.default.createElement(MenuItem, { key: i.text, component: i.component, ...i.componentProps ?? {} }, i.text))));
5936
6017
  }
6018
+ var IconMenuButton = import_react37.default.forwardRef(IconMenuButtonInner);
5937
6019
  IconMenuButton.displayName = "IconMenuButton";
5938
6020
 
5939
6021
  // src/components/Markdown/Markdown.tsx
5940
- var import_react37 = __toESM(require("react"));
6022
+ var import_react38 = __toESM(require("react"));
5941
6023
  var import_joy48 = require("@mui/joy");
5942
6024
  var import_joy49 = require("@mui/joy");
5943
6025
  var import_remark_gfm = __toESM(require("remark-gfm"));
5944
- var LazyReactMarkdown = (0, import_react37.lazy)(() => import("react-markdown"));
6026
+ var LazyReactMarkdown = (0, import_react38.lazy)(() => import("react-markdown"));
5945
6027
  var Markdown = (props) => {
5946
- const [rehypeAccent2, setRehypeAccent] = (0, import_react37.useState)(null);
5947
- (0, import_react37.useEffect)(() => {
6028
+ const [rehypeAccent2, setRehypeAccent] = (0, import_react38.useState)(null);
6029
+ (0, import_react38.useEffect)(() => {
5948
6030
  const loadRehypeAccent = async () => {
5949
6031
  const module2 = await Promise.resolve().then(() => (init_rehype_accent(), rehype_accent_exports));
5950
6032
  setRehypeAccent(() => module2.rehypeAccent);
@@ -5966,8 +6048,8 @@ var Markdown = (props) => {
5966
6048
  if (!rehypeAccent2) {
5967
6049
  return null;
5968
6050
  }
5969
- return /* @__PURE__ */ import_react37.default.createElement(Typography, { component: "div", color, textColor, level: defaultLevel, ...innerProps }, /* @__PURE__ */ import_react37.default.createElement(
5970
- import_react37.Suspense,
6051
+ return /* @__PURE__ */ import_react38.default.createElement(Typography, { component: "div", color, textColor, level: defaultLevel, ...innerProps }, /* @__PURE__ */ import_react38.default.createElement(
6052
+ import_react38.Suspense,
5971
6053
  {
5972
6054
  fallback: (
5973
6055
  // While in the fallback state, prevent browser auto-translation (e.g. Chrome/Google Translate)
@@ -5975,10 +6057,10 @@ var Markdown = (props) => {
5975
6057
  // swaps the fallback for the real content via insertBefore; if the browser has mutated the DOM
5976
6058
  // in the meantime, the reference node's parent changes and React throws a DOMException
5977
6059
  // ("Failed to execute 'insertBefore' on 'Node'"), crashing the subtree. (cf. facebook/react#11538)
5978
- fallback || /* @__PURE__ */ import_react37.default.createElement(Typography, { translate: "no", className: "notranslate" }, /* @__PURE__ */ import_react37.default.createElement(import_joy48.Skeleton, null, content || ""))
6060
+ fallback || /* @__PURE__ */ import_react38.default.createElement(Typography, { translate: "no", className: "notranslate" }, /* @__PURE__ */ import_react38.default.createElement(import_joy48.Skeleton, null, content || ""))
5979
6061
  )
5980
6062
  },
5981
- /* @__PURE__ */ import_react37.default.createElement(
6063
+ /* @__PURE__ */ import_react38.default.createElement(
5982
6064
  LazyReactMarkdown,
5983
6065
  {
5984
6066
  ...markdownOptions,
@@ -5986,17 +6068,17 @@ var Markdown = (props) => {
5986
6068
  rehypePlugins: [[rehypeAccent2, { accentColor }]],
5987
6069
  remarkPlugins: [import_remark_gfm.default],
5988
6070
  components: {
5989
- a: ({ children, href }) => /* @__PURE__ */ import_react37.default.createElement(import_joy49.Link, { href, target: defaultLinkAction }, children),
5990
- hr: () => /* @__PURE__ */ import_react37.default.createElement(Divider, { sx: { display: "block" } }),
5991
- b: ({ children }) => /* @__PURE__ */ import_react37.default.createElement(Typography, { component: "strong", fontWeight: boldFontWeight || "lg" }, children),
5992
- strong: ({ children }) => /* @__PURE__ */ import_react37.default.createElement(Typography, { component: "strong", fontWeight: boldFontWeight || "lg" }, children),
6071
+ a: ({ children, href }) => /* @__PURE__ */ import_react38.default.createElement(import_joy49.Link, { href, target: defaultLinkAction }, children),
6072
+ hr: () => /* @__PURE__ */ import_react38.default.createElement(Divider, { sx: { display: "block" } }),
6073
+ b: ({ children }) => /* @__PURE__ */ import_react38.default.createElement(Typography, { component: "strong", fontWeight: boldFontWeight || "lg" }, children),
6074
+ strong: ({ children }) => /* @__PURE__ */ import_react38.default.createElement(Typography, { component: "strong", fontWeight: boldFontWeight || "lg" }, children),
5993
6075
  // Table components
5994
- table: ({ children }) => /* @__PURE__ */ import_react37.default.createElement(Sheet, { variant: "outlined", sx: { display: "block", borderRadius: "sm", overflow: "auto" } }, /* @__PURE__ */ import_react37.default.createElement(Table, { size: "sm" }, children)),
6076
+ table: ({ children }) => /* @__PURE__ */ import_react38.default.createElement(Sheet, { variant: "outlined", sx: { display: "block", borderRadius: "sm", overflow: "auto" } }, /* @__PURE__ */ import_react38.default.createElement(Table, { size: "sm" }, children)),
5995
6077
  // Code components
5996
6078
  code: ({ children, className }) => {
5997
6079
  const isBlock = className?.startsWith("language-");
5998
6080
  if (isBlock) {
5999
- return /* @__PURE__ */ import_react37.default.createElement(
6081
+ return /* @__PURE__ */ import_react38.default.createElement(
6000
6082
  Typography,
6001
6083
  {
6002
6084
  component: "code",
@@ -6010,7 +6092,7 @@ var Markdown = (props) => {
6010
6092
  children
6011
6093
  );
6012
6094
  }
6013
- return /* @__PURE__ */ import_react37.default.createElement(
6095
+ return /* @__PURE__ */ import_react38.default.createElement(
6014
6096
  Typography,
6015
6097
  {
6016
6098
  component: "code",
@@ -6025,7 +6107,7 @@ var Markdown = (props) => {
6025
6107
  children
6026
6108
  );
6027
6109
  },
6028
- pre: ({ children }) => /* @__PURE__ */ import_react37.default.createElement(
6110
+ pre: ({ children }) => /* @__PURE__ */ import_react38.default.createElement(
6029
6111
  Sheet,
6030
6112
  {
6031
6113
  variant: "soft",
@@ -6043,12 +6125,12 @@ var Markdown = (props) => {
6043
6125
  // Task list checkbox
6044
6126
  input: ({ checked, type }) => {
6045
6127
  if (type === "checkbox") {
6046
- return /* @__PURE__ */ import_react37.default.createElement(Checkbox, { checked, disabled: true, size: "sm", sx: { mr: 1 } });
6128
+ return /* @__PURE__ */ import_react38.default.createElement(Checkbox, { checked, disabled: true, size: "sm", sx: { mr: 1 } });
6047
6129
  }
6048
- return /* @__PURE__ */ import_react37.default.createElement("input", { checked, type });
6130
+ return /* @__PURE__ */ import_react38.default.createElement("input", { checked, type });
6049
6131
  },
6050
6132
  // Blockquote
6051
- blockquote: ({ children }) => /* @__PURE__ */ import_react37.default.createElement(
6133
+ blockquote: ({ children }) => /* @__PURE__ */ import_react38.default.createElement(
6052
6134
  Sheet,
6053
6135
  {
6054
6136
  variant: "soft",
@@ -6057,12 +6139,12 @@ var Markdown = (props) => {
6057
6139
  children
6058
6140
  ),
6059
6141
  // Image
6060
- img: ({ src, alt }) => /* @__PURE__ */ import_react37.default.createElement("img", { src, alt, style: { maxWidth: "100%", borderRadius: "4px" } }),
6142
+ img: ({ src, alt }) => /* @__PURE__ */ import_react38.default.createElement("img", { src, alt, style: { maxWidth: "100%", borderRadius: "4px" } }),
6061
6143
  // Text style components
6062
- em: ({ children }) => /* @__PURE__ */ import_react37.default.createElement(Typography, { component: "em", sx: { fontStyle: "italic" } }, children),
6063
- del: ({ children }) => /* @__PURE__ */ import_react37.default.createElement(Typography, { component: "del", sx: { textDecoration: "line-through" } }, children),
6144
+ em: ({ children }) => /* @__PURE__ */ import_react38.default.createElement(Typography, { component: "em", sx: { fontStyle: "italic" } }, children),
6145
+ del: ({ children }) => /* @__PURE__ */ import_react38.default.createElement(Typography, { component: "del", sx: { textDecoration: "line-through" } }, children),
6064
6146
  // Span for accent color (from rehype-accent plugin)
6065
- span: ({ children, node }) => /* @__PURE__ */ import_react37.default.createElement(Typography, { component: "span", textColor: node?.properties?.textColor }, children),
6147
+ span: ({ children, node }) => /* @__PURE__ */ import_react38.default.createElement(Typography, { component: "span", textColor: node?.properties?.textColor }, children),
6066
6148
  ...markdownOptions?.components
6067
6149
  }
6068
6150
  }
@@ -6072,7 +6154,7 @@ var Markdown = (props) => {
6072
6154
  Markdown.displayName = "Markdown";
6073
6155
 
6074
6156
  // src/components/MenuButton/MenuButton.tsx
6075
- var import_react38 = __toESM(require("react"));
6157
+ var import_react39 = __toESM(require("react"));
6076
6158
  var import_joy50 = require("@mui/joy");
6077
6159
  var import_ExpandMore = __toESM(require("@mui/icons-material/ExpandMore"));
6078
6160
  function MenuButton2(props) {
@@ -6090,7 +6172,7 @@ function MenuButton2(props) {
6090
6172
  placement = "bottom"
6091
6173
  } = props;
6092
6174
  if (!items.length) {
6093
- return /* @__PURE__ */ import_react38.default.createElement(
6175
+ return /* @__PURE__ */ import_react39.default.createElement(
6094
6176
  import_joy50.Button,
6095
6177
  {
6096
6178
  component: props.buttonComponent ?? "button",
@@ -6101,12 +6183,12 @@ function MenuButton2(props) {
6101
6183
  loading,
6102
6184
  startDecorator,
6103
6185
  ...props.buttonComponentProps ?? {},
6104
- endDecorator: showIcon ? /* @__PURE__ */ import_react38.default.createElement(import_react38.default.Fragment, null, endDecorator, /* @__PURE__ */ import_react38.default.createElement(import_ExpandMore.default, null)) : /* @__PURE__ */ import_react38.default.createElement(import_react38.default.Fragment, null, endDecorator)
6186
+ endDecorator: showIcon ? /* @__PURE__ */ import_react39.default.createElement(import_react39.default.Fragment, null, endDecorator, /* @__PURE__ */ import_react39.default.createElement(import_ExpandMore.default, null)) : /* @__PURE__ */ import_react39.default.createElement(import_react39.default.Fragment, null, endDecorator)
6105
6187
  },
6106
6188
  buttonText
6107
6189
  );
6108
6190
  }
6109
- return /* @__PURE__ */ import_react38.default.createElement(Dropdown_default, null, /* @__PURE__ */ import_react38.default.createElement(
6191
+ return /* @__PURE__ */ import_react39.default.createElement(Dropdown_default, null, /* @__PURE__ */ import_react39.default.createElement(
6110
6192
  import_joy50.MenuButton,
6111
6193
  {
6112
6194
  component: props.buttonComponent ?? "button",
@@ -6117,15 +6199,15 @@ function MenuButton2(props) {
6117
6199
  loading,
6118
6200
  startDecorator,
6119
6201
  ...props.buttonComponentProps ?? {},
6120
- endDecorator: showIcon ? /* @__PURE__ */ import_react38.default.createElement(import_react38.default.Fragment, null, endDecorator, /* @__PURE__ */ import_react38.default.createElement(import_ExpandMore.default, null)) : /* @__PURE__ */ import_react38.default.createElement(import_react38.default.Fragment, null, endDecorator)
6202
+ endDecorator: showIcon ? /* @__PURE__ */ import_react39.default.createElement(import_react39.default.Fragment, null, endDecorator, /* @__PURE__ */ import_react39.default.createElement(import_ExpandMore.default, null)) : /* @__PURE__ */ import_react39.default.createElement(import_react39.default.Fragment, null, endDecorator)
6121
6203
  },
6122
6204
  buttonText
6123
- ), /* @__PURE__ */ import_react38.default.createElement(Menu, { placement, size }, items.map((i) => /* @__PURE__ */ import_react38.default.createElement(MenuItem, { key: i.text, component: i.component, ...i.componentProps ?? {} }, i.text))));
6205
+ ), /* @__PURE__ */ import_react39.default.createElement(Menu, { placement, size }, items.map((i) => /* @__PURE__ */ import_react39.default.createElement(MenuItem, { key: i.text, component: i.component, ...i.componentProps ?? {} }, i.text))));
6124
6206
  }
6125
6207
  MenuButton2.displayName = "MenuButton";
6126
6208
 
6127
6209
  // src/components/MonthPicker/MonthPicker.tsx
6128
- var import_react39 = __toESM(require("react"));
6210
+ var import_react40 = __toESM(require("react"));
6129
6211
  var import_CalendarToday3 = __toESM(require("@mui/icons-material/CalendarToday"));
6130
6212
  var import_joy51 = require("@mui/joy");
6131
6213
  var import_base5 = require("@mui/base");
@@ -6181,7 +6263,7 @@ function parseDate3(dateString, format) {
6181
6263
  const result = new Date(year, month, day);
6182
6264
  return result;
6183
6265
  }
6184
- var MonthPicker = (0, import_react39.forwardRef)((inProps, ref) => {
6266
+ var MonthPicker = (0, import_react40.forwardRef)((inProps, ref) => {
6185
6267
  const props = (0, import_joy51.useThemeProps)({ props: inProps, name: "MonthPicker" });
6186
6268
  const {
6187
6269
  onChange,
@@ -6208,18 +6290,18 @@ var MonthPicker = (0, import_react39.forwardRef)((inProps, ref) => {
6208
6290
  locale,
6209
6291
  ...innerProps
6210
6292
  } = props;
6211
- const innerRef = (0, import_react39.useRef)(null);
6212
- const buttonRef = (0, import_react39.useRef)(null);
6293
+ const innerRef = (0, import_react40.useRef)(null);
6294
+ const buttonRef = (0, import_react40.useRef)(null);
6213
6295
  const [rawValue, setValue, isControlled] = useControlledState(
6214
6296
  props.value,
6215
6297
  props.defaultValue ?? null,
6216
- (0, import_react39.useCallback)(
6298
+ (0, import_react40.useCallback)(
6217
6299
  (value2) => onChange?.({ target: { name: props.name, value: value2 ?? "" } }),
6218
6300
  [props.name, onChange]
6219
6301
  )
6220
6302
  );
6221
6303
  const value = rawValue ?? "";
6222
- const getFormattedDisplayValue = (0, import_react39.useCallback)(
6304
+ const getFormattedDisplayValue = (0, import_react40.useCallback)(
6223
6305
  (inputValue) => {
6224
6306
  if (!inputValue) return "";
6225
6307
  try {
@@ -6230,19 +6312,19 @@ var MonthPicker = (0, import_react39.forwardRef)((inProps, ref) => {
6230
6312
  },
6231
6313
  [format, displayFormat, locale]
6232
6314
  );
6233
- const [displayValue, setDisplayValue] = (0, import_react39.useState)(() => getFormattedDisplayValue(value));
6234
- const [anchorEl, setAnchorEl] = (0, import_react39.useState)(null);
6315
+ const [displayValue, setDisplayValue] = (0, import_react40.useState)(() => getFormattedDisplayValue(value));
6316
+ const [anchorEl, setAnchorEl] = (0, import_react40.useState)(null);
6235
6317
  const open = Boolean(anchorEl);
6236
- (0, import_react39.useEffect)(() => {
6318
+ (0, import_react40.useEffect)(() => {
6237
6319
  if (!anchorEl) {
6238
6320
  innerRef.current?.blur();
6239
6321
  }
6240
6322
  }, [anchorEl, innerRef]);
6241
- (0, import_react39.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
6242
- (0, import_react39.useEffect)(() => {
6323
+ (0, import_react40.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
6324
+ (0, import_react40.useEffect)(() => {
6243
6325
  setDisplayValue(getFormattedDisplayValue(value));
6244
6326
  }, [value, getFormattedDisplayValue]);
6245
- const handleChange = (0, import_react39.useCallback)(
6327
+ const handleChange = (0, import_react40.useCallback)(
6246
6328
  (event) => {
6247
6329
  const newValue = event.target.value;
6248
6330
  setValue(newValue);
@@ -6252,21 +6334,21 @@ var MonthPicker = (0, import_react39.forwardRef)((inProps, ref) => {
6252
6334
  },
6253
6335
  [setValue, getFormattedDisplayValue, isControlled]
6254
6336
  );
6255
- const handleCalendarToggle = (0, import_react39.useCallback)(
6337
+ const handleCalendarToggle = (0, import_react40.useCallback)(
6256
6338
  (event) => {
6257
6339
  setAnchorEl(anchorEl ? null : event.currentTarget);
6258
6340
  innerRef.current?.focus();
6259
6341
  },
6260
6342
  [anchorEl, setAnchorEl, innerRef]
6261
6343
  );
6262
- const handleInputMouseDown = (0, import_react39.useCallback)(
6344
+ const handleInputMouseDown = (0, import_react40.useCallback)(
6263
6345
  (event) => {
6264
6346
  event.preventDefault();
6265
6347
  buttonRef.current?.focus();
6266
6348
  },
6267
6349
  [buttonRef]
6268
6350
  );
6269
- return /* @__PURE__ */ import_react39.default.createElement(MonthPickerRoot, 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(
6351
+ return /* @__PURE__ */ import_react40.default.createElement(MonthPickerRoot, 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(
6270
6352
  Input_default,
6271
6353
  {
6272
6354
  ...innerProps,
@@ -6296,7 +6378,7 @@ var MonthPicker = (0, import_react39.forwardRef)((inProps, ref) => {
6296
6378
  // NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
6297
6379
  fontFamily: "monospace"
6298
6380
  },
6299
- endDecorator: /* @__PURE__ */ import_react39.default.createElement(
6381
+ endDecorator: /* @__PURE__ */ import_react40.default.createElement(
6300
6382
  IconButton_default,
6301
6383
  {
6302
6384
  ref: buttonRef,
@@ -6308,12 +6390,12 @@ var MonthPicker = (0, import_react39.forwardRef)((inProps, ref) => {
6308
6390
  "aria-expanded": open,
6309
6391
  disabled
6310
6392
  },
6311
- /* @__PURE__ */ import_react39.default.createElement(import_CalendarToday3.default, null)
6393
+ /* @__PURE__ */ import_react40.default.createElement(import_CalendarToday3.default, null)
6312
6394
  ),
6313
6395
  label,
6314
6396
  helperText
6315
6397
  }
6316
- ), open && /* @__PURE__ */ import_react39.default.createElement(import_base5.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react39.default.createElement(
6398
+ ), open && /* @__PURE__ */ import_react40.default.createElement(import_base5.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react40.default.createElement(
6317
6399
  StyledPopper3,
6318
6400
  {
6319
6401
  id: "month-picker-popper",
@@ -6332,7 +6414,7 @@ var MonthPicker = (0, import_react39.forwardRef)((inProps, ref) => {
6332
6414
  "aria-label": "Calendar Tooltip",
6333
6415
  "aria-expanded": open
6334
6416
  },
6335
- /* @__PURE__ */ import_react39.default.createElement(CalendarSheet3, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react39.default.createElement(
6417
+ /* @__PURE__ */ import_react40.default.createElement(CalendarSheet3, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react40.default.createElement(
6336
6418
  Calendar_default,
6337
6419
  {
6338
6420
  view: "month",
@@ -6353,14 +6435,14 @@ var MonthPicker = (0, import_react39.forwardRef)((inProps, ref) => {
6353
6435
  disablePast,
6354
6436
  locale
6355
6437
  }
6356
- ), /* @__PURE__ */ import_react39.default.createElement(
6438
+ ), /* @__PURE__ */ import_react40.default.createElement(
6357
6439
  DialogActions_default,
6358
6440
  {
6359
6441
  sx: {
6360
6442
  p: 1
6361
6443
  }
6362
6444
  },
6363
- /* @__PURE__ */ import_react39.default.createElement(
6445
+ /* @__PURE__ */ import_react40.default.createElement(
6364
6446
  Button_default,
6365
6447
  {
6366
6448
  size,
@@ -6383,7 +6465,7 @@ var MonthPicker = (0, import_react39.forwardRef)((inProps, ref) => {
6383
6465
  });
6384
6466
 
6385
6467
  // src/components/MonthRangePicker/MonthRangePicker.tsx
6386
- var import_react40 = __toESM(require("react"));
6468
+ var import_react41 = __toESM(require("react"));
6387
6469
  var import_react_imask3 = require("react-imask");
6388
6470
  var import_CalendarToday4 = __toESM(require("@mui/icons-material/CalendarToday"));
6389
6471
  var import_joy52 = require("@mui/joy");
@@ -6444,9 +6526,9 @@ var parseDates2 = (str) => {
6444
6526
  var formatToPattern3 = (format) => {
6445
6527
  return `${format} - ${format}`.replace(/YYYY/g, "Y").replace(/MM/g, "m").replace(/[^YMm\s]/g, (match) => `${match}\``);
6446
6528
  };
6447
- var TextMaskAdapter7 = import_react40.default.forwardRef(function TextMaskAdapter8(props, ref) {
6529
+ var TextMaskAdapter7 = import_react41.default.forwardRef(function TextMaskAdapter8(props, ref) {
6448
6530
  const { onChange, format, ...other } = props;
6449
- return /* @__PURE__ */ import_react40.default.createElement(
6531
+ return /* @__PURE__ */ import_react41.default.createElement(
6450
6532
  import_react_imask3.IMaskInput,
6451
6533
  {
6452
6534
  ...other,
@@ -6474,7 +6556,7 @@ var TextMaskAdapter7 = import_react40.default.forwardRef(function TextMaskAdapte
6474
6556
  }
6475
6557
  );
6476
6558
  });
6477
- var MonthRangePicker = (0, import_react40.forwardRef)((inProps, ref) => {
6559
+ var MonthRangePicker = (0, import_react41.forwardRef)((inProps, ref) => {
6478
6560
  const props = (0, import_joy52.useThemeProps)({ props: inProps, name: "MonthRangePicker" });
6479
6561
  const {
6480
6562
  onChange,
@@ -6498,24 +6580,24 @@ var MonthRangePicker = (0, import_react40.forwardRef)((inProps, ref) => {
6498
6580
  } = props;
6499
6581
  const displayFormat = displayFormatProp ?? format;
6500
6582
  const isAlphabeticDisplay = hasAlphabeticMonth3(displayFormat);
6501
- const innerRef = (0, import_react40.useRef)(null);
6502
- const buttonRef = (0, import_react40.useRef)(null);
6583
+ const innerRef = (0, import_react41.useRef)(null);
6584
+ const buttonRef = (0, import_react41.useRef)(null);
6503
6585
  const [rawValue, setValue] = useControlledState(
6504
6586
  props.value,
6505
6587
  props.defaultValue ?? null,
6506
- (0, import_react40.useCallback)(
6588
+ (0, import_react41.useCallback)(
6507
6589
  (value2) => onChange?.({ target: { name: props.name, value: value2 ?? "" } }),
6508
6590
  [props.name, onChange]
6509
6591
  )
6510
6592
  );
6511
6593
  const value = rawValue ?? "";
6512
- const [displayValue, setDisplayValue] = (0, import_react40.useState)(
6594
+ const [displayValue, setDisplayValue] = (0, import_react41.useState)(
6513
6595
  () => value ? formatValueString4(parseDates2(value), displayFormat, locale) : ""
6514
6596
  );
6515
- const [anchorEl, setAnchorEl] = (0, import_react40.useState)(null);
6597
+ const [anchorEl, setAnchorEl] = (0, import_react41.useState)(null);
6516
6598
  const open = Boolean(anchorEl);
6517
- const calendarValue = (0, import_react40.useMemo)(() => value ? parseDates2(value) : void 0, [value]);
6518
- (0, import_react40.useEffect)(() => {
6599
+ const calendarValue = (0, import_react41.useMemo)(() => value ? parseDates2(value) : void 0, [value]);
6600
+ (0, import_react41.useEffect)(() => {
6519
6601
  if (value) {
6520
6602
  try {
6521
6603
  const dates = parseDates2(value);
@@ -6527,13 +6609,13 @@ var MonthRangePicker = (0, import_react40.forwardRef)((inProps, ref) => {
6527
6609
  setDisplayValue("");
6528
6610
  }
6529
6611
  }, [displayFormat, locale, value]);
6530
- (0, import_react40.useEffect)(() => {
6612
+ (0, import_react41.useEffect)(() => {
6531
6613
  if (!anchorEl) {
6532
6614
  innerRef.current?.blur();
6533
6615
  }
6534
6616
  }, [anchorEl, innerRef]);
6535
- (0, import_react40.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
6536
- const handleChange = (0, import_react40.useCallback)(
6617
+ (0, import_react41.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
6618
+ const handleChange = (0, import_react41.useCallback)(
6537
6619
  (event) => {
6538
6620
  setDisplayValue(
6539
6621
  event.target.value ? formatValueString4(parseDates2(event.target.value), displayFormat, locale) : ""
@@ -6542,7 +6624,7 @@ var MonthRangePicker = (0, import_react40.forwardRef)((inProps, ref) => {
6542
6624
  },
6543
6625
  [displayFormat, locale, setValue]
6544
6626
  );
6545
- const handleInputMouseDown = (0, import_react40.useCallback)(
6627
+ const handleInputMouseDown = (0, import_react41.useCallback)(
6546
6628
  (event) => {
6547
6629
  if (isAlphabeticDisplay) {
6548
6630
  event.preventDefault();
@@ -6551,14 +6633,14 @@ var MonthRangePicker = (0, import_react40.forwardRef)((inProps, ref) => {
6551
6633
  },
6552
6634
  [isAlphabeticDisplay, buttonRef]
6553
6635
  );
6554
- const handleCalendarToggle = (0, import_react40.useCallback)(
6636
+ const handleCalendarToggle = (0, import_react41.useCallback)(
6555
6637
  (event) => {
6556
6638
  setAnchorEl(anchorEl ? null : event.currentTarget);
6557
6639
  innerRef.current?.focus();
6558
6640
  },
6559
6641
  [anchorEl, setAnchorEl, innerRef]
6560
6642
  );
6561
- const handleCalendarChange = (0, import_react40.useCallback)(
6643
+ const handleCalendarChange = (0, import_react41.useCallback)(
6562
6644
  ([date1, date2]) => {
6563
6645
  if (!date1 || !date2) return;
6564
6646
  const formattedValue = formatValueString4([date1, date2], format);
@@ -6568,7 +6650,7 @@ var MonthRangePicker = (0, import_react40.forwardRef)((inProps, ref) => {
6568
6650
  },
6569
6651
  [setValue, setAnchorEl, format, displayFormat, locale]
6570
6652
  );
6571
- return /* @__PURE__ */ import_react40.default.createElement(MonthRangePickerRoot, null, /* @__PURE__ */ import_react40.default.createElement(import_base6.FocusTrap, { open: true }, /* @__PURE__ */ import_react40.default.createElement(import_react40.default.Fragment, null, /* @__PURE__ */ import_react40.default.createElement(
6653
+ return /* @__PURE__ */ import_react41.default.createElement(MonthRangePickerRoot, null, /* @__PURE__ */ import_react41.default.createElement(import_base6.FocusTrap, { open: true }, /* @__PURE__ */ import_react41.default.createElement(import_react41.default.Fragment, null, /* @__PURE__ */ import_react41.default.createElement(
6572
6654
  Input_default,
6573
6655
  {
6574
6656
  ...innerProps,
@@ -6598,7 +6680,7 @@ var MonthRangePicker = (0, import_react40.forwardRef)((inProps, ref) => {
6598
6680
  // NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
6599
6681
  fontFamily: "monospace"
6600
6682
  },
6601
- endDecorator: /* @__PURE__ */ import_react40.default.createElement(
6683
+ endDecorator: /* @__PURE__ */ import_react41.default.createElement(
6602
6684
  IconButton_default,
6603
6685
  {
6604
6686
  ref: buttonRef,
@@ -6609,12 +6691,12 @@ var MonthRangePicker = (0, import_react40.forwardRef)((inProps, ref) => {
6609
6691
  "aria-haspopup": "dialog",
6610
6692
  "aria-expanded": open
6611
6693
  },
6612
- /* @__PURE__ */ import_react40.default.createElement(import_CalendarToday4.default, null)
6694
+ /* @__PURE__ */ import_react41.default.createElement(import_CalendarToday4.default, null)
6613
6695
  ),
6614
6696
  label,
6615
6697
  helperText
6616
6698
  }
6617
- ), open && /* @__PURE__ */ import_react40.default.createElement(import_base6.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react40.default.createElement(
6699
+ ), open && /* @__PURE__ */ import_react41.default.createElement(import_base6.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react41.default.createElement(
6618
6700
  StyledPopper4,
6619
6701
  {
6620
6702
  id: "month-range-picker-popper",
@@ -6633,7 +6715,7 @@ var MonthRangePicker = (0, import_react40.forwardRef)((inProps, ref) => {
6633
6715
  "aria-label": "Calendar Tooltip",
6634
6716
  "aria-expanded": open
6635
6717
  },
6636
- /* @__PURE__ */ import_react40.default.createElement(CalendarSheet4, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react40.default.createElement(
6718
+ /* @__PURE__ */ import_react41.default.createElement(CalendarSheet4, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react41.default.createElement(
6637
6719
  Calendar_default,
6638
6720
  {
6639
6721
  view: "month",
@@ -6647,14 +6729,14 @@ var MonthRangePicker = (0, import_react40.forwardRef)((inProps, ref) => {
6647
6729
  disablePast,
6648
6730
  locale
6649
6731
  }
6650
- ), /* @__PURE__ */ import_react40.default.createElement(
6732
+ ), /* @__PURE__ */ import_react41.default.createElement(
6651
6733
  DialogActions_default,
6652
6734
  {
6653
6735
  sx: {
6654
6736
  p: 1
6655
6737
  }
6656
6738
  },
6657
- /* @__PURE__ */ import_react40.default.createElement(
6739
+ /* @__PURE__ */ import_react41.default.createElement(
6658
6740
  Button_default,
6659
6741
  {
6660
6742
  size,
@@ -6673,7 +6755,7 @@ var MonthRangePicker = (0, import_react40.forwardRef)((inProps, ref) => {
6673
6755
  MonthRangePicker.displayName = "MonthRangePicker";
6674
6756
 
6675
6757
  // src/components/NavigationGroup/NavigationGroup.tsx
6676
- var import_react41 = __toESM(require("react"));
6758
+ var import_react42 = __toESM(require("react"));
6677
6759
  var import_joy53 = require("@mui/joy");
6678
6760
  var AccordionSummary2 = (0, import_joy53.styled)(import_joy53.AccordionSummary, {
6679
6761
  name: "NavigationGroup",
@@ -6697,11 +6779,11 @@ var AccordionDetails2 = (0, import_joy53.styled)(import_joy53.AccordionDetails,
6697
6779
  }));
6698
6780
  function NavigationGroup(props) {
6699
6781
  const { title, children, startDecorator, level, ...rest } = props;
6700
- return /* @__PURE__ */ import_react41.default.createElement(import_joy53.Accordion, { ...rest }, /* @__PURE__ */ import_react41.default.createElement(AccordionSummary2, { useIcon: !!startDecorator, level }, /* @__PURE__ */ import_react41.default.createElement(import_joy53.Stack, { direction: "row", gap: 4 }, startDecorator, title)), /* @__PURE__ */ import_react41.default.createElement(AccordionDetails2, null, children));
6782
+ return /* @__PURE__ */ import_react42.default.createElement(import_joy53.Accordion, { ...rest }, /* @__PURE__ */ import_react42.default.createElement(AccordionSummary2, { useIcon: !!startDecorator, level }, /* @__PURE__ */ import_react42.default.createElement(import_joy53.Stack, { direction: "row", gap: 4 }, startDecorator, title)), /* @__PURE__ */ import_react42.default.createElement(AccordionDetails2, null, children));
6701
6783
  }
6702
6784
 
6703
6785
  // src/components/NavigationItem/NavigationItem.tsx
6704
- var import_react42 = __toESM(require("react"));
6786
+ var import_react43 = __toESM(require("react"));
6705
6787
  var import_joy54 = require("@mui/joy");
6706
6788
  var ListItemButton = (0, import_joy54.styled)(import_joy54.ListItemButton, {
6707
6789
  name: "NavigationItem",
@@ -6730,7 +6812,7 @@ function NavigationItem(props) {
6730
6812
  const handleClick = () => {
6731
6813
  onClick?.(id);
6732
6814
  };
6733
- return /* @__PURE__ */ import_react42.default.createElement(import_joy54.ListItem, { ...rest }, /* @__PURE__ */ import_react42.default.createElement(
6815
+ return /* @__PURE__ */ import_react43.default.createElement(import_joy54.ListItem, { ...rest }, /* @__PURE__ */ import_react43.default.createElement(
6734
6816
  ListItemButton,
6735
6817
  {
6736
6818
  level,
@@ -6739,21 +6821,21 @@ function NavigationItem(props) {
6739
6821
  "aria-current": selected,
6740
6822
  onClick: handleClick
6741
6823
  },
6742
- startDecorator && /* @__PURE__ */ import_react42.default.createElement(import_joy54.ListItemDecorator, null, startDecorator),
6824
+ startDecorator && /* @__PURE__ */ import_react43.default.createElement(import_joy54.ListItemDecorator, null, startDecorator),
6743
6825
  children
6744
6826
  ));
6745
6827
  }
6746
6828
 
6747
6829
  // src/components/Navigator/Navigator.tsx
6748
- var import_react43 = __toESM(require("react"));
6830
+ var import_react44 = __toESM(require("react"));
6749
6831
  function Navigator(props) {
6750
6832
  const { items, level = 0, onSelect } = props;
6751
6833
  const handleItemClick = (id) => {
6752
6834
  onSelect?.(id);
6753
6835
  };
6754
- return /* @__PURE__ */ import_react43.default.createElement("div", null, items.map((item, index) => {
6836
+ return /* @__PURE__ */ import_react44.default.createElement("div", null, items.map((item, index) => {
6755
6837
  if (item.type === "item") {
6756
- return /* @__PURE__ */ import_react43.default.createElement(
6838
+ return /* @__PURE__ */ import_react44.default.createElement(
6757
6839
  NavigationItem,
6758
6840
  {
6759
6841
  key: item.id,
@@ -6766,7 +6848,7 @@ function Navigator(props) {
6766
6848
  item.title
6767
6849
  );
6768
6850
  } else if (item.type === "group") {
6769
- return /* @__PURE__ */ import_react43.default.createElement(
6851
+ return /* @__PURE__ */ import_react44.default.createElement(
6770
6852
  NavigationGroup,
6771
6853
  {
6772
6854
  key: `${item.title}-${index}`,
@@ -6784,16 +6866,16 @@ function Navigator(props) {
6784
6866
  Navigator.displayName = "Navigator";
6785
6867
 
6786
6868
  // src/components/PercentageInput/PercentageInput.tsx
6787
- var import_react44 = __toESM(require("react"));
6869
+ var import_react45 = __toESM(require("react"));
6788
6870
  var import_react_number_format2 = require("react-number-format");
6789
6871
  var import_joy55 = require("@mui/joy");
6790
6872
  var padDecimal = (value, decimalScale) => {
6791
6873
  const [integer, decimal = ""] = `${value}`.split(".");
6792
6874
  return Number(`${integer}${decimal.padEnd(decimalScale, "0")}`);
6793
6875
  };
6794
- var TextMaskAdapter9 = import_react44.default.forwardRef(function TextMaskAdapter10(props, ref) {
6876
+ var TextMaskAdapter9 = import_react45.default.forwardRef(function TextMaskAdapter10(props, ref) {
6795
6877
  const { onChange, min, max, ...innerProps } = props;
6796
- return /* @__PURE__ */ import_react44.default.createElement(
6878
+ return /* @__PURE__ */ import_react45.default.createElement(
6797
6879
  import_react_number_format2.NumericFormat,
6798
6880
  {
6799
6881
  ...innerProps,
@@ -6818,7 +6900,7 @@ var PercentageInputRoot = (0, import_joy55.styled)(Input_default, {
6818
6900
  slot: "Root",
6819
6901
  overridesResolver: (props, styles) => styles.root
6820
6902
  })({});
6821
- var PercentageInput = import_react44.default.forwardRef(
6903
+ var PercentageInput = import_react45.default.forwardRef(
6822
6904
  function PercentageInput2(inProps, ref) {
6823
6905
  const props = (0, import_joy55.useThemeProps)({ props: inProps, name: "PercentageInput" });
6824
6906
  const {
@@ -6841,19 +6923,19 @@ var PercentageInput = import_react44.default.forwardRef(
6841
6923
  const [_value, setValue] = useControlledState(
6842
6924
  props.value,
6843
6925
  props.defaultValue ?? null,
6844
- (0, import_react44.useCallback)((value2) => onChange?.({ target: { name, value: value2 } }), [onChange, name])
6926
+ (0, import_react45.useCallback)((value2) => onChange?.({ target: { name, value: value2 } }), [onChange, name])
6845
6927
  );
6846
- const value = (0, import_react44.useMemo)(() => {
6928
+ const value = (0, import_react45.useMemo)(() => {
6847
6929
  if (_value && useMinorUnit) {
6848
6930
  return _value / Math.pow(10, maxDecimalScale);
6849
6931
  }
6850
6932
  return _value;
6851
6933
  }, [_value, useMinorUnit, maxDecimalScale]);
6852
- const internalError = (0, import_react44.useMemo)(
6934
+ const internalError = (0, import_react45.useMemo)(
6853
6935
  () => value != null && (max != null && value > max || min != null && value < min),
6854
6936
  [max, min, value]
6855
6937
  );
6856
- const handleChange = (0, import_react44.useCallback)(
6938
+ const handleChange = (0, import_react45.useCallback)(
6857
6939
  (event) => {
6858
6940
  if (event.target.value === "") {
6859
6941
  setValue(null);
@@ -6865,7 +6947,7 @@ var PercentageInput = import_react44.default.forwardRef(
6865
6947
  },
6866
6948
  [setValue, useMinorUnit, maxDecimalScale]
6867
6949
  );
6868
- return /* @__PURE__ */ import_react44.default.createElement(
6950
+ return /* @__PURE__ */ import_react45.default.createElement(
6869
6951
  PercentageInputRoot,
6870
6952
  {
6871
6953
  ...innerProps,
@@ -6906,7 +6988,7 @@ var RadioGroup = MotionRadioGroup;
6906
6988
  RadioGroup.displayName = "RadioGroup";
6907
6989
 
6908
6990
  // src/components/RadioTileGroup/RadioTileGroup.tsx
6909
- var import_react45 = __toESM(require("react"));
6991
+ var import_react46 = __toESM(require("react"));
6910
6992
  var import_joy57 = require("@mui/joy");
6911
6993
  var RadioTileGroupRoot = (0, import_joy57.styled)(RadioGroup, {
6912
6994
  name: "RadioTileGroup",
@@ -6994,7 +7076,7 @@ function RadioTileGroup(props) {
6994
7076
  error,
6995
7077
  required
6996
7078
  } = props;
6997
- const radioGroup = /* @__PURE__ */ import_react45.default.createElement(
7079
+ const radioGroup = /* @__PURE__ */ import_react46.default.createElement(
6998
7080
  RadioTileGroupRoot,
6999
7081
  {
7000
7082
  overlay: true,
@@ -7005,7 +7087,7 @@ function RadioTileGroup(props) {
7005
7087
  flex,
7006
7088
  columns
7007
7089
  },
7008
- options.map((option) => /* @__PURE__ */ import_react45.default.createElement(
7090
+ options.map((option) => /* @__PURE__ */ import_react46.default.createElement(
7009
7091
  RadioTileSheet,
7010
7092
  {
7011
7093
  key: option.value,
@@ -7015,7 +7097,7 @@ function RadioTileGroup(props) {
7015
7097
  flex,
7016
7098
  textAlign
7017
7099
  },
7018
- /* @__PURE__ */ import_react45.default.createElement(
7100
+ /* @__PURE__ */ import_react46.default.createElement(
7019
7101
  Radio,
7020
7102
  {
7021
7103
  id: `${option.value}`,
@@ -7044,7 +7126,7 @@ function RadioTileGroup(props) {
7044
7126
  }
7045
7127
  }
7046
7128
  ),
7047
- option.startDecorator && /* @__PURE__ */ import_react45.default.createElement(
7129
+ option.startDecorator && /* @__PURE__ */ import_react46.default.createElement(
7048
7130
  Box_default,
7049
7131
  {
7050
7132
  sx: {
@@ -7065,15 +7147,15 @@ function RadioTileGroup(props) {
7065
7147
  )
7066
7148
  ))
7067
7149
  );
7068
- return /* @__PURE__ */ import_react45.default.createElement(FormControl_default, { required, disabled: allDisabled, error, size, sx, className }, label && /* @__PURE__ */ import_react45.default.createElement(FormLabel_default, null, label), radioGroup, helperText && /* @__PURE__ */ import_react45.default.createElement(FormHelperText_default, null, helperText));
7150
+ return /* @__PURE__ */ import_react46.default.createElement(FormControl_default, { required, disabled: allDisabled, error, size, sx, className }, label && /* @__PURE__ */ import_react46.default.createElement(FormLabel_default, null, label), radioGroup, helperText && /* @__PURE__ */ import_react46.default.createElement(FormHelperText_default, null, helperText));
7069
7151
  }
7070
7152
  RadioTileGroup.displayName = "RadioTileGroup";
7071
7153
 
7072
7154
  // src/components/RadioList/RadioList.tsx
7073
- var import_react46 = __toESM(require("react"));
7155
+ var import_react47 = __toESM(require("react"));
7074
7156
  function RadioList(props) {
7075
7157
  const { items, ...innerProps } = props;
7076
- return /* @__PURE__ */ import_react46.default.createElement(RadioGroup, { ...innerProps }, items.map((item) => /* @__PURE__ */ import_react46.default.createElement(Radio, { key: `${item.value}`, value: item.value, label: item.label })));
7158
+ return /* @__PURE__ */ import_react47.default.createElement(RadioGroup, { ...innerProps }, items.map((item) => /* @__PURE__ */ import_react47.default.createElement(Radio, { key: `${item.value}`, value: item.value, label: item.label })));
7077
7159
  }
7078
7160
  RadioList.displayName = "RadioList";
7079
7161
 
@@ -7164,7 +7246,7 @@ var SearchBar = React44.forwardRef(function SearchBar2(inProps, ref) {
7164
7246
  SearchBar.displayName = "SearchBar";
7165
7247
 
7166
7248
  // src/components/Stepper/Stepper.tsx
7167
- var import_react47 = __toESM(require("react"));
7249
+ var import_react48 = __toESM(require("react"));
7168
7250
  var import_joy58 = require("@mui/joy");
7169
7251
  var import_Check = __toESM(require("@mui/icons-material/Check"));
7170
7252
  var import_framer_motion28 = require("framer-motion");
@@ -7193,7 +7275,7 @@ function Stepper(props) {
7193
7275
  stepOrientation = "horizontal"
7194
7276
  } = props;
7195
7277
  const effectiveStepOrientation = orientation === "vertical" ? "horizontal" : stepOrientation;
7196
- return /* @__PURE__ */ import_react47.default.createElement(
7278
+ return /* @__PURE__ */ import_react48.default.createElement(
7197
7279
  MotionStepper,
7198
7280
  {
7199
7281
  orientation,
@@ -7232,23 +7314,23 @@ function Stepper(props) {
7232
7314
  const completed = activeStep > i + 1;
7233
7315
  const disabled = activeStep < i + 1;
7234
7316
  const hasContent = step.label || step.extraContent;
7235
- return /* @__PURE__ */ import_react47.default.createElement(
7317
+ return /* @__PURE__ */ import_react48.default.createElement(
7236
7318
  Step,
7237
7319
  {
7238
7320
  key: `step-${i}`,
7239
- indicator: /* @__PURE__ */ import_react47.default.createElement(StepIndicator, { variant: disabled ? "outlined" : "solid", color: disabled ? "neutral" : "primary" }, completed ? /* @__PURE__ */ import_react47.default.createElement(import_Check.default, null) : step.indicatorContent),
7321
+ indicator: /* @__PURE__ */ import_react48.default.createElement(StepIndicator, { variant: disabled ? "outlined" : "solid", color: disabled ? "neutral" : "primary" }, completed ? /* @__PURE__ */ import_react48.default.createElement(import_Check.default, null) : step.indicatorContent),
7240
7322
  active,
7241
7323
  completed,
7242
7324
  disabled,
7243
7325
  orientation: effectiveStepOrientation
7244
7326
  },
7245
- hasContent && /* @__PURE__ */ import_react47.default.createElement(
7327
+ hasContent && /* @__PURE__ */ import_react48.default.createElement(
7246
7328
  Stack_default,
7247
7329
  {
7248
7330
  sx: orientation === "horizontal" && effectiveStepOrientation === "vertical" ? { alignItems: "center" } : {}
7249
7331
  },
7250
- step.label && /* @__PURE__ */ import_react47.default.createElement(Typography_default, { level: "title-sm" }, step.label),
7251
- step.extraContent && /* @__PURE__ */ import_react47.default.createElement(Typography_default, { level: "body-xs" }, step.extraContent)
7332
+ step.label && /* @__PURE__ */ import_react48.default.createElement(Typography_default, { level: "title-sm" }, step.label),
7333
+ step.extraContent && /* @__PURE__ */ import_react48.default.createElement(Typography_default, { level: "body-xs" }, step.extraContent)
7252
7334
  )
7253
7335
  );
7254
7336
  })
@@ -7257,7 +7339,7 @@ function Stepper(props) {
7257
7339
  Stepper.displayName = "Stepper";
7258
7340
 
7259
7341
  // src/components/Switch/Switch.tsx
7260
- var import_react48 = __toESM(require("react"));
7342
+ var import_react49 = __toESM(require("react"));
7261
7343
  var import_joy59 = require("@mui/joy");
7262
7344
  var import_framer_motion29 = require("framer-motion");
7263
7345
  var MotionSwitch = (0, import_framer_motion29.motion)(import_joy59.Switch);
@@ -7279,14 +7361,14 @@ var StyledThumb = (0, import_joy59.styled)(import_framer_motion29.motion.div)({
7279
7361
  right: "var(--Switch-thumbOffset)"
7280
7362
  }
7281
7363
  });
7282
- var Thumb = (props) => /* @__PURE__ */ import_react48.default.createElement(StyledThumb, { ...props, layout: true, transition: spring });
7364
+ var Thumb = (props) => /* @__PURE__ */ import_react49.default.createElement(StyledThumb, { ...props, layout: true, transition: spring });
7283
7365
  var spring = {
7284
7366
  type: "spring",
7285
7367
  stiffness: 700,
7286
7368
  damping: 30
7287
7369
  };
7288
7370
  var Switch = (props) => {
7289
- return /* @__PURE__ */ import_react48.default.createElement(
7371
+ return /* @__PURE__ */ import_react49.default.createElement(
7290
7372
  MotionSwitch,
7291
7373
  {
7292
7374
  ...props,
@@ -7300,7 +7382,7 @@ var Switch = (props) => {
7300
7382
  Switch.displayName = "Switch";
7301
7383
 
7302
7384
  // src/components/Tabs/Tabs.tsx
7303
- var import_react49 = __toESM(require("react"));
7385
+ var import_react50 = __toESM(require("react"));
7304
7386
  var import_joy60 = require("@mui/joy");
7305
7387
  var StyledTabs = (0, import_joy60.styled)(import_joy60.Tabs)(({ theme }) => ({
7306
7388
  backgroundColor: theme.palette.background.body
@@ -7316,15 +7398,15 @@ var StyledTab = (0, import_joy60.styled)(import_joy60.Tab)(({ theme }) => ({
7316
7398
  backgroundColor: theme.palette.background.body
7317
7399
  }
7318
7400
  }));
7319
- var Tab = (0, import_react49.forwardRef)(function Tab2({ startDecorator, endDecorator, children, ...props }, ref) {
7320
- return /* @__PURE__ */ import_react49.default.createElement(StyledTab, { ...props, ref }, startDecorator, children, endDecorator);
7401
+ var Tab = (0, import_react50.forwardRef)(function Tab2({ startDecorator, endDecorator, children, ...props }, ref) {
7402
+ return /* @__PURE__ */ import_react50.default.createElement(StyledTab, { ...props, ref }, startDecorator, children, endDecorator);
7321
7403
  });
7322
7404
  Tab.displayName = "Tab";
7323
7405
  var TabList = import_joy60.TabList;
7324
7406
  var TabPanel = import_joy60.TabPanel;
7325
7407
 
7326
7408
  // src/components/ThemeProvider/ThemeProvider.tsx
7327
- var import_react50 = __toESM(require("react"));
7409
+ var import_react51 = __toESM(require("react"));
7328
7410
  var import_joy61 = require("@mui/joy");
7329
7411
  var colorScheme = {
7330
7412
  palette: {
@@ -7590,12 +7672,12 @@ var defaultTheme = (0, import_joy61.extendTheme)({
7590
7672
  });
7591
7673
  function ThemeProvider(props) {
7592
7674
  const theme = props.theme || defaultTheme;
7593
- return /* @__PURE__ */ import_react50.default.createElement(import_react50.default.Fragment, null, /* @__PURE__ */ import_react50.default.createElement(import_joy61.CssVarsProvider, { theme }, /* @__PURE__ */ import_react50.default.createElement(import_joy61.CssBaseline, null), props.children));
7675
+ return /* @__PURE__ */ import_react51.default.createElement(import_react51.default.Fragment, null, /* @__PURE__ */ import_react51.default.createElement(import_joy61.CssVarsProvider, { theme }, /* @__PURE__ */ import_react51.default.createElement(import_joy61.CssBaseline, null), props.children));
7594
7676
  }
7595
7677
  ThemeProvider.displayName = "ThemeProvider";
7596
7678
 
7597
7679
  // src/components/Uploader/Uploader.tsx
7598
- var import_react51 = __toESM(require("react"));
7680
+ var import_react52 = __toESM(require("react"));
7599
7681
  var import_joy62 = require("@mui/joy");
7600
7682
  var import_CloudUploadRounded = __toESM(require("@mui/icons-material/CloudUploadRounded"));
7601
7683
  var import_UploadFileRounded = __toESM(require("@mui/icons-material/UploadFileRounded"));
@@ -7658,7 +7740,7 @@ var getFileSize = (n) => {
7658
7740
  };
7659
7741
  var Preview = (props) => {
7660
7742
  const { files, uploaded, onDelete } = props;
7661
- return /* @__PURE__ */ import_react51.default.createElement(PreviewRoot, { gap: 1 }, [...uploaded, ...files].map((file) => /* @__PURE__ */ import_react51.default.createElement(UploadCard, { key: file.name, size: "sm", color: "neutral" }, /* @__PURE__ */ import_react51.default.createElement(Stack_default, { direction: "row", alignItems: "center", gap: 2 }, /* @__PURE__ */ import_react51.default.createElement(UploadFileIcon, null), /* @__PURE__ */ import_react51.default.createElement(Stack_default, { flex: "1", sx: { overflow: "hidden" } }, /* @__PURE__ */ import_react51.default.createElement(
7743
+ return /* @__PURE__ */ import_react52.default.createElement(PreviewRoot, { gap: 1 }, [...uploaded, ...files].map((file) => /* @__PURE__ */ import_react52.default.createElement(UploadCard, { key: file.name, size: "sm", color: "neutral" }, /* @__PURE__ */ import_react52.default.createElement(Stack_default, { direction: "row", alignItems: "center", gap: 2 }, /* @__PURE__ */ import_react52.default.createElement(UploadFileIcon, null), /* @__PURE__ */ import_react52.default.createElement(Stack_default, { flex: "1", sx: { overflow: "hidden" } }, /* @__PURE__ */ import_react52.default.createElement(
7662
7744
  Typography_default,
7663
7745
  {
7664
7746
  level: "body-sm",
@@ -7670,7 +7752,7 @@ var Preview = (props) => {
7670
7752
  }
7671
7753
  },
7672
7754
  file.name
7673
- ), !!file.size && /* @__PURE__ */ import_react51.default.createElement(Typography_default, { level: "body-xs", fontWeight: "300", lineHeight: "1.33", textColor: "text.tertiary" }, getFileSize(file.size))), /* @__PURE__ */ import_react51.default.createElement(IconButton_default, { onClick: () => onDelete?.(file) }, /* @__PURE__ */ import_react51.default.createElement(ClearIcon2, null))))));
7755
+ ), !!file.size && /* @__PURE__ */ import_react52.default.createElement(Typography_default, { level: "body-xs", fontWeight: "300", lineHeight: "1.33", textColor: "text.tertiary" }, getFileSize(file.size))), /* @__PURE__ */ import_react52.default.createElement(IconButton_default, { onClick: () => onDelete?.(file) }, /* @__PURE__ */ import_react52.default.createElement(ClearIcon2, null))))));
7674
7756
  };
7675
7757
  var UploaderRoot = (0, import_joy62.styled)(Stack_default, {
7676
7758
  name: "Uploader",
@@ -7713,7 +7795,7 @@ var UploaderIcon = (0, import_joy62.styled)(import_CloudUploadRounded.default, {
7713
7795
  }
7714
7796
  })
7715
7797
  );
7716
- var Uploader = import_react51.default.memo((props) => {
7798
+ var Uploader = import_react52.default.memo((props) => {
7717
7799
  const {
7718
7800
  accept,
7719
7801
  minCount,
@@ -7729,14 +7811,14 @@ var Uploader = import_react51.default.memo((props) => {
7729
7811
  error: errorProp,
7730
7812
  helperText: helperTextProp
7731
7813
  } = props;
7732
- const dropZoneRef = (0, import_react51.useRef)(null);
7733
- const inputRef = (0, import_react51.useRef)(null);
7734
- const [errorText, setErrorText] = (0, import_react51.useState)();
7735
- const [files, setFiles] = (0, import_react51.useState)([]);
7736
- const [uploaded, setUploaded] = (0, import_react51.useState)(props.uploaded || []);
7737
- const [previewState, setPreviewState] = (0, import_react51.useState)("idle");
7738
- const accepts = (0, import_react51.useMemo)(() => accept.split(",").map((accept2) => accept2.trim()), [accept]);
7739
- const parsedAccepts = (0, import_react51.useMemo)(
7814
+ const dropZoneRef = (0, import_react52.useRef)(null);
7815
+ const inputRef = (0, import_react52.useRef)(null);
7816
+ const [errorText, setErrorText] = (0, import_react52.useState)();
7817
+ const [files, setFiles] = (0, import_react52.useState)([]);
7818
+ const [uploaded, setUploaded] = (0, import_react52.useState)(props.uploaded || []);
7819
+ const [previewState, setPreviewState] = (0, import_react52.useState)("idle");
7820
+ const accepts = (0, import_react52.useMemo)(() => accept.split(",").map((accept2) => accept2.trim()), [accept]);
7821
+ const parsedAccepts = (0, import_react52.useMemo)(
7740
7822
  () => accepts.flatMap((type) => {
7741
7823
  if (["image/*", "video/*", "audio/*"].includes(type)) {
7742
7824
  return ALL_EXTENSIONS_BY_TYPE[type];
@@ -7745,7 +7827,7 @@ var Uploader = import_react51.default.memo((props) => {
7745
7827
  }),
7746
7828
  [accepts]
7747
7829
  );
7748
- const helperText = (0, import_react51.useMemo)(() => {
7830
+ const helperText = (0, import_react52.useMemo)(() => {
7749
7831
  if (helperTextProp) {
7750
7832
  return helperTextProp;
7751
7833
  }
@@ -7775,12 +7857,12 @@ var Uploader = import_react51.default.memo((props) => {
7775
7857
  }
7776
7858
  return helperTexts.join(", ");
7777
7859
  }, [accepts, maxFileTotalSize, maxCount, helperTextProp]);
7778
- const error = (0, import_react51.useMemo)(() => !!errorText || errorProp, [errorProp, errorText]);
7779
- const showDropZone = (0, import_react51.useMemo)(
7860
+ const error = (0, import_react52.useMemo)(() => !!errorText || errorProp, [errorProp, errorText]);
7861
+ const showDropZone = (0, import_react52.useMemo)(
7780
7862
  () => !maxCount || maxCount && [...uploaded, ...files].length !== maxCount,
7781
7863
  [files, maxCount, uploaded]
7782
7864
  );
7783
- const addFiles = (0, import_react51.useCallback)(
7865
+ const addFiles = (0, import_react52.useCallback)(
7784
7866
  (uploads) => {
7785
7867
  try {
7786
7868
  const types = parsedAccepts.map((type) => type.replace(".", "")) || [];
@@ -7825,7 +7907,7 @@ var Uploader = import_react51.default.memo((props) => {
7825
7907
  },
7826
7908
  [files, uploaded, maxCount, parsedAccepts, maxFileSize, maxFileTotalSize, name, onChange]
7827
7909
  );
7828
- (0, import_react51.useEffect)(() => {
7910
+ (0, import_react52.useEffect)(() => {
7829
7911
  if (!dropZoneRef.current || disabled) {
7830
7912
  return;
7831
7913
  }
@@ -7853,7 +7935,7 @@ var Uploader = import_react51.default.memo((props) => {
7853
7935
  })
7854
7936
  );
7855
7937
  }, [disabled, addFiles]);
7856
- (0, import_react51.useEffect)(() => {
7938
+ (0, import_react52.useEffect)(() => {
7857
7939
  if (inputRef.current && minCount) {
7858
7940
  if (files.length < minCount) {
7859
7941
  inputRef.current.setCustomValidity(`At least ${minCount} files are required.`);
@@ -7862,14 +7944,14 @@ var Uploader = import_react51.default.memo((props) => {
7862
7944
  }
7863
7945
  }
7864
7946
  }, [inputRef, files, minCount]);
7865
- const handleFileChanged = (0, import_react51.useCallback)(
7947
+ const handleFileChanged = (0, import_react52.useCallback)(
7866
7948
  (event) => {
7867
7949
  const files2 = Array.from(event.target.files || []);
7868
7950
  addFiles(files2);
7869
7951
  },
7870
7952
  [addFiles]
7871
7953
  );
7872
- const handleDeleteFile = (0, import_react51.useCallback)(
7954
+ const handleDeleteFile = (0, import_react52.useCallback)(
7873
7955
  (deletedFile) => {
7874
7956
  if (deletedFile instanceof File) {
7875
7957
  setFiles((current) => {
@@ -7889,10 +7971,10 @@ var Uploader = import_react51.default.memo((props) => {
7889
7971
  },
7890
7972
  [name, onChange, onDelete]
7891
7973
  );
7892
- const handleUploaderButtonClick = (0, import_react51.useCallback)(() => {
7974
+ const handleUploaderButtonClick = (0, import_react52.useCallback)(() => {
7893
7975
  inputRef.current?.click();
7894
7976
  }, []);
7895
- const uploader = /* @__PURE__ */ import_react51.default.createElement(
7977
+ const uploader = /* @__PURE__ */ import_react52.default.createElement(
7896
7978
  FileDropZone,
7897
7979
  {
7898
7980
  state: previewState,
@@ -7901,8 +7983,8 @@ var Uploader = import_react51.default.memo((props) => {
7901
7983
  ref: dropZoneRef,
7902
7984
  onClick: handleUploaderButtonClick
7903
7985
  },
7904
- /* @__PURE__ */ import_react51.default.createElement(Stack_default, { alignItems: "center", gap: 1 }, /* @__PURE__ */ import_react51.default.createElement(UploaderIcon, { state: previewState, error: !!(error || errorText), disabled })),
7905
- /* @__PURE__ */ import_react51.default.createElement(
7986
+ /* @__PURE__ */ import_react52.default.createElement(Stack_default, { alignItems: "center", gap: 1 }, /* @__PURE__ */ import_react52.default.createElement(UploaderIcon, { state: previewState, error: !!(error || errorText), disabled })),
7987
+ /* @__PURE__ */ import_react52.default.createElement(
7906
7988
  VisuallyHiddenInput,
7907
7989
  {
7908
7990
  disabled,
@@ -7925,6 +8007,6 @@ var Uploader = import_react51.default.memo((props) => {
7925
8007
  }
7926
8008
  )
7927
8009
  );
7928
- return /* @__PURE__ */ import_react51.default.createElement(UploaderRoot, null, showDropZone && /* @__PURE__ */ import_react51.default.createElement(FormControl_default, { size, error: !!(error || errorText), disabled, required: !!minCount }, label && /* @__PURE__ */ import_react51.default.createElement(FormLabel_default, null, label), uploader, /* @__PURE__ */ import_react51.default.createElement(FormHelperText_default, null, /* @__PURE__ */ import_react51.default.createElement(Stack_default, null, errorText && /* @__PURE__ */ import_react51.default.createElement("div", null, errorText), /* @__PURE__ */ import_react51.default.createElement("div", null, helperText)))), [...uploaded, ...files].length > 0 && /* @__PURE__ */ import_react51.default.createElement(Preview, { files, uploaded, onDelete: handleDeleteFile }));
8010
+ return /* @__PURE__ */ import_react52.default.createElement(UploaderRoot, null, showDropZone && /* @__PURE__ */ import_react52.default.createElement(FormControl_default, { size, error: !!(error || errorText), disabled, required: !!minCount }, label && /* @__PURE__ */ import_react52.default.createElement(FormLabel_default, null, label), uploader, /* @__PURE__ */ import_react52.default.createElement(FormHelperText_default, null, /* @__PURE__ */ import_react52.default.createElement(Stack_default, null, errorText && /* @__PURE__ */ import_react52.default.createElement("div", null, errorText), /* @__PURE__ */ import_react52.default.createElement("div", null, helperText)))), [...uploaded, ...files].length > 0 && /* @__PURE__ */ import_react52.default.createElement(Preview, { files, uploaded, onDelete: handleDeleteFile }));
7929
8011
  });
7930
8012
  Uploader.displayName = "Uploader";