@ceed/ads 1.41.3-next.1 → 1.41.3-next.2

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