@ceed/cds 1.8.6 → 1.8.7

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.
Files changed (115) hide show
  1. package/dist/components/Accordions/Accordions.d.ts +1 -1
  2. package/dist/components/Accordions/index.d.ts +2 -2
  3. package/dist/components/Alert/Alert.d.ts +3 -3
  4. package/dist/components/Autocomplete/Autocomplete.d.ts +3 -3
  5. package/dist/components/Autocomplete/index.d.ts +2 -2
  6. package/dist/components/Avatar/Avatar.d.ts +2 -2
  7. package/dist/components/Box/Box.d.ts +1 -1
  8. package/dist/components/Box/index.d.ts +2 -2
  9. package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +5 -5
  10. package/dist/components/Breadcrumbs/index.d.ts +2 -2
  11. package/dist/components/Button/Button.d.ts +4 -4
  12. package/dist/components/Button/index.d.ts +2 -2
  13. package/dist/components/Calendar/Calendar.d.ts +2 -2
  14. package/dist/components/Calendar/hooks/use-calendar-props.d.ts +2 -2
  15. package/dist/components/Calendar/hooks/use-calendar.d.ts +11 -11
  16. package/dist/components/Calendar/index.d.ts +2 -2
  17. package/dist/components/Calendar/types.d.ts +2 -2
  18. package/dist/components/Card/Card.d.ts +1 -1
  19. package/dist/components/Card/index.d.ts +2 -2
  20. package/dist/components/Checkbox/Checkbox.d.ts +3 -3
  21. package/dist/components/Checkbox/index.d.ts +2 -2
  22. package/dist/components/Container/Container.d.ts +1 -1
  23. package/dist/components/Container/index.d.ts +2 -2
  24. package/dist/components/CurrencyInput/CurrencyInput.d.ts +4 -4
  25. package/dist/components/DataTable/DataTable.d.ts +3 -3
  26. package/dist/components/DataTable/index.d.ts +3 -3
  27. package/dist/components/DataTable/types.d.ts +27 -20
  28. package/dist/components/DatePicker/DatePicker.d.ts +3 -3
  29. package/dist/components/DatePicker/index.d.ts +2 -2
  30. package/dist/components/DateRangePicker/DateRangePicker.d.ts +3 -3
  31. package/dist/components/DateRangePicker/index.d.ts +2 -2
  32. package/dist/components/DialogActions/DialogActions.d.ts +1 -1
  33. package/dist/components/DialogActions/index.d.ts +2 -2
  34. package/dist/components/DialogContent/DialogContent.d.ts +1 -1
  35. package/dist/components/DialogContent/index.d.ts +2 -2
  36. package/dist/components/DialogFrame/DialogFrame.d.ts +1 -1
  37. package/dist/components/DialogFrame/index.d.ts +2 -2
  38. package/dist/components/DialogTitle/DialogTitle.d.ts +1 -1
  39. package/dist/components/DialogTitle/index.d.ts +2 -2
  40. package/dist/components/Divider/Divider.d.ts +3 -3
  41. package/dist/components/Divider/index.d.ts +2 -2
  42. package/dist/components/Drawer/Drawer.d.ts +3 -3
  43. package/dist/components/Drawer/index.d.ts +2 -2
  44. package/dist/components/Dropdown/Dropdown.d.ts +1 -1
  45. package/dist/components/Dropdown/index.d.ts +2 -2
  46. package/dist/components/FormControl/FormControl.d.ts +1 -1
  47. package/dist/components/FormControl/index.d.ts +2 -2
  48. package/dist/components/FormHelperText/FormHelperText.d.ts +1 -1
  49. package/dist/components/FormHelperText/index.d.ts +2 -2
  50. package/dist/components/FormLabel/FormLabel.d.ts +1 -1
  51. package/dist/components/FormLabel/index.d.ts +2 -2
  52. package/dist/components/Grid/Grid.d.ts +1 -1
  53. package/dist/components/Grid/index.d.ts +2 -2
  54. package/dist/components/IconButton/IconButton.d.ts +4 -4
  55. package/dist/components/IconButton/index.d.ts +2 -2
  56. package/dist/components/IconMenuButton/IconMenuButton.d.ts +6 -6
  57. package/dist/components/IconMenuButton/index.d.ts +2 -2
  58. package/dist/components/InfoSign/InfoSign.d.ts +4 -4
  59. package/dist/components/InfoSign/index.d.ts +2 -2
  60. package/dist/components/Input/Input.d.ts +2 -2
  61. package/dist/components/Input/index.d.ts +2 -2
  62. package/dist/components/InsetDrawer/index.d.ts +2 -2
  63. package/dist/components/Markdown/Markdown.d.ts +6 -6
  64. package/dist/components/Markdown/index.d.ts +2 -2
  65. package/dist/components/Menu/Menu.d.ts +3 -3
  66. package/dist/components/Menu/index.d.ts +2 -2
  67. package/dist/components/MenuButton/MenuButton.d.ts +8 -8
  68. package/dist/components/MenuButton/index.d.ts +2 -2
  69. package/dist/components/Modal/Modal.d.ts +1 -1
  70. package/dist/components/Modal/index.d.ts +2 -2
  71. package/dist/components/MonthPicker/MonthPicker.d.ts +3 -3
  72. package/dist/components/MonthPicker/index.d.ts +2 -2
  73. package/dist/components/MonthRangePicker/MonthRangePicker.d.ts +3 -3
  74. package/dist/components/MonthRangePicker/index.d.ts +2 -2
  75. package/dist/components/NavigationGroup/NavigationGroup.d.ts +3 -3
  76. package/dist/components/NavigationGroup/index.d.ts +2 -2
  77. package/dist/components/NavigationItem/NavigationItem.d.ts +3 -3
  78. package/dist/components/NavigationItem/index.d.ts +2 -2
  79. package/dist/components/Navigator/Navigator.d.ts +3 -3
  80. package/dist/components/Pagination/Pagination.d.ts +2 -2
  81. package/dist/components/Pagination/index.d.ts +2 -2
  82. package/dist/components/PercentageInput/PercentageInput.d.ts +4 -4
  83. package/dist/components/Radio/Radio.d.ts +1 -1
  84. package/dist/components/Radio/index.d.ts +2 -2
  85. package/dist/components/RadioList/RadioList.d.ts +2 -2
  86. package/dist/components/RadioList/index.d.ts +2 -2
  87. package/dist/components/Select/Select.d.ts +5 -5
  88. package/dist/components/Select/index.d.ts +2 -2
  89. package/dist/components/Sheet/Sheet.d.ts +1 -1
  90. package/dist/components/Sheet/index.d.ts +2 -2
  91. package/dist/components/Stack/Stack.d.ts +1 -1
  92. package/dist/components/Stack/index.d.ts +2 -2
  93. package/dist/components/Stepper/Stepper.d.ts +2 -2
  94. package/dist/components/Switch/Switch.d.ts +3 -3
  95. package/dist/components/Switch/index.d.ts +2 -2
  96. package/dist/components/Table/Table.d.ts +2 -2
  97. package/dist/components/Table/index.d.ts +2 -2
  98. package/dist/components/Tabs/Tabs.d.ts +1 -1
  99. package/dist/components/Tabs/index.d.ts +2 -2
  100. package/dist/components/Textarea/Textarea.d.ts +3 -3
  101. package/dist/components/Textarea/index.d.ts +2 -2
  102. package/dist/components/ThemeProvider/ThemeProvider.d.ts +20 -20
  103. package/dist/components/ThemeProvider/index.d.ts +2 -2
  104. package/dist/components/Tooltip/Tooltip.d.ts +3 -3
  105. package/dist/components/Tooltip/index.d.ts +2 -2
  106. package/dist/components/Typography/Typography.d.ts +3 -3
  107. package/dist/components/Typography/index.d.ts +2 -2
  108. package/dist/components/Uploader/Uploader.d.ts +1 -1
  109. package/dist/components/index.d.ts +57 -57
  110. package/dist/index.cjs +1177 -1757
  111. package/dist/index.d.ts +3 -3
  112. package/dist/index.js +1146 -1803
  113. package/dist/libs/rehype-accent/index.d.ts +2 -2
  114. package/framer/index.js +27 -27
  115. package/package.json +6 -1
