@ceed/ads 1.41.2 → 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, null, /* @__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,
@@ -3126,9 +3166,8 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
3126
3166
  onClick: handleInputClick
3127
3167
  }
3128
3168
  },
3129
- className,
3130
- sx,
3131
- endDecorator: /* @__PURE__ */ import_react21.default.createElement(
3169
+ sx: { width: "100%" },
3170
+ endDecorator: /* @__PURE__ */ import_react22.default.createElement(
3132
3171
  CalendarButton,
3133
3172
  {
3134
3173
  ref: buttonRef,
@@ -3140,13 +3179,13 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
3140
3179
  "aria-expanded": open,
3141
3180
  disabled
3142
3181
  },
3143
- /* @__PURE__ */ import_react21.default.createElement(import_CalendarToday.default, null)
3182
+ /* @__PURE__ */ import_react22.default.createElement(import_CalendarToday.default, null)
3144
3183
  ),
3145
3184
  label,
3146
3185
  helperText,
3147
3186
  readOnly: readOnly || inputReadOnly || isAlphabeticDisplay
3148
3187
  }
3149
- ), 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(
3150
3189
  StyledPopper,
3151
3190
  {
3152
3191
  id: "date-picker-popper",
@@ -3165,7 +3204,7 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
3165
3204
  "aria-label": "Calendar Tooltip",
3166
3205
  "aria-expanded": open
3167
3206
  },
3168
- /* @__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(
3169
3208
  Calendar_default,
3170
3209
  {
3171
3210
  value: value && !Number.isNaN(parseDate(value, format).getTime()) ? [parseDate(value, format), void 0] : void 0,
@@ -3185,14 +3224,14 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
3185
3224
  shouldDisableDate: shouldDisableDate ? (date) => shouldDisableDate(formatValueString(date, format)) : void 0,
3186
3225
  locale
3187
3226
  }
3188
- ), !hideClearButton && /* @__PURE__ */ import_react21.default.createElement(
3227
+ ), !hideClearButton && /* @__PURE__ */ import_react22.default.createElement(
3189
3228
  DialogActions_default,
3190
3229
  {
3191
3230
  sx: {
3192
3231
  p: 1
3193
3232
  }
3194
3233
  },
3195
- /* @__PURE__ */ import_react21.default.createElement(
3234
+ /* @__PURE__ */ import_react22.default.createElement(
3196
3235
  Button_default,
3197
3236
  {
3198
3237
  size,
@@ -3210,9 +3249,9 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
3210
3249
  },
3211
3250
  "Clear"
3212
3251
  )
3213
- )), 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) => {
3214
3253
  const disabled2 = isPresetDisabled(preset.value);
3215
- return /* @__PURE__ */ import_react21.default.createElement(
3254
+ return /* @__PURE__ */ import_react22.default.createElement(
3216
3255
  PresetItem,
3217
3256
  {
3218
3257
  key: preset.label,
@@ -3233,11 +3272,11 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
3233
3272
  var DatePicker_default = DatePicker;
3234
3273
 
3235
3274
  // src/components/Textarea/Textarea.tsx
3236
- var import_react22 = __toESM(require("react"));
3275
+ var import_react23 = __toESM(require("react"));
3237
3276
  var import_joy30 = require("@mui/joy");
3238
3277
  var import_framer_motion19 = require("framer-motion");
3239
3278
  var MotionTextarea = (0, import_framer_motion19.motion)(import_joy30.Textarea);
3240
- var Textarea = (props) => {
3279
+ var TextareaBase = (props) => {
3241
3280
  const {
3242
3281
  label,
3243
3282
  error,
@@ -3253,7 +3292,7 @@ var Textarea = (props) => {
3253
3292
  className,
3254
3293
  ...innerProps
3255
3294
  } = props;
3256
- const textarea = /* @__PURE__ */ import_react22.default.createElement(
3295
+ const textarea = /* @__PURE__ */ import_react23.default.createElement(
3257
3296
  MotionTextarea,
3258
3297
  {
3259
3298
  required,
@@ -3265,7 +3304,7 @@ var Textarea = (props) => {
3265
3304
  ...innerProps
3266
3305
  }
3267
3306
  );
3268
- return /* @__PURE__ */ import_react22.default.createElement(
3307
+ return /* @__PURE__ */ import_react23.default.createElement(
3269
3308
  FormControl_default,
3270
3309
  {
3271
3310
  required,
@@ -3276,18 +3315,22 @@ var Textarea = (props) => {
3276
3315
  sx,
3277
3316
  className
3278
3317
  },
3279
- label && /* @__PURE__ */ import_react22.default.createElement(FormLabel_default, null, label),
3318
+ label && /* @__PURE__ */ import_react23.default.createElement(FormLabel_default, null, label),
3280
3319
  textarea,
3281
- helperText && /* @__PURE__ */ import_react22.default.createElement(FormHelperText_default, null, helperText)
3320
+ helperText && /* @__PURE__ */ import_react23.default.createElement(FormHelperText_default, null, helperText)
3282
3321
  );
3283
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
+ });
3284
3327
  Textarea.displayName = "Textarea";
3285
3328
 
3286
3329
  // src/components/Textarea/index.ts
3287
3330
  var Textarea_default = Textarea;
3288
3331
 
3289
3332
  // src/components/Select/Select.tsx
3290
- var import_react23 = __toESM(require("react"));
3333
+ var import_react24 = __toESM(require("react"));
3291
3334
  var import_joy31 = require("@mui/joy");
3292
3335
  var import_framer_motion20 = require("framer-motion");
3293
3336
  var MotionOption = (0, import_framer_motion20.motion)(import_joy31.Option);
@@ -3298,7 +3341,7 @@ var secondaryTextLevelMap2 = {
3298
3341
  lg: "body-md"
3299
3342
  };
3300
3343
  Option.displayName = "Option";
3301
- function Select(props) {
3344
+ function SelectInner(props, ref) {
3302
3345
  const {
3303
3346
  label,
3304
3347
  helperText,
@@ -3324,7 +3367,7 @@ function Select(props) {
3324
3367
  formHelperText: formHelperTextProps,
3325
3368
  ...joySlotProps
3326
3369
  } = slotProps ?? {};
3327
- const options = (0, import_react23.useMemo)(
3370
+ const options = (0, import_react24.useMemo)(
3328
3371
  () => props.options.map((option) => {
3329
3372
  if (option.hasOwnProperty("value") && option.hasOwnProperty("label")) {
3330
3373
  return option;
@@ -3349,14 +3392,15 @@ function Select(props) {
3349
3392
  };
3350
3393
  onChange?.(newEvent, newValue);
3351
3394
  };
3352
- const optionMap = (0, import_react23.useMemo)(() => {
3395
+ const optionMap = (0, import_react24.useMemo)(() => {
3353
3396
  const map = /* @__PURE__ */ new Map();
3354
3397
  options.forEach((option) => {
3355
3398
  map.set(option.value, option);
3356
3399
  });
3357
3400
  return map;
3358
3401
  }, [options]);
3359
- const select = /* @__PURE__ */ import_react23.default.createElement(
3402
+ const buttonSlotProps = useSlotRef(joySlotProps.button, ref);
3403
+ const select = /* @__PURE__ */ import_react24.default.createElement(
3360
3404
  import_joy31.Select,
3361
3405
  {
3362
3406
  ...innerProps,
@@ -3364,7 +3408,7 @@ function Select(props) {
3364
3408
  disabled,
3365
3409
  size,
3366
3410
  color: error ? "danger" : color,
3367
- slotProps: joySlotProps,
3411
+ slotProps: { ...joySlotProps, button: buttonSlotProps },
3368
3412
  onChange: handleChange,
3369
3413
  renderValue: (selected) => {
3370
3414
  if (!selected) return null;
@@ -3374,9 +3418,9 @@ function Select(props) {
3374
3418
  return optionMap.get(selected.value)?.label;
3375
3419
  }
3376
3420
  },
3377
- 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))
3378
3422
  );
3379
- return /* @__PURE__ */ import_react23.default.createElement(
3423
+ return /* @__PURE__ */ import_react24.default.createElement(
3380
3424
  FormControl_default,
3381
3425
  {
3382
3426
  required,
@@ -3389,11 +3433,12 @@ function Select(props) {
3389
3433
  className,
3390
3434
  ...formControlProps
3391
3435
  },
3392
- label && /* @__PURE__ */ import_react23.default.createElement(FormLabel_default, { ...formLabelProps }, label),
3436
+ label && /* @__PURE__ */ import_react24.default.createElement(FormLabel_default, { ...formLabelProps }, label),
3393
3437
  select,
3394
- helperText && /* @__PURE__ */ import_react23.default.createElement(FormHelperText_default, { ...formHelperTextProps }, helperText)
3438
+ helperText && /* @__PURE__ */ import_react24.default.createElement(FormHelperText_default, { ...formHelperTextProps }, helperText)
3395
3439
  );
3396
3440
  }
3441
+ var Select = import_react24.default.forwardRef(SelectInner);
3397
3442
  Select.displayName = "Select";
3398
3443
 
3399
3444
  // src/components/Select/index.ts
@@ -3403,7 +3448,7 @@ var Select_default = Select;
3403
3448
  var import_joy34 = require("@mui/joy");
3404
3449
 
3405
3450
  // src/components/InfoSign/InfoSign.tsx
3406
- var import_react24 = __toESM(require("react"));
3451
+ var import_react25 = __toESM(require("react"));
3407
3452
  var import_joy32 = require("@mui/joy");
3408
3453
  var import_Info = __toESM(require("@mui/icons-material/Info"));
3409
3454
  var InfoIcon = (0, import_joy32.styled)(import_Info.default, {
@@ -3416,7 +3461,7 @@ var InfoIcon = (0, import_joy32.styled)(import_Info.default, {
3416
3461
  }));
3417
3462
  function InfoSign(props) {
3418
3463
  const { message, placement } = props;
3419
- return /* @__PURE__ */ import_react24.default.createElement(
3464
+ return /* @__PURE__ */ import_react25.default.createElement(
3420
3465
  Tooltip_default,
3421
3466
  {
3422
3467
  arrow: true,
@@ -3426,9 +3471,9 @@ function InfoSign(props) {
3426
3471
  maxWidth: "320px"
3427
3472
  }
3428
3473
  },
3429
- 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))
3430
3475
  },
3431
- /* @__PURE__ */ import_react24.default.createElement(InfoIcon, null)
3476
+ /* @__PURE__ */ import_react25.default.createElement(InfoIcon, null)
3432
3477
  );
3433
3478
  }
3434
3479
 
@@ -3441,9 +3486,9 @@ var TextEllipsis = ({
3441
3486
  lineClamp,
3442
3487
  ...rest
3443
3488
  }) => {
3444
- const textRef = (0, import_react25.useRef)(null);
3445
- const [showTooltip, setShowTooltip] = (0, import_react25.useState)(false);
3446
- (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)(() => {
3447
3492
  const element = textRef.current;
3448
3493
  if (!element) return;
3449
3494
  const checkTruncation = () => {
@@ -3455,21 +3500,21 @@ var TextEllipsis = ({
3455
3500
  ro.observe(element);
3456
3501
  return () => ro.disconnect();
3457
3502
  }, [children, lineClamp]);
3458
- 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));
3459
3504
  };
3460
3505
  var CellTextEllipsis = ({ children }) => {
3461
- const textRef = (0, import_react25.useRef)(null);
3462
- const [showTooltip, setShowTooltip] = (0, import_react25.useState)(false);
3463
- (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)(() => {
3464
3509
  const element = textRef.current;
3465
3510
  if (element) {
3466
3511
  const isTextTruncated = element.scrollWidth > element.clientWidth;
3467
3512
  setShowTooltip(isTextTruncated);
3468
3513
  }
3469
3514
  }, [children]);
3470
- const content = /* @__PURE__ */ import_react25.default.createElement(EllipsisDiv, { ref: textRef }, children);
3515
+ const content = /* @__PURE__ */ import_react26.default.createElement(EllipsisDiv, { ref: textRef }, children);
3471
3516
  if (showTooltip) {
3472
- return /* @__PURE__ */ import_react25.default.createElement(
3517
+ return /* @__PURE__ */ import_react26.default.createElement(
3473
3518
  Tooltip_default,
3474
3519
  {
3475
3520
  title: children,
@@ -3508,34 +3553,32 @@ var HeadCell = (props) => {
3508
3553
  tableColRef,
3509
3554
  headerClassName,
3510
3555
  headerLineClamp,
3511
- onAutoFit
3556
+ onAutoFit,
3557
+ columnId
3512
3558
  } = props;
3513
3559
  const theme = (0, import_joy33.useTheme)();
3514
3560
  const ref = headerRef;
3515
3561
  const colRef = tableColRef;
3516
- const localRef = (0, import_react25.useRef)(null);
3517
- (0, import_react25.useLayoutEffect)(() => {
3562
+ const localRef = (0, import_react26.useRef)(null);
3563
+ (0, import_react26.useLayoutEffect)(() => {
3518
3564
  ref.current = localRef.current;
3519
3565
  }, [ref]);
3520
- const [isHovered, setIsHovered] = (0, import_react25.useState)(false);
3566
+ const [isHovered, setIsHovered] = (0, import_react26.useState)(false);
3521
3567
  const sortable = type === "actions" ? false : _sortable;
3522
- const headId = (0, import_react25.useMemo)(
3523
- () => `${tableId}_header_${headerName ?? field}`.trim(),
3524
- [tableId, headerName, field]
3525
- );
3526
- const isResizingRef = (0, import_react25.useRef)(false);
3527
- 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)(
3528
3571
  () => resizable ?? true ? Resizer(
3529
3572
  ref,
3530
3573
  colRef,
3531
3574
  (isResizing) => {
3532
3575
  isResizingRef.current = isResizing;
3533
3576
  },
3534
- onAutoFit ? () => onAutoFit(field) : void 0
3577
+ onAutoFit ? () => onAutoFit(columnId ?? String(field)) : void 0
3535
3578
  ) : null,
3536
- [resizable, ref, colRef, onAutoFit, field]
3579
+ [resizable, ref, colRef, onAutoFit, columnId, field]
3537
3580
  );
3538
- const style = (0, import_react25.useMemo)(
3581
+ const style = (0, import_react26.useMemo)(
3539
3582
  () => ({
3540
3583
  width,
3541
3584
  minWidth: minWidth ?? "50px",
@@ -3553,10 +3596,10 @@ var HeadCell = (props) => {
3553
3596
  );
3554
3597
  const textAlign = getTextAlign(props);
3555
3598
  const initialSort = sortOrder[0];
3556
- const sortIcon = (0, import_react25.useMemo)(() => {
3599
+ const sortIcon = (0, import_react26.useMemo)(() => {
3557
3600
  const isSorted = !!sort;
3558
3601
  const isVisible = sortable && (isSorted || isHovered);
3559
- 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(
3560
3603
  MotionSortIcon,
3561
3604
  {
3562
3605
  key: "sort-icon",
@@ -3584,21 +3627,21 @@ var HeadCell = (props) => {
3584
3627
  }
3585
3628
  ));
3586
3629
  }, [headId, initialSort, sort, sortable, isHovered]);
3587
- const infoSign = (0, import_react25.useMemo)(
3588
- () => 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,
3589
3632
  [description]
3590
3633
  );
3591
- const params = (0, import_react25.useMemo)(
3634
+ const params = (0, import_react26.useMemo)(
3592
3635
  () => ({
3593
3636
  field
3594
3637
  }),
3595
3638
  [field]
3596
3639
  );
3597
- const computedHeaderClassName = (0, import_react25.useMemo)(
3640
+ const computedHeaderClassName = (0, import_react26.useMemo)(
3598
3641
  () => (typeof headerClassName === "function" ? headerClassName(params) : headerClassName) || void 0,
3599
3642
  [headerClassName, params]
3600
3643
  );
3601
- return /* @__PURE__ */ import_react25.default.createElement(
3644
+ return /* @__PURE__ */ import_react26.default.createElement(
3602
3645
  StyledTh,
3603
3646
  {
3604
3647
  id: headId,
@@ -3607,7 +3650,7 @@ var HeadCell = (props) => {
3607
3650
  ref: localRef,
3608
3651
  key: field,
3609
3652
  style,
3610
- onClick: (0, import_react25.useCallback)(
3653
+ onClick: (0, import_react26.useCallback)(
3611
3654
  (e) => {
3612
3655
  if (isResizingRef.current) return;
3613
3656
  if (!(e.target instanceof Element) || !e.currentTarget.contains(e.target)) return;
@@ -3621,7 +3664,7 @@ var HeadCell = (props) => {
3621
3664
  initial: "initial",
3622
3665
  className: computedHeaderClassName
3623
3666
  },
3624
- /* @__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),
3625
3668
  resizer
3626
3669
  );
3627
3670
  };
@@ -3646,9 +3689,9 @@ var BodyCell = (props) => {
3646
3689
  onCellEditStop
3647
3690
  } = props;
3648
3691
  const theme = (0, import_joy33.useTheme)();
3649
- const [value, setValue] = (0, import_react25.useState)(row[field]);
3650
- const cellRef = (0, import_react25.useRef)(null);
3651
- 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)(
3652
3695
  () => ({
3653
3696
  row,
3654
3697
  value,
@@ -3657,20 +3700,20 @@ var BodyCell = (props) => {
3657
3700
  }),
3658
3701
  [row, rowId, value, field]
3659
3702
  );
3660
- const editMode = (0, import_react25.useMemo)(
3703
+ const editMode = (0, import_react26.useMemo)(
3661
3704
  () => !!(props.editMode && (typeof isCellEditable === "function" ? isCellEditable(params) : isCellEditable ?? true)),
3662
3705
  [props.editMode, isCellEditable, params]
3663
3706
  );
3664
3707
  const propsComponentProps = "componentProps" in props ? props.componentProps : null;
3665
3708
  const hasComponentProps = "componentProps" in props;
3666
- const componentProps = (0, import_react25.useMemo)(
3709
+ const componentProps = (0, import_react26.useMemo)(
3667
3710
  () => ({
3668
3711
  ...hasComponentProps && (typeof propsComponentProps === "function" ? propsComponentProps(params) : propsComponentProps || {}),
3669
3712
  size: "sm"
3670
3713
  }),
3671
3714
  [hasComponentProps, propsComponentProps, params]
3672
3715
  );
3673
- const editModeComponentProps = (0, import_react25.useMemo)(
3716
+ const editModeComponentProps = (0, import_react26.useMemo)(
3674
3717
  () => ({
3675
3718
  ...componentProps,
3676
3719
  onChange: (e) => {
@@ -3732,25 +3775,25 @@ var BodyCell = (props) => {
3732
3775
  }),
3733
3776
  [params, row, field, value, componentProps, type, onCellEditStop, onCellEditStart]
3734
3777
  );
3735
- const MemoizedRenderEditCell = (0, import_react25.useMemo)(() => renderEditCell ? (0, import_react25.memo)(renderEditCell) : null, [renderEditCell]);
3736
- const MemoizedRenderCell = (0, import_react25.useMemo)(() => renderCell ? (0, import_react25.memo)(renderCell) : null, [renderCell]);
3737
- 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)(() => {
3738
3781
  if (MemoizedRenderEditCell) {
3739
- return (0, import_react25.createElement)(MemoizedRenderEditCell, params);
3782
+ return (0, import_react26.createElement)(MemoizedRenderEditCell, params);
3740
3783
  }
3741
3784
  return {
3742
- date: /* @__PURE__ */ import_react25.default.createElement(DatePicker_default, { value, ...editModeComponentProps }),
3743
- currency: /* @__PURE__ */ import_react25.default.createElement(
3785
+ date: /* @__PURE__ */ import_react26.default.createElement(DatePicker_default, { value, ...editModeComponentProps }),
3786
+ currency: /* @__PURE__ */ import_react26.default.createElement(
3744
3787
  CurrencyInput_default,
3745
3788
  {
3746
3789
  value,
3747
3790
  ...editModeComponentProps
3748
3791
  }
3749
3792
  ),
3750
- number: /* @__PURE__ */ import_react25.default.createElement(Input_default, { value, type: "number", ...editModeComponentProps }),
3751
- text: /* @__PURE__ */ import_react25.default.createElement(Input_default, { value, type: "text", ...editModeComponentProps }),
3752
- longText: /* @__PURE__ */ import_react25.default.createElement(Textarea_default, { value, ...editModeComponentProps }),
3753
- 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(
3754
3797
  Autocomplete_default,
3755
3798
  {
3756
3799
  value,
@@ -3758,7 +3801,7 @@ var BodyCell = (props) => {
3758
3801
  ...editModeComponentProps
3759
3802
  }
3760
3803
  ),
3761
- select: /* @__PURE__ */ import_react25.default.createElement(
3804
+ select: /* @__PURE__ */ import_react26.default.createElement(
3762
3805
  Select_default,
3763
3806
  {
3764
3807
  value,
@@ -3769,13 +3812,13 @@ var BodyCell = (props) => {
3769
3812
  }[type || "text"];
3770
3813
  }, [value, editModeComponentProps, type, MemoizedRenderEditCell, params]);
3771
3814
  const linkComponentFromProps = props.component;
3772
- const ReadModeComponent = (0, import_react25.useMemo)(() => {
3815
+ const ReadModeComponent = (0, import_react26.useMemo)(() => {
3773
3816
  if (MemoizedRenderCell) {
3774
- return (0, import_react25.createElement)(MemoizedRenderCell, params);
3817
+ return (0, import_react26.createElement)(MemoizedRenderCell, params);
3775
3818
  }
3776
3819
  const innerText = value;
3777
3820
  const typedComponent = {
3778
- link: import_react25.default.createElement(linkComponentFromProps || import_joy34.Link, {
3821
+ link: import_react26.default.createElement(linkComponentFromProps || import_joy34.Link, {
3779
3822
  children: innerText,
3780
3823
  ...componentProps
3781
3824
  })
@@ -3783,27 +3826,27 @@ var BodyCell = (props) => {
3783
3826
  return typedComponent || innerText;
3784
3827
  }, [value, MemoizedRenderCell, params, type, componentProps, linkComponentFromProps]);
3785
3828
  const getActions = props.getActions;
3786
- const CellComponent = (0, import_react25.useMemo)(() => {
3829
+ const CellComponent = (0, import_react26.useMemo)(() => {
3787
3830
  if (type === "actions") {
3788
- 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));
3789
3832
  }
3790
3833
  return editMode && EditModeComponent ? EditModeComponent : ReadModeComponent;
3791
3834
  }, [type, getActions, params, editMode, EditModeComponent, ReadModeComponent]);
3792
- const showTooltip = (0, import_react25.useMemo)(() => noWrap && type === "longText", [noWrap, type]);
3835
+ const showTooltip = (0, import_react26.useMemo)(() => noWrap && type === "longText", [noWrap, type]);
3793
3836
  const isBoundary = props.isLastStartPinnedColumn || props.isLastEndPinnedColumn;
3794
- const computedCellClassName = (0, import_react25.useMemo)(
3837
+ const computedCellClassName = (0, import_react26.useMemo)(
3795
3838
  () => (typeof cellClassName === "function" ? cellClassName(params) : cellClassName) || "",
3796
3839
  [cellClassName, params]
3797
3840
  );
3798
- (0, import_react25.useEffect)(() => {
3841
+ (0, import_react26.useEffect)(() => {
3799
3842
  setValue(row[field]);
3800
3843
  }, [row, field]);
3801
- return /* @__PURE__ */ import_react25.default.createElement(
3844
+ return /* @__PURE__ */ import_react26.default.createElement(
3802
3845
  StyledTd,
3803
3846
  {
3804
3847
  ref: cellRef,
3805
3848
  key: field,
3806
- headers: `${tableId}_header_${props.headerName ?? field}`,
3849
+ headers: getHeaderCellId(tableId, props.columnId ?? field),
3807
3850
  sx: {
3808
3851
  textAlign: getTextAlign({ type }),
3809
3852
  verticalAlign: editMode ? "top" : "middle",
@@ -3815,16 +3858,16 @@ var BodyCell = (props) => {
3815
3858
  },
3816
3859
  className: [isLastStartPinnedColumn && "is-last-left", isLastEndPinnedColumn && "is-last-right", computedCellClassName].filter(Boolean).join(" ") || ""
3817
3860
  },
3818
- (0, import_react25.useMemo)(
3819
- () => 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,
3820
3863
  [CellComponent, showTooltip]
3821
3864
  )
3822
3865
  );
3823
3866
  };
3824
- var BodyRow = (0, import_react25.memo)(
3867
+ var BodyRow = (0, import_react26.memo)(
3825
3868
  (props) => {
3826
3869
  const { tableId, columns, rowId, editMode, noWrap, row } = props;
3827
- 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(
3828
3871
  BodyCell,
3829
3872
  {
3830
3873
  key: `${rowId}_${column.field.toString()}_${i}`,
@@ -3857,7 +3900,7 @@ var StyledTableRow2 = (0, import_joy33.styled)("tr", {
3857
3900
  }
3858
3901
  }
3859
3902
  }));
3860
- var VirtualizedTableRow = (0, import_react25.memo)(StyledTableRow2, (prevProps, nextProps) => {
3903
+ var VirtualizedTableRow = (0, import_react26.memo)(StyledTableRow2, (prevProps, nextProps) => {
3861
3904
  return prevProps.striped === nextProps.striped && prevProps.style?.height === nextProps.style?.height && prevProps.style?.transform === nextProps.style?.transform && // @ts-ignore
3862
3905
  prevProps["data-row-id"] === nextProps["data-row-id"] && // @ts-ignore
3863
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)
@@ -3868,36 +3911,44 @@ var VirtualizedTableRow = (0, import_react25.memo)(StyledTableRow2, (prevProps,
3868
3911
  });
3869
3912
 
3870
3913
  // src/components/DataTable/hooks.ts
3871
- var import_react26 = require("react");
3872
- function useColumnWidths(columnsByField) {
3873
- const [widths, setWidths] = (0, import_react26.useState)({});
3874
- const roRef = (0, import_react26.useRef)();
3875
- (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)(() => {
3876
3919
  if (roRef.current) roRef.current.disconnect();
3877
3920
  roRef.current = new ResizeObserver((entries) => {
3878
- let changed = false;
3879
3921
  setWidths((prev) => {
3922
+ let changed = false;
3880
3923
  const next = { ...prev };
3881
3924
  entries.forEach((entry) => {
3882
- const field = entry.target.dataset.field;
3925
+ const columnId = entry.target.dataset.hdsColumnId;
3883
3926
  const w = Math.round(entry.target.getBoundingClientRect().width);
3884
- if (next[field] !== w) {
3885
- next[field] = w;
3927
+ if (next[columnId] !== w) {
3928
+ next[columnId] = w;
3886
3929
  changed = true;
3887
3930
  }
3888
3931
  });
3889
3932
  return changed ? next : prev;
3890
3933
  });
3891
3934
  });
3892
- Object.entries(columnsByField).forEach(([field, def]) => {
3935
+ const measured = {};
3936
+ Object.entries(columnsById).forEach(([columnId, def]) => {
3893
3937
  const el = def.headerRef.current;
3894
3938
  if (el) {
3895
- el.dataset.field = field;
3939
+ el.dataset.hdsColumnId = columnId;
3940
+ el.dataset.field = String(def.field);
3941
+ measured[columnId] = Math.round(el.getBoundingClientRect().width);
3896
3942
  roRef.current.observe(el);
3897
3943
  }
3898
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
+ });
3899
3950
  return () => roRef.current?.disconnect();
3900
- }, [columnsByField]);
3951
+ }, [columnsById]);
3901
3952
  return widths;
3902
3953
  }
3903
3954
  function useDataTableRenderer({
@@ -3929,33 +3980,33 @@ function useDataTableRenderer({
3929
3980
  "You cannot use both `pinnedColumns` and `columnGroupingModel` at the same time. Please choose one of them."
3930
3981
  );
3931
3982
  }
3932
- const onSelectionModelChangeRef = (0, import_react26.useRef)(onSelectionModelChange);
3983
+ const onSelectionModelChangeRef = (0, import_react27.useRef)(onSelectionModelChange);
3933
3984
  onSelectionModelChangeRef.current = onSelectionModelChange;
3934
- const [focusedRowId, setFocusedRowId] = (0, import_react26.useState)(null);
3935
- 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);
3936
3987
  const [sortModel, setSortModel] = useControlledState(
3937
3988
  controlledSortModel,
3938
3989
  initialState?.sorting?.sortModel ?? [],
3939
- (0, import_react26.useCallback)((sortModel2) => onSortModelChange?.(sortModel2), [onSortModelChange])
3990
+ (0, import_react27.useCallback)((sortModel2) => onSortModelChange?.(sortModel2), [onSortModelChange])
3940
3991
  );
3941
3992
  const [visibilityModel] = useControlledState(
3942
3993
  columnVisibilityModel,
3943
3994
  initialState?.columns?.columnVisibilityModel ?? {},
3944
- (0, import_react26.useCallback)(
3995
+ (0, import_react27.useCallback)(
3945
3996
  (model) => onColumnVisibilityModelChange?.(model),
3946
3997
  [onColumnVisibilityModelChange]
3947
3998
  )
3948
3999
  );
3949
- const reorderedColumns = (0, import_react26.useMemo)(() => {
4000
+ const reorderedColumns = (0, import_react27.useMemo)(() => {
3950
4001
  if (!columnGroupingModel) return columnsProp;
3951
4002
  return reorderColumnsByGroupingModel(columnsProp, columnGroupingModel);
3952
4003
  }, [columnsProp, columnGroupingModel]);
3953
- const visibleColumns = (0, import_react26.useMemo)(
4004
+ const visibleColumns = (0, import_react27.useMemo)(
3954
4005
  () => reorderedColumns.filter((col) => visibilityModel[col.field] !== false),
3955
4006
  [reorderedColumns, visibilityModel]
3956
4007
  );
3957
- const visibleFieldSet = (0, import_react26.useMemo)(() => new Set(visibleColumns.map((c) => c.field)), [visibleColumns]);
3958
- 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)(() => {
3959
4010
  const DEFAULT_MIN = 50;
3960
4011
  let total = checkboxSelection ? 40 : 0;
3961
4012
  for (const col of visibleColumns) {
@@ -3963,7 +4014,7 @@ function useDataTableRenderer({
3963
4014
  }
3964
4015
  return total;
3965
4016
  }, [visibleColumns, checkboxSelection]);
3966
- const allColumnsByField = (0, import_react26.useMemo)(
4017
+ const allColumnsByField = (0, import_react27.useMemo)(
3967
4018
  () => reorderedColumns.reduce(
3968
4019
  (acc, curr) => ({
3969
4020
  ...acc,
@@ -3973,21 +4024,36 @@ function useDataTableRenderer({
3973
4024
  ),
3974
4025
  [reorderedColumns]
3975
4026
  );
3976
- const visibleColumnsByField = (0, import_react26.useMemo)(
3977
- () => visibleColumns.reduce(
3978
- (acc, curr) => ({
3979
- ...acc,
3980
- [curr.field]: {
3981
- ...curr,
3982
- headerRef: (0, import_react26.createRef)(),
3983
- 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)()
3984
4051
  }
3985
- }),
3986
- {}
4052
+ ])
3987
4053
  ),
3988
- [visibleColumns]
4054
+ [visibleColumns, columnIds]
3989
4055
  );
3990
- const sortComparator = (0, import_react26.useCallback)(
4056
+ const sortComparator = (0, import_react27.useCallback)(
3991
4057
  (rowA, rowB) => {
3992
4058
  for (const sort of sortModel) {
3993
4059
  const { field, sort: direction } = sort;
@@ -4016,33 +4082,33 @@ function useDataTableRenderer({
4016
4082
  },
4017
4083
  [sortModel, allColumnsByField]
4018
4084
  );
4019
- const rows = (0, import_react26.useMemo)(
4085
+ const rows = (0, import_react27.useMemo)(
4020
4086
  () => sortModel.length ? [..._rows].sort(sortComparator) : _rows,
4021
4087
  [_rows, sortModel, sortComparator]
4022
4088
  );
4023
- const sortOrder = (0, import_react26.useMemo)(
4089
+ const sortOrder = (0, import_react27.useMemo)(
4024
4090
  () => Array.from(new Set(_sortOrder || ["asc", "desc", null])),
4025
4091
  [_sortOrder]
4026
4092
  );
4027
- const [page, setPage] = (0, import_react26.useState)(paginationModel?.page || 1);
4093
+ const [page, setPage] = (0, import_react27.useState)(paginationModel?.page || 1);
4028
4094
  const pageSize = paginationModel?.pageSize || 20;
4029
- const getId = (0, import_react26.useCallback)(
4095
+ const getId = (0, import_react27.useCallback)(
4030
4096
  (row, index) => _getId?.(row) ?? row.id ?? `${(index || 0) + (page - 1) * pageSize}`,
4031
4097
  [_getId, page, pageSize]
4032
4098
  );
4033
- const selectedModelSet = (0, import_react26.useMemo)(() => new Set(selectionModel || []), [selectionModel]);
4034
- const dataInPage = (0, import_react26.useMemo)(
4099
+ const selectedModelSet = (0, import_react27.useMemo)(() => new Set(selectionModel || []), [selectionModel]);
4100
+ const dataInPage = (0, import_react27.useMemo)(
4035
4101
  () => !pagination || paginationMode === "server" ? rows : rows.slice((page - 1) * pageSize, (page - 1) * pageSize + pageSize),
4036
4102
  [rows, page, pageSize, paginationMode, pagination]
4037
4103
  );
4038
- const selectableDataInPage = (0, import_react26.useMemo)(
4104
+ const selectableDataInPage = (0, import_react27.useMemo)(
4039
4105
  () => dataInPage.filter((row, i) => {
4040
4106
  if (!isRowSelectable) return true;
4041
4107
  return isRowSelectable({ row, id: getId(row, i) });
4042
4108
  }),
4043
4109
  [dataInPage, isRowSelectable, getId]
4044
4110
  );
4045
- const handleRangeSelection = (0, import_react26.useCallback)(
4111
+ const handleRangeSelection = (0, import_react27.useCallback)(
4046
4112
  (anchor, targetIndex) => {
4047
4113
  const startIndex = Math.min(anchor.rowIndex, targetIndex);
4048
4114
  const endIndex = Math.max(anchor.rowIndex, targetIndex);
@@ -4065,51 +4131,60 @@ function useDataTableRenderer({
4065
4131
  },
4066
4132
  [dataInPage, getId, isRowSelectable, selectionModel, onSelectionModelChange]
4067
4133
  );
4068
- const isAllSelected = (0, import_react26.useMemo)(
4134
+ const isAllSelected = (0, import_react27.useMemo)(
4069
4135
  () => selectableDataInPage.length > 0 && selectableDataInPage.every((row, i) => selectedModelSet.has(getId(row, i))),
4070
4136
  [selectableDataInPage, selectedModelSet, getId]
4071
4137
  );
4072
4138
  const rowCount = totalRowsProp || rows.length;
4073
- const selectableRowCount = (0, import_react26.useMemo)(() => {
4139
+ const selectableRowCount = (0, import_react27.useMemo)(() => {
4074
4140
  if (!isRowSelectable) return rowCount;
4075
4141
  return rows.filter((row, i) => isRowSelectable({ row, id: getId(row, i) })).length;
4076
4142
  }, [rows, isRowSelectable, getId, rowCount]);
4077
- const isTotalSelected = (0, import_react26.useMemo)(
4143
+ const isTotalSelected = (0, import_react27.useMemo)(
4078
4144
  () => _isTotalSelected ?? (selectableRowCount > 0 && (selectionModel?.length || 0) === selectableRowCount),
4079
4145
  [_isTotalSelected, selectionModel, selectableRowCount]
4080
4146
  );
4081
- const columnWidths = useColumnWidths(visibleColumnsByField);
4082
- const getWidth = (0, import_react26.useCallback)(
4083
- (f) => columnWidths[f] ?? allColumnsByField[f]?.width ?? // Column prop 으로 지정된 width
4084
- allColumnsByField[f]?.minWidth ?? 0,
4085
- [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]
4086
4159
  );
4087
- const processedColumnGroups = (0, import_react26.useMemo)(() => {
4160
+ const processedColumnGroups = (0, import_react27.useMemo)(() => {
4088
4161
  if (!columnGroupingModel) return null;
4089
4162
  return calculateColumnGroups(columnGroupingModel, visibleColumns, visibleFieldSet);
4090
4163
  }, [columnGroupingModel, visibleColumns, visibleFieldSet]);
4091
- const effectivePinnedLeft = (0, import_react26.useMemo)(
4164
+ const effectivePinnedLeft = (0, import_react27.useMemo)(
4092
4165
  () => pinnedColumns?.left?.filter((f) => visibleFieldSet.has(f)),
4093
4166
  [pinnedColumns?.left, visibleFieldSet]
4094
4167
  );
4095
- const effectivePinnedRight = (0, import_react26.useMemo)(
4168
+ const effectivePinnedRight = (0, import_react27.useMemo)(
4096
4169
  () => pinnedColumns?.right?.filter((f) => visibleFieldSet.has(f)),
4097
4170
  [pinnedColumns?.right, visibleFieldSet]
4098
4171
  );
4099
4172
  const inferredFieldsKey = JSON.stringify(Object.keys(rows[0] || {}));
4100
- const inferredFields = (0, import_react26.useMemo)(() => JSON.parse(inferredFieldsKey), [inferredFieldsKey]);
4101
- const columns = (0, import_react26.useMemo)(() => {
4173
+ const inferredFields = (0, import_react27.useMemo)(() => JSON.parse(inferredFieldsKey), [inferredFieldsKey]);
4174
+ const columns = (0, import_react27.useMemo)(() => {
4102
4175
  const baseColumns = visibleColumns.length > 0 ? visibleColumns : reorderedColumns.length > 0 ? [] : inferredFields.map((key) => ({
4103
4176
  field: key
4104
4177
  }));
4105
- return baseColumns.map((column) => {
4178
+ return baseColumns.map((column, index) => {
4179
+ const columnId = columnIds[index] ?? String(column.field);
4106
4180
  const isLeftPinned = effectivePinnedLeft?.includes(column.field);
4107
4181
  const isRightPinned = effectivePinnedRight?.includes(column.field);
4108
4182
  const isPinned = isLeftPinned || isRightPinned;
4109
4183
  return {
4110
4184
  ...column,
4111
- headerRef: visibleColumnsByField[column.field]?.headerRef,
4112
- tableColRef: visibleColumnsByField[column.field]?.tableColRef,
4185
+ columnId,
4186
+ headerRef: visibleColumnsById[columnId]?.headerRef,
4187
+ tableColRef: visibleColumnsById[columnId]?.tableColRef,
4113
4188
  isCellEditable: editMode && (typeof column.isCellEditable === "function" ? column.isCellEditable : column.isCellEditable ?? true),
4114
4189
  sort: sortModel.find((sort) => sort.field === column.field)?.sort,
4115
4190
  sortOrder: allColumnsByField[column.field]?.sortOrder || sortOrder,
@@ -4126,21 +4201,22 @@ function useDataTableRenderer({
4126
4201
  inferredFields,
4127
4202
  effectivePinnedLeft,
4128
4203
  effectivePinnedRight,
4129
- visibleColumnsByField,
4204
+ columnIds,
4205
+ visibleColumnsById,
4130
4206
  allColumnsByField,
4131
4207
  editMode,
4132
4208
  sortModel,
4133
4209
  sortOrder,
4134
4210
  getWidth
4135
4211
  ]);
4136
- const handlePageChange = (0, import_react26.useCallback)(
4212
+ const handlePageChange = (0, import_react27.useCallback)(
4137
4213
  (newPage) => {
4138
4214
  setPage(newPage);
4139
4215
  onPaginationModelChange?.({ page: newPage, pageSize });
4140
4216
  },
4141
4217
  [onPaginationModelChange, pageSize]
4142
4218
  );
4143
- const handleSortChange = (0, import_react26.useCallback)(
4219
+ const handleSortChange = (0, import_react27.useCallback)(
4144
4220
  (props) => {
4145
4221
  const { field, currentSort, multiple } = props;
4146
4222
  const column = allColumnsByField[field];
@@ -4163,38 +4239,37 @@ function useDataTableRenderer({
4163
4239
  },
4164
4240
  [sortOrder, allColumnsByField, sortModel, setSortModel]
4165
4241
  );
4166
- (0, import_react26.useEffect)(() => {
4242
+ (0, import_react27.useEffect)(() => {
4167
4243
  if (!paginationModel) {
4168
4244
  handlePageChange(1);
4169
4245
  }
4170
4246
  }, [rowCount, handlePageChange, paginationModel]);
4171
- (0, import_react26.useEffect)(() => {
4247
+ (0, import_react27.useEffect)(() => {
4172
4248
  const lastPage = Math.max(1, Math.ceil(rowCount / pageSize));
4173
4249
  if (page > lastPage) {
4174
4250
  handlePageChange(lastPage);
4175
4251
  }
4176
4252
  }, [page, rowCount, pageSize, handlePageChange]);
4177
- (0, import_react26.useEffect)(() => {
4253
+ (0, import_react27.useEffect)(() => {
4178
4254
  onSelectionModelChangeRef.current?.([]);
4179
4255
  setSelectionAnchor(null);
4180
4256
  }, [page]);
4181
- const prevRowsRef = (0, import_react26.useRef)(_rows);
4182
- (0, import_react26.useEffect)(() => {
4257
+ const prevRowsRef = (0, import_react27.useRef)(_rows);
4258
+ (0, import_react27.useEffect)(() => {
4183
4259
  if (prevRowsRef.current !== _rows) {
4184
4260
  setSelectionAnchor(null);
4185
4261
  prevRowsRef.current = _rows;
4186
4262
  }
4187
4263
  }, [_rows]);
4188
- const handleAutoFit = (0, import_react26.useCallback)(
4189
- (field) => {
4190
- const colDef = visibleColumnsByField[field];
4264
+ const handleAutoFit = (0, import_react27.useCallback)(
4265
+ (columnId) => {
4266
+ const colDef = visibleColumnsById[columnId];
4191
4267
  if (!colDef?.headerRef.current) return;
4192
- const column = allColumnsByField[field];
4193
- const columnType = column && "type" in column ? column.type : void 0;
4268
+ const columnType = "type" in colDef ? colDef.type : void 0;
4194
4269
  if (columnType === "actions") return;
4195
4270
  const optimalWidth = computeAutoFitWidth({
4196
4271
  headerEl: colDef.headerRef.current,
4197
- field,
4272
+ field: colDef.field,
4198
4273
  dataInPage
4199
4274
  });
4200
4275
  if (optimalWidth == null) return;
@@ -4202,7 +4277,7 @@ function useDataTableRenderer({
4202
4277
  colDef.headerRef.current.style.width = widthPx;
4203
4278
  if (colDef.tableColRef.current) colDef.tableColRef.current.style.width = widthPx;
4204
4279
  },
4205
- [visibleColumnsByField, allColumnsByField, dataInPage]
4280
+ [visibleColumnsById, dataInPage]
4206
4281
  );
4207
4282
  return {
4208
4283
  rowCount,
@@ -4218,8 +4293,8 @@ function useDataTableRenderer({
4218
4293
  handleAutoFit,
4219
4294
  isAllSelected,
4220
4295
  isTotalSelected,
4221
- isSelectedRow: (0, import_react26.useCallback)((model) => selectedModelSet.has(model), [selectedModelSet]),
4222
- isRowSelectable: (0, import_react26.useCallback)(
4296
+ isSelectedRow: (0, import_react27.useCallback)((model) => selectedModelSet.has(model), [selectedModelSet]),
4297
+ isRowSelectable: (0, import_react27.useCallback)(
4223
4298
  (rowId, row) => {
4224
4299
  if (!isRowSelectable) return true;
4225
4300
  return isRowSelectable({ row, id: rowId });
@@ -4227,13 +4302,13 @@ function useDataTableRenderer({
4227
4302
  [isRowSelectable]
4228
4303
  ),
4229
4304
  focusedRowId,
4230
- onRowFocus: (0, import_react26.useCallback)((rowId) => {
4305
+ onRowFocus: (0, import_react27.useCallback)((rowId) => {
4231
4306
  setFocusedRowId(rowId);
4232
4307
  }, []),
4233
- onAllCheckboxChange: (0, import_react26.useCallback)(() => {
4308
+ onAllCheckboxChange: (0, import_react27.useCallback)(() => {
4234
4309
  onSelectionModelChange?.(isAllSelected ? [] : selectableDataInPage.map(getId));
4235
4310
  }, [isAllSelected, selectableDataInPage, onSelectionModelChange, getId]),
4236
- onCheckboxChange: (0, import_react26.useCallback)(
4311
+ onCheckboxChange: (0, import_react27.useCallback)(
4237
4312
  (event, selectedModel) => {
4238
4313
  const isShiftClick = "shiftKey" in event && event.shiftKey;
4239
4314
  const rowIndex = dataInPage.findIndex((row, i) => getId(row, i) === selectedModel);
@@ -4267,7 +4342,7 @@ function useDataTableRenderer({
4267
4342
  columns,
4268
4343
  tableMinWidth,
4269
4344
  processedColumnGroups,
4270
- onTotalSelect: (0, import_react26.useCallback)(() => {
4345
+ onTotalSelect: (0, import_react27.useCallback)(() => {
4271
4346
  const selectableRows = rows.filter((row, i) => {
4272
4347
  if (!isRowSelectable) return true;
4273
4348
  return isRowSelectable({ row, id: getId(row, i) });
@@ -4281,11 +4356,11 @@ function useDataTableRenderer({
4281
4356
  }
4282
4357
 
4283
4358
  // src/components/Table/Table.tsx
4284
- var import_react27 = __toESM(require("react"));
4359
+ var import_react28 = __toESM(require("react"));
4285
4360
  var import_joy35 = require("@mui/joy");
4286
4361
  var Table = (props) => {
4287
4362
  const { children, ...inheritProps } = props;
4288
- return /* @__PURE__ */ import_react27.default.createElement(import_joy35.Table, { ...inheritProps }, children);
4363
+ return /* @__PURE__ */ import_react28.default.createElement(import_joy35.Table, { ...inheritProps }, children);
4289
4364
  };
4290
4365
  Table.displayName = "Table";
4291
4366
  function TableHead(props) {
@@ -4296,7 +4371,7 @@ function TableHead(props) {
4296
4371
  slots: { checkbox: RenderCheckbox = Checkbox_default } = {},
4297
4372
  slotProps: { checkbox: checkboxProps = {} } = {}
4298
4373
  } = props;
4299
- 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(
4300
4375
  "th",
4301
4376
  {
4302
4377
  style: {
@@ -4304,8 +4379,8 @@ function TableHead(props) {
4304
4379
  textAlign: "center"
4305
4380
  }
4306
4381
  },
4307
- /* @__PURE__ */ import_react27.default.createElement(RenderCheckbox, { onChange: onCheckboxChange, ...checkboxProps })
4308
- ), 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(
4309
4384
  "th",
4310
4385
  {
4311
4386
  key: headCell.label,
@@ -4330,15 +4405,15 @@ function TableBody(props) {
4330
4405
  slots: { checkbox: RenderCheckbox = Checkbox_default } = {},
4331
4406
  slotProps: { checkbox: checkboxProps = {} } = {}
4332
4407
  } = props;
4333
- 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(
4334
4409
  "td",
4335
4410
  {
4336
4411
  style: {
4337
4412
  textAlign: "center"
4338
4413
  }
4339
4414
  },
4340
- /* @__PURE__ */ import_react27.default.createElement(RenderCheckbox, { onChange: (event) => onCheckboxChange?.(event, rowIndex), ...checkboxProps })
4341
- ), 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(
4342
4417
  "td",
4343
4418
  {
4344
4419
  key: cellKey,
@@ -4352,7 +4427,7 @@ function TableBody(props) {
4352
4427
  TableBody.displayName = "TableBody";
4353
4428
 
4354
4429
  // src/components/Pagination/Pagination.tsx
4355
- var import_react28 = __toESM(require("react"));
4430
+ var import_react29 = __toESM(require("react"));
4356
4431
  var import_ChevronLeftRounded = __toESM(require("@mui/icons-material/ChevronLeftRounded"));
4357
4432
  var import_ChevronRightRounded = __toESM(require("@mui/icons-material/ChevronRightRounded"));
4358
4433
  var import_FirstPageRounded = __toESM(require("@mui/icons-material/FirstPageRounded"));
@@ -4422,7 +4497,7 @@ function Pagination(inProps) {
4422
4497
  const [paginationModel, setPaginationModel] = useControlledState(
4423
4498
  _paginationModel,
4424
4499
  defaultPaginationModel,
4425
- (0, import_react28.useCallback)(
4500
+ (0, import_react29.useCallback)(
4426
4501
  (newPage) => {
4427
4502
  onPageChange(newPage.page);
4428
4503
  },
@@ -4438,7 +4513,7 @@ function Pagination(inProps) {
4438
4513
  const afterPages = [paginationModel.page + 1, paginationModel.page + 2].filter((p) => p <= lastPage - 1);
4439
4514
  const isMoreAfterPages = lastPage > 1 && paginationModel.page < lastPage - 3;
4440
4515
  const isMoreBeforePages = lastPage > 1 && paginationModel.page > 4;
4441
- (0, import_react28.useEffect)(() => {
4516
+ (0, import_react29.useEffect)(() => {
4442
4517
  if (paginationModel.page > lastPage) {
4443
4518
  setPaginationModel({ ...paginationModel, page: lastPage });
4444
4519
  }
@@ -4448,7 +4523,7 @@ function Pagination(inProps) {
4448
4523
  value: `${i + 1}`
4449
4524
  }));
4450
4525
  if (variant === "compact") {
4451
- 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(
4452
4527
  PaginationIconButton,
4453
4528
  {
4454
4529
  size,
@@ -4458,8 +4533,8 @@ function Pagination(inProps) {
4458
4533
  disabled: paginationModel.page === firstPage,
4459
4534
  "aria-label": "First page"
4460
4535
  },
4461
- /* @__PURE__ */ import_react28.default.createElement(import_FirstPageRounded.default, null)
4462
- ), /* @__PURE__ */ import_react28.default.createElement(
4536
+ /* @__PURE__ */ import_react29.default.createElement(import_FirstPageRounded.default, null)
4537
+ ), /* @__PURE__ */ import_react29.default.createElement(
4463
4538
  PaginationIconButton,
4464
4539
  {
4465
4540
  size,
@@ -4469,8 +4544,8 @@ function Pagination(inProps) {
4469
4544
  disabled: paginationModel.page === firstPage,
4470
4545
  "aria-label": "Previous page"
4471
4546
  },
4472
- /* @__PURE__ */ import_react28.default.createElement(import_ChevronLeftRounded.default, null)
4473
- )), /* @__PURE__ */ import_react28.default.createElement(
4547
+ /* @__PURE__ */ import_react29.default.createElement(import_ChevronLeftRounded.default, null)
4548
+ )), /* @__PURE__ */ import_react29.default.createElement(
4474
4549
  Autocomplete_default,
4475
4550
  {
4476
4551
  size,
@@ -4489,7 +4564,7 @@ function Pagination(inProps) {
4489
4564
  }[size]
4490
4565
  }
4491
4566
  }
4492
- ), /* @__PURE__ */ import_react28.default.createElement(
4567
+ ), /* @__PURE__ */ import_react29.default.createElement(
4493
4568
  Typography_default,
4494
4569
  {
4495
4570
  level: `body-${size}`,
@@ -4500,7 +4575,7 @@ function Pagination(inProps) {
4500
4575
  },
4501
4576
  "/ ",
4502
4577
  lastPage
4503
- ), /* @__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(
4504
4579
  PaginationIconButton,
4505
4580
  {
4506
4581
  size,
@@ -4510,8 +4585,8 @@ function Pagination(inProps) {
4510
4585
  disabled: paginationModel.page === lastPage,
4511
4586
  "aria-label": "Next page"
4512
4587
  },
4513
- /* @__PURE__ */ import_react28.default.createElement(import_ChevronRightRounded.default, null)
4514
- ), /* @__PURE__ */ import_react28.default.createElement(
4588
+ /* @__PURE__ */ import_react29.default.createElement(import_ChevronRightRounded.default, null)
4589
+ ), /* @__PURE__ */ import_react29.default.createElement(
4515
4590
  PaginationIconButton,
4516
4591
  {
4517
4592
  size,
@@ -4521,10 +4596,10 @@ function Pagination(inProps) {
4521
4596
  disabled: paginationModel.page === lastPage,
4522
4597
  "aria-label": "Last page"
4523
4598
  },
4524
- /* @__PURE__ */ import_react28.default.createElement(import_LastPageRounded.default, null)
4599
+ /* @__PURE__ */ import_react29.default.createElement(import_LastPageRounded.default, null)
4525
4600
  ))));
4526
4601
  }
4527
- 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(
4528
4603
  PaginationIconButton,
4529
4604
  {
4530
4605
  size,
@@ -4534,8 +4609,8 @@ function Pagination(inProps) {
4534
4609
  disabled: paginationModel.page === firstPage,
4535
4610
  "aria-label": "Previous page"
4536
4611
  },
4537
- /* @__PURE__ */ import_react28.default.createElement(import_ChevronLeftRounded.default, null)
4538
- ), 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(
4539
4614
  PaginationButton,
4540
4615
  {
4541
4616
  size,
@@ -4545,7 +4620,7 @@ function Pagination(inProps) {
4545
4620
  "aria-label": "More previous pages"
4546
4621
  },
4547
4622
  "..."
4548
- ), 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(
4549
4624
  PaginationButton,
4550
4625
  {
4551
4626
  size,
@@ -4555,7 +4630,7 @@ function Pagination(inProps) {
4555
4630
  onClick: () => handlePageChange(paginationModel.page + 3)
4556
4631
  },
4557
4632
  "..."
4558
- ), 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(
4559
4634
  PaginationIconButton,
4560
4635
  {
4561
4636
  size,
@@ -4565,7 +4640,7 @@ function Pagination(inProps) {
4565
4640
  disabled: paginationModel.page === lastPage,
4566
4641
  "aria-label": "Next page"
4567
4642
  },
4568
- /* @__PURE__ */ import_react28.default.createElement(import_ChevronRightRounded.default, null)
4643
+ /* @__PURE__ */ import_react29.default.createElement(import_ChevronRightRounded.default, null)
4569
4644
  )));
4570
4645
  }
4571
4646
  Pagination.displayName = "Pagination";
@@ -4639,9 +4714,9 @@ function Component(props, apiRef) {
4639
4714
  isTotalSelected: ___________,
4640
4715
  ...innerProps
4641
4716
  } = props;
4642
- const tableId = (0, import_react29.useId)();
4643
- const parentRef = (0, import_react29.useRef)(null);
4644
- 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);
4645
4720
  const {
4646
4721
  columns,
4647
4722
  processedColumnGroups,
@@ -4677,10 +4752,10 @@ function Component(props, apiRef) {
4677
4752
  measureElement: (element) => element.clientHeight,
4678
4753
  overscan: 10
4679
4754
  });
4680
- const paginationModel = (0, import_react29.useMemo)(() => ({ page, pageSize }), [page, pageSize]);
4755
+ const paginationModel = (0, import_react30.useMemo)(() => ({ page, pageSize }), [page, pageSize]);
4681
4756
  const columnsKey = getObjectVersion(columns);
4682
- const headerCheckboxElement = (0, import_react29.useMemo)(
4683
- () => /* @__PURE__ */ import_react29.default.createElement(
4757
+ const headerCheckboxElement = (0, import_react30.useMemo)(
4758
+ () => /* @__PURE__ */ import_react30.default.createElement(
4684
4759
  RenderCheckbox,
4685
4760
  {
4686
4761
  onChange: onAllCheckboxChange,
@@ -4705,20 +4780,20 @@ function Component(props, apiRef) {
4705
4780
  const showNoRowsOverlay = !loading && rowCount === 0;
4706
4781
  const showFillerColumn = columns.length > 0 && columns.every((c) => !!c.width);
4707
4782
  const totalColCount = Math.max(1, columns.length + (checkboxSelection ? 1 : 0) + (showFillerColumn ? 1 : 0));
4708
- const getRowClickHandler = (0, import_react29.useCallback)(
4783
+ const getRowClickHandler = (0, import_react30.useCallback)(
4709
4784
  (row, rowId) => (e) => {
4710
4785
  onRowClick?.({ row, rowId }, e);
4711
4786
  checkboxSelection && !disableSelectionOnClick && isRowSelectableCheck(rowId, row) && onCheckboxChange(e, rowId);
4712
4787
  },
4713
4788
  [onRowClick, checkboxSelection, disableSelectionOnClick, onCheckboxChange, isRowSelectableCheck]
4714
4789
  );
4715
- const getRowFocusHandler = (0, import_react29.useCallback)(
4790
+ const getRowFocusHandler = (0, import_react30.useCallback)(
4716
4791
  (rowId) => () => {
4717
4792
  onRowFocus(rowId);
4718
4793
  },
4719
4794
  [onRowFocus]
4720
4795
  );
4721
- const getCheckboxClickHandler = (0, import_react29.useCallback)(
4796
+ const getCheckboxClickHandler = (0, import_react30.useCallback)(
4722
4797
  (rowId, row) => (e) => {
4723
4798
  e.stopPropagation();
4724
4799
  if (isRowSelectableCheck(rowId, row)) {
@@ -4728,7 +4803,7 @@ function Component(props, apiRef) {
4728
4803
  },
4729
4804
  [onCheckboxChange, isRowSelectableCheck, onRowFocus]
4730
4805
  );
4731
- const handleTableKeyDown = (0, import_react29.useCallback)(
4806
+ const handleTableKeyDown = (0, import_react30.useCallback)(
4732
4807
  (e) => {
4733
4808
  const supportedKeys = ["ArrowUp", "ArrowDown", " ", "Home", "End", "PageUp", "PageDown"];
4734
4809
  if (!supportedKeys.includes(e.key)) return;
@@ -4818,7 +4893,7 @@ function Component(props, apiRef) {
4818
4893
  virtualizer
4819
4894
  ]
4820
4895
  );
4821
- (0, import_react29.useImperativeHandle)(apiRef, () => ({
4896
+ (0, import_react30.useImperativeHandle)(apiRef, () => ({
4822
4897
  getRowIndexRelativeToVisibleRows(rowId) {
4823
4898
  return dataInPage.findIndex((row) => String(getId(row)) === rowId);
4824
4899
  },
@@ -4834,7 +4909,7 @@ function Component(props, apiRef) {
4834
4909
  });
4835
4910
  }
4836
4911
  }));
4837
- return /* @__PURE__ */ import_react29.default.createElement(
4912
+ return /* @__PURE__ */ import_react30.default.createElement(
4838
4913
  Box_default,
4839
4914
  {
4840
4915
  sx: {
@@ -4844,7 +4919,7 @@ function Component(props, apiRef) {
4844
4919
  flexDirection: "column"
4845
4920
  }
4846
4921
  },
4847
- (!!checkboxSelection || !!Toolbar) && /* @__PURE__ */ import_react29.default.createElement(
4922
+ (!!checkboxSelection || !!Toolbar) && /* @__PURE__ */ import_react30.default.createElement(
4848
4923
  Stack_default,
4849
4924
  {
4850
4925
  direction: "row",
@@ -4854,10 +4929,10 @@ function Component(props, apiRef) {
4854
4929
  justifyContent: "space-between",
4855
4930
  alignItems: "center"
4856
4931
  },
4857
- !!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"))),
4858
- 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 || {} })
4859
4934
  ),
4860
- /* @__PURE__ */ import_react29.default.createElement(
4935
+ /* @__PURE__ */ import_react30.default.createElement(
4861
4936
  Sheet_default,
4862
4937
  {
4863
4938
  variant: "outlined",
@@ -4878,24 +4953,24 @@ function Component(props, apiRef) {
4878
4953
  ref: parentRef,
4879
4954
  ...backgroundProps
4880
4955
  },
4881
- /* @__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(
4882
4957
  "col",
4883
4958
  {
4884
4959
  style: {
4885
4960
  width: "40px"
4886
4961
  }
4887
4962
  }
4888
- ), columns.map((c) => /* @__PURE__ */ import_react29.default.createElement(
4963
+ ), columns.map((c) => /* @__PURE__ */ import_react30.default.createElement(
4889
4964
  "col",
4890
4965
  {
4891
4966
  ref: c.tableColRef,
4892
- key: `${c.field.toString()}_${c.width}`,
4967
+ key: c.columnId,
4893
4968
  style: {
4894
4969
  width: c.width,
4895
4970
  minWidth: c.minWidth ?? "50px"
4896
4971
  }
4897
4972
  }
4898
- )), 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(
4899
4974
  "th",
4900
4975
  {
4901
4976
  rowSpan: processedColumnGroups.maxLevel + 2,
@@ -4906,12 +4981,12 @@ function Component(props, apiRef) {
4906
4981
  }
4907
4982
  },
4908
4983
  headerCheckboxElement
4909
- ), 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) => {
4910
4985
  const nextGroup = levelGroups[groupIndex + 1];
4911
4986
  const emptyCells = nextGroup ? nextGroup.startIndex - (group.startIndex + group.colspan) : columns.length - (group.startIndex + group.colspan);
4912
4987
  const params = { groupId: group.groupId };
4913
4988
  const computedHeaderClassName = group.headerClassName ? typeof group.headerClassName === "function" ? group.headerClassName(params) : group.headerClassName : void 0;
4914
- 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(
4915
4990
  "th",
4916
4991
  {
4917
4992
  colSpan: group.colspan,
@@ -4923,14 +4998,14 @@ function Component(props, apiRef) {
4923
4998
  className: computedHeaderClassName
4924
4999
  },
4925
5000
  group.headerName ?? group.groupId
4926
- ), emptyCells > 0 && Array.from({ length: emptyCells }).map((_2, i) => /* @__PURE__ */ import_react29.default.createElement("th", { key: `empty-between-${level}-${groupIndex}-${i}`, colSpan: 1 })));
4927
- }), 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(
4928
5003
  "th",
4929
5004
  {
4930
5005
  "aria-hidden": "true",
4931
5006
  rowSpan: processedColumnGroups.maxLevel + 2
4932
5007
  }
4933
- ))), /* @__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(
4934
5009
  "th",
4935
5010
  {
4936
5011
  style: {
@@ -4941,7 +5016,7 @@ function Component(props, apiRef) {
4941
5016
  headerCheckboxElement
4942
5017
  ), columns.map((c, i) => (
4943
5018
  // @ts-ignore
4944
- /* @__PURE__ */ import_react29.default.createElement(
5019
+ /* @__PURE__ */ import_react30.default.createElement(
4945
5020
  HeadCell2,
4946
5021
  {
4947
5022
  tableId,
@@ -4953,7 +5028,7 @@ function Component(props, apiRef) {
4953
5028
  ...c
4954
5029
  }
4955
5030
  )
4956
- )), 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(
4957
5032
  VirtualizedTableBody,
4958
5033
  {
4959
5034
  ref: tableBodyRef,
@@ -4964,7 +5039,7 @@ function Component(props, apiRef) {
4964
5039
  role: "rowgroup",
4965
5040
  "aria-label": "DataTableBody"
4966
5041
  },
4967
- !!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(
4968
5043
  "td",
4969
5044
  {
4970
5045
  style: {
@@ -4973,7 +5048,7 @@ function Component(props, apiRef) {
4973
5048
  overflow: "visible"
4974
5049
  }
4975
5050
  },
4976
- /* @__PURE__ */ import_react29.default.createElement(
5051
+ /* @__PURE__ */ import_react30.default.createElement(
4977
5052
  Box_default,
4978
5053
  {
4979
5054
  sx: {
@@ -4983,10 +5058,10 @@ function Component(props, apiRef) {
4983
5058
  right: 0
4984
5059
  }
4985
5060
  },
4986
- /* @__PURE__ */ import_react29.default.createElement(LoadingOverlay, null)
5061
+ /* @__PURE__ */ import_react30.default.createElement(LoadingOverlay, null)
4987
5062
  )
4988
5063
  )),
4989
- 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(
4990
5065
  Box_default,
4991
5066
  {
4992
5067
  sx: {
@@ -4996,14 +5071,14 @@ function Component(props, apiRef) {
4996
5071
  minHeight: "150px"
4997
5072
  }
4998
5073
  },
4999
- /* @__PURE__ */ import_react29.default.createElement(NoRowsOverlay, { ...noRowsOverlayProps })
5074
+ /* @__PURE__ */ import_react30.default.createElement(NoRowsOverlay, { ...noRowsOverlayProps })
5000
5075
  ))),
5001
5076
  virtualizedItems.map((virtualizedRow, index) => {
5002
5077
  const rowIndex = virtualizedRow.index;
5003
5078
  const row = dataInPage[rowIndex];
5004
5079
  const rowId = getId(row, rowIndex);
5005
5080
  const striped = stripe && (stripe === "even" && (rowIndex + 1) % 2 === 0 || stripe === "odd" && (rowIndex + 1) % 2 === 1);
5006
- return /* @__PURE__ */ import_react29.default.createElement(
5081
+ return /* @__PURE__ */ import_react30.default.createElement(
5007
5082
  VirtualizedTableRow,
5008
5083
  {
5009
5084
  key: virtualizedRow.key,
@@ -5023,7 +5098,7 @@ function Component(props, apiRef) {
5023
5098
  transform: `translateY(${virtualizedRow.start - index * virtualizedRow.size}px)`
5024
5099
  }
5025
5100
  },
5026
- checkboxSelection && /* @__PURE__ */ import_react29.default.createElement(
5101
+ checkboxSelection && /* @__PURE__ */ import_react30.default.createElement(
5027
5102
  "th",
5028
5103
  {
5029
5104
  scope: "row",
@@ -5031,7 +5106,7 @@ function Component(props, apiRef) {
5031
5106
  textAlign: "center"
5032
5107
  }
5033
5108
  },
5034
- /* @__PURE__ */ import_react29.default.createElement(
5109
+ /* @__PURE__ */ import_react30.default.createElement(
5035
5110
  RenderCheckbox,
5036
5111
  {
5037
5112
  onClick: getCheckboxClickHandler(rowId, row),
@@ -5042,7 +5117,7 @@ function Component(props, apiRef) {
5042
5117
  }
5043
5118
  )
5044
5119
  ),
5045
- /* @__PURE__ */ import_react29.default.createElement(
5120
+ /* @__PURE__ */ import_react30.default.createElement(
5046
5121
  BodyRow2,
5047
5122
  {
5048
5123
  tableId,
@@ -5053,12 +5128,12 @@ function Component(props, apiRef) {
5053
5128
  noWrap: props.noWrap
5054
5129
  }
5055
5130
  ),
5056
- showFillerColumn && /* @__PURE__ */ import_react29.default.createElement("td", { "aria-hidden": "true" })
5131
+ showFillerColumn && /* @__PURE__ */ import_react30.default.createElement("td", { "aria-hidden": "true" })
5057
5132
  );
5058
5133
  })
5059
- ), Footer && /* @__PURE__ */ import_react29.default.createElement(Footer, null))
5134
+ ), Footer && /* @__PURE__ */ import_react30.default.createElement(Footer, null))
5060
5135
  ),
5061
- pagination && /* @__PURE__ */ import_react29.default.createElement(
5136
+ pagination && /* @__PURE__ */ import_react30.default.createElement(
5062
5137
  Pagination_default,
5063
5138
  {
5064
5139
  pt: 2,
@@ -5071,11 +5146,11 @@ function Component(props, apiRef) {
5071
5146
  )
5072
5147
  );
5073
5148
  }
5074
- var DataTable = (0, import_react29.forwardRef)(Component);
5149
+ var DataTable = (0, import_react30.forwardRef)(Component);
5075
5150
  DataTable.displayName = "DataTable";
5076
5151
 
5077
5152
  // src/components/DateRangePicker/DateRangePicker.tsx
5078
- var import_react30 = __toESM(require("react"));
5153
+ var import_react31 = __toESM(require("react"));
5079
5154
  var import_react_imask2 = require("react-imask");
5080
5155
  var import_CalendarToday2 = __toESM(require("@mui/icons-material/CalendarToday"));
5081
5156
  var import_joy37 = require("@mui/joy");
@@ -5217,9 +5292,9 @@ var parseDates = (str, format) => {
5217
5292
  var formatToPattern2 = (format) => {
5218
5293
  return `${format} - ${format}`.replace(/YYYY/g, "Y").replace(/MM/g, "M").replace(/DD/g, "D").replace(/[^YMD\s]/g, (match) => `${match}\``);
5219
5294
  };
5220
- var TextMaskAdapter5 = import_react30.default.forwardRef(function TextMaskAdapter6(props, ref) {
5295
+ var TextMaskAdapter5 = import_react31.default.forwardRef(function TextMaskAdapter6(props, ref) {
5221
5296
  const { onChange, format, ...other } = props;
5222
- return /* @__PURE__ */ import_react30.default.createElement(
5297
+ return /* @__PURE__ */ import_react31.default.createElement(
5223
5298
  import_react_imask2.IMaskInput,
5224
5299
  {
5225
5300
  ...other,
@@ -5253,7 +5328,7 @@ var TextMaskAdapter5 = import_react30.default.forwardRef(function TextMaskAdapte
5253
5328
  }
5254
5329
  );
5255
5330
  });
5256
- var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5331
+ var DateRangePicker = (0, import_react31.forwardRef)((inProps, ref) => {
5257
5332
  const props = (0, import_joy37.useThemeProps)({ props: inProps, name: "DateRangePicker" });
5258
5333
  const {
5259
5334
  onChange,
@@ -5280,28 +5355,28 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5280
5355
  numberOfMonths,
5281
5356
  ...innerProps
5282
5357
  } = props;
5283
- const innerRef = (0, import_react30.useRef)(null);
5284
- const buttonRef = (0, import_react30.useRef)(null);
5358
+ const innerRef = (0, import_react31.useRef)(null);
5359
+ const buttonRef = (0, import_react31.useRef)(null);
5285
5360
  const [rawValue, setValue] = useControlledState(
5286
5361
  props.value,
5287
5362
  props.defaultValue ?? null,
5288
- (0, import_react30.useCallback)(
5363
+ (0, import_react31.useCallback)(
5289
5364
  (value2) => onChange?.({ target: { name: props.name, value: value2 ?? "" } }),
5290
5365
  [props.name, onChange]
5291
5366
  )
5292
5367
  );
5293
5368
  const value = rawValue ?? "";
5294
5369
  const isAlphabeticDisplay = hasAlphabeticMonth2(displayFormat);
5295
- const [displayValue, setDisplayValue] = (0, import_react30.useState)(
5370
+ const [displayValue, setDisplayValue] = (0, import_react31.useState)(
5296
5371
  () => value ? formatValueString2(parseDates(value, format), displayFormat, locale) : ""
5297
5372
  );
5298
- const [anchorEl, setAnchorEl] = (0, import_react30.useState)(null);
5373
+ const [anchorEl, setAnchorEl] = (0, import_react31.useState)(null);
5299
5374
  const open = Boolean(anchorEl);
5300
- const calendarValue = (0, import_react30.useMemo)(
5375
+ const calendarValue = (0, import_react31.useMemo)(
5301
5376
  () => value ? parseDates(value, format) : void 0,
5302
5377
  [value, format]
5303
5378
  );
5304
- (0, import_react30.useEffect)(() => {
5379
+ (0, import_react31.useEffect)(() => {
5305
5380
  if (value) {
5306
5381
  try {
5307
5382
  const dates = parseDates(value, format);
@@ -5313,13 +5388,13 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5313
5388
  setDisplayValue("");
5314
5389
  }
5315
5390
  }, [displayFormat, locale, value, format]);
5316
- (0, import_react30.useEffect)(() => {
5391
+ (0, import_react31.useEffect)(() => {
5317
5392
  if (!anchorEl) {
5318
5393
  innerRef.current?.blur();
5319
5394
  }
5320
5395
  }, [anchorEl, innerRef]);
5321
- (0, import_react30.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
5322
- const handleChange = (0, import_react30.useCallback)(
5396
+ (0, import_react31.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
5397
+ const handleChange = (0, import_react31.useCallback)(
5323
5398
  (event) => {
5324
5399
  const value2 = event.target.value;
5325
5400
  setDisplayValue(value2 ? formatValueString2(parseDates(value2, format), displayFormat, locale) : value2);
@@ -5327,7 +5402,7 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5327
5402
  },
5328
5403
  [displayFormat, format, locale, setValue]
5329
5404
  );
5330
- const handleDisplayInputChange = (0, import_react30.useCallback)(
5405
+ const handleDisplayInputChange = (0, import_react31.useCallback)(
5331
5406
  (event) => {
5332
5407
  if (event.target.value === "") {
5333
5408
  handleChange({
@@ -5352,14 +5427,14 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5352
5427
  },
5353
5428
  [displayFormat, format, handleChange, props.name]
5354
5429
  );
5355
- const handleCalendarToggle = (0, import_react30.useCallback)(
5430
+ const handleCalendarToggle = (0, import_react31.useCallback)(
5356
5431
  (event) => {
5357
5432
  setAnchorEl(anchorEl ? null : event.currentTarget);
5358
5433
  innerRef.current?.focus();
5359
5434
  },
5360
5435
  [anchorEl, setAnchorEl, innerRef]
5361
5436
  );
5362
- const handleCalendarChange = (0, import_react30.useCallback)(
5437
+ const handleCalendarChange = (0, import_react31.useCallback)(
5363
5438
  ([date1, date2]) => {
5364
5439
  if (!date1 || !date2) return;
5365
5440
  const formattedValue = formatValueString2([date1, date2], format);
@@ -5373,7 +5448,7 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5373
5448
  },
5374
5449
  [props.value, props.name, onChange, setValue, setAnchorEl, format, displayFormat, locale]
5375
5450
  );
5376
- const handleInputMouseDown = (0, import_react30.useCallback)(
5451
+ const handleInputMouseDown = (0, import_react31.useCallback)(
5377
5452
  (event) => {
5378
5453
  if (inputReadOnly || isAlphabeticDisplay) {
5379
5454
  event.preventDefault();
@@ -5382,7 +5457,7 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5382
5457
  },
5383
5458
  [inputReadOnly, isAlphabeticDisplay, buttonRef]
5384
5459
  );
5385
- const handleInputClick = (0, import_react30.useCallback)(
5460
+ const handleInputClick = (0, import_react31.useCallback)(
5386
5461
  (event) => {
5387
5462
  if (inputReadOnly && !readOnly) {
5388
5463
  handleCalendarToggle(event);
@@ -5390,7 +5465,7 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5390
5465
  },
5391
5466
  [inputReadOnly, readOnly, handleCalendarToggle]
5392
5467
  );
5393
- const handlePresetClick = (0, import_react30.useCallback)(
5468
+ const handlePresetClick = (0, import_react31.useCallback)(
5394
5469
  (presetValue) => {
5395
5470
  if (props.value !== void 0) {
5396
5471
  onChange?.({ target: { name: props.name, value: presetValue } });
@@ -5403,7 +5478,7 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5403
5478
  },
5404
5479
  [props.value, props.name, onChange, setValue, setAnchorEl, format, displayFormat, locale]
5405
5480
  );
5406
- const isPresetDisabled = (0, import_react30.useCallback)(
5481
+ const isPresetDisabled = (0, import_react31.useCallback)(
5407
5482
  (presetValue) => {
5408
5483
  try {
5409
5484
  const dates = parseDates(presetValue, format);
@@ -5422,7 +5497,7 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5422
5497
  },
5423
5498
  [format, minDate, maxDate, disableFuture, disablePast]
5424
5499
  );
5425
- return /* @__PURE__ */ import_react30.default.createElement(DateRangePickerRoot, null, /* @__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(
5426
5501
  Input_default,
5427
5502
  {
5428
5503
  ...innerProps,
@@ -5448,9 +5523,8 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5448
5523
  }
5449
5524
  },
5450
5525
  error,
5451
- className,
5452
- sx,
5453
- endDecorator: /* @__PURE__ */ import_react30.default.createElement(
5526
+ sx: { width: "100%" },
5527
+ endDecorator: /* @__PURE__ */ import_react31.default.createElement(
5454
5528
  CalendarButton2,
5455
5529
  {
5456
5530
  ref: buttonRef,
@@ -5462,13 +5536,13 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5462
5536
  "aria-expanded": open,
5463
5537
  disabled
5464
5538
  },
5465
- /* @__PURE__ */ import_react30.default.createElement(import_CalendarToday2.default, null)
5539
+ /* @__PURE__ */ import_react31.default.createElement(import_CalendarToday2.default, null)
5466
5540
  ),
5467
5541
  label,
5468
5542
  helperText,
5469
5543
  readOnly: readOnly || inputReadOnly || isAlphabeticDisplay
5470
5544
  }
5471
- ), 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(
5472
5546
  StyledPopper2,
5473
5547
  {
5474
5548
  id: "date-range-picker-popper",
@@ -5487,7 +5561,7 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5487
5561
  "aria-label": "Calendar Tooltip",
5488
5562
  "aria-expanded": open
5489
5563
  },
5490
- /* @__PURE__ */ import_react30.default.createElement(CalendarSheet2, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react30.default.createElement(CalendarSheetContent2, null, /* @__PURE__ */ import_react30.default.createElement(CalendarSection2, { style: { width: "auto" } }, /* @__PURE__ */ import_react30.default.createElement(
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(
5491
5565
  Calendar_default,
5492
5566
  {
5493
5567
  rangeSelection: true,
@@ -5500,14 +5574,14 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5500
5574
  locale,
5501
5575
  numberOfMonths
5502
5576
  }
5503
- ), !hideClearButton && /* @__PURE__ */ import_react30.default.createElement(
5577
+ ), !hideClearButton && /* @__PURE__ */ import_react31.default.createElement(
5504
5578
  DialogActions_default,
5505
5579
  {
5506
5580
  sx: {
5507
5581
  p: 1
5508
5582
  }
5509
5583
  },
5510
- /* @__PURE__ */ import_react30.default.createElement(
5584
+ /* @__PURE__ */ import_react31.default.createElement(
5511
5585
  Button_default,
5512
5586
  {
5513
5587
  size,
@@ -5521,9 +5595,9 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
5521
5595
  },
5522
5596
  "Clear"
5523
5597
  )
5524
- )), 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) => {
5525
5599
  const disabled2 = isPresetDisabled(preset.value);
5526
- return /* @__PURE__ */ import_react30.default.createElement(
5600
+ return /* @__PURE__ */ import_react31.default.createElement(
5527
5601
  PresetItem2,
5528
5602
  {
5529
5603
  key: preset.label,
@@ -5568,10 +5642,10 @@ DialogTitle.displayName = "DialogTitle";
5568
5642
  var DialogTitle_default = DialogTitle;
5569
5643
 
5570
5644
  // src/components/DialogFrame/DialogFrame.tsx
5571
- var import_react32 = __toESM(require("react"));
5645
+ var import_react33 = __toESM(require("react"));
5572
5646
 
5573
5647
  // src/components/Modal/Modal.tsx
5574
- var import_react31 = __toESM(require("react"));
5648
+ var import_react32 = __toESM(require("react"));
5575
5649
  var import_joy40 = require("@mui/joy");
5576
5650
  var import_framer_motion24 = require("framer-motion");
5577
5651
  var MotionModal = (0, import_framer_motion24.motion)(import_joy40.Modal);
@@ -5586,10 +5660,10 @@ var ModalClose = import_joy40.ModalClose;
5586
5660
  var MotionModalOverflow = (0, import_framer_motion24.motion)(import_joy40.ModalOverflow);
5587
5661
  var ModalOverflow = MotionModalOverflow;
5588
5662
  ModalOverflow.displayName = "ModalOverflow";
5589
- function ModalFrame(props) {
5663
+ var ModalFrame = import_react32.default.forwardRef((props, ref) => {
5590
5664
  const { title, children, titleStartDecorator, onClose, ...innerProps } = props;
5591
- 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));
5592
- }
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
+ });
5593
5667
  ModalFrame.displayName = "ModalFrame";
5594
5668
 
5595
5669
  // src/components/DialogFrame/DialogFrame.tsx
@@ -5600,20 +5674,20 @@ var StyledDialogFrame = (0, import_joy41.styled)(ModalDialog, {
5600
5674
  })({
5601
5675
  padding: 0
5602
5676
  });
5603
- var DialogFrame = import_react32.default.forwardRef((props, ref) => {
5677
+ var DialogFrame = import_react33.default.forwardRef((props, ref) => {
5604
5678
  const { title, children, actions, fullscreen, onSubmit, ...innerProps } = props;
5605
5679
  const formProps = onSubmit ? { component: "form", onSubmit } : void 0;
5606
- 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));
5607
5681
  });
5608
5682
  DialogFrame.displayName = "DialogFrame";
5609
5683
 
5610
5684
  // src/components/Divider/Divider.tsx
5611
- var import_react33 = __toESM(require("react"));
5685
+ var import_react34 = __toESM(require("react"));
5612
5686
  var import_joy42 = require("@mui/joy");
5613
5687
  var import_framer_motion25 = require("framer-motion");
5614
5688
  var MotionDivider = (0, import_framer_motion25.motion)(import_joy42.Divider);
5615
5689
  var Divider = (props) => {
5616
- return /* @__PURE__ */ import_react33.default.createElement(MotionDivider, { ...props });
5690
+ return /* @__PURE__ */ import_react34.default.createElement(MotionDivider, { ...props });
5617
5691
  };
5618
5692
  Divider.displayName = "Divider";
5619
5693
 
@@ -5634,16 +5708,16 @@ var InsetDrawer = (0, import_joy43.styled)(import_joy43.Drawer)(({ theme }) => (
5634
5708
  }));
5635
5709
 
5636
5710
  // src/components/FilterableCheckboxGroup/FilterableCheckboxGroup.tsx
5637
- var import_react34 = __toESM(require("react"));
5711
+ var import_react35 = __toESM(require("react"));
5638
5712
  var import_Search = __toESM(require("@mui/icons-material/Search"));
5639
5713
  var import_joy44 = require("@mui/joy");
5640
5714
  var import_react_virtual3 = require("@tanstack/react-virtual");
5641
5715
  var EMPTY_VALUE = [];
5642
5716
  function LabelWithTooltip(props) {
5643
5717
  const { label, size } = props;
5644
- const labelContentRef = (0, import_react34.useRef)(null);
5645
- const [isOverflowing, setIsOverflowing] = (0, import_react34.useState)(false);
5646
- 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(
5647
5721
  "span",
5648
5722
  {
5649
5723
  ref: labelContentRef,
@@ -5659,14 +5733,14 @@ function LabelWithTooltip(props) {
5659
5733
  },
5660
5734
  label
5661
5735
  );
5662
- (0, import_react34.useEffect)(() => {
5736
+ (0, import_react35.useEffect)(() => {
5663
5737
  const element = labelContentRef.current;
5664
5738
  if (element) {
5665
5739
  setIsOverflowing(element.scrollWidth > element.clientWidth);
5666
5740
  }
5667
5741
  }, [label]);
5668
5742
  if (isOverflowing) {
5669
- 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);
5670
5744
  }
5671
5745
  return labelContent;
5672
5746
  }
@@ -5684,22 +5758,22 @@ function FilterableCheckboxGroup(inProps) {
5684
5758
  maxHeight = 300,
5685
5759
  disabled
5686
5760
  } = props;
5687
- const [searchTerm, setSearchTerm] = (0, import_react34.useState)("");
5688
- 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);
5689
5763
  const [rawValue, setInternalValue] = useControlledState(
5690
5764
  value,
5691
5765
  value ?? EMPTY_VALUE,
5692
- (0, import_react34.useCallback)((newValue) => onChange?.(newValue ?? []), [onChange])
5766
+ (0, import_react35.useCallback)((newValue) => onChange?.(newValue ?? []), [onChange])
5693
5767
  );
5694
5768
  const internalValue = rawValue ?? EMPTY_VALUE;
5695
- const parentRef = (0, import_react34.useRef)(null);
5696
- const isInitialSortRef = (0, import_react34.useRef)(false);
5697
- const prevOptionsRef = (0, import_react34.useRef)([...options]);
5698
- 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)(() => {
5699
5773
  if (!searchTerm) return sortedOptions;
5700
5774
  return sortedOptions.filter((option) => option.label.toLowerCase().includes(searchTerm.toLowerCase()));
5701
5775
  }, [sortedOptions, searchTerm]);
5702
- const itemSize = (0, import_react34.useMemo)(() => {
5776
+ const itemSize = (0, import_react35.useMemo)(() => {
5703
5777
  switch (size) {
5704
5778
  case "sm":
5705
5779
  return 28;
@@ -5717,7 +5791,7 @@ function FilterableCheckboxGroup(inProps) {
5717
5791
  overscan: 5
5718
5792
  });
5719
5793
  const items = virtualizer.getVirtualItems();
5720
- (0, import_react34.useEffect)(() => {
5794
+ (0, import_react35.useEffect)(() => {
5721
5795
  const optionsChanged = prevOptionsRef.current.length !== options.length || prevOptionsRef.current.some(
5722
5796
  (prevOption, index) => prevOption.value !== options[index]?.value || prevOption.label !== options[index]?.label || prevOption.disabled !== options[index]?.disabled
5723
5797
  );
@@ -5743,13 +5817,13 @@ function FilterableCheckboxGroup(inProps) {
5743
5817
  }
5744
5818
  }
5745
5819
  }, [options, value]);
5746
- (0, import_react34.useEffect)(() => {
5820
+ (0, import_react35.useEffect)(() => {
5747
5821
  virtualizer.measure();
5748
5822
  }, [virtualizer, filteredOptions, size]);
5749
- const handleSearchChange = (0, import_react34.useCallback)((event) => {
5823
+ const handleSearchChange = (0, import_react35.useCallback)((event) => {
5750
5824
  setSearchTerm(event.target.value);
5751
5825
  }, []);
5752
- const handleCheckboxChange = (0, import_react34.useCallback)(
5826
+ const handleCheckboxChange = (0, import_react35.useCallback)(
5753
5827
  (optionValue) => (event) => {
5754
5828
  const checked = event.target.checked;
5755
5829
  const newValue = checked ? [...internalValue, optionValue] : internalValue.filter((v) => v !== optionValue);
@@ -5757,7 +5831,7 @@ function FilterableCheckboxGroup(inProps) {
5757
5831
  },
5758
5832
  [internalValue, setInternalValue]
5759
5833
  );
5760
- const handleSelectAll = (0, import_react34.useCallback)(
5834
+ const handleSelectAll = (0, import_react35.useCallback)(
5761
5835
  (event) => {
5762
5836
  const checked = event.target.checked;
5763
5837
  const enabledOptions = filteredOptions.filter((option) => !option.disabled);
@@ -5773,10 +5847,10 @@ function FilterableCheckboxGroup(inProps) {
5773
5847
  },
5774
5848
  [filteredOptions, internalValue, setInternalValue]
5775
5849
  );
5776
- 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]);
5777
5851
  const isAllSelected = enabledFilteredOptions.length > 0 && enabledFilteredOptions.every((option) => internalValue.includes(option.value));
5778
5852
  const isIndeterminate = !isAllSelected && enabledFilteredOptions.some((option) => internalValue.includes(option.value));
5779
- 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(
5780
5854
  Input_default,
5781
5855
  {
5782
5856
  label,
@@ -5789,9 +5863,9 @@ function FilterableCheckboxGroup(inProps) {
5789
5863
  onChange: handleSearchChange,
5790
5864
  size,
5791
5865
  disabled,
5792
- endDecorator: /* @__PURE__ */ import_react34.default.createElement(import_Search.default, null)
5866
+ endDecorator: /* @__PURE__ */ import_react35.default.createElement(import_Search.default, null)
5793
5867
  }
5794
- ), 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(
5795
5869
  "div",
5796
5870
  {
5797
5871
  ref: parentRef,
@@ -5802,7 +5876,7 @@ function FilterableCheckboxGroup(inProps) {
5802
5876
  marginTop: "8px"
5803
5877
  }
5804
5878
  },
5805
- !searchTerm && /* @__PURE__ */ import_react34.default.createElement(
5879
+ !searchTerm && /* @__PURE__ */ import_react35.default.createElement(
5806
5880
  Checkbox_default,
5807
5881
  {
5808
5882
  label: "Select all",
@@ -5819,7 +5893,7 @@ function FilterableCheckboxGroup(inProps) {
5819
5893
  sx: { width: "100%", height: itemSize }
5820
5894
  }
5821
5895
  ),
5822
- /* @__PURE__ */ import_react34.default.createElement(
5896
+ /* @__PURE__ */ import_react35.default.createElement(
5823
5897
  Stack_default,
5824
5898
  {
5825
5899
  sx: {
@@ -5829,11 +5903,11 @@ function FilterableCheckboxGroup(inProps) {
5829
5903
  },
5830
5904
  items.map((virtualRow) => {
5831
5905
  const option = filteredOptions[virtualRow.index];
5832
- return /* @__PURE__ */ import_react34.default.createElement(
5906
+ return /* @__PURE__ */ import_react35.default.createElement(
5833
5907
  Checkbox_default,
5834
5908
  {
5835
5909
  key: virtualRow.key,
5836
- label: /* @__PURE__ */ import_react34.default.createElement(LabelWithTooltip, { label: option.label, size }),
5910
+ label: /* @__PURE__ */ import_react35.default.createElement(LabelWithTooltip, { label: option.label, size }),
5837
5911
  checked: internalValue.includes(option.value),
5838
5912
  onChange: handleCheckboxChange(option.value),
5839
5913
  size,
@@ -5861,16 +5935,16 @@ function FilterableCheckboxGroup(inProps) {
5861
5935
  FilterableCheckboxGroup.displayName = "FilterableCheckboxGroup";
5862
5936
 
5863
5937
  // src/components/FilterMenu/FilterMenu.tsx
5864
- var import_react47 = __toESM(require("react"));
5938
+ var import_react48 = __toESM(require("react"));
5865
5939
  var import_joy58 = require("@mui/joy");
5866
5940
 
5867
5941
  // src/components/FilterMenu/components/CheckboxGroup.tsx
5868
- var import_react35 = __toESM(require("react"));
5942
+ var import_react36 = __toESM(require("react"));
5869
5943
  var import_joy45 = require("@mui/joy");
5870
5944
  function CheckboxGroup(props) {
5871
5945
  const { id, label, options, value, onChange, hidden } = props;
5872
5946
  const [internalValue, setInternalValue] = useControlledState(value, [], onChange);
5873
- const handleCheckboxChange = (0, import_react35.useCallback)(
5947
+ const handleCheckboxChange = (0, import_react36.useCallback)(
5874
5948
  (optionValue) => (event) => {
5875
5949
  const checked = event.target.checked;
5876
5950
  let newValue;
@@ -5886,7 +5960,7 @@ function CheckboxGroup(props) {
5886
5960
  if (hidden) {
5887
5961
  return null;
5888
5962
  }
5889
- 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(
5890
5964
  Checkbox_default,
5891
5965
  {
5892
5966
  key: `${id}-${option.value}`,
@@ -5899,12 +5973,12 @@ function CheckboxGroup(props) {
5899
5973
  CheckboxGroup.displayName = "CheckboxGroup";
5900
5974
 
5901
5975
  // src/components/FilterMenu/components/FilterableCheckboxGroup.tsx
5902
- var import_react36 = __toESM(require("react"));
5976
+ var import_react37 = __toESM(require("react"));
5903
5977
  var import_joy46 = require("@mui/joy");
5904
5978
  function FilterableCheckboxGroup2(props) {
5905
5979
  const { id, label, options, value, onChange, hidden, placeholder, maxHeight } = props;
5906
5980
  const [internalValue, setInternalValue] = useControlledState(value, [], onChange);
5907
- const handleChange = (0, import_react36.useCallback)(
5981
+ const handleChange = (0, import_react37.useCallback)(
5908
5982
  (newValue) => {
5909
5983
  setInternalValue(newValue);
5910
5984
  },
@@ -5913,7 +5987,7 @@ function FilterableCheckboxGroup2(props) {
5913
5987
  if (hidden) {
5914
5988
  return null;
5915
5989
  }
5916
- 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(
5917
5991
  FilterableCheckboxGroup,
5918
5992
  {
5919
5993
  value: internalValue ?? [],
@@ -5928,7 +6002,7 @@ function FilterableCheckboxGroup2(props) {
5928
6002
  FilterableCheckboxGroup2.displayName = "FilterableCheckboxGroup";
5929
6003
 
5930
6004
  // src/components/FilterMenu/components/RadioGroup.tsx
5931
- var import_react37 = __toESM(require("react"));
6005
+ var import_react38 = __toESM(require("react"));
5932
6006
 
5933
6007
  // src/components/Radio/Radio.tsx
5934
6008
  var import_joy47 = require("@mui/joy");
@@ -5945,7 +6019,7 @@ var import_joy48 = require("@mui/joy");
5945
6019
  function RadioGroup2(props) {
5946
6020
  const { id, label, options, value, onChange, hidden } = props;
5947
6021
  const [internalValue, setInternalValue] = useControlledState(value, value ?? "", onChange);
5948
- const handleRadioChange = (0, import_react37.useCallback)(
6022
+ const handleRadioChange = (0, import_react38.useCallback)(
5949
6023
  (event) => {
5950
6024
  const newValue = event.target.value;
5951
6025
  const option = options.find((opt) => opt.value.toString() === newValue);
@@ -5957,12 +6031,12 @@ function RadioGroup2(props) {
5957
6031
  if (hidden) {
5958
6032
  return null;
5959
6033
  }
5960
- 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 }))));
5961
6035
  }
5962
6036
  RadioGroup2.displayName = "RadioGroup";
5963
6037
 
5964
6038
  // src/components/FilterMenu/components/DateRange.tsx
5965
- var import_react38 = __toESM(require("react"));
6039
+ var import_react39 = __toESM(require("react"));
5966
6040
  var import_joy49 = require("@mui/joy");
5967
6041
  function DateRange(props) {
5968
6042
  const {
@@ -5980,8 +6054,8 @@ function DateRange(props) {
5980
6054
  hideClearButton
5981
6055
  } = props;
5982
6056
  const [internalValue, setInternalValue] = useControlledState(value, null, onChange);
5983
- const [selectedOption, setSelectedOption] = (0, import_react38.useState)("all-time");
5984
- const dateRangeOptions = (0, import_react38.useMemo)(
6057
+ const [selectedOption, setSelectedOption] = (0, import_react39.useState)("all-time");
6058
+ const dateRangeOptions = (0, import_react39.useMemo)(
5985
6059
  () => [
5986
6060
  { label: "All Time", value: "all-time" },
5987
6061
  { label: "This Month", value: "this-month" },
@@ -5991,7 +6065,7 @@ function DateRange(props) {
5991
6065
  ],
5992
6066
  []
5993
6067
  );
5994
- const getDateRangeForOption = (0, import_react38.useCallback)(
6068
+ const getDateRangeForOption = (0, import_react39.useCallback)(
5995
6069
  (option) => {
5996
6070
  const now = /* @__PURE__ */ new Date();
5997
6071
  const currentYear = now.getFullYear();
@@ -6030,7 +6104,7 @@ function DateRange(props) {
6030
6104
  },
6031
6105
  [internalValue]
6032
6106
  );
6033
- const determineOptionFromValue = (0, import_react38.useCallback)(
6107
+ const determineOptionFromValue = (0, import_react39.useCallback)(
6034
6108
  (value2) => {
6035
6109
  if (!value2) {
6036
6110
  return "all-time";
@@ -6046,17 +6120,17 @@ function DateRange(props) {
6046
6120
  },
6047
6121
  [getDateRangeForOption]
6048
6122
  );
6049
- const customDateRangeValue = (0, import_react38.useMemo)(() => {
6123
+ const customDateRangeValue = (0, import_react39.useMemo)(() => {
6050
6124
  if (selectedOption === "custom" && internalValue) {
6051
6125
  return `${internalValue[0]} - ${internalValue[1]}`;
6052
6126
  }
6053
6127
  return "";
6054
6128
  }, [selectedOption, internalValue]);
6055
- (0, import_react38.useEffect)(() => {
6129
+ (0, import_react39.useEffect)(() => {
6056
6130
  const newOption = determineOptionFromValue(internalValue);
6057
6131
  setSelectedOption(newOption);
6058
6132
  }, [internalValue, determineOptionFromValue]);
6059
- const handleOptionChange = (0, import_react38.useCallback)(
6133
+ const handleOptionChange = (0, import_react39.useCallback)(
6060
6134
  (event) => {
6061
6135
  const newOption = event.target.value;
6062
6136
  setSelectedOption(newOption);
@@ -6065,7 +6139,7 @@ function DateRange(props) {
6065
6139
  },
6066
6140
  [getDateRangeForOption, setInternalValue]
6067
6141
  );
6068
- const handleCustomDateChange = (0, import_react38.useCallback)(
6142
+ const handleCustomDateChange = (0, import_react39.useCallback)(
6069
6143
  (event) => {
6070
6144
  const dateRangeString = event.target.value;
6071
6145
  if (dateRangeString && dateRangeString.includes(" - ")) {
@@ -6086,7 +6160,7 @@ function DateRange(props) {
6086
6160
  if (hidden) {
6087
6161
  return null;
6088
6162
  }
6089
- 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(
6090
6164
  DateRangePicker,
6091
6165
  {
6092
6166
  value: customDateRangeValue,
@@ -6105,11 +6179,11 @@ function DateRange(props) {
6105
6179
  DateRange.displayName = "DateRange";
6106
6180
 
6107
6181
  // src/components/FilterMenu/components/MonthRange.tsx
6108
- var import_react40 = __toESM(require("react"));
6182
+ var import_react41 = __toESM(require("react"));
6109
6183
  var import_joy51 = require("@mui/joy");
6110
6184
 
6111
6185
  // src/components/MonthRangePicker/MonthRangePicker.tsx
6112
- var import_react39 = __toESM(require("react"));
6186
+ var import_react40 = __toESM(require("react"));
6113
6187
  var import_react_imask3 = require("react-imask");
6114
6188
  var import_CalendarToday3 = __toESM(require("@mui/icons-material/CalendarToday"));
6115
6189
  var import_joy50 = require("@mui/joy");
@@ -6170,9 +6244,9 @@ var parseDates2 = (str) => {
6170
6244
  var formatToPattern3 = (format) => {
6171
6245
  return `${format} - ${format}`.replace(/YYYY/g, "Y").replace(/MM/g, "m").replace(/[^YMm\s]/g, (match) => `${match}\``);
6172
6246
  };
6173
- var TextMaskAdapter7 = import_react39.default.forwardRef(function TextMaskAdapter8(props, ref) {
6247
+ var TextMaskAdapter7 = import_react40.default.forwardRef(function TextMaskAdapter8(props, ref) {
6174
6248
  const { onChange, format, ...other } = props;
6175
- return /* @__PURE__ */ import_react39.default.createElement(
6249
+ return /* @__PURE__ */ import_react40.default.createElement(
6176
6250
  import_react_imask3.IMaskInput,
6177
6251
  {
6178
6252
  ...other,
@@ -6200,7 +6274,7 @@ var TextMaskAdapter7 = import_react39.default.forwardRef(function TextMaskAdapte
6200
6274
  }
6201
6275
  );
6202
6276
  });
6203
- var MonthRangePicker = (0, import_react39.forwardRef)((inProps, ref) => {
6277
+ var MonthRangePicker = (0, import_react40.forwardRef)((inProps, ref) => {
6204
6278
  const props = (0, import_joy50.useThemeProps)({ props: inProps, name: "MonthRangePicker" });
6205
6279
  const {
6206
6280
  onChange,
@@ -6224,24 +6298,24 @@ var MonthRangePicker = (0, import_react39.forwardRef)((inProps, ref) => {
6224
6298
  } = props;
6225
6299
  const displayFormat = displayFormatProp ?? format;
6226
6300
  const isAlphabeticDisplay = hasAlphabeticMonth3(displayFormat);
6227
- const innerRef = (0, import_react39.useRef)(null);
6228
- const buttonRef = (0, import_react39.useRef)(null);
6301
+ const innerRef = (0, import_react40.useRef)(null);
6302
+ const buttonRef = (0, import_react40.useRef)(null);
6229
6303
  const [rawValue, setValue] = useControlledState(
6230
6304
  props.value,
6231
6305
  props.defaultValue ?? null,
6232
- (0, import_react39.useCallback)(
6306
+ (0, import_react40.useCallback)(
6233
6307
  (value2) => onChange?.({ target: { name: props.name, value: value2 ?? "" } }),
6234
6308
  [props.name, onChange]
6235
6309
  )
6236
6310
  );
6237
6311
  const value = rawValue ?? "";
6238
- const [displayValue, setDisplayValue] = (0, import_react39.useState)(
6312
+ const [displayValue, setDisplayValue] = (0, import_react40.useState)(
6239
6313
  () => value ? formatValueString3(parseDates2(value), displayFormat, locale) : ""
6240
6314
  );
6241
- const [anchorEl, setAnchorEl] = (0, import_react39.useState)(null);
6315
+ const [anchorEl, setAnchorEl] = (0, import_react40.useState)(null);
6242
6316
  const open = Boolean(anchorEl);
6243
- const calendarValue = (0, import_react39.useMemo)(() => value ? parseDates2(value) : void 0, [value]);
6244
- (0, import_react39.useEffect)(() => {
6317
+ const calendarValue = (0, import_react40.useMemo)(() => value ? parseDates2(value) : void 0, [value]);
6318
+ (0, import_react40.useEffect)(() => {
6245
6319
  if (value) {
6246
6320
  try {
6247
6321
  const dates = parseDates2(value);
@@ -6253,13 +6327,13 @@ var MonthRangePicker = (0, import_react39.forwardRef)((inProps, ref) => {
6253
6327
  setDisplayValue("");
6254
6328
  }
6255
6329
  }, [displayFormat, locale, value]);
6256
- (0, import_react39.useEffect)(() => {
6330
+ (0, import_react40.useEffect)(() => {
6257
6331
  if (!anchorEl) {
6258
6332
  innerRef.current?.blur();
6259
6333
  }
6260
6334
  }, [anchorEl, innerRef]);
6261
- (0, import_react39.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
6262
- const handleChange = (0, import_react39.useCallback)(
6335
+ (0, import_react40.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
6336
+ const handleChange = (0, import_react40.useCallback)(
6263
6337
  (event) => {
6264
6338
  setDisplayValue(
6265
6339
  event.target.value ? formatValueString3(parseDates2(event.target.value), displayFormat, locale) : ""
@@ -6268,7 +6342,7 @@ var MonthRangePicker = (0, import_react39.forwardRef)((inProps, ref) => {
6268
6342
  },
6269
6343
  [displayFormat, locale, setValue]
6270
6344
  );
6271
- const handleInputMouseDown = (0, import_react39.useCallback)(
6345
+ const handleInputMouseDown = (0, import_react40.useCallback)(
6272
6346
  (event) => {
6273
6347
  if (isAlphabeticDisplay) {
6274
6348
  event.preventDefault();
@@ -6277,14 +6351,14 @@ var MonthRangePicker = (0, import_react39.forwardRef)((inProps, ref) => {
6277
6351
  },
6278
6352
  [isAlphabeticDisplay, buttonRef]
6279
6353
  );
6280
- const handleCalendarToggle = (0, import_react39.useCallback)(
6354
+ const handleCalendarToggle = (0, import_react40.useCallback)(
6281
6355
  (event) => {
6282
6356
  setAnchorEl(anchorEl ? null : event.currentTarget);
6283
6357
  innerRef.current?.focus();
6284
6358
  },
6285
6359
  [anchorEl, setAnchorEl, innerRef]
6286
6360
  );
6287
- const handleCalendarChange = (0, import_react39.useCallback)(
6361
+ const handleCalendarChange = (0, import_react40.useCallback)(
6288
6362
  ([date1, date2]) => {
6289
6363
  if (!date1 || !date2) return;
6290
6364
  const formattedValue = formatValueString3([date1, date2], format);
@@ -6294,7 +6368,7 @@ var MonthRangePicker = (0, import_react39.forwardRef)((inProps, ref) => {
6294
6368
  },
6295
6369
  [setValue, setAnchorEl, format, displayFormat, locale]
6296
6370
  );
6297
- 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(
6298
6372
  Input_default,
6299
6373
  {
6300
6374
  ...innerProps,
@@ -6324,7 +6398,7 @@ var MonthRangePicker = (0, import_react39.forwardRef)((inProps, ref) => {
6324
6398
  // NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
6325
6399
  fontFamily: "monospace"
6326
6400
  },
6327
- endDecorator: /* @__PURE__ */ import_react39.default.createElement(
6401
+ endDecorator: /* @__PURE__ */ import_react40.default.createElement(
6328
6402
  IconButton_default,
6329
6403
  {
6330
6404
  ref: buttonRef,
@@ -6335,12 +6409,12 @@ var MonthRangePicker = (0, import_react39.forwardRef)((inProps, ref) => {
6335
6409
  "aria-haspopup": "dialog",
6336
6410
  "aria-expanded": open
6337
6411
  },
6338
- /* @__PURE__ */ import_react39.default.createElement(import_CalendarToday3.default, null)
6412
+ /* @__PURE__ */ import_react40.default.createElement(import_CalendarToday3.default, null)
6339
6413
  ),
6340
6414
  label,
6341
6415
  helperText
6342
6416
  }
6343
- ), 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(
6344
6418
  StyledPopper3,
6345
6419
  {
6346
6420
  id: "month-range-picker-popper",
@@ -6359,7 +6433,7 @@ var MonthRangePicker = (0, import_react39.forwardRef)((inProps, ref) => {
6359
6433
  "aria-label": "Calendar Tooltip",
6360
6434
  "aria-expanded": open
6361
6435
  },
6362
- /* @__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(
6363
6437
  Calendar_default,
6364
6438
  {
6365
6439
  view: "month",
@@ -6373,14 +6447,14 @@ var MonthRangePicker = (0, import_react39.forwardRef)((inProps, ref) => {
6373
6447
  disablePast,
6374
6448
  locale
6375
6449
  }
6376
- ), /* @__PURE__ */ import_react39.default.createElement(
6450
+ ), /* @__PURE__ */ import_react40.default.createElement(
6377
6451
  DialogActions_default,
6378
6452
  {
6379
6453
  sx: {
6380
6454
  p: 1
6381
6455
  }
6382
6456
  },
6383
- /* @__PURE__ */ import_react39.default.createElement(
6457
+ /* @__PURE__ */ import_react40.default.createElement(
6384
6458
  Button_default,
6385
6459
  {
6386
6460
  size,
@@ -6415,11 +6489,11 @@ function MonthRange(props) {
6415
6489
  locale
6416
6490
  } = props;
6417
6491
  const [internalValue, setInternalValue] = useControlledState(value, null, onChange);
6418
- const pickerValue = (0, import_react40.useMemo)(
6492
+ const pickerValue = (0, import_react41.useMemo)(
6419
6493
  () => internalValue ? `${internalValue[0]} - ${internalValue[1]}` : "",
6420
6494
  [internalValue]
6421
6495
  );
6422
- const handleChange = (0, import_react40.useCallback)(
6496
+ const handleChange = (0, import_react41.useCallback)(
6423
6497
  (event) => {
6424
6498
  const rangeString = event.target.value;
6425
6499
  if (rangeString && rangeString.includes(" - ")) {
@@ -6436,7 +6510,7 @@ function MonthRange(props) {
6436
6510
  if (hidden) {
6437
6511
  return null;
6438
6512
  }
6439
- 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(
6440
6514
  MonthRangePicker,
6441
6515
  {
6442
6516
  value: pickerValue,
@@ -6454,12 +6528,12 @@ function MonthRange(props) {
6454
6528
  MonthRange.displayName = "MonthRange";
6455
6529
 
6456
6530
  // src/components/FilterMenu/components/CurrencyInput.tsx
6457
- var import_react41 = __toESM(require("react"));
6531
+ var import_react42 = __toESM(require("react"));
6458
6532
  var import_joy52 = require("@mui/joy");
6459
6533
  function CurrencyInput3(props) {
6460
6534
  const { id, label, value, onChange, hidden, max, placeholder, useMinorUnit, currency = "USD" } = props;
6461
6535
  const [internalValue, setInternalValue] = useControlledState(value, value, onChange);
6462
- const handleCurrencyChange = (0, import_react41.useCallback)(
6536
+ const handleCurrencyChange = (0, import_react42.useCallback)(
6463
6537
  (event) => {
6464
6538
  const newValue = event.target.value ?? void 0;
6465
6539
  setInternalValue(newValue);
@@ -6469,7 +6543,7 @@ function CurrencyInput3(props) {
6469
6543
  if (hidden) {
6470
6544
  return null;
6471
6545
  }
6472
- 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(
6473
6547
  CurrencyInput,
6474
6548
  {
6475
6549
  value: internalValue,
@@ -6485,14 +6559,14 @@ function CurrencyInput3(props) {
6485
6559
  CurrencyInput3.displayName = "CurrencyInput";
6486
6560
 
6487
6561
  // src/components/FilterMenu/components/CurrencyRange.tsx
6488
- var import_react42 = __toESM(require("react"));
6562
+ var import_react43 = __toESM(require("react"));
6489
6563
  var import_joy53 = require("@mui/joy");
6490
6564
  function CurrencyRange(props) {
6491
6565
  const { id, label, value, onChange, hidden, max, placeholder, useMinorUnit, currency = "USD" } = props;
6492
6566
  const [internalValue, setInternalValue] = useControlledState(value, null, onChange);
6493
6567
  const minValue = internalValue?.[0];
6494
6568
  const maxValue = internalValue?.[1];
6495
- const handleMinChange = (0, import_react42.useCallback)(
6569
+ const handleMinChange = (0, import_react43.useCallback)(
6496
6570
  (event) => {
6497
6571
  const newMinValue = event.target.value ?? void 0;
6498
6572
  const currentMaxValue = maxValue;
@@ -6506,7 +6580,7 @@ function CurrencyRange(props) {
6506
6580
  },
6507
6581
  [maxValue, setInternalValue]
6508
6582
  );
6509
- const handleMaxChange = (0, import_react42.useCallback)(
6583
+ const handleMaxChange = (0, import_react43.useCallback)(
6510
6584
  (event) => {
6511
6585
  const newMaxValue = event.target.value ?? void 0;
6512
6586
  const currentMinValue = minValue;
@@ -6523,7 +6597,7 @@ function CurrencyRange(props) {
6523
6597
  if (hidden) {
6524
6598
  return null;
6525
6599
  }
6526
- 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(
6527
6601
  CurrencyInput,
6528
6602
  {
6529
6603
  label: "Minimum",
@@ -6536,7 +6610,7 @@ function CurrencyRange(props) {
6536
6610
  "aria-labelledby": label ? id : void 0,
6537
6611
  "aria-label": "Minimum amount"
6538
6612
  }
6539
- ), /* @__PURE__ */ import_react42.default.createElement(
6613
+ ), /* @__PURE__ */ import_react43.default.createElement(
6540
6614
  CurrencyInput,
6541
6615
  {
6542
6616
  label: "Maximum",
@@ -6554,20 +6628,20 @@ function CurrencyRange(props) {
6554
6628
  CurrencyRange.displayName = "CurrencyRange";
6555
6629
 
6556
6630
  // src/components/FilterMenu/components/PercentageInput.tsx
6557
- var import_react44 = __toESM(require("react"));
6631
+ var import_react45 = __toESM(require("react"));
6558
6632
  var import_joy55 = require("@mui/joy");
6559
6633
 
6560
6634
  // src/components/PercentageInput/PercentageInput.tsx
6561
- var import_react43 = __toESM(require("react"));
6635
+ var import_react44 = __toESM(require("react"));
6562
6636
  var import_react_number_format2 = require("react-number-format");
6563
6637
  var import_joy54 = require("@mui/joy");
6564
6638
  var padDecimal = (value, decimalScale) => {
6565
6639
  const [integer, decimal = ""] = `${value}`.split(".");
6566
6640
  return Number(`${integer}${decimal.padEnd(decimalScale, "0")}`);
6567
6641
  };
6568
- var TextMaskAdapter9 = import_react43.default.forwardRef(function TextMaskAdapter10(props, ref) {
6642
+ var TextMaskAdapter9 = import_react44.default.forwardRef(function TextMaskAdapter10(props, ref) {
6569
6643
  const { onChange, min, max, ...innerProps } = props;
6570
- return /* @__PURE__ */ import_react43.default.createElement(
6644
+ return /* @__PURE__ */ import_react44.default.createElement(
6571
6645
  import_react_number_format2.NumericFormat,
6572
6646
  {
6573
6647
  ...innerProps,
@@ -6592,7 +6666,7 @@ var PercentageInputRoot = (0, import_joy54.styled)(Input_default, {
6592
6666
  slot: "Root",
6593
6667
  overridesResolver: (props, styles) => styles.root
6594
6668
  })({});
6595
- var PercentageInput = import_react43.default.forwardRef(
6669
+ var PercentageInput = import_react44.default.forwardRef(
6596
6670
  function PercentageInput2(inProps, ref) {
6597
6671
  const props = (0, import_joy54.useThemeProps)({ props: inProps, name: "PercentageInput" });
6598
6672
  const {
@@ -6615,19 +6689,19 @@ var PercentageInput = import_react43.default.forwardRef(
6615
6689
  const [_value, setValue] = useControlledState(
6616
6690
  props.value,
6617
6691
  props.defaultValue ?? null,
6618
- (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])
6619
6693
  );
6620
- const value = (0, import_react43.useMemo)(() => {
6694
+ const value = (0, import_react44.useMemo)(() => {
6621
6695
  if (_value && useMinorUnit) {
6622
6696
  return _value / Math.pow(10, maxDecimalScale);
6623
6697
  }
6624
6698
  return _value;
6625
6699
  }, [_value, useMinorUnit, maxDecimalScale]);
6626
- const internalError = (0, import_react43.useMemo)(
6700
+ const internalError = (0, import_react44.useMemo)(
6627
6701
  () => value != null && (max != null && value > max || min != null && value < min),
6628
6702
  [max, min, value]
6629
6703
  );
6630
- const handleChange = (0, import_react43.useCallback)(
6704
+ const handleChange = (0, import_react44.useCallback)(
6631
6705
  (event) => {
6632
6706
  if (event.target.value === "") {
6633
6707
  setValue(null);
@@ -6639,7 +6713,7 @@ var PercentageInput = import_react43.default.forwardRef(
6639
6713
  },
6640
6714
  [setValue, useMinorUnit, maxDecimalScale]
6641
6715
  );
6642
- return /* @__PURE__ */ import_react43.default.createElement(
6716
+ return /* @__PURE__ */ import_react44.default.createElement(
6643
6717
  PercentageInputRoot,
6644
6718
  {
6645
6719
  ...innerProps,
@@ -6686,7 +6760,7 @@ var PercentageInput3 = ({
6686
6760
  if (hidden) {
6687
6761
  return null;
6688
6762
  }
6689
- 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(
6690
6764
  PercentageInput,
6691
6765
  {
6692
6766
  value: _value,
@@ -6701,7 +6775,7 @@ var PercentageInput3 = ({
6701
6775
  };
6702
6776
 
6703
6777
  // src/components/FilterMenu/components/PercentageRange.tsx
6704
- var import_react45 = __toESM(require("react"));
6778
+ var import_react46 = __toESM(require("react"));
6705
6779
  var import_joy56 = require("@mui/joy");
6706
6780
  function PercentageRange(props) {
6707
6781
  const { id, label, value, onChange, hidden, useMinorUnit, maxDecimalScale, min, max } = props;
@@ -6712,7 +6786,7 @@ function PercentageRange(props) {
6712
6786
  );
6713
6787
  const minValue = internalValue?.[0];
6714
6788
  const maxValue = internalValue?.[1];
6715
- const handleMinChange = (0, import_react45.useCallback)(
6789
+ const handleMinChange = (0, import_react46.useCallback)(
6716
6790
  (event) => {
6717
6791
  const newMinValue = event.target.value ?? void 0;
6718
6792
  const currentMaxValue = maxValue;
@@ -6724,7 +6798,7 @@ function PercentageRange(props) {
6724
6798
  },
6725
6799
  [maxValue, setInternalValue]
6726
6800
  );
6727
- const handleMaxChange = (0, import_react45.useCallback)(
6801
+ const handleMaxChange = (0, import_react46.useCallback)(
6728
6802
  (event) => {
6729
6803
  const newMaxValue = event.target.value ?? void 0;
6730
6804
  const currentMinValue = minValue;
@@ -6739,7 +6813,7 @@ function PercentageRange(props) {
6739
6813
  if (hidden) {
6740
6814
  return null;
6741
6815
  }
6742
- 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(
6743
6817
  PercentageInput,
6744
6818
  {
6745
6819
  label: "Minimum",
@@ -6753,7 +6827,7 @@ function PercentageRange(props) {
6753
6827
  "aria-label": "Minimum percentage",
6754
6828
  placeholder: "0%"
6755
6829
  }
6756
- ), /* @__PURE__ */ import_react45.default.createElement(
6830
+ ), /* @__PURE__ */ import_react46.default.createElement(
6757
6831
  PercentageInput,
6758
6832
  {
6759
6833
  label: "Maximum",
@@ -6772,13 +6846,13 @@ function PercentageRange(props) {
6772
6846
  PercentageRange.displayName = "PercentageRange";
6773
6847
 
6774
6848
  // src/components/FilterMenu/components/Autocomplete.tsx
6775
- var import_react46 = __toESM(require("react"));
6849
+ var import_react47 = __toESM(require("react"));
6776
6850
  var import_joy57 = require("@mui/joy");
6777
6851
  function Autocomplete2(props) {
6778
6852
  const { id, label, value, onChange, options, multiple, hidden, placeholder } = props;
6779
6853
  const [internalValue, setInternalValue] = useControlledState(value, void 0, onChange);
6780
6854
  const autocompleteValue = typeof internalValue === "string" || typeof internalValue === "number" ? String(internalValue) : void 0;
6781
- const handleChange = (0, import_react46.useCallback)(
6855
+ const handleChange = (0, import_react47.useCallback)(
6782
6856
  (event) => {
6783
6857
  const val = event.target.value ?? void 0;
6784
6858
  if (val) {
@@ -6793,7 +6867,7 @@ function Autocomplete2(props) {
6793
6867
  if (hidden) {
6794
6868
  return null;
6795
6869
  }
6796
- 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(
6797
6871
  Autocomplete,
6798
6872
  {
6799
6873
  value: autocompleteValue,
@@ -6828,13 +6902,13 @@ function FilterMenu(props) {
6828
6902
  void 0
6829
6903
  // onChange는 Apply 버튼에서만 호출
6830
6904
  );
6831
- const dropdownRegistry = (0, import_react47.useContext)(DropdownNestedRegistryContext);
6832
- (0, import_react47.useEffect)(() => {
6905
+ const dropdownRegistry = (0, import_react48.useContext)(DropdownNestedRegistryContext);
6906
+ (0, import_react48.useEffect)(() => {
6833
6907
  if (!dropdownRegistry) return void 0;
6834
6908
  dropdownRegistry.register();
6835
6909
  return () => dropdownRegistry.unregister();
6836
6910
  }, [dropdownRegistry]);
6837
- const handleFilterChange = (0, import_react47.useCallback)(
6911
+ const handleFilterChange = (0, import_react48.useCallback)(
6838
6912
  (filterId, value) => {
6839
6913
  setInternalValues((prev) => ({
6840
6914
  ...prev,
@@ -6843,17 +6917,17 @@ function FilterMenu(props) {
6843
6917
  },
6844
6918
  [setInternalValues]
6845
6919
  );
6846
- const handleApply = (0, import_react47.useCallback)(() => {
6920
+ const handleApply = (0, import_react48.useCallback)(() => {
6847
6921
  onChange?.(internalValues);
6848
6922
  onClose?.();
6849
6923
  }, [onChange, onClose, internalValues]);
6850
- const handleClear = (0, import_react47.useCallback)(() => {
6924
+ const handleClear = (0, import_react48.useCallback)(() => {
6851
6925
  const clearedValues = resetValues || {};
6852
6926
  setInternalValues(clearedValues);
6853
6927
  onChange?.(clearedValues);
6854
6928
  onClose?.();
6855
6929
  }, [resetValues, setInternalValues, onChange, onClose]);
6856
- return /* @__PURE__ */ import_react47.default.createElement(
6930
+ return /* @__PURE__ */ import_react48.default.createElement(
6857
6931
  ModalDialog,
6858
6932
  {
6859
6933
  sx: {
@@ -6863,9 +6937,9 @@ function FilterMenu(props) {
6863
6937
  top: "initial"
6864
6938
  }
6865
6939
  },
6866
- /* @__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) => {
6867
6941
  const FilterComponent = componentMap[filter.type];
6868
- return FilterComponent ? /* @__PURE__ */ import_react47.default.createElement(
6942
+ return FilterComponent ? /* @__PURE__ */ import_react48.default.createElement(
6869
6943
  FilterComponent,
6870
6944
  {
6871
6945
  key: filter.id,
@@ -6877,13 +6951,13 @@ function FilterMenu(props) {
6877
6951
  }
6878
6952
  ) : null;
6879
6953
  }))),
6880
- /* @__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"))
6881
6955
  );
6882
6956
  }
6883
6957
  FilterMenu.displayName = "FilterMenu";
6884
6958
 
6885
6959
  // src/components/Uploader/Uploader.tsx
6886
- var import_react48 = __toESM(require("react"));
6960
+ var import_react49 = __toESM(require("react"));
6887
6961
  var import_joy59 = require("@mui/joy");
6888
6962
  var import_CloudUploadRounded = __toESM(require("@mui/icons-material/CloudUploadRounded"));
6889
6963
  var import_UploadFileRounded = __toESM(require("@mui/icons-material/UploadFileRounded"));
@@ -6946,7 +7020,7 @@ var getFileSize = (n) => {
6946
7020
  };
6947
7021
  var Preview = (props) => {
6948
7022
  const { files, uploaded, onDelete } = props;
6949
- 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(
6950
7024
  Typography_default,
6951
7025
  {
6952
7026
  level: "body-sm",
@@ -6958,7 +7032,7 @@ var Preview = (props) => {
6958
7032
  }
6959
7033
  },
6960
7034
  file.name
6961
- ), !!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))))));
6962
7036
  };
6963
7037
  var UploaderRoot = (0, import_joy59.styled)(Stack_default, {
6964
7038
  name: "Uploader",
@@ -7001,7 +7075,7 @@ var UploaderIcon = (0, import_joy59.styled)(import_CloudUploadRounded.default, {
7001
7075
  }
7002
7076
  })
7003
7077
  );
7004
- var Uploader = import_react48.default.memo((props) => {
7078
+ var Uploader = import_react49.default.memo((props) => {
7005
7079
  const {
7006
7080
  accept,
7007
7081
  minCount,
@@ -7017,14 +7091,14 @@ var Uploader = import_react48.default.memo((props) => {
7017
7091
  error: errorProp,
7018
7092
  helperText: helperTextProp
7019
7093
  } = props;
7020
- const dropZoneRef = (0, import_react48.useRef)(null);
7021
- const inputRef = (0, import_react48.useRef)(null);
7022
- const [errorText, setErrorText] = (0, import_react48.useState)();
7023
- const [files, setFiles] = (0, import_react48.useState)([]);
7024
- const [uploaded, setUploaded] = (0, import_react48.useState)(props.uploaded || []);
7025
- const [previewState, setPreviewState] = (0, import_react48.useState)("idle");
7026
- const accepts = (0, import_react48.useMemo)(() => accept.split(",").map((accept2) => accept2.trim()), [accept]);
7027
- 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)(
7028
7102
  () => accepts.flatMap((type) => {
7029
7103
  if (["image/*", "video/*", "audio/*"].includes(type)) {
7030
7104
  return ALL_EXTENSIONS_BY_TYPE[type];
@@ -7033,7 +7107,7 @@ var Uploader = import_react48.default.memo((props) => {
7033
7107
  }),
7034
7108
  [accepts]
7035
7109
  );
7036
- const helperText = (0, import_react48.useMemo)(() => {
7110
+ const helperText = (0, import_react49.useMemo)(() => {
7037
7111
  if (helperTextProp) {
7038
7112
  return helperTextProp;
7039
7113
  }
@@ -7063,12 +7137,12 @@ var Uploader = import_react48.default.memo((props) => {
7063
7137
  }
7064
7138
  return helperTexts.join(", ");
7065
7139
  }, [accepts, maxFileTotalSize, maxCount, helperTextProp]);
7066
- const error = (0, import_react48.useMemo)(() => !!errorText || errorProp, [errorProp, errorText]);
7067
- const showDropZone = (0, import_react48.useMemo)(
7140
+ const error = (0, import_react49.useMemo)(() => !!errorText || errorProp, [errorProp, errorText]);
7141
+ const showDropZone = (0, import_react49.useMemo)(
7068
7142
  () => !maxCount || maxCount && [...uploaded, ...files].length !== maxCount,
7069
7143
  [files, maxCount, uploaded]
7070
7144
  );
7071
- const addFiles = (0, import_react48.useCallback)(
7145
+ const addFiles = (0, import_react49.useCallback)(
7072
7146
  (uploads) => {
7073
7147
  try {
7074
7148
  const types = parsedAccepts.map((type) => type.replace(".", "")) || [];
@@ -7113,7 +7187,7 @@ var Uploader = import_react48.default.memo((props) => {
7113
7187
  },
7114
7188
  [files, uploaded, maxCount, parsedAccepts, maxFileSize, maxFileTotalSize, name, onChange]
7115
7189
  );
7116
- (0, import_react48.useEffect)(() => {
7190
+ (0, import_react49.useEffect)(() => {
7117
7191
  if (!dropZoneRef.current || disabled) {
7118
7192
  return;
7119
7193
  }
@@ -7141,7 +7215,7 @@ var Uploader = import_react48.default.memo((props) => {
7141
7215
  })
7142
7216
  );
7143
7217
  }, [disabled, addFiles]);
7144
- (0, import_react48.useEffect)(() => {
7218
+ (0, import_react49.useEffect)(() => {
7145
7219
  if (inputRef.current && minCount) {
7146
7220
  if (files.length < minCount) {
7147
7221
  inputRef.current.setCustomValidity(`At least ${minCount} files are required.`);
@@ -7150,14 +7224,14 @@ var Uploader = import_react48.default.memo((props) => {
7150
7224
  }
7151
7225
  }
7152
7226
  }, [inputRef, files, minCount]);
7153
- const handleFileChanged = (0, import_react48.useCallback)(
7227
+ const handleFileChanged = (0, import_react49.useCallback)(
7154
7228
  (event) => {
7155
7229
  const files2 = Array.from(event.target.files || []);
7156
7230
  addFiles(files2);
7157
7231
  },
7158
7232
  [addFiles]
7159
7233
  );
7160
- const handleDeleteFile = (0, import_react48.useCallback)(
7234
+ const handleDeleteFile = (0, import_react49.useCallback)(
7161
7235
  (deletedFile) => {
7162
7236
  if (deletedFile instanceof File) {
7163
7237
  setFiles((current) => {
@@ -7177,10 +7251,10 @@ var Uploader = import_react48.default.memo((props) => {
7177
7251
  },
7178
7252
  [name, onChange, onDelete]
7179
7253
  );
7180
- const handleUploaderButtonClick = (0, import_react48.useCallback)(() => {
7254
+ const handleUploaderButtonClick = (0, import_react49.useCallback)(() => {
7181
7255
  inputRef.current?.click();
7182
7256
  }, []);
7183
- const uploader = /* @__PURE__ */ import_react48.default.createElement(
7257
+ const uploader = /* @__PURE__ */ import_react49.default.createElement(
7184
7258
  FileDropZone,
7185
7259
  {
7186
7260
  state: previewState,
@@ -7189,8 +7263,8 @@ var Uploader = import_react48.default.memo((props) => {
7189
7263
  ref: dropZoneRef,
7190
7264
  onClick: handleUploaderButtonClick
7191
7265
  },
7192
- /* @__PURE__ */ import_react48.default.createElement(Stack_default, { alignItems: "center", gap: 1 }, /* @__PURE__ */ import_react48.default.createElement(UploaderIcon, { state: previewState, error: !!(error || errorText), disabled })),
7193
- /* @__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(
7194
7268
  VisuallyHiddenInput,
7195
7269
  {
7196
7270
  disabled,
@@ -7213,7 +7287,7 @@ var Uploader = import_react48.default.memo((props) => {
7213
7287
  }
7214
7288
  )
7215
7289
  );
7216
- 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 }));
7217
7291
  });
7218
7292
  Uploader.displayName = "Uploader";
7219
7293
 
@@ -7221,9 +7295,12 @@ Uploader.displayName = "Uploader";
7221
7295
  var import_joy60 = require("@mui/joy");
7222
7296
 
7223
7297
  // src/components/IconMenuButton/IconMenuButton.tsx
7224
- var import_react49 = __toESM(require("react"));
7298
+ var import_react50 = __toESM(require("react"));
7225
7299
  var import_joy61 = require("@mui/joy");
7226
- 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) {
7227
7304
  const {
7228
7305
  size,
7229
7306
  icon,
@@ -7234,8 +7311,10 @@ function IconMenuButton(props) {
7234
7311
  variant = "plain",
7235
7312
  placement = "bottom"
7236
7313
  } = props;
7314
+ const { ref: buttonComponentRef, ...buttonComponentProps } = props.buttonComponentProps ?? {};
7315
+ const mergedButtonRef = useMergedRef(buttonComponentRef, ref);
7237
7316
  if (!items.length) {
7238
- return /* @__PURE__ */ import_react49.default.createElement(
7317
+ return /* @__PURE__ */ import_react50.default.createElement(
7239
7318
  import_joy61.IconButton,
7240
7319
  {
7241
7320
  component: props.buttonComponent ?? "button",
@@ -7244,15 +7323,16 @@ function IconMenuButton(props) {
7244
7323
  color,
7245
7324
  disabled,
7246
7325
  loading,
7247
- ...props.buttonComponentProps ?? {}
7326
+ ...buttonComponentProps,
7327
+ ref: mergedButtonRef
7248
7328
  },
7249
7329
  icon
7250
7330
  );
7251
7331
  }
7252
- 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(
7253
7333
  import_joy61.MenuButton,
7254
7334
  {
7255
- slots: { root: import_joy61.IconButton },
7335
+ slots: { root: MenuButtonRootSlot },
7256
7336
  slotProps: {
7257
7337
  root: {
7258
7338
  component: props.buttonComponent ?? "button",
@@ -7261,24 +7341,27 @@ function IconMenuButton(props) {
7261
7341
  color,
7262
7342
  disabled,
7263
7343
  loading,
7264
- ...props.buttonComponentProps ?? {}
7344
+ ...buttonComponentProps,
7345
+ // Joy의 useSlot이 내부 ref와 이 ref를 합쳐준다. 위 no-items 분기와 같은 경로로 ref를 넘긴다.
7346
+ ref: mergedButtonRef
7265
7347
  }
7266
7348
  }
7267
7349
  },
7268
7350
  icon
7269
- ), /* @__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))));
7270
7352
  }
7353
+ var IconMenuButton = import_react50.default.forwardRef(IconMenuButtonInner);
7271
7354
  IconMenuButton.displayName = "IconMenuButton";
7272
7355
 
7273
7356
  // src/components/Markdown/Markdown.tsx
7274
- var import_react50 = __toESM(require("react"));
7357
+ var import_react51 = __toESM(require("react"));
7275
7358
  var import_joy62 = require("@mui/joy");
7276
7359
  var import_joy63 = require("@mui/joy");
7277
7360
  var import_remark_gfm = __toESM(require("remark-gfm"));
7278
- var LazyReactMarkdown = (0, import_react50.lazy)(() => import("react-markdown"));
7361
+ var LazyReactMarkdown = (0, import_react51.lazy)(() => import("react-markdown"));
7279
7362
  var Markdown = (props) => {
7280
- const [rehypeAccent2, setRehypeAccent] = (0, import_react50.useState)(null);
7281
- (0, import_react50.useEffect)(() => {
7363
+ const [rehypeAccent2, setRehypeAccent] = (0, import_react51.useState)(null);
7364
+ (0, import_react51.useEffect)(() => {
7282
7365
  const loadRehypeAccent = async () => {
7283
7366
  const module2 = await Promise.resolve().then(() => (init_rehype_accent(), rehype_accent_exports));
7284
7367
  setRehypeAccent(() => module2.rehypeAccent);
@@ -7300,8 +7383,8 @@ var Markdown = (props) => {
7300
7383
  if (!rehypeAccent2) {
7301
7384
  return null;
7302
7385
  }
7303
- return /* @__PURE__ */ import_react50.default.createElement(Typography, { component: "div", color, textColor, level: defaultLevel, ...innerProps }, /* @__PURE__ */ import_react50.default.createElement(
7304
- 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,
7305
7388
  {
7306
7389
  fallback: (
7307
7390
  // While in the fallback state, prevent browser auto-translation (e.g. Chrome/Google Translate)
@@ -7309,10 +7392,10 @@ var Markdown = (props) => {
7309
7392
  // swaps the fallback for the real content via insertBefore; if the browser has mutated the DOM
7310
7393
  // in the meantime, the reference node's parent changes and React throws a DOMException
7311
7394
  // ("Failed to execute 'insertBefore' on 'Node'"), crashing the subtree. (cf. facebook/react#11538)
7312
- 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 || ""))
7313
7396
  )
7314
7397
  },
7315
- /* @__PURE__ */ import_react50.default.createElement(
7398
+ /* @__PURE__ */ import_react51.default.createElement(
7316
7399
  LazyReactMarkdown,
7317
7400
  {
7318
7401
  ...markdownOptions,
@@ -7320,17 +7403,17 @@ var Markdown = (props) => {
7320
7403
  rehypePlugins: [[rehypeAccent2, { accentColor }]],
7321
7404
  remarkPlugins: [import_remark_gfm.default],
7322
7405
  components: {
7323
- a: ({ children, href }) => /* @__PURE__ */ import_react50.default.createElement(import_joy63.Link, { href, target: defaultLinkAction }, children),
7324
- hr: () => /* @__PURE__ */ import_react50.default.createElement(Divider, { sx: { display: "block" } }),
7325
- b: ({ children }) => /* @__PURE__ */ import_react50.default.createElement(Typography, { component: "strong", fontWeight: boldFontWeight || "lg" }, children),
7326
- 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),
7327
7410
  // Table components
7328
- 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)),
7329
7412
  // Code components
7330
7413
  code: ({ children, className }) => {
7331
7414
  const isBlock = className?.startsWith("language-");
7332
7415
  if (isBlock) {
7333
- return /* @__PURE__ */ import_react50.default.createElement(
7416
+ return /* @__PURE__ */ import_react51.default.createElement(
7334
7417
  Typography,
7335
7418
  {
7336
7419
  component: "code",
@@ -7344,7 +7427,7 @@ var Markdown = (props) => {
7344
7427
  children
7345
7428
  );
7346
7429
  }
7347
- return /* @__PURE__ */ import_react50.default.createElement(
7430
+ return /* @__PURE__ */ import_react51.default.createElement(
7348
7431
  Typography,
7349
7432
  {
7350
7433
  component: "code",
@@ -7359,7 +7442,7 @@ var Markdown = (props) => {
7359
7442
  children
7360
7443
  );
7361
7444
  },
7362
- pre: ({ children }) => /* @__PURE__ */ import_react50.default.createElement(
7445
+ pre: ({ children }) => /* @__PURE__ */ import_react51.default.createElement(
7363
7446
  Sheet,
7364
7447
  {
7365
7448
  variant: "soft",
@@ -7377,12 +7460,12 @@ var Markdown = (props) => {
7377
7460
  // Task list checkbox
7378
7461
  input: ({ checked, type }) => {
7379
7462
  if (type === "checkbox") {
7380
- 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 } });
7381
7464
  }
7382
- return /* @__PURE__ */ import_react50.default.createElement("input", { checked, type });
7465
+ return /* @__PURE__ */ import_react51.default.createElement("input", { checked, type });
7383
7466
  },
7384
7467
  // Blockquote
7385
- blockquote: ({ children }) => /* @__PURE__ */ import_react50.default.createElement(
7468
+ blockquote: ({ children }) => /* @__PURE__ */ import_react51.default.createElement(
7386
7469
  Sheet,
7387
7470
  {
7388
7471
  variant: "soft",
@@ -7391,12 +7474,12 @@ var Markdown = (props) => {
7391
7474
  children
7392
7475
  ),
7393
7476
  // Image
7394
- 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" } }),
7395
7478
  // Text style components
7396
- em: ({ children }) => /* @__PURE__ */ import_react50.default.createElement(Typography, { component: "em", sx: { fontStyle: "italic" } }, children),
7397
- 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),
7398
7481
  // Span for accent color (from rehype-accent plugin)
7399
- 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),
7400
7483
  ...markdownOptions?.components
7401
7484
  }
7402
7485
  }
@@ -7406,7 +7489,7 @@ var Markdown = (props) => {
7406
7489
  Markdown.displayName = "Markdown";
7407
7490
 
7408
7491
  // src/components/MenuButton/MenuButton.tsx
7409
- var import_react51 = __toESM(require("react"));
7492
+ var import_react52 = __toESM(require("react"));
7410
7493
  var import_joy64 = require("@mui/joy");
7411
7494
  var import_ExpandMore = __toESM(require("@mui/icons-material/ExpandMore"));
7412
7495
  function MenuButton2(props) {
@@ -7424,7 +7507,7 @@ function MenuButton2(props) {
7424
7507
  placement = "bottom"
7425
7508
  } = props;
7426
7509
  if (!items.length) {
7427
- return /* @__PURE__ */ import_react51.default.createElement(
7510
+ return /* @__PURE__ */ import_react52.default.createElement(
7428
7511
  import_joy64.Button,
7429
7512
  {
7430
7513
  component: props.buttonComponent ?? "button",
@@ -7435,12 +7518,12 @@ function MenuButton2(props) {
7435
7518
  loading,
7436
7519
  startDecorator,
7437
7520
  ...props.buttonComponentProps ?? {},
7438
- 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)
7439
7522
  },
7440
7523
  buttonText
7441
7524
  );
7442
7525
  }
7443
- 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(
7444
7527
  import_joy64.MenuButton,
7445
7528
  {
7446
7529
  component: props.buttonComponent ?? "button",
@@ -7451,15 +7534,15 @@ function MenuButton2(props) {
7451
7534
  loading,
7452
7535
  startDecorator,
7453
7536
  ...props.buttonComponentProps ?? {},
7454
- 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)
7455
7538
  },
7456
7539
  buttonText
7457
- ), /* @__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))));
7458
7541
  }
7459
7542
  MenuButton2.displayName = "MenuButton";
7460
7543
 
7461
7544
  // src/components/MonthPicker/MonthPicker.tsx
7462
- var import_react52 = __toESM(require("react"));
7545
+ var import_react53 = __toESM(require("react"));
7463
7546
  var import_CalendarToday4 = __toESM(require("@mui/icons-material/CalendarToday"));
7464
7547
  var import_joy65 = require("@mui/joy");
7465
7548
  var import_base6 = require("@mui/base");
@@ -7515,7 +7598,7 @@ function parseDate4(dateString, format) {
7515
7598
  const result = new Date(year, month, day);
7516
7599
  return result;
7517
7600
  }
7518
- var MonthPicker = (0, import_react52.forwardRef)((inProps, ref) => {
7601
+ var MonthPicker = (0, import_react53.forwardRef)((inProps, ref) => {
7519
7602
  const props = (0, import_joy65.useThemeProps)({ props: inProps, name: "MonthPicker" });
7520
7603
  const {
7521
7604
  onChange,
@@ -7542,18 +7625,18 @@ var MonthPicker = (0, import_react52.forwardRef)((inProps, ref) => {
7542
7625
  locale,
7543
7626
  ...innerProps
7544
7627
  } = props;
7545
- const innerRef = (0, import_react52.useRef)(null);
7546
- const buttonRef = (0, import_react52.useRef)(null);
7628
+ const innerRef = (0, import_react53.useRef)(null);
7629
+ const buttonRef = (0, import_react53.useRef)(null);
7547
7630
  const [rawValue, setValue, isControlled] = useControlledState(
7548
7631
  props.value,
7549
7632
  props.defaultValue ?? null,
7550
- (0, import_react52.useCallback)(
7633
+ (0, import_react53.useCallback)(
7551
7634
  (value2) => onChange?.({ target: { name: props.name, value: value2 ?? "" } }),
7552
7635
  [props.name, onChange]
7553
7636
  )
7554
7637
  );
7555
7638
  const value = rawValue ?? "";
7556
- const getFormattedDisplayValue = (0, import_react52.useCallback)(
7639
+ const getFormattedDisplayValue = (0, import_react53.useCallback)(
7557
7640
  (inputValue) => {
7558
7641
  if (!inputValue) return "";
7559
7642
  try {
@@ -7564,19 +7647,19 @@ var MonthPicker = (0, import_react52.forwardRef)((inProps, ref) => {
7564
7647
  },
7565
7648
  [format, displayFormat, locale]
7566
7649
  );
7567
- const [displayValue, setDisplayValue] = (0, import_react52.useState)(() => getFormattedDisplayValue(value));
7568
- 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);
7569
7652
  const open = Boolean(anchorEl);
7570
- (0, import_react52.useEffect)(() => {
7653
+ (0, import_react53.useEffect)(() => {
7571
7654
  if (!anchorEl) {
7572
7655
  innerRef.current?.blur();
7573
7656
  }
7574
7657
  }, [anchorEl, innerRef]);
7575
- (0, import_react52.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
7576
- (0, import_react52.useEffect)(() => {
7658
+ (0, import_react53.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
7659
+ (0, import_react53.useEffect)(() => {
7577
7660
  setDisplayValue(getFormattedDisplayValue(value));
7578
7661
  }, [value, getFormattedDisplayValue]);
7579
- const handleChange = (0, import_react52.useCallback)(
7662
+ const handleChange = (0, import_react53.useCallback)(
7580
7663
  (event) => {
7581
7664
  const newValue = event.target.value;
7582
7665
  setValue(newValue);
@@ -7586,21 +7669,21 @@ var MonthPicker = (0, import_react52.forwardRef)((inProps, ref) => {
7586
7669
  },
7587
7670
  [setValue, getFormattedDisplayValue, isControlled]
7588
7671
  );
7589
- const handleCalendarToggle = (0, import_react52.useCallback)(
7672
+ const handleCalendarToggle = (0, import_react53.useCallback)(
7590
7673
  (event) => {
7591
7674
  setAnchorEl(anchorEl ? null : event.currentTarget);
7592
7675
  innerRef.current?.focus();
7593
7676
  },
7594
7677
  [anchorEl, setAnchorEl, innerRef]
7595
7678
  );
7596
- const handleInputMouseDown = (0, import_react52.useCallback)(
7679
+ const handleInputMouseDown = (0, import_react53.useCallback)(
7597
7680
  (event) => {
7598
7681
  event.preventDefault();
7599
7682
  buttonRef.current?.focus();
7600
7683
  },
7601
7684
  [buttonRef]
7602
7685
  );
7603
- 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(
7604
7687
  Input_default,
7605
7688
  {
7606
7689
  ...innerProps,
@@ -7630,7 +7713,7 @@ var MonthPicker = (0, import_react52.forwardRef)((inProps, ref) => {
7630
7713
  // NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
7631
7714
  fontFamily: "monospace"
7632
7715
  },
7633
- endDecorator: /* @__PURE__ */ import_react52.default.createElement(
7716
+ endDecorator: /* @__PURE__ */ import_react53.default.createElement(
7634
7717
  IconButton_default,
7635
7718
  {
7636
7719
  ref: buttonRef,
@@ -7642,12 +7725,12 @@ var MonthPicker = (0, import_react52.forwardRef)((inProps, ref) => {
7642
7725
  "aria-expanded": open,
7643
7726
  disabled
7644
7727
  },
7645
- /* @__PURE__ */ import_react52.default.createElement(import_CalendarToday4.default, null)
7728
+ /* @__PURE__ */ import_react53.default.createElement(import_CalendarToday4.default, null)
7646
7729
  ),
7647
7730
  label,
7648
7731
  helperText
7649
7732
  }
7650
- ), 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(
7651
7734
  StyledPopper4,
7652
7735
  {
7653
7736
  id: "month-picker-popper",
@@ -7666,7 +7749,7 @@ var MonthPicker = (0, import_react52.forwardRef)((inProps, ref) => {
7666
7749
  "aria-label": "Calendar Tooltip",
7667
7750
  "aria-expanded": open
7668
7751
  },
7669
- /* @__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(
7670
7753
  Calendar_default,
7671
7754
  {
7672
7755
  view: "month",
@@ -7687,14 +7770,14 @@ var MonthPicker = (0, import_react52.forwardRef)((inProps, ref) => {
7687
7770
  disablePast,
7688
7771
  locale
7689
7772
  }
7690
- ), /* @__PURE__ */ import_react52.default.createElement(
7773
+ ), /* @__PURE__ */ import_react53.default.createElement(
7691
7774
  DialogActions_default,
7692
7775
  {
7693
7776
  sx: {
7694
7777
  p: 1
7695
7778
  }
7696
7779
  },
7697
- /* @__PURE__ */ import_react52.default.createElement(
7780
+ /* @__PURE__ */ import_react53.default.createElement(
7698
7781
  Button_default,
7699
7782
  {
7700
7783
  size,
@@ -7717,7 +7800,7 @@ var MonthPicker = (0, import_react52.forwardRef)((inProps, ref) => {
7717
7800
  });
7718
7801
 
7719
7802
  // src/components/NavigationGroup/NavigationGroup.tsx
7720
- var import_react53 = __toESM(require("react"));
7803
+ var import_react54 = __toESM(require("react"));
7721
7804
  var import_joy66 = require("@mui/joy");
7722
7805
  var AccordionSummary2 = (0, import_joy66.styled)(import_joy66.AccordionSummary, {
7723
7806
  name: "NavigationGroup",
@@ -7741,11 +7824,11 @@ var AccordionDetails2 = (0, import_joy66.styled)(import_joy66.AccordionDetails,
7741
7824
  }));
7742
7825
  function NavigationGroup(props) {
7743
7826
  const { title, children, startDecorator, level, ...rest } = props;
7744
- 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));
7745
7828
  }
7746
7829
 
7747
7830
  // src/components/NavigationItem/NavigationItem.tsx
7748
- var import_react54 = __toESM(require("react"));
7831
+ var import_react55 = __toESM(require("react"));
7749
7832
  var import_joy67 = require("@mui/joy");
7750
7833
  var ListItemButton = (0, import_joy67.styled)(import_joy67.ListItemButton, {
7751
7834
  name: "NavigationItem",
@@ -7774,7 +7857,7 @@ function NavigationItem(props) {
7774
7857
  const handleClick = () => {
7775
7858
  onClick?.(id);
7776
7859
  };
7777
- 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(
7778
7861
  ListItemButton,
7779
7862
  {
7780
7863
  level,
@@ -7783,21 +7866,21 @@ function NavigationItem(props) {
7783
7866
  "aria-current": selected,
7784
7867
  onClick: handleClick
7785
7868
  },
7786
- startDecorator && /* @__PURE__ */ import_react54.default.createElement(import_joy67.ListItemDecorator, null, startDecorator),
7869
+ startDecorator && /* @__PURE__ */ import_react55.default.createElement(import_joy67.ListItemDecorator, null, startDecorator),
7787
7870
  children
7788
7871
  ));
7789
7872
  }
7790
7873
 
7791
7874
  // src/components/Navigator/Navigator.tsx
7792
- var import_react55 = __toESM(require("react"));
7875
+ var import_react56 = __toESM(require("react"));
7793
7876
  function Navigator(props) {
7794
7877
  const { items, level = 0, onSelect } = props;
7795
7878
  const handleItemClick = (id) => {
7796
7879
  onSelect?.(id);
7797
7880
  };
7798
- 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) => {
7799
7882
  if (item.type === "item") {
7800
- return /* @__PURE__ */ import_react55.default.createElement(
7883
+ return /* @__PURE__ */ import_react56.default.createElement(
7801
7884
  NavigationItem,
7802
7885
  {
7803
7886
  key: item.id,
@@ -7810,7 +7893,7 @@ function Navigator(props) {
7810
7893
  item.title
7811
7894
  );
7812
7895
  } else if (item.type === "group") {
7813
- return /* @__PURE__ */ import_react55.default.createElement(
7896
+ return /* @__PURE__ */ import_react56.default.createElement(
7814
7897
  NavigationGroup,
7815
7898
  {
7816
7899
  key: `${item.title}-${index}`,
@@ -7828,7 +7911,7 @@ function Navigator(props) {
7828
7911
  Navigator.displayName = "Navigator";
7829
7912
 
7830
7913
  // src/components/ProfileMenu/ProfileMenu.tsx
7831
- var import_react56 = __toESM(require("react"));
7914
+ var import_react57 = __toESM(require("react"));
7832
7915
  var import_joy68 = require("@mui/joy");
7833
7916
  var import_base7 = require("@mui/base");
7834
7917
  var import_ArrowDropDown = __toESM(require("@mui/icons-material/ArrowDropDown"));
@@ -7838,9 +7921,9 @@ var StyledProfileCard = (0, import_joy68.styled)(import_joy3.Stack, {
7838
7921
  })({});
7839
7922
  function ProfileCard(props) {
7840
7923
  const { children, chip, caption, size } = props;
7841
- const captionLevel = (0, import_react56.useMemo)(() => size === "sm" ? "body-xs" : "body-sm", [size]);
7842
- const nameLevel = (0, import_react56.useMemo)(() => size === "sm" ? "body-sm" : "body-md", [size]);
7843
- 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));
7844
7927
  }
7845
7928
  ProfileCard.displayName = "ProfileCard";
7846
7929
  var StyledProfileMenuButton = (0, import_joy68.styled)(import_joy68.MenuButton, {
@@ -7852,16 +7935,16 @@ var StyledProfileMenuButton = (0, import_joy68.styled)(import_joy68.MenuButton,
7852
7935
  }));
7853
7936
  function ProfileMenuButton(props) {
7854
7937
  const { size = "sm", src, alt, children, getInitial, ...innerProps } = props;
7855
- return /* @__PURE__ */ import_react56.default.createElement(
7938
+ return /* @__PURE__ */ import_react57.default.createElement(
7856
7939
  StyledProfileMenuButton,
7857
7940
  {
7858
7941
  variant: "plain",
7859
7942
  color: "neutral",
7860
7943
  size,
7861
- endDecorator: /* @__PURE__ */ import_react56.default.createElement(import_ArrowDropDown.default, null),
7944
+ endDecorator: /* @__PURE__ */ import_react57.default.createElement(import_ArrowDropDown.default, null),
7862
7945
  ...innerProps
7863
7946
  },
7864
- /* @__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)
7865
7948
  );
7866
7949
  }
7867
7950
  ProfileMenuButton.displayName = "ProfileMenuButton";
@@ -7881,9 +7964,9 @@ function ProfileMenu(inProps) {
7881
7964
  const [open, setOpen] = useControlledState(
7882
7965
  _open,
7883
7966
  defaultOpen ?? false,
7884
- (0, import_react56.useCallback)((value) => onOpenChange?.(value), [onOpenChange])
7967
+ (0, import_react57.useCallback)((value) => onOpenChange?.(value), [onOpenChange])
7885
7968
  );
7886
- 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(
7887
7970
  ProfileMenuButton,
7888
7971
  {
7889
7972
  size,
@@ -7893,7 +7976,7 @@ function ProfileMenu(inProps) {
7893
7976
  getInitial
7894
7977
  },
7895
7978
  profile.name
7896
- ), /* @__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(
7897
7980
  MenuItem,
7898
7981
  {
7899
7982
  key: label,
@@ -7909,7 +7992,7 @@ function ProfileMenu(inProps) {
7909
7992
  ProfileMenu.displayName = "ProfileMenu";
7910
7993
 
7911
7994
  // src/components/RadioTileGroup/RadioTileGroup.tsx
7912
- var import_react57 = __toESM(require("react"));
7995
+ var import_react58 = __toESM(require("react"));
7913
7996
  var import_joy69 = require("@mui/joy");
7914
7997
  var RadioTileGroupRoot = (0, import_joy69.styled)(RadioGroup, {
7915
7998
  name: "RadioTileGroup",
@@ -7997,7 +8080,7 @@ function RadioTileGroup(props) {
7997
8080
  error,
7998
8081
  required
7999
8082
  } = props;
8000
- const radioGroup = /* @__PURE__ */ import_react57.default.createElement(
8083
+ const radioGroup = /* @__PURE__ */ import_react58.default.createElement(
8001
8084
  RadioTileGroupRoot,
8002
8085
  {
8003
8086
  overlay: true,
@@ -8008,7 +8091,7 @@ function RadioTileGroup(props) {
8008
8091
  flex,
8009
8092
  columns
8010
8093
  },
8011
- options.map((option) => /* @__PURE__ */ import_react57.default.createElement(
8094
+ options.map((option) => /* @__PURE__ */ import_react58.default.createElement(
8012
8095
  RadioTileSheet,
8013
8096
  {
8014
8097
  key: option.value,
@@ -8018,7 +8101,7 @@ function RadioTileGroup(props) {
8018
8101
  flex,
8019
8102
  textAlign
8020
8103
  },
8021
- /* @__PURE__ */ import_react57.default.createElement(
8104
+ /* @__PURE__ */ import_react58.default.createElement(
8022
8105
  Radio,
8023
8106
  {
8024
8107
  id: `${option.value}`,
@@ -8047,7 +8130,7 @@ function RadioTileGroup(props) {
8047
8130
  }
8048
8131
  }
8049
8132
  ),
8050
- option.startDecorator && /* @__PURE__ */ import_react57.default.createElement(
8133
+ option.startDecorator && /* @__PURE__ */ import_react58.default.createElement(
8051
8134
  Box_default,
8052
8135
  {
8053
8136
  sx: {
@@ -8068,15 +8151,15 @@ function RadioTileGroup(props) {
8068
8151
  )
8069
8152
  ))
8070
8153
  );
8071
- 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));
8072
8155
  }
8073
8156
  RadioTileGroup.displayName = "RadioTileGroup";
8074
8157
 
8075
8158
  // src/components/RadioList/RadioList.tsx
8076
- var import_react58 = __toESM(require("react"));
8159
+ var import_react59 = __toESM(require("react"));
8077
8160
  function RadioList(props) {
8078
8161
  const { items, ...innerProps } = props;
8079
- 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 })));
8080
8163
  }
8081
8164
  RadioList.displayName = "RadioList";
8082
8165
 
@@ -8167,7 +8250,7 @@ var SearchBar = React56.forwardRef(function SearchBar2(inProps, ref) {
8167
8250
  SearchBar.displayName = "SearchBar";
8168
8251
 
8169
8252
  // src/components/Stepper/Stepper.tsx
8170
- var import_react59 = __toESM(require("react"));
8253
+ var import_react60 = __toESM(require("react"));
8171
8254
  var import_joy70 = require("@mui/joy");
8172
8255
  var import_Check = __toESM(require("@mui/icons-material/Check"));
8173
8256
  var import_framer_motion27 = require("framer-motion");
@@ -8196,7 +8279,7 @@ function Stepper(props) {
8196
8279
  stepOrientation = "horizontal"
8197
8280
  } = props;
8198
8281
  const effectiveStepOrientation = orientation === "vertical" ? "horizontal" : stepOrientation;
8199
- return /* @__PURE__ */ import_react59.default.createElement(
8282
+ return /* @__PURE__ */ import_react60.default.createElement(
8200
8283
  MotionStepper,
8201
8284
  {
8202
8285
  orientation,
@@ -8235,23 +8318,23 @@ function Stepper(props) {
8235
8318
  const completed = activeStep > i + 1;
8236
8319
  const disabled = activeStep < i + 1;
8237
8320
  const hasContent = step.label || step.extraContent;
8238
- return /* @__PURE__ */ import_react59.default.createElement(
8321
+ return /* @__PURE__ */ import_react60.default.createElement(
8239
8322
  Step,
8240
8323
  {
8241
8324
  key: `step-${i}`,
8242
- 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),
8243
8326
  active,
8244
8327
  completed,
8245
8328
  disabled,
8246
8329
  orientation: effectiveStepOrientation
8247
8330
  },
8248
- hasContent && /* @__PURE__ */ import_react59.default.createElement(
8331
+ hasContent && /* @__PURE__ */ import_react60.default.createElement(
8249
8332
  Stack_default,
8250
8333
  {
8251
8334
  sx: orientation === "horizontal" && effectiveStepOrientation === "vertical" ? { alignItems: "center" } : {}
8252
8335
  },
8253
- step.label && /* @__PURE__ */ import_react59.default.createElement(Typography_default, { level: "title-sm" }, step.label),
8254
- 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)
8255
8338
  )
8256
8339
  );
8257
8340
  })
@@ -8260,7 +8343,7 @@ function Stepper(props) {
8260
8343
  Stepper.displayName = "Stepper";
8261
8344
 
8262
8345
  // src/components/Switch/Switch.tsx
8263
- var import_react60 = __toESM(require("react"));
8346
+ var import_react61 = __toESM(require("react"));
8264
8347
  var import_joy71 = require("@mui/joy");
8265
8348
  var import_framer_motion28 = require("framer-motion");
8266
8349
  var MotionSwitch = (0, import_framer_motion28.motion)(import_joy71.Switch);
@@ -8282,14 +8365,14 @@ var StyledThumb = (0, import_joy71.styled)(import_framer_motion28.motion.div)({
8282
8365
  right: "var(--Switch-thumbOffset)"
8283
8366
  }
8284
8367
  });
8285
- 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 });
8286
8369
  var spring = {
8287
8370
  type: "spring",
8288
8371
  stiffness: 700,
8289
8372
  damping: 30
8290
8373
  };
8291
8374
  var Switch = (props) => {
8292
- return /* @__PURE__ */ import_react60.default.createElement(
8375
+ return /* @__PURE__ */ import_react61.default.createElement(
8293
8376
  MotionSwitch,
8294
8377
  {
8295
8378
  ...props,
@@ -8303,7 +8386,7 @@ var Switch = (props) => {
8303
8386
  Switch.displayName = "Switch";
8304
8387
 
8305
8388
  // src/components/Tabs/Tabs.tsx
8306
- var import_react61 = __toESM(require("react"));
8389
+ var import_react62 = __toESM(require("react"));
8307
8390
  var import_joy72 = require("@mui/joy");
8308
8391
  var StyledTabs = (0, import_joy72.styled)(import_joy72.Tabs)(({ theme }) => ({
8309
8392
  backgroundColor: theme.palette.background.body
@@ -8319,15 +8402,15 @@ var StyledTab = (0, import_joy72.styled)(import_joy72.Tab)(({ theme }) => ({
8319
8402
  backgroundColor: theme.palette.background.body
8320
8403
  }
8321
8404
  }));
8322
- var Tab = (0, import_react61.forwardRef)(function Tab2({ startDecorator, endDecorator, children, ...props }, ref) {
8323
- 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);
8324
8407
  });
8325
8408
  Tab.displayName = "Tab";
8326
8409
  var TabList = import_joy72.TabList;
8327
8410
  var TabPanel = import_joy72.TabPanel;
8328
8411
 
8329
8412
  // src/components/ThemeProvider/ThemeProvider.tsx
8330
- var import_react62 = __toESM(require("react"));
8413
+ var import_react63 = __toESM(require("react"));
8331
8414
  var import_joy73 = require("@mui/joy");
8332
8415
  var colorScheme = {
8333
8416
  palette: {
@@ -8724,6 +8807,6 @@ var defaultTheme = (0, import_joy73.extendTheme)({
8724
8807
  });
8725
8808
  function ThemeProvider(props) {
8726
8809
  const theme = props.theme || defaultTheme;
8727
- 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));
8728
8811
  }
8729
8812
  ThemeProvider.displayName = "ThemeProvider";