@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.cjs CHANGED
@@ -323,16 +323,7 @@ var MotionAlert = (0, import_joy4.styled)((0, import_framer_motion3.motion)(impo
323
323
  function Alert(props) {
324
324
  const { title, content, actions, color = "primary", ...innerProps } = props;
325
325
  const invertedColors = props.invertedColors || props.variant === "solid";
326
- return /* @__PURE__ */ import_react3.default.createElement(
327
- MotionAlert,
328
- {
329
- ...innerProps,
330
- color,
331
- endDecorator: actions,
332
- invertedColors
333
- },
334
- /* @__PURE__ */ import_react3.default.createElement(Stack_default, null, title && /* @__PURE__ */ import_react3.default.createElement(Typography_default, { level: "title-md", fontWeight: "bold", color }, title), /* @__PURE__ */ import_react3.default.createElement(Typography_default, { level: "body-sm", fontWeight: 500, color }, content))
335
- );
326
+ return /* @__PURE__ */ import_react3.default.createElement(MotionAlert, { ...innerProps, color, endDecorator: actions, invertedColors }, /* @__PURE__ */ import_react3.default.createElement(Stack_default, null, title && /* @__PURE__ */ import_react3.default.createElement(Typography_default, { level: "title-md", fontWeight: "bold", color }, title), /* @__PURE__ */ import_react3.default.createElement(Typography_default, { level: "body-sm", fontWeight: 500, color }, content)));
336
327
  }
337
328
  Alert.displayName = "Alert";
338
329
 
@@ -409,9 +400,7 @@ var IconButton_default = IconButton;
409
400
  var import_react5 = require("react");
410
401
  function useControlledState(controlledValue, defaultValue, onChange) {
411
402
  const { current: isControlled } = (0, import_react5.useRef)(controlledValue !== void 0);
412
- const [internalValue, setInternalValue] = (0, import_react5.useState)(
413
- controlledValue ?? defaultValue
414
- );
403
+ const [internalValue, setInternalValue] = (0, import_react5.useState)(controlledValue ?? defaultValue);
415
404
  const displayValue = isControlled ? controlledValue : internalValue;
416
405
  (0, import_react5.useEffect)(() => {
417
406
  if (isControlled) {
@@ -785,33 +774,13 @@ function Breadcrumbs(props) {
785
774
  }
786
775
  };
787
776
  if (!collapsed) {
788
- return /* @__PURE__ */ import_react9.default.createElement(
789
- import_joy15.Breadcrumbs,
790
- {
791
- size,
792
- slots: restSlots,
793
- slotProps: restSlotProps,
794
- ...innerProps
795
- },
796
- crumbs.map((crumb, index) => /* @__PURE__ */ import_react9.default.createElement(Crumb, { key: `breadcrumb-${index}`, ...crumb }))
797
- );
777
+ return /* @__PURE__ */ import_react9.default.createElement(import_joy15.Breadcrumbs, { size, slots: restSlots, slotProps: restSlotProps, ...innerProps }, crumbs.map((crumb, index) => /* @__PURE__ */ import_react9.default.createElement(Crumb, { key: `breadcrumb-${index}`, ...crumb })));
798
778
  }
799
779
  const _endCrumbCount = Math.max(1, endCrumbCount);
800
780
  const frontCrumbs = crumbs.slice(0, startCrumbCount).map((crumb) => /* @__PURE__ */ import_react9.default.createElement(Crumb, { key: `breadcrumb-${crumb.label}`, ...crumb }));
801
781
  const backCrumbs = (startCrumbCount + _endCrumbCount > crumbs.length ? crumbs.slice(startCrumbCount) : crumbs.slice(-_endCrumbCount)).map((crumb) => /* @__PURE__ */ import_react9.default.createElement(Crumb, { key: `breadcrumb-${crumb.label}`, ...crumb }));
802
782
  const collapsedCrumbs = crumbs.slice(startCrumbCount, -_endCrumbCount).map((crumb) => /* @__PURE__ */ import_react9.default.createElement(MenuItem, { key: `breadcrumb-${crumb.label}` }, /* @__PURE__ */ import_react9.default.createElement(Crumb, { ...crumb })));
803
- return /* @__PURE__ */ import_react9.default.createElement(
804
- import_joy15.Breadcrumbs,
805
- {
806
- size,
807
- slots: restSlots,
808
- slotProps: restSlotProps,
809
- ...innerProps
810
- },
811
- frontCrumbs,
812
- collapsedCrumbs.length && /* @__PURE__ */ import_react9.default.createElement(Dropdown_default, null, /* @__PURE__ */ import_react9.default.createElement(import_joy15.MenuButton, { size, variant: "plain" }, "..."), /* @__PURE__ */ import_react9.default.createElement(Menu_default, { size }, collapsedCrumbs)),
813
- backCrumbs
814
- );
783
+ return /* @__PURE__ */ import_react9.default.createElement(import_joy15.Breadcrumbs, { size, slots: restSlots, slotProps: restSlotProps, ...innerProps }, frontCrumbs, collapsedCrumbs.length && /* @__PURE__ */ import_react9.default.createElement(Dropdown_default, null, /* @__PURE__ */ import_react9.default.createElement(import_joy15.MenuButton, { size, variant: "plain" }, "..."), /* @__PURE__ */ import_react9.default.createElement(Menu_default, { size }, collapsedCrumbs)), backCrumbs);
815
784
  }
816
785
  Breadcrumbs.displayName = "Breadcrumbs";
817
786
 
@@ -820,11 +789,9 @@ var import_react10 = __toESM(require("react"));
820
789
  var import_joy16 = require("@mui/joy");
821
790
  var import_framer_motion11 = require("framer-motion");
822
791
  var MotionButton = (0, import_framer_motion11.motion)(import_joy16.Button);
823
- var Button = (0, import_react10.forwardRef)(
824
- ({ ...props }, ref) => {
825
- return /* @__PURE__ */ import_react10.default.createElement(MotionButton, { ref, ...props });
826
- }
827
- );
792
+ var Button = (0, import_react10.forwardRef)(({ ...props }, ref) => {
793
+ return /* @__PURE__ */ import_react10.default.createElement(MotionButton, { ref, ...props });
794
+ });
828
795
  Button.displayName = "Button";
829
796
 
830
797
  // src/components/Button/index.ts
@@ -843,9 +810,7 @@ var getCalendarDates = (date) => {
843
810
  const firstDay = new Date(date.getFullYear(), date.getMonth(), 1);
844
811
  const lastDay = new Date(date.getFullYear(), date.getMonth() + 1, 0);
845
812
  const firstWeekInThisMonth = Math.ceil((firstDay.getDay() + 1) / 7);
846
- const lastWeekInThisMonth = Math.ceil(
847
- (lastDay.getDate() + firstDay.getDay()) / 7
848
- );
813
+ const lastWeekInThisMonth = Math.ceil((lastDay.getDate() + firstDay.getDay()) / 7);
849
814
  let day = 1;
850
815
  for (let i = 1; i <= lastWeekInThisMonth; i++) {
851
816
  const week = [];
@@ -920,7 +885,9 @@ var useCalendarProps = (inProps) => {
920
885
  const [uncontrolledView, setUncontrolledView] = (0, import_react11.useState)(
921
886
  () => resolveView(inProps.view || "day", inProps.views || ["day", "month"])
922
887
  );
923
- const [uncontrolledValue, setUncontrolledValue] = (0, import_react11.useState)(inProps.defaultValue);
888
+ const [uncontrolledValue, setUncontrolledValue] = (0, import_react11.useState)(
889
+ inProps.defaultValue
890
+ );
924
891
  const [viewMonth, setViewMonth] = (0, import_react11.useState)(() => {
925
892
  const today = /* @__PURE__ */ new Date();
926
893
  today.setDate(1);
@@ -993,10 +960,7 @@ var useCalendarProps = (inProps) => {
993
960
  },
994
961
  name: "Calendar"
995
962
  });
996
- const ownerState = (0, import_react11.useMemo)(
997
- () => ({ ...props, viewMonth, direction }),
998
- [props, viewMonth, direction]
999
- );
963
+ const ownerState = (0, import_react11.useMemo)(() => ({ ...props, viewMonth, direction }), [props, viewMonth, direction]);
1000
964
  return [props, ownerState];
1001
965
  };
1002
966
 
@@ -1014,11 +978,7 @@ var useCalendar = (ownerState) => {
1014
978
  const currentMonth = currentDate.getMonth();
1015
979
  const currentDay = currentDate.getDate();
1016
980
  const prevMonth = new Date(currentYear, currentMonth - 1, 1);
1017
- const lastDayOfPrevMonth = new Date(
1018
- currentYear,
1019
- currentMonth,
1020
- 0
1021
- ).getDate();
981
+ const lastDayOfPrevMonth = new Date(currentYear, currentMonth, 0).getDate();
1022
982
  const prevMonthDay = Math.min(currentDay, lastDayOfPrevMonth);
1023
983
  prevMonth.setDate(prevMonthDay);
1024
984
  ownerState.onMonthChange?.(prevMonth);
@@ -1035,11 +995,7 @@ var useCalendar = (ownerState) => {
1035
995
  const currentMonth = currentDate.getMonth();
1036
996
  const currentDay = currentDate.getDate();
1037
997
  const nextMonth = new Date(currentYear, currentMonth + 1, 1);
1038
- const lastDayOfNextMonth = new Date(
1039
- currentYear,
1040
- currentMonth + 2,
1041
- 0
1042
- ).getDate();
998
+ const lastDayOfNextMonth = new Date(currentYear, currentMonth + 2, 0).getDate();
1043
999
  const nextMonthDay = Math.min(currentDay, lastDayOfNextMonth);
1044
1000
  nextMonth.setDate(nextMonthDay);
1045
1001
  ownerState.onMonthChange?.(nextMonth);
@@ -1056,22 +1012,13 @@ var useCalendar = (ownerState) => {
1056
1012
  thisDay.setDate(day);
1057
1013
  const inRange = ownerState.rangeSelection && ownerState.value && ownerState.value[0] && // NOTE: hover day is not included in the range
1058
1014
  (hoverDay && isWithinRange(ownerState.value[0], hoverDay, thisDay) || // NOTE: Selected range is included in the range
1059
- ownerState.value[1] && isWithinRange(
1060
- ownerState.value[0],
1061
- ownerState.value[1],
1062
- thisDay
1063
- ));
1015
+ ownerState.value[1] && isWithinRange(ownerState.value[0], ownerState.value[1], thisDay));
1064
1016
  return {
1065
1017
  "aria-label": thisDay.toLocaleDateString(),
1066
1018
  "aria-current": inRange ? "date" : void 0
1067
1019
  };
1068
1020
  },
1069
- [
1070
- ownerState.rangeSelection,
1071
- ownerState.value,
1072
- ownerState.viewMonth,
1073
- hoverDay
1074
- ]
1021
+ [ownerState.rangeSelection, ownerState.value, ownerState.viewMonth, hoverDay]
1075
1022
  ),
1076
1023
  getMonthCellProps: (0, import_react12.useCallback)(
1077
1024
  (monthIndex) => {
@@ -1082,22 +1029,13 @@ var useCalendar = (ownerState) => {
1082
1029
  const isMonthRangeSelection = !ownerState.views?.find((view) => view === "day") && ownerState.rangeSelection;
1083
1030
  const inRange = isMonthRangeSelection && ownerState.value && ownerState.value[0] && // NOTE: hover day is not included in the range
1084
1031
  (hoverMonth && isWithinRange(ownerState.value[0], hoverMonth, thisMonth) || // NOTE: Selected range is included in the range
1085
- ownerState.value[1] && isWithinRange(
1086
- ownerState.value[0],
1087
- ownerState.value[1],
1088
- thisMonth
1089
- ));
1032
+ ownerState.value[1] && isWithinRange(ownerState.value[0], ownerState.value[1], thisMonth));
1090
1033
  return {
1091
1034
  "aria-label": thisMonth.toLocaleDateString(),
1092
1035
  "aria-current": inRange ? "date" : void 0
1093
1036
  };
1094
1037
  },
1095
- [
1096
- ownerState.rangeSelection,
1097
- ownerState.value,
1098
- ownerState.viewMonth,
1099
- hoverMonth
1100
- ]
1038
+ [ownerState.rangeSelection, ownerState.value, ownerState.viewMonth, hoverMonth]
1101
1039
  ),
1102
1040
  getPickerDayProps: (0, import_react12.useCallback)(
1103
1041
  (day) => {
@@ -1107,23 +1045,15 @@ var useCalendar = (ownerState) => {
1107
1045
  const isSelected = !!ownerState.value && (isSameDay(thisDay, ownerState.value[0]) || ownerState.value[1] && isSameDay(thisDay, ownerState.value[1]));
1108
1046
  const inRange = ownerState.rangeSelection && ownerState.value && ownerState.value[0] && // NOTE: hover day is not included in the range
1109
1047
  (hoverDay && isWithinRange(ownerState.value[0], hoverDay, thisDay) || // NOTE: Selected range is included in the range
1110
- ownerState.value[1] && isWithinRange(
1111
- ownerState.value[0],
1112
- ownerState.value[1],
1113
- thisDay
1114
- ));
1048
+ ownerState.value[1] && isWithinRange(ownerState.value[0], ownerState.value[1], thisDay));
1115
1049
  const handleDayClick = () => {
1116
1050
  if (ownerState.rangeSelection) {
1117
1051
  if (!ownerState.value) {
1118
1052
  ownerState.onChange?.([thisDay, void 0]);
1119
1053
  } else if (ownerState.value[0] && !ownerState.value[1]) {
1120
1054
  ownerState.onChange?.([
1121
- new Date(
1122
- Math.min(ownerState.value[0].getTime(), thisDay.getTime())
1123
- ),
1124
- new Date(
1125
- Math.max(ownerState.value[0].getTime(), thisDay.getTime())
1126
- )
1055
+ new Date(Math.min(ownerState.value[0].getTime(), thisDay.getTime())),
1056
+ new Date(Math.max(ownerState.value[0].getTime(), thisDay.getTime()))
1127
1057
  ]);
1128
1058
  } else {
1129
1059
  ownerState.onChange?.([thisDay, void 0]);
@@ -1172,23 +1102,15 @@ var useCalendar = (ownerState) => {
1172
1102
  const isSelected = !!ownerState.value && (isSameMonth(thisMonth, ownerState.value[0]) || ownerState.value[1] && isSameMonth(thisMonth, ownerState.value[1]));
1173
1103
  const inRange = isMonthRangeSelection && ownerState.value && ownerState.value[0] && // NOTE: hover day is not included in the range
1174
1104
  (hoverMonth && isWithinRange(ownerState.value[0], hoverMonth, thisMonth) || // NOTE: Selected range is included in the range
1175
- ownerState.value[1] && isWithinRange(
1176
- ownerState.value[0],
1177
- ownerState.value[1],
1178
- thisMonth
1179
- ));
1105
+ ownerState.value[1] && isWithinRange(ownerState.value[0], ownerState.value[1], thisMonth));
1180
1106
  const handleMonthClick = () => {
1181
1107
  if (isMonthRangeSelection) {
1182
1108
  if (!ownerState.value) {
1183
1109
  ownerState.onChange?.([thisMonth, void 0]);
1184
1110
  } else if (ownerState.value[0] && !ownerState.value[1]) {
1185
1111
  ownerState.onChange?.([
1186
- new Date(
1187
- Math.min(ownerState.value[0].getTime(), thisMonth.getTime())
1188
- ),
1189
- new Date(
1190
- Math.max(ownerState.value[0].getTime(), thisMonth.getTime())
1191
- )
1112
+ new Date(Math.min(ownerState.value[0].getTime(), thisMonth.getTime())),
1113
+ new Date(Math.max(ownerState.value[0].getTime(), thisMonth.getTime()))
1192
1114
  ]);
1193
1115
  } else {
1194
1116
  ownerState.onChange?.([thisMonth, void 0]);
@@ -1258,15 +1180,13 @@ var CalendarViewContainer = (0, import_joy18.styled)("div", {
1258
1180
  name: "Calendar",
1259
1181
  slot: "viewContainer",
1260
1182
  shouldForwardProp: (prop) => prop !== "calendarType"
1261
- })(
1262
- ({ theme, calendarType }) => ({
1263
- paddingLeft: theme.spacing(2),
1264
- paddingRight: theme.spacing(2),
1265
- position: "relative",
1266
- overflow: "hidden",
1267
- minHeight: calendarType === "datePicker" ? "250px" : "unset"
1268
- })
1269
- );
1183
+ })(({ theme, calendarType }) => ({
1184
+ paddingLeft: theme.spacing(2),
1185
+ paddingRight: theme.spacing(2),
1186
+ position: "relative",
1187
+ overflow: "hidden",
1188
+ minHeight: calendarType === "datePicker" ? "250px" : "unset"
1189
+ }));
1270
1190
  var CalendarViewTable = (0, import_joy18.styled)(import_framer_motion12.motion.table, {
1271
1191
  name: "Calendar",
1272
1192
  slot: "viewTable"
@@ -1445,14 +1365,8 @@ var swipePower = (offset, velocity) => {
1445
1365
  var PickerDays = (props) => {
1446
1366
  const { ownerState } = props;
1447
1367
  const { getPickerDayProps, getDayCellProps } = useCalendar(ownerState);
1448
- const calendarDates = (0, import_react13.useMemo)(
1449
- () => getCalendarDates(ownerState.viewMonth),
1450
- [ownerState.viewMonth]
1451
- );
1452
- const weekdayNames = (0, import_react13.useMemo)(
1453
- () => getWeekdayNames(ownerState.locale || "default"),
1454
- [ownerState.locale]
1455
- );
1368
+ const calendarDates = (0, import_react13.useMemo)(() => getCalendarDates(ownerState.viewMonth), [ownerState.viewMonth]);
1369
+ const weekdayNames = (0, import_react13.useMemo)(() => getWeekdayNames(ownerState.locale || "default"), [ownerState.locale]);
1456
1370
  return /* @__PURE__ */ import_react13.default.createElement(CalendarViewContainer, { calendarType: "datePicker" }, /* @__PURE__ */ import_react13.default.createElement(import_framer_motion12.AnimatePresence, { initial: false, custom: ownerState.direction }, /* @__PURE__ */ import_react13.default.createElement(
1457
1371
  CalendarViewTable,
1458
1372
  {
@@ -1482,25 +1396,9 @@ var PickerDays = (props) => {
1482
1396
  }
1483
1397
  }
1484
1398
  },
1485
- /* @__PURE__ */ import_react13.default.createElement(CalendarWeekHeaderContainer, null, /* @__PURE__ */ import_react13.default.createElement("tr", null, weekdayNames.map((name, i) => /* @__PURE__ */ import_react13.default.createElement(import_react13.Fragment, { key: `${ownerState.viewMonth}_${name}_${i}` }, /* @__PURE__ */ import_react13.default.createElement("th", null, /* @__PURE__ */ import_react13.default.createElement(Typography_default, { level: "body-xs", textAlign: "center" }, name)), i < 6 && /* @__PURE__ */ import_react13.default.createElement(
1486
- "th",
1487
- {
1488
- style: { width: 4 },
1489
- "aria-hidden": "true",
1490
- "aria-description": "cell-gap"
1491
- }
1492
- ))))),
1399
+ /* @__PURE__ */ import_react13.default.createElement(CalendarWeekHeaderContainer, null, /* @__PURE__ */ import_react13.default.createElement("tr", null, weekdayNames.map((name, i) => /* @__PURE__ */ import_react13.default.createElement(import_react13.Fragment, { key: `${ownerState.viewMonth}_${name}_${i}` }, /* @__PURE__ */ import_react13.default.createElement("th", null, /* @__PURE__ */ import_react13.default.createElement(Typography_default, { level: "body-xs", textAlign: "center" }, name)), i < 6 && /* @__PURE__ */ import_react13.default.createElement("th", { style: { width: 4 }, "aria-hidden": "true", "aria-description": "cell-gap" }))))),
1493
1400
  /* @__PURE__ */ import_react13.default.createElement(CalendarDayPickerContainer, null, calendarDates.map((weekDates, rowIndex) => /* @__PURE__ */ import_react13.default.createElement(import_react13.Fragment, { key: `${ownerState.viewMonth}_${rowIndex}` }, /* @__PURE__ */ import_react13.default.createElement("tr", null, weekDates.map(
1494
- (date, i) => date ? /* @__PURE__ */ import_react13.default.createElement(import_react13.Fragment, { key: `${ownerState.viewMonth}_${date}_${i}` }, /* @__PURE__ */ import_react13.default.createElement(CalendarDayCell, { ...getDayCellProps(date) }, /* @__PURE__ */ import_react13.default.createElement(
1495
- CalendarDay,
1496
- {
1497
- size: "sm",
1498
- variant: "plain",
1499
- color: "neutral",
1500
- ...getPickerDayProps(date)
1501
- },
1502
- date
1503
- )), i < 6 && /* @__PURE__ */ import_react13.default.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" })) : /* @__PURE__ */ import_react13.default.createElement(import_react13.Fragment, { key: `${ownerState.viewMonth}_${i}` }, /* @__PURE__ */ import_react13.default.createElement("td", null), i < 6 && /* @__PURE__ */ import_react13.default.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" }))
1401
+ (date, i) => date ? /* @__PURE__ */ import_react13.default.createElement(import_react13.Fragment, { key: `${ownerState.viewMonth}_${date}_${i}` }, /* @__PURE__ */ import_react13.default.createElement(CalendarDayCell, { ...getDayCellProps(date) }, /* @__PURE__ */ import_react13.default.createElement(CalendarDay, { size: "sm", variant: "plain", color: "neutral", ...getPickerDayProps(date) }, date)), i < 6 && /* @__PURE__ */ import_react13.default.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" })) : /* @__PURE__ */ import_react13.default.createElement(import_react13.Fragment, { key: `${ownerState.viewMonth}_${i}` }, /* @__PURE__ */ import_react13.default.createElement("td", null), i < 6 && /* @__PURE__ */ import_react13.default.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" }))
1504
1402
  )), rowIndex < calendarDates.length - 1 && /* @__PURE__ */ import_react13.default.createElement("tr", { "aria-hidden": "true", "aria-description": "row-gap" }, /* @__PURE__ */ import_react13.default.createElement("td", { colSpan: 13, style: { height: 4 } })))))
1505
1403
  )));
1506
1404
  };
@@ -1518,62 +1416,37 @@ var PickerMonths = (props) => {
1518
1416
  [[]]
1519
1417
  );
1520
1418
  const isMonthPicker = !ownerState.views?.find((view) => view === "day");
1521
- return /* @__PURE__ */ import_react13.default.createElement(
1522
- CalendarViewContainer,
1419
+ return /* @__PURE__ */ import_react13.default.createElement(CalendarViewContainer, { calendarType: isMonthPicker ? "monthPicker" : "datePicker" }, /* @__PURE__ */ import_react13.default.createElement(import_framer_motion12.AnimatePresence, { initial: false, custom: ownerState.direction }, /* @__PURE__ */ import_react13.default.createElement(
1420
+ CalendarViewTable,
1523
1421
  {
1524
- calendarType: isMonthPicker ? "monthPicker" : "datePicker"
1525
- },
1526
- /* @__PURE__ */ import_react13.default.createElement(import_framer_motion12.AnimatePresence, { initial: false, custom: ownerState.direction }, /* @__PURE__ */ import_react13.default.createElement(
1527
- CalendarViewTable,
1528
- {
1529
- key: `${ownerState.viewMonth.getFullYear()}_${ownerState.direction}`,
1530
- custom: ownerState.direction,
1531
- variants,
1532
- initial: "enter",
1533
- animate: "center",
1534
- exit: "exit",
1535
- transition: {
1536
- x: { type: "spring", stiffness: 300, damping: 30 },
1537
- opacity: { duration: 0.2 }
1538
- },
1539
- drag: "x",
1540
- dragConstraints: { left: 0, right: 0 },
1541
- dragElastic: 1,
1542
- onDragEnd: (e, { offset, velocity }) => {
1543
- const swipe = swipePower(offset.x, velocity.x);
1544
- if (swipe < -swipeConfidenceThreshold) {
1545
- const date = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
1546
- date.setMonth(date.getMonth() + 1);
1547
- ownerState.onMonthChange?.(date);
1548
- } else if (swipe > swipeConfidenceThreshold) {
1549
- const date = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
1550
- date.setMonth(date.getMonth() - 1);
1551
- ownerState.onMonthChange?.(date);
1552
- }
1553
- }
1422
+ key: `${ownerState.viewMonth.getFullYear()}_${ownerState.direction}`,
1423
+ custom: ownerState.direction,
1424
+ variants,
1425
+ initial: "enter",
1426
+ animate: "center",
1427
+ exit: "exit",
1428
+ transition: {
1429
+ x: { type: "spring", stiffness: 300, damping: 30 },
1430
+ opacity: { duration: 0.2 }
1554
1431
  },
1555
- /* @__PURE__ */ import_react13.default.createElement("tbody", null, chunkedMonths.map((months, i) => /* @__PURE__ */ import_react13.default.createElement(import_react13.Fragment, { key: months.join("_") }, /* @__PURE__ */ import_react13.default.createElement("tr", null, months.map((monthIndex, j) => /* @__PURE__ */ import_react13.default.createElement(import_react13.Fragment, { key: monthIndex }, /* @__PURE__ */ import_react13.default.createElement(CalendarMonthCell, { ...getMonthCellProps(monthIndex) }, /* @__PURE__ */ import_react13.default.createElement(
1556
- CalendarMonth,
1557
- {
1558
- size: "sm",
1559
- variant: "plain",
1560
- color: "neutral",
1561
- ...getPickerMonthProps(monthIndex)
1562
- },
1563
- getMonthNameFromIndex(
1564
- monthIndex,
1565
- ownerState.locale
1566
- )
1567
- )), j < 3 && /* @__PURE__ */ import_react13.default.createElement(
1568
- "td",
1569
- {
1570
- style: { width: 4 },
1571
- "aria-hidden": "true",
1572
- "aria-description": "cell-gap"
1432
+ drag: "x",
1433
+ dragConstraints: { left: 0, right: 0 },
1434
+ dragElastic: 1,
1435
+ onDragEnd: (e, { offset, velocity }) => {
1436
+ const swipe = swipePower(offset.x, velocity.x);
1437
+ if (swipe < -swipeConfidenceThreshold) {
1438
+ const date = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
1439
+ date.setMonth(date.getMonth() + 1);
1440
+ ownerState.onMonthChange?.(date);
1441
+ } else if (swipe > swipeConfidenceThreshold) {
1442
+ const date = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
1443
+ date.setMonth(date.getMonth() - 1);
1444
+ ownerState.onMonthChange?.(date);
1573
1445
  }
1574
- )))), i < chunkedMonths.length - 1 && /* @__PURE__ */ import_react13.default.createElement("tr", { "aria-hidden": "true", "aria-description": "row-gap" }, /* @__PURE__ */ import_react13.default.createElement("td", { colSpan: 7, style: { height: 4 } })))))
1575
- ))
1576
- );
1446
+ }
1447
+ },
1448
+ /* @__PURE__ */ import_react13.default.createElement("tbody", null, chunkedMonths.map((months, i) => /* @__PURE__ */ import_react13.default.createElement(import_react13.Fragment, { key: months.join("_") }, /* @__PURE__ */ import_react13.default.createElement("tr", null, months.map((monthIndex, j) => /* @__PURE__ */ import_react13.default.createElement(import_react13.Fragment, { key: monthIndex }, /* @__PURE__ */ import_react13.default.createElement(CalendarMonthCell, { ...getMonthCellProps(monthIndex) }, /* @__PURE__ */ import_react13.default.createElement(CalendarMonth, { size: "sm", variant: "plain", color: "neutral", ...getPickerMonthProps(monthIndex) }, getMonthNameFromIndex(monthIndex, ownerState.locale))), j < 3 && /* @__PURE__ */ import_react13.default.createElement("td", { style: { width: 4 }, "aria-hidden": "true", "aria-description": "cell-gap" })))), i < chunkedMonths.length - 1 && /* @__PURE__ */ import_react13.default.createElement("tr", { "aria-hidden": "true", "aria-description": "row-gap" }, /* @__PURE__ */ import_react13.default.createElement("td", { colSpan: 7, style: { height: 4 } })))))
1449
+ )));
1577
1450
  };
1578
1451
  var Calendar = (0, import_react13.forwardRef)((inProps, ref) => {
1579
1452
  const [props, ownerState] = useCalendarProps(inProps);
@@ -1594,15 +1467,7 @@ var Calendar = (0, import_react13.forwardRef)((inProps, ref) => {
1594
1467
  ...others
1595
1468
  } = props;
1596
1469
  const { calendarTitle, onPrev, onNext } = useCalendar(ownerState);
1597
- return /* @__PURE__ */ import_react13.default.createElement(CalendarRoot, { ref, ...others }, /* @__PURE__ */ import_react13.default.createElement(CalendarHeader, null, /* @__PURE__ */ import_react13.default.createElement(
1598
- IconButton_default,
1599
- {
1600
- size: "sm",
1601
- onClick: onPrev,
1602
- "aria-label": `Previous ${view === "day" ? "Month" : "Year"}`
1603
- },
1604
- /* @__PURE__ */ import_react13.default.createElement(import_ChevronLeft.default, null)
1605
- ), /* @__PURE__ */ import_react13.default.createElement(
1470
+ return /* @__PURE__ */ import_react13.default.createElement(CalendarRoot, { ref, ...others }, /* @__PURE__ */ import_react13.default.createElement(CalendarHeader, null, /* @__PURE__ */ import_react13.default.createElement(IconButton_default, { size: "sm", onClick: onPrev, "aria-label": `Previous ${view === "day" ? "Month" : "Year"}` }, /* @__PURE__ */ import_react13.default.createElement(import_ChevronLeft.default, null)), /* @__PURE__ */ import_react13.default.createElement(
1606
1471
  CalendarSwitchViewButton,
1607
1472
  {
1608
1473
  ownerState,
@@ -1612,15 +1477,7 @@ var Calendar = (0, import_react13.forwardRef)((inProps, ref) => {
1612
1477
  "aria-label": "Switch Calendar View"
1613
1478
  },
1614
1479
  calendarTitle
1615
- ), /* @__PURE__ */ import_react13.default.createElement(
1616
- IconButton_default,
1617
- {
1618
- size: "sm",
1619
- onClick: onNext,
1620
- "aria-label": `Next ${view === "day" ? "Month" : "Year"}`
1621
- },
1622
- /* @__PURE__ */ import_react13.default.createElement(import_ChevronRight.default, null)
1623
- )), view === "day" && /* @__PURE__ */ import_react13.default.createElement(PickerDays, { ownerState }), view === "month" && /* @__PURE__ */ import_react13.default.createElement(PickerMonths, { ownerState }));
1480
+ ), /* @__PURE__ */ import_react13.default.createElement(IconButton_default, { size: "sm", onClick: onNext, "aria-label": `Next ${view === "day" ? "Month" : "Year"}` }, /* @__PURE__ */ import_react13.default.createElement(import_ChevronRight.default, null))), view === "day" && /* @__PURE__ */ import_react13.default.createElement(PickerDays, { ownerState }), view === "month" && /* @__PURE__ */ import_react13.default.createElement(PickerMonths, { ownerState }));
1624
1481
  });
1625
1482
  Calendar.displayName = "Calendar";
1626
1483
 
@@ -1758,23 +1615,15 @@ var Input = import_react16.default.forwardRef((props, ref) => {
1758
1615
  ...innerProps.slotProps
1759
1616
  },
1760
1617
  ...innerProps,
1761
- endDecorator: enableClearable ? /* @__PURE__ */ import_react16.default.createElement(
1762
- Stack_default,
1618
+ endDecorator: enableClearable ? /* @__PURE__ */ import_react16.default.createElement(Stack_default, { gap: 1, direction: "row" }, innerProps.endDecorator, value && /* @__PURE__ */ import_react16.default.createElement(
1619
+ IconButton_default,
1763
1620
  {
1764
- gap: 1,
1765
- direction: "row"
1621
+ onMouseDown: (e) => e.preventDefault(),
1622
+ onClick: handleClear,
1623
+ "aria-label": "Clear"
1766
1624
  },
1767
- innerProps.endDecorator,
1768
- value && /* @__PURE__ */ import_react16.default.createElement(
1769
- IconButton_default,
1770
- {
1771
- onMouseDown: (e) => e.preventDefault(),
1772
- onClick: handleClear,
1773
- "aria-label": "Clear"
1774
- },
1775
- /* @__PURE__ */ import_react16.default.createElement(import_Close2.default, null)
1776
- )
1777
- ) : innerProps.endDecorator
1625
+ /* @__PURE__ */ import_react16.default.createElement(import_Close2.default, null)
1626
+ )) : innerProps.endDecorator
1778
1627
  }
1779
1628
  );
1780
1629
  return /* @__PURE__ */ import_react16.default.createElement(
@@ -1962,25 +1811,23 @@ var useCurrencySetting = (props) => {
1962
1811
  };
1963
1812
 
1964
1813
  // src/components/CurrencyInput/CurrencyInput.tsx
1965
- var TextMaskAdapter = import_react17.default.forwardRef(
1966
- function TextMaskAdapter2(props, ref) {
1967
- const { onChange, ...innerProps } = props;
1968
- return /* @__PURE__ */ import_react17.default.createElement(
1969
- import_react_number_format.NumericFormat,
1970
- {
1971
- ...innerProps,
1972
- onValueChange: ({ value }) => {
1973
- onChange?.({
1974
- target: { name: props.name, value }
1975
- });
1976
- },
1977
- valueIsNumericString: true,
1978
- getInputRef: ref,
1979
- allowNegative: true
1980
- }
1981
- );
1982
- }
1983
- );
1814
+ var TextMaskAdapter = import_react17.default.forwardRef(function TextMaskAdapter2(props, ref) {
1815
+ const { onChange, ...innerProps } = props;
1816
+ return /* @__PURE__ */ import_react17.default.createElement(
1817
+ import_react_number_format.NumericFormat,
1818
+ {
1819
+ ...innerProps,
1820
+ onValueChange: ({ value }) => {
1821
+ onChange?.({
1822
+ target: { name: props.name, value }
1823
+ });
1824
+ },
1825
+ valueIsNumericString: true,
1826
+ getInputRef: ref,
1827
+ allowNegative: true
1828
+ }
1829
+ );
1830
+ });
1984
1831
  var CurrencyInputRoot = (0, import_joy23.styled)(Input_default, {
1985
1832
  name: "CurrencyInput",
1986
1833
  slot: "root",
@@ -2003,21 +1850,11 @@ var CurrencyInput = import_react17.default.forwardRef(function CurrencyInput2(in
2003
1850
  className,
2004
1851
  ...innerProps
2005
1852
  } = props;
2006
- const {
2007
- symbol,
2008
- thousandSeparator,
2009
- decimalSeparator,
2010
- placeholder,
2011
- fixedDecimalScale,
2012
- decimalScale
2013
- } = useCurrencySetting(props);
1853
+ const { symbol, thousandSeparator, decimalSeparator, placeholder, fixedDecimalScale, decimalScale } = useCurrencySetting(props);
2014
1854
  const [_value, setValue] = useControlledState(
2015
1855
  props.value,
2016
1856
  props.defaultValue,
2017
- (0, import_react17.useCallback)(
2018
- (value2) => onChange?.({ target: { name, value: value2 } }),
2019
- [onChange, name]
2020
- )
1857
+ (0, import_react17.useCallback)((value2) => onChange?.({ target: { name, value: value2 } }), [onChange, name])
2021
1858
  );
2022
1859
  const value = (0, import_react17.useMemo)(() => {
2023
1860
  if (_value && useMinorUnit) {
@@ -2031,9 +1868,7 @@ var CurrencyInput = import_react17.default.forwardRef(function CurrencyInput2(in
2031
1868
  }
2032
1869
  return props.max;
2033
1870
  }, [props.max, useMinorUnit, decimalScale]);
2034
- const [isOverLimit, setIsOverLimit] = (0, import_react17.useState)(
2035
- !!max && !!value && value > max
2036
- );
1871
+ const [isOverLimit, setIsOverLimit] = (0, import_react17.useState)(!!max && !!value && value > max);
2037
1872
  const handleChange = (0, import_react17.useCallback)(
2038
1873
  (event) => {
2039
1874
  if (event.target.value === "") {
@@ -2063,9 +1898,9 @@ var CurrencyInput = import_react17.default.forwardRef(function CurrencyInput2(in
2063
1898
  required,
2064
1899
  color: error || isOverLimit ? "danger" : props.color,
2065
1900
  label,
2066
- helperText: isOverLimit ? new import_intl_messageformat2.IntlMessageFormat(
2067
- `limit: {amount, number, ::currency/${currency} unit-width-narrow}`
2068
- ).format({ amount: max }) : helperText,
1901
+ helperText: isOverLimit ? new import_intl_messageformat2.IntlMessageFormat(`limit: {amount, number, ::currency/${currency} unit-width-narrow}`).format({
1902
+ amount: max
1903
+ }) : helperText,
2069
1904
  slotProps: {
2070
1905
  input: {
2071
1906
  component: TextMaskAdapter,
@@ -2161,13 +1996,7 @@ function TableBody(props) {
2161
1996
  textAlign: "center"
2162
1997
  }
2163
1998
  },
2164
- /* @__PURE__ */ import_react18.default.createElement(
2165
- RenderCheckbox,
2166
- {
2167
- onChange: (event) => onCheckboxChange?.(event, rowIndex),
2168
- ...checkboxProps
2169
- }
2170
- )
1999
+ /* @__PURE__ */ import_react18.default.createElement(RenderCheckbox, { onChange: (event) => onCheckboxChange?.(event, rowIndex), ...checkboxProps })
2171
2000
  ), cellOrder.map((cellKey) => /* @__PURE__ */ import_react18.default.createElement(
2172
2001
  "td",
2173
2002
  {
@@ -2212,9 +2041,7 @@ var CalendarButton = (0, import_joy27.styled)(IconButton_default, {
2212
2041
  "&:focus": {
2213
2042
  "--Icon-color": "currentColor",
2214
2043
  outlineOffset: `${theme.getCssVar("focus-thickness")}`,
2215
- outline: `${theme.getCssVar("focus-thickness")} solid ${theme.getCssVar(
2216
- "palette-focusVisible"
2217
- )}`
2044
+ outline: `${theme.getCssVar("focus-thickness")} solid ${theme.getCssVar("palette-focusVisible")}`
2218
2045
  }
2219
2046
  }));
2220
2047
  var StyledPopper = (0, import_joy27.styled)(import_base2.Popper, {
@@ -2248,9 +2075,7 @@ var validValueFormat = (value, format) => {
2248
2075
  if (value !== formatValueString(parsedValue, format)) {
2249
2076
  return false;
2250
2077
  }
2251
- const regex = new RegExp(
2252
- `^${format.replace(/Y/g, "\\d").replace(/M/g, "\\d").replace(/D/g, "\\d")}$`
2253
- );
2078
+ const regex = new RegExp(`^${format.replace(/Y/g, "\\d").replace(/M/g, "\\d").replace(/D/g, "\\d")}$`);
2254
2079
  return regex.test(value);
2255
2080
  } catch (e) {
2256
2081
  return false;
@@ -2291,310 +2116,293 @@ function parseDate(dateString, format) {
2291
2116
  var formatToPattern = (format) => {
2292
2117
  return format.replace(/YYYY/g, "Y").replace(/MM/g, "M").replace(/DD/g, "D").replace(/[^YMD\s]/g, (match) => `${match}\``);
2293
2118
  };
2294
- var TextMaskAdapter3 = import_react19.default.forwardRef(
2295
- function TextMaskAdapter4(props, ref) {
2296
- const { onChange, format, ...other } = props;
2297
- return /* @__PURE__ */ import_react19.default.createElement(
2298
- import_react_imask.IMaskInput,
2299
- {
2300
- ...other,
2301
- inputRef: ref,
2302
- onAccept: (value) => onChange({ target: { name: props.name, value } }),
2303
- mask: Date,
2304
- pattern: formatToPattern(format),
2305
- blocks: {
2306
- D: {
2307
- mask: import_react_imask.IMask.MaskedRange,
2308
- from: 1,
2309
- to: 31,
2310
- maxLength: 2
2311
- },
2312
- M: {
2313
- mask: import_react_imask.IMask.MaskedRange,
2314
- from: 1,
2315
- to: 12,
2316
- maxLength: 2
2317
- },
2318
- Y: {
2319
- mask: import_react_imask.IMask.MaskedRange,
2320
- from: 1900,
2321
- to: 9999,
2322
- maxLength: 4
2323
- }
2119
+ var TextMaskAdapter3 = import_react19.default.forwardRef(function TextMaskAdapter4(props, ref) {
2120
+ const { onChange, format, ...other } = props;
2121
+ return /* @__PURE__ */ import_react19.default.createElement(
2122
+ import_react_imask.IMaskInput,
2123
+ {
2124
+ ...other,
2125
+ inputRef: ref,
2126
+ onAccept: (value) => onChange({ target: { name: props.name, value } }),
2127
+ mask: Date,
2128
+ pattern: formatToPattern(format),
2129
+ blocks: {
2130
+ D: {
2131
+ mask: import_react_imask.IMask.MaskedRange,
2132
+ from: 1,
2133
+ to: 31,
2134
+ maxLength: 2
2324
2135
  },
2325
- format: (date) => formatValueString(date, format),
2326
- parse: (str) => parseDate(str, format),
2327
- autofix: "pad",
2328
- overwrite: true
2329
- }
2330
- );
2331
- }
2332
- );
2333
- var DatePicker = (0, import_react19.forwardRef)(
2334
- (inProps, ref) => {
2335
- const props = (0, import_joy27.useThemeProps)({ props: inProps, name: "DatePicker" });
2336
- const {
2337
- onChange,
2338
- disabled,
2339
- label,
2340
- error,
2341
- helperText,
2342
- minDate,
2343
- maxDate,
2344
- disableFuture,
2345
- disablePast,
2346
- required,
2347
- // NOTE: 스타일 관련된 props는 최상위 엘리먼트에 적용한다.
2348
- sx,
2349
- className,
2350
- format = "YYYY/MM/DD",
2351
- displayFormat = "YYYY/MM/DD",
2352
- size,
2353
- inputReadOnly,
2354
- hideClearButton,
2355
- readOnly,
2356
- shouldDisableDate,
2357
- ...innerProps
2358
- } = props;
2359
- const innerRef = (0, import_react19.useRef)(null);
2360
- const buttonRef = (0, import_react19.useRef)(null);
2361
- const [value, setValue] = useControlledState(
2362
- props.value,
2363
- props.defaultValue || "",
2364
- (0, import_react19.useCallback)(
2365
- (value2) => onChange?.({ target: { name: props.name, value: value2 } }),
2366
- [props.name, onChange]
2367
- )
2368
- );
2369
- const [displayValue, setDisplayValue] = (0, import_react19.useState)(
2370
- () => value ? formatValueString(parseDate(value, format), displayFormat) : ""
2371
- );
2372
- const [anchorEl, setAnchorEl] = (0, import_react19.useState)(null);
2373
- const open = Boolean(anchorEl);
2374
- (0, import_react19.useEffect)(() => {
2375
- if (!anchorEl) {
2376
- innerRef.current?.blur();
2377
- }
2378
- }, [anchorEl, innerRef]);
2379
- (0, import_react19.useEffect)(() => {
2380
- if (value === "") {
2381
- setDisplayValue("");
2382
- return;
2383
- }
2384
- const formattedValue = formatValueString(
2385
- parseDate(value, format),
2386
- displayFormat
2387
- );
2388
- if (validValueFormat(formattedValue, displayFormat) && formattedValue !== displayValue) {
2389
- setDisplayValue(formattedValue);
2390
- }
2391
- }, [displayFormat, displayValue, format, value]);
2392
- (0, import_react19.useImperativeHandle)(ref, () => innerRef.current, [
2393
- innerRef
2394
- ]);
2395
- const handleChange = (0, import_react19.useCallback)(
2396
- (event) => {
2397
- const value2 = event.target.value;
2398
- setDisplayValue(
2399
- value2 ? formatValueString(parseDate(value2, format), displayFormat) : value2
2400
- );
2401
- setValue(value2);
2402
- },
2403
- [displayFormat, format, setValue]
2404
- );
2405
- const handleDisplayInputChange = (0, import_react19.useCallback)(
2406
- (event) => {
2407
- if (event.target.value === "") {
2408
- handleChange({
2409
- target: {
2410
- name: props.name,
2411
- value: ""
2412
- }
2413
- });
2414
- return;
2415
- }
2416
- const isValidDisplayValue = validValueFormat(
2417
- event.target.value,
2418
- displayFormat
2419
- );
2420
- if (isValidDisplayValue) {
2421
- const parsedDate = parseDate(event.target.value, displayFormat);
2422
- const formattedValue = formatValueString(parsedDate, format);
2423
- handleChange({
2424
- target: {
2425
- name: props.name,
2426
- value: formattedValue
2427
- }
2428
- });
2429
- }
2430
- },
2431
- [displayFormat, format, handleChange, props.name]
2432
- );
2433
- const handleCalendarToggle = (0, import_react19.useCallback)(
2434
- (event) => {
2435
- setAnchorEl(anchorEl ? null : event.currentTarget);
2436
- setTimeout(() => {
2437
- innerRef.current?.focus();
2438
- }, 0);
2439
- },
2440
- [anchorEl, setAnchorEl, innerRef]
2441
- );
2442
- const handleInputMouseDown = (0, import_react19.useCallback)(
2443
- (event) => {
2444
- if (inputReadOnly) {
2445
- event.preventDefault();
2446
- buttonRef.current?.focus();
2447
- }
2448
- },
2449
- [inputReadOnly, buttonRef]
2450
- );
2451
- return /* @__PURE__ */ import_react19.default.createElement(DatePickerRoot, null, /* @__PURE__ */ import_react19.default.createElement(import_base2.FocusTrap, { open: true }, /* @__PURE__ */ import_react19.default.createElement(import_react19.default.Fragment, null, /* @__PURE__ */ import_react19.default.createElement(
2452
- Input_default,
2453
- {
2454
- ...innerProps,
2455
- color: error ? "danger" : innerProps.color,
2456
- ref: innerRef,
2457
- size,
2458
- value: displayValue,
2459
- onChange: handleDisplayInputChange,
2460
- placeholder: displayFormat,
2461
- disabled,
2462
- required,
2463
- error,
2464
- slotProps: {
2465
- input: {
2466
- component: TextMaskAdapter3,
2467
- ref: innerRef,
2468
- format: displayFormat,
2469
- sx: {
2470
- "&:hover": {
2471
- cursor: inputReadOnly || readOnly ? "default" : "text"
2472
- }
2473
- },
2474
- onMouseDown: handleInputMouseDown
2475
- }
2136
+ M: {
2137
+ mask: import_react_imask.IMask.MaskedRange,
2138
+ from: 1,
2139
+ to: 12,
2140
+ maxLength: 2
2476
2141
  },
2477
- className,
2478
- sx,
2479
- endDecorator: /* @__PURE__ */ import_react19.default.createElement(
2480
- CalendarButton,
2481
- {
2482
- ref: buttonRef,
2483
- variant: "plain",
2484
- onClick: readOnly ? void 0 : handleCalendarToggle,
2485
- "aria-label": "Toggle Calendar",
2486
- "aria-controls": "date-picker-popper",
2487
- "aria-haspopup": "dialog",
2488
- "aria-expanded": open,
2489
- disabled
2490
- },
2491
- /* @__PURE__ */ import_react19.default.createElement(import_CalendarToday.default, null)
2492
- ),
2493
- label,
2494
- helperText,
2495
- readOnly: readOnly || inputReadOnly
2496
- }
2497
- ), open && /* @__PURE__ */ import_react19.default.createElement(import_base2.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react19.default.createElement(
2498
- StyledPopper,
2499
- {
2500
- id: "date-picker-popper",
2501
- open: true,
2502
- anchorEl,
2503
- placement: "bottom-end",
2504
- onMouseDown: (e) => e.preventDefault(),
2505
- modifiers: [
2506
- {
2507
- name: "offset",
2508
- options: {
2509
- offset: [4, 4]
2510
- }
2511
- }
2512
- ],
2513
- "aria-label": "Calendar Tooltip",
2514
- "aria-expanded": open
2515
- },
2516
- /* @__PURE__ */ import_react19.default.createElement(CalendarSheet, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react19.default.createElement(
2517
- Calendar_default,
2518
- {
2519
- value: value && !Number.isNaN(parseDate(value, format).getTime()) ? [parseDate(value, format), void 0] : void 0,
2520
- onChange: ([date]) => {
2521
- handleChange({
2522
- target: {
2523
- name: props.name,
2524
- value: formatValueString(date, format)
2525
- }
2526
- });
2527
- setAnchorEl(null);
2528
- },
2529
- minDate: minDate ? new Date(minDate) : void 0,
2530
- maxDate: maxDate ? new Date(maxDate) : void 0,
2531
- disableFuture,
2532
- disablePast,
2533
- shouldDisableDate: shouldDisableDate ? (date) => shouldDisableDate(formatValueString(date, format)) : void 0
2142
+ Y: {
2143
+ mask: import_react_imask.IMask.MaskedRange,
2144
+ from: 1900,
2145
+ to: 9999,
2146
+ maxLength: 4
2534
2147
  }
2535
- ), !hideClearButton && /* @__PURE__ */ import_react19.default.createElement(
2536
- DialogActions_default,
2537
- {
2538
- sx: {
2539
- p: 1
2540
- }
2541
- },
2542
- /* @__PURE__ */ import_react19.default.createElement(
2543
- Button_default,
2544
- {
2545
- size,
2546
- variant: "plain",
2547
- color: "neutral",
2548
- onClick: () => {
2549
- handleChange({
2550
- target: {
2551
- name: props.name,
2552
- value: ""
2553
- }
2554
- });
2555
- setAnchorEl(null);
2556
- }
2557
- },
2558
- "Clear"
2559
- )
2560
- ))
2561
- )))));
2562
- }
2563
- );
2564
-
2565
- // src/components/DatePicker/index.ts
2566
- var DatePicker_default = DatePicker;
2567
-
2568
- // src/components/Textarea/Textarea.tsx
2569
- var import_react20 = __toESM(require("react"));
2570
- var import_joy28 = require("@mui/joy");
2571
- var import_framer_motion18 = require("framer-motion");
2572
- var MotionTextarea = (0, import_framer_motion18.motion)(import_joy28.Textarea);
2573
- var Textarea = (props) => {
2148
+ },
2149
+ format: (date) => formatValueString(date, format),
2150
+ parse: (str) => parseDate(str, format),
2151
+ autofix: "pad",
2152
+ overwrite: true
2153
+ }
2154
+ );
2155
+ });
2156
+ var DatePicker = (0, import_react19.forwardRef)((inProps, ref) => {
2157
+ const props = (0, import_joy27.useThemeProps)({ props: inProps, name: "DatePicker" });
2574
2158
  const {
2159
+ onChange,
2160
+ disabled,
2575
2161
  label,
2576
2162
  error,
2577
2163
  helperText,
2578
- color,
2579
- size,
2580
- disabled,
2164
+ minDate,
2165
+ maxDate,
2166
+ disableFuture,
2167
+ disablePast,
2581
2168
  required,
2582
- minRows = 2,
2583
- maxRows = 4,
2584
2169
  // NOTE: 스타일 관련된 props는 최상위 엘리먼트에 적용한다.
2585
2170
  sx,
2586
2171
  className,
2172
+ format = "YYYY/MM/DD",
2173
+ displayFormat = "YYYY/MM/DD",
2174
+ size,
2175
+ inputReadOnly,
2176
+ hideClearButton,
2177
+ readOnly,
2178
+ shouldDisableDate,
2587
2179
  ...innerProps
2588
2180
  } = props;
2589
- const textarea = /* @__PURE__ */ import_react20.default.createElement(
2590
- MotionTextarea,
2591
- {
2592
- required,
2593
- disabled,
2594
- color: error ? "danger" : color,
2595
- size,
2596
- minRows,
2597
- maxRows,
2181
+ const innerRef = (0, import_react19.useRef)(null);
2182
+ const buttonRef = (0, import_react19.useRef)(null);
2183
+ const [value, setValue] = useControlledState(
2184
+ props.value,
2185
+ props.defaultValue || "",
2186
+ (0, import_react19.useCallback)((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
2187
+ );
2188
+ const [displayValue, setDisplayValue] = (0, import_react19.useState)(
2189
+ () => value ? formatValueString(parseDate(value, format), displayFormat) : ""
2190
+ );
2191
+ const [anchorEl, setAnchorEl] = (0, import_react19.useState)(null);
2192
+ const open = Boolean(anchorEl);
2193
+ (0, import_react19.useEffect)(() => {
2194
+ if (!anchorEl) {
2195
+ innerRef.current?.blur();
2196
+ }
2197
+ }, [anchorEl, innerRef]);
2198
+ (0, import_react19.useEffect)(() => {
2199
+ if (value === "") {
2200
+ setDisplayValue("");
2201
+ return;
2202
+ }
2203
+ const formattedValue = formatValueString(parseDate(value, format), displayFormat);
2204
+ if (validValueFormat(formattedValue, displayFormat) && formattedValue !== displayValue) {
2205
+ setDisplayValue(formattedValue);
2206
+ }
2207
+ }, [displayFormat, displayValue, format, value]);
2208
+ (0, import_react19.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
2209
+ const handleChange = (0, import_react19.useCallback)(
2210
+ (event) => {
2211
+ const value2 = event.target.value;
2212
+ setDisplayValue(value2 ? formatValueString(parseDate(value2, format), displayFormat) : value2);
2213
+ setValue(value2);
2214
+ },
2215
+ [displayFormat, format, setValue]
2216
+ );
2217
+ const handleDisplayInputChange = (0, import_react19.useCallback)(
2218
+ (event) => {
2219
+ if (event.target.value === "") {
2220
+ handleChange({
2221
+ target: {
2222
+ name: props.name,
2223
+ value: ""
2224
+ }
2225
+ });
2226
+ return;
2227
+ }
2228
+ const isValidDisplayValue = validValueFormat(event.target.value, displayFormat);
2229
+ if (isValidDisplayValue) {
2230
+ const parsedDate = parseDate(event.target.value, displayFormat);
2231
+ const formattedValue = formatValueString(parsedDate, format);
2232
+ handleChange({
2233
+ target: {
2234
+ name: props.name,
2235
+ value: formattedValue
2236
+ }
2237
+ });
2238
+ }
2239
+ },
2240
+ [displayFormat, format, handleChange, props.name]
2241
+ );
2242
+ const handleCalendarToggle = (0, import_react19.useCallback)(
2243
+ (event) => {
2244
+ setAnchorEl(anchorEl ? null : event.currentTarget);
2245
+ setTimeout(() => {
2246
+ innerRef.current?.focus();
2247
+ }, 0);
2248
+ },
2249
+ [anchorEl, setAnchorEl, innerRef]
2250
+ );
2251
+ const handleInputMouseDown = (0, import_react19.useCallback)(
2252
+ (event) => {
2253
+ if (inputReadOnly) {
2254
+ event.preventDefault();
2255
+ buttonRef.current?.focus();
2256
+ }
2257
+ },
2258
+ [inputReadOnly, buttonRef]
2259
+ );
2260
+ return /* @__PURE__ */ import_react19.default.createElement(DatePickerRoot, null, /* @__PURE__ */ import_react19.default.createElement(import_base2.FocusTrap, { open: true }, /* @__PURE__ */ import_react19.default.createElement(import_react19.default.Fragment, null, /* @__PURE__ */ import_react19.default.createElement(
2261
+ Input_default,
2262
+ {
2263
+ ...innerProps,
2264
+ color: error ? "danger" : innerProps.color,
2265
+ ref: innerRef,
2266
+ size,
2267
+ value: displayValue,
2268
+ onChange: handleDisplayInputChange,
2269
+ placeholder: displayFormat,
2270
+ disabled,
2271
+ required,
2272
+ error,
2273
+ slotProps: {
2274
+ input: {
2275
+ component: TextMaskAdapter3,
2276
+ ref: innerRef,
2277
+ format: displayFormat,
2278
+ sx: {
2279
+ "&:hover": {
2280
+ cursor: inputReadOnly || readOnly ? "default" : "text"
2281
+ }
2282
+ },
2283
+ onMouseDown: handleInputMouseDown
2284
+ }
2285
+ },
2286
+ className,
2287
+ sx,
2288
+ endDecorator: /* @__PURE__ */ import_react19.default.createElement(
2289
+ CalendarButton,
2290
+ {
2291
+ ref: buttonRef,
2292
+ variant: "plain",
2293
+ onClick: readOnly ? void 0 : handleCalendarToggle,
2294
+ "aria-label": "Toggle Calendar",
2295
+ "aria-controls": "date-picker-popper",
2296
+ "aria-haspopup": "dialog",
2297
+ "aria-expanded": open,
2298
+ disabled
2299
+ },
2300
+ /* @__PURE__ */ import_react19.default.createElement(import_CalendarToday.default, null)
2301
+ ),
2302
+ label,
2303
+ helperText,
2304
+ readOnly: readOnly || inputReadOnly
2305
+ }
2306
+ ), open && /* @__PURE__ */ import_react19.default.createElement(import_base2.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react19.default.createElement(
2307
+ StyledPopper,
2308
+ {
2309
+ id: "date-picker-popper",
2310
+ open: true,
2311
+ anchorEl,
2312
+ placement: "bottom-end",
2313
+ onMouseDown: (e) => e.preventDefault(),
2314
+ modifiers: [
2315
+ {
2316
+ name: "offset",
2317
+ options: {
2318
+ offset: [4, 4]
2319
+ }
2320
+ }
2321
+ ],
2322
+ "aria-label": "Calendar Tooltip",
2323
+ "aria-expanded": open
2324
+ },
2325
+ /* @__PURE__ */ import_react19.default.createElement(CalendarSheet, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react19.default.createElement(
2326
+ Calendar_default,
2327
+ {
2328
+ value: value && !Number.isNaN(parseDate(value, format).getTime()) ? [parseDate(value, format), void 0] : void 0,
2329
+ onChange: ([date]) => {
2330
+ handleChange({
2331
+ target: {
2332
+ name: props.name,
2333
+ value: formatValueString(date, format)
2334
+ }
2335
+ });
2336
+ setAnchorEl(null);
2337
+ },
2338
+ minDate: minDate ? new Date(minDate) : void 0,
2339
+ maxDate: maxDate ? new Date(maxDate) : void 0,
2340
+ disableFuture,
2341
+ disablePast,
2342
+ shouldDisableDate: shouldDisableDate ? (date) => shouldDisableDate(formatValueString(date, format)) : void 0
2343
+ }
2344
+ ), !hideClearButton && /* @__PURE__ */ import_react19.default.createElement(
2345
+ DialogActions_default,
2346
+ {
2347
+ sx: {
2348
+ p: 1
2349
+ }
2350
+ },
2351
+ /* @__PURE__ */ import_react19.default.createElement(
2352
+ Button_default,
2353
+ {
2354
+ size,
2355
+ variant: "plain",
2356
+ color: "neutral",
2357
+ onClick: () => {
2358
+ handleChange({
2359
+ target: {
2360
+ name: props.name,
2361
+ value: ""
2362
+ }
2363
+ });
2364
+ setAnchorEl(null);
2365
+ }
2366
+ },
2367
+ "Clear"
2368
+ )
2369
+ ))
2370
+ )))));
2371
+ });
2372
+
2373
+ // src/components/DatePicker/index.ts
2374
+ var DatePicker_default = DatePicker;
2375
+
2376
+ // src/components/Textarea/Textarea.tsx
2377
+ var import_react20 = __toESM(require("react"));
2378
+ var import_joy28 = require("@mui/joy");
2379
+ var import_framer_motion18 = require("framer-motion");
2380
+ var MotionTextarea = (0, import_framer_motion18.motion)(import_joy28.Textarea);
2381
+ var Textarea = (props) => {
2382
+ const {
2383
+ label,
2384
+ error,
2385
+ helperText,
2386
+ color,
2387
+ size,
2388
+ disabled,
2389
+ required,
2390
+ minRows = 2,
2391
+ maxRows = 4,
2392
+ // NOTE: 스타일 관련된 props는 최상위 엘리먼트에 적용한다.
2393
+ sx,
2394
+ className,
2395
+ ...innerProps
2396
+ } = props;
2397
+ const textarea = /* @__PURE__ */ import_react20.default.createElement(
2398
+ MotionTextarea,
2399
+ {
2400
+ required,
2401
+ disabled,
2402
+ color: error ? "danger" : color,
2403
+ size,
2404
+ minRows,
2405
+ maxRows,
2598
2406
  ...innerProps
2599
2407
  }
2600
2408
  );
@@ -2793,18 +2601,9 @@ function Pagination(props) {
2793
2601
  setPaginationModel({ ...paginationModel, page: newPage });
2794
2602
  };
2795
2603
  const firstPage = 1;
2796
- const lastPage = Math.max(
2797
- firstPage,
2798
- Math.ceil(rowCount / paginationModel.pageSize)
2799
- );
2800
- const beforePages = [
2801
- paginationModel.page - 2,
2802
- paginationModel.page - 1
2803
- ].filter((p) => p > 1);
2804
- const afterPages = [
2805
- paginationModel.page + 1,
2806
- paginationModel.page + 2
2807
- ].filter((p) => p <= lastPage - 1);
2604
+ const lastPage = Math.max(firstPage, Math.ceil(rowCount / paginationModel.pageSize));
2605
+ const beforePages = [paginationModel.page - 2, paginationModel.page - 1].filter((p) => p > 1);
2606
+ const afterPages = [paginationModel.page + 1, paginationModel.page + 2].filter((p) => p <= lastPage - 1);
2808
2607
  const isMoreAfterPages = lastPage > 1 && paginationModel.page < lastPage - 3;
2809
2608
  const isMoreBeforePages = lastPage > 1 && paginationModel.page > 4;
2810
2609
  (0, import_react23.useEffect)(() => {
@@ -2823,16 +2622,7 @@ function Pagination(props) {
2823
2622
  "aria-label": "Previous page"
2824
2623
  },
2825
2624
  /* @__PURE__ */ import_react23.default.createElement(import_ChevronLeft2.default, null)
2826
- ), paginationModel.page !== firstPage && /* @__PURE__ */ import_react23.default.createElement(
2827
- PaginationButton,
2828
- {
2829
- size,
2830
- variant: "plain",
2831
- color: "neutral",
2832
- onClick: () => handlePageChange(firstPage)
2833
- },
2834
- firstPage
2835
- ), isMoreBeforePages && /* @__PURE__ */ import_react23.default.createElement(
2625
+ ), paginationModel.page !== firstPage && /* @__PURE__ */ import_react23.default.createElement(PaginationButton, { size, variant: "plain", color: "neutral", onClick: () => handlePageChange(firstPage) }, firstPage), isMoreBeforePages && /* @__PURE__ */ import_react23.default.createElement(
2836
2626
  PaginationButton,
2837
2627
  {
2838
2628
  size,
@@ -2842,27 +2632,7 @@ function Pagination(props) {
2842
2632
  "aria-label": "More previous pages"
2843
2633
  },
2844
2634
  "..."
2845
- ), beforePages.map((p) => /* @__PURE__ */ import_react23.default.createElement(
2846
- PaginationButton,
2847
- {
2848
- key: p,
2849
- size,
2850
- variant: "plain",
2851
- color: "neutral",
2852
- onClick: () => handlePageChange(p)
2853
- },
2854
- p
2855
- )), /* @__PURE__ */ import_react23.default.createElement(PaginationButton, { active: "active", size, "aria-current": "page" }, paginationModel.page), afterPages.map((p) => /* @__PURE__ */ import_react23.default.createElement(
2856
- PaginationButton,
2857
- {
2858
- key: p,
2859
- size,
2860
- variant: "plain",
2861
- color: "neutral",
2862
- onClick: () => handlePageChange(p)
2863
- },
2864
- p
2865
- )), isMoreAfterPages && /* @__PURE__ */ import_react23.default.createElement(
2635
+ ), beforePages.map((p) => /* @__PURE__ */ import_react23.default.createElement(PaginationButton, { key: p, size, variant: "plain", color: "neutral", onClick: () => handlePageChange(p) }, p)), /* @__PURE__ */ import_react23.default.createElement(PaginationButton, { active: "active", size, "aria-current": "page" }, paginationModel.page), afterPages.map((p) => /* @__PURE__ */ import_react23.default.createElement(PaginationButton, { key: p, size, variant: "plain", color: "neutral", onClick: () => handlePageChange(p) }, p)), isMoreAfterPages && /* @__PURE__ */ import_react23.default.createElement(
2866
2636
  PaginationButton,
2867
2637
  {
2868
2638
  size,
@@ -2872,16 +2642,7 @@ function Pagination(props) {
2872
2642
  onClick: () => handlePageChange(paginationModel.page + 3)
2873
2643
  },
2874
2644
  "..."
2875
- ), paginationModel.page !== lastPage && /* @__PURE__ */ import_react23.default.createElement(
2876
- PaginationButton,
2877
- {
2878
- size,
2879
- variant: "plain",
2880
- color: "neutral",
2881
- onClick: () => handlePageChange(lastPage)
2882
- },
2883
- lastPage
2884
- ), /* @__PURE__ */ import_react23.default.createElement(
2645
+ ), paginationModel.page !== lastPage && /* @__PURE__ */ import_react23.default.createElement(PaginationButton, { size, variant: "plain", color: "neutral", onClick: () => handlePageChange(lastPage) }, lastPage), /* @__PURE__ */ import_react23.default.createElement(
2885
2646
  PaginationIconButton,
2886
2647
  {
2887
2648
  size,
@@ -2957,15 +2718,7 @@ var TextEllipsis = ({ children }) => {
2957
2718
  }, [children]);
2958
2719
  const content = /* @__PURE__ */ import_react25.default.createElement(EllipsisDiv, { ref: textRef }, children);
2959
2720
  if (showTooltip) {
2960
- return /* @__PURE__ */ import_react25.default.createElement(
2961
- Tooltip_default,
2962
- {
2963
- title: children,
2964
- placement: "top",
2965
- onClick: (e) => e.stopPropagation()
2966
- },
2967
- content
2968
- );
2721
+ return /* @__PURE__ */ import_react25.default.createElement(Tooltip_default, { title: children, placement: "top", onClick: (e) => e.stopPropagation() }, content);
2969
2722
  }
2970
2723
  return content;
2971
2724
  };
@@ -3149,10 +2902,7 @@ var HeadCell = (props) => {
3149
2902
  () => `${tableId}_header_${headerName ?? field}`.trim(),
3150
2903
  [tableId, headerName, field]
3151
2904
  );
3152
- const resizer = (0, import_react25.useMemo)(
3153
- () => resizable ?? true ? Resizer(ref) : null,
3154
- [resizable, ref]
3155
- );
2905
+ const resizer = (0, import_react25.useMemo)(() => resizable ?? true ? Resizer(ref) : null, [resizable, ref]);
3156
2906
  const style = (0, import_react25.useMemo)(
3157
2907
  () => ({
3158
2908
  width,
@@ -3167,17 +2917,7 @@ var HeadCell = (props) => {
3167
2917
  // TODO: multi-sort때문에 일단 추가한 property, joy-ui에서는 multi-sort시 th에 user-select: none을 적용하고 툴팁을 띄워준다.
3168
2918
  userSelect: "none"
3169
2919
  }),
3170
- [
3171
- isPinned,
3172
- maxWidth,
3173
- minWidth,
3174
- pinnedEndPosition,
3175
- pinnedStartPosition,
3176
- sortable,
3177
- stickyHeader,
3178
- theme,
3179
- width
3180
- ]
2920
+ [isPinned, maxWidth, minWidth, pinnedEndPosition, pinnedStartPosition, sortable, stickyHeader, theme, width]
3181
2921
  );
3182
2922
  const textAlign = getTextAlign(props);
3183
2923
  const initialSort = sortOrder[0];
@@ -3234,20 +2974,7 @@ var HeadCell = (props) => {
3234
2974
  whileHover: "hover",
3235
2975
  initial: "initial"
3236
2976
  },
3237
- /* @__PURE__ */ import_react25.default.createElement(
3238
- Stack_default,
3239
- {
3240
- gap: 1,
3241
- direction: "row",
3242
- justifyContent: textAlign,
3243
- alignItems: "center"
3244
- },
3245
- textAlign === "end" && sortIcon,
3246
- textAlign === "end" && infoSign,
3247
- /* @__PURE__ */ import_react25.default.createElement(TextEllipsis, null, headerName ?? field, editMode && required && /* @__PURE__ */ import_react25.default.createElement(Asterisk, null, "*")),
3248
- textAlign === "start" && infoSign,
3249
- textAlign === "start" && sortIcon
3250
- ),
2977
+ /* @__PURE__ */ import_react25.default.createElement(Stack_default, { gap: 1, direction: "row", justifyContent: textAlign, alignItems: "center" }, textAlign === "end" && sortIcon, textAlign === "end" && infoSign, /* @__PURE__ */ import_react25.default.createElement(TextEllipsis, null, headerName ?? field, editMode && required && /* @__PURE__ */ import_react25.default.createElement(Asterisk, null, "*")), textAlign === "start" && infoSign, textAlign === "start" && sortIcon),
3251
2978
  resizer
3252
2979
  );
3253
2980
  };
@@ -3266,7 +2993,10 @@ var BodyCell = (props) => {
3266
2993
  pinnedStartPosition,
3267
2994
  pinnedEndPosition,
3268
2995
  row,
3269
- rowId
2996
+ rowId,
2997
+ cellClassName,
2998
+ onCellEditStart,
2999
+ onCellEditStop
3270
3000
  } = props;
3271
3001
  const theme = (0, import_joy33.useTheme)();
3272
3002
  const [value, setValue] = (0, import_react25.useState)(row[field]);
@@ -3275,20 +3005,22 @@ var BodyCell = (props) => {
3275
3005
  () => ({
3276
3006
  row,
3277
3007
  value,
3278
- id: rowId
3008
+ id: rowId,
3009
+ field
3279
3010
  }),
3280
- [row, rowId, value]
3011
+ [row, rowId, value, field]
3281
3012
  );
3282
3013
  const editMode = (0, import_react25.useMemo)(
3283
3014
  () => !!(props.editMode && (typeof isCellEditable === "function" ? isCellEditable(params) : isCellEditable ?? true)),
3284
3015
  [props.editMode, isCellEditable, params]
3285
3016
  );
3017
+ const propsComponentProps = "componentProps" in props ? props.componentProps : null;
3286
3018
  const componentProps = (0, import_react25.useMemo)(
3287
3019
  () => ({
3288
- ..."componentProps" in props && (typeof props.componentProps === "function" ? props.componentProps(params) : props.componentProps || {}),
3020
+ ..."componentProps" in props && (typeof propsComponentProps === "function" ? propsComponentProps(params) : propsComponentProps || {}),
3289
3021
  size: "sm"
3290
3022
  }),
3291
- ["componentProps" in props ? props.componentProps : null, params]
3023
+ [props, propsComponentProps, params]
3292
3024
  );
3293
3025
  const editModeComponentProps = (0, import_react25.useMemo)(
3294
3026
  () => ({
@@ -3297,7 +3029,7 @@ var BodyCell = (props) => {
3297
3029
  componentProps.onChange?.(e);
3298
3030
  setValue(e.target.value);
3299
3031
  if (type === "select") {
3300
- props.onCellEditStop?.({
3032
+ onCellEditStop?.({
3301
3033
  ...params,
3302
3034
  originalRow: row,
3303
3035
  row: {
@@ -3310,7 +3042,7 @@ var BodyCell = (props) => {
3310
3042
  },
3311
3043
  onFocus: (e) => {
3312
3044
  componentProps.onFocus?.(e);
3313
- props.onCellEditStart?.({
3045
+ onCellEditStart?.({
3314
3046
  ...params,
3315
3047
  originalRow: row,
3316
3048
  row: {
@@ -3323,7 +3055,7 @@ var BodyCell = (props) => {
3323
3055
  onBlur: (e) => {
3324
3056
  componentProps.onBlur?.(e);
3325
3057
  if (type && ["number", "text", "longText", "currency", "date"].includes(type)) {
3326
- props.onCellEditStop?.({
3058
+ onCellEditStop?.({
3327
3059
  ...params,
3328
3060
  originalRow: row,
3329
3061
  row: {
@@ -3338,7 +3070,7 @@ var BodyCell = (props) => {
3338
3070
  onChangeComplete: (e) => {
3339
3071
  componentProps.onChangeComplete?.(e);
3340
3072
  setValue(e.target.value);
3341
- props.onCellEditStop?.({
3073
+ onCellEditStop?.({
3342
3074
  ...params,
3343
3075
  originalRow: row,
3344
3076
  row: {
@@ -3350,29 +3082,14 @@ var BodyCell = (props) => {
3350
3082
  }
3351
3083
  }
3352
3084
  }),
3353
- [
3354
- params,
3355
- row,
3356
- field,
3357
- value,
3358
- componentProps,
3359
- type,
3360
- props.onCellEditStop,
3361
- props.onCellEditStart
3362
- ]
3085
+ [params, row, field, value, componentProps, type, onCellEditStop, onCellEditStart]
3363
3086
  );
3364
3087
  const EditModeComponent = (0, import_react25.useMemo)(() => {
3365
3088
  if (renderEditCell) {
3366
3089
  return (0, import_react25.createElement)((0, import_react25.memo)(renderEditCell), params);
3367
3090
  }
3368
3091
  return {
3369
- date: /* @__PURE__ */ import_react25.default.createElement(
3370
- DatePicker_default,
3371
- {
3372
- value,
3373
- ...editModeComponentProps
3374
- }
3375
- ),
3092
+ date: /* @__PURE__ */ import_react25.default.createElement(DatePicker_default, { value, ...editModeComponentProps }),
3376
3093
  currency: /* @__PURE__ */ import_react25.default.createElement(
3377
3094
  CurrencyInput_default,
3378
3095
  {
@@ -3380,29 +3097,9 @@ var BodyCell = (props) => {
3380
3097
  ...editModeComponentProps
3381
3098
  }
3382
3099
  ),
3383
- number: /* @__PURE__ */ import_react25.default.createElement(
3384
- Input_default,
3385
- {
3386
- value,
3387
- type: "number",
3388
- ...editModeComponentProps
3389
- }
3390
- ),
3391
- text: /* @__PURE__ */ import_react25.default.createElement(
3392
- Input_default,
3393
- {
3394
- value,
3395
- type: "text",
3396
- ...editModeComponentProps
3397
- }
3398
- ),
3399
- longText: /* @__PURE__ */ import_react25.default.createElement(
3400
- Textarea_default,
3401
- {
3402
- value,
3403
- ...editModeComponentProps
3404
- }
3405
- ),
3100
+ number: /* @__PURE__ */ import_react25.default.createElement(Input_default, { value, type: "number", ...editModeComponentProps }),
3101
+ text: /* @__PURE__ */ import_react25.default.createElement(Input_default, { value, type: "text", ...editModeComponentProps }),
3102
+ longText: /* @__PURE__ */ import_react25.default.createElement(Textarea_default, { value, ...editModeComponentProps }),
3406
3103
  autocomplete: /* @__PURE__ */ import_react25.default.createElement(
3407
3104
  Autocomplete_default,
3408
3105
  {
@@ -3420,50 +3117,34 @@ var BodyCell = (props) => {
3420
3117
  }
3421
3118
  )
3422
3119
  }[type || "text"];
3423
- }, [value, editModeComponentProps, type]);
3120
+ }, [value, editModeComponentProps, type, renderEditCell, params]);
3121
+ const linkComponentFromProps = props.component;
3424
3122
  const ReadModeComponent = (0, import_react25.useMemo)(() => {
3425
3123
  if (renderCell) {
3426
3124
  return (0, import_react25.createElement)((0, import_react25.memo)(renderCell), params);
3427
3125
  }
3428
3126
  const innerText = value;
3429
3127
  const typedComponent = {
3430
- link: import_react25.default.createElement(
3431
- props.component || import_joy33.Link,
3432
- {
3433
- children: innerText,
3434
- ...componentProps
3435
- }
3436
- )
3128
+ link: import_react25.default.createElement(linkComponentFromProps || import_joy33.Link, {
3129
+ children: innerText,
3130
+ ...componentProps
3131
+ })
3437
3132
  }[type || "text"];
3438
3133
  return typedComponent || innerText;
3439
- }, [value, renderCell, params, type, componentProps]);
3134
+ }, [value, renderCell, params, type, componentProps, linkComponentFromProps]);
3135
+ const getActions = props.getActions;
3440
3136
  const CellComponent = (0, import_react25.useMemo)(() => {
3441
3137
  if (type === "actions") {
3442
- return /* @__PURE__ */ import_react25.default.createElement(
3443
- Stack_default,
3444
- {
3445
- direction: "row",
3446
- gap: 1,
3447
- justifyContent: "center",
3448
- alignItems: "center"
3449
- },
3450
- props.getActions?.(params)
3451
- );
3138
+ return /* @__PURE__ */ import_react25.default.createElement(Stack_default, { direction: "row", gap: 1, justifyContent: "center", alignItems: "center" }, getActions?.(params));
3452
3139
  }
3453
3140
  return editMode && EditModeComponent ? EditModeComponent : ReadModeComponent;
3454
- }, [
3455
- type,
3456
- props.getActions,
3457
- params,
3458
- editMode,
3459
- EditModeComponent,
3460
- ReadModeComponent
3461
- ]);
3462
- const showTooltip = (0, import_react25.useMemo)(
3463
- () => noWrap && type === "longText",
3464
- [noWrap, type]
3465
- );
3141
+ }, [type, getActions, params, editMode, EditModeComponent, ReadModeComponent]);
3142
+ const showTooltip = (0, import_react25.useMemo)(() => noWrap && type === "longText", [noWrap, type]);
3466
3143
  const isBoundary = props.isLastStartPinnedColumn || props.isLastEndPinnedColumn;
3144
+ const computedCellClassName = (0, import_react25.useMemo)(
3145
+ () => (typeof cellClassName === "function" ? cellClassName(params) : cellClassName) || "",
3146
+ [cellClassName, params]
3147
+ );
3467
3148
  (0, import_react25.useEffect)(() => {
3468
3149
  setValue(row[field]);
3469
3150
  }, [row, field]);
@@ -3482,11 +3163,11 @@ var BodyCell = (props) => {
3482
3163
  zIndex: isPinned ? `calc(${theme.getCssVar("zIndex-table")} + ${isBoundary ? 2 : 3})` : void 0,
3483
3164
  "--TableCell-dataBackground": isPinned ? `var(--TableCell-headBackground)` : void 0
3484
3165
  },
3485
- className: isLastStartPinnedColumn && "is-last-left" || isLastEndPinnedColumn && "is-last-right" || ""
3166
+ className: [isLastStartPinnedColumn && "is-last-left", isLastEndPinnedColumn && "is-last-right", computedCellClassName].filter(Boolean).join(" ") || ""
3486
3167
  },
3487
3168
  (0, import_react25.useMemo)(
3488
3169
  () => showTooltip ? /* @__PURE__ */ import_react25.default.createElement(CellTextEllipsis, null, CellComponent) : CellComponent,
3489
- [CellComponent, showTooltip, value]
3170
+ [CellComponent, showTooltip]
3490
3171
  )
3491
3172
  );
3492
3173
  };
@@ -3564,10 +3245,7 @@ function useDataTableRenderer({
3564
3245
  const [sortModel, setSortModel] = useControlledState(
3565
3246
  controlledSortModel,
3566
3247
  initialState?.sorting?.sortModel ?? [],
3567
- (0, import_react25.useCallback)(
3568
- (sortModel2) => onSortModelChange?.(sortModel2),
3569
- [onSortModelChange]
3570
- )
3248
+ (0, import_react25.useCallback)((sortModel2) => onSortModelChange?.(sortModel2), [onSortModelChange])
3571
3249
  );
3572
3250
  const columnsByField = (0, import_react25.useMemo)(
3573
3251
  () => columnsProp.reduce(
@@ -3642,9 +3320,7 @@ function useDataTableRenderer({
3642
3320
  [dataInPage, isRowSelectable, getId]
3643
3321
  );
3644
3322
  const isAllSelected = (0, import_react25.useMemo)(
3645
- () => selectableDataInPage.length > 0 && selectableDataInPage.every(
3646
- (row, i) => selectedModelSet.has(getId(row, i))
3647
- ),
3323
+ () => selectableDataInPage.length > 0 && selectableDataInPage.every((row, i) => selectedModelSet.has(getId(row, i))),
3648
3324
  [selectableDataInPage, selectedModelSet, getId]
3649
3325
  );
3650
3326
  const rowCount = totalRowsProp || rows.length;
@@ -3668,12 +3344,8 @@ function useDataTableRenderer({
3668
3344
  field: key
3669
3345
  }));
3670
3346
  return baseColumns.map((column) => {
3671
- const isLeftPinned = pinnedColumns?.left?.includes(
3672
- column.field
3673
- );
3674
- const isRightPinned = pinnedColumns?.right?.includes(
3675
- column.field
3676
- );
3347
+ const isLeftPinned = pinnedColumns?.left?.includes(column.field);
3348
+ const isRightPinned = pinnedColumns?.right?.includes(column.field);
3677
3349
  const isPinned = isLeftPinned || isRightPinned;
3678
3350
  return {
3679
3351
  ...column,
@@ -3685,13 +3357,8 @@ function useDataTableRenderer({
3685
3357
  isLastStartPinnedColumn: isLeftPinned && [...pinnedColumns?.left || []].pop() === column.field,
3686
3358
  isLastEndPinnedColumn: isRightPinned && (pinnedColumns?.right?.[0] ?? null) === column.field,
3687
3359
  // pinned 관련 계산부
3688
- pinnedStartPosition: pinnedColumns?.left?.slice(
3689
- 0,
3690
- isLeftPinned ? pinnedColumns.left.indexOf(column.field) : pinnedColumns.left.length
3691
- ).reduce((acc, curr) => acc + getWidth(curr), 0),
3692
- pinnedEndPosition: pinnedColumns?.right?.slice(
3693
- isRightPinned ? pinnedColumns.right.indexOf(column.field) + 1 : 0
3694
- ).reduce((acc, curr) => acc + getWidth(curr), 0)
3360
+ pinnedStartPosition: pinnedColumns?.left?.slice(0, isLeftPinned ? pinnedColumns.left.indexOf(column.field) : pinnedColumns.left.length).reduce((acc, curr) => acc + getWidth(curr), 0),
3361
+ pinnedEndPosition: pinnedColumns?.right?.slice(isRightPinned ? pinnedColumns.right.indexOf(column.field) + 1 : 0).reduce((acc, curr) => acc + getWidth(curr), 0)
3695
3362
  };
3696
3363
  });
3697
3364
  }, [
@@ -3726,9 +3393,7 @@ function useDataTableRenderer({
3726
3393
  setSortModel(newSortModel2);
3727
3394
  return;
3728
3395
  }
3729
- const newSortModel = multiple ? sortModel.map(
3730
- (model) => model.field === field ? { field, sort: nextSortOrder } : model
3731
- ) : [{ field, sort: nextSortOrder }];
3396
+ const newSortModel = multiple ? sortModel.map((model) => model.field === field ? { field, sort: nextSortOrder } : model) : [{ field, sort: nextSortOrder }];
3732
3397
  setSortModel(newSortModel);
3733
3398
  } else {
3734
3399
  const newSortModel = multiple ? [...sortModel, { field, sort: columnSortOrder[0] }] : [{ field, sort: columnSortOrder[0] }];
@@ -3765,10 +3430,7 @@ function useDataTableRenderer({
3765
3430
  isAllSelected,
3766
3431
  // all rows are selected on this page
3767
3432
  isTotalSelected,
3768
- isSelectedRow: (0, import_react25.useCallback)(
3769
- (model) => selectedModelSet.has(model),
3770
- [selectedModelSet]
3771
- ),
3433
+ isSelectedRow: (0, import_react25.useCallback)((model) => selectedModelSet.has(model), [selectedModelSet]),
3772
3434
  isRowSelectable: (0, import_react25.useCallback)(
3773
3435
  (rowId, row) => {
3774
3436
  if (!isRowSelectable) return true;
@@ -3781,16 +3443,12 @@ function useDataTableRenderer({
3781
3443
  setFocusedRowId(rowId);
3782
3444
  }, []),
3783
3445
  onAllCheckboxChange: (0, import_react25.useCallback)(() => {
3784
- onSelectionModelChange?.(
3785
- isAllSelected ? [] : selectableDataInPage.map(getId)
3786
- );
3446
+ onSelectionModelChange?.(isAllSelected ? [] : selectableDataInPage.map(getId));
3787
3447
  }, [isAllSelected, selectableDataInPage, onSelectionModelChange, getId]),
3788
3448
  onCheckboxChange: (0, import_react25.useCallback)(
3789
3449
  (event, selectedModel) => {
3790
3450
  if (selectedModelSet.has(selectedModel)) {
3791
- const newSelectionModel = (selectionModel || []).filter(
3792
- (model) => model !== selectedModel
3793
- );
3451
+ const newSelectionModel = (selectionModel || []).filter((model) => model !== selectedModel);
3794
3452
  onSelectionModelChange?.(newSelectionModel);
3795
3453
  } else {
3796
3454
  const newSelectionModel = [...selectionModel || [], selectedModel];
@@ -3805,10 +3463,7 @@ function useDataTableRenderer({
3805
3463
  if (!isRowSelectable) return true;
3806
3464
  return isRowSelectable({ row, id: getId(row, i) });
3807
3465
  });
3808
- onSelectionModelChange?.(
3809
- isTotalSelected ? [] : selectableRows.map(getId),
3810
- !isTotalSelected
3811
- );
3466
+ onSelectionModelChange?.(isTotalSelected ? [] : selectableRows.map(getId), !isTotalSelected);
3812
3467
  }, [isTotalSelected, rows, onSelectionModelChange, getId, isRowSelectable])
3813
3468
  };
3814
3469
  }
@@ -3851,11 +3506,7 @@ function Component(props, apiRef) {
3851
3506
  footer: Footer,
3852
3507
  loadingOverlay: LoadingOverlay = DefaultLoadingOverlay
3853
3508
  } = {},
3854
- slotProps: {
3855
- checkbox: checkboxProps = {},
3856
- toolbar: toolbarProps,
3857
- background: backgroundProps = {}
3858
- } = {},
3509
+ slotProps: { checkbox: checkboxProps = {}, toolbar: toolbarProps, background: backgroundProps = {} } = {},
3859
3510
  stripe,
3860
3511
  isTotalSelected: ___________,
3861
3512
  ...innerProps
@@ -3900,13 +3551,7 @@ function Component(props, apiRef) {
3900
3551
  onRowClick?.({ row, rowId }, e);
3901
3552
  checkboxSelection && !disableSelectionOnClick && isRowSelectableCheck(rowId, row) && onCheckboxChange(e, rowId);
3902
3553
  },
3903
- [
3904
- onRowClick,
3905
- checkboxSelection,
3906
- disableSelectionOnClick,
3907
- onCheckboxChange,
3908
- isRowSelectableCheck
3909
- ]
3554
+ [onRowClick, checkboxSelection, disableSelectionOnClick, onCheckboxChange, isRowSelectableCheck]
3910
3555
  );
3911
3556
  const getRowFocusHandler = (0, import_react25.useCallback)(
3912
3557
  (rowId) => () => {
@@ -3964,16 +3609,7 @@ function Component(props, apiRef) {
3964
3609
  justifyContent: "space-between",
3965
3610
  alignItems: "center"
3966
3611
  },
3967
- !!checkboxSelection && /* @__PURE__ */ import_react25.default.createElement(Stack_default, { direction: "row", spacing: 1 }, !isAllSelected && /* @__PURE__ */ import_react25.default.createElement(Typography_default, { level: "body-xs" }, numberFormatter(selectionModel?.length || 0), " items selected"), isAllSelected && !isTotalSelected && /* @__PURE__ */ import_react25.default.createElement(Stack_default, { direction: "row", spacing: 1, alignItems: "center" }, /* @__PURE__ */ import_react25.default.createElement(Typography_default, { level: "body-xs" }, "All ", numberFormatter(selectionModel?.length || 0), " items on this page are selected."), /* @__PURE__ */ import_react25.default.createElement(Button_default, { size: "sm", variant: "plain", onClick: onTotalSelect }, "Select all ", numberFormatter(selectableRowCount), " items")), isTotalSelected && /* @__PURE__ */ import_react25.default.createElement(Stack_default, { direction: "row", spacing: 1, alignItems: "center" }, /* @__PURE__ */ import_react25.default.createElement(Typography_default, { level: "body-xs" }, "All ", numberFormatter(selectableRowCount), " items are selected."), /* @__PURE__ */ import_react25.default.createElement(
3968
- Button_default,
3969
- {
3970
- size: "sm",
3971
- variant: "plain",
3972
- color: "danger",
3973
- onClick: onTotalSelect
3974
- },
3975
- "Cancel"
3976
- ))),
3612
+ !!checkboxSelection && /* @__PURE__ */ import_react25.default.createElement(Stack_default, { direction: "row", spacing: 1 }, !isAllSelected && /* @__PURE__ */ import_react25.default.createElement(Typography_default, { level: "body-xs" }, numberFormatter(selectionModel?.length || 0), " items selected"), isAllSelected && !isTotalSelected && /* @__PURE__ */ import_react25.default.createElement(Stack_default, { direction: "row", spacing: 1, alignItems: "center" }, /* @__PURE__ */ import_react25.default.createElement(Typography_default, { level: "body-xs" }, "All ", numberFormatter(selectionModel?.length || 0), " items on this page are selected."), /* @__PURE__ */ import_react25.default.createElement(Button_default, { size: "sm", variant: "plain", onClick: onTotalSelect }, "Select all ", numberFormatter(selectableRowCount), " items")), isTotalSelected && /* @__PURE__ */ import_react25.default.createElement(Stack_default, { direction: "row", spacing: 1, alignItems: "center" }, /* @__PURE__ */ import_react25.default.createElement(Typography_default, { level: "body-xs" }, "All ", numberFormatter(selectableRowCount), " items are selected."), /* @__PURE__ */ import_react25.default.createElement(Button_default, { size: "sm", variant: "plain", color: "danger", onClick: onTotalSelect }, "Cancel"))),
3977
3613
  Toolbar && /* @__PURE__ */ import_react25.default.createElement(Toolbar, { ...toolbarProps || {} })
3978
3614
  ),
3979
3615
  /* @__PURE__ */ import_react25.default.createElement(
@@ -4142,9 +3778,7 @@ var CalendarButton2 = (0, import_joy34.styled)(IconButton_default, {
4142
3778
  "&:focus": {
4143
3779
  "--Icon-color": "currentColor",
4144
3780
  outlineOffset: `${theme.getCssVar("focus-thickness")}`,
4145
- outline: `${theme.getCssVar("focus-thickness")} solid ${theme.getCssVar(
4146
- "palette-focusVisible"
4147
- )}`
3781
+ outline: `${theme.getCssVar("focus-thickness")} solid ${theme.getCssVar("palette-focusVisible")}`
4148
3782
  }
4149
3783
  }));
4150
3784
  var StyledPopper2 = (0, import_joy34.styled)(import_base3.Popper, {
@@ -4181,10 +3815,7 @@ var validValueFormat2 = (value, format) => {
4181
3815
  if (parsedDate1.toString() === "Invalid Date" || parsedDate2.toString() === "Invalid Date") {
4182
3816
  return false;
4183
3817
  }
4184
- const formattedValue = formatValueString2(
4185
- [parsedDate1, parsedDate2],
4186
- format
4187
- );
3818
+ const formattedValue = formatValueString2([parsedDate1, parsedDate2], format);
4188
3819
  if (value !== formattedValue) {
4189
3820
  return false;
4190
3821
  }
@@ -4236,287 +3867,263 @@ var parseDates = (str, format) => {
4236
3867
  var formatToPattern2 = (format) => {
4237
3868
  return `${format} - ${format}`.replace(/YYYY/g, "Y").replace(/MM/g, "M").replace(/DD/g, "D").replace(/[^YMD\s]/g, (match) => `${match}\``);
4238
3869
  };
4239
- var TextMaskAdapter5 = import_react26.default.forwardRef(
4240
- function TextMaskAdapter6(props, ref) {
4241
- const { onChange, format, ...other } = props;
4242
- return /* @__PURE__ */ import_react26.default.createElement(
4243
- import_react_imask2.IMaskInput,
4244
- {
4245
- ...other,
4246
- inputRef: ref,
4247
- onAccept: (value) => onChange({ target: { name: props.name, value } }),
4248
- mask: Date,
4249
- pattern: formatToPattern2(format),
4250
- blocks: {
4251
- D: {
4252
- mask: import_react_imask2.IMask.MaskedRange,
4253
- from: 1,
4254
- to: 31,
4255
- maxLength: 2
4256
- },
4257
- M: {
4258
- mask: import_react_imask2.IMask.MaskedRange,
4259
- from: 1,
4260
- to: 12,
4261
- maxLength: 2
4262
- },
4263
- Y: {
4264
- mask: import_react_imask2.IMask.MaskedRange,
4265
- from: 1900,
4266
- to: 9999
4267
- }
3870
+ var TextMaskAdapter5 = import_react26.default.forwardRef(function TextMaskAdapter6(props, ref) {
3871
+ const { onChange, format, ...other } = props;
3872
+ return /* @__PURE__ */ import_react26.default.createElement(
3873
+ import_react_imask2.IMaskInput,
3874
+ {
3875
+ ...other,
3876
+ inputRef: ref,
3877
+ onAccept: (value) => onChange({ target: { name: props.name, value } }),
3878
+ mask: Date,
3879
+ pattern: formatToPattern2(format),
3880
+ blocks: {
3881
+ D: {
3882
+ mask: import_react_imask2.IMask.MaskedRange,
3883
+ from: 1,
3884
+ to: 31,
3885
+ maxLength: 2
4268
3886
  },
4269
- format: (dates) => formatValueString2(dates, format),
4270
- parse: (str) => parseDates(str, format),
4271
- autofix: "pad",
4272
- overwrite: true
4273
- }
4274
- );
4275
- }
4276
- );
4277
- var DateRangePicker = (0, import_react26.forwardRef)(
4278
- (inProps, ref) => {
4279
- const props = (0, import_joy34.useThemeProps)({ props: inProps, name: "DateRangePicker" });
4280
- const {
4281
- onChange,
4282
- disabled,
4283
- label,
4284
- error,
4285
- helperText,
4286
- minDate,
4287
- maxDate,
4288
- disableFuture,
4289
- disablePast,
4290
- required,
4291
- // NOTE: 스타일 관련된 props는 최상위 엘리먼트에 적용한다.
4292
- sx,
4293
- className,
4294
- format = "YYYY/MM/DD",
4295
- displayFormat = "YYYY/MM/DD",
4296
- size,
4297
- inputReadOnly,
4298
- hideClearButton,
4299
- readOnly,
4300
- ...innerProps
4301
- } = props;
4302
- const innerRef = (0, import_react26.useRef)(null);
4303
- const buttonRef = (0, import_react26.useRef)(null);
4304
- const [value, setValue] = useControlledState(
4305
- props.value,
4306
- props.defaultValue || "",
4307
- (0, import_react26.useCallback)(
4308
- (value2) => onChange?.({ target: { name: props.name, value: value2 } }),
4309
- [props.name, onChange]
4310
- )
4311
- );
4312
- const [displayValue, setDisplayValue] = (0, import_react26.useState)(
4313
- () => value ? formatValueString2(parseDates(value, format), displayFormat) : ""
4314
- );
4315
- const [anchorEl, setAnchorEl] = (0, import_react26.useState)(null);
4316
- const open = Boolean(anchorEl);
4317
- const calendarValue = (0, import_react26.useMemo)(
4318
- () => value ? parseDates(value, format) : void 0,
4319
- [value, format]
4320
- );
4321
- (0, import_react26.useEffect)(() => {
4322
- if (value) {
4323
- try {
4324
- const dates = parseDates(value, format);
4325
- const newDisplayValue = formatValueString2(dates, displayFormat);
4326
- setDisplayValue(newDisplayValue);
4327
- } catch (error2) {
3887
+ M: {
3888
+ mask: import_react_imask2.IMask.MaskedRange,
3889
+ from: 1,
3890
+ to: 12,
3891
+ maxLength: 2
3892
+ },
3893
+ Y: {
3894
+ mask: import_react_imask2.IMask.MaskedRange,
3895
+ from: 1900,
3896
+ to: 9999
4328
3897
  }
4329
- } else {
4330
- setDisplayValue("");
4331
- }
4332
- }, [displayFormat, value, format]);
4333
- (0, import_react26.useEffect)(() => {
4334
- if (!anchorEl) {
4335
- innerRef.current?.blur();
4336
- }
4337
- }, [anchorEl, innerRef]);
4338
- (0, import_react26.useImperativeHandle)(ref, () => innerRef.current, [
4339
- innerRef
4340
- ]);
4341
- const handleChange = (0, import_react26.useCallback)(
4342
- (event) => {
4343
- const value2 = event.target.value;
4344
- setDisplayValue(
4345
- value2 ? formatValueString2(parseDates(value2, format), displayFormat) : value2
4346
- );
4347
- setValue(value2);
4348
3898
  },
4349
- [displayFormat, format, setValue]
4350
- );
4351
- const handleDisplayInputChange = (0, import_react26.useCallback)(
4352
- (event) => {
4353
- if (event.target.value === "") {
4354
- handleChange({
4355
- target: {
4356
- name: props.name,
4357
- value: ""
4358
- }
4359
- });
4360
- return;
4361
- }
4362
- const isValidDisplayValue = validValueFormat2(
4363
- event.target.value,
4364
- displayFormat
4365
- );
4366
- if (isValidDisplayValue) {
4367
- const dates = parseDates(event.target.value, displayFormat);
4368
- const formattedValue = formatValueString2(dates, format);
4369
- handleChange({
4370
- target: {
4371
- name: props.name,
4372
- value: formattedValue
3899
+ format: (dates) => formatValueString2(dates, format),
3900
+ parse: (str) => parseDates(str, format),
3901
+ autofix: "pad",
3902
+ overwrite: true
3903
+ }
3904
+ );
3905
+ });
3906
+ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
3907
+ const props = (0, import_joy34.useThemeProps)({ props: inProps, name: "DateRangePicker" });
3908
+ const {
3909
+ onChange,
3910
+ disabled,
3911
+ label,
3912
+ error,
3913
+ helperText,
3914
+ minDate,
3915
+ maxDate,
3916
+ disableFuture,
3917
+ disablePast,
3918
+ required,
3919
+ // NOTE: 스타일 관련된 props는 최상위 엘리먼트에 적용한다.
3920
+ sx,
3921
+ className,
3922
+ format = "YYYY/MM/DD",
3923
+ displayFormat = "YYYY/MM/DD",
3924
+ size,
3925
+ inputReadOnly,
3926
+ hideClearButton,
3927
+ readOnly,
3928
+ ...innerProps
3929
+ } = props;
3930
+ const innerRef = (0, import_react26.useRef)(null);
3931
+ const buttonRef = (0, import_react26.useRef)(null);
3932
+ const [value, setValue] = useControlledState(
3933
+ props.value,
3934
+ props.defaultValue || "",
3935
+ (0, import_react26.useCallback)((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
3936
+ );
3937
+ const [displayValue, setDisplayValue] = (0, import_react26.useState)(
3938
+ () => value ? formatValueString2(parseDates(value, format), displayFormat) : ""
3939
+ );
3940
+ const [anchorEl, setAnchorEl] = (0, import_react26.useState)(null);
3941
+ const open = Boolean(anchorEl);
3942
+ const calendarValue = (0, import_react26.useMemo)(
3943
+ () => value ? parseDates(value, format) : void 0,
3944
+ [value, format]
3945
+ );
3946
+ (0, import_react26.useEffect)(() => {
3947
+ if (value) {
3948
+ try {
3949
+ const dates = parseDates(value, format);
3950
+ const newDisplayValue = formatValueString2(dates, displayFormat);
3951
+ setDisplayValue(newDisplayValue);
3952
+ } catch (error2) {
3953
+ }
3954
+ } else {
3955
+ setDisplayValue("");
3956
+ }
3957
+ }, [displayFormat, value, format]);
3958
+ (0, import_react26.useEffect)(() => {
3959
+ if (!anchorEl) {
3960
+ innerRef.current?.blur();
3961
+ }
3962
+ }, [anchorEl, innerRef]);
3963
+ (0, import_react26.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
3964
+ const handleChange = (0, import_react26.useCallback)(
3965
+ (event) => {
3966
+ const value2 = event.target.value;
3967
+ setDisplayValue(value2 ? formatValueString2(parseDates(value2, format), displayFormat) : value2);
3968
+ setValue(value2);
3969
+ },
3970
+ [displayFormat, format, setValue]
3971
+ );
3972
+ const handleDisplayInputChange = (0, import_react26.useCallback)(
3973
+ (event) => {
3974
+ if (event.target.value === "") {
3975
+ handleChange({
3976
+ target: {
3977
+ name: props.name,
3978
+ value: ""
3979
+ }
3980
+ });
3981
+ return;
3982
+ }
3983
+ const isValidDisplayValue = validValueFormat2(event.target.value, displayFormat);
3984
+ if (isValidDisplayValue) {
3985
+ const dates = parseDates(event.target.value, displayFormat);
3986
+ const formattedValue = formatValueString2(dates, format);
3987
+ handleChange({
3988
+ target: {
3989
+ name: props.name,
3990
+ value: formattedValue
3991
+ }
3992
+ });
3993
+ }
3994
+ },
3995
+ [displayFormat, format, handleChange, props.name]
3996
+ );
3997
+ const handleCalendarToggle = (0, import_react26.useCallback)(
3998
+ (event) => {
3999
+ setAnchorEl(anchorEl ? null : event.currentTarget);
4000
+ innerRef.current?.focus();
4001
+ },
4002
+ [anchorEl, setAnchorEl, innerRef]
4003
+ );
4004
+ const handleCalendarChange = (0, import_react26.useCallback)(
4005
+ ([date1, date2]) => {
4006
+ if (!date1 || !date2) return;
4007
+ const formattedValue = formatValueString2([date1, date2], format);
4008
+ if (props.value !== void 0) {
4009
+ onChange?.({ target: { name: props.name, value: formattedValue } });
4010
+ } else {
4011
+ setDisplayValue(formatValueString2([date1, date2], displayFormat));
4012
+ setValue(formattedValue);
4013
+ }
4014
+ setAnchorEl(null);
4015
+ },
4016
+ [props.value, props.name, onChange, setValue, setAnchorEl, format, displayFormat]
4017
+ );
4018
+ const handleInputMouseDown = (0, import_react26.useCallback)(
4019
+ (event) => {
4020
+ if (inputReadOnly) {
4021
+ event.preventDefault();
4022
+ buttonRef.current?.focus();
4023
+ }
4024
+ },
4025
+ [inputReadOnly, buttonRef]
4026
+ );
4027
+ return /* @__PURE__ */ import_react26.default.createElement(DateRangePickerRoot, null, /* @__PURE__ */ import_react26.default.createElement(import_base3.FocusTrap, { open: true }, /* @__PURE__ */ import_react26.default.createElement(import_react26.default.Fragment, null, /* @__PURE__ */ import_react26.default.createElement(
4028
+ Input_default,
4029
+ {
4030
+ ...innerProps,
4031
+ color: error ? "danger" : innerProps.color,
4032
+ ref,
4033
+ size,
4034
+ value: displayValue,
4035
+ onChange: handleDisplayInputChange,
4036
+ disabled,
4037
+ required,
4038
+ placeholder: `${displayFormat} - ${displayFormat}`,
4039
+ slotProps: {
4040
+ input: {
4041
+ component: TextMaskAdapter5,
4042
+ ref: innerRef,
4043
+ format: displayFormat,
4044
+ sx: {
4045
+ "&:hover": {
4046
+ cursor: inputReadOnly || readOnly ? "default" : "text"
4373
4047
  }
4374
- });
4375
- }
4376
- },
4377
- [displayFormat, format, handleChange, props.name]
4378
- );
4379
- const handleCalendarToggle = (0, import_react26.useCallback)(
4380
- (event) => {
4381
- setAnchorEl(anchorEl ? null : event.currentTarget);
4382
- innerRef.current?.focus();
4383
- },
4384
- [anchorEl, setAnchorEl, innerRef]
4385
- );
4386
- const handleCalendarChange = (0, import_react26.useCallback)(
4387
- ([date1, date2]) => {
4388
- if (!date1 || !date2) return;
4389
- const formattedValue = formatValueString2([date1, date2], format);
4390
- if (props.value !== void 0) {
4391
- onChange?.({ target: { name: props.name, value: formattedValue } });
4392
- } else {
4393
- setDisplayValue(
4394
- formatValueString2([date1, date2], displayFormat)
4395
- );
4396
- setValue(formattedValue);
4048
+ },
4049
+ onMouseDown: handleInputMouseDown
4397
4050
  }
4398
- setAnchorEl(null);
4399
4051
  },
4400
- [
4401
- props.value,
4402
- props.name,
4403
- onChange,
4404
- setValue,
4405
- setAnchorEl,
4406
- format,
4407
- displayFormat
4408
- ]
4409
- );
4410
- const handleInputMouseDown = (0, import_react26.useCallback)(
4411
- (event) => {
4412
- if (inputReadOnly) {
4413
- event.preventDefault();
4414
- buttonRef.current?.focus();
4052
+ error,
4053
+ className,
4054
+ sx,
4055
+ endDecorator: /* @__PURE__ */ import_react26.default.createElement(
4056
+ CalendarButton2,
4057
+ {
4058
+ ref: buttonRef,
4059
+ variant: "plain",
4060
+ onClick: readOnly ? void 0 : handleCalendarToggle,
4061
+ "aria-label": "Toggle Calendar",
4062
+ "aria-controls": "date-range-picker-popper",
4063
+ "aria-haspopup": "dialog",
4064
+ "aria-expanded": open,
4065
+ disabled
4066
+ },
4067
+ /* @__PURE__ */ import_react26.default.createElement(import_CalendarToday2.default, null)
4068
+ ),
4069
+ label,
4070
+ helperText,
4071
+ readOnly: readOnly || inputReadOnly
4072
+ }
4073
+ ), open && /* @__PURE__ */ import_react26.default.createElement(import_base3.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react26.default.createElement(
4074
+ StyledPopper2,
4075
+ {
4076
+ id: "date-range-picker-popper",
4077
+ open: true,
4078
+ anchorEl,
4079
+ placement: "bottom-end",
4080
+ onMouseDown: (e) => e.preventDefault(),
4081
+ modifiers: [
4082
+ {
4083
+ name: "offset",
4084
+ options: {
4085
+ offset: [4, 4]
4086
+ }
4415
4087
  }
4416
- },
4417
- [inputReadOnly, buttonRef]
4418
- );
4419
- return /* @__PURE__ */ import_react26.default.createElement(DateRangePickerRoot, null, /* @__PURE__ */ import_react26.default.createElement(import_base3.FocusTrap, { open: true }, /* @__PURE__ */ import_react26.default.createElement(import_react26.default.Fragment, null, /* @__PURE__ */ import_react26.default.createElement(
4420
- Input_default,
4088
+ ],
4089
+ "aria-label": "Calendar Tooltip",
4090
+ "aria-expanded": open
4091
+ },
4092
+ /* @__PURE__ */ import_react26.default.createElement(CalendarSheet2, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react26.default.createElement(
4093
+ Calendar_default,
4421
4094
  {
4422
- ...innerProps,
4423
- color: error ? "danger" : innerProps.color,
4424
- ref,
4425
- size,
4426
- value: displayValue,
4427
- onChange: handleDisplayInputChange,
4428
- disabled,
4429
- required,
4430
- placeholder: `${displayFormat} - ${displayFormat}`,
4431
- slotProps: {
4432
- input: {
4433
- component: TextMaskAdapter5,
4434
- ref: innerRef,
4435
- format: displayFormat,
4436
- sx: {
4437
- "&:hover": {
4438
- cursor: inputReadOnly || readOnly ? "default" : "text"
4439
- }
4440
- },
4441
- onMouseDown: handleInputMouseDown
4442
- }
4443
- },
4444
- error,
4445
- className,
4446
- sx,
4447
- endDecorator: /* @__PURE__ */ import_react26.default.createElement(
4448
- CalendarButton2,
4449
- {
4450
- ref: buttonRef,
4451
- variant: "plain",
4452
- onClick: readOnly ? void 0 : handleCalendarToggle,
4453
- "aria-label": "Toggle Calendar",
4454
- "aria-controls": "date-range-picker-popper",
4455
- "aria-haspopup": "dialog",
4456
- "aria-expanded": open,
4457
- disabled
4458
- },
4459
- /* @__PURE__ */ import_react26.default.createElement(import_CalendarToday2.default, null)
4460
- ),
4461
- label,
4462
- helperText,
4463
- readOnly: readOnly || inputReadOnly
4095
+ rangeSelection: true,
4096
+ defaultValue: calendarValue,
4097
+ onChange: handleCalendarChange,
4098
+ minDate: minDate ? new Date(minDate) : void 0,
4099
+ maxDate: maxDate ? new Date(maxDate) : void 0,
4100
+ disableFuture,
4101
+ disablePast
4464
4102
  }
4465
- ), open && /* @__PURE__ */ import_react26.default.createElement(import_base3.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react26.default.createElement(
4466
- StyledPopper2,
4103
+ ), !hideClearButton && /* @__PURE__ */ import_react26.default.createElement(
4104
+ DialogActions_default,
4467
4105
  {
4468
- id: "date-range-picker-popper",
4469
- open: true,
4470
- anchorEl,
4471
- placement: "bottom-end",
4472
- onMouseDown: (e) => e.preventDefault(),
4473
- modifiers: [
4474
- {
4475
- name: "offset",
4476
- options: {
4477
- offset: [4, 4]
4478
- }
4479
- }
4480
- ],
4481
- "aria-label": "Calendar Tooltip",
4482
- "aria-expanded": open
4483
- },
4484
- /* @__PURE__ */ import_react26.default.createElement(CalendarSheet2, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react26.default.createElement(
4485
- Calendar_default,
4486
- {
4487
- rangeSelection: true,
4488
- defaultValue: calendarValue,
4489
- onChange: handleCalendarChange,
4490
- minDate: minDate ? new Date(minDate) : void 0,
4491
- maxDate: maxDate ? new Date(maxDate) : void 0,
4492
- disableFuture,
4493
- disablePast
4106
+ sx: {
4107
+ p: 1
4494
4108
  }
4495
- ), !hideClearButton && /* @__PURE__ */ import_react26.default.createElement(
4496
- DialogActions_default,
4109
+ },
4110
+ /* @__PURE__ */ import_react26.default.createElement(
4111
+ Button_default,
4497
4112
  {
4498
- sx: {
4499
- p: 1
4113
+ size,
4114
+ variant: "plain",
4115
+ color: "neutral",
4116
+ onClick: () => {
4117
+ setValue("");
4118
+ setDisplayValue("");
4119
+ setAnchorEl(null);
4500
4120
  }
4501
4121
  },
4502
- /* @__PURE__ */ import_react26.default.createElement(
4503
- Button_default,
4504
- {
4505
- size,
4506
- variant: "plain",
4507
- color: "neutral",
4508
- onClick: () => {
4509
- setValue("");
4510
- setDisplayValue("");
4511
- setAnchorEl(null);
4512
- }
4513
- },
4514
- "Clear"
4515
- )
4516
- ))
4517
- )))));
4518
- }
4519
- );
4122
+ "Clear"
4123
+ )
4124
+ ))
4125
+ )))));
4126
+ });
4520
4127
  DateRangePicker.displayName = "DateRangePicker";
4521
4128
 
4522
4129
  // src/components/Drawer/Drawer.tsx
@@ -4603,17 +4210,7 @@ var StyledDialogFrame = (0, import_joy39.styled)(ModalDialog, {
4603
4210
  });
4604
4211
  var DialogFrame = import_react29.default.forwardRef((props, ref) => {
4605
4212
  const { title, children, actions, fullscreen, ...innerProps } = props;
4606
- return /* @__PURE__ */ import_react29.default.createElement(
4607
- StyledDialogFrame,
4608
- {
4609
- layout: fullscreen ? "fullscreen" : "center",
4610
- ref,
4611
- ...innerProps
4612
- },
4613
- /* @__PURE__ */ import_react29.default.createElement(DialogTitle_default, null, title),
4614
- /* @__PURE__ */ import_react29.default.createElement(DialogContent_default, null, children),
4615
- /* @__PURE__ */ import_react29.default.createElement(DialogActions_default, null, actions)
4616
- );
4213
+ return /* @__PURE__ */ import_react29.default.createElement(StyledDialogFrame, { layout: fullscreen ? "fullscreen" : "center", ref, ...innerProps }, /* @__PURE__ */ import_react29.default.createElement(DialogTitle_default, null, title), /* @__PURE__ */ import_react29.default.createElement(DialogContent_default, null, children), /* @__PURE__ */ import_react29.default.createElement(DialogActions_default, null, actions));
4617
4214
  });
4618
4215
  DialogFrame.displayName = "DialogFrame";
4619
4216
 
@@ -4692,15 +4289,7 @@ function IconMenuButton(props) {
4692
4289
  }
4693
4290
  },
4694
4291
  icon
4695
- ), /* @__PURE__ */ import_react31.default.createElement(Menu, { placement, size }, items.map((i) => /* @__PURE__ */ import_react31.default.createElement(
4696
- MenuItem,
4697
- {
4698
- key: i.text,
4699
- component: i.component,
4700
- ...i.componentProps ?? {}
4701
- },
4702
- i.text
4703
- ))));
4292
+ ), /* @__PURE__ */ import_react31.default.createElement(Menu, { placement, size }, items.map((i) => /* @__PURE__ */ import_react31.default.createElement(MenuItem, { key: i.text, component: i.component, ...i.componentProps ?? {} }, i.text))));
4704
4293
  }
4705
4294
  IconMenuButton.displayName = "IconMenuButton";
4706
4295
 
@@ -4734,52 +4323,33 @@ var Markdown = (props) => {
4734
4323
  if (!rehypeAccent2) {
4735
4324
  return null;
4736
4325
  }
4737
- return /* @__PURE__ */ import_react32.default.createElement(
4738
- Typography,
4326
+ return /* @__PURE__ */ import_react32.default.createElement(Typography, { component: "div", color, textColor, level: defaultLevel, ...innerProps }, /* @__PURE__ */ import_react32.default.createElement(
4327
+ import_react32.Suspense,
4739
4328
  {
4740
- component: "div",
4741
- color,
4742
- textColor,
4743
- level: defaultLevel,
4744
- ...innerProps
4329
+ fallback: fallback || /* @__PURE__ */ import_react32.default.createElement(Typography, null, /* @__PURE__ */ import_react32.default.createElement(import_joy44.Skeleton, null, content || ""))
4745
4330
  },
4746
4331
  /* @__PURE__ */ import_react32.default.createElement(
4747
- import_react32.Suspense,
4332
+ LazyReactMarkdown,
4748
4333
  {
4749
- fallback: fallback || /* @__PURE__ */ import_react32.default.createElement(Typography, null, /* @__PURE__ */ import_react32.default.createElement(import_joy44.Skeleton, null, content || ""))
4750
- },
4751
- /* @__PURE__ */ import_react32.default.createElement(
4752
- LazyReactMarkdown,
4753
- {
4754
- ...markdownOptions,
4755
- children: content,
4756
- rehypePlugins: [[rehypeAccent2, { accentColor }]],
4757
- remarkPlugins: [import_remark_gfm.default],
4758
- components: {
4759
- h1: ({ children }) => /* @__PURE__ */ import_react32.default.createElement(Typography, { color, textColor, level: "h1" }, children),
4760
- h2: ({ children }) => /* @__PURE__ */ import_react32.default.createElement(Typography, { color, textColor, level: "h2" }, children),
4761
- h3: ({ children }) => /* @__PURE__ */ import_react32.default.createElement(Typography, { color, textColor, level: "h3" }, children),
4762
- h4: ({ children }) => /* @__PURE__ */ import_react32.default.createElement(Typography, { color, textColor, level: "h4" }, children),
4763
- p: ({ children, node }) => /* @__PURE__ */ import_react32.default.createElement(
4764
- Typography,
4765
- {
4766
- color,
4767
- textColor,
4768
- level: defaultLevel,
4769
- ...node?.properties
4770
- },
4771
- children
4772
- ),
4773
- a: ({ children, href }) => /* @__PURE__ */ import_react32.default.createElement(import_joy45.Link, { href, target: defaultLinkAction }, children),
4774
- hr: () => /* @__PURE__ */ import_react32.default.createElement(Divider, null),
4775
- b: ({ children }) => /* @__PURE__ */ import_react32.default.createElement(Typography, { fontWeight: boldFontWeight }, children),
4776
- strong: ({ children }) => /* @__PURE__ */ import_react32.default.createElement(Typography, { fontWeight: boldFontWeight }, children),
4777
- ...markdownOptions?.components
4778
- }
4334
+ ...markdownOptions,
4335
+ children: content,
4336
+ rehypePlugins: [[rehypeAccent2, { accentColor }]],
4337
+ remarkPlugins: [import_remark_gfm.default],
4338
+ components: {
4339
+ h1: ({ children }) => /* @__PURE__ */ import_react32.default.createElement(Typography, { color, textColor, level: "h1" }, children),
4340
+ h2: ({ children }) => /* @__PURE__ */ import_react32.default.createElement(Typography, { color, textColor, level: "h2" }, children),
4341
+ h3: ({ children }) => /* @__PURE__ */ import_react32.default.createElement(Typography, { color, textColor, level: "h3" }, children),
4342
+ h4: ({ children }) => /* @__PURE__ */ import_react32.default.createElement(Typography, { color, textColor, level: "h4" }, children),
4343
+ p: ({ children, node }) => /* @__PURE__ */ import_react32.default.createElement(Typography, { color, textColor, level: defaultLevel, ...node?.properties }, children),
4344
+ a: ({ children, href }) => /* @__PURE__ */ import_react32.default.createElement(import_joy45.Link, { href, target: defaultLinkAction }, children),
4345
+ hr: () => /* @__PURE__ */ import_react32.default.createElement(Divider, null),
4346
+ b: ({ children }) => /* @__PURE__ */ import_react32.default.createElement(Typography, { fontWeight: boldFontWeight }, children),
4347
+ strong: ({ children }) => /* @__PURE__ */ import_react32.default.createElement(Typography, { fontWeight: boldFontWeight }, children),
4348
+ ...markdownOptions?.components
4779
4349
  }
4780
- )
4350
+ }
4781
4351
  )
4782
- );
4352
+ ));
4783
4353
  };
4784
4354
  Markdown.displayName = "Markdown";
4785
4355
 
@@ -4832,15 +4402,7 @@ function MenuButton(props) {
4832
4402
  endDecorator: showIcon ? /* @__PURE__ */ import_react33.default.createElement(import_react33.default.Fragment, null, endDecorator, /* @__PURE__ */ import_react33.default.createElement(import_ExpandMore.default, null)) : /* @__PURE__ */ import_react33.default.createElement(import_react33.default.Fragment, null, endDecorator)
4833
4403
  },
4834
4404
  buttonText
4835
- ), /* @__PURE__ */ import_react33.default.createElement(Menu, { placement, size }, items.map((i) => /* @__PURE__ */ import_react33.default.createElement(
4836
- MenuItem,
4837
- {
4838
- key: i.text,
4839
- component: i.component,
4840
- ...i.componentProps ?? {}
4841
- },
4842
- i.text
4843
- ))));
4405
+ ), /* @__PURE__ */ import_react33.default.createElement(Menu, { placement, size }, items.map((i) => /* @__PURE__ */ import_react33.default.createElement(MenuItem, { key: i.text, component: i.component, ...i.componentProps ?? {} }, i.text))));
4844
4406
  }
4845
4407
  MenuButton.displayName = "MenuButton";
4846
4408
 
@@ -4900,215 +4462,202 @@ function parseDate3(dateString, format) {
4900
4462
  const result = new Date(year, month, day);
4901
4463
  return result;
4902
4464
  }
4903
- var MonthPicker = (0, import_react34.forwardRef)(
4904
- (inProps, ref) => {
4905
- const props = (0, import_joy47.useThemeProps)({ props: inProps, name: "MonthPicker" });
4906
- const {
4907
- onChange,
4465
+ var MonthPicker = (0, import_react34.forwardRef)((inProps, ref) => {
4466
+ const props = (0, import_joy47.useThemeProps)({ props: inProps, name: "MonthPicker" });
4467
+ const {
4468
+ onChange,
4469
+ disabled,
4470
+ label,
4471
+ error,
4472
+ helperText,
4473
+ minDate,
4474
+ maxDate,
4475
+ disableFuture,
4476
+ disablePast,
4477
+ required,
4478
+ // NOTE: 스타일 관련된 props는 최상위 엘리먼트에 적용한다.
4479
+ sx,
4480
+ className,
4481
+ /**
4482
+ * NOTE: 현재 CalendarDate는 YYYY-MM-DD로 개발하고 있어 date를 포함하여 value를 관리한다.
4483
+ * @see https://ecubelabs.atlassian.net/wiki/spaces/SW/pages/1938784349/Date#CalendarDate
4484
+ * @see https://github.com/Ecube-Labs/hds/pull/145
4485
+ */
4486
+ format = "YYYY/MM/DD",
4487
+ displayFormat = "YYYY/MM",
4488
+ size,
4489
+ locale,
4490
+ ...innerProps
4491
+ } = props;
4492
+ const innerRef = (0, import_react34.useRef)(null);
4493
+ const buttonRef = (0, import_react34.useRef)(null);
4494
+ const [value, setValue, isControlled] = useControlledState(
4495
+ props.value,
4496
+ props.defaultValue || "",
4497
+ (0, import_react34.useCallback)((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
4498
+ );
4499
+ const getFormattedDisplayValue = (0, import_react34.useCallback)(
4500
+ (inputValue) => {
4501
+ if (!inputValue) return "";
4502
+ try {
4503
+ return formatValueString3(parseDate3(inputValue, format), displayFormat, locale);
4504
+ } catch (e) {
4505
+ return inputValue;
4506
+ }
4507
+ },
4508
+ [format, displayFormat, locale]
4509
+ );
4510
+ const [displayValue, setDisplayValue] = (0, import_react34.useState)(() => getFormattedDisplayValue(value));
4511
+ const [anchorEl, setAnchorEl] = (0, import_react34.useState)(null);
4512
+ const open = Boolean(anchorEl);
4513
+ (0, import_react34.useEffect)(() => {
4514
+ if (!anchorEl) {
4515
+ innerRef.current?.blur();
4516
+ }
4517
+ }, [anchorEl, innerRef]);
4518
+ (0, import_react34.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
4519
+ (0, import_react34.useEffect)(() => {
4520
+ setDisplayValue(getFormattedDisplayValue(value));
4521
+ }, [value, getFormattedDisplayValue]);
4522
+ const handleChange = (0, import_react34.useCallback)(
4523
+ (event) => {
4524
+ const newValue = event.target.value;
4525
+ setValue(newValue);
4526
+ if (!isControlled) {
4527
+ setDisplayValue(getFormattedDisplayValue(newValue));
4528
+ }
4529
+ },
4530
+ [setValue, getFormattedDisplayValue, isControlled]
4531
+ );
4532
+ const handleCalendarToggle = (0, import_react34.useCallback)(
4533
+ (event) => {
4534
+ setAnchorEl(anchorEl ? null : event.currentTarget);
4535
+ innerRef.current?.focus();
4536
+ },
4537
+ [anchorEl, setAnchorEl, innerRef]
4538
+ );
4539
+ const handleInputMouseDown = (0, import_react34.useCallback)(
4540
+ (event) => {
4541
+ event.preventDefault();
4542
+ buttonRef.current?.focus();
4543
+ },
4544
+ [buttonRef]
4545
+ );
4546
+ return /* @__PURE__ */ import_react34.default.createElement(MonthPickerRoot, null, /* @__PURE__ */ import_react34.default.createElement(import_base4.FocusTrap, { open: true }, /* @__PURE__ */ import_react34.default.createElement(import_react34.default.Fragment, null, /* @__PURE__ */ import_react34.default.createElement(
4547
+ Input_default,
4548
+ {
4549
+ ...innerProps,
4550
+ color: error ? "danger" : innerProps.color,
4551
+ ref: innerRef,
4552
+ size,
4553
+ value: displayValue,
4554
+ placeholder: displayFormat,
4908
4555
  disabled,
4909
- label,
4910
- error,
4911
- helperText,
4912
- minDate,
4913
- maxDate,
4914
- disableFuture,
4915
- disablePast,
4916
4556
  required,
4917
- // NOTE: 스타일 관련된 props는 최상위 엘리먼트에 적용한다.
4918
- sx,
4919
- className,
4920
- /**
4921
- * NOTE: 현재 CalendarDate는 YYYY-MM-DD로 개발하고 있어 date를 포함하여 value를 관리한다.
4922
- * @see https://ecubelabs.atlassian.net/wiki/spaces/SW/pages/1938784349/Date#CalendarDate
4923
- * @see https://github.com/Ecube-Labs/hds/pull/145
4924
- */
4925
- format = "YYYY/MM/DD",
4926
- displayFormat = "YYYY/MM",
4927
- size,
4928
- locale,
4929
- ...innerProps
4930
- } = props;
4931
- const innerRef = (0, import_react34.useRef)(null);
4932
- const buttonRef = (0, import_react34.useRef)(null);
4933
- const [value, setValue, isControlled] = useControlledState(
4934
- props.value,
4935
- props.defaultValue || "",
4936
- (0, import_react34.useCallback)(
4937
- (value2) => onChange?.({ target: { name: props.name, value: value2 } }),
4938
- [props.name, onChange]
4939
- )
4940
- );
4941
- const getFormattedDisplayValue = (0, import_react34.useCallback)(
4942
- (inputValue) => {
4943
- if (!inputValue) return "";
4944
- try {
4945
- return formatValueString3(
4946
- parseDate3(inputValue, format),
4947
- displayFormat,
4948
- locale
4949
- );
4950
- } catch (e) {
4951
- return inputValue;
4952
- }
4953
- },
4954
- [format, displayFormat, locale]
4955
- );
4956
- const [displayValue, setDisplayValue] = (0, import_react34.useState)(
4957
- () => getFormattedDisplayValue(value)
4958
- );
4959
- const [anchorEl, setAnchorEl] = (0, import_react34.useState)(null);
4960
- const open = Boolean(anchorEl);
4961
- (0, import_react34.useEffect)(() => {
4962
- if (!anchorEl) {
4963
- innerRef.current?.blur();
4964
- }
4965
- }, [anchorEl, innerRef]);
4966
- (0, import_react34.useImperativeHandle)(ref, () => innerRef.current, [
4967
- innerRef
4968
- ]);
4969
- (0, import_react34.useEffect)(() => {
4970
- setDisplayValue(getFormattedDisplayValue(value));
4971
- }, [value, getFormattedDisplayValue]);
4972
- const handleChange = (0, import_react34.useCallback)(
4973
- (event) => {
4974
- const newValue = event.target.value;
4975
- setValue(newValue);
4976
- if (!isControlled) {
4977
- setDisplayValue(getFormattedDisplayValue(newValue));
4557
+ slotProps: {
4558
+ input: {
4559
+ ref: innerRef,
4560
+ format: displayFormat,
4561
+ sx: {
4562
+ "&:hover": {
4563
+ cursor: "default"
4564
+ }
4565
+ },
4566
+ onMouseDown: handleInputMouseDown
4978
4567
  }
4979
4568
  },
4980
- [setValue, getFormattedDisplayValue, isControlled]
4981
- );
4982
- const handleCalendarToggle = (0, import_react34.useCallback)(
4983
- (event) => {
4984
- setAnchorEl(anchorEl ? null : event.currentTarget);
4985
- innerRef.current?.focus();
4986
- },
4987
- [anchorEl, setAnchorEl, innerRef]
4988
- );
4989
- const handleInputMouseDown = (0, import_react34.useCallback)(
4990
- (event) => {
4991
- event.preventDefault();
4992
- buttonRef.current?.focus();
4569
+ error,
4570
+ className,
4571
+ sx: {
4572
+ ...sx,
4573
+ // NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
4574
+ fontFamily: "monospace"
4993
4575
  },
4994
- [buttonRef]
4995
- );
4996
- return /* @__PURE__ */ import_react34.default.createElement(MonthPickerRoot, null, /* @__PURE__ */ import_react34.default.createElement(import_base4.FocusTrap, { open: true }, /* @__PURE__ */ import_react34.default.createElement(import_react34.default.Fragment, null, /* @__PURE__ */ import_react34.default.createElement(
4997
- Input_default,
4998
- {
4999
- ...innerProps,
5000
- color: error ? "danger" : innerProps.color,
5001
- ref: innerRef,
5002
- size,
5003
- value: displayValue,
5004
- placeholder: displayFormat,
5005
- disabled,
5006
- required,
5007
- slotProps: {
5008
- input: {
5009
- ref: innerRef,
5010
- format: displayFormat,
5011
- sx: {
5012
- "&:hover": {
5013
- cursor: "default"
5014
- }
5015
- },
5016
- onMouseDown: handleInputMouseDown
5017
- }
4576
+ endDecorator: /* @__PURE__ */ import_react34.default.createElement(
4577
+ IconButton_default,
4578
+ {
4579
+ ref: buttonRef,
4580
+ variant: "plain",
4581
+ onClick: handleCalendarToggle,
4582
+ "aria-label": "Toggle Calendar",
4583
+ "aria-controls": "month-picker-popper",
4584
+ "aria-haspopup": "dialog",
4585
+ "aria-expanded": open,
4586
+ disabled
5018
4587
  },
5019
- error,
5020
- className,
5021
- sx: {
5022
- ...sx,
5023
- // NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
5024
- fontFamily: "monospace"
4588
+ /* @__PURE__ */ import_react34.default.createElement(import_CalendarToday3.default, null)
4589
+ ),
4590
+ label,
4591
+ helperText
4592
+ }
4593
+ ), open && /* @__PURE__ */ import_react34.default.createElement(import_base4.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react34.default.createElement(
4594
+ StyledPopper3,
4595
+ {
4596
+ id: "month-picker-popper",
4597
+ open: true,
4598
+ anchorEl,
4599
+ placement: "bottom-end",
4600
+ onMouseDown: (e) => e.preventDefault(),
4601
+ modifiers: [
4602
+ {
4603
+ name: "offset",
4604
+ options: {
4605
+ offset: [4, 4]
4606
+ }
4607
+ }
4608
+ ],
4609
+ "aria-label": "Calendar Tooltip",
4610
+ "aria-expanded": open
4611
+ },
4612
+ /* @__PURE__ */ import_react34.default.createElement(CalendarSheet3, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react34.default.createElement(
4613
+ Calendar_default,
4614
+ {
4615
+ view: "month",
4616
+ views: ["month"],
4617
+ value: !Number.isNaN(new Date(value).getTime()) ? [new Date(value), void 0] : void 0,
4618
+ onChange: ([date]) => {
4619
+ handleChange({
4620
+ target: {
4621
+ name: props.name,
4622
+ value: formatValueString3(date, format, locale)
4623
+ }
4624
+ });
4625
+ setAnchorEl(null);
5025
4626
  },
5026
- endDecorator: /* @__PURE__ */ import_react34.default.createElement(
5027
- IconButton_default,
5028
- {
5029
- ref: buttonRef,
5030
- variant: "plain",
5031
- onClick: handleCalendarToggle,
5032
- "aria-label": "Toggle Calendar",
5033
- "aria-controls": "month-picker-popper",
5034
- "aria-haspopup": "dialog",
5035
- "aria-expanded": open,
5036
- disabled
5037
- },
5038
- /* @__PURE__ */ import_react34.default.createElement(import_CalendarToday3.default, null)
5039
- ),
5040
- label,
5041
- helperText
4627
+ minDate: minDate ? new Date(minDate) : void 0,
4628
+ maxDate: maxDate ? new Date(maxDate) : void 0,
4629
+ disableFuture,
4630
+ disablePast,
4631
+ locale
5042
4632
  }
5043
- ), open && /* @__PURE__ */ import_react34.default.createElement(import_base4.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react34.default.createElement(
5044
- StyledPopper3,
4633
+ ), /* @__PURE__ */ import_react34.default.createElement(
4634
+ DialogActions_default,
5045
4635
  {
5046
- id: "month-picker-popper",
5047
- open: true,
5048
- anchorEl,
5049
- placement: "bottom-end",
5050
- onMouseDown: (e) => e.preventDefault(),
5051
- modifiers: [
5052
- {
5053
- name: "offset",
5054
- options: {
5055
- offset: [4, 4]
5056
- }
5057
- }
5058
- ],
5059
- "aria-label": "Calendar Tooltip",
5060
- "aria-expanded": open
4636
+ sx: {
4637
+ p: 1
4638
+ }
5061
4639
  },
5062
- /* @__PURE__ */ import_react34.default.createElement(CalendarSheet3, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react34.default.createElement(
5063
- Calendar_default,
4640
+ /* @__PURE__ */ import_react34.default.createElement(
4641
+ Button_default,
5064
4642
  {
5065
- view: "month",
5066
- views: ["month"],
5067
- value: !Number.isNaN(new Date(value).getTime()) ? [new Date(value), void 0] : void 0,
5068
- onChange: ([date]) => {
4643
+ size,
4644
+ variant: "plain",
4645
+ color: "neutral",
4646
+ onClick: () => {
5069
4647
  handleChange({
5070
4648
  target: {
5071
4649
  name: props.name,
5072
- value: formatValueString3(date, format, locale)
4650
+ value: ""
5073
4651
  }
5074
4652
  });
5075
4653
  setAnchorEl(null);
5076
- },
5077
- minDate: minDate ? new Date(minDate) : void 0,
5078
- maxDate: maxDate ? new Date(maxDate) : void 0,
5079
- disableFuture,
5080
- disablePast,
5081
- locale
5082
- }
5083
- ), /* @__PURE__ */ import_react34.default.createElement(
5084
- DialogActions_default,
5085
- {
5086
- sx: {
5087
- p: 1
5088
4654
  }
5089
4655
  },
5090
- /* @__PURE__ */ import_react34.default.createElement(
5091
- Button_default,
5092
- {
5093
- size,
5094
- variant: "plain",
5095
- color: "neutral",
5096
- onClick: () => {
5097
- handleChange({
5098
- target: {
5099
- name: props.name,
5100
- value: ""
5101
- }
5102
- });
5103
- setAnchorEl(null);
5104
- }
5105
- },
5106
- "Clear"
5107
- )
5108
- ))
5109
- )))));
5110
- }
5111
- );
4656
+ "Clear"
4657
+ )
4658
+ ))
4659
+ )))));
4660
+ });
5112
4661
 
5113
4662
  // src/components/MonthRangePicker/MonthRangePicker.tsx
5114
4663
  var import_react35 = __toESM(require("react"));
@@ -5169,196 +4718,184 @@ var parseDates2 = (str) => {
5169
4718
  var formatToPattern3 = (format) => {
5170
4719
  return `${format} - ${format}`.replace(/YYYY/g, "Y").replace(/MM/g, "m").replace(/[^YMm\s]/g, (match) => `${match}\``);
5171
4720
  };
5172
- var TextMaskAdapter7 = import_react35.default.forwardRef(
5173
- function TextMaskAdapter8(props, ref) {
5174
- const { onChange, format, ...other } = props;
5175
- return /* @__PURE__ */ import_react35.default.createElement(
5176
- import_react_imask3.IMaskInput,
5177
- {
5178
- ...other,
5179
- inputRef: ref,
5180
- onAccept: (value) => onChange({ target: { name: props.name, value } }),
5181
- mask: Date,
5182
- pattern: formatToPattern3(format),
5183
- blocks: {
5184
- m: {
5185
- mask: import_react_imask3.IMask.MaskedRange,
5186
- from: 1,
5187
- to: 12,
5188
- maxLength: 2
5189
- },
5190
- Y: {
5191
- mask: import_react_imask3.IMask.MaskedRange,
5192
- from: 1900,
5193
- to: 9999
5194
- }
4721
+ var TextMaskAdapter7 = import_react35.default.forwardRef(function TextMaskAdapter8(props, ref) {
4722
+ const { onChange, format, ...other } = props;
4723
+ return /* @__PURE__ */ import_react35.default.createElement(
4724
+ import_react_imask3.IMaskInput,
4725
+ {
4726
+ ...other,
4727
+ inputRef: ref,
4728
+ onAccept: (value) => onChange({ target: { name: props.name, value } }),
4729
+ mask: Date,
4730
+ pattern: formatToPattern3(format),
4731
+ blocks: {
4732
+ m: {
4733
+ mask: import_react_imask3.IMask.MaskedRange,
4734
+ from: 1,
4735
+ to: 12,
4736
+ maxLength: 2
5195
4737
  },
5196
- format: (dates) => formatValueString4(dates, format),
5197
- parse: parseDates2,
5198
- autofix: "pad",
5199
- overwrite: true
5200
- }
5201
- );
5202
- }
5203
- );
5204
- var MonthRangePicker = (0, import_react35.forwardRef)(
5205
- (inProps, ref) => {
5206
- const props = (0, import_joy48.useThemeProps)({ props: inProps, name: "MonthRangePicker" });
5207
- const {
5208
- onChange,
4738
+ Y: {
4739
+ mask: import_react_imask3.IMask.MaskedRange,
4740
+ from: 1900,
4741
+ to: 9999
4742
+ }
4743
+ },
4744
+ format: (dates) => formatValueString4(dates, format),
4745
+ parse: parseDates2,
4746
+ autofix: "pad",
4747
+ overwrite: true
4748
+ }
4749
+ );
4750
+ });
4751
+ var MonthRangePicker = (0, import_react35.forwardRef)((inProps, ref) => {
4752
+ const props = (0, import_joy48.useThemeProps)({ props: inProps, name: "MonthRangePicker" });
4753
+ const {
4754
+ onChange,
4755
+ disabled,
4756
+ label,
4757
+ error,
4758
+ helperText,
4759
+ minDate,
4760
+ maxDate,
4761
+ disableFuture,
4762
+ disablePast,
4763
+ required,
4764
+ // NOTE: 스타일 관련된 props는 최상위 엘리먼트에 적용한다.
4765
+ sx,
4766
+ className,
4767
+ format = "YYYY/MM",
4768
+ size,
4769
+ ...innerProps
4770
+ } = props;
4771
+ const innerRef = (0, import_react35.useRef)(null);
4772
+ const [value, setValue] = useControlledState(
4773
+ props.value,
4774
+ props.defaultValue || "",
4775
+ (0, import_react35.useCallback)((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
4776
+ );
4777
+ const [anchorEl, setAnchorEl] = (0, import_react35.useState)(null);
4778
+ const open = Boolean(anchorEl);
4779
+ const calendarValue = (0, import_react35.useMemo)(() => value ? parseDates2(value) : void 0, [value]);
4780
+ (0, import_react35.useEffect)(() => {
4781
+ if (!anchorEl) {
4782
+ innerRef.current?.blur();
4783
+ }
4784
+ }, [anchorEl, innerRef]);
4785
+ (0, import_react35.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
4786
+ const handleChange = (0, import_react35.useCallback)(
4787
+ (event) => {
4788
+ setValue(event.target.value);
4789
+ },
4790
+ [setValue]
4791
+ );
4792
+ const handleCalendarToggle = (0, import_react35.useCallback)(
4793
+ (event) => {
4794
+ setAnchorEl(anchorEl ? null : event.currentTarget);
4795
+ innerRef.current?.focus();
4796
+ },
4797
+ [anchorEl, setAnchorEl, innerRef]
4798
+ );
4799
+ const handleCalendarChange = (0, import_react35.useCallback)(
4800
+ ([date1, date2]) => {
4801
+ if (!date1 || !date2) return;
4802
+ setValue(formatValueString4([date1, date2], format));
4803
+ setAnchorEl(null);
4804
+ },
4805
+ [setValue, setAnchorEl, format]
4806
+ );
4807
+ return /* @__PURE__ */ import_react35.default.createElement(MonthRangePickerRoot, null, /* @__PURE__ */ import_react35.default.createElement(import_base5.FocusTrap, { open: true }, /* @__PURE__ */ import_react35.default.createElement(import_react35.default.Fragment, null, /* @__PURE__ */ import_react35.default.createElement(
4808
+ Input_default,
4809
+ {
4810
+ ...innerProps,
4811
+ color: error ? "danger" : innerProps.color,
4812
+ ref,
4813
+ size,
4814
+ value,
4815
+ onChange: handleChange,
5209
4816
  disabled,
5210
- label,
5211
- error,
5212
- helperText,
5213
- minDate,
5214
- maxDate,
5215
- disableFuture,
5216
- disablePast,
5217
4817
  required,
5218
- // NOTE: 스타일 관련된 props는 최상위 엘리먼트에 적용한다.
5219
- sx,
5220
- className,
5221
- format = "YYYY/MM",
5222
- size,
5223
- ...innerProps
5224
- } = props;
5225
- const innerRef = (0, import_react35.useRef)(null);
5226
- const [value, setValue] = useControlledState(
5227
- props.value,
5228
- props.defaultValue || "",
5229
- (0, import_react35.useCallback)(
5230
- (value2) => onChange?.({ target: { name: props.name, value: value2 } }),
5231
- [props.name, onChange]
5232
- )
5233
- );
5234
- const [anchorEl, setAnchorEl] = (0, import_react35.useState)(null);
5235
- const open = Boolean(anchorEl);
5236
- const calendarValue = (0, import_react35.useMemo)(
5237
- () => value ? parseDates2(value) : void 0,
5238
- [value]
5239
- );
5240
- (0, import_react35.useEffect)(() => {
5241
- if (!anchorEl) {
5242
- innerRef.current?.blur();
5243
- }
5244
- }, [anchorEl, innerRef]);
5245
- (0, import_react35.useImperativeHandle)(ref, () => innerRef.current, [
5246
- innerRef
5247
- ]);
5248
- const handleChange = (0, import_react35.useCallback)(
5249
- (event) => {
5250
- setValue(event.target.value);
5251
- },
5252
- [setValue]
5253
- );
5254
- const handleCalendarToggle = (0, import_react35.useCallback)(
5255
- (event) => {
5256
- setAnchorEl(anchorEl ? null : event.currentTarget);
5257
- innerRef.current?.focus();
4818
+ placeholder: `${format} - ${format}`,
4819
+ slotProps: {
4820
+ input: { component: TextMaskAdapter7, ref: innerRef, format }
5258
4821
  },
5259
- [anchorEl, setAnchorEl, innerRef]
5260
- );
5261
- const handleCalendarChange = (0, import_react35.useCallback)(
5262
- ([date1, date2]) => {
5263
- if (!date1 || !date2) return;
5264
- setValue(formatValueString4([date1, date2], format));
5265
- setAnchorEl(null);
4822
+ error,
4823
+ className,
4824
+ sx: {
4825
+ ...sx,
4826
+ // NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
4827
+ fontFamily: "monospace"
5266
4828
  },
5267
- [setValue, setAnchorEl, format]
5268
- );
5269
- return /* @__PURE__ */ import_react35.default.createElement(MonthRangePickerRoot, null, /* @__PURE__ */ import_react35.default.createElement(import_base5.FocusTrap, { open: true }, /* @__PURE__ */ import_react35.default.createElement(import_react35.default.Fragment, null, /* @__PURE__ */ import_react35.default.createElement(
5270
- Input_default,
5271
- {
5272
- ...innerProps,
5273
- color: error ? "danger" : innerProps.color,
5274
- ref,
5275
- size,
5276
- value,
5277
- onChange: handleChange,
5278
- disabled,
5279
- required,
5280
- placeholder: `${format} - ${format}`,
5281
- slotProps: {
5282
- input: { component: TextMaskAdapter7, ref: innerRef, format }
5283
- },
5284
- error,
5285
- className,
5286
- sx: {
5287
- ...sx,
5288
- // NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
5289
- fontFamily: "monospace"
4829
+ endDecorator: /* @__PURE__ */ import_react35.default.createElement(
4830
+ IconButton_default,
4831
+ {
4832
+ variant: "plain",
4833
+ onClick: handleCalendarToggle,
4834
+ "aria-label": "Toggle Calendar",
4835
+ "aria-controls": "month-range-picker-popper",
4836
+ "aria-haspopup": "dialog",
4837
+ "aria-expanded": open
5290
4838
  },
5291
- endDecorator: /* @__PURE__ */ import_react35.default.createElement(
5292
- IconButton_default,
5293
- {
5294
- variant: "plain",
5295
- onClick: handleCalendarToggle,
5296
- "aria-label": "Toggle Calendar",
5297
- "aria-controls": "month-range-picker-popper",
5298
- "aria-haspopup": "dialog",
5299
- "aria-expanded": open
5300
- },
5301
- /* @__PURE__ */ import_react35.default.createElement(import_CalendarToday4.default, null)
5302
- ),
5303
- label,
5304
- helperText
4839
+ /* @__PURE__ */ import_react35.default.createElement(import_CalendarToday4.default, null)
4840
+ ),
4841
+ label,
4842
+ helperText
4843
+ }
4844
+ ), open && /* @__PURE__ */ import_react35.default.createElement(import_base5.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react35.default.createElement(
4845
+ StyledPopper4,
4846
+ {
4847
+ id: "month-range-picker-popper",
4848
+ open: true,
4849
+ anchorEl,
4850
+ placement: "bottom-end",
4851
+ onMouseDown: (e) => e.preventDefault(),
4852
+ modifiers: [
4853
+ {
4854
+ name: "offset",
4855
+ options: {
4856
+ offset: [4, 4]
4857
+ }
4858
+ }
4859
+ ],
4860
+ "aria-label": "Calendar Tooltip",
4861
+ "aria-expanded": open
4862
+ },
4863
+ /* @__PURE__ */ import_react35.default.createElement(CalendarSheet4, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react35.default.createElement(
4864
+ Calendar_default,
4865
+ {
4866
+ view: "month",
4867
+ views: ["month"],
4868
+ rangeSelection: true,
4869
+ defaultValue: calendarValue,
4870
+ onChange: handleCalendarChange,
4871
+ minDate: minDate ? new Date(minDate) : void 0,
4872
+ maxDate: maxDate ? new Date(maxDate) : void 0,
4873
+ disableFuture,
4874
+ disablePast
5305
4875
  }
5306
- ), open && /* @__PURE__ */ import_react35.default.createElement(import_base5.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react35.default.createElement(
5307
- StyledPopper4,
4876
+ ), /* @__PURE__ */ import_react35.default.createElement(
4877
+ DialogActions_default,
5308
4878
  {
5309
- id: "month-range-picker-popper",
5310
- open: true,
5311
- anchorEl,
5312
- placement: "bottom-end",
5313
- onMouseDown: (e) => e.preventDefault(),
5314
- modifiers: [
5315
- {
5316
- name: "offset",
5317
- options: {
5318
- offset: [4, 4]
5319
- }
5320
- }
5321
- ],
5322
- "aria-label": "Calendar Tooltip",
5323
- "aria-expanded": open
5324
- },
5325
- /* @__PURE__ */ import_react35.default.createElement(CalendarSheet4, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react35.default.createElement(
5326
- Calendar_default,
5327
- {
5328
- view: "month",
5329
- views: ["month"],
5330
- rangeSelection: true,
5331
- defaultValue: calendarValue,
5332
- onChange: handleCalendarChange,
5333
- minDate: minDate ? new Date(minDate) : void 0,
5334
- maxDate: maxDate ? new Date(maxDate) : void 0,
5335
- disableFuture,
5336
- disablePast
4879
+ sx: {
4880
+ p: 1
5337
4881
  }
5338
- ), /* @__PURE__ */ import_react35.default.createElement(
5339
- DialogActions_default,
4882
+ },
4883
+ /* @__PURE__ */ import_react35.default.createElement(
4884
+ Button_default,
5340
4885
  {
5341
- sx: {
5342
- p: 1
4886
+ size,
4887
+ variant: "plain",
4888
+ color: "neutral",
4889
+ onClick: () => {
4890
+ setValue("");
4891
+ setAnchorEl(null);
5343
4892
  }
5344
4893
  },
5345
- /* @__PURE__ */ import_react35.default.createElement(
5346
- Button_default,
5347
- {
5348
- size,
5349
- variant: "plain",
5350
- color: "neutral",
5351
- onClick: () => {
5352
- setValue("");
5353
- setAnchorEl(null);
5354
- }
5355
- },
5356
- "Clear"
5357
- )
5358
- ))
5359
- )))));
5360
- }
5361
- );
4894
+ "Clear"
4895
+ )
4896
+ ))
4897
+ )))));
4898
+ });
5362
4899
  MonthRangePicker.displayName = "MonthRangePicker";
5363
4900
 
5364
4901
  // src/components/NavigationGroup/NavigationGroup.tsx
@@ -5480,115 +5017,112 @@ var padDecimal = (value, decimalScale) => {
5480
5017
  const [integer, decimal = ""] = `${value}`.split(".");
5481
5018
  return Number(`${integer}${decimal.padEnd(decimalScale, "0")}`);
5482
5019
  };
5483
- var TextMaskAdapter9 = import_react39.default.forwardRef(
5484
- function TextMaskAdapter10(props, ref) {
5485
- const { onChange, min, max, ...innerProps } = props;
5486
- return /* @__PURE__ */ import_react39.default.createElement(
5487
- import_react_number_format2.NumericFormat,
5488
- {
5489
- ...innerProps,
5490
- onValueChange: ({ value }) => {
5491
- onChange?.({
5492
- target: {
5493
- name: props.name,
5494
- value
5495
- }
5496
- });
5497
- },
5498
- valueIsNumericString: true,
5499
- thousandSeparator: true,
5500
- suffix: "%",
5501
- getInputRef: ref,
5502
- allowNegative: true
5503
- }
5504
- );
5505
- }
5506
- );
5020
+ var TextMaskAdapter9 = import_react39.default.forwardRef(function TextMaskAdapter10(props, ref) {
5021
+ const { onChange, min, max, ...innerProps } = props;
5022
+ return /* @__PURE__ */ import_react39.default.createElement(
5023
+ import_react_number_format2.NumericFormat,
5024
+ {
5025
+ ...innerProps,
5026
+ onValueChange: ({ value }) => {
5027
+ onChange?.({
5028
+ target: {
5029
+ name: props.name,
5030
+ value
5031
+ }
5032
+ });
5033
+ },
5034
+ valueIsNumericString: true,
5035
+ thousandSeparator: true,
5036
+ suffix: "%",
5037
+ getInputRef: ref,
5038
+ allowNegative: true
5039
+ }
5040
+ );
5041
+ });
5507
5042
  var PercentageInputRoot = (0, import_joy51.styled)(Input_default, {
5508
5043
  name: "PercentageInput",
5509
5044
  slot: "Root",
5510
5045
  overridesResolver: (props, styles) => styles.root
5511
5046
  })({});
5512
- var PercentageInput = import_react39.default.forwardRef(function PercentageInput2(inProps, ref) {
5513
- const props = (0, import_joy51.useThemeProps)({ props: inProps, name: "PercentageInput" });
5514
- const {
5515
- name,
5516
- onChange,
5517
- label,
5518
- error,
5519
- helperText,
5520
- required,
5521
- disabled,
5522
- useMinorUnit,
5523
- maxDecimalScale = 0,
5524
- min,
5525
- max,
5526
- // NOTE: 스타일 관련된 props는 최상위 엘리먼트에 적용한다.
5527
- sx,
5528
- className,
5529
- ...innerProps
5530
- } = props;
5531
- const [_value, setValue] = useControlledState(
5532
- props.value,
5533
- props.defaultValue,
5534
- (0, import_react39.useCallback)(
5535
- (value2) => onChange?.({ target: { name, value: value2 } }),
5536
- [onChange, name]
5537
- )
5538
- );
5539
- const [internalError, setInternalError] = (0, import_react39.useState)(
5540
- max && _value && _value > max || min && _value && _value < min
5541
- );
5542
- const value = (0, import_react39.useMemo)(() => {
5543
- if (_value && useMinorUnit) {
5544
- return _value / Math.pow(10, maxDecimalScale);
5545
- }
5546
- return _value;
5547
- }, [_value, useMinorUnit, maxDecimalScale]);
5548
- const handleChange = (0, import_react39.useCallback)(
5549
- (event) => {
5550
- if (event.target.value === "") {
5551
- setValue(void 0);
5552
- return;
5553
- }
5554
- const originalAmount = Number(event.target.value);
5555
- if (min && originalAmount < min || max && originalAmount > max) {
5556
- setInternalError(true);
5557
- } else {
5558
- setInternalError(false);
5559
- }
5560
- const amount = useMinorUnit ? padDecimal(originalAmount, maxDecimalScale) : originalAmount;
5561
- setValue(amount);
5562
- },
5563
- [setValue, useMinorUnit, maxDecimalScale, min, max]
5564
- );
5565
- return /* @__PURE__ */ import_react39.default.createElement(
5566
- PercentageInputRoot,
5567
- {
5568
- ...innerProps,
5569
- ref,
5570
- value,
5571
- onChange: handleChange,
5572
- error: internalError || error,
5573
- disabled,
5574
- required,
5575
- color: internalError || error ? "danger" : props.color,
5047
+ var PercentageInput = import_react39.default.forwardRef(
5048
+ function PercentageInput2(inProps, ref) {
5049
+ const props = (0, import_joy51.useThemeProps)({ props: inProps, name: "PercentageInput" });
5050
+ const {
5051
+ name,
5052
+ onChange,
5576
5053
  label,
5054
+ error,
5577
5055
  helperText,
5578
- slotProps: {
5579
- input: {
5580
- component: TextMaskAdapter9,
5581
- "aria-label": innerProps["aria-label"],
5582
- decimalScale: maxDecimalScale
5056
+ required,
5057
+ disabled,
5058
+ useMinorUnit,
5059
+ maxDecimalScale = 0,
5060
+ min,
5061
+ max,
5062
+ // NOTE: 스타일 관련된 props는 최상위 엘리먼트에 적용한다.
5063
+ sx,
5064
+ className,
5065
+ ...innerProps
5066
+ } = props;
5067
+ const [_value, setValue] = useControlledState(
5068
+ props.value,
5069
+ props.defaultValue,
5070
+ (0, import_react39.useCallback)((value2) => onChange?.({ target: { name, value: value2 } }), [onChange, name])
5071
+ );
5072
+ const [internalError, setInternalError] = (0, import_react39.useState)(
5073
+ max && _value && _value > max || min && _value && _value < min
5074
+ );
5075
+ const value = (0, import_react39.useMemo)(() => {
5076
+ if (_value && useMinorUnit) {
5077
+ return _value / Math.pow(10, maxDecimalScale);
5078
+ }
5079
+ return _value;
5080
+ }, [_value, useMinorUnit, maxDecimalScale]);
5081
+ const handleChange = (0, import_react39.useCallback)(
5082
+ (event) => {
5083
+ if (event.target.value === "") {
5084
+ setValue(void 0);
5085
+ return;
5583
5086
  }
5087
+ const originalAmount = Number(event.target.value);
5088
+ if (min && originalAmount < min || max && originalAmount > max) {
5089
+ setInternalError(true);
5090
+ } else {
5091
+ setInternalError(false);
5092
+ }
5093
+ const amount = useMinorUnit ? padDecimal(originalAmount, maxDecimalScale) : originalAmount;
5094
+ setValue(amount);
5584
5095
  },
5585
- sx: {
5586
- ...sx
5587
- },
5588
- className
5589
- }
5590
- );
5591
- });
5096
+ [setValue, useMinorUnit, maxDecimalScale, min, max]
5097
+ );
5098
+ return /* @__PURE__ */ import_react39.default.createElement(
5099
+ PercentageInputRoot,
5100
+ {
5101
+ ...innerProps,
5102
+ ref,
5103
+ value,
5104
+ onChange: handleChange,
5105
+ error: internalError || error,
5106
+ disabled,
5107
+ required,
5108
+ color: internalError || error ? "danger" : props.color,
5109
+ label,
5110
+ helperText,
5111
+ slotProps: {
5112
+ input: {
5113
+ component: TextMaskAdapter9,
5114
+ "aria-label": innerProps["aria-label"],
5115
+ decimalScale: maxDecimalScale
5116
+ }
5117
+ },
5118
+ sx: {
5119
+ ...sx
5120
+ },
5121
+ className
5122
+ }
5123
+ );
5124
+ }
5125
+ );
5592
5126
  PercentageInput.displayName = "PercentageInput";
5593
5127
 
5594
5128
  // src/components/Radio/Radio.tsx
@@ -6068,52 +5602,11 @@ var ClearIcon2 = (0, import_joy57.styled)(import_ClearRounded.default, {
6068
5602
  width: "18px",
6069
5603
  height: "18px"
6070
5604
  }));
6071
- var UNITS = [
6072
- "byte",
6073
- "kilobyte",
6074
- "megabyte",
6075
- "gigabyte",
6076
- "terabyte",
6077
- "petabyte"
6078
- ];
5605
+ var UNITS = ["byte", "kilobyte", "megabyte", "gigabyte", "terabyte", "petabyte"];
6079
5606
  var ALL_EXTENSIONS_BY_TYPE = {
6080
- "image/*": [
6081
- ".jpeg",
6082
- ".jpg",
6083
- ".png",
6084
- ".gif",
6085
- ".bmp",
6086
- ".tiff",
6087
- ".svg",
6088
- ".webp",
6089
- ".heic",
6090
- ".ico"
6091
- ],
6092
- "audio/*": [
6093
- ".mp3",
6094
- ".wav",
6095
- ".flac",
6096
- ".aac",
6097
- ".ogg",
6098
- ".m4a",
6099
- ".wma",
6100
- ".aiff",
6101
- ".alac",
6102
- ".midi",
6103
- ".mp4"
6104
- ],
6105
- "video/*": [
6106
- ".mp4",
6107
- ".avi",
6108
- ".mkv",
6109
- ".mov",
6110
- ".wmv",
6111
- ".flv",
6112
- ".webm",
6113
- ".mpeg",
6114
- ".3gp",
6115
- ".m4v"
6116
- ]
5607
+ "image/*": [".jpeg", ".jpg", ".png", ".gif", ".bmp", ".tiff", ".svg", ".webp", ".heic", ".ico"],
5608
+ "audio/*": [".mp3", ".wav", ".flac", ".aac", ".ogg", ".m4a", ".wma", ".aiff", ".alac", ".midi", ".mp4"],
5609
+ "video/*": [".mp4", ".avi", ".mkv", ".mov", ".wmv", ".flv", ".webm", ".mpeg", ".3gp", ".m4v"]
6117
5610
  };
6118
5611
  var getFileSize = (n) => {
6119
5612
  const i = n == 0 ? 0 : Math.floor(Math.log(n) / Math.log(1024));
@@ -6127,16 +5620,7 @@ var getFileSize = (n) => {
6127
5620
  };
6128
5621
  var Preview = (props) => {
6129
5622
  const { files, uploaded, onDelete } = props;
6130
- return /* @__PURE__ */ import_react45.default.createElement(PreviewRoot, { gap: 1 }, [...uploaded, ...files].map((file) => /* @__PURE__ */ import_react45.default.createElement(UploadCard, { key: file.name, size: "sm", color: "neutral" }, /* @__PURE__ */ import_react45.default.createElement(Stack_default, { direction: "row", alignItems: "center", gap: 2 }, /* @__PURE__ */ import_react45.default.createElement(UploadFileIcon, null), /* @__PURE__ */ import_react45.default.createElement(Stack_default, { flex: "1" }, /* @__PURE__ */ import_react45.default.createElement(Typography_default, { level: "body-sm", textColor: "common.black" }, file.name), !!file.size && /* @__PURE__ */ import_react45.default.createElement(
6131
- Typography_default,
6132
- {
6133
- level: "body-xs",
6134
- fontWeight: "300",
6135
- lineHeight: "1.33",
6136
- textColor: "text.tertiary"
6137
- },
6138
- getFileSize(file.size)
6139
- )), /* @__PURE__ */ import_react45.default.createElement(IconButton_default, { onClick: () => onDelete?.(file) }, /* @__PURE__ */ import_react45.default.createElement(ClearIcon2, null))))));
5623
+ return /* @__PURE__ */ import_react45.default.createElement(PreviewRoot, { gap: 1 }, [...uploaded, ...files].map((file) => /* @__PURE__ */ import_react45.default.createElement(UploadCard, { key: file.name, size: "sm", color: "neutral" }, /* @__PURE__ */ import_react45.default.createElement(Stack_default, { direction: "row", alignItems: "center", gap: 2 }, /* @__PURE__ */ import_react45.default.createElement(UploadFileIcon, null), /* @__PURE__ */ import_react45.default.createElement(Stack_default, { flex: "1" }, /* @__PURE__ */ import_react45.default.createElement(Typography_default, { level: "body-sm", textColor: "common.black" }, file.name), !!file.size && /* @__PURE__ */ import_react45.default.createElement(Typography_default, { level: "body-xs", fontWeight: "300", lineHeight: "1.33", textColor: "text.tertiary" }, getFileSize(file.size))), /* @__PURE__ */ import_react45.default.createElement(IconButton_default, { onClick: () => onDelete?.(file) }, /* @__PURE__ */ import_react45.default.createElement(ClearIcon2, null))))));
6140
5624
  };
6141
5625
  var UploaderRoot = (0, import_joy57.styled)(Stack_default, {
6142
5626
  name: "Uploader",
@@ -6148,31 +5632,27 @@ var FileDropZone = (0, import_joy57.styled)(Sheet_default, {
6148
5632
  name: "Uploader",
6149
5633
  slot: "dropZone",
6150
5634
  shouldForwardProp: (prop) => prop !== "error"
6151
- })(
6152
- ({ theme, state, error }) => ({
6153
- width: "100%",
6154
- display: "flex",
6155
- flexDirection: "column",
6156
- justifyContent: "center",
6157
- alignItems: "center",
6158
- padding: theme.spacing(5),
6159
- gap: theme.spacing(4),
6160
- cursor: "pointer",
6161
- backgroundColor: theme.palette.background.surface,
6162
- border: error ? `1px solid ${theme.palette.danger.outlinedBorder}` : state === "idle" ? `1px solid ${theme.palette.neutral.outlinedBorder}` : `1px solid ${theme.palette.primary.outlinedBorder}`
6163
- })
6164
- );
5635
+ })(({ theme, state, error }) => ({
5636
+ width: "100%",
5637
+ display: "flex",
5638
+ flexDirection: "column",
5639
+ justifyContent: "center",
5640
+ alignItems: "center",
5641
+ padding: theme.spacing(5),
5642
+ gap: theme.spacing(4),
5643
+ cursor: "pointer",
5644
+ backgroundColor: theme.palette.background.surface,
5645
+ border: error ? `1px solid ${theme.palette.danger.outlinedBorder}` : state === "idle" ? `1px solid ${theme.palette.neutral.outlinedBorder}` : `1px solid ${theme.palette.primary.outlinedBorder}`
5646
+ }));
6165
5647
  var UploaderIcon = (0, import_joy57.styled)(import_CloudUploadRounded.default, {
6166
5648
  name: "Uploader",
6167
5649
  slot: "iconContainer",
6168
5650
  shouldForwardProp: (prop) => prop !== "error"
6169
- })(
6170
- ({ theme, state, error }) => ({
6171
- color: error ? `rgba(${theme.vars.palette.danger.mainChannel} / 0.6)` : state === "over" ? `rgba(${theme.palette.primary.mainChannel} / 0.6)` : theme.palette.neutral.softActiveBg,
6172
- width: "32px",
6173
- height: "32px"
6174
- })
6175
- );
5651
+ })(({ theme, state, error }) => ({
5652
+ color: error ? `rgba(${theme.vars.palette.danger.mainChannel} / 0.6)` : state === "over" ? `rgba(${theme.palette.primary.mainChannel} / 0.6)` : theme.palette.neutral.softActiveBg,
5653
+ width: "32px",
5654
+ height: "32px"
5655
+ }));
6176
5656
  var Uploader = import_react45.default.memo(
6177
5657
  (props) => {
6178
5658
  const {
@@ -6192,14 +5672,9 @@ var Uploader = import_react45.default.memo(
6192
5672
  const inputRef = (0, import_react45.useRef)(null);
6193
5673
  const [errorText, setErrorText] = (0, import_react45.useState)();
6194
5674
  const [files, setFiles] = (0, import_react45.useState)([]);
6195
- const [uploaded, setUploaded] = (0, import_react45.useState)(
6196
- props.uploaded || []
6197
- );
5675
+ const [uploaded, setUploaded] = (0, import_react45.useState)(props.uploaded || []);
6198
5676
  const [previewState, setPreviewState] = (0, import_react45.useState)("idle");
6199
- const accepts = (0, import_react45.useMemo)(
6200
- () => accept.split(",").map((accept2) => accept2.trim()),
6201
- [accept]
6202
- );
5677
+ const accepts = (0, import_react45.useMemo)(() => accept.split(",").map((accept2) => accept2.trim()), [accept]);
6203
5678
  const parsedAccepts = (0, import_react45.useMemo)(
6204
5679
  () => accepts.flatMap((type) => {
6205
5680
  if (["image/*", "video/*", "audio/*"].includes(type)) {
@@ -6211,15 +5686,11 @@ var Uploader = import_react45.default.memo(
6211
5686
  );
6212
5687
  const helperText = (0, import_react45.useMemo)(() => {
6213
5688
  const [allAcceptedTypes, acceptedTypes] = [
6214
- accepts.filter(
6215
- (accept2) => ["image/*", "video/*", "audio/*"].includes(accept2)
6216
- ).map((accept2) => {
5689
+ accepts.filter((accept2) => ["image/*", "video/*", "audio/*"].includes(accept2)).map((accept2) => {
6217
5690
  const [type] = accept2.split("/");
6218
5691
  return type.toLowerCase();
6219
5692
  }),
6220
- accepts.filter(
6221
- (accept2) => !["image/*", "video/*", "audio/*"].includes(accept2)
6222
- ).map((accept2) => {
5693
+ accepts.filter((accept2) => !["image/*", "video/*", "audio/*"].includes(accept2)).map((accept2) => {
6223
5694
  const [extensionOrType, subType] = accept2.split("/");
6224
5695
  if (!subType) {
6225
5696
  return extensionOrType.toUpperCase().replace(".", "");
@@ -6236,16 +5707,11 @@ var Uploader = import_react45.default.memo(
6236
5707
  }
6237
5708
  helperTexts.push(`Maximum ${getFileSize(maxFileTotalSize)}`);
6238
5709
  if (maxCount) {
6239
- helperTexts.push(
6240
- `Up to ${maxCount} ${maxCount === 1 ? "file" : "files"}`
6241
- );
5710
+ helperTexts.push(`Up to ${maxCount} ${maxCount === 1 ? "file" : "files"}`);
6242
5711
  }
6243
5712
  return helperTexts.join(", ");
6244
5713
  }, [accepts, maxFileTotalSize, maxCount]);
6245
- const error = (0, import_react45.useMemo)(
6246
- () => !!errorText || props.error,
6247
- [props.error, errorText]
6248
- );
5714
+ const error = (0, import_react45.useMemo)(() => !!errorText || props.error, [props.error, errorText]);
6249
5715
  const showDropZone = (0, import_react45.useMemo)(
6250
5716
  () => !maxCount || maxCount && [...uploaded, ...files].length !== maxCount,
6251
5717
  [files, maxCount, uploaded]
@@ -6272,10 +5738,7 @@ var Uploader = import_react45.default.memo(
6272
5738
  }
6273
5739
  });
6274
5740
  }
6275
- const totalFileSize = [...files, ...uploads].reduce(
6276
- (acc, file) => acc + file.size,
6277
- 0
6278
- );
5741
+ const totalFileSize = [...files, ...uploads].reduce((acc, file) => acc + file.size, 0);
6279
5742
  if (totalFileSize > maxFileTotalSize) {
6280
5743
  throw new Error(`Total File size exceeded the maximum limit.`);
6281
5744
  }
@@ -6296,34 +5759,15 @@ var Uploader = import_react45.default.memo(
6296
5759
  setErrorText(err.message);
6297
5760
  }
6298
5761
  },
6299
- [
6300
- files,
6301
- uploaded,
6302
- maxCount,
6303
- parsedAccepts,
6304
- maxFileSize,
6305
- maxFileTotalSize,
6306
- name,
6307
- onChange
6308
- ]
5762
+ [files, uploaded, maxCount, parsedAccepts, maxFileSize, maxFileTotalSize, name, onChange]
6309
5763
  );
6310
5764
  (0, import_react45.useEffect)(() => {
6311
5765
  if (!dropZoneRef.current || disabled) {
6312
5766
  return;
6313
5767
  }
6314
5768
  let cleanup;
6315
- Promise.all([
6316
- esmFiles.combine,
6317
- esmFiles.adapter,
6318
- esmFiles.file,
6319
- esmFiles.preventUnhandled
6320
- ]).then(
6321
- ([
6322
- combineModule,
6323
- adapterModule,
6324
- fileModule,
6325
- preventUnhandledModule
6326
- ]) => {
5769
+ Promise.all([esmFiles.combine, esmFiles.adapter, esmFiles.file, esmFiles.preventUnhandled]).then(
5770
+ ([combineModule, adapterModule, fileModule, preventUnhandledModule]) => {
6327
5771
  const { combine } = combineModule;
6328
5772
  const { dropTargetForExternal, monitorForExternal } = adapterModule;
6329
5773
  const { containsFiles, getFiles } = fileModule;
@@ -6358,9 +5802,7 @@ var Uploader = import_react45.default.memo(
6358
5802
  (0, import_react45.useEffect)(() => {
6359
5803
  if (inputRef.current && minCount) {
6360
5804
  if (files.length < minCount) {
6361
- inputRef.current.setCustomValidity(
6362
- `At least ${minCount} files are required.`
6363
- );
5805
+ inputRef.current.setCustomValidity(`At least ${minCount} files are required.`);
6364
5806
  } else {
6365
5807
  inputRef.current.setCustomValidity("");
6366
5808
  }
@@ -6386,9 +5828,7 @@ var Uploader = import_react45.default.memo(
6386
5828
  return current.filter((file) => file !== deletedFile);
6387
5829
  });
6388
5830
  } else {
6389
- setUploaded(
6390
- (uploaded2) => uploaded2.filter((file) => file.id !== deletedFile.id)
6391
- );
5831
+ setUploaded((uploaded2) => uploaded2.filter((file) => file.id !== deletedFile.id));
6392
5832
  onDelete?.(deletedFile);
6393
5833
  }
6394
5834
  setErrorText(void 0);
@@ -6414,9 +5854,7 @@ var Uploader = import_react45.default.memo(
6414
5854
  required: !!minCount,
6415
5855
  onInvalid: (e) => {
6416
5856
  if (minCount && files.length < minCount) {
6417
- setErrorText(
6418
- `Please choose ${minCount} ${minCount === 1 ? "file" : "files"} to upload.`
6419
- );
5857
+ setErrorText(`Please choose ${minCount} ${minCount === 1 ? "file" : "files"} to upload.`);
6420
5858
  }
6421
5859
  },
6422
5860
  slotProps: {
@@ -6432,25 +5870,7 @@ var Uploader = import_react45.default.memo(
6432
5870
  }
6433
5871
  )
6434
5872
  );
6435
- return /* @__PURE__ */ import_react45.default.createElement(UploaderRoot, null, showDropZone && /* @__PURE__ */ import_react45.default.createElement(
6436
- FormControl_default,
6437
- {
6438
- size,
6439
- error: !!(error || errorText),
6440
- disabled,
6441
- required: !!minCount
6442
- },
6443
- label && /* @__PURE__ */ import_react45.default.createElement(FormLabel_default, null, label),
6444
- uploader,
6445
- /* @__PURE__ */ import_react45.default.createElement(FormHelperText_default, null, /* @__PURE__ */ import_react45.default.createElement(Stack_default, null, errorText && /* @__PURE__ */ import_react45.default.createElement("div", null, errorText), /* @__PURE__ */ import_react45.default.createElement("div", null, helperText)))
6446
- ), [...uploaded, ...files].length > 0 && /* @__PURE__ */ import_react45.default.createElement(
6447
- Preview,
6448
- {
6449
- files,
6450
- uploaded,
6451
- onDelete: handleDeleteFile
6452
- }
6453
- ));
5873
+ return /* @__PURE__ */ import_react45.default.createElement(UploaderRoot, null, showDropZone && /* @__PURE__ */ import_react45.default.createElement(FormControl_default, { size, error: !!(error || errorText), disabled, required: !!minCount }, label && /* @__PURE__ */ import_react45.default.createElement(FormLabel_default, null, label), uploader, /* @__PURE__ */ import_react45.default.createElement(FormHelperText_default, null, /* @__PURE__ */ import_react45.default.createElement(Stack_default, null, errorText && /* @__PURE__ */ import_react45.default.createElement("div", null, errorText), /* @__PURE__ */ import_react45.default.createElement("div", null, helperText)))), [...uploaded, ...files].length > 0 && /* @__PURE__ */ import_react45.default.createElement(Preview, { files, uploaded, onDelete: handleDeleteFile }));
6454
5874
  }
6455
5875
  );
6456
5876
  Uploader.displayName = "Uploader";