package/dist/index.js CHANGED
@@ -227,16 +227,7 @@ var MotionAlert = styled(motion3(JoyAlert))({
227
227
  function Alert(props) {
228
228
  const { title, content, actions, color = "primary", ...innerProps } = props;
229
229
  const invertedColors = props.invertedColors || props.variant === "solid";
230
- return /* @__PURE__ */ React3.createElement(
231
- MotionAlert,
232
- {
233
- ...innerProps,
234
- color,
235
- endDecorator: actions,
236
- invertedColors
237
- },
238
- /* @__PURE__ */ React3.createElement(Stack_default, null, title && /* @__PURE__ */ React3.createElement(Typography_default, { level: "title-md", fontWeight: "bold", color }, title), /* @__PURE__ */ React3.createElement(Typography_default, { level: "body-sm", fontWeight: 500, color }, content))
239
- );
230
+ return /* @__PURE__ */ React3.createElement(MotionAlert, { ...innerProps, color, endDecorator: actions, invertedColors }, /* @__PURE__ */ React3.createElement(Stack_default, null, title && /* @__PURE__ */ React3.createElement(Typography_default, { level: "title-md", fontWeight: "bold", color }, title), /* @__PURE__ */ React3.createElement(Typography_default, { level: "body-sm", fontWeight: 500, color }, content)));
240
231
  }
241
232
  Alert.displayName = "Alert";
242
233
 
@@ -256,11 +247,7 @@ import { useVirtualizer } from "@tanstack/react-virtual";
256
247
  import { Popper } from "@mui/base";
257
248
 
258
249
  // src/components/FormControl/FormControl.tsx
259
- import {
260
- FormControl as JoyFormControl,
261
- styled as styled2,
262
- formLabelClasses
263
- } from "@mui/joy";
250
+ import { FormControl as JoyFormControl, styled as styled2, formLabelClasses } from "@mui/joy";
264
251
  import { motion as motion4 } from "framer-motion";
265
252
  var MotionFormControl = motion4(JoyFormControl);
266
253
  var FormControl = styled2(MotionFormControl)(({ theme }) => ({
@@ -308,9 +295,7 @@ var Chip_default = Chip;
308
295
 
309
296
  // src/components/IconButton/IconButton.tsx
310
297
  import React4, { forwardRef } from "react";
311
- import {
312
- IconButton as JoyIconButton
313
- } from "@mui/joy";
298
+ import { IconButton as JoyIconButton } from "@mui/joy";
314
299
  import { motion as motion8 } from "framer-motion";
315
300
  var MotionIconButton = motion8(JoyIconButton);
316
301
  var IconButton = forwardRef(
@@ -327,9 +312,7 @@ var IconButton_default = IconButton;
327
312
  import { useState, useCallback, useEffect, useRef } from "react";
328
313
  function useControlledState(controlledValue, defaultValue, onChange) {
329
314
  const { current: isControlled } = useRef(controlledValue !== void 0);
330
- const [internalValue, setInternalValue] = useState(
331
- controlledValue ?? defaultValue
332
- );
315
+ const [internalValue, setInternalValue] = useState(controlledValue ?? defaultValue);
333
316
  const displayValue = isControlled ? controlledValue : internalValue;
334
317
  useEffect(() => {
335
318
  if (isControlled) {
@@ -607,12 +590,7 @@ var Autocomplete_default = Autocomplete;
607
590
 
608
591
  // src/components/Avatar/Avatar.tsx
609
592
  import React6, { forwardRef as forwardRef2, useMemo as useMemo2 } from "react";
610
- import {
611
- Avatar as JoyAvatar,
612
- AvatarGroup,
613
- styled as styled4,
614
- useThemeProps
615
- } from "@mui/joy";
593
+ import { Avatar as JoyAvatar, AvatarGroup, styled as styled4, useThemeProps } from "@mui/joy";
616
594
  var StyledAvatar = styled4(JoyAvatar, {
617
595
  name: "Avatar",
618
596
  slot: "Root",
@@ -668,10 +646,7 @@ import {
668
646
 
669
647
  // src/components/Menu/Menu.tsx
670
648
  import React7 from "react";
671
- import {
672
- Menu as JoyMenu,
673
- MenuItem as JoyMenuItem
674
- } from "@mui/joy";
649
+ import { Menu as JoyMenu, MenuItem as JoyMenuItem } from "@mui/joy";
675
650
  import { motion as motion10 } from "framer-motion";
676
651
  var MotionMenu = motion10(JoyMenu);
677
652
  var Menu = (props) => {
@@ -715,33 +690,13 @@ function Breadcrumbs(props) {
715
690
  }
716
691
  };
717
692
  if (!collapsed) {
718
- return /* @__PURE__ */ React8.createElement(
719
- JoyBreadcrumbs,
720
- {
721
- size,
722
- slots: restSlots,
723
- slotProps: restSlotProps,
724
- ...innerProps
725
- },
726
- crumbs.map((crumb, index) => /* @__PURE__ */ React8.createElement(Crumb, { key: `breadcrumb-${index}`, ...crumb }))
727
- );
693
+ return /* @__PURE__ */ React8.createElement(JoyBreadcrumbs, { size, slots: restSlots, slotProps: restSlotProps, ...innerProps }, crumbs.map((crumb, index) => /* @__PURE__ */ React8.createElement(Crumb, { key: `breadcrumb-${index}`, ...crumb })));
728
694
  }
729
695
  const _endCrumbCount = Math.max(1, endCrumbCount);
730
696
  const frontCrumbs = crumbs.slice(0, startCrumbCount).map((crumb) => /* @__PURE__ */ React8.createElement(Crumb, { key: `breadcrumb-${crumb.label}`, ...crumb }));
731
697
  const backCrumbs = (startCrumbCount + _endCrumbCount > crumbs.length ? crumbs.slice(startCrumbCount) : crumbs.slice(-_endCrumbCount)).map((crumb) => /* @__PURE__ */ React8.createElement(Crumb, { key: `breadcrumb-${crumb.label}`, ...crumb }));
732
698
  const collapsedCrumbs = crumbs.slice(startCrumbCount, -_endCrumbCount).map((crumb) => /* @__PURE__ */ React8.createElement(MenuItem, { key: `breadcrumb-${crumb.label}` }, /* @__PURE__ */ React8.createElement(Crumb, { ...crumb })));
733
- return /* @__PURE__ */ React8.createElement(
734
- JoyBreadcrumbs,
735
- {
736
- size,
737
- slots: restSlots,
738
- slotProps: restSlotProps,
739
- ...innerProps
740
- },
741
- frontCrumbs,
742
- collapsedCrumbs.length && /* @__PURE__ */ React8.createElement(Dropdown_default, null, /* @__PURE__ */ React8.createElement(JoyMenuButton, { size, variant: "plain" }, "..."), /* @__PURE__ */ React8.createElement(Menu_default, { size }, collapsedCrumbs)),
743
- backCrumbs
744
- );
699
+ return /* @__PURE__ */ React8.createElement(JoyBreadcrumbs, { size, slots: restSlots, slotProps: restSlotProps, ...innerProps }, frontCrumbs, collapsedCrumbs.length && /* @__PURE__ */ React8.createElement(Dropdown_default, null, /* @__PURE__ */ React8.createElement(JoyMenuButton, { size, variant: "plain" }, "..."), /* @__PURE__ */ React8.createElement(Menu_default, { size }, collapsedCrumbs)), backCrumbs);
745
700
  }
746
701
  Breadcrumbs.displayName = "Breadcrumbs";
747
702
 
@@ -750,11 +705,9 @@ import React9, { forwardRef as forwardRef3 } from "react";
750
705
  import { Button as JoyButton } from "@mui/joy";
751
706
  import { motion as motion11 } from "framer-motion";
752
707
  var MotionButton = motion11(JoyButton);
753
- var Button = forwardRef3(
754
- ({ ...props }, ref) => {
755
- return /* @__PURE__ */ React9.createElement(MotionButton, { ref, ...props });
756
- }
757
- );
708
+ var Button = forwardRef3(({ ...props }, ref) => {
709
+ return /* @__PURE__ */ React9.createElement(MotionButton, { ref, ...props });
710
+ });
758
711
  Button.displayName = "Button";
759
712
 
760
713
  // src/components/Button/index.ts
@@ -773,9 +726,7 @@ var getCalendarDates = (date) => {
773
726
  const firstDay = new Date(date.getFullYear(), date.getMonth(), 1);
774
727
  const lastDay = new Date(date.getFullYear(), date.getMonth() + 1, 0);
775
728
  const firstWeekInThisMonth = Math.ceil((firstDay.getDay() + 1) / 7);
776
- const lastWeekInThisMonth = Math.ceil(
777
- (lastDay.getDate() + firstDay.getDay()) / 7
778
- );
729
+ const lastWeekInThisMonth = Math.ceil((lastDay.getDate() + firstDay.getDay()) / 7);
779
730
  let day = 1;
780
731
  for (let i = 1; i <= lastWeekInThisMonth; i++) {
781
732
  const week = [];
@@ -850,7 +801,9 @@ var useCalendarProps = (inProps) => {
850
801
  const [uncontrolledView, setUncontrolledView] = useState2(
851
802
  () => resolveView(inProps.view || "day", inProps.views || ["day", "month"])
852
803
  );
853
- const [uncontrolledValue, setUncontrolledValue] = useState2(inProps.defaultValue);
804
+ const [uncontrolledValue, setUncontrolledValue] = useState2(
805
+ inProps.defaultValue
806
+ );
854
807
  const [viewMonth, setViewMonth] = useState2(() => {
855
808
  const today = /* @__PURE__ */ new Date();
856
809
  today.setDate(1);
@@ -923,10 +876,7 @@ var useCalendarProps = (inProps) => {
923
876
  },
924
877
  name: "Calendar"
925
878
  });
926
- const ownerState = useMemo3(
927
- () => ({ ...props, viewMonth, direction }),
928
- [props, viewMonth, direction]
929
- );
879
+ const ownerState = useMemo3(() => ({ ...props, viewMonth, direction }), [props, viewMonth, direction]);
930
880
  return [props, ownerState];
931
881
  };
932
882
 
@@ -944,11 +894,7 @@ var useCalendar = (ownerState) => {
944
894
  const currentMonth = currentDate.getMonth();
945
895
  const currentDay = currentDate.getDate();
946
896
  const prevMonth = new Date(currentYear, currentMonth - 1, 1);
947
- const lastDayOfPrevMonth = new Date(
948
- currentYear,
949
- currentMonth,
950
- 0
951
- ).getDate();
897
+ const lastDayOfPrevMonth = new Date(currentYear, currentMonth, 0).getDate();
952
898
  const prevMonthDay = Math.min(currentDay, lastDayOfPrevMonth);
953
899
  prevMonth.setDate(prevMonthDay);
954
900
  ownerState.onMonthChange?.(prevMonth);
@@ -965,11 +911,7 @@ var useCalendar = (ownerState) => {
965
911
  const currentMonth = currentDate.getMonth();
966
912
  const currentDay = currentDate.getDate();
967
913
  const nextMonth = new Date(currentYear, currentMonth + 1, 1);
968
- const lastDayOfNextMonth = new Date(
969
- currentYear,
970
- currentMonth + 2,
971
- 0
972
- ).getDate();
914
+ const lastDayOfNextMonth = new Date(currentYear, currentMonth + 2, 0).getDate();
973
915
  const nextMonthDay = Math.min(currentDay, lastDayOfNextMonth);
974
916
  nextMonth.setDate(nextMonthDay);
975
917
  ownerState.onMonthChange?.(nextMonth);
@@ -986,22 +928,13 @@ var useCalendar = (ownerState) => {
986
928
  thisDay.setDate(day);
987
929
  const inRange = ownerState.rangeSelection && ownerState.value && ownerState.value[0] && // NOTE: hover day is not included in the range
988
930
  (hoverDay && isWithinRange(ownerState.value[0], hoverDay, thisDay) || // NOTE: Selected range is included in the range
989
- ownerState.value[1] && isWithinRange(
990
- ownerState.value[0],
991
- ownerState.value[1],
992
- thisDay
993
- ));
931
+ ownerState.value[1] && isWithinRange(ownerState.value[0], ownerState.value[1], thisDay));
994
932
  return {
995
933
  "aria-label": thisDay.toLocaleDateString(),
996
934
  "aria-current": inRange ? "date" : void 0
997
935
  };
998
936
  },
999
- [
1000
- ownerState.rangeSelection,
1001
- ownerState.value,
1002
- ownerState.viewMonth,
1003
- hoverDay
1004
- ]
937
+ [ownerState.rangeSelection, ownerState.value, ownerState.viewMonth, hoverDay]
1005
938
  ),
1006
939
  getMonthCellProps: useCallback4(
1007
940
  (monthIndex) => {
@@ -1012,22 +945,13 @@ var useCalendar = (ownerState) => {
1012
945
  const isMonthRangeSelection = !ownerState.views?.find((view) => view === "day") && ownerState.rangeSelection;
1013
946
  const inRange = isMonthRangeSelection && ownerState.value && ownerState.value[0] && // NOTE: hover day is not included in the range
1014
947
  (hoverMonth && isWithinRange(ownerState.value[0], hoverMonth, thisMonth) || // NOTE: Selected range is included in the range
1015
- ownerState.value[1] && isWithinRange(
1016
- ownerState.value[0],
1017
- ownerState.value[1],
1018
- thisMonth
1019
- ));
948
+ ownerState.value[1] && isWithinRange(ownerState.value[0], ownerState.value[1], thisMonth));
1020
949
  return {
1021
950
  "aria-label": thisMonth.toLocaleDateString(),
1022
951
  "aria-current": inRange ? "date" : void 0
1023
952
  };
1024
953
  },
1025
- [
1026
- ownerState.rangeSelection,
1027
- ownerState.value,
1028
- ownerState.viewMonth,
1029
- hoverMonth
1030
- ]
954
+ [ownerState.rangeSelection, ownerState.value, ownerState.viewMonth, hoverMonth]
1031
955
  ),
1032
956
  getPickerDayProps: useCallback4(
1033
957
  (day) => {
@@ -1037,23 +961,15 @@ var useCalendar = (ownerState) => {
1037
961
  const isSelected = !!ownerState.value && (isSameDay(thisDay, ownerState.value[0]) || ownerState.value[1] && isSameDay(thisDay, ownerState.value[1]));
1038
962
  const inRange = ownerState.rangeSelection && ownerState.value && ownerState.value[0] && // NOTE: hover day is not included in the range
1039
963
  (hoverDay && isWithinRange(ownerState.value[0], hoverDay, thisDay) || // NOTE: Selected range is included in the range
1040
- ownerState.value[1] && isWithinRange(
1041
- ownerState.value[0],
1042
- ownerState.value[1],
1043
- thisDay
1044
- ));
964
+ ownerState.value[1] && isWithinRange(ownerState.value[0], ownerState.value[1], thisDay));
1045
965
  const handleDayClick = () => {
1046
966
  if (ownerState.rangeSelection) {
1047
967
  if (!ownerState.value) {
1048
968
  ownerState.onChange?.([thisDay, void 0]);
1049
969
  } else if (ownerState.value[0] && !ownerState.value[1]) {
1050
970
  ownerState.onChange?.([
1051
- new Date(
1052
- Math.min(ownerState.value[0].getTime(), thisDay.getTime())
1053
- ),
1054
- new Date(
1055
- Math.max(ownerState.value[0].getTime(), thisDay.getTime())
1056
- )
971
+ new Date(Math.min(ownerState.value[0].getTime(), thisDay.getTime())),
972
+ new Date(Math.max(ownerState.value[0].getTime(), thisDay.getTime()))
1057
973
  ]);
1058
974
  } else {
1059
975
  ownerState.onChange?.([thisDay, void 0]);
@@ -1102,23 +1018,15 @@ var useCalendar = (ownerState) => {
1102
1018
  const isSelected = !!ownerState.value && (isSameMonth(thisMonth, ownerState.value[0]) || ownerState.value[1] && isSameMonth(thisMonth, ownerState.value[1]));
1103
1019
  const inRange = isMonthRangeSelection && ownerState.value && ownerState.value[0] && // NOTE: hover day is not included in the range
1104
1020
  (hoverMonth && isWithinRange(ownerState.value[0], hoverMonth, thisMonth) || // NOTE: Selected range is included in the range
1105
- ownerState.value[1] && isWithinRange(
1106
- ownerState.value[0],
1107
- ownerState.value[1],
1108
- thisMonth
1109
- ));
1021
+ ownerState.value[1] && isWithinRange(ownerState.value[0], ownerState.value[1], thisMonth));
1110
1022
  const handleMonthClick = () => {
1111
1023
  if (isMonthRangeSelection) {
1112
1024
  if (!ownerState.value) {
1113
1025
  ownerState.onChange?.([thisMonth, void 0]);
1114
1026
  } else if (ownerState.value[0] && !ownerState.value[1]) {
1115
1027
  ownerState.onChange?.([
1116
- new Date(
1117
- Math.min(ownerState.value[0].getTime(), thisMonth.getTime())
1118
- ),
1119
- new Date(
1120
- Math.max(ownerState.value[0].getTime(), thisMonth.getTime())
1121
- )
1028
+ new Date(Math.min(ownerState.value[0].getTime(), thisMonth.getTime())),
1029
+ new Date(Math.max(ownerState.value[0].getTime(), thisMonth.getTime()))
1122
1030
  ]);
1123
1031
  } else {
1124
1032
  ownerState.onChange?.([thisMonth, void 0]);
@@ -1188,15 +1096,13 @@ var CalendarViewContainer = styled5("div", {
1188
1096
  name: "Calendar",
1189
1097
  slot: "viewContainer",
1190
1098
  shouldForwardProp: (prop) => prop !== "calendarType"
1191
- })(
1192
- ({ theme, calendarType }) => ({
1193
- paddingLeft: theme.spacing(2),
1194
- paddingRight: theme.spacing(2),
1195
- position: "relative",
1196
- overflow: "hidden",
1197
- minHeight: calendarType === "datePicker" ? "250px" : "unset"
1198
- })
1199
- );
1099
+ })(({ theme, calendarType }) => ({
1100
+ paddingLeft: theme.spacing(2),
1101
+ paddingRight: theme.spacing(2),
1102
+ position: "relative",
1103
+ overflow: "hidden",
1104
+ minHeight: calendarType === "datePicker" ? "250px" : "unset"
1105
+ }));
1200
1106
  var CalendarViewTable = styled5(motion12.table, {
1201
1107
  name: "Calendar",
1202
1108
  slot: "viewTable"
@@ -1375,14 +1281,8 @@ var swipePower = (offset, velocity) => {
1375
1281
  var PickerDays = (props) => {
1376
1282
  const { ownerState } = props;
1377
1283
  const { getPickerDayProps, getDayCellProps } = useCalendar(ownerState);
1378
- const calendarDates = useMemo4(
1379
- () => getCalendarDates(ownerState.viewMonth),
1380
- [ownerState.viewMonth]
1381
- );
1382
- const weekdayNames = useMemo4(
1383
- () => getWeekdayNames(ownerState.locale || "default"),
1384
- [ownerState.locale]
1385
- );
1284
+ const calendarDates = useMemo4(() => getCalendarDates(ownerState.viewMonth), [ownerState.viewMonth]);
1285
+ const weekdayNames = useMemo4(() => getWeekdayNames(ownerState.locale || "default"), [ownerState.locale]);
1386
1286
  return /* @__PURE__ */ React11.createElement(CalendarViewContainer, { calendarType: "datePicker" }, /* @__PURE__ */ React11.createElement(AnimatePresence, { initial: false, custom: ownerState.direction }, /* @__PURE__ */ React11.createElement(
1387
1287
  CalendarViewTable,
1388
1288
  {
@@ -1412,25 +1312,9 @@ var PickerDays = (props) => {
1412
1312
  }
1413
1313
  }
1414
1314
  },
1415
- /* @__PURE__ */ React11.createElement(CalendarWeekHeaderContainer, null, /* @__PURE__ */ React11.createElement("tr", null, weekdayNames.map((name, i) => /* @__PURE__ */ React11.createElement(Fragment, { key: `${ownerState.viewMonth}_${name}_${i}` }, /* @__PURE__ */ React11.createElement("th", null, /* @__PURE__ */ React11.createElement(Typography_default, { level: "body-xs", textAlign: "center" }, name)), i < 6 && /* @__PURE__ */ React11.createElement(
1416
- "th",
1417
- {
1418
- style: { width: 4 },
1419
- "aria-hidden": "true",
1420
- "aria-description": "cell-gap"
1421
- }
1422
- ))))),
1315
+ /* @__PURE__ */ React11.createElement(CalendarWeekHeaderContainer, null, /* @__PURE__ */ React11.createElement("tr", null, weekdayNames.map((name, i) => /* @__PURE__ */ React11.createElement(Fragment, { key: `${ownerState.viewMonth}_${name}_${i}` }, /* @__PURE__ */ React11.createElement("th", null, /* @__PURE__ */ React11.createElement(Typography_default, { level: "body-xs", textAlign: "center" }, name)), i < 6 && /* @__PURE__ */ React11.createElement("th", { style: { width: 4 }, "aria-hidden": "true", "aria-description": "cell-gap" }))))),
1423
1316
  /* @__PURE__ */ React11.createElement(CalendarDayPickerContainer, null, calendarDates.map((weekDates, rowIndex) => /* @__PURE__ */ React11.createElement(Fragment, { key: `${ownerState.viewMonth}_${rowIndex}` }, /* @__PURE__ */ React11.createElement("tr", null, weekDates.map(
1424
- (date, i) => date ? /* @__PURE__ */ React11.createElement(Fragment, { key: `${ownerState.viewMonth}_${date}_${i}` }, /* @__PURE__ */ React11.createElement(CalendarDayCell, { ...getDayCellProps(date) }, /* @__PURE__ */ React11.createElement(
1425
- CalendarDay,
1426
- {
1427
- size: "sm",
1428
- variant: "plain",
1429
- color: "neutral",
1430
- ...getPickerDayProps(date)
1431
- },
1432
- date
1433
- )), i < 6 && /* @__PURE__ */ React11.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" })) : /* @__PURE__ */ React11.createElement(Fragment, { key: `${ownerState.viewMonth}_${i}` }, /* @__PURE__ */ React11.createElement("td", null), i < 6 && /* @__PURE__ */ React11.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" }))
1317
+ (date, i) => date ? /* @__PURE__ */ React11.createElement(Fragment, { key: `${ownerState.viewMonth}_${date}_${i}` }, /* @__PURE__ */ React11.createElement(CalendarDayCell, { ...getDayCellProps(date) }, /* @__PURE__ */ React11.createElement(CalendarDay, { size: "sm", variant: "plain", color: "neutral", ...getPickerDayProps(date) }, date)), i < 6 && /* @__PURE__ */ React11.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" })) : /* @__PURE__ */ React11.createElement(Fragment, { key: `${ownerState.viewMonth}_${i}` }, /* @__PURE__ */ React11.createElement("td", null), i < 6 && /* @__PURE__ */ React11.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" }))
1434
1318
  )), rowIndex < calendarDates.length - 1 && /* @__PURE__ */ React11.createElement("tr", { "aria-hidden": "true", "aria-description": "row-gap" }, /* @__PURE__ */ React11.createElement("td", { colSpan: 13, style: { height: 4 } })))))
1435
1319
  )));
1436
1320
  };
@@ -1448,62 +1332,37 @@ var PickerMonths = (props) => {
1448
1332
  [[]]
1449
1333
  );
1450
1334
  const isMonthPicker = !ownerState.views?.find((view) => view === "day");
1451
- return /* @__PURE__ */ React11.createElement(
1452
- CalendarViewContainer,
1335
+ return /* @__PURE__ */ React11.createElement(CalendarViewContainer, { calendarType: isMonthPicker ? "monthPicker" : "datePicker" }, /* @__PURE__ */ React11.createElement(AnimatePresence, { initial: false, custom: ownerState.direction }, /* @__PURE__ */ React11.createElement(
1336
+ CalendarViewTable,
1453
1337
  {
1454
- calendarType: isMonthPicker ? "monthPicker" : "datePicker"
1455
- },
1456
- /* @__PURE__ */ React11.createElement(AnimatePresence, { initial: false, custom: ownerState.direction }, /* @__PURE__ */ React11.createElement(
1457
- CalendarViewTable,
1458
- {
1459
- key: `${ownerState.viewMonth.getFullYear()}_${ownerState.direction}`,
1460
- custom: ownerState.direction,
1461
- variants,
1462
- initial: "enter",
1463
- animate: "center",
1464
- exit: "exit",
1465
- transition: {
1466
- x: { type: "spring", stiffness: 300, damping: 30 },
1467
- opacity: { duration: 0.2 }
1468
- },
1469
- drag: "x",
1470
- dragConstraints: { left: 0, right: 0 },
1471
- dragElastic: 1,
1472
- onDragEnd: (e, { offset, velocity }) => {
1473
- const swipe = swipePower(offset.x, velocity.x);
1474
- if (swipe < -swipeConfidenceThreshold) {
1475
- const date = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
1476
- date.setMonth(date.getMonth() + 1);
1477
- ownerState.onMonthChange?.(date);
1478
- } else if (swipe > swipeConfidenceThreshold) {
1479
- const date = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
1480
- date.setMonth(date.getMonth() - 1);
1481
- ownerState.onMonthChange?.(date);
1482
- }
1483
- }
1338
+ key: `${ownerState.viewMonth.getFullYear()}_${ownerState.direction}`,
1339
+ custom: ownerState.direction,
1340
+ variants,
1341
+ initial: "enter",
1342
+ animate: "center",
1343
+ exit: "exit",
1344
+ transition: {
1345
+ x: { type: "spring", stiffness: 300, damping: 30 },
1346
+ opacity: { duration: 0.2 }
1484
1347
  },
1485
- /* @__PURE__ */ React11.createElement("tbody", null, chunkedMonths.map((months, i) => /* @__PURE__ */ React11.createElement(Fragment, { key: months.join("_") }, /* @__PURE__ */ React11.createElement("tr", null, months.map((monthIndex, j) => /* @__PURE__ */ React11.createElement(Fragment, { key: monthIndex }, /* @__PURE__ */ React11.createElement(CalendarMonthCell, { ...getMonthCellProps(monthIndex) }, /* @__PURE__ */ React11.createElement(
1486
- CalendarMonth,
1487
- {
1488
- size: "sm",
1489
- variant: "plain",
1490
- color: "neutral",
1491
- ...getPickerMonthProps(monthIndex)
1492
- },
1493
- getMonthNameFromIndex(
1494
- monthIndex,
1495
- ownerState.locale
1496
- )
1497
- )), j < 3 && /* @__PURE__ */ React11.createElement(
1498
- "td",
1499
- {
1500
- style: { width: 4 },
1501
- "aria-hidden": "true",
1502
- "aria-description": "cell-gap"
1348
+ drag: "x",
1349
+ dragConstraints: { left: 0, right: 0 },
1350
+ dragElastic: 1,
1351
+ onDragEnd: (e, { offset, velocity }) => {
1352
+ const swipe = swipePower(offset.x, velocity.x);
1353
+ if (swipe < -swipeConfidenceThreshold) {
1354
+ const date = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
1355
+ date.setMonth(date.getMonth() + 1);
1356
+ ownerState.onMonthChange?.(date);
1357
+ } else if (swipe > swipeConfidenceThreshold) {
1358
+ const date = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
1359
+ date.setMonth(date.getMonth() - 1);
1360
+ ownerState.onMonthChange?.(date);
1503
1361
  }
1504
- )))), i < chunkedMonths.length - 1 && /* @__PURE__ */ React11.createElement("tr", { "aria-hidden": "true", "aria-description": "row-gap" }, /* @__PURE__ */ React11.createElement("td", { colSpan: 7, style: { height: 4 } })))))
1505
- ))
1506
- );
1362
+ }
1363
+ },
1364
+ /* @__PURE__ */ React11.createElement("tbody", null, chunkedMonths.map((months, i) => /* @__PURE__ */ React11.createElement(Fragment, { key: months.join("_") }, /* @__PURE__ */ React11.createElement("tr", null, months.map((monthIndex, j) => /* @__PURE__ */ React11.createElement(Fragment, { key: monthIndex }, /* @__PURE__ */ React11.createElement(CalendarMonthCell, { ...getMonthCellProps(monthIndex) }, /* @__PURE__ */ React11.createElement(CalendarMonth, { size: "sm", variant: "plain", color: "neutral", ...getPickerMonthProps(monthIndex) }, getMonthNameFromIndex(monthIndex, ownerState.locale))), j < 3 && /* @__PURE__ */ React11.createElement("td", { style: { width: 4 }, "aria-hidden": "true", "aria-description": "cell-gap" })))), i < chunkedMonths.length - 1 && /* @__PURE__ */ React11.createElement("tr", { "aria-hidden": "true", "aria-description": "row-gap" }, /* @__PURE__ */ React11.createElement("td", { colSpan: 7, style: { height: 4 } })))))
1365
+ )));
1507
1366
  };
1508
1367
  var Calendar = forwardRef4((inProps, ref) => {
1509
1368
  const [props, ownerState] = useCalendarProps(inProps);
@@ -1524,15 +1383,7 @@ var Calendar = forwardRef4((inProps, ref) => {
1524
1383
  ...others
1525
1384
  } = props;
1526
1385
  const { calendarTitle, onPrev, onNext } = useCalendar(ownerState);
1527
- return /* @__PURE__ */ React11.createElement(CalendarRoot, { ref, ...others }, /* @__PURE__ */ React11.createElement(CalendarHeader, null, /* @__PURE__ */ React11.createElement(
1528
- IconButton_default,
1529
- {
1530
- size: "sm",
1531
- onClick: onPrev,
1532
- "aria-label": `Previous ${view === "day" ? "Month" : "Year"}`
1533
- },
1534
- /* @__PURE__ */ React11.createElement(ChevronLeftIcon, null)
1535
- ), /* @__PURE__ */ React11.createElement(
1386
+ return /* @__PURE__ */ React11.createElement(CalendarRoot, { ref, ...others }, /* @__PURE__ */ React11.createElement(CalendarHeader, null, /* @__PURE__ */ React11.createElement(IconButton_default, { size: "sm", onClick: onPrev, "aria-label": `Previous ${view === "day" ? "Month" : "Year"}` }, /* @__PURE__ */ React11.createElement(ChevronLeftIcon, null)), /* @__PURE__ */ React11.createElement(
1536
1387
  CalendarSwitchViewButton,
1537
1388
  {
1538
1389
  ownerState,
@@ -1542,15 +1393,7 @@ var Calendar = forwardRef4((inProps, ref) => {
1542
1393
  "aria-label": "Switch Calendar View"
1543
1394
  },
1544
1395
  calendarTitle
1545
- ), /* @__PURE__ */ React11.createElement(
1546
- IconButton_default,
1547
- {
1548
- size: "sm",
1549
- onClick: onNext,
1550
- "aria-label": `Next ${view === "day" ? "Month" : "Year"}`
1551
- },
1552
- /* @__PURE__ */ React11.createElement(ChevronRightIcon, null)
1553
- )), view === "day" && /* @__PURE__ */ React11.createElement(PickerDays, { ownerState }), view === "month" && /* @__PURE__ */ React11.createElement(PickerMonths, { ownerState }));
1396
+ ), /* @__PURE__ */ React11.createElement(IconButton_default, { size: "sm", onClick: onNext, "aria-label": `Next ${view === "day" ? "Month" : "Year"}` }, /* @__PURE__ */ React11.createElement(ChevronRightIcon, null))), view === "day" && /* @__PURE__ */ React11.createElement(PickerDays, { ownerState }), view === "month" && /* @__PURE__ */ React11.createElement(PickerMonths, { ownerState }));
1554
1397
  });
1555
1398
  Calendar.displayName = "Calendar";
1556
1399
 
@@ -1694,23 +1537,15 @@ var Input = React14.forwardRef((props, ref) => {
1694
1537
  ...innerProps.slotProps
1695
1538
  },
1696
1539
  ...innerProps,
1697
- endDecorator: enableClearable ? /* @__PURE__ */ React14.createElement(
1698
- Stack_default,
1540
+ endDecorator: enableClearable ? /* @__PURE__ */ React14.createElement(Stack_default, { gap: 1, direction: "row" }, innerProps.endDecorator, value && /* @__PURE__ */ React14.createElement(
1541
+ IconButton_default,
1699
1542
  {
1700
- gap: 1,
1701
- direction: "row"
1543
+ onMouseDown: (e) => e.preventDefault(),
1544
+ onClick: handleClear,
1545
+ "aria-label": "Clear"
1702
1546
  },
1703
- innerProps.endDecorator,
1704
- value && /* @__PURE__ */ React14.createElement(
1705
- IconButton_default,
1706
- {
1707
- onMouseDown: (e) => e.preventDefault(),
1708
- onClick: handleClear,
1709
- "aria-label": "Clear"
1710
- },
1711
- /* @__PURE__ */ React14.createElement(ClearIcon, null)
1712
- )
1713
- ) : innerProps.endDecorator
1547
+ /* @__PURE__ */ React14.createElement(ClearIcon, null)
1548
+ )) : innerProps.endDecorator
1714
1549
  }
1715
1550
  );
1716
1551
  return /* @__PURE__ */ React14.createElement(
@@ -1898,25 +1733,23 @@ var useCurrencySetting = (props) => {
1898
1733
  };
1899
1734
 
1900
1735
  // src/components/CurrencyInput/CurrencyInput.tsx
1901
- var TextMaskAdapter = React15.forwardRef(
1902
- function TextMaskAdapter2(props, ref) {
1903
- const { onChange, ...innerProps } = props;
1904
- return /* @__PURE__ */ React15.createElement(
1905
- NumericFormat,
1906
- {
1907
- ...innerProps,
1908
- onValueChange: ({ value }) => {
1909
- onChange?.({
1910
- target: { name: props.name, value }
1911
- });
1912
- },
1913
- valueIsNumericString: true,
1914
- getInputRef: ref,
1915
- allowNegative: true
1916
- }
1917
- );
1918
- }
1919
- );
1736
+ var TextMaskAdapter = React15.forwardRef(function TextMaskAdapter2(props, ref) {
1737
+ const { onChange, ...innerProps } = props;
1738
+ return /* @__PURE__ */ React15.createElement(
1739
+ NumericFormat,
1740
+ {
1741
+ ...innerProps,
1742
+ onValueChange: ({ value }) => {
1743
+ onChange?.({
1744
+ target: { name: props.name, value }
1745
+ });
1746
+ },
1747
+ valueIsNumericString: true,
1748
+ getInputRef: ref,
1749
+ allowNegative: true
1750
+ }
1751
+ );
1752
+ });
1920
1753
  var CurrencyInputRoot = styled7(Input_default, {
1921
1754
  name: "CurrencyInput",
1922
1755
  slot: "root",
@@ -1939,21 +1772,11 @@ var CurrencyInput = React15.forwardRef(function CurrencyInput2(inProps, ref) {
1939
1772
  className,
1940
1773
  ...innerProps
1941
1774
  } = props;
1942
- const {
1943
- symbol,
1944
- thousandSeparator,
1945
- decimalSeparator,
1946
- placeholder,
1947
- fixedDecimalScale,
1948
- decimalScale
1949
- } = useCurrencySetting(props);
1775
+ const { symbol, thousandSeparator, decimalSeparator, placeholder, fixedDecimalScale, decimalScale } = useCurrencySetting(props);
1950
1776
  const [_value, setValue] = useControlledState(
1951
1777
  props.value,
1952
1778
  props.defaultValue,
1953
- useCallback6(
1954
- (value2) => onChange?.({ target: { name, value: value2 } }),
1955
- [onChange, name]
1956
- )
1779
+ useCallback6((value2) => onChange?.({ target: { name, value: value2 } }), [onChange, name])
1957
1780
  );
1958
1781
  const value = useMemo5(() => {
1959
1782
  if (_value && useMinorUnit) {
@@ -1967,9 +1790,7 @@ var CurrencyInput = React15.forwardRef(function CurrencyInput2(inProps, ref) {
1967
1790
  }
1968
1791
  return props.max;
1969
1792
  }, [props.max, useMinorUnit, decimalScale]);
1970
- const [isOverLimit, setIsOverLimit] = useState4(
1971
- !!max && !!value && value > max
1972
- );
1793
+ const [isOverLimit, setIsOverLimit] = useState4(!!max && !!value && value > max);
1973
1794
  const handleChange = useCallback6(
1974
1795
  (event) => {
1975
1796
  if (event.target.value === "") {
@@ -1999,9 +1820,9 @@ var CurrencyInput = React15.forwardRef(function CurrencyInput2(inProps, ref) {
1999
1820
  required,
2000
1821
  color: error || isOverLimit ? "danger" : props.color,
2001
1822
  label,
2002
- helperText: isOverLimit ? new IntlMessageFormat2(
2003
- `limit: {amount, number, ::currency/${currency} unit-width-narrow}`
2004
- ).format({ amount: max }) : helperText,
1823
+ helperText: isOverLimit ? new IntlMessageFormat2(`limit: {amount, number, ::currency/${currency} unit-width-narrow}`).format({
1824
+ amount: max
1825
+ }) : helperText,
2005
1826
  slotProps: {
2006
1827
  input: {
2007
1828
  component: TextMaskAdapter,
@@ -2039,14 +1860,7 @@ import React23, {
2039
1860
  useLayoutEffect
2040
1861
  } from "react";
2041
1862
  import { useVirtualizer as useVirtualizer2 } from "@tanstack/react-virtual";
2042
- import {
2043
- styled as styled12,
2044
- LinearProgress,
2045
- Link,
2046
- useTheme,
2047
- buttonClasses,
2048
- iconButtonClasses
2049
- } from "@mui/joy";
1863
+ import { styled as styled12, LinearProgress, Link, useTheme, buttonClasses, iconButtonClasses } from "@mui/joy";
2050
1864
  import SortIcon from "@mui/icons-material/ArrowUpwardRounded";
2051
1865
 
2052
1866
  // src/components/Sheet/Sheet.tsx
@@ -2116,13 +1930,7 @@ function TableBody(props) {
2116
1930
  textAlign: "center"
2117
1931
  }
2118
1932
  },
2119
- /* @__PURE__ */ React16.createElement(
2120
- RenderCheckbox,
2121
- {
2122
- onChange: (event) => onCheckboxChange?.(event, rowIndex),
2123
- ...checkboxProps
2124
- }
2125
- )
1933
+ /* @__PURE__ */ React16.createElement(RenderCheckbox, { onChange: (event) => onCheckboxChange?.(event, rowIndex), ...checkboxProps })
2126
1934
  ), cellOrder.map((cellKey) => /* @__PURE__ */ React16.createElement(
2127
1935
  "td",
2128
1936
  {
@@ -2137,14 +1945,7 @@ function TableBody(props) {
2137
1945
  TableBody.displayName = "TableBody";
2138
1946
 
2139
1947
  // src/components/DatePicker/DatePicker.tsx
2140
- import React17, {
2141
- forwardRef as forwardRef6,
2142
- useCallback as useCallback7,
2143
- useEffect as useEffect3,
2144
- useImperativeHandle,
2145
- useRef as useRef3,
2146
- useState as useState5
2147
- } from "react";
1948
+ import React17, { forwardRef as forwardRef6, useCallback as useCallback7, useEffect as useEffect3, useImperativeHandle, useRef as useRef3, useState as useState5 } from "react";
2148
1949
  import { IMaskInput, IMask } from "react-imask";
2149
1950
  import CalendarTodayIcon from "@mui/icons-material/CalendarToday";
2150
1951
  import { styled as styled9, useThemeProps as useThemeProps4 } from "@mui/joy";
@@ -2174,9 +1975,7 @@ var CalendarButton = styled9(IconButton_default, {
2174
1975
  "&:focus": {
2175
1976
  "--Icon-color": "currentColor",
2176
1977
  outlineOffset: `${theme.getCssVar("focus-thickness")}`,
2177
- outline: `${theme.getCssVar("focus-thickness")} solid ${theme.getCssVar(
2178
- "palette-focusVisible"
2179
- )}`
1978
+ outline: `${theme.getCssVar("focus-thickness")} solid ${theme.getCssVar("palette-focusVisible")}`
2180
1979
  }
2181
1980
  }));
2182
1981
  var StyledPopper = styled9(Popper2, {
@@ -2210,9 +2009,7 @@ var validValueFormat = (value, format) => {
2210
2009
  if (value !== formatValueString(parsedValue, format)) {
2211
2010
  return false;
2212
2011
  }
2213
- const regex = new RegExp(
2214
- `^${format.replace(/Y/g, "\\d").replace(/M/g, "\\d").replace(/D/g, "\\d")}$`
2215
- );
2012
+ const regex = new RegExp(`^${format.replace(/Y/g, "\\d").replace(/M/g, "\\d").replace(/D/g, "\\d")}$`);
2216
2013
  return regex.test(value);
2217
2014
  } catch (e) {
2218
2015
  return false;
@@ -2253,276 +2050,259 @@ function parseDate(dateString, format) {
2253
2050
  var formatToPattern = (format) => {
2254
2051
  return format.replace(/YYYY/g, "Y").replace(/MM/g, "M").replace(/DD/g, "D").replace(/[^YMD\s]/g, (match) => `${match}\``);
2255
2052
  };
2256
- var TextMaskAdapter3 = React17.forwardRef(
2257
- function TextMaskAdapter4(props, ref) {
2258
- const { onChange, format, ...other } = props;
2259
- return /* @__PURE__ */ React17.createElement(
2260
- IMaskInput,
2261
- {
2262
- ...other,
2263
- inputRef: ref,
2264
- onAccept: (value) => onChange({ target: { name: props.name, value } }),
2265
- mask: Date,
2266
- pattern: formatToPattern(format),
2267
- blocks: {
2268
- D: {
2269
- mask: IMask.MaskedRange,
2270
- from: 1,
2271
- to: 31,
2272
- maxLength: 2
2273
- },
2274
- M: {
2275
- mask: IMask.MaskedRange,
2276
- from: 1,
2277
- to: 12,
2278
- maxLength: 2
2279
- },
2280
- Y: {
2281
- mask: IMask.MaskedRange,
2282
- from: 1900,
2283
- to: 9999,
2284
- maxLength: 4
2285
- }
2053
+ var TextMaskAdapter3 = React17.forwardRef(function TextMaskAdapter4(props, ref) {
2054
+ const { onChange, format, ...other } = props;
2055
+ return /* @__PURE__ */ React17.createElement(
2056
+ IMaskInput,
2057
+ {
2058
+ ...other,
2059
+ inputRef: ref,
2060
+ onAccept: (value) => onChange({ target: { name: props.name, value } }),
2061
+ mask: Date,
2062
+ pattern: formatToPattern(format),
2063
+ blocks: {
2064
+ D: {
2065
+ mask: IMask.MaskedRange,
2066
+ from: 1,
2067
+ to: 31,
2068
+ maxLength: 2
2286
2069
  },
2287
- format: (date) => formatValueString(date, format),
2288
- parse: (str) => parseDate(str, format),
2289
- autofix: "pad",
2290
- overwrite: true
2291
- }
2292
- );
2293
- }
2294
- );
2295
- var DatePicker = forwardRef6(
2296
- (inProps, ref) => {
2297
- const props = useThemeProps4({ props: inProps, name: "DatePicker" });
2298
- const {
2299
- onChange,
2300
- disabled,
2301
- label,
2302
- error,
2303
- helperText,
2304
- minDate,
2305
- maxDate,
2306
- disableFuture,
2307
- disablePast,
2308
- required,
2309
- // NOTE: 스타일 관련된 props는 최상위 엘리먼트에 적용한다.
2310
- sx,
2311
- className,
2312
- format = "YYYY/MM/DD",
2313
- displayFormat = "YYYY/MM/DD",
2314
- size,
2315
- inputReadOnly,
2316
- hideClearButton,
2317
- readOnly,
2318
- shouldDisableDate,
2319
- ...innerProps
2320
- } = props;
2321
- const innerRef = useRef3(null);
2322
- const buttonRef = useRef3(null);
2323
- const [value, setValue] = useControlledState(
2324
- props.value,
2325
- props.defaultValue || "",
2326
- useCallback7(
2327
- (value2) => onChange?.({ target: { name: props.name, value: value2 } }),
2328
- [props.name, onChange]
2329
- )
2330
- );
2331
- const [displayValue, setDisplayValue] = useState5(
2332
- () => value ? formatValueString(parseDate(value, format), displayFormat) : ""
2333
- );
2334
- const [anchorEl, setAnchorEl] = useState5(null);
2335
- const open = Boolean(anchorEl);
2336
- useEffect3(() => {
2337
- if (!anchorEl) {
2338
- innerRef.current?.blur();
2339
- }
2340
- }, [anchorEl, innerRef]);
2341
- useEffect3(() => {
2342
- if (value === "") {
2343
- setDisplayValue("");
2070
+ M: {
2071
+ mask: IMask.MaskedRange,
2072
+ from: 1,
2073
+ to: 12,
2074
+ maxLength: 2
2075
+ },
2076
+ Y: {
2077
+ mask: IMask.MaskedRange,
2078
+ from: 1900,
2079
+ to: 9999,
2080
+ maxLength: 4
2081
+ }
2082
+ },
2083
+ format: (date) => formatValueString(date, format),
2084
+ parse: (str) => parseDate(str, format),
2085
+ autofix: "pad",
2086
+ overwrite: true
2087
+ }
2088
+ );
2089
+ });
2090
+ var DatePicker = forwardRef6((inProps, ref) => {
2091
+ const props = useThemeProps4({ props: inProps, name: "DatePicker" });
2092
+ const {
2093
+ onChange,
2094
+ disabled,
2095
+ label,
2096
+ error,
2097
+ helperText,
2098
+ minDate,
2099
+ maxDate,
2100
+ disableFuture,
2101
+ disablePast,
2102
+ required,
2103
+ // NOTE: 스타일 관련된 props는 최상위 엘리먼트에 적용한다.
2104
+ sx,
2105
+ className,
2106
+ format = "YYYY/MM/DD",
2107
+ displayFormat = "YYYY/MM/DD",
2108
+ size,
2109
+ inputReadOnly,
2110
+ hideClearButton,
2111
+ readOnly,
2112
+ shouldDisableDate,
2113
+ ...innerProps
2114
+ } = props;
2115
+ const innerRef = useRef3(null);
2116
+ const buttonRef = useRef3(null);
2117
+ const [value, setValue] = useControlledState(
2118
+ props.value,
2119
+ props.defaultValue || "",
2120
+ useCallback7((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
2121
+ );
2122
+ const [displayValue, setDisplayValue] = useState5(
2123
+ () => value ? formatValueString(parseDate(value, format), displayFormat) : ""
2124
+ );
2125
+ const [anchorEl, setAnchorEl] = useState5(null);
2126
+ const open = Boolean(anchorEl);
2127
+ useEffect3(() => {
2128
+ if (!anchorEl) {
2129
+ innerRef.current?.blur();
2130
+ }
2131
+ }, [anchorEl, innerRef]);
2132
+ useEffect3(() => {
2133
+ if (value === "") {
2134
+ setDisplayValue("");
2135
+ return;
2136
+ }
2137
+ const formattedValue = formatValueString(parseDate(value, format), displayFormat);
2138
+ if (validValueFormat(formattedValue, displayFormat) && formattedValue !== displayValue) {
2139
+ setDisplayValue(formattedValue);
2140
+ }
2141
+ }, [displayFormat, displayValue, format, value]);
2142
+ useImperativeHandle(ref, () => innerRef.current, [innerRef]);
2143
+ const handleChange = useCallback7(
2144
+ (event) => {
2145
+ const value2 = event.target.value;
2146
+ setDisplayValue(value2 ? formatValueString(parseDate(value2, format), displayFormat) : value2);
2147
+ setValue(value2);
2148
+ },
2149
+ [displayFormat, format, setValue]
2150
+ );
2151
+ const handleDisplayInputChange = useCallback7(
2152
+ (event) => {
2153
+ if (event.target.value === "") {
2154
+ handleChange({
2155
+ target: {
2156
+ name: props.name,
2157
+ value: ""
2158
+ }
2159
+ });
2344
2160
  return;
2345
2161
  }
2346
- const formattedValue = formatValueString(
2347
- parseDate(value, format),
2348
- displayFormat
2349
- );
2350
- if (validValueFormat(formattedValue, displayFormat) && formattedValue !== displayValue) {
2351
- setDisplayValue(formattedValue);
2162
+ const isValidDisplayValue = validValueFormat(event.target.value, displayFormat);
2163
+ if (isValidDisplayValue) {
2164
+ const parsedDate = parseDate(event.target.value, displayFormat);
2165
+ const formattedValue = formatValueString(parsedDate, format);
2166
+ handleChange({
2167
+ target: {
2168
+ name: props.name,
2169
+ value: formattedValue
2170
+ }
2171
+ });
2352
2172
  }
2353
- }, [displayFormat, displayValue, format, value]);
2354
- useImperativeHandle(ref, () => innerRef.current, [
2355
- innerRef
2356
- ]);
2357
- const handleChange = useCallback7(
2358
- (event) => {
2359
- const value2 = event.target.value;
2360
- setDisplayValue(
2361
- value2 ? formatValueString(parseDate(value2, format), displayFormat) : value2
2362
- );
2363
- setValue(value2);
2364
- },
2365
- [displayFormat, format, setValue]
2366
- );
2367
- const handleDisplayInputChange = useCallback7(
2368
- (event) => {
2369
- if (event.target.value === "") {
2370
- handleChange({
2371
- target: {
2372
- name: props.name,
2373
- value: ""
2173
+ },
2174
+ [displayFormat, format, handleChange, props.name]
2175
+ );
2176
+ const handleCalendarToggle = useCallback7(
2177
+ (event) => {
2178
+ setAnchorEl(anchorEl ? null : event.currentTarget);
2179
+ setTimeout(() => {
2180
+ innerRef.current?.focus();
2181
+ }, 0);
2182
+ },
2183
+ [anchorEl, setAnchorEl, innerRef]
2184
+ );
2185
+ const handleInputMouseDown = useCallback7(
2186
+ (event) => {
2187
+ if (inputReadOnly) {
2188
+ event.preventDefault();
2189
+ buttonRef.current?.focus();
2190
+ }
2191
+ },
2192
+ [inputReadOnly, buttonRef]
2193
+ );
2194
+ return /* @__PURE__ */ React17.createElement(DatePickerRoot, null, /* @__PURE__ */ React17.createElement(FocusTrap, { open: true }, /* @__PURE__ */ React17.createElement(React17.Fragment, null, /* @__PURE__ */ React17.createElement(
2195
+ Input_default,
2196
+ {
2197
+ ...innerProps,
2198
+ color: error ? "danger" : innerProps.color,
2199
+ ref: innerRef,
2200
+ size,
2201
+ value: displayValue,
2202
+ onChange: handleDisplayInputChange,
2203
+ placeholder: displayFormat,
2204
+ disabled,
2205
+ required,
2206
+ error,
2207
+ slotProps: {
2208
+ input: {
2209
+ component: TextMaskAdapter3,
2210
+ ref: innerRef,
2211
+ format: displayFormat,
2212
+ sx: {
2213
+ "&:hover": {
2214
+ cursor: inputReadOnly || readOnly ? "default" : "text"
2374
2215
  }
2375
- });
2376
- return;
2216
+ },
2217
+ onMouseDown: handleInputMouseDown
2377
2218
  }
2378
- const isValidDisplayValue = validValueFormat(
2379
- event.target.value,
2380
- displayFormat
2381
- );
2382
- if (isValidDisplayValue) {
2383
- const parsedDate = parseDate(event.target.value, displayFormat);
2384
- const formattedValue = formatValueString(parsedDate, format);
2219
+ },
2220
+ className,
2221
+ sx,
2222
+ endDecorator: /* @__PURE__ */ React17.createElement(
2223
+ CalendarButton,
2224
+ {
2225
+ ref: buttonRef,
2226
+ variant: "plain",
2227
+ onClick: readOnly ? void 0 : handleCalendarToggle,
2228
+ "aria-label": "Toggle Calendar",
2229
+ "aria-controls": "date-picker-popper",
2230
+ "aria-haspopup": "dialog",
2231
+ "aria-expanded": open,
2232
+ disabled
2233
+ },
2234
+ /* @__PURE__ */ React17.createElement(CalendarTodayIcon, null)
2235
+ ),
2236
+ label,
2237
+ helperText,
2238
+ readOnly: readOnly || inputReadOnly
2239
+ }
2240
+ ), open && /* @__PURE__ */ React17.createElement(ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ React17.createElement(
2241
+ StyledPopper,
2242
+ {
2243
+ id: "date-picker-popper",
2244
+ open: true,
2245
+ anchorEl,
2246
+ placement: "bottom-end",
2247
+ onMouseDown: (e) => e.preventDefault(),
2248
+ modifiers: [
2249
+ {
2250
+ name: "offset",
2251
+ options: {
2252
+ offset: [4, 4]
2253
+ }
2254
+ }
2255
+ ],
2256
+ "aria-label": "Calendar Tooltip",
2257
+ "aria-expanded": open
2258
+ },
2259
+ /* @__PURE__ */ React17.createElement(CalendarSheet, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ React17.createElement(
2260
+ Calendar_default,
2261
+ {
2262
+ value: value && !Number.isNaN(parseDate(value, format).getTime()) ? [parseDate(value, format), void 0] : void 0,
2263
+ onChange: ([date]) => {
2385
2264
  handleChange({
2386
2265
  target: {
2387
2266
  name: props.name,
2388
- value: formattedValue
2267
+ value: formatValueString(date, format)
2389
2268
  }
2390
2269
  });
2391
- }
2392
- },
2393
- [displayFormat, format, handleChange, props.name]
2394
- );
2395
- const handleCalendarToggle = useCallback7(
2396
- (event) => {
2397
- setAnchorEl(anchorEl ? null : event.currentTarget);
2398
- setTimeout(() => {
2399
- innerRef.current?.focus();
2400
- }, 0);
2401
- },
2402
- [anchorEl, setAnchorEl, innerRef]
2403
- );
2404
- const handleInputMouseDown = useCallback7(
2405
- (event) => {
2406
- if (inputReadOnly) {
2407
- event.preventDefault();
2408
- buttonRef.current?.focus();
2409
- }
2410
- },
2411
- [inputReadOnly, buttonRef]
2412
- );
2413
- return /* @__PURE__ */ React17.createElement(DatePickerRoot, null, /* @__PURE__ */ React17.createElement(FocusTrap, { open: true }, /* @__PURE__ */ React17.createElement(React17.Fragment, null, /* @__PURE__ */ React17.createElement(
2414
- Input_default,
2415
- {
2416
- ...innerProps,
2417
- color: error ? "danger" : innerProps.color,
2418
- ref: innerRef,
2419
- size,
2420
- value: displayValue,
2421
- onChange: handleDisplayInputChange,
2422
- placeholder: displayFormat,
2423
- disabled,
2424
- required,
2425
- error,
2426
- slotProps: {
2427
- input: {
2428
- component: TextMaskAdapter3,
2429
- ref: innerRef,
2430
- format: displayFormat,
2431
- sx: {
2432
- "&:hover": {
2433
- cursor: inputReadOnly || readOnly ? "default" : "text"
2434
- }
2435
- },
2436
- onMouseDown: handleInputMouseDown
2437
- }
2270
+ setAnchorEl(null);
2438
2271
  },
2439
- className,
2440
- sx,
2441
- endDecorator: /* @__PURE__ */ React17.createElement(
2442
- CalendarButton,
2443
- {
2444
- ref: buttonRef,
2445
- variant: "plain",
2446
- onClick: readOnly ? void 0 : handleCalendarToggle,
2447
- "aria-label": "Toggle Calendar",
2448
- "aria-controls": "date-picker-popper",
2449
- "aria-haspopup": "dialog",
2450
- "aria-expanded": open,
2451
- disabled
2452
- },
2453
- /* @__PURE__ */ React17.createElement(CalendarTodayIcon, null)
2454
- ),
2455
- label,
2456
- helperText,
2457
- readOnly: readOnly || inputReadOnly
2272
+ minDate: minDate ? new Date(minDate) : void 0,
2273
+ maxDate: maxDate ? new Date(maxDate) : void 0,
2274
+ disableFuture,
2275
+ disablePast,
2276
+ shouldDisableDate: shouldDisableDate ? (date) => shouldDisableDate(formatValueString(date, format)) : void 0
2458
2277
  }
2459
- ), open && /* @__PURE__ */ React17.createElement(ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ React17.createElement(
2460
- StyledPopper,
2278
+ ), !hideClearButton && /* @__PURE__ */ React17.createElement(
2279
+ DialogActions_default,
2461
2280
  {
2462
- id: "date-picker-popper",
2463
- open: true,
2464
- anchorEl,
2465
- placement: "bottom-end",
2466
- onMouseDown: (e) => e.preventDefault(),
2467
- modifiers: [
2468
- {
2469
- name: "offset",
2470
- options: {
2471
- offset: [4, 4]
2472
- }
2473
- }
2474
- ],
2475
- "aria-label": "Calendar Tooltip",
2476
- "aria-expanded": open
2281
+ sx: {
2282
+ p: 1
2283
+ }
2477
2284
  },
2478
- /* @__PURE__ */ React17.createElement(CalendarSheet, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ React17.createElement(
2479
- Calendar_default,
2285
+ /* @__PURE__ */ React17.createElement(
2286
+ Button_default,
2480
2287
  {
2481
- value: value && !Number.isNaN(parseDate(value, format).getTime()) ? [parseDate(value, format), void 0] : void 0,
2482
- onChange: ([date]) => {
2288
+ size,
2289
+ variant: "plain",
2290
+ color: "neutral",
2291
+ onClick: () => {
2483
2292
  handleChange({
2484
2293
  target: {
2485
2294
  name: props.name,
2486
- value: formatValueString(date, format)
2295
+ value: ""
2487
2296
  }
2488
2297
  });
2489
2298
  setAnchorEl(null);
2490
- },
2491
- minDate: minDate ? new Date(minDate) : void 0,
2492
- maxDate: maxDate ? new Date(maxDate) : void 0,
2493
- disableFuture,
2494
- disablePast,
2495
- shouldDisableDate: shouldDisableDate ? (date) => shouldDisableDate(formatValueString(date, format)) : void 0
2496
- }
2497
- ), !hideClearButton && /* @__PURE__ */ React17.createElement(
2498
- DialogActions_default,
2499
- {
2500
- sx: {
2501
- p: 1
2502
2299
  }
2503
2300
  },
2504
- /* @__PURE__ */ React17.createElement(
2505
- Button_default,
2506
- {
2507
- size,
2508
- variant: "plain",
2509
- color: "neutral",
2510
- onClick: () => {
2511
- handleChange({
2512
- target: {
2513
- name: props.name,
2514
- value: ""
2515
- }
2516
- });
2517
- setAnchorEl(null);
2518
- }
2519
- },
2520
- "Clear"
2521
- )
2522
- ))
2523
- )))));
2524
- }
2525
- );
2301
+ "Clear"
2302
+ )
2303
+ ))
2304
+ )))));
2305
+ });
2526
2306
 
2527
2307
  // src/components/DatePicker/index.ts
2528
2308
  var DatePicker_default = DatePicker;
@@ -2583,10 +2363,7 @@ var Textarea_default = Textarea;
2583
2363
 
2584
2364
  // src/components/Select/Select.tsx
2585
2365
  import React19, { useMemo as useMemo7 } from "react";
2586
- import {
2587
- Select as JoySelect,
2588
- Option as JoyOption
2589
- } from "@mui/joy";
2366
+ import { Select as JoySelect, Option as JoyOption } from "@mui/joy";
2590
2367
  import { motion as motion19 } from "framer-motion";
2591
2368
  var MotionOption = motion19(JoyOption);
2592
2369
  var Option = MotionOption;
@@ -2758,18 +2535,9 @@ function Pagination(props) {
2758
2535
  setPaginationModel({ ...paginationModel, page: newPage });
2759
2536
  };
2760
2537
  const firstPage = 1;
2761
- const lastPage = Math.max(
2762
- firstPage,
2763
- Math.ceil(rowCount / paginationModel.pageSize)
2764
- );
2765
- const beforePages = [
2766
- paginationModel.page - 2,
2767
- paginationModel.page - 1
2768
- ].filter((p) => p > 1);
2769
- const afterPages = [
2770
- paginationModel.page + 1,
2771
- paginationModel.page + 2
2772
- ].filter((p) => p <= lastPage - 1);
2538
+ const lastPage = Math.max(firstPage, Math.ceil(rowCount / paginationModel.pageSize));
2539
+ const beforePages = [paginationModel.page - 2, paginationModel.page - 1].filter((p) => p > 1);
2540
+ const afterPages = [paginationModel.page + 1, paginationModel.page + 2].filter((p) => p <= lastPage - 1);
2773
2541
  const isMoreAfterPages = lastPage > 1 && paginationModel.page < lastPage - 3;
2774
2542
  const isMoreBeforePages = lastPage > 1 && paginationModel.page > 4;
2775
2543
  useEffect4(() => {
@@ -2788,16 +2556,7 @@ function Pagination(props) {
2788
2556
  "aria-label": "Previous page"
2789
2557
  },
2790
2558
  /* @__PURE__ */ React21.createElement(PreviousIcon, null)
2791
- ), paginationModel.page !== firstPage && /* @__PURE__ */ React21.createElement(
2792
- PaginationButton,
2793
- {
2794
- size,
2795
- variant: "plain",
2796
- color: "neutral",
2797
- onClick: () => handlePageChange(firstPage)
2798
- },
2799
- firstPage
2800
- ), isMoreBeforePages && /* @__PURE__ */ React21.createElement(
2559
+ ), paginationModel.page !== firstPage && /* @__PURE__ */ React21.createElement(PaginationButton, { size, variant: "plain", color: "neutral", onClick: () => handlePageChange(firstPage) }, firstPage), isMoreBeforePages && /* @__PURE__ */ React21.createElement(
2801
2560
  PaginationButton,
2802
2561
  {
2803
2562
  size,
@@ -2807,27 +2566,7 @@ function Pagination(props) {
2807
2566
  "aria-label": "More previous pages"
2808
2567
  },
2809
2568
  "..."
2810
- ), beforePages.map((p) => /* @__PURE__ */ React21.createElement(
2811
- PaginationButton,
2812
- {
2813
- key: p,
2814
- size,
2815
- variant: "plain",
2816
- color: "neutral",
2817
- onClick: () => handlePageChange(p)
2818
- },
2819
- p
2820
- )), /* @__PURE__ */ React21.createElement(PaginationButton, { active: "active", size, "aria-current": "page" }, paginationModel.page), afterPages.map((p) => /* @__PURE__ */ React21.createElement(
2821
- PaginationButton,
2822
- {
2823
- key: p,
2824
- size,
2825
- variant: "plain",
2826
- color: "neutral",
2827
- onClick: () => handlePageChange(p)
2828
- },
2829
- p
2830
- )), isMoreAfterPages && /* @__PURE__ */ React21.createElement(
2569
+ ), beforePages.map((p) => /* @__PURE__ */ React21.createElement(PaginationButton, { key: p, size, variant: "plain", color: "neutral", onClick: () => handlePageChange(p) }, p)), /* @__PURE__ */ React21.createElement(PaginationButton, { active: "active", size, "aria-current": "page" }, paginationModel.page), afterPages.map((p) => /* @__PURE__ */ React21.createElement(PaginationButton, { key: p, size, variant: "plain", color: "neutral", onClick: () => handlePageChange(p) }, p)), isMoreAfterPages && /* @__PURE__ */ React21.createElement(
2831
2570
  PaginationButton,
2832
2571
  {
2833
2572
  size,
@@ -2837,16 +2576,7 @@ function Pagination(props) {
2837
2576
  onClick: () => handlePageChange(paginationModel.page + 3)
2838
2577
  },
2839
2578
  "..."
2840
- ), paginationModel.page !== lastPage && /* @__PURE__ */ React21.createElement(
2841
- PaginationButton,
2842
- {
2843
- size,
2844
- variant: "plain",
2845
- color: "neutral",
2846
- onClick: () => handlePageChange(lastPage)
2847
- },
2848
- lastPage
2849
- ), /* @__PURE__ */ React21.createElement(
2579
+ ), paginationModel.page !== lastPage && /* @__PURE__ */ React21.createElement(PaginationButton, { size, variant: "plain", color: "neutral", onClick: () => handlePageChange(lastPage) }, lastPage), /* @__PURE__ */ React21.createElement(
2850
2580
  PaginationIconButton,
2851
2581
  {
2852
2582
  size,
@@ -2866,10 +2596,7 @@ var Pagination_default = Pagination;
2866
2596
 
2867
2597
  // src/components/InfoSign/InfoSign.tsx
2868
2598
  import React22 from "react";
2869
- import {
2870
- styled as styled11,
2871
- tooltipClasses
2872
- } from "@mui/joy";
2599
+ import { styled as styled11, tooltipClasses } from "@mui/joy";
2873
2600
  import MuiInfoIcon from "@mui/icons-material/Info";
2874
2601
  var InfoIcon = styled11(MuiInfoIcon, {
2875
2602
  name: "InfoSign",
@@ -2925,15 +2652,7 @@ var TextEllipsis = ({ children }) => {
2925
2652
  }, [children]);
2926
2653
  const content = /* @__PURE__ */ React23.createElement(EllipsisDiv, { ref: textRef }, children);
2927
2654
  if (showTooltip) {
2928
- return /* @__PURE__ */ React23.createElement(
2929
- Tooltip_default,
2930
- {
2931
- title: children,
2932
- placement: "top",
2933
- onClick: (e) => e.stopPropagation()
2934
- },
2935
- content
2936
- );
2655
+ return /* @__PURE__ */ React23.createElement(Tooltip_default, { title: children, placement: "top", onClick: (e) => e.stopPropagation() }, content);
2937
2656
  }
2938
2657
  return content;
2939
2658
  };
@@ -3117,10 +2836,7 @@ var HeadCell = (props) => {
3117
2836
  () => `${tableId}_header_${headerName ?? field}`.trim(),
3118
2837
  [tableId, headerName, field]
3119
2838
  );
3120
- const resizer = useMemo8(
3121
- () => resizable ?? true ? Resizer(ref) : null,
3122
- [resizable, ref]
3123
- );
2839
+ const resizer = useMemo8(() => resizable ?? true ? Resizer(ref) : null, [resizable, ref]);
3124
2840
  const style = useMemo8(
3125
2841
  () => ({
3126
2842
  width,
@@ -3135,17 +2851,7 @@ var HeadCell = (props) => {
3135
2851
  // TODO: multi-sort때문에 일단 추가한 property, joy-ui에서는 multi-sort시 th에 user-select: none을 적용하고 툴팁을 띄워준다.
3136
2852
  userSelect: "none"
3137
2853
  }),
3138
- [
3139
- isPinned,
3140
- maxWidth,
3141
- minWidth,
3142
- pinnedEndPosition,
3143
- pinnedStartPosition,
3144
- sortable,
3145
- stickyHeader,
3146
- theme,
3147
- width
3148
- ]
2854
+ [isPinned, maxWidth, minWidth, pinnedEndPosition, pinnedStartPosition, sortable, stickyHeader, theme, width]
3149
2855
  );
3150
2856
  const textAlign = getTextAlign(props);
3151
2857
  const initialSort = sortOrder[0];
@@ -3202,20 +2908,7 @@ var HeadCell = (props) => {
3202
2908
  whileHover: "hover",
3203
2909
  initial: "initial"
3204
2910
  },
3205
- /* @__PURE__ */ React23.createElement(
3206
- Stack_default,
3207
- {
3208
- gap: 1,
3209
- direction: "row",
3210
- justifyContent: textAlign,
3211
- alignItems: "center"
3212
- },
3213
- textAlign === "end" && sortIcon,
3214
- textAlign === "end" && infoSign,
3215
- /* @__PURE__ */ React23.createElement(TextEllipsis, null, headerName ?? field, editMode && required && /* @__PURE__ */ React23.createElement(Asterisk, null, "*")),
3216
- textAlign === "start" && infoSign,
3217
- textAlign === "start" && sortIcon
3218
- ),
2911
+ /* @__PURE__ */ React23.createElement(Stack_default, { gap: 1, direction: "row", justifyContent: textAlign, alignItems: "center" }, textAlign === "end" && sortIcon, textAlign === "end" && infoSign, /* @__PURE__ */ React23.createElement(TextEllipsis, null, headerName ?? field, editMode && required && /* @__PURE__ */ React23.createElement(Asterisk, null, "*")), textAlign === "start" && infoSign, textAlign === "start" && sortIcon),
3219
2912
  resizer
3220
2913
  );
3221
2914
  };
@@ -3234,7 +2927,10 @@ var BodyCell = (props) => {
3234
2927
  pinnedStartPosition,
3235
2928
  pinnedEndPosition,
3236
2929
  row,
3237
- rowId
2930
+ rowId,
2931
+ cellClassName,
2932
+ onCellEditStart,
2933
+ onCellEditStop
3238
2934
  } = props;
3239
2935
  const theme = useTheme();
3240
2936
  const [value, setValue] = useState6(row[field]);
@@ -3243,20 +2939,22 @@ var BodyCell = (props) => {
3243
2939
  () => ({
3244
2940
  row,
3245
2941
  value,
3246
- id: rowId
2942
+ id: rowId,
2943
+ field
3247
2944
  }),
3248
- [row, rowId, value]
2945
+ [row, rowId, value, field]
3249
2946
  );
3250
2947
  const editMode = useMemo8(
3251
2948
  () => !!(props.editMode && (typeof isCellEditable === "function" ? isCellEditable(params) : isCellEditable ?? true)),
3252
2949
  [props.editMode, isCellEditable, params]
3253
2950
  );
2951
+ const propsComponentProps = "componentProps" in props ? props.componentProps : null;
3254
2952
  const componentProps = useMemo8(
3255
2953
  () => ({
3256
- ..."componentProps" in props && (typeof props.componentProps === "function" ? props.componentProps(params) : props.componentProps || {}),
2954
+ ..."componentProps" in props && (typeof propsComponentProps === "function" ? propsComponentProps(params) : propsComponentProps || {}),
3257
2955
  size: "sm"
3258
2956
  }),
3259
- ["componentProps" in props ? props.componentProps : null, params]
2957
+ [props, propsComponentProps, params]
3260
2958
  );
3261
2959
  const editModeComponentProps = useMemo8(
3262
2960
  () => ({
@@ -3265,7 +2963,7 @@ var BodyCell = (props) => {
3265
2963
  componentProps.onChange?.(e);
3266
2964
  setValue(e.target.value);
3267
2965
  if (type === "select") {
3268
- props.onCellEditStop?.({
2966
+ onCellEditStop?.({
3269
2967
  ...params,
3270
2968
  originalRow: row,
3271
2969
  row: {
@@ -3278,7 +2976,7 @@ var BodyCell = (props) => {
3278
2976
  },
3279
2977
  onFocus: (e) => {
3280
2978
  componentProps.onFocus?.(e);
3281
- props.onCellEditStart?.({
2979
+ onCellEditStart?.({
3282
2980
  ...params,
3283
2981
  originalRow: row,
3284
2982
  row: {
@@ -3291,7 +2989,7 @@ var BodyCell = (props) => {
3291
2989
  onBlur: (e) => {
3292
2990
  componentProps.onBlur?.(e);
3293
2991
  if (type && ["number", "text", "longText", "currency", "date"].includes(type)) {
3294
- props.onCellEditStop?.({
2992
+ onCellEditStop?.({
3295
2993
  ...params,
3296
2994
  originalRow: row,
3297
2995
  row: {
@@ -3306,7 +3004,7 @@ var BodyCell = (props) => {
3306
3004
  onChangeComplete: (e) => {
3307
3005
  componentProps.onChangeComplete?.(e);
3308
3006
  setValue(e.target.value);
3309
- props.onCellEditStop?.({
3007
+ onCellEditStop?.({
3310
3008
  ...params,
3311
3009
  originalRow: row,
3312
3010
  row: {
@@ -3318,29 +3016,14 @@ var BodyCell = (props) => {
3318
3016
  }
3319
3017
  }
3320
3018
  }),
3321
- [
3322
- params,
3323
- row,
3324
- field,
3325
- value,
3326
- componentProps,
3327
- type,
3328
- props.onCellEditStop,
3329
- props.onCellEditStart
3330
- ]
3019
+ [params, row, field, value, componentProps, type, onCellEditStop, onCellEditStart]
3331
3020
  );
3332
3021
  const EditModeComponent = useMemo8(() => {
3333
3022
  if (renderEditCell) {
3334
3023
  return createElement(memo(renderEditCell), params);
3335
3024
  }
3336
3025
  return {
3337
- date: /* @__PURE__ */ React23.createElement(
3338
- DatePicker_default,
3339
- {
3340
- value,
3341
- ...editModeComponentProps
3342
- }
3343
- ),
3026
+ date: /* @__PURE__ */ React23.createElement(DatePicker_default, { value, ...editModeComponentProps }),
3344
3027
  currency: /* @__PURE__ */ React23.createElement(
3345
3028
  CurrencyInput_default,
3346
3029
  {
@@ -3348,29 +3031,9 @@ var BodyCell = (props) => {
3348
3031
  ...editModeComponentProps
3349
3032
  }
3350
3033
  ),
3351
- number: /* @__PURE__ */ React23.createElement(
3352
- Input_default,
3353
- {
3354
- value,
3355
- type: "number",
3356
- ...editModeComponentProps
3357
- }
3358
- ),
3359
- text: /* @__PURE__ */ React23.createElement(
3360
- Input_default,
3361
- {
3362
- value,
3363
- type: "text",
3364
- ...editModeComponentProps
3365
- }
3366
- ),
3367
- longText: /* @__PURE__ */ React23.createElement(
3368
- Textarea_default,
3369
- {
3370
- value,
3371
- ...editModeComponentProps
3372
- }
3373
- ),
3034
+ number: /* @__PURE__ */ React23.createElement(Input_default, { value, type: "number", ...editModeComponentProps }),
3035
+ text: /* @__PURE__ */ React23.createElement(Input_default, { value, type: "text", ...editModeComponentProps }),
3036
+ longText: /* @__PURE__ */ React23.createElement(Textarea_default, { value, ...editModeComponentProps }),
3374
3037
  autocomplete: /* @__PURE__ */ React23.createElement(
3375
3038
  Autocomplete_default,
3376
3039
  {
@@ -3388,50 +3051,34 @@ var BodyCell = (props) => {
3388
3051
  }
3389
3052
  )
3390
3053
  }[type || "text"];
3391
- }, [value, editModeComponentProps, type]);
3054
+ }, [value, editModeComponentProps, type, renderEditCell, params]);
3055
+ const linkComponentFromProps = props.component;
3392
3056
  const ReadModeComponent = useMemo8(() => {
3393
3057
  if (renderCell) {
3394
3058
  return createElement(memo(renderCell), params);
3395
3059
  }
3396
3060
  const innerText = value;
3397
3061
  const typedComponent = {
3398
- link: React23.createElement(
3399
- props.component || Link,
3400
- {
3401
- children: innerText,
3402
- ...componentProps
3403
- }
3404
- )
3062
+ link: React23.createElement(linkComponentFromProps || Link, {
3063
+ children: innerText,
3064
+ ...componentProps
3065
+ })
3405
3066
  }[type || "text"];
3406
3067
  return typedComponent || innerText;
3407
- }, [value, renderCell, params, type, componentProps]);
3068
+ }, [value, renderCell, params, type, componentProps, linkComponentFromProps]);
3069
+ const getActions = props.getActions;
3408
3070
  const CellComponent = useMemo8(() => {
3409
3071
  if (type === "actions") {
3410
- return /* @__PURE__ */ React23.createElement(
3411
- Stack_default,
3412
- {
3413
- direction: "row",
3414
- gap: 1,
3415
- justifyContent: "center",
3416
- alignItems: "center"
3417
- },
3418
- props.getActions?.(params)
3419
- );
3072
+ return /* @__PURE__ */ React23.createElement(Stack_default, { direction: "row", gap: 1, justifyContent: "center", alignItems: "center" }, getActions?.(params));
3420
3073
  }
3421
3074
  return editMode && EditModeComponent ? EditModeComponent : ReadModeComponent;
3422
- }, [
3423
- type,
3424
- props.getActions,
3425
- params,
3426
- editMode,
3427
- EditModeComponent,
3428
- ReadModeComponent
3429
- ]);
3430
- const showTooltip = useMemo8(
3431
- () => noWrap && type === "longText",
3432
- [noWrap, type]
3433
- );
3075
+ }, [type, getActions, params, editMode, EditModeComponent, ReadModeComponent]);
3076
+ const showTooltip = useMemo8(() => noWrap && type === "longText", [noWrap, type]);
3434
3077
  const isBoundary = props.isLastStartPinnedColumn || props.isLastEndPinnedColumn;
3078
+ const computedCellClassName = useMemo8(
3079
+ () => (typeof cellClassName === "function" ? cellClassName(params) : cellClassName) || "",
3080
+ [cellClassName, params]
3081
+ );
3435
3082
  useEffect5(() => {
3436
3083
  setValue(row[field]);
3437
3084
  }, [row, field]);
@@ -3450,11 +3097,11 @@ var BodyCell = (props) => {
3450
3097
  zIndex: isPinned ? `calc(${theme.getCssVar("zIndex-table")} + ${isBoundary ? 2 : 3})` : void 0,
3451
3098
  "--TableCell-dataBackground": isPinned ? `var(--TableCell-headBackground)` : void 0
3452
3099
  },
3453
- className: isLastStartPinnedColumn && "is-last-left" || isLastEndPinnedColumn && "is-last-right" || ""
3100
+ className: [isLastStartPinnedColumn && "is-last-left", isLastEndPinnedColumn && "is-last-right", computedCellClassName].filter(Boolean).join(" ") || ""
3454
3101
  },
3455
3102
  useMemo8(
3456
3103
  () => showTooltip ? /* @__PURE__ */ React23.createElement(CellTextEllipsis, null, CellComponent) : CellComponent,
3457
- [CellComponent, showTooltip, value]
3104
+ [CellComponent, showTooltip]
3458
3105
  )
3459
3106
  );
3460
3107
  };
@@ -3532,10 +3179,7 @@ function useDataTableRenderer({
3532
3179
  const [sortModel, setSortModel] = useControlledState(
3533
3180
  controlledSortModel,
3534
3181
  initialState?.sorting?.sortModel ?? [],
3535
- useCallback9(
3536
- (sortModel2) => onSortModelChange?.(sortModel2),
3537
- [onSortModelChange]
3538
- )
3182
+ useCallback9((sortModel2) => onSortModelChange?.(sortModel2), [onSortModelChange])
3539
3183
  );
3540
3184
  const columnsByField = useMemo8(
3541
3185
  () => columnsProp.reduce(
@@ -3610,9 +3254,7 @@ function useDataTableRenderer({
3610
3254
  [dataInPage, isRowSelectable, getId]
3611
3255
  );
3612
3256
  const isAllSelected = useMemo8(
3613
- () => selectableDataInPage.length > 0 && selectableDataInPage.every(
3614
- (row, i) => selectedModelSet.has(getId(row, i))
3615
- ),
3257
+ () => selectableDataInPage.length > 0 && selectableDataInPage.every((row, i) => selectedModelSet.has(getId(row, i))),
3616
3258
  [selectableDataInPage, selectedModelSet, getId]
3617
3259
  );
3618
3260
  const rowCount = totalRowsProp || rows.length;
@@ -3636,12 +3278,8 @@ function useDataTableRenderer({
3636
3278
  field: key
3637
3279
  }));
3638
3280
  return baseColumns.map((column) => {
3639
- const isLeftPinned = pinnedColumns?.left?.includes(
3640
- column.field
3641
- );
3642
- const isRightPinned = pinnedColumns?.right?.includes(
3643
- column.field
3644
- );
3281
+ const isLeftPinned = pinnedColumns?.left?.includes(column.field);
3282
+ const isRightPinned = pinnedColumns?.right?.includes(column.field);
3645
3283
  const isPinned = isLeftPinned || isRightPinned;
3646
3284
  return {
3647
3285
  ...column,
@@ -3653,13 +3291,8 @@ function useDataTableRenderer({
3653
3291
  isLastStartPinnedColumn: isLeftPinned && [...pinnedColumns?.left || []].pop() === column.field,
3654
3292
  isLastEndPinnedColumn: isRightPinned && (pinnedColumns?.right?.[0] ?? null) === column.field,
3655
3293
  // pinned 관련 계산부
3656
- pinnedStartPosition: pinnedColumns?.left?.slice(
3657
- 0,
3658
- isLeftPinned ? pinnedColumns.left.indexOf(column.field) : pinnedColumns.left.length
3659
- ).reduce((acc, curr) => acc + getWidth(curr), 0),
3660
- pinnedEndPosition: pinnedColumns?.right?.slice(
3661
- isRightPinned ? pinnedColumns.right.indexOf(column.field) + 1 : 0
3662
- ).reduce((acc, curr) => acc + getWidth(curr), 0)
3294
+ pinnedStartPosition: pinnedColumns?.left?.slice(0, isLeftPinned ? pinnedColumns.left.indexOf(column.field) : pinnedColumns.left.length).reduce((acc, curr) => acc + getWidth(curr), 0),
3295
+ pinnedEndPosition: pinnedColumns?.right?.slice(isRightPinned ? pinnedColumns.right.indexOf(column.field) + 1 : 0).reduce((acc, curr) => acc + getWidth(curr), 0)
3663
3296
  };
3664
3297
  });
3665
3298
  }, [
@@ -3694,9 +3327,7 @@ function useDataTableRenderer({
3694
3327
  setSortModel(newSortModel2);
3695
3328
  return;
3696
3329
  }
3697
- const newSortModel = multiple ? sortModel.map(
3698
- (model) => model.field === field ? { field, sort: nextSortOrder } : model
3699
- ) : [{ field, sort: nextSortOrder }];
3330
+ const newSortModel = multiple ? sortModel.map((model) => model.field === field ? { field, sort: nextSortOrder } : model) : [{ field, sort: nextSortOrder }];
3700
3331
  setSortModel(newSortModel);
3701
3332
  } else {
3702
3333
  const newSortModel = multiple ? [...sortModel, { field, sort: columnSortOrder[0] }] : [{ field, sort: columnSortOrder[0] }];
@@ -3733,10 +3364,7 @@ function useDataTableRenderer({
3733
3364
  isAllSelected,
3734
3365
  // all rows are selected on this page
3735
3366
  isTotalSelected,
3736
- isSelectedRow: useCallback9(
3737
- (model) => selectedModelSet.has(model),
3738
- [selectedModelSet]
3739
- ),
3367
+ isSelectedRow: useCallback9((model) => selectedModelSet.has(model), [selectedModelSet]),
3740
3368
  isRowSelectable: useCallback9(
3741
3369
  (rowId, row) => {
3742
3370
  if (!isRowSelectable) return true;
@@ -3749,16 +3377,12 @@ function useDataTableRenderer({
3749
3377
  setFocusedRowId(rowId);
3750
3378
  }, []),
3751
3379
  onAllCheckboxChange: useCallback9(() => {
3752
- onSelectionModelChange?.(
3753
- isAllSelected ? [] : selectableDataInPage.map(getId)
3754
- );
3380
+ onSelectionModelChange?.(isAllSelected ? [] : selectableDataInPage.map(getId));
3755
3381
  }, [isAllSelected, selectableDataInPage, onSelectionModelChange, getId]),
3756
3382
  onCheckboxChange: useCallback9(
3757
3383
  (event, selectedModel) => {
3758
3384
  if (selectedModelSet.has(selectedModel)) {
3759
- const newSelectionModel = (selectionModel || []).filter(
3760
- (model) => model !== selectedModel
3761
- );
3385
+ const newSelectionModel = (selectionModel || []).filter((model) => model !== selectedModel);
3762
3386
  onSelectionModelChange?.(newSelectionModel);
3763
3387
  } else {
3764
3388
  const newSelectionModel = [...selectionModel || [], selectedModel];
@@ -3773,10 +3397,7 @@ function useDataTableRenderer({
3773
3397
  if (!isRowSelectable) return true;
3774
3398
  return isRowSelectable({ row, id: getId(row, i) });
3775
3399
  });
3776
- onSelectionModelChange?.(
3777
- isTotalSelected ? [] : selectableRows.map(getId),
3778
- !isTotalSelected
3779
- );
3400
+ onSelectionModelChange?.(isTotalSelected ? [] : selectableRows.map(getId), !isTotalSelected);
3780
3401
  }, [isTotalSelected, rows, onSelectionModelChange, getId, isRowSelectable])
3781
3402
  };
3782
3403
  }
@@ -3819,11 +3440,7 @@ function Component(props, apiRef) {
3819
3440
  footer: Footer,
3820
3441
  loadingOverlay: LoadingOverlay = DefaultLoadingOverlay
3821
3442
  } = {},
3822
- slotProps: {
3823
- checkbox: checkboxProps = {},
3824
- toolbar: toolbarProps,
3825
- background: backgroundProps = {}
3826
- } = {},
3443
+ slotProps: { checkbox: checkboxProps = {}, toolbar: toolbarProps, background: backgroundProps = {} } = {},
3827
3444
  stripe,
3828
3445
  isTotalSelected: ___________,
3829
3446
  ...innerProps
@@ -3868,13 +3485,7 @@ function Component(props, apiRef) {
3868
3485
  onRowClick?.({ row, rowId }, e);
3869
3486
  checkboxSelection && !disableSelectionOnClick && isRowSelectableCheck(rowId, row) && onCheckboxChange(e, rowId);
3870
3487
  },
3871
- [
3872
- onRowClick,
3873
- checkboxSelection,
3874
- disableSelectionOnClick,
3875
- onCheckboxChange,
3876
- isRowSelectableCheck
3877
- ]
3488
+ [onRowClick, checkboxSelection, disableSelectionOnClick, onCheckboxChange, isRowSelectableCheck]
3878
3489
  );
3879
3490
  const getRowFocusHandler = useCallback9(
3880
3491
  (rowId) => () => {
@@ -3932,16 +3543,7 @@ function Component(props, apiRef) {
3932
3543
  justifyContent: "space-between",
3933
3544
  alignItems: "center"
3934
3545
  },
3935
- !!checkboxSelection && /* @__PURE__ */ React23.createElement(Stack_default, { direction: "row", spacing: 1 }, !isAllSelected && /* @__PURE__ */ React23.createElement(Typography_default, { level: "body-xs" }, numberFormatter(selectionModel?.length || 0), " items selected"), isAllSelected && !isTotalSelected && /* @__PURE__ */ React23.createElement(Stack_default, { direction: "row", spacing: 1, alignItems: "center" }, /* @__PURE__ */ React23.createElement(Typography_default, { level: "body-xs" }, "All ", numberFormatter(selectionModel?.length || 0), " items on this page are selected."), /* @__PURE__ */ React23.createElement(Button_default, { size: "sm", variant: "plain", onClick: onTotalSelect }, "Select all ", numberFormatter(selectableRowCount), " items")), isTotalSelected && /* @__PURE__ */ React23.createElement(Stack_default, { direction: "row", spacing: 1, alignItems: "center" }, /* @__PURE__ */ React23.createElement(Typography_default, { level: "body-xs" }, "All ", numberFormatter(selectableRowCount), " items are selected."), /* @__PURE__ */ React23.createElement(
3936
- Button_default,
3937
- {
3938
- size: "sm",
3939
- variant: "plain",
3940
- color: "danger",
3941
- onClick: onTotalSelect
3942
- },
3943
- "Cancel"
3944
- ))),
3546
+ !!checkboxSelection && /* @__PURE__ */ React23.createElement(Stack_default, { direction: "row", spacing: 1 }, !isAllSelected && /* @__PURE__ */ React23.createElement(Typography_default, { level: "body-xs" }, numberFormatter(selectionModel?.length || 0), " items selected"), isAllSelected && !isTotalSelected && /* @__PURE__ */ React23.createElement(Stack_default, { direction: "row", spacing: 1, alignItems: "center" }, /* @__PURE__ */ React23.createElement(Typography_default, { level: "body-xs" }, "All ", numberFormatter(selectionModel?.length || 0), " items on this page are selected."), /* @__PURE__ */ React23.createElement(Button_default, { size: "sm", variant: "plain", onClick: onTotalSelect }, "Select all ", numberFormatter(selectableRowCount), " items")), isTotalSelected && /* @__PURE__ */ React23.createElement(Stack_default, { direction: "row", spacing: 1, alignItems: "center" }, /* @__PURE__ */ React23.createElement(Typography_default, { level: "body-xs" }, "All ", numberFormatter(selectableRowCount), " items are selected."), /* @__PURE__ */ React23.createElement(Button_default, { size: "sm", variant: "plain", color: "danger", onClick: onTotalSelect }, "Cancel"))),
3945
3547
  Toolbar && /* @__PURE__ */ React23.createElement(Toolbar, { ...toolbarProps || {} })
3946
3548
  ),
3947
3549
  /* @__PURE__ */ React23.createElement(
@@ -4098,15 +3700,7 @@ var DataTable = forwardRef7(Component);
4098
3700
  DataTable.displayName = "DataTable";
4099
3701
 
4100
3702
  // src/components/DateRangePicker/DateRangePicker.tsx
4101
- import React24, {
4102
- forwardRef as forwardRef8,
4103
- useCallback as useCallback10,
4104
- useEffect as useEffect6,
4105
- useImperativeHandle as useImperativeHandle3,
4106
- useMemo as useMemo9,
4107
- useRef as useRef5,
4108
- useState as useState7
4109
- } from "react";
3703
+ import React24, { forwardRef as forwardRef8, useCallback as useCallback10, useEffect as useEffect6, useImperativeHandle as useImperativeHandle3, useMemo as useMemo9, useRef as useRef5, useState as useState7 } from "react";
4110
3704
  import { IMaskInput as IMaskInput2, IMask as IMask2 } from "react-imask";
4111
3705
  import CalendarTodayIcon2 from "@mui/icons-material/CalendarToday";
4112
3706
  import { styled as styled13, useThemeProps as useThemeProps5 } from "@mui/joy";
@@ -4118,9 +3712,7 @@ var CalendarButton2 = styled13(IconButton_default, {
4118
3712
  "&:focus": {
4119
3713
  "--Icon-color": "currentColor",
4120
3714
  outlineOffset: `${theme.getCssVar("focus-thickness")}`,
4121
- outline: `${theme.getCssVar("focus-thickness")} solid ${theme.getCssVar(
4122
- "palette-focusVisible"
4123
- )}`
3715
+ outline: `${theme.getCssVar("focus-thickness")} solid ${theme.getCssVar("palette-focusVisible")}`
4124
3716
  }
4125
3717
  }));
4126
3718
  var StyledPopper2 = styled13(Popper3, {
@@ -4157,10 +3749,7 @@ var validValueFormat2 = (value, format) => {
4157
3749
  if (parsedDate1.toString() === "Invalid Date" || parsedDate2.toString() === "Invalid Date") {
4158
3750
  return false;
4159
3751
  }
4160
- const formattedValue = formatValueString2(
4161
- [parsedDate1, parsedDate2],
4162
- format
4163
- );
3752
+ const formattedValue = formatValueString2([parsedDate1, parsedDate2], format);
4164
3753
  if (value !== formattedValue) {
4165
3754
  return false;
4166
3755
  }
@@ -4212,296 +3801,268 @@ var parseDates = (str, format) => {
4212
3801
  var formatToPattern2 = (format) => {
4213
3802
  return `${format} - ${format}`.replace(/YYYY/g, "Y").replace(/MM/g, "M").replace(/DD/g, "D").replace(/[^YMD\s]/g, (match) => `${match}\``);
4214
3803
  };
4215
- var TextMaskAdapter5 = React24.forwardRef(
4216
- function TextMaskAdapter6(props, ref) {
4217
- const { onChange, format, ...other } = props;
4218
- return /* @__PURE__ */ React24.createElement(
4219
- IMaskInput2,
4220
- {
4221
- ...other,
4222
- inputRef: ref,
4223
- onAccept: (value) => onChange({ target: { name: props.name, value } }),
4224
- mask: Date,
4225
- pattern: formatToPattern2(format),
4226
- blocks: {
4227
- D: {
4228
- mask: IMask2.MaskedRange,
4229
- from: 1,
4230
- to: 31,
4231
- maxLength: 2
4232
- },
4233
- M: {
4234
- mask: IMask2.MaskedRange,
4235
- from: 1,
4236
- to: 12,
4237
- maxLength: 2
4238
- },
4239
- Y: {
4240
- mask: IMask2.MaskedRange,
4241
- from: 1900,
4242
- to: 9999
4243
- }
3804
+ var TextMaskAdapter5 = React24.forwardRef(function TextMaskAdapter6(props, ref) {
3805
+ const { onChange, format, ...other } = props;
3806
+ return /* @__PURE__ */ React24.createElement(
3807
+ IMaskInput2,
3808
+ {
3809
+ ...other,
3810
+ inputRef: ref,
3811
+ onAccept: (value) => onChange({ target: { name: props.name, value } }),
3812
+ mask: Date,
3813
+ pattern: formatToPattern2(format),
3814
+ blocks: {
3815
+ D: {
3816
+ mask: IMask2.MaskedRange,
3817
+ from: 1,
3818
+ to: 31,
3819
+ maxLength: 2
4244
3820
  },
4245
- format: (dates) => formatValueString2(dates, format),
4246
- parse: (str) => parseDates(str, format),
4247
- autofix: "pad",
4248
- overwrite: true
4249
- }
4250
- );
4251
- }
4252
- );
4253
- var DateRangePicker = forwardRef8(
4254
- (inProps, ref) => {
4255
- const props = useThemeProps5({ props: inProps, name: "DateRangePicker" });
4256
- const {
4257
- onChange,
4258
- disabled,
4259
- label,
4260
- error,
4261
- helperText,
4262
- minDate,
4263
- maxDate,
4264
- disableFuture,
4265
- disablePast,
4266
- required,
4267
- // NOTE: 스타일 관련된 props는 최상위 엘리먼트에 적용한다.
4268
- sx,
4269
- className,
4270
- format = "YYYY/MM/DD",
4271
- displayFormat = "YYYY/MM/DD",
4272
- size,
4273
- inputReadOnly,
4274
- hideClearButton,
4275
- readOnly,
4276
- ...innerProps
4277
- } = props;
4278
- const innerRef = useRef5(null);
4279
- const buttonRef = useRef5(null);
4280
- const [value, setValue] = useControlledState(
4281
- props.value,
4282
- props.defaultValue || "",
4283
- useCallback10(
4284
- (value2) => onChange?.({ target: { name: props.name, value: value2 } }),
4285
- [props.name, onChange]
4286
- )
4287
- );
4288
- const [displayValue, setDisplayValue] = useState7(
4289
- () => value ? formatValueString2(parseDates(value, format), displayFormat) : ""
4290
- );
4291
- const [anchorEl, setAnchorEl] = useState7(null);
4292
- const open = Boolean(anchorEl);
4293
- const calendarValue = useMemo9(
4294
- () => value ? parseDates(value, format) : void 0,
4295
- [value, format]
4296
- );
4297
- useEffect6(() => {
4298
- if (value) {
4299
- try {
4300
- const dates = parseDates(value, format);
4301
- const newDisplayValue = formatValueString2(dates, displayFormat);
4302
- setDisplayValue(newDisplayValue);
4303
- } catch (error2) {
3821
+ M: {
3822
+ mask: IMask2.MaskedRange,
3823
+ from: 1,
3824
+ to: 12,
3825
+ maxLength: 2
3826
+ },
3827
+ Y: {
3828
+ mask: IMask2.MaskedRange,
3829
+ from: 1900,
3830
+ to: 9999
4304
3831
  }
3832
+ },
3833
+ format: (dates) => formatValueString2(dates, format),
3834
+ parse: (str) => parseDates(str, format),
3835
+ autofix: "pad",
3836
+ overwrite: true
3837
+ }
3838
+ );
3839
+ });
3840
+ var DateRangePicker = forwardRef8((inProps, ref) => {
3841
+ const props = useThemeProps5({ props: inProps, name: "DateRangePicker" });
3842
+ const {
3843
+ onChange,
3844
+ disabled,
3845
+ label,
3846
+ error,
3847
+ helperText,
3848
+ minDate,
3849
+ maxDate,
3850
+ disableFuture,
3851
+ disablePast,
3852
+ required,
3853
+ // NOTE: 스타일 관련된 props는 최상위 엘리먼트에 적용한다.
3854
+ sx,
3855
+ className,
3856
+ format = "YYYY/MM/DD",
3857
+ displayFormat = "YYYY/MM/DD",
3858
+ size,
3859
+ inputReadOnly,
3860
+ hideClearButton,
3861
+ readOnly,
3862
+ ...innerProps
3863
+ } = props;
3864
+ const innerRef = useRef5(null);
3865
+ const buttonRef = useRef5(null);
3866
+ const [value, setValue] = useControlledState(
3867
+ props.value,
3868
+ props.defaultValue || "",
3869
+ useCallback10((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
3870
+ );
3871
+ const [displayValue, setDisplayValue] = useState7(
3872
+ () => value ? formatValueString2(parseDates(value, format), displayFormat) : ""
3873
+ );
3874
+ const [anchorEl, setAnchorEl] = useState7(null);
3875
+ const open = Boolean(anchorEl);
3876
+ const calendarValue = useMemo9(
3877
+ () => value ? parseDates(value, format) : void 0,
3878
+ [value, format]
3879
+ );
3880
+ useEffect6(() => {
3881
+ if (value) {
3882
+ try {
3883
+ const dates = parseDates(value, format);
3884
+ const newDisplayValue = formatValueString2(dates, displayFormat);
3885
+ setDisplayValue(newDisplayValue);
3886
+ } catch (error2) {
3887
+ }
3888
+ } else {
3889
+ setDisplayValue("");
3890
+ }
3891
+ }, [displayFormat, value, format]);
3892
+ useEffect6(() => {
3893
+ if (!anchorEl) {
3894
+ innerRef.current?.blur();
3895
+ }
3896
+ }, [anchorEl, innerRef]);
3897
+ useImperativeHandle3(ref, () => innerRef.current, [innerRef]);
3898
+ const handleChange = useCallback10(
3899
+ (event) => {
3900
+ const value2 = event.target.value;
3901
+ setDisplayValue(value2 ? formatValueString2(parseDates(value2, format), displayFormat) : value2);
3902
+ setValue(value2);
3903
+ },
3904
+ [displayFormat, format, setValue]
3905
+ );
3906
+ const handleDisplayInputChange = useCallback10(
3907
+ (event) => {
3908
+ if (event.target.value === "") {
3909
+ handleChange({
3910
+ target: {
3911
+ name: props.name,
3912
+ value: ""
3913
+ }
3914
+ });
3915
+ return;
3916
+ }
3917
+ const isValidDisplayValue = validValueFormat2(event.target.value, displayFormat);
3918
+ if (isValidDisplayValue) {
3919
+ const dates = parseDates(event.target.value, displayFormat);
3920
+ const formattedValue = formatValueString2(dates, format);
3921
+ handleChange({
3922
+ target: {
3923
+ name: props.name,
3924
+ value: formattedValue
3925
+ }
3926
+ });
3927
+ }
3928
+ },
3929
+ [displayFormat, format, handleChange, props.name]
3930
+ );
3931
+ const handleCalendarToggle = useCallback10(
3932
+ (event) => {
3933
+ setAnchorEl(anchorEl ? null : event.currentTarget);
3934
+ innerRef.current?.focus();
3935
+ },
3936
+ [anchorEl, setAnchorEl, innerRef]
3937
+ );
3938
+ const handleCalendarChange = useCallback10(
3939
+ ([date1, date2]) => {
3940
+ if (!date1 || !date2) return;
3941
+ const formattedValue = formatValueString2([date1, date2], format);
3942
+ if (props.value !== void 0) {
3943
+ onChange?.({ target: { name: props.name, value: formattedValue } });
4305
3944
  } else {
4306
- setDisplayValue("");
3945
+ setDisplayValue(formatValueString2([date1, date2], displayFormat));
3946
+ setValue(formattedValue);
4307
3947
  }
4308
- }, [displayFormat, value, format]);
4309
- useEffect6(() => {
4310
- if (!anchorEl) {
4311
- innerRef.current?.blur();
3948
+ setAnchorEl(null);
3949
+ },
3950
+ [props.value, props.name, onChange, setValue, setAnchorEl, format, displayFormat]
3951
+ );
3952
+ const handleInputMouseDown = useCallback10(
3953
+ (event) => {
3954
+ if (inputReadOnly) {
3955
+ event.preventDefault();
3956
+ buttonRef.current?.focus();
4312
3957
  }
4313
- }, [anchorEl, innerRef]);
4314
- useImperativeHandle3(ref, () => innerRef.current, [
4315
- innerRef
4316
- ]);
4317
- const handleChange = useCallback10(
4318
- (event) => {
4319
- const value2 = event.target.value;
4320
- setDisplayValue(
4321
- value2 ? formatValueString2(parseDates(value2, format), displayFormat) : value2
4322
- );
4323
- setValue(value2);
4324
- },
4325
- [displayFormat, format, setValue]
4326
- );
4327
- const handleDisplayInputChange = useCallback10(
4328
- (event) => {
4329
- if (event.target.value === "") {
4330
- handleChange({
4331
- target: {
4332
- name: props.name,
4333
- value: ""
3958
+ },
3959
+ [inputReadOnly, buttonRef]
3960
+ );
3961
+ return /* @__PURE__ */ React24.createElement(DateRangePickerRoot, null, /* @__PURE__ */ React24.createElement(FocusTrap2, { open: true }, /* @__PURE__ */ React24.createElement(React24.Fragment, null, /* @__PURE__ */ React24.createElement(
3962
+ Input_default,
3963
+ {
3964
+ ...innerProps,
3965
+ color: error ? "danger" : innerProps.color,
3966
+ ref,
3967
+ size,
3968
+ value: displayValue,
3969
+ onChange: handleDisplayInputChange,
3970
+ disabled,
3971
+ required,
3972
+ placeholder: `${displayFormat} - ${displayFormat}`,
3973
+ slotProps: {
3974
+ input: {
3975
+ component: TextMaskAdapter5,
3976
+ ref: innerRef,
3977
+ format: displayFormat,
3978
+ sx: {
3979
+ "&:hover": {
3980
+ cursor: inputReadOnly || readOnly ? "default" : "text"
4334
3981
  }
4335
- });
4336
- return;
3982
+ },
3983
+ onMouseDown: handleInputMouseDown
4337
3984
  }
4338
- const isValidDisplayValue = validValueFormat2(
4339
- event.target.value,
4340
- displayFormat
4341
- );
4342
- if (isValidDisplayValue) {
4343
- const dates = parseDates(event.target.value, displayFormat);
4344
- const formattedValue = formatValueString2(dates, format);
4345
- handleChange({
4346
- target: {
4347
- name: props.name,
4348
- value: formattedValue
4349
- }
4350
- });
4351
- }
4352
- },
4353
- [displayFormat, format, handleChange, props.name]
4354
- );
4355
- const handleCalendarToggle = useCallback10(
4356
- (event) => {
4357
- setAnchorEl(anchorEl ? null : event.currentTarget);
4358
- innerRef.current?.focus();
4359
- },
4360
- [anchorEl, setAnchorEl, innerRef]
4361
- );
4362
- const handleCalendarChange = useCallback10(
4363
- ([date1, date2]) => {
4364
- if (!date1 || !date2) return;
4365
- const formattedValue = formatValueString2([date1, date2], format);
4366
- if (props.value !== void 0) {
4367
- onChange?.({ target: { name: props.name, value: formattedValue } });
4368
- } else {
4369
- setDisplayValue(
4370
- formatValueString2([date1, date2], displayFormat)
4371
- );
4372
- setValue(formattedValue);
4373
- }
4374
- setAnchorEl(null);
4375
3985
  },
4376
- [
4377
- props.value,
4378
- props.name,
4379
- onChange,
4380
- setValue,
4381
- setAnchorEl,
4382
- format,
4383
- displayFormat
4384
- ]
4385
- );
4386
- const handleInputMouseDown = useCallback10(
4387
- (event) => {
4388
- if (inputReadOnly) {
4389
- event.preventDefault();
4390
- buttonRef.current?.focus();
3986
+ error,
3987
+ className,
3988
+ sx,
3989
+ endDecorator: /* @__PURE__ */ React24.createElement(
3990
+ CalendarButton2,
3991
+ {
3992
+ ref: buttonRef,
3993
+ variant: "plain",
3994
+ onClick: readOnly ? void 0 : handleCalendarToggle,
3995
+ "aria-label": "Toggle Calendar",
3996
+ "aria-controls": "date-range-picker-popper",
3997
+ "aria-haspopup": "dialog",
3998
+ "aria-expanded": open,
3999
+ disabled
4000
+ },
4001
+ /* @__PURE__ */ React24.createElement(CalendarTodayIcon2, null)
4002
+ ),
4003
+ label,
4004
+ helperText,
4005
+ readOnly: readOnly || inputReadOnly
4006
+ }
4007
+ ), open && /* @__PURE__ */ React24.createElement(ClickAwayListener2, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ React24.createElement(
4008
+ StyledPopper2,
4009
+ {
4010
+ id: "date-range-picker-popper",
4011
+ open: true,
4012
+ anchorEl,
4013
+ placement: "bottom-end",
4014
+ onMouseDown: (e) => e.preventDefault(),
4015
+ modifiers: [
4016
+ {
4017
+ name: "offset",
4018
+ options: {
4019
+ offset: [4, 4]
4020
+ }
4391
4021
  }
4392
- },
4393
- [inputReadOnly, buttonRef]
4394
- );
4395
- return /* @__PURE__ */ React24.createElement(DateRangePickerRoot, null, /* @__PURE__ */ React24.createElement(FocusTrap2, { open: true }, /* @__PURE__ */ React24.createElement(React24.Fragment, null, /* @__PURE__ */ React24.createElement(
4396
- Input_default,
4022
+ ],
4023
+ "aria-label": "Calendar Tooltip",
4024
+ "aria-expanded": open
4025
+ },
4026
+ /* @__PURE__ */ React24.createElement(CalendarSheet2, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ React24.createElement(
4027
+ Calendar_default,
4397
4028
  {
4398
- ...innerProps,
4399
- color: error ? "danger" : innerProps.color,
4400
- ref,
4401
- size,
4402
- value: displayValue,
4403
- onChange: handleDisplayInputChange,
4404
- disabled,
4405
- required,
4406
- placeholder: `${displayFormat} - ${displayFormat}`,
4407
- slotProps: {
4408
- input: {
4409
- component: TextMaskAdapter5,
4410
- ref: innerRef,
4411
- format: displayFormat,
4412
- sx: {
4413
- "&:hover": {
4414
- cursor: inputReadOnly || readOnly ? "default" : "text"
4415
- }
4416
- },
4417
- onMouseDown: handleInputMouseDown
4418
- }
4419
- },
4420
- error,
4421
- className,
4422
- sx,
4423
- endDecorator: /* @__PURE__ */ React24.createElement(
4424
- CalendarButton2,
4425
- {
4426
- ref: buttonRef,
4427
- variant: "plain",
4428
- onClick: readOnly ? void 0 : handleCalendarToggle,
4429
- "aria-label": "Toggle Calendar",
4430
- "aria-controls": "date-range-picker-popper",
4431
- "aria-haspopup": "dialog",
4432
- "aria-expanded": open,
4433
- disabled
4434
- },
4435
- /* @__PURE__ */ React24.createElement(CalendarTodayIcon2, null)
4436
- ),
4437
- label,
4438
- helperText,
4439
- readOnly: readOnly || inputReadOnly
4029
+ rangeSelection: true,
4030
+ defaultValue: calendarValue,
4031
+ onChange: handleCalendarChange,
4032
+ minDate: minDate ? new Date(minDate) : void 0,
4033
+ maxDate: maxDate ? new Date(maxDate) : void 0,
4034
+ disableFuture,
4035
+ disablePast
4440
4036
  }
4441
- ), open && /* @__PURE__ */ React24.createElement(ClickAwayListener2, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ React24.createElement(
4442
- StyledPopper2,
4037
+ ), !hideClearButton && /* @__PURE__ */ React24.createElement(
4038
+ DialogActions_default,
4443
4039
  {
4444
- id: "date-range-picker-popper",
4445
- open: true,
4446
- anchorEl,
4447
- placement: "bottom-end",
4448
- onMouseDown: (e) => e.preventDefault(),
4449
- modifiers: [
4450
- {
4451
- name: "offset",
4452
- options: {
4453
- offset: [4, 4]
4454
- }
4455
- }
4456
- ],
4457
- "aria-label": "Calendar Tooltip",
4458
- "aria-expanded": open
4459
- },
4460
- /* @__PURE__ */ React24.createElement(CalendarSheet2, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ React24.createElement(
4461
- Calendar_default,
4462
- {
4463
- rangeSelection: true,
4464
- defaultValue: calendarValue,
4465
- onChange: handleCalendarChange,
4466
- minDate: minDate ? new Date(minDate) : void 0,
4467
- maxDate: maxDate ? new Date(maxDate) : void 0,
4468
- disableFuture,
4469
- disablePast
4040
+ sx: {
4041
+ p: 1
4470
4042
  }
4471
- ), !hideClearButton && /* @__PURE__ */ React24.createElement(
4472
- DialogActions_default,
4043
+ },
4044
+ /* @__PURE__ */ React24.createElement(
4045
+ Button_default,
4473
4046
  {
4474
- sx: {
4475
- p: 1
4047
+ size,
4048
+ variant: "plain",
4049
+ color: "neutral",
4050
+ onClick: () => {
4051
+ setValue("");
4052
+ setDisplayValue("");
4053
+ setAnchorEl(null);
4476
4054
  }
4477
4055
  },
4478
- /* @__PURE__ */ React24.createElement(
4479
- Button_default,
4480
- {
4481
- size,
4482
- variant: "plain",
4483
- color: "neutral",
4484
- onClick: () => {
4485
- setValue("");
4486
- setDisplayValue("");
4487
- setAnchorEl(null);
4488
- }
4489
- },
4490
- "Clear"
4491
- )
4492
- ))
4493
- )))));
4494
- }
4495
- );
4056
+ "Clear"
4057
+ )
4058
+ ))
4059
+ )))));
4060
+ });
4496
4061
  DateRangePicker.displayName = "DateRangePicker";
4497
4062
 
4498
4063
  // src/components/Drawer/Drawer.tsx
4499
4064
  import React25 from "react";
4500
- import {
4501
- Drawer as JoyDrawer,
4502
- styled as styled14,
4503
- drawerClasses
4504
- } from "@mui/joy";
4065
+ import { Drawer as JoyDrawer, styled as styled14, drawerClasses } from "@mui/joy";
4505
4066
  import { motion as motion22 } from "framer-motion";
4506
4067
  var MotionDrawer = motion22(JoyDrawer);
4507
4068
  var StyledDrawer = styled14(MotionDrawer)(({ theme, size = "md" }) => ({
@@ -4589,17 +4150,7 @@ var StyledDialogFrame = styled18(ModalDialog, {
4589
4150
  });
4590
4151
  var DialogFrame = React27.forwardRef((props, ref) => {
4591
4152
  const { title, children, actions, fullscreen, ...innerProps } = props;
4592
- return /* @__PURE__ */ React27.createElement(
4593
- StyledDialogFrame,
4594
- {
4595
- layout: fullscreen ? "fullscreen" : "center",
4596
- ref,
4597
- ...innerProps
4598
- },
4599
- /* @__PURE__ */ React27.createElement(DialogTitle_default, null, title),
4600
- /* @__PURE__ */ React27.createElement(DialogContent_default, null, children),
4601
- /* @__PURE__ */ React27.createElement(DialogActions_default, null, actions)
4602
- );
4153
+ return /* @__PURE__ */ React27.createElement(StyledDialogFrame, { layout: fullscreen ? "fullscreen" : "center", ref, ...innerProps }, /* @__PURE__ */ React27.createElement(DialogTitle_default, null, title), /* @__PURE__ */ React27.createElement(DialogContent_default, null, children), /* @__PURE__ */ React27.createElement(DialogActions_default, null, actions));
4603
4154
  });
4604
4155
  DialogFrame.displayName = "DialogFrame";
4605
4156
 
@@ -4634,10 +4185,7 @@ import { Grid } from "@mui/joy";
4634
4185
 
4635
4186
  // src/components/IconMenuButton/IconMenuButton.tsx
4636
4187
  import React29 from "react";
4637
- import {
4638
- MenuButton as JoyMenuButton2,
4639
- IconButton as JoyIconButton2
4640
- } from "@mui/joy";
4188
+ import { MenuButton as JoyMenuButton2, IconButton as JoyIconButton2 } from "@mui/joy";
4641
4189
  function IconMenuButton(props) {
4642
4190
  const {
4643
4191
  size,
@@ -4681,15 +4229,7 @@ function IconMenuButton(props) {
4681
4229
  }
4682
4230
  },
4683
4231
  icon
4684
- ), /* @__PURE__ */ React29.createElement(Menu, { placement, size }, items.map((i) => /* @__PURE__ */ React29.createElement(
4685
- MenuItem,
4686
- {
4687
- key: i.text,
4688
- component: i.component,
4689
- ...i.componentProps ?? {}
4690
- },
4691
- i.text
4692
- ))));
4232
+ ), /* @__PURE__ */ React29.createElement(Menu, { placement, size }, items.map((i) => /* @__PURE__ */ React29.createElement(MenuItem, { key: i.text, component: i.component, ...i.componentProps ?? {} }, i.text))));
4693
4233
  }
4694
4234
  IconMenuButton.displayName = "IconMenuButton";
4695
4235
 
@@ -4723,61 +4263,39 @@ var Markdown = (props) => {
4723
4263
  if (!rehypeAccent2) {
4724
4264
  return null;
4725
4265
  }
4726
- return /* @__PURE__ */ React30.createElement(
4727
- Typography,
4266
+ return /* @__PURE__ */ React30.createElement(Typography, { component: "div", color, textColor, level: defaultLevel, ...innerProps }, /* @__PURE__ */ React30.createElement(
4267
+ Suspense,
4728
4268
  {
4729
- component: "div",
4730
- color,
4731
- textColor,
4732
- level: defaultLevel,
4733
- ...innerProps
4269
+ fallback: fallback || /* @__PURE__ */ React30.createElement(Typography, null, /* @__PURE__ */ React30.createElement(Skeleton, null, content || ""))
4734
4270
  },
4735
4271
  /* @__PURE__ */ React30.createElement(
4736
- Suspense,
4272
+ LazyReactMarkdown,
4737
4273
  {
4738
- fallback: fallback || /* @__PURE__ */ React30.createElement(Typography, null, /* @__PURE__ */ React30.createElement(Skeleton, null, content || ""))
4739
- },
4740
- /* @__PURE__ */ React30.createElement(
4741
- LazyReactMarkdown,
4742
- {
4743
- ...markdownOptions,
4744
- children: content,
4745
- rehypePlugins: [[rehypeAccent2, { accentColor }]],
4746
- remarkPlugins: [remarkGfm],
4747
- components: {
4748
- h1: ({ children }) => /* @__PURE__ */ React30.createElement(Typography, { color, textColor, level: "h1" }, children),
4749
- h2: ({ children }) => /* @__PURE__ */ React30.createElement(Typography, { color, textColor, level: "h2" }, children),
4750
- h3: ({ children }) => /* @__PURE__ */ React30.createElement(Typography, { color, textColor, level: "h3" }, children),
4751
- h4: ({ children }) => /* @__PURE__ */ React30.createElement(Typography, { color, textColor, level: "h4" }, children),
4752
- p: ({ children, node }) => /* @__PURE__ */ React30.createElement(
4753
- Typography,
4754
- {
4755
- color,
4756
- textColor,
4757
- level: defaultLevel,
4758
- ...node?.properties
4759
- },
4760
- children
4761
- ),
4762
- a: ({ children, href }) => /* @__PURE__ */ React30.createElement(Link2, { href, target: defaultLinkAction }, children),
4763
- hr: () => /* @__PURE__ */ React30.createElement(Divider, null),
4764
- b: ({ children }) => /* @__PURE__ */ React30.createElement(Typography, { fontWeight: boldFontWeight }, children),
4765
- strong: ({ children }) => /* @__PURE__ */ React30.createElement(Typography, { fontWeight: boldFontWeight }, children),
4766
- ...markdownOptions?.components
4767
- }
4274
+ ...markdownOptions,
4275
+ children: content,
4276
+ rehypePlugins: [[rehypeAccent2, { accentColor }]],
4277
+ remarkPlugins: [remarkGfm],
4278
+ components: {
4279
+ h1: ({ children }) => /* @__PURE__ */ React30.createElement(Typography, { color, textColor, level: "h1" }, children),
4280
+ h2: ({ children }) => /* @__PURE__ */ React30.createElement(Typography, { color, textColor, level: "h2" }, children),
4281
+ h3: ({ children }) => /* @__PURE__ */ React30.createElement(Typography, { color, textColor, level: "h3" }, children),
4282
+ h4: ({ children }) => /* @__PURE__ */ React30.createElement(Typography, { color, textColor, level: "h4" }, children),
4283
+ p: ({ children, node }) => /* @__PURE__ */ React30.createElement(Typography, { color, textColor, level: defaultLevel, ...node?.properties }, children),
4284
+ a: ({ children, href }) => /* @__PURE__ */ React30.createElement(Link2, { href, target: defaultLinkAction }, children),
4285
+ hr: () => /* @__PURE__ */ React30.createElement(Divider, null),
4286
+ b: ({ children }) => /* @__PURE__ */ React30.createElement(Typography, { fontWeight: boldFontWeight }, children),
4287
+ strong: ({ children }) => /* @__PURE__ */ React30.createElement(Typography, { fontWeight: boldFontWeight }, children),
4288
+ ...markdownOptions?.components
4768
4289
  }
4769
- )
4290
+ }
4770
4291
  )
4771
- );
4292
+ ));
4772
4293
  };
4773
4294
  Markdown.displayName = "Markdown";
4774
4295
 
4775
4296
  // src/components/MenuButton/MenuButton.tsx
4776
4297
  import React31 from "react";
4777
- import {
4778
- MenuButton as JoyMenuButton3,
4779
- Button as JoyButton2
4780
- } from "@mui/joy";
4298
+ import { MenuButton as JoyMenuButton3, Button as JoyButton2 } from "@mui/joy";
4781
4299
  import ExpandMoreIcon from "@mui/icons-material/ExpandMore";
4782
4300
  function MenuButton(props) {
4783
4301
  const {
@@ -4824,27 +4342,12 @@ function MenuButton(props) {
4824
4342
  endDecorator: showIcon ? /* @__PURE__ */ React31.createElement(React31.Fragment, null, endDecorator, /* @__PURE__ */ React31.createElement(ExpandMoreIcon, null)) : /* @__PURE__ */ React31.createElement(React31.Fragment, null, endDecorator)
4825
4343
  },
4826
4344
  buttonText
4827
- ), /* @__PURE__ */ React31.createElement(Menu, { placement, size }, items.map((i) => /* @__PURE__ */ React31.createElement(
4828
- MenuItem,
4829
- {
4830
- key: i.text,
4831
- component: i.component,
4832
- ...i.componentProps ?? {}
4833
- },
4834
- i.text
4835
- ))));
4345
+ ), /* @__PURE__ */ React31.createElement(Menu, { placement, size }, items.map((i) => /* @__PURE__ */ React31.createElement(MenuItem, { key: i.text, component: i.component, ...i.componentProps ?? {} }, i.text))));
4836
4346
  }
4837
4347
  MenuButton.displayName = "MenuButton";
4838
4348
 
4839
4349
  // src/components/MonthPicker/MonthPicker.tsx
4840
- import React32, {
4841
- forwardRef as forwardRef9,
4842
- useCallback as useCallback11,
4843
- useEffect as useEffect8,
4844
- useImperativeHandle as useImperativeHandle4,
4845
- useRef as useRef6,
4846
- useState as useState9
4847
- } from "react";
4350
+ import React32, { forwardRef as forwardRef9, useCallback as useCallback11, useEffect as useEffect8, useImperativeHandle as useImperativeHandle4, useRef as useRef6, useState as useState9 } from "react";
4848
4351
  import CalendarTodayIcon3 from "@mui/icons-material/CalendarToday";
4849
4352
  import { styled as styled20, useThemeProps as useThemeProps6 } from "@mui/joy";
4850
4353
  import { FocusTrap as FocusTrap3, ClickAwayListener as ClickAwayListener3, Popper as Popper4 } from "@mui/base";
@@ -4899,226 +4402,205 @@ function parseDate3(dateString, format) {
4899
4402
  const result = new Date(year, month, day);
4900
4403
  return result;
4901
4404
  }
4902
- var MonthPicker = forwardRef9(
4903
- (inProps, ref) => {
4904
- const props = useThemeProps6({ props: inProps, name: "MonthPicker" });
4905
- const {
4906
- onChange,
4405
+ var MonthPicker = forwardRef9((inProps, ref) => {
4406
+ const props = useThemeProps6({ props: inProps, name: "MonthPicker" });
4407
+ const {
4408
+ onChange,
4409
+ disabled,
4410
+ label,
4411
+ error,
4412
+ helperText,
4413
+ minDate,
4414
+ maxDate,
4415
+ disableFuture,
4416
+ disablePast,
4417
+ required,
4418
+ // NOTE: 스타일 관련된 props는 최상위 엘리먼트에 적용한다.
4419
+ sx,
4420
+ className,
4421
+ /**
4422
+ * NOTE: 현재 CalendarDate는 YYYY-MM-DD로 개발하고 있어 date를 포함하여 value를 관리한다.
4423
+ * @see https://ecubelabs.atlassian.net/wiki/spaces/SW/pages/1938784349/Date#CalendarDate
4424
+ * @see https://github.com/Ecube-Labs/hds/pull/145
4425
+ */
4426
+ format = "YYYY/MM/DD",
4427
+ displayFormat = "YYYY/MM",
4428
+ size,
4429
+ locale,
4430
+ ...innerProps
4431
+ } = props;
4432
+ const innerRef = useRef6(null);
4433
+ const buttonRef = useRef6(null);
4434
+ const [value, setValue, isControlled] = useControlledState(
4435
+ props.value,
4436
+ props.defaultValue || "",
4437
+ useCallback11((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
4438
+ );
4439
+ const getFormattedDisplayValue = useCallback11(
4440
+ (inputValue) => {
4441
+ if (!inputValue) return "";
4442
+ try {
4443
+ return formatValueString3(parseDate3(inputValue, format), displayFormat, locale);
4444
+ } catch (e) {
4445
+ return inputValue;
4446
+ }
4447
+ },
4448
+ [format, displayFormat, locale]
4449
+ );
4450
+ const [displayValue, setDisplayValue] = useState9(() => getFormattedDisplayValue(value));
4451
+ const [anchorEl, setAnchorEl] = useState9(null);
4452
+ const open = Boolean(anchorEl);
4453
+ useEffect8(() => {
4454
+ if (!anchorEl) {
4455
+ innerRef.current?.blur();
4456
+ }
4457
+ }, [anchorEl, innerRef]);
4458
+ useImperativeHandle4(ref, () => innerRef.current, [innerRef]);
4459
+ useEffect8(() => {
4460
+ setDisplayValue(getFormattedDisplayValue(value));
4461
+ }, [value, getFormattedDisplayValue]);
4462
+ const handleChange = useCallback11(
4463
+ (event) => {
4464
+ const newValue = event.target.value;
4465
+ setValue(newValue);
4466
+ if (!isControlled) {
4467
+ setDisplayValue(getFormattedDisplayValue(newValue));
4468
+ }
4469
+ },
4470
+ [setValue, getFormattedDisplayValue, isControlled]
4471
+ );
4472
+ const handleCalendarToggle = useCallback11(
4473
+ (event) => {
4474
+ setAnchorEl(anchorEl ? null : event.currentTarget);
4475
+ innerRef.current?.focus();
4476
+ },
4477
+ [anchorEl, setAnchorEl, innerRef]
4478
+ );
4479
+ const handleInputMouseDown = useCallback11(
4480
+ (event) => {
4481
+ event.preventDefault();
4482
+ buttonRef.current?.focus();
4483
+ },
4484
+ [buttonRef]
4485
+ );
4486
+ return /* @__PURE__ */ React32.createElement(MonthPickerRoot, null, /* @__PURE__ */ React32.createElement(FocusTrap3, { open: true }, /* @__PURE__ */ React32.createElement(React32.Fragment, null, /* @__PURE__ */ React32.createElement(
4487
+ Input_default,
4488
+ {
4489
+ ...innerProps,
4490
+ color: error ? "danger" : innerProps.color,
4491
+ ref: innerRef,
4492
+ size,
4493
+ value: displayValue,
4494
+ placeholder: displayFormat,
4907
4495
  disabled,
4908
- label,
4909
- error,
4910
- helperText,
4911
- minDate,
4912
- maxDate,
4913
- disableFuture,
4914
- disablePast,
4915
4496
  required,
4916
- // NOTE: 스타일 관련된 props는 최상위 엘리먼트에 적용한다.
4917
- sx,
4918
- className,
4919
- /**
4920
- * NOTE: 현재 CalendarDate는 YYYY-MM-DD로 개발하고 있어 date를 포함하여 value를 관리한다.
4921
- * @see https://ecubelabs.atlassian.net/wiki/spaces/SW/pages/1938784349/Date#CalendarDate
4922
- * @see https://github.com/Ecube-Labs/hds/pull/145
4923
- */
4924
- format = "YYYY/MM/DD",
4925
- displayFormat = "YYYY/MM",
4926
- size,
4927
- locale,
4928
- ...innerProps
4929
- } = props;
4930
- const innerRef = useRef6(null);
4931
- const buttonRef = useRef6(null);
4932
- const [value, setValue, isControlled] = useControlledState(
4933
- props.value,
4934
- props.defaultValue || "",
4935
- useCallback11(
4936
- (value2) => onChange?.({ target: { name: props.name, value: value2 } }),
4937
- [props.name, onChange]
4938
- )
4939
- );
4940
- const getFormattedDisplayValue = useCallback11(
4941
- (inputValue) => {
4942
- if (!inputValue) return "";
4943
- try {
4944
- return formatValueString3(
4945
- parseDate3(inputValue, format),
4946
- displayFormat,
4947
- locale
4948
- );
4949
- } catch (e) {
4950
- return inputValue;
4951
- }
4952
- },
4953
- [format, displayFormat, locale]
4954
- );
4955
- const [displayValue, setDisplayValue] = useState9(
4956
- () => getFormattedDisplayValue(value)
4957
- );
4958
- const [anchorEl, setAnchorEl] = useState9(null);
4959
- const open = Boolean(anchorEl);
4960
- useEffect8(() => {
4961
- if (!anchorEl) {
4962
- innerRef.current?.blur();
4963
- }
4964
- }, [anchorEl, innerRef]);
4965
- useImperativeHandle4(ref, () => innerRef.current, [
4966
- innerRef
4967
- ]);
4968
- useEffect8(() => {
4969
- setDisplayValue(getFormattedDisplayValue(value));
4970
- }, [value, getFormattedDisplayValue]);
4971
- const handleChange = useCallback11(
4972
- (event) => {
4973
- const newValue = event.target.value;
4974
- setValue(newValue);
4975
- if (!isControlled) {
4976
- setDisplayValue(getFormattedDisplayValue(newValue));
4497
+ slotProps: {
4498
+ input: {
4499
+ ref: innerRef,
4500
+ format: displayFormat,
4501
+ sx: {
4502
+ "&:hover": {
4503
+ cursor: "default"
4504
+ }
4505
+ },
4506
+ onMouseDown: handleInputMouseDown
4977
4507
  }
4978
4508
  },
4979
- [setValue, getFormattedDisplayValue, isControlled]
4980
- );
4981
- const handleCalendarToggle = useCallback11(
4982
- (event) => {
4983
- setAnchorEl(anchorEl ? null : event.currentTarget);
4984
- innerRef.current?.focus();
4985
- },
4986
- [anchorEl, setAnchorEl, innerRef]
4987
- );
4988
- const handleInputMouseDown = useCallback11(
4989
- (event) => {
4990
- event.preventDefault();
4991
- buttonRef.current?.focus();
4509
+ error,
4510
+ className,
4511
+ sx: {
4512
+ ...sx,
4513
+ // NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
4514
+ fontFamily: "monospace"
4992
4515
  },
4993
- [buttonRef]
4994
- );
4995
- return /* @__PURE__ */ React32.createElement(MonthPickerRoot, null, /* @__PURE__ */ React32.createElement(FocusTrap3, { open: true }, /* @__PURE__ */ React32.createElement(React32.Fragment, null, /* @__PURE__ */ React32.createElement(
4996
- Input_default,
4997
- {
4998
- ...innerProps,
4999
- color: error ? "danger" : innerProps.color,
5000
- ref: innerRef,
5001
- size,
5002
- value: displayValue,
5003
- placeholder: displayFormat,
5004
- disabled,
5005
- required,
5006
- slotProps: {
5007
- input: {
5008
- ref: innerRef,
5009
- format: displayFormat,
5010
- sx: {
5011
- "&:hover": {
5012
- cursor: "default"
5013
- }
5014
- },
5015
- onMouseDown: handleInputMouseDown
5016
- }
4516
+ endDecorator: /* @__PURE__ */ React32.createElement(
4517
+ IconButton_default,
4518
+ {
4519
+ ref: buttonRef,
4520
+ variant: "plain",
4521
+ onClick: handleCalendarToggle,
4522
+ "aria-label": "Toggle Calendar",
4523
+ "aria-controls": "month-picker-popper",
4524
+ "aria-haspopup": "dialog",
4525
+ "aria-expanded": open,
4526
+ disabled
5017
4527
  },
5018
- error,
5019
- className,
5020
- sx: {
5021
- ...sx,
5022
- // NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
5023
- fontFamily: "monospace"
4528
+ /* @__PURE__ */ React32.createElement(CalendarTodayIcon3, null)
4529
+ ),
4530
+ label,
4531
+ helperText
4532
+ }
4533
+ ), open && /* @__PURE__ */ React32.createElement(ClickAwayListener3, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ React32.createElement(
4534
+ StyledPopper3,
4535
+ {
4536
+ id: "month-picker-popper",
4537
+ open: true,
4538
+ anchorEl,
4539
+ placement: "bottom-end",
4540
+ onMouseDown: (e) => e.preventDefault(),
4541
+ modifiers: [
4542
+ {
4543
+ name: "offset",
4544
+ options: {
4545
+ offset: [4, 4]
4546
+ }
4547
+ }
4548
+ ],
4549
+ "aria-label": "Calendar Tooltip",
4550
+ "aria-expanded": open
4551
+ },
4552
+ /* @__PURE__ */ React32.createElement(CalendarSheet3, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ React32.createElement(
4553
+ Calendar_default,
4554
+ {
4555
+ view: "month",
4556
+ views: ["month"],
4557
+ value: !Number.isNaN(new Date(value).getTime()) ? [new Date(value), void 0] : void 0,
4558
+ onChange: ([date]) => {
4559
+ handleChange({
4560
+ target: {
4561
+ name: props.name,
4562
+ value: formatValueString3(date, format, locale)
4563
+ }
4564
+ });
4565
+ setAnchorEl(null);
5024
4566
  },
5025
- endDecorator: /* @__PURE__ */ React32.createElement(
5026
- IconButton_default,
5027
- {
5028
- ref: buttonRef,
5029
- variant: "plain",
5030
- onClick: handleCalendarToggle,
5031
- "aria-label": "Toggle Calendar",
5032
- "aria-controls": "month-picker-popper",
5033
- "aria-haspopup": "dialog",
5034
- "aria-expanded": open,
5035
- disabled
5036
- },
5037
- /* @__PURE__ */ React32.createElement(CalendarTodayIcon3, null)
5038
- ),
5039
- label,
5040
- helperText
4567
+ minDate: minDate ? new Date(minDate) : void 0,
4568
+ maxDate: maxDate ? new Date(maxDate) : void 0,
4569
+ disableFuture,
4570
+ disablePast,
4571
+ locale
5041
4572
  }
5042
- ), open && /* @__PURE__ */ React32.createElement(ClickAwayListener3, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ React32.createElement(
5043
- StyledPopper3,
4573
+ ), /* @__PURE__ */ React32.createElement(
4574
+ DialogActions_default,
5044
4575
  {
5045
- id: "month-picker-popper",
5046
- open: true,
5047
- anchorEl,
5048
- placement: "bottom-end",
5049
- onMouseDown: (e) => e.preventDefault(),
5050
- modifiers: [
5051
- {
5052
- name: "offset",
5053
- options: {
5054
- offset: [4, 4]
5055
- }
5056
- }
5057
- ],
5058
- "aria-label": "Calendar Tooltip",
5059
- "aria-expanded": open
4576
+ sx: {
4577
+ p: 1
4578
+ }
5060
4579
  },
5061
- /* @__PURE__ */ React32.createElement(CalendarSheet3, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ React32.createElement(
5062
- Calendar_default,
4580
+ /* @__PURE__ */ React32.createElement(
4581
+ Button_default,
5063
4582
  {
5064
- view: "month",
5065
- views: ["month"],
5066
- value: !Number.isNaN(new Date(value).getTime()) ? [new Date(value), void 0] : void 0,
5067
- onChange: ([date]) => {
4583
+ size,
4584
+ variant: "plain",
4585
+ color: "neutral",
4586
+ onClick: () => {
5068
4587
  handleChange({
5069
4588
  target: {
5070
4589
  name: props.name,
5071
- value: formatValueString3(date, format, locale)
4590
+ value: ""
5072
4591
  }
5073
4592
  });
5074
4593
  setAnchorEl(null);
5075
- },
5076
- minDate: minDate ? new Date(minDate) : void 0,
5077
- maxDate: maxDate ? new Date(maxDate) : void 0,
5078
- disableFuture,
5079
- disablePast,
5080
- locale
5081
- }
5082
- ), /* @__PURE__ */ React32.createElement(
5083
- DialogActions_default,
5084
- {
5085
- sx: {
5086
- p: 1
5087
4594
  }
5088
4595
  },
5089
- /* @__PURE__ */ React32.createElement(
5090
- Button_default,
5091
- {
5092
- size,
5093
- variant: "plain",
5094
- color: "neutral",
5095
- onClick: () => {
5096
- handleChange({
5097
- target: {
5098
- name: props.name,
5099
- value: ""
5100
- }
5101
- });
5102
- setAnchorEl(null);
5103
- }
5104
- },
5105
- "Clear"
5106
- )
5107
- ))
5108
- )))));
5109
- }
5110
- );
4596
+ "Clear"
4597
+ )
4598
+ ))
4599
+ )))));
4600
+ });
5111
4601
 
5112
4602
  // src/components/MonthRangePicker/MonthRangePicker.tsx
5113
- import React33, {
5114
- forwardRef as forwardRef10,
5115
- useCallback as useCallback12,
5116
- useEffect as useEffect9,
5117
- useImperativeHandle as useImperativeHandle5,
5118
- useMemo as useMemo10,
5119
- useRef as useRef7,
5120
- useState as useState10
5121
- } from "react";
4603
+ import React33, { forwardRef as forwardRef10, useCallback as useCallback12, useEffect as useEffect9, useImperativeHandle as useImperativeHandle5, useMemo as useMemo10, useRef as useRef7, useState as useState10 } from "react";
5122
4604
  import { IMaskInput as IMaskInput3, IMask as IMask3 } from "react-imask";
5123
4605
  import CalendarTodayIcon4 from "@mui/icons-material/CalendarToday";
5124
4606
  import { styled as styled21, useThemeProps as useThemeProps7 } from "@mui/joy";
@@ -5176,196 +4658,184 @@ var parseDates2 = (str) => {
5176
4658
  var formatToPattern3 = (format) => {
5177
4659
  return `${format} - ${format}`.replace(/YYYY/g, "Y").replace(/MM/g, "m").replace(/[^YMm\s]/g, (match) => `${match}\``);
5178
4660
  };
5179
- var TextMaskAdapter7 = React33.forwardRef(
5180
- function TextMaskAdapter8(props, ref) {
5181
- const { onChange, format, ...other } = props;
5182
- return /* @__PURE__ */ React33.createElement(
5183
- IMaskInput3,
5184
- {
5185
- ...other,
5186
- inputRef: ref,
5187
- onAccept: (value) => onChange({ target: { name: props.name, value } }),
5188
- mask: Date,
5189
- pattern: formatToPattern3(format),
5190
- blocks: {
5191
- m: {
5192
- mask: IMask3.MaskedRange,
5193
- from: 1,
5194
- to: 12,
5195
- maxLength: 2
5196
- },
5197
- Y: {
5198
- mask: IMask3.MaskedRange,
5199
- from: 1900,
5200
- to: 9999
5201
- }
4661
+ var TextMaskAdapter7 = React33.forwardRef(function TextMaskAdapter8(props, ref) {
4662
+ const { onChange, format, ...other } = props;
4663
+ return /* @__PURE__ */ React33.createElement(
4664
+ IMaskInput3,
4665
+ {
4666
+ ...other,
4667
+ inputRef: ref,
4668
+ onAccept: (value) => onChange({ target: { name: props.name, value } }),
4669
+ mask: Date,
4670
+ pattern: formatToPattern3(format),
4671
+ blocks: {
4672
+ m: {
4673
+ mask: IMask3.MaskedRange,
4674
+ from: 1,
4675
+ to: 12,
4676
+ maxLength: 2
5202
4677
  },
5203
- format: (dates) => formatValueString4(dates, format),
5204
- parse: parseDates2,
5205
- autofix: "pad",
5206
- overwrite: true
5207
- }
5208
- );
5209
- }
5210
- );
5211
- var MonthRangePicker = forwardRef10(
5212
- (inProps, ref) => {
5213
- const props = useThemeProps7({ props: inProps, name: "MonthRangePicker" });
5214
- const {
5215
- onChange,
4678
+ Y: {
4679
+ mask: IMask3.MaskedRange,
4680
+ from: 1900,
4681
+ to: 9999
4682
+ }
4683
+ },
4684
+ format: (dates) => formatValueString4(dates, format),
4685
+ parse: parseDates2,
4686
+ autofix: "pad",
4687
+ overwrite: true
4688
+ }
4689
+ );
4690
+ });
4691
+ var MonthRangePicker = forwardRef10((inProps, ref) => {
4692
+ const props = useThemeProps7({ props: inProps, name: "MonthRangePicker" });
4693
+ const {
4694
+ onChange,
4695
+ disabled,
4696
+ label,
4697
+ error,
4698
+ helperText,
4699
+ minDate,
4700
+ maxDate,
4701
+ disableFuture,
4702
+ disablePast,
4703
+ required,
4704
+ // NOTE: 스타일 관련된 props는 최상위 엘리먼트에 적용한다.
4705
+ sx,
4706
+ className,
4707
+ format = "YYYY/MM",
4708
+ size,
4709
+ ...innerProps
4710
+ } = props;
4711
+ const innerRef = useRef7(null);
4712
+ const [value, setValue] = useControlledState(
4713
+ props.value,
4714
+ props.defaultValue || "",
4715
+ useCallback12((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
4716
+ );
4717
+ const [anchorEl, setAnchorEl] = useState10(null);
4718
+ const open = Boolean(anchorEl);
4719
+ const calendarValue = useMemo10(() => value ? parseDates2(value) : void 0, [value]);
4720
+ useEffect9(() => {
4721
+ if (!anchorEl) {
4722
+ innerRef.current?.blur();
4723
+ }
4724
+ }, [anchorEl, innerRef]);
4725
+ useImperativeHandle5(ref, () => innerRef.current, [innerRef]);
4726
+ const handleChange = useCallback12(
4727
+ (event) => {
4728
+ setValue(event.target.value);
4729
+ },
4730
+ [setValue]
4731
+ );
4732
+ const handleCalendarToggle = useCallback12(
4733
+ (event) => {
4734
+ setAnchorEl(anchorEl ? null : event.currentTarget);
4735
+ innerRef.current?.focus();
4736
+ },
4737
+ [anchorEl, setAnchorEl, innerRef]
4738
+ );
4739
+ const handleCalendarChange = useCallback12(
4740
+ ([date1, date2]) => {
4741
+ if (!date1 || !date2) return;
4742
+ setValue(formatValueString4([date1, date2], format));
4743
+ setAnchorEl(null);
4744
+ },
4745
+ [setValue, setAnchorEl, format]
4746
+ );
4747
+ return /* @__PURE__ */ React33.createElement(MonthRangePickerRoot, null, /* @__PURE__ */ React33.createElement(FocusTrap4, { open: true }, /* @__PURE__ */ React33.createElement(React33.Fragment, null, /* @__PURE__ */ React33.createElement(
4748
+ Input_default,
4749
+ {
4750
+ ...innerProps,
4751
+ color: error ? "danger" : innerProps.color,
4752
+ ref,
4753
+ size,
4754
+ value,
4755
+ onChange: handleChange,
5216
4756
  disabled,
5217
- label,
5218
- error,
5219
- helperText,
5220
- minDate,
5221
- maxDate,
5222
- disableFuture,
5223
- disablePast,
5224
4757
  required,
5225
- // NOTE: 스타일 관련된 props는 최상위 엘리먼트에 적용한다.
5226
- sx,
5227
- className,
5228
- format = "YYYY/MM",
5229
- size,
5230
- ...innerProps
5231
- } = props;
5232
- const innerRef = useRef7(null);
5233
- const [value, setValue] = useControlledState(
5234
- props.value,
5235
- props.defaultValue || "",
5236
- useCallback12(
5237
- (value2) => onChange?.({ target: { name: props.name, value: value2 } }),
5238
- [props.name, onChange]
5239
- )
5240
- );
5241
- const [anchorEl, setAnchorEl] = useState10(null);
5242
- const open = Boolean(anchorEl);
5243
- const calendarValue = useMemo10(
5244
- () => value ? parseDates2(value) : void 0,
5245
- [value]
5246
- );
5247
- useEffect9(() => {
5248
- if (!anchorEl) {
5249
- innerRef.current?.blur();
5250
- }
5251
- }, [anchorEl, innerRef]);
5252
- useImperativeHandle5(ref, () => innerRef.current, [
5253
- innerRef
5254
- ]);
5255
- const handleChange = useCallback12(
5256
- (event) => {
5257
- setValue(event.target.value);
5258
- },
5259
- [setValue]
5260
- );
5261
- const handleCalendarToggle = useCallback12(
5262
- (event) => {
5263
- setAnchorEl(anchorEl ? null : event.currentTarget);
5264
- innerRef.current?.focus();
4758
+ placeholder: `${format} - ${format}`,
4759
+ slotProps: {
4760
+ input: { component: TextMaskAdapter7, ref: innerRef, format }
5265
4761
  },
5266
- [anchorEl, setAnchorEl, innerRef]
5267
- );
5268
- const handleCalendarChange = useCallback12(
5269
- ([date1, date2]) => {
5270
- if (!date1 || !date2) return;
5271
- setValue(formatValueString4([date1, date2], format));
5272
- setAnchorEl(null);
4762
+ error,
4763
+ className,
4764
+ sx: {
4765
+ ...sx,
4766
+ // NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
4767
+ fontFamily: "monospace"
5273
4768
  },
5274
- [setValue, setAnchorEl, format]
5275
- );
5276
- return /* @__PURE__ */ React33.createElement(MonthRangePickerRoot, null, /* @__PURE__ */ React33.createElement(FocusTrap4, { open: true }, /* @__PURE__ */ React33.createElement(React33.Fragment, null, /* @__PURE__ */ React33.createElement(
5277
- Input_default,
5278
- {
5279
- ...innerProps,
5280
- color: error ? "danger" : innerProps.color,
5281
- ref,
5282
- size,
5283
- value,
5284
- onChange: handleChange,
5285
- disabled,
5286
- required,
5287
- placeholder: `${format} - ${format}`,
5288
- slotProps: {
5289
- input: { component: TextMaskAdapter7, ref: innerRef, format }
5290
- },
5291
- error,
5292
- className,
5293
- sx: {
5294
- ...sx,
5295
- // NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
5296
- fontFamily: "monospace"
4769
+ endDecorator: /* @__PURE__ */ React33.createElement(
4770
+ IconButton_default,
4771
+ {
4772
+ variant: "plain",
4773
+ onClick: handleCalendarToggle,
4774
+ "aria-label": "Toggle Calendar",
4775
+ "aria-controls": "month-range-picker-popper",
4776
+ "aria-haspopup": "dialog",
4777
+ "aria-expanded": open
5297
4778
  },
5298
- endDecorator: /* @__PURE__ */ React33.createElement(
5299
- IconButton_default,
5300
- {
5301
- variant: "plain",
5302
- onClick: handleCalendarToggle,
5303
- "aria-label": "Toggle Calendar",
5304
- "aria-controls": "month-range-picker-popper",
5305
- "aria-haspopup": "dialog",
5306
- "aria-expanded": open
5307
- },
5308
- /* @__PURE__ */ React33.createElement(CalendarTodayIcon4, null)
5309
- ),
5310
- label,
5311
- helperText
4779
+ /* @__PURE__ */ React33.createElement(CalendarTodayIcon4, null)
4780
+ ),
4781
+ label,
4782
+ helperText
4783
+ }
4784
+ ), open && /* @__PURE__ */ React33.createElement(ClickAwayListener4, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ React33.createElement(
4785
+ StyledPopper4,
4786
+ {
4787
+ id: "month-range-picker-popper",
4788
+ open: true,
4789
+ anchorEl,
4790
+ placement: "bottom-end",
4791
+ onMouseDown: (e) => e.preventDefault(),
4792
+ modifiers: [
4793
+ {
4794
+ name: "offset",
4795
+ options: {
4796
+ offset: [4, 4]
4797
+ }
4798
+ }
4799
+ ],
4800
+ "aria-label": "Calendar Tooltip",
4801
+ "aria-expanded": open
4802
+ },
4803
+ /* @__PURE__ */ React33.createElement(CalendarSheet4, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ React33.createElement(
4804
+ Calendar_default,
4805
+ {
4806
+ view: "month",
4807
+ views: ["month"],
4808
+ rangeSelection: true,
4809
+ defaultValue: calendarValue,
4810
+ onChange: handleCalendarChange,
4811
+ minDate: minDate ? new Date(minDate) : void 0,
4812
+ maxDate: maxDate ? new Date(maxDate) : void 0,
4813
+ disableFuture,
4814
+ disablePast
5312
4815
  }
5313
- ), open && /* @__PURE__ */ React33.createElement(ClickAwayListener4, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ React33.createElement(
5314
- StyledPopper4,
4816
+ ), /* @__PURE__ */ React33.createElement(
4817
+ DialogActions_default,
5315
4818
  {
5316
- id: "month-range-picker-popper",
5317
- open: true,
5318
- anchorEl,
5319
- placement: "bottom-end",
5320
- onMouseDown: (e) => e.preventDefault(),
5321
- modifiers: [
5322
- {
5323
- name: "offset",
5324
- options: {
5325
- offset: [4, 4]
5326
- }
5327
- }
5328
- ],
5329
- "aria-label": "Calendar Tooltip",
5330
- "aria-expanded": open
5331
- },
5332
- /* @__PURE__ */ React33.createElement(CalendarSheet4, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ React33.createElement(
5333
- Calendar_default,
5334
- {
5335
- view: "month",
5336
- views: ["month"],
5337
- rangeSelection: true,
5338
- defaultValue: calendarValue,
5339
- onChange: handleCalendarChange,
5340
- minDate: minDate ? new Date(minDate) : void 0,
5341
- maxDate: maxDate ? new Date(maxDate) : void 0,
5342
- disableFuture,
5343
- disablePast
4819
+ sx: {
4820
+ p: 1
5344
4821
  }
5345
- ), /* @__PURE__ */ React33.createElement(
5346
- DialogActions_default,
4822
+ },
4823
+ /* @__PURE__ */ React33.createElement(
4824
+ Button_default,
5347
4825
  {
5348
- sx: {
5349
- p: 1
4826
+ size,
4827
+ variant: "plain",
4828
+ color: "neutral",
4829
+ onClick: () => {
4830
+ setValue("");
4831
+ setAnchorEl(null);
5350
4832
  }
5351
4833
  },
5352
- /* @__PURE__ */ React33.createElement(
5353
- Button_default,
5354
- {
5355
- size,
5356
- variant: "plain",
5357
- color: "neutral",
5358
- onClick: () => {
5359
- setValue("");
5360
- setAnchorEl(null);
5361
- }
5362
- },
5363
- "Clear"
5364
- )
5365
- ))
5366
- )))));
5367
- }
5368
- );
4834
+ "Clear"
4835
+ )
4836
+ ))
4837
+ )))));
4838
+ });
5369
4839
  MonthRangePicker.displayName = "MonthRangePicker";
5370
4840
 
5371
4841
  // src/components/NavigationGroup/NavigationGroup.tsx
@@ -5500,115 +4970,112 @@ var padDecimal = (value, decimalScale) => {
5500
4970
  const [integer, decimal = ""] = `${value}`.split(".");
5501
4971
  return Number(`${integer}${decimal.padEnd(decimalScale, "0")}`);
5502
4972
  };
5503
- var TextMaskAdapter9 = React37.forwardRef(
5504
- function TextMaskAdapter10(props, ref) {
5505
- const { onChange, min, max, ...innerProps } = props;
5506
- return /* @__PURE__ */ React37.createElement(
5507
- NumericFormat2,
5508
- {
5509
- ...innerProps,
5510
- onValueChange: ({ value }) => {
5511
- onChange?.({
5512
- target: {
5513
- name: props.name,
5514
- value
5515
- }
5516
- });
5517
- },
5518
- valueIsNumericString: true,
5519
- thousandSeparator: true,
5520
- suffix: "%",
5521
- getInputRef: ref,
5522
- allowNegative: true
5523
- }
5524
- );
5525
- }
5526
- );
4973
+ var TextMaskAdapter9 = React37.forwardRef(function TextMaskAdapter10(props, ref) {
4974
+ const { onChange, min, max, ...innerProps } = props;
4975
+ return /* @__PURE__ */ React37.createElement(
4976
+ NumericFormat2,
4977
+ {
4978
+ ...innerProps,
4979
+ onValueChange: ({ value }) => {
4980
+ onChange?.({
4981
+ target: {
4982
+ name: props.name,
4983
+ value
4984
+ }
4985
+ });
4986
+ },
4987
+ valueIsNumericString: true,
4988
+ thousandSeparator: true,
4989
+ suffix: "%",
4990
+ getInputRef: ref,
4991
+ allowNegative: true
4992
+ }
4993
+ );
4994
+ });
5527
4995
  var PercentageInputRoot = styled24(Input_default, {
5528
4996
  name: "PercentageInput",
5529
4997
  slot: "Root",
5530
4998
  overridesResolver: (props, styles) => styles.root
5531
4999
  })({});
5532
- var PercentageInput = React37.forwardRef(function PercentageInput2(inProps, ref) {
5533
- const props = useThemeProps8({ props: inProps, name: "PercentageInput" });
5534
- const {
5535
- name,
5536
- onChange,
5537
- label,
5538
- error,
5539
- helperText,
5540
- required,
5541
- disabled,
5542
- useMinorUnit,
5543
- maxDecimalScale = 0,
5544
- min,
5545
- max,
5546
- // NOTE: 스타일 관련된 props는 최상위 엘리먼트에 적용한다.
5547
- sx,
5548
- className,
5549
- ...innerProps
5550
- } = props;
5551
- const [_value, setValue] = useControlledState(
5552
- props.value,
5553
- props.defaultValue,
5554
- useCallback13(
5555
- (value2) => onChange?.({ target: { name, value: value2 } }),
5556
- [onChange, name]
5557
- )
5558
- );
5559
- const [internalError, setInternalError] = useState11(
5560
- max && _value && _value > max || min && _value && _value < min
5561
- );
5562
- const value = useMemo11(() => {
5563
- if (_value && useMinorUnit) {
5564
- return _value / Math.pow(10, maxDecimalScale);
5565
- }
5566
- return _value;
5567
- }, [_value, useMinorUnit, maxDecimalScale]);
5568
- const handleChange = useCallback13(
5569
- (event) => {
5570
- if (event.target.value === "") {
5571
- setValue(void 0);
5572
- return;
5573
- }
5574
- const originalAmount = Number(event.target.value);
5575
- if (min && originalAmount < min || max && originalAmount > max) {
5576
- setInternalError(true);
5577
- } else {
5578
- setInternalError(false);
5579
- }
5580
- const amount = useMinorUnit ? padDecimal(originalAmount, maxDecimalScale) : originalAmount;
5581
- setValue(amount);
5582
- },
5583
- [setValue, useMinorUnit, maxDecimalScale, min, max]
5584
- );
5585
- return /* @__PURE__ */ React37.createElement(
5586
- PercentageInputRoot,
5587
- {
5588
- ...innerProps,
5589
- ref,
5590
- value,
5591
- onChange: handleChange,
5592
- error: internalError || error,
5593
- disabled,
5594
- required,
5595
- color: internalError || error ? "danger" : props.color,
5000
+ var PercentageInput = React37.forwardRef(
5001
+ function PercentageInput2(inProps, ref) {
5002
+ const props = useThemeProps8({ props: inProps, name: "PercentageInput" });
5003
+ const {
5004
+ name,
5005
+ onChange,
5596
5006
  label,
5007
+ error,
5597
5008
  helperText,
5598
- slotProps: {
5599
- input: {
5600
- component: TextMaskAdapter9,
5601
- "aria-label": innerProps["aria-label"],
5602
- decimalScale: maxDecimalScale
5009
+ required,
5010
+ disabled,
5011
+ useMinorUnit,
5012
+ maxDecimalScale = 0,
5013
+ min,
5014
+ max,
5015
+ // NOTE: 스타일 관련된 props는 최상위 엘리먼트에 적용한다.
5016
+ sx,
5017
+ className,
5018
+ ...innerProps
5019
+ } = props;
5020
+ const [_value, setValue] = useControlledState(
5021
+ props.value,
5022
+ props.defaultValue,
5023
+ useCallback13((value2) => onChange?.({ target: { name, value: value2 } }), [onChange, name])
5024
+ );
5025
+ const [internalError, setInternalError] = useState11(
5026
+ max && _value && _value > max || min && _value && _value < min
5027
+ );
5028
+ const value = useMemo11(() => {
5029
+ if (_value && useMinorUnit) {
5030
+ return _value / Math.pow(10, maxDecimalScale);
5031
+ }
5032
+ return _value;
5033
+ }, [_value, useMinorUnit, maxDecimalScale]);
5034
+ const handleChange = useCallback13(
5035
+ (event) => {
5036
+ if (event.target.value === "") {
5037
+ setValue(void 0);
5038
+ return;
5603
5039
  }
5040
+ const originalAmount = Number(event.target.value);
5041
+ if (min && originalAmount < min || max && originalAmount > max) {
5042
+ setInternalError(true);
5043
+ } else {
5044
+ setInternalError(false);
5045
+ }
5046
+ const amount = useMinorUnit ? padDecimal(originalAmount, maxDecimalScale) : originalAmount;
5047
+ setValue(amount);
5604
5048
  },
5605
- sx: {
5606
- ...sx
5607
- },
5608
- className
5609
- }
5610
- );
5611
- });
5049
+ [setValue, useMinorUnit, maxDecimalScale, min, max]
5050
+ );
5051
+ return /* @__PURE__ */ React37.createElement(
5052
+ PercentageInputRoot,
5053
+ {
5054
+ ...innerProps,
5055
+ ref,
5056
+ value,
5057
+ onChange: handleChange,
5058
+ error: internalError || error,
5059
+ disabled,
5060
+ required,
5061
+ color: internalError || error ? "danger" : props.color,
5062
+ label,
5063
+ helperText,
5064
+ slotProps: {
5065
+ input: {
5066
+ component: TextMaskAdapter9,
5067
+ "aria-label": innerProps["aria-label"],
5068
+ decimalScale: maxDecimalScale
5069
+ }
5070
+ },
5071
+ sx: {
5072
+ ...sx
5073
+ },
5074
+ className
5075
+ }
5076
+ );
5077
+ }
5078
+ );
5612
5079
  PercentageInput.displayName = "PercentageInput";
5613
5080
 
5614
5081
  // src/components/Radio/Radio.tsx
@@ -5715,11 +5182,7 @@ Stepper.displayName = "Stepper";
5715
5182
 
5716
5183
  // src/components/Switch/Switch.tsx
5717
5184
  import React40 from "react";
5718
- import {
5719
- Switch as JoySwitch,
5720
- styled as styled26,
5721
- switchClasses
5722
- } from "@mui/joy";
5185
+ import { Switch as JoySwitch, styled as styled26, switchClasses } from "@mui/joy";
5723
5186
  import { motion as motion29 } from "framer-motion";
5724
5187
  var MotionSwitch = motion29(JoySwitch);
5725
5188
  var StyledThumb = styled26(motion29.div)({
@@ -6053,13 +5516,7 @@ function ThemeProvider(props) {
6053
5516
  ThemeProvider.displayName = "ThemeProvider";
6054
5517
 
6055
5518
  // src/components/Uploader/Uploader.tsx
6056
- import React43, {
6057
- useCallback as useCallback14,
6058
- useEffect as useEffect10,
6059
- useMemo as useMemo12,
6060
- useRef as useRef8,
6061
- useState as useState12
6062
- } from "react";
5519
+ import React43, { useCallback as useCallback14, useEffect as useEffect10, useMemo as useMemo12, useRef as useRef8, useState as useState12 } from "react";
6063
5520
  import { styled as styled28, Input as Input2 } from "@mui/joy";
6064
5521
  import MuiFileUploadIcon from "@mui/icons-material/CloudUploadRounded";
6065
5522
  import MuiUploadFileIcon from "@mui/icons-material/UploadFileRounded";
@@ -6118,52 +5575,11 @@ var ClearIcon2 = styled28(MuiClearIcon, {
6118
5575
  width: "18px",
6119
5576
  height: "18px"
6120
5577
  }));
6121
- var UNITS = [
6122
- "byte",
6123
- "kilobyte",
6124
- "megabyte",
6125
- "gigabyte",
6126
- "terabyte",
6127
- "petabyte"
6128
- ];
5578
+ var UNITS = ["byte", "kilobyte", "megabyte", "gigabyte", "terabyte", "petabyte"];
6129
5579
  var ALL_EXTENSIONS_BY_TYPE = {
6130
- "image/*": [
6131
- ".jpeg",
6132
- ".jpg",
6133
- ".png",
6134
- ".gif",
6135
- ".bmp",
6136
- ".tiff",
6137
- ".svg",
6138
- ".webp",
6139
- ".heic",
6140
- ".ico"
6141
- ],
6142
- "audio/*": [
6143
- ".mp3",
6144
- ".wav",
6145
- ".flac",
6146
- ".aac",
6147
- ".ogg",
6148
- ".m4a",
6149
- ".wma",
6150
- ".aiff",
6151
- ".alac",
6152
- ".midi",
6153
- ".mp4"
6154
- ],
6155
- "video/*": [
6156
- ".mp4",
6157
- ".avi",
6158
- ".mkv",
6159
- ".mov",
6160
- ".wmv",
6161
- ".flv",
6162
- ".webm",
6163
- ".mpeg",
6164
- ".3gp",
6165
- ".m4v"
6166
- ]
5580
+ "image/*": [".jpeg", ".jpg", ".png", ".gif", ".bmp", ".tiff", ".svg", ".webp", ".heic", ".ico"],
5581
+ "audio/*": [".mp3", ".wav", ".flac", ".aac", ".ogg", ".m4a", ".wma", ".aiff", ".alac", ".midi", ".mp4"],
5582
+ "video/*": [".mp4", ".avi", ".mkv", ".mov", ".wmv", ".flv", ".webm", ".mpeg", ".3gp", ".m4v"]
6167
5583
  };
6168
5584
  var getFileSize = (n) => {
6169
5585
  const i = n == 0 ? 0 : Math.floor(Math.log(n) / Math.log(1024));
@@ -6177,16 +5593,7 @@ var getFileSize = (n) => {
6177
5593
  };
6178
5594
  var Preview = (props) => {
6179
5595
  const { files, uploaded, onDelete } = props;
6180
- return /* @__PURE__ */ React43.createElement(PreviewRoot, { gap: 1 }, [...uploaded, ...files].map((file) => /* @__PURE__ */ React43.createElement(UploadCard, { key: file.name, size: "sm", color: "neutral" }, /* @__PURE__ */ React43.createElement(Stack_default, { direction: "row", alignItems: "center", gap: 2 }, /* @__PURE__ */ React43.createElement(UploadFileIcon, null), /* @__PURE__ */ React43.createElement(Stack_default, { flex: "1" }, /* @__PURE__ */ React43.createElement(Typography_default, { level: "body-sm", textColor: "common.black" }, file.name), !!file.size && /* @__PURE__ */ React43.createElement(
6181
- Typography_default,
6182
- {
6183
- level: "body-xs",
6184
- fontWeight: "300",
6185
- lineHeight: "1.33",
6186
- textColor: "text.tertiary"
6187
- },
6188
- getFileSize(file.size)
6189
- )), /* @__PURE__ */ React43.createElement(IconButton_default, { onClick: () => onDelete?.(file) }, /* @__PURE__ */ React43.createElement(ClearIcon2, null))))));
5596
+ return /* @__PURE__ */ React43.createElement(PreviewRoot, { gap: 1 }, [...uploaded, ...files].map((file) => /* @__PURE__ */ React43.createElement(UploadCard, { key: file.name, size: "sm", color: "neutral" }, /* @__PURE__ */ React43.createElement(Stack_default, { direction: "row", alignItems: "center", gap: 2 }, /* @__PURE__ */ React43.createElement(UploadFileIcon, null), /* @__PURE__ */ React43.createElement(Stack_default, { flex: "1" }, /* @__PURE__ */ React43.createElement(Typography_default, { level: "body-sm", textColor: "common.black" }, file.name), !!file.size && /* @__PURE__ */ React43.createElement(Typography_default, { level: "body-xs", fontWeight: "300", lineHeight: "1.33", textColor: "text.tertiary" }, getFileSize(file.size))), /* @__PURE__ */ React43.createElement(IconButton_default, { onClick: () => onDelete?.(file) }, /* @__PURE__ */ React43.createElement(ClearIcon2, null))))));
6190
5597
  };
6191
5598
  var UploaderRoot = styled28(Stack_default, {
6192
5599
  name: "Uploader",
@@ -6198,31 +5605,27 @@ var FileDropZone = styled28(Sheet_default, {
6198
5605
  name: "Uploader",
6199
5606
  slot: "dropZone",
6200
5607
  shouldForwardProp: (prop) => prop !== "error"
6201
- })(
6202
- ({ theme, state, error }) => ({
6203
- width: "100%",
6204
- display: "flex",
6205
- flexDirection: "column",
6206
- justifyContent: "center",
6207
- alignItems: "center",
6208
- padding: theme.spacing(5),
6209
- gap: theme.spacing(4),
6210
- cursor: "pointer",
6211
- backgroundColor: theme.palette.background.surface,
6212
- border: error ? `1px solid ${theme.palette.danger.outlinedBorder}` : state === "idle" ? `1px solid ${theme.palette.neutral.outlinedBorder}` : `1px solid ${theme.palette.primary.outlinedBorder}`
6213
- })
6214
- );
5608
+ })(({ theme, state, error }) => ({
5609
+ width: "100%",
5610
+ display: "flex",
5611
+ flexDirection: "column",
5612
+ justifyContent: "center",
5613
+ alignItems: "center",
5614
+ padding: theme.spacing(5),
5615
+ gap: theme.spacing(4),
5616
+ cursor: "pointer",
5617
+ backgroundColor: theme.palette.background.surface,
5618
+ border: error ? `1px solid ${theme.palette.danger.outlinedBorder}` : state === "idle" ? `1px solid ${theme.palette.neutral.outlinedBorder}` : `1px solid ${theme.palette.primary.outlinedBorder}`
5619
+ }));
6215
5620
  var UploaderIcon = styled28(MuiFileUploadIcon, {
6216
5621
  name: "Uploader",
6217
5622
  slot: "iconContainer",
6218
5623
  shouldForwardProp: (prop) => prop !== "error"
6219
- })(
6220
- ({ theme, state, error }) => ({
6221
- color: error ? `rgba(${theme.vars.palette.danger.mainChannel} / 0.6)` : state === "over" ? `rgba(${theme.palette.primary.mainChannel} / 0.6)` : theme.palette.neutral.softActiveBg,
6222
- width: "32px",
6223
- height: "32px"
6224
- })
6225
- );
5624
+ })(({ theme, state, error }) => ({
5625
+ color: error ? `rgba(${theme.vars.palette.danger.mainChannel} / 0.6)` : state === "over" ? `rgba(${theme.palette.primary.mainChannel} / 0.6)` : theme.palette.neutral.softActiveBg,
5626
+ width: "32px",
5627
+ height: "32px"
5628
+ }));
6226
5629
  var Uploader = React43.memo(
6227
5630
  (props) => {
6228
5631
  const {
@@ -6242,14 +5645,9 @@ var Uploader = React43.memo(
6242
5645
  const inputRef = useRef8(null);
6243
5646
  const [errorText, setErrorText] = useState12();
6244
5647
  const [files, setFiles] = useState12([]);
6245
- const [uploaded, setUploaded] = useState12(
6246
- props.uploaded || []
6247
- );
5648
+ const [uploaded, setUploaded] = useState12(props.uploaded || []);
6248
5649
  const [previewState, setPreviewState] = useState12("idle");
6249
- const accepts = useMemo12(
6250
- () => accept.split(",").map((accept2) => accept2.trim()),
6251
- [accept]
6252
- );
5650
+ const accepts = useMemo12(() => accept.split(",").map((accept2) => accept2.trim()), [accept]);
6253
5651
  const parsedAccepts = useMemo12(
6254
5652
  () => accepts.flatMap((type) => {
6255
5653
  if (["image/*", "video/*", "audio/*"].includes(type)) {
@@ -6261,15 +5659,11 @@ var Uploader = React43.memo(
6261
5659
  );
6262
5660
  const helperText = useMemo12(() => {
6263
5661
  const [allAcceptedTypes, acceptedTypes] = [
6264
- accepts.filter(
6265
- (accept2) => ["image/*", "video/*", "audio/*"].includes(accept2)
6266
- ).map((accept2) => {
5662
+ accepts.filter((accept2) => ["image/*", "video/*", "audio/*"].includes(accept2)).map((accept2) => {
6267
5663
  const [type] = accept2.split("/");
6268
5664
  return type.toLowerCase();
6269
5665
  }),
6270
- accepts.filter(
6271
- (accept2) => !["image/*", "video/*", "audio/*"].includes(accept2)
6272
- ).map((accept2) => {
5666
+ accepts.filter((accept2) => !["image/*", "video/*", "audio/*"].includes(accept2)).map((accept2) => {
6273
5667
  const [extensionOrType, subType] = accept2.split("/");
6274
5668
  if (!subType) {
6275
5669
  return extensionOrType.toUpperCase().replace(".", "");
@@ -6286,16 +5680,11 @@ var Uploader = React43.memo(
6286
5680
  }
6287
5681
  helperTexts.push(`Maximum ${getFileSize(maxFileTotalSize)}`);
6288
5682
  if (maxCount) {
6289
- helperTexts.push(
6290
- `Up to ${maxCount} ${maxCount === 1 ? "file" : "files"}`
6291
- );
5683
+ helperTexts.push(`Up to ${maxCount} ${maxCount === 1 ? "file" : "files"}`);
6292
5684
  }
6293
5685
  return helperTexts.join(", ");
6294
5686
  }, [accepts, maxFileTotalSize, maxCount]);
6295
- const error = useMemo12(
6296
- () => !!errorText || props.error,
6297
- [props.error, errorText]
6298
- );
5687
+ const error = useMemo12(() => !!errorText || props.error, [props.error, errorText]);
6299
5688
  const showDropZone = useMemo12(
6300
5689
  () => !maxCount || maxCount && [...uploaded, ...files].length !== maxCount,
6301
5690
  [files, maxCount, uploaded]
@@ -6322,10 +5711,7 @@ var Uploader = React43.memo(
6322
5711
  }
6323
5712
  });
6324
5713
  }
6325
- const totalFileSize = [...files, ...uploads].reduce(
6326
- (acc, file) => acc + file.size,
6327
- 0
6328
- );
5714
+ const totalFileSize = [...files, ...uploads].reduce((acc, file) => acc + file.size, 0);
6329
5715
  if (totalFileSize > maxFileTotalSize) {
6330
5716
  throw new Error(`Total File size exceeded the maximum limit.`);
6331
5717
  }
@@ -6346,34 +5732,15 @@ var Uploader = React43.memo(
6346
5732
  setErrorText(err.message);
6347
5733
  }
6348
5734
  },
6349
- [
6350
- files,
6351
- uploaded,
6352
- maxCount,
6353
- parsedAccepts,
6354
- maxFileSize,
6355
- maxFileTotalSize,
6356
- name,
6357
- onChange
6358
- ]
5735
+ [files, uploaded, maxCount, parsedAccepts, maxFileSize, maxFileTotalSize, name, onChange]
6359
5736
  );
6360
5737
  useEffect10(() => {
6361
5738
  if (!dropZoneRef.current || disabled) {
6362
5739
  return;
6363
5740
  }
6364
5741
  let cleanup;
6365
- Promise.all([
6366
- esmFiles.combine,
6367
- esmFiles.adapter,
6368
- esmFiles.file,
6369
- esmFiles.preventUnhandled
6370
- ]).then(
6371
- ([
6372
- combineModule,
6373
- adapterModule,
6374
- fileModule,
6375
- preventUnhandledModule
6376
- ]) => {
5742
+ Promise.all([esmFiles.combine, esmFiles.adapter, esmFiles.file, esmFiles.preventUnhandled]).then(
5743
+ ([combineModule, adapterModule, fileModule, preventUnhandledModule]) => {
6377
5744
  const { combine } = combineModule;
6378
5745
  const { dropTargetForExternal, monitorForExternal } = adapterModule;
6379
5746
  const { containsFiles, getFiles } = fileModule;
@@ -6408,9 +5775,7 @@ var Uploader = React43.memo(
6408
5775
  useEffect10(() => {
6409
5776
  if (inputRef.current && minCount) {
6410
5777
  if (files.length < minCount) {
6411
- inputRef.current.setCustomValidity(
6412
- `At least ${minCount} files are required.`
6413
- );
5778
+ inputRef.current.setCustomValidity(`At least ${minCount} files are required.`);
6414
5779
  } else {
6415
5780
  inputRef.current.setCustomValidity("");
6416
5781
  }
@@ -6436,9 +5801,7 @@ var Uploader = React43.memo(
6436
5801
  return current.filter((file) => file !== deletedFile);
6437
5802
  });
6438
5803
  } else {
6439
- setUploaded(
6440
- (uploaded2) => uploaded2.filter((file) => file.id !== deletedFile.id)
6441
- );
5804
+ setUploaded((uploaded2) => uploaded2.filter((file) => file.id !== deletedFile.id));
6442
5805
  onDelete?.(deletedFile);
6443
5806
  }
6444
5807
  setErrorText(void 0);
@@ -6464,9 +5827,7 @@ var Uploader = React43.memo(
6464
5827
  required: !!minCount,
6465
5828
  onInvalid: (e) => {
6466
5829
  if (minCount && files.length < minCount) {
6467
- setErrorText(
6468
- `Please choose ${minCount} ${minCount === 1 ? "file" : "files"} to upload.`
6469
- );
5830
+ setErrorText(`Please choose ${minCount} ${minCount === 1 ? "file" : "files"} to upload.`);
6470
5831
  }
6471
5832
  },
6472
5833
  slotProps: {
@@ -6482,25 +5843,7 @@ var Uploader = React43.memo(
6482
5843
  }
6483
5844
  )
6484
5845
  );
6485
- return /* @__PURE__ */ React43.createElement(UploaderRoot, null, showDropZone && /* @__PURE__ */ React43.createElement(
6486
- FormControl_default,
6487
- {
6488
- size,
6489
- error: !!(error || errorText),
6490
- disabled,
6491
- required: !!minCount
6492
- },
6493
- label && /* @__PURE__ */ React43.createElement(FormLabel_default, null, label),
6494
- uploader,
6495
- /* @__PURE__ */ React43.createElement(FormHelperText_default, null, /* @__PURE__ */ React43.createElement(Stack_default, null, errorText && /* @__PURE__ */ React43.createElement("div", null, errorText), /* @__PURE__ */ React43.createElement("div", null, helperText)))
6496
- ), [...uploaded, ...files].length > 0 && /* @__PURE__ */ React43.createElement(
6497
- Preview,
6498
- {
6499
- files,
6500
- uploaded,
6501
- onDelete: handleDeleteFile
6502
- }
6503
- ));
5846
+ return /* @__PURE__ */ React43.createElement(UploaderRoot, null, showDropZone && /* @__PURE__ */ React43.createElement(FormControl_default, { size, error: !!(error || errorText), disabled, required: !!minCount }, label && /* @__PURE__ */ React43.createElement(FormLabel_default, null, label), uploader, /* @__PURE__ */ React43.createElement(FormHelperText_default, null, /* @__PURE__ */ React43.createElement(Stack_default, null, errorText && /* @__PURE__ */ React43.createElement("div", null, errorText), /* @__PURE__ */ React43.createElement("div", null, helperText)))), [...uploaded, ...files].length > 0 && /* @__PURE__ */ React43.createElement(Preview, { files, uploaded, onDelete: handleDeleteFile }));
6504
5847
  }
6505
5848
  );
6506
5849
  Uploader.displayName = "Uploader";