@ceed/cds 1.24.1-next.3 → 1.26.0

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 (65) hide show
  1. package/dist/chunks/rehype-accent-FZRUD7VI.js +39 -0
  2. package/dist/components/CurrencyInput/CurrencyInput.d.ts +1 -1
  3. package/dist/components/CurrencyInput/hooks/use-currency-setting.d.ts +2 -2
  4. package/dist/components/DataTable/components.d.ts +2 -1
  5. package/dist/components/DataTable/hooks.d.ts +1 -1
  6. package/dist/components/DataTable/styled.d.ts +3 -1
  7. package/dist/components/DataTable/types.d.ts +11 -0
  8. package/dist/components/DataTable/utils.d.ts +2 -2
  9. package/dist/components/RadioTileGroup/RadioTileGroup.d.ts +56 -0
  10. package/dist/components/RadioTileGroup/index.d.ts +3 -0
  11. package/dist/components/data-display/DataTable.md +177 -1
  12. package/dist/components/data-display/InfoSign.md +74 -91
  13. package/dist/components/data-display/Typography.md +411 -94
  14. package/dist/components/feedback/CircularProgress.md +257 -0
  15. package/dist/components/feedback/Dialog.md +76 -62
  16. package/dist/components/feedback/Modal.md +430 -138
  17. package/dist/components/feedback/Skeleton.md +280 -0
  18. package/dist/components/feedback/llms.txt +2 -0
  19. package/dist/components/index.d.ts +1 -0
  20. package/dist/components/inputs/Autocomplete.md +356 -107
  21. package/dist/components/inputs/ButtonGroup.md +115 -104
  22. package/dist/components/inputs/CurrencyInput.md +183 -5
  23. package/dist/components/inputs/DatePicker.md +108 -431
  24. package/dist/components/inputs/DateRangePicker.md +131 -492
  25. package/dist/components/inputs/FilterableCheckboxGroup.md +145 -19
  26. package/dist/components/inputs/FormControl.md +361 -0
  27. package/dist/components/inputs/IconButton.md +137 -88
  28. package/dist/components/inputs/Input.md +204 -73
  29. package/dist/components/inputs/MonthPicker.md +95 -422
  30. package/dist/components/inputs/MonthRangePicker.md +89 -466
  31. package/dist/components/inputs/PercentageInput.md +185 -16
  32. package/dist/components/inputs/RadioButton.md +163 -35
  33. package/dist/components/inputs/RadioList.md +241 -0
  34. package/dist/components/inputs/RadioTileGroup.md +507 -0
  35. package/dist/components/inputs/Select.md +222 -326
  36. package/dist/components/inputs/Slider.md +334 -0
  37. package/dist/components/inputs/Switch.md +143 -376
  38. package/dist/components/inputs/Textarea.md +213 -10
  39. package/dist/components/inputs/Uploader/Uploader.md +145 -66
  40. package/dist/components/inputs/llms.txt +4 -0
  41. package/dist/components/navigation/Breadcrumbs.md +57 -308
  42. package/dist/components/navigation/Drawer.md +180 -0
  43. package/dist/components/navigation/Dropdown.md +98 -215
  44. package/dist/components/navigation/IconMenuButton.md +40 -502
  45. package/dist/components/navigation/InsetDrawer.md +281 -650
  46. package/dist/components/navigation/Link.md +31 -348
  47. package/dist/components/navigation/Menu.md +92 -285
  48. package/dist/components/navigation/MenuButton.md +55 -448
  49. package/dist/components/navigation/Pagination.md +47 -338
  50. package/dist/components/navigation/Stepper.md +160 -28
  51. package/dist/components/navigation/Tabs.md +57 -316
  52. package/dist/components/surfaces/Accordions.md +49 -804
  53. package/dist/components/surfaces/Card.md +97 -157
  54. package/dist/components/surfaces/Divider.md +83 -234
  55. package/dist/components/surfaces/Sheet.md +153 -328
  56. package/dist/guides/ThemeProvider.md +89 -0
  57. package/dist/guides/llms.txt +9 -0
  58. package/dist/index.browser.js +224 -0
  59. package/dist/index.browser.js.map +7 -0
  60. package/dist/index.cjs +726 -425
  61. package/dist/index.d.ts +1 -1
  62. package/dist/index.js +641 -396
  63. package/dist/llms.txt +9 -0
  64. package/framer/index.js +1 -163
  65. package/package.json +22 -17
package/dist/index.cjs CHANGED
@@ -85,26 +85,26 @@ __export(index_exports, {
85
85
  AccordionSummary: () => AccordionSummary,
86
86
  Accordions: () => Accordions,
87
87
  Alert: () => Alert,
88
- AspectRatio: () => import_joy60.AspectRatio,
88
+ AspectRatio: () => import_joy61.AspectRatio,
89
89
  Autocomplete: () => Autocomplete,
90
- AutocompleteListbox: () => import_joy60.AutocompleteListbox,
91
- AutocompleteOption: () => import_joy60.AutocompleteOption,
90
+ AutocompleteListbox: () => import_joy61.AutocompleteListbox,
91
+ AutocompleteOption: () => import_joy61.AutocompleteOption,
92
92
  Avatar: () => Avatar,
93
93
  AvatarGroup: () => import_joy11.AvatarGroup,
94
- Badge: () => import_joy60.Badge,
94
+ Badge: () => import_joy61.Badge,
95
95
  Box: () => Box,
96
96
  Breadcrumbs: () => Breadcrumbs,
97
97
  Button: () => Button,
98
- ButtonGroup: () => import_joy60.ButtonGroup,
98
+ ButtonGroup: () => import_joy61.ButtonGroup,
99
99
  Calendar: () => Calendar,
100
- Card: () => import_joy60.Card,
101
- CardActions: () => import_joy60.CardActions,
102
- CardContent: () => import_joy60.CardContent,
103
- CardCover: () => import_joy60.CardCover,
104
- CardOverflow: () => import_joy60.CardOverflow,
100
+ Card: () => import_joy61.Card,
101
+ CardActions: () => import_joy61.CardActions,
102
+ CardContent: () => import_joy61.CardContent,
103
+ CardCover: () => import_joy61.CardCover,
104
+ CardOverflow: () => import_joy61.CardOverflow,
105
105
  Checkbox: () => Checkbox,
106
- Chip: () => import_joy60.Chip,
107
- CircularProgress: () => import_joy60.CircularProgress,
106
+ Chip: () => import_joy61.Chip,
107
+ CircularProgress: () => import_joy61.CircularProgress,
108
108
  Container: () => Container,
109
109
  CurrencyInput: () => CurrencyInput,
110
110
  DataTable: () => DataTable,
@@ -127,15 +127,15 @@ __export(index_exports, {
127
127
  InfoSign: () => InfoSign,
128
128
  Input: () => Input,
129
129
  InsetDrawer: () => InsetDrawer,
130
- LinearProgress: () => import_joy60.LinearProgress,
131
- Link: () => import_joy60.Link,
132
- List: () => import_joy60.List,
133
- ListDivider: () => import_joy60.ListDivider,
134
- ListItem: () => import_joy60.ListItem,
135
- ListItemButton: () => import_joy60.ListItemButton,
136
- ListItemContent: () => import_joy60.ListItemContent,
137
- ListItemDecorator: () => import_joy60.ListItemDecorator,
138
- ListSubheader: () => import_joy60.ListSubheader,
130
+ LinearProgress: () => import_joy61.LinearProgress,
131
+ Link: () => import_joy61.Link,
132
+ List: () => import_joy61.List,
133
+ ListDivider: () => import_joy61.ListDivider,
134
+ ListItem: () => import_joy61.ListItem,
135
+ ListItemButton: () => import_joy61.ListItemButton,
136
+ ListItemContent: () => import_joy61.ListItemContent,
137
+ ListItemDecorator: () => import_joy61.ListItemDecorator,
138
+ ListSubheader: () => import_joy61.ListSubheader,
139
139
  Markdown: () => Markdown,
140
140
  Menu: () => Menu,
141
141
  MenuButton: () => MenuButton,
@@ -156,13 +156,14 @@ __export(index_exports, {
156
156
  Radio: () => Radio,
157
157
  RadioGroup: () => RadioGroup,
158
158
  RadioList: () => RadioList,
159
+ RadioTileGroup: () => RadioTileGroup,
159
160
  Select: () => Select,
160
161
  Sheet: () => Sheet,
161
- Skeleton: () => import_joy60.Skeleton,
162
- Slider: () => import_joy60.Slider,
162
+ Skeleton: () => import_joy61.Skeleton,
163
+ Slider: () => import_joy61.Slider,
163
164
  Stack: () => import_joy3.Stack,
164
165
  Step: () => Step,
165
- StepButton: () => import_joy60.StepButton,
166
+ StepButton: () => import_joy61.StepButton,
166
167
  StepIndicator: () => StepIndicator,
167
168
  Stepper: () => Stepper,
168
169
  Switch: () => Switch,
@@ -178,84 +179,84 @@ __export(index_exports, {
178
179
  Tooltip: () => Tooltip,
179
180
  Typography: () => Typography,
180
181
  Uploader: () => Uploader,
181
- accordionClasses: () => import_joy60.accordionClasses,
182
- accordionDetailsClasses: () => import_joy60.accordionDetailsClasses,
183
- accordionSummaryClasses: () => import_joy60.accordionSummaryClasses,
184
- accordionsClasses: () => import_joy60.accordionGroupClasses,
185
- alertClasses: () => import_joy60.alertClasses,
186
- aspectRatioClasses: () => import_joy60.aspectRatioClasses,
187
- autocompleteClasses: () => import_joy60.autocompleteClasses,
188
- autocompleteListboxClasses: () => import_joy60.autocompleteListboxClasses,
189
- autocompleteOptionClasses: () => import_joy60.autocompleteOptionClasses,
190
- avatarClasses: () => import_joy60.avatarClasses,
191
- avatarGroupClasses: () => import_joy60.avatarGroupClasses,
192
- badgeClasses: () => import_joy60.badgeClasses,
193
- boxClasses: () => import_joy60.boxClasses,
194
- breadcrumbsClasses: () => import_joy60.breadcrumbsClasses,
195
- buttonClasses: () => import_joy60.buttonClasses,
196
- cardActionsClasses: () => import_joy60.cardActionsClasses,
197
- cardClasses: () => import_joy60.cardClasses,
198
- cardContentClasses: () => import_joy60.cardContentClasses,
199
- cardCoverClasses: () => import_joy60.cardCoverClasses,
200
- cardOverflowClasses: () => import_joy60.cardOverflowClasses,
201
- checkboxClasses: () => import_joy60.checkboxClasses,
202
- chipClasses: () => import_joy60.chipClasses,
203
- circularProgressClasses: () => import_joy60.circularProgressClasses,
204
- dialogActionsClasses: () => import_joy60.dialogActionsClasses,
205
- dialogContentClasses: () => import_joy60.dialogContentClasses,
206
- dialogTitleClasses: () => import_joy60.dialogTitleClasses,
207
- dividerClasses: () => import_joy60.dividerClasses,
208
- drawerClasses: () => import_joy60.drawerClasses,
209
- extendTheme: () => import_joy58.extendTheme,
210
- formControlClasses: () => import_joy60.formControlClasses,
211
- formHelperTextClasses: () => import_joy60.formHelperTextClasses,
212
- formLabelClasses: () => import_joy60.formLabelClasses,
213
- gridClasses: () => import_joy60.gridClasses,
214
- iconButtonClasses: () => import_joy60.iconButtonClasses,
215
- inputClasses: () => import_joy60.inputClasses,
216
- linearProgressClasses: () => import_joy60.linearProgressClasses,
217
- linkClasses: () => import_joy60.linkClasses,
218
- listClasses: () => import_joy60.listClasses,
219
- listDividerClasses: () => import_joy60.listDividerClasses,
220
- listItemButtonClasses: () => import_joy60.listItemButtonClasses,
221
- listItemClasses: () => import_joy60.listItemClasses,
222
- listItemContentClasses: () => import_joy60.listItemContentClasses,
223
- listItemDecoratorClasses: () => import_joy60.listItemDecoratorClasses,
224
- listSubheaderClasses: () => import_joy60.listSubheaderClasses,
225
- menuButtonClasses: () => import_joy60.menuButtonClasses,
226
- menuClasses: () => import_joy60.menuClasses,
227
- menuItemClasses: () => import_joy60.menuItemClasses,
228
- modalClasses: () => import_joy60.modalClasses,
229
- modalCloseClasses: () => import_joy60.modalCloseClasses,
230
- modalDialogClasses: () => import_joy60.modalDialogClasses,
231
- modalOverflowClasses: () => import_joy60.modalOverflowClasses,
232
- optionClasses: () => import_joy60.optionClasses,
233
- radioClasses: () => import_joy60.radioClasses,
234
- radioGroupClasses: () => import_joy60.radioGroupClasses,
235
- selectClasses: () => import_joy60.selectClasses,
236
- sheetClasses: () => import_joy60.sheetClasses,
237
- skeletonClasses: () => import_joy60.skeletonClasses,
238
- sliderClasses: () => import_joy60.sliderClasses,
239
- stackClasses: () => import_joy60.stackClasses,
240
- stepButtonClasses: () => import_joy60.stepButtonClasses,
241
- stepClasses: () => import_joy60.stepClasses,
242
- stepperClasses: () => import_joy60.stepperClasses,
243
- styled: () => import_joy60.styled,
244
- switchClasses: () => import_joy60.switchClasses,
245
- tabListClasses: () => import_joy60.tabListClasses,
246
- tabPanelClasses: () => import_joy60.tabPanelClasses,
247
- tableClasses: () => import_joy60.tableClasses,
248
- tabsClasses: () => import_joy60.tabsClasses,
249
- textareaClasses: () => import_joy60.textareaClasses,
182
+ accordionClasses: () => import_joy61.accordionClasses,
183
+ accordionDetailsClasses: () => import_joy61.accordionDetailsClasses,
184
+ accordionSummaryClasses: () => import_joy61.accordionSummaryClasses,
185
+ accordionsClasses: () => import_joy61.accordionGroupClasses,
186
+ alertClasses: () => import_joy61.alertClasses,
187
+ aspectRatioClasses: () => import_joy61.aspectRatioClasses,
188
+ autocompleteClasses: () => import_joy61.autocompleteClasses,
189
+ autocompleteListboxClasses: () => import_joy61.autocompleteListboxClasses,
190
+ autocompleteOptionClasses: () => import_joy61.autocompleteOptionClasses,
191
+ avatarClasses: () => import_joy61.avatarClasses,
192
+ avatarGroupClasses: () => import_joy61.avatarGroupClasses,
193
+ badgeClasses: () => import_joy61.badgeClasses,
194
+ boxClasses: () => import_joy61.boxClasses,
195
+ breadcrumbsClasses: () => import_joy61.breadcrumbsClasses,
196
+ buttonClasses: () => import_joy61.buttonClasses,
197
+ cardActionsClasses: () => import_joy61.cardActionsClasses,
198
+ cardClasses: () => import_joy61.cardClasses,
199
+ cardContentClasses: () => import_joy61.cardContentClasses,
200
+ cardCoverClasses: () => import_joy61.cardCoverClasses,
201
+ cardOverflowClasses: () => import_joy61.cardOverflowClasses,
202
+ checkboxClasses: () => import_joy61.checkboxClasses,
203
+ chipClasses: () => import_joy61.chipClasses,
204
+ circularProgressClasses: () => import_joy61.circularProgressClasses,
205
+ dialogActionsClasses: () => import_joy61.dialogActionsClasses,
206
+ dialogContentClasses: () => import_joy61.dialogContentClasses,
207
+ dialogTitleClasses: () => import_joy61.dialogTitleClasses,
208
+ dividerClasses: () => import_joy61.dividerClasses,
209
+ drawerClasses: () => import_joy61.drawerClasses,
210
+ extendTheme: () => import_joy59.extendTheme,
211
+ formControlClasses: () => import_joy61.formControlClasses,
212
+ formHelperTextClasses: () => import_joy61.formHelperTextClasses,
213
+ formLabelClasses: () => import_joy61.formLabelClasses,
214
+ gridClasses: () => import_joy61.gridClasses,
215
+ iconButtonClasses: () => import_joy61.iconButtonClasses,
216
+ inputClasses: () => import_joy61.inputClasses,
217
+ linearProgressClasses: () => import_joy61.linearProgressClasses,
218
+ linkClasses: () => import_joy61.linkClasses,
219
+ listClasses: () => import_joy61.listClasses,
220
+ listDividerClasses: () => import_joy61.listDividerClasses,
221
+ listItemButtonClasses: () => import_joy61.listItemButtonClasses,
222
+ listItemClasses: () => import_joy61.listItemClasses,
223
+ listItemContentClasses: () => import_joy61.listItemContentClasses,
224
+ listItemDecoratorClasses: () => import_joy61.listItemDecoratorClasses,
225
+ listSubheaderClasses: () => import_joy61.listSubheaderClasses,
226
+ menuButtonClasses: () => import_joy61.menuButtonClasses,
227
+ menuClasses: () => import_joy61.menuClasses,
228
+ menuItemClasses: () => import_joy61.menuItemClasses,
229
+ modalClasses: () => import_joy61.modalClasses,
230
+ modalCloseClasses: () => import_joy61.modalCloseClasses,
231
+ modalDialogClasses: () => import_joy61.modalDialogClasses,
232
+ modalOverflowClasses: () => import_joy61.modalOverflowClasses,
233
+ optionClasses: () => import_joy61.optionClasses,
234
+ radioClasses: () => import_joy61.radioClasses,
235
+ radioGroupClasses: () => import_joy61.radioGroupClasses,
236
+ selectClasses: () => import_joy61.selectClasses,
237
+ sheetClasses: () => import_joy61.sheetClasses,
238
+ skeletonClasses: () => import_joy61.skeletonClasses,
239
+ sliderClasses: () => import_joy61.sliderClasses,
240
+ stackClasses: () => import_joy61.stackClasses,
241
+ stepButtonClasses: () => import_joy61.stepButtonClasses,
242
+ stepClasses: () => import_joy61.stepClasses,
243
+ stepperClasses: () => import_joy61.stepperClasses,
244
+ styled: () => import_joy61.styled,
245
+ switchClasses: () => import_joy61.switchClasses,
246
+ tabListClasses: () => import_joy61.tabListClasses,
247
+ tabPanelClasses: () => import_joy61.tabPanelClasses,
248
+ tableClasses: () => import_joy61.tableClasses,
249
+ tabsClasses: () => import_joy61.tabsClasses,
250
+ textareaClasses: () => import_joy61.textareaClasses,
250
251
  theme: () => defaultTheme,
251
- tooltipClasses: () => import_joy60.tooltipClasses,
252
- typographyClasses: () => import_joy60.typographyClasses,
253
- useColorScheme: () => import_joy60.useColorScheme,
254
- useTheme: () => import_joy60.useTheme,
255
- useThemeProps: () => import_joy60.useThemeProps
252
+ tooltipClasses: () => import_joy61.tooltipClasses,
253
+ typographyClasses: () => import_joy61.typographyClasses,
254
+ useColorScheme: () => import_joy61.useColorScheme,
255
+ useTheme: () => import_joy61.useTheme,
256
+ useThemeProps: () => import_joy61.useThemeProps
256
257
  });
257
258
  module.exports = __toCommonJS(index_exports);
258
- var import_joy60 = require("@mui/joy");
259
+ var import_joy61 = require("@mui/joy");
259
260
 
260
261
  // src/components/Accordions/Accordions.tsx
261
262
  var import_react = __toESM(require("react"));
@@ -842,11 +843,24 @@ Button.displayName = "Button";
842
843
  var Button_default = Button;
843
844
 
844
845
  // src/components/Calendar/Calendar.tsx
845
- var import_react13 = __toESM(require("react"));
846
- var import_joy18 = require("@mui/joy");
846
+ var import_react14 = __toESM(require("react"));
847
+ var import_joy19 = require("@mui/joy");
847
848
  var import_ChevronLeft = __toESM(require("@mui/icons-material/ChevronLeft"));
848
849
  var import_ChevronRight = __toESM(require("@mui/icons-material/ChevronRight"));
850
+ var import_framer_motion13 = require("framer-motion");
851
+
852
+ // src/components/Tooltip/Tooltip.tsx
853
+ var import_react11 = __toESM(require("react"));
854
+ var import_joy17 = require("@mui/joy");
849
855
  var import_framer_motion12 = require("framer-motion");
856
+ var MotionTooltip = (0, import_framer_motion12.motion)(import_joy17.Tooltip);
857
+ var Tooltip = (props) => {
858
+ return /* @__PURE__ */ import_react11.default.createElement(MotionTooltip, { ...props });
859
+ };
860
+ Tooltip.displayName = "Tooltip";
861
+
862
+ // src/components/Tooltip/index.ts
863
+ var Tooltip_default = Tooltip;
850
864
 
851
865
  // src/components/Calendar/utils/index.ts
852
866
  var getCalendarDates = (date) => {
@@ -920,43 +934,43 @@ var isSameMonth = (date1, date2) => {
920
934
  };
921
935
 
922
936
  // src/components/Calendar/hooks/use-calendar-props.ts
923
- var import_react11 = require("react");
924
- var import_joy17 = require("@mui/joy");
937
+ var import_react12 = require("react");
938
+ var import_joy18 = require("@mui/joy");
925
939
  var resolveView = (view, views) => {
926
940
  return views.includes(view) ? view : views[0];
927
941
  };
928
942
  var useCalendarProps = (inProps) => {
929
- const [uncontrolledView, setUncontrolledView] = (0, import_react11.useState)(
943
+ const [uncontrolledView, setUncontrolledView] = (0, import_react12.useState)(
930
944
  () => resolveView(inProps.view || "day", inProps.views || ["day", "month"])
931
945
  );
932
- const [uncontrolledValue, setUncontrolledValue] = (0, import_react11.useState)(
946
+ const [uncontrolledValue, setUncontrolledValue] = (0, import_react12.useState)(
933
947
  inProps.defaultValue
934
948
  );
935
- const [viewMonth, setViewMonth] = (0, import_react11.useState)(() => {
949
+ const [viewMonth, setViewMonth] = (0, import_react12.useState)(() => {
936
950
  const today = /* @__PURE__ */ new Date();
937
951
  today.setDate(1);
938
952
  today.setHours(0, 0, 0, 0);
939
953
  return inProps.value?.[0] || inProps.defaultValue?.[0] || today;
940
954
  });
941
- const [[page, direction], setPage] = (0, import_react11.useState)([0, 0]);
955
+ const [[page, direction], setPage] = (0, import_react12.useState)([0, 0]);
942
956
  const resolvedView = inProps.view ?? uncontrolledView;
943
- const resolvedMinDate = (0, import_react11.useMemo)(() => {
957
+ const resolvedMinDate = (0, import_react12.useMemo)(() => {
944
958
  const minDate = inProps.minDate || /* @__PURE__ */ new Date(0);
945
959
  minDate.setHours(0, 0, 0, 0);
946
960
  return minDate;
947
961
  }, [inProps.minDate]);
948
- const resolvedMaxDate = (0, import_react11.useMemo)(() => {
962
+ const resolvedMaxDate = (0, import_react12.useMemo)(() => {
949
963
  const maxDate = inProps.maxDate || /* @__PURE__ */ new Date(864e13);
950
964
  maxDate.setHours(0, 0, 0, 0);
951
965
  return maxDate;
952
966
  }, [inProps.maxDate]);
953
- const paginate = (0, import_react11.useCallback)(
967
+ const paginate = (0, import_react12.useCallback)(
954
968
  (newDirection) => {
955
969
  setPage([page + newDirection, newDirection]);
956
970
  },
957
971
  [page]
958
972
  );
959
- const handleViewMonthChange = (0, import_react11.useCallback)(
973
+ const handleViewMonthChange = (0, import_react12.useCallback)(
960
974
  (newMonth) => {
961
975
  setViewMonth(newMonth);
962
976
  if (resolvedView === "month") {
@@ -970,7 +984,7 @@ var useCalendarProps = (inProps) => {
970
984
  },
971
985
  [resolvedView, inProps, viewMonth, paginate]
972
986
  );
973
- const props = (0, import_joy17.useThemeProps)({
987
+ const props = (0, import_joy18.useThemeProps)({
974
988
  props: {
975
989
  locale: "default",
976
990
  views: ["day", "month"],
@@ -1004,18 +1018,18 @@ var useCalendarProps = (inProps) => {
1004
1018
  },
1005
1019
  name: "Calendar"
1006
1020
  });
1007
- const ownerState = (0, import_react11.useMemo)(() => ({ ...props, viewMonth, direction }), [props, viewMonth, direction]);
1021
+ const ownerState = (0, import_react12.useMemo)(() => ({ ...props, viewMonth, direction }), [props, viewMonth, direction]);
1008
1022
  return [props, ownerState];
1009
1023
  };
1010
1024
 
1011
1025
  // src/components/Calendar/hooks/use-calendar.ts
1012
- var import_react12 = require("react");
1026
+ var import_react13 = require("react");
1013
1027
  var useCalendar = (ownerState) => {
1014
- const [hoverDay, setHoverDay] = (0, import_react12.useState)(null);
1015
- const [hoverMonth, setHoverMonth] = (0, import_react12.useState)(null);
1028
+ const [hoverDay, setHoverDay] = (0, import_react13.useState)(null);
1029
+ const [hoverMonth, setHoverMonth] = (0, import_react13.useState)(null);
1016
1030
  return {
1017
1031
  calendarTitle: ownerState.view === "month" ? getYearName(ownerState.viewMonth, ownerState.locale || "default") : getMonthName(ownerState.viewMonth, ownerState.locale || "default"),
1018
- onPrev: (0, import_react12.useCallback)(() => {
1032
+ onPrev: (0, import_react13.useCallback)(() => {
1019
1033
  if (ownerState.view === "day") {
1020
1034
  const currentDate = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
1021
1035
  const currentYear = currentDate.getFullYear();
@@ -1032,7 +1046,7 @@ var useCalendar = (ownerState) => {
1032
1046
  ownerState.onMonthChange?.(prevYear);
1033
1047
  }
1034
1048
  }, [ownerState.onMonthChange, ownerState.viewMonth, ownerState.view]),
1035
- onNext: (0, import_react12.useCallback)(() => {
1049
+ onNext: (0, import_react13.useCallback)(() => {
1036
1050
  if (ownerState.view === "day") {
1037
1051
  const currentDate = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
1038
1052
  const currentYear = currentDate.getFullYear();
@@ -1049,7 +1063,7 @@ var useCalendar = (ownerState) => {
1049
1063
  ownerState.onMonthChange?.(nextYear);
1050
1064
  }
1051
1065
  }, [ownerState.onMonthChange, ownerState.viewMonth, ownerState.view]),
1052
- getDayCellProps: (0, import_react12.useCallback)(
1066
+ getDayCellProps: (0, import_react13.useCallback)(
1053
1067
  (day) => {
1054
1068
  const thisDay = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
1055
1069
  thisDay.setHours(0, 0, 0, 0);
@@ -1064,7 +1078,7 @@ var useCalendar = (ownerState) => {
1064
1078
  },
1065
1079
  [ownerState.rangeSelection, ownerState.value, ownerState.viewMonth, hoverDay]
1066
1080
  ),
1067
- getMonthCellProps: (0, import_react12.useCallback)(
1081
+ getMonthCellProps: (0, import_react13.useCallback)(
1068
1082
  (monthIndex) => {
1069
1083
  const thisMonth = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
1070
1084
  thisMonth.setDate(1);
@@ -1081,7 +1095,7 @@ var useCalendar = (ownerState) => {
1081
1095
  },
1082
1096
  [ownerState.rangeSelection, ownerState.value, ownerState.viewMonth, hoverMonth]
1083
1097
  ),
1084
- getPickerDayProps: (0, import_react12.useCallback)(
1098
+ getPickerDayProps: (0, import_react13.useCallback)(
1085
1099
  (day) => {
1086
1100
  const thisDay = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
1087
1101
  thisDay.setHours(0, 0, 0, 0);
@@ -1135,7 +1149,7 @@ var useCalendar = (ownerState) => {
1135
1149
  hoverDay
1136
1150
  ]
1137
1151
  ),
1138
- getPickerMonthProps: (0, import_react12.useCallback)(
1152
+ getPickerMonthProps: (0, import_react13.useCallback)(
1139
1153
  (monthIndex) => {
1140
1154
  const thisMonth = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
1141
1155
  thisMonth.setDate(1);
@@ -1205,13 +1219,19 @@ var useCalendar = (ownerState) => {
1205
1219
  };
1206
1220
 
1207
1221
  // src/components/Calendar/Calendar.tsx
1208
- var CalendarRoot = (0, import_joy18.styled)("div", {
1222
+ var MONTH_VIEW_HINT_MESSAGE = "Click the month title to view all months.";
1223
+ var MONTH_NAV_CLICK_WINDOW_MS = 1200;
1224
+ var MONTH_NAV_CLICK_THRESHOLD = 3;
1225
+ var MONTH_VIEW_HINT_DURATION_MS = 5e3;
1226
+ var MONTH_VIEW_HINT_COOLDOWN_MS = 3e4;
1227
+ var lastMonthViewAssistHintShownAt = 0;
1228
+ var CalendarRoot = (0, import_joy19.styled)("div", {
1209
1229
  name: "Calendar",
1210
1230
  slot: "root"
1211
1231
  })({
1212
1232
  maxWidth: "264px"
1213
1233
  });
1214
- var CalendarHeader = (0, import_joy18.styled)("div", {
1234
+ var CalendarHeader = (0, import_joy19.styled)("div", {
1215
1235
  name: "Calendar",
1216
1236
  slot: "calendarHeader"
1217
1237
  })(({ theme }) => ({
@@ -1220,7 +1240,7 @@ var CalendarHeader = (0, import_joy18.styled)("div", {
1220
1240
  alignItems: "center",
1221
1241
  padding: theme.spacing(2)
1222
1242
  }));
1223
- var CalendarViewContainer = (0, import_joy18.styled)("div", {
1243
+ var CalendarViewContainer = (0, import_joy19.styled)("div", {
1224
1244
  name: "Calendar",
1225
1245
  slot: "viewContainer",
1226
1246
  shouldForwardProp: (prop) => prop !== "calendarType"
@@ -1231,7 +1251,7 @@ var CalendarViewContainer = (0, import_joy18.styled)("div", {
1231
1251
  overflow: "hidden",
1232
1252
  minHeight: calendarType === "datePicker" ? "250px" : "unset"
1233
1253
  }));
1234
- var CalendarViewTable = (0, import_joy18.styled)(import_framer_motion12.motion.table, {
1254
+ var CalendarViewTable = (0, import_joy19.styled)(import_framer_motion13.motion.table, {
1235
1255
  name: "Calendar",
1236
1256
  slot: "viewTable"
1237
1257
  })(({ theme }) => ({
@@ -1244,15 +1264,15 @@ var CalendarViewTable = (0, import_joy18.styled)(import_framer_motion12.motion.t
1244
1264
  paddingBottom: theme.spacing(2)
1245
1265
  }
1246
1266
  }));
1247
- var CalendarWeekHeaderContainer = (0, import_joy18.styled)("thead", {
1267
+ var CalendarWeekHeaderContainer = (0, import_joy19.styled)("thead", {
1248
1268
  name: "Calendar",
1249
1269
  slot: "weekHeaderContainer"
1250
1270
  })({});
1251
- var CalendarDayPickerContainer = (0, import_joy18.styled)("tbody", {
1271
+ var CalendarDayPickerContainer = (0, import_joy19.styled)("tbody", {
1252
1272
  name: "Calendar",
1253
1273
  slot: "dayPickerContainer"
1254
1274
  })({});
1255
- var CalendarSwitchViewButton = (0, import_joy18.styled)(Button_default, {
1275
+ var CalendarSwitchViewButton = (0, import_joy19.styled)(Button_default, {
1256
1276
  name: "Calendar",
1257
1277
  slot: "switchViewButton"
1258
1278
  })(({ ownerState }) => [
@@ -1260,7 +1280,7 @@ var CalendarSwitchViewButton = (0, import_joy18.styled)(Button_default, {
1260
1280
  pointerEvents: "none"
1261
1281
  }
1262
1282
  ]);
1263
- var CalendarDayCell = (0, import_joy18.styled)("td", {
1283
+ var CalendarDayCell = (0, import_joy19.styled)("td", {
1264
1284
  name: "Calendar",
1265
1285
  slot: "dayCell"
1266
1286
  })(({ theme }) => ({
@@ -1282,7 +1302,7 @@ var CalendarDayCell = (0, import_joy18.styled)("td", {
1282
1302
  }
1283
1303
  }
1284
1304
  }));
1285
- var CalendarMonthCell = (0, import_joy18.styled)("td", {
1305
+ var CalendarMonthCell = (0, import_joy19.styled)("td", {
1286
1306
  name: "Calendar",
1287
1307
  slot: "monthCell"
1288
1308
  })(({ theme }) => ({
@@ -1304,7 +1324,7 @@ var CalendarMonthCell = (0, import_joy18.styled)("td", {
1304
1324
  }
1305
1325
  }
1306
1326
  }));
1307
- var CalendarMonth = (0, import_joy18.styled)(Button_default, {
1327
+ var CalendarMonth = (0, import_joy19.styled)(Button_default, {
1308
1328
  name: "Calendar",
1309
1329
  slot: "month",
1310
1330
  shouldForwardProp: (prop) => prop !== "isSelected"
@@ -1339,7 +1359,7 @@ var CalendarMonth = (0, import_joy18.styled)(Button_default, {
1339
1359
  backgroundColor: theme.palette.neutral.solidDisabledBg
1340
1360
  }
1341
1361
  ]);
1342
- var CalendarDay = (0, import_joy18.styled)(Button_default, {
1362
+ var CalendarDay = (0, import_joy19.styled)(Button_default, {
1343
1363
  name: "Calendar",
1344
1364
  slot: "day",
1345
1365
  shouldForwardProp: (prop) => !["isToday", "isSelected"].includes(prop)
@@ -1409,9 +1429,9 @@ var swipePower = (offset, velocity) => {
1409
1429
  var PickerDays = (props) => {
1410
1430
  const { ownerState } = props;
1411
1431
  const { getPickerDayProps, getDayCellProps } = useCalendar(ownerState);
1412
- const calendarDates = (0, import_react13.useMemo)(() => getCalendarDates(ownerState.viewMonth), [ownerState.viewMonth]);
1413
- const weekdayNames = (0, import_react13.useMemo)(() => getWeekdayNames(ownerState.locale || "default"), [ownerState.locale]);
1414
- 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(
1432
+ const calendarDates = (0, import_react14.useMemo)(() => getCalendarDates(ownerState.viewMonth), [ownerState.viewMonth]);
1433
+ const weekdayNames = (0, import_react14.useMemo)(() => getWeekdayNames(ownerState.locale || "default"), [ownerState.locale]);
1434
+ return /* @__PURE__ */ import_react14.default.createElement(CalendarViewContainer, { calendarType: "datePicker" }, /* @__PURE__ */ import_react14.default.createElement(import_framer_motion13.AnimatePresence, { initial: false, custom: ownerState.direction }, /* @__PURE__ */ import_react14.default.createElement(
1415
1435
  CalendarViewTable,
1416
1436
  {
1417
1437
  key: `${ownerState.viewMonth.toString()}_${ownerState.direction}`,
@@ -1440,10 +1460,10 @@ var PickerDays = (props) => {
1440
1460
  }
1441
1461
  }
1442
1462
  },
1443
- /* @__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" }))))),
1444
- /* @__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(
1445
- (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" }))
1446
- )), 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 } })))))
1463
+ /* @__PURE__ */ import_react14.default.createElement(CalendarWeekHeaderContainer, null, /* @__PURE__ */ import_react14.default.createElement("tr", null, weekdayNames.map((name, i) => /* @__PURE__ */ import_react14.default.createElement(import_react14.Fragment, { key: `${ownerState.viewMonth}_${name}_${i}` }, /* @__PURE__ */ import_react14.default.createElement("th", null, /* @__PURE__ */ import_react14.default.createElement(Typography_default, { level: "body-xs", textAlign: "center" }, name)), i < 6 && /* @__PURE__ */ import_react14.default.createElement("th", { style: { width: 4 }, "aria-hidden": "true", "aria-description": "cell-gap" }))))),
1464
+ /* @__PURE__ */ import_react14.default.createElement(CalendarDayPickerContainer, null, calendarDates.map((weekDates, rowIndex) => /* @__PURE__ */ import_react14.default.createElement(import_react14.Fragment, { key: `${ownerState.viewMonth}_${rowIndex}` }, /* @__PURE__ */ import_react14.default.createElement("tr", null, weekDates.map(
1465
+ (date, i) => date ? /* @__PURE__ */ import_react14.default.createElement(import_react14.Fragment, { key: `${ownerState.viewMonth}_${date}_${i}` }, /* @__PURE__ */ import_react14.default.createElement(CalendarDayCell, { ...getDayCellProps(date) }, /* @__PURE__ */ import_react14.default.createElement(CalendarDay, { size: "sm", variant: "plain", color: "neutral", ...getPickerDayProps(date) }, date)), i < 6 && /* @__PURE__ */ import_react14.default.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" })) : /* @__PURE__ */ import_react14.default.createElement(import_react14.Fragment, { key: `${ownerState.viewMonth}_${i}` }, /* @__PURE__ */ import_react14.default.createElement("td", null), i < 6 && /* @__PURE__ */ import_react14.default.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" }))
1466
+ )), rowIndex < calendarDates.length - 1 && /* @__PURE__ */ import_react14.default.createElement("tr", { "aria-hidden": "true", "aria-description": "row-gap" }, /* @__PURE__ */ import_react14.default.createElement("td", { colSpan: 13, style: { height: 4 } })))))
1447
1467
  )));
1448
1468
  };
1449
1469
  var PickerMonths = (props) => {
@@ -1460,7 +1480,7 @@ var PickerMonths = (props) => {
1460
1480
  [[]]
1461
1481
  );
1462
1482
  const isMonthPicker = !ownerState.views?.find((view) => view === "day");
1463
- 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(
1483
+ return /* @__PURE__ */ import_react14.default.createElement(CalendarViewContainer, { calendarType: isMonthPicker ? "monthPicker" : "datePicker" }, /* @__PURE__ */ import_react14.default.createElement(import_framer_motion13.AnimatePresence, { initial: false, custom: ownerState.direction }, /* @__PURE__ */ import_react14.default.createElement(
1464
1484
  CalendarViewTable,
1465
1485
  {
1466
1486
  key: `${ownerState.viewMonth.getFullYear()}_${ownerState.direction}`,
@@ -1489,10 +1509,10 @@ var PickerMonths = (props) => {
1489
1509
  }
1490
1510
  }
1491
1511
  },
1492
- /* @__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 } })))))
1512
+ /* @__PURE__ */ import_react14.default.createElement("tbody", null, chunkedMonths.map((months, i) => /* @__PURE__ */ import_react14.default.createElement(import_react14.Fragment, { key: months.join("_") }, /* @__PURE__ */ import_react14.default.createElement("tr", null, months.map((monthIndex, j) => /* @__PURE__ */ import_react14.default.createElement(import_react14.Fragment, { key: monthIndex }, /* @__PURE__ */ import_react14.default.createElement(CalendarMonthCell, { ...getMonthCellProps(monthIndex) }, /* @__PURE__ */ import_react14.default.createElement(CalendarMonth, { size: "sm", variant: "plain", color: "neutral", ...getPickerMonthProps(monthIndex) }, getMonthNameFromIndex(monthIndex, ownerState.locale))), j < 3 && /* @__PURE__ */ import_react14.default.createElement("td", { style: { width: 4 }, "aria-hidden": "true", "aria-description": "cell-gap" })))), i < chunkedMonths.length - 1 && /* @__PURE__ */ import_react14.default.createElement("tr", { "aria-hidden": "true", "aria-description": "row-gap" }, /* @__PURE__ */ import_react14.default.createElement("td", { colSpan: 7, style: { height: 4 } })))))
1493
1513
  )));
1494
1514
  };
1495
- var Calendar = (0, import_react13.forwardRef)((inProps, ref) => {
1515
+ var Calendar = (0, import_react14.forwardRef)((inProps, ref) => {
1496
1516
  const [props, ownerState] = useCalendarProps(inProps);
1497
1517
  const {
1498
1518
  value,
@@ -1511,17 +1531,96 @@ var Calendar = (0, import_react13.forwardRef)((inProps, ref) => {
1511
1531
  ...others
1512
1532
  } = props;
1513
1533
  const { calendarTitle, onPrev, onNext } = useCalendar(ownerState);
1514
- 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(
1515
- CalendarSwitchViewButton,
1534
+ const [isMonthViewAssistHintOpen, setIsMonthViewAssistHintOpen] = (0, import_react14.useState)(false);
1535
+ const monthNavClickTimestampsRef = (0, import_react14.useRef)([]);
1536
+ const monthViewAssistHintShownInSessionRef = (0, import_react14.useRef)(false);
1537
+ const monthViewAssistHintTimeoutRef = (0, import_react14.useRef)(null);
1538
+ const hasEndDate = Boolean(value?.[1]);
1539
+ const isRangeHintEligible = Boolean(rangeSelection && !hasEndDate);
1540
+ const isHintEligible = Boolean(view === "day" && (!rangeSelection || isRangeHintEligible));
1541
+ const monthViewHintMessage = MONTH_VIEW_HINT_MESSAGE;
1542
+ (0, import_react14.useEffect)(() => {
1543
+ if (!isHintEligible) {
1544
+ monthNavClickTimestampsRef.current = [];
1545
+ setIsMonthViewAssistHintOpen(false);
1546
+ }
1547
+ }, [isHintEligible]);
1548
+ (0, import_react14.useEffect)(() => {
1549
+ return () => {
1550
+ if (monthViewAssistHintTimeoutRef.current) {
1551
+ clearTimeout(monthViewAssistHintTimeoutRef.current);
1552
+ }
1553
+ };
1554
+ }, []);
1555
+ const closeMonthViewAssistHint = (0, import_react14.useCallback)(() => {
1556
+ if (monthViewAssistHintTimeoutRef.current) {
1557
+ clearTimeout(monthViewAssistHintTimeoutRef.current);
1558
+ monthViewAssistHintTimeoutRef.current = null;
1559
+ }
1560
+ setIsMonthViewAssistHintOpen(false);
1561
+ }, []);
1562
+ const showMonthViewAssistHint = (0, import_react14.useCallback)(() => {
1563
+ const now = Date.now();
1564
+ if (monthViewAssistHintShownInSessionRef.current) return;
1565
+ if (now - lastMonthViewAssistHintShownAt < MONTH_VIEW_HINT_COOLDOWN_MS) return;
1566
+ monthViewAssistHintShownInSessionRef.current = true;
1567
+ lastMonthViewAssistHintShownAt = now;
1568
+ setIsMonthViewAssistHintOpen(true);
1569
+ if (monthViewAssistHintTimeoutRef.current) {
1570
+ clearTimeout(monthViewAssistHintTimeoutRef.current);
1571
+ }
1572
+ monthViewAssistHintTimeoutRef.current = setTimeout(() => {
1573
+ setIsMonthViewAssistHintOpen(false);
1574
+ monthViewAssistHintTimeoutRef.current = null;
1575
+ }, MONTH_VIEW_HINT_DURATION_MS);
1576
+ }, []);
1577
+ const trackFastMonthNavigation = (0, import_react14.useCallback)(() => {
1578
+ if (!isHintEligible) return;
1579
+ const now = Date.now();
1580
+ monthNavClickTimestampsRef.current = [
1581
+ ...monthNavClickTimestampsRef.current.filter((timestamp) => now - timestamp <= MONTH_NAV_CLICK_WINDOW_MS),
1582
+ now
1583
+ ];
1584
+ if (monthNavClickTimestampsRef.current.length >= MONTH_NAV_CLICK_THRESHOLD) {
1585
+ showMonthViewAssistHint();
1586
+ }
1587
+ }, [isHintEligible, showMonthViewAssistHint]);
1588
+ const handlePrevClick = (0, import_react14.useCallback)(() => {
1589
+ onPrev();
1590
+ trackFastMonthNavigation();
1591
+ }, [onPrev, trackFastMonthNavigation]);
1592
+ const handleNextClick = (0, import_react14.useCallback)(() => {
1593
+ onNext();
1594
+ trackFastMonthNavigation();
1595
+ }, [onNext, trackFastMonthNavigation]);
1596
+ const handleSwitchViewClick = (0, import_react14.useCallback)(() => {
1597
+ closeMonthViewAssistHint();
1598
+ onViewChange?.();
1599
+ }, [closeMonthViewAssistHint, onViewChange]);
1600
+ return /* @__PURE__ */ import_react14.default.createElement(CalendarRoot, { ref, ...others }, /* @__PURE__ */ import_react14.default.createElement(CalendarHeader, null, /* @__PURE__ */ import_react14.default.createElement(IconButton_default, { size: "sm", onClick: handlePrevClick, "aria-label": `Previous ${view === "day" ? "Month" : "Year"}` }, /* @__PURE__ */ import_react14.default.createElement(import_ChevronLeft.default, null)), /* @__PURE__ */ import_react14.default.createElement(
1601
+ Tooltip_default,
1516
1602
  {
1517
- ownerState,
1518
- variant: "plain",
1519
- color: "neutral",
1520
- onClick: onViewChange,
1521
- "aria-label": "Switch Calendar View"
1603
+ title: monthViewHintMessage,
1604
+ arrow: true,
1605
+ open: isMonthViewAssistHintOpen,
1606
+ placement: "bottom",
1607
+ disableFocusListener: true,
1608
+ disableHoverListener: true,
1609
+ disableTouchListener: true,
1610
+ variant: "solid"
1522
1611
  },
1523
- calendarTitle
1524
- ), /* @__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 }));
1612
+ /* @__PURE__ */ import_react14.default.createElement(
1613
+ CalendarSwitchViewButton,
1614
+ {
1615
+ ownerState,
1616
+ variant: "plain",
1617
+ color: "neutral",
1618
+ onClick: handleSwitchViewClick,
1619
+ "aria-label": "Switch Calendar View"
1620
+ },
1621
+ calendarTitle
1622
+ )
1623
+ ), /* @__PURE__ */ import_react14.default.createElement(IconButton_default, { size: "sm", onClick: handleNextClick, "aria-label": `Next ${view === "day" ? "Month" : "Year"}` }, /* @__PURE__ */ import_react14.default.createElement(import_ChevronRight.default, null))), view === "day" && /* @__PURE__ */ import_react14.default.createElement(PickerDays, { ownerState }), view === "month" && /* @__PURE__ */ import_react14.default.createElement(PickerMonths, { ownerState }));
1525
1624
  });
1526
1625
  Calendar.displayName = "Calendar";
1527
1626
 
@@ -1529,31 +1628,31 @@ Calendar.displayName = "Calendar";
1529
1628
  var Calendar_default = Calendar;
1530
1629
 
1531
1630
  // src/components/Card/Card.tsx
1532
- var import_joy19 = require("@mui/joy");
1533
- var import_framer_motion13 = require("framer-motion");
1534
- var MotionCard = (0, import_framer_motion13.motion)(import_joy19.Card);
1631
+ var import_joy20 = require("@mui/joy");
1632
+ var import_framer_motion14 = require("framer-motion");
1633
+ var MotionCard = (0, import_framer_motion14.motion)(import_joy20.Card);
1535
1634
  var Card = MotionCard;
1536
1635
  Card.displayName = "Card";
1537
- var MotionCardContent = (0, import_framer_motion13.motion)(import_joy19.CardContent);
1636
+ var MotionCardContent = (0, import_framer_motion14.motion)(import_joy20.CardContent);
1538
1637
  var CardContent = MotionCardContent;
1539
1638
  CardContent.displayName = "CardContent";
1540
- var MotionCardCover = (0, import_framer_motion13.motion)(import_joy19.CardCover);
1639
+ var MotionCardCover = (0, import_framer_motion14.motion)(import_joy20.CardCover);
1541
1640
  var CardCover = MotionCardCover;
1542
1641
  CardCover.displayName = "CardCover";
1543
- var MotionCardActions = (0, import_framer_motion13.motion)(import_joy19.CardActions);
1642
+ var MotionCardActions = (0, import_framer_motion14.motion)(import_joy20.CardActions);
1544
1643
  var CardActions = MotionCardActions;
1545
1644
  CardActions.displayName = "CardActions";
1546
- var MotionCardOverflow = (0, import_framer_motion13.motion)(import_joy19.CardOverflow);
1645
+ var MotionCardOverflow = (0, import_framer_motion14.motion)(import_joy20.CardOverflow);
1547
1646
  var CardOverflow = MotionCardOverflow;
1548
1647
  CardOverflow.displayName = "CardOverflow";
1549
1648
 
1550
1649
  // src/components/Checkbox/Checkbox.tsx
1551
- var import_react14 = __toESM(require("react"));
1552
- var import_joy20 = require("@mui/joy");
1553
- var import_framer_motion14 = require("framer-motion");
1554
- var MotionCheckbox = (0, import_framer_motion14.motion)(import_joy20.Checkbox);
1650
+ var import_react15 = __toESM(require("react"));
1651
+ var import_joy21 = require("@mui/joy");
1652
+ var import_framer_motion15 = require("framer-motion");
1653
+ var MotionCheckbox = (0, import_framer_motion15.motion)(import_joy21.Checkbox);
1555
1654
  var Checkbox = (props) => {
1556
- return /* @__PURE__ */ import_react14.default.createElement(MotionCheckbox, { ...props });
1655
+ return /* @__PURE__ */ import_react15.default.createElement(MotionCheckbox, { ...props });
1557
1656
  };
1558
1657
  Checkbox.displayName = "Checkbox";
1559
1658
 
@@ -1561,9 +1660,9 @@ Checkbox.displayName = "Checkbox";
1561
1660
  var Checkbox_default = Checkbox;
1562
1661
 
1563
1662
  // src/components/Container/Container.tsx
1564
- var import_joy21 = require("@mui/joy");
1565
- var import_react15 = __toESM(require("react"));
1566
- var ContainerRoot = (0, import_joy21.styled)("div", {
1663
+ var import_joy22 = require("@mui/joy");
1664
+ var import_react16 = __toESM(require("react"));
1665
+ var ContainerRoot = (0, import_joy22.styled)("div", {
1567
1666
  name: "Container",
1568
1667
  slot: "root",
1569
1668
  shouldForwardProp: (prop) => prop !== "maxWidth" && prop !== "overrideBreakpoint"
@@ -1588,25 +1687,24 @@ var ContainerRoot = (0, import_joy21.styled)("div", {
1588
1687
  paddingRight: theme.breakpoints.values[overrideBreakpoint] >= theme.breakpoints.values.lg ? theme.spacing(8) : theme.spacing(4)
1589
1688
  } : null
1590
1689
  ]);
1591
- var Container = (0, import_react15.forwardRef)(function Container2(props, ref) {
1592
- return /* @__PURE__ */ import_react15.default.createElement(ContainerRoot, { ref, ...props });
1690
+ var Container = (0, import_react16.forwardRef)(function Container2(props, ref) {
1691
+ return /* @__PURE__ */ import_react16.default.createElement(ContainerRoot, { ref, ...props });
1593
1692
  });
1594
1693
  Container.displayName = "Container";
1595
1694
 
1596
1695
  // src/components/CurrencyInput/CurrencyInput.tsx
1597
- var import_react17 = __toESM(require("react"));
1598
- var import_intl_messageformat2 = require("intl-messageformat");
1696
+ var import_react18 = __toESM(require("react"));
1599
1697
  var import_react_number_format = require("react-number-format");
1600
1698
 
1601
1699
  // src/components/Input/Input.tsx
1602
- var import_react16 = __toESM(require("react"));
1603
- var import_joy22 = require("@mui/joy");
1604
- var import_framer_motion15 = require("framer-motion");
1700
+ var import_react17 = __toESM(require("react"));
1701
+ var import_joy23 = require("@mui/joy");
1702
+ var import_framer_motion16 = require("framer-motion");
1605
1703
  var import_Close2 = __toESM(require("@mui/icons-material/Close"));
1606
1704
  var import_Visibility = __toESM(require("@mui/icons-material/Visibility"));
1607
1705
  var import_VisibilityOff = __toESM(require("@mui/icons-material/VisibilityOff"));
1608
- var MotionInput = (0, import_framer_motion15.motion)(import_joy22.Input);
1609
- var Input = import_react16.default.forwardRef((props, ref) => {
1706
+ var MotionInput = (0, import_framer_motion16.motion)(import_joy23.Input);
1707
+ var Input = import_react17.default.forwardRef((props, ref) => {
1610
1708
  const {
1611
1709
  label,
1612
1710
  helperText,
@@ -1629,11 +1727,11 @@ var Input = import_react16.default.forwardRef((props, ref) => {
1629
1727
  if (type === "password" && innerProps.endDecorator) {
1630
1728
  console.warn('Input: endDecorator is not supported when type="password"');
1631
1729
  }
1632
- const [passwordVisible, setPasswordVisible] = (0, import_react16.useState)(false);
1730
+ const [passwordVisible, setPasswordVisible] = (0, import_react17.useState)(false);
1633
1731
  const [value, setValue] = useControlledState(
1634
1732
  props.value,
1635
1733
  props.defaultValue,
1636
- (0, import_react16.useCallback)(
1734
+ (0, import_react17.useCallback)(
1637
1735
  (value2) => {
1638
1736
  onChange?.({
1639
1737
  /**
@@ -1659,7 +1757,7 @@ var Input = import_react16.default.forwardRef((props, ref) => {
1659
1757
  const actualType = type === "password" && passwordVisible ? "text" : type;
1660
1758
  const isPasswordType = type === "password";
1661
1759
  const showPasswordToggle = isPasswordType && !disableTogglePasswordButton;
1662
- const input = /* @__PURE__ */ import_react16.default.createElement(
1760
+ const input = /* @__PURE__ */ import_react17.default.createElement(
1663
1761
  MotionInput,
1664
1762
  {
1665
1763
  value,
@@ -1674,7 +1772,7 @@ var Input = import_react16.default.forwardRef((props, ref) => {
1674
1772
  ...innerProps.slotProps
1675
1773
  },
1676
1774
  ...innerProps,
1677
- endDecorator: isPasswordType ? showPasswordToggle ? /* @__PURE__ */ import_react16.default.createElement(Stack_default, { gap: 1, direction: "row" }, /* @__PURE__ */ import_react16.default.createElement(
1775
+ endDecorator: isPasswordType ? showPasswordToggle ? /* @__PURE__ */ import_react17.default.createElement(Stack_default, { gap: 1, direction: "row" }, /* @__PURE__ */ import_react17.default.createElement(
1678
1776
  IconButton_default,
1679
1777
  {
1680
1778
  onMouseDown: (e) => e.preventDefault(),
@@ -1682,19 +1780,19 @@ var Input = import_react16.default.forwardRef((props, ref) => {
1682
1780
  disabled,
1683
1781
  "aria-label": passwordVisible ? "Hide password" : "Show password"
1684
1782
  },
1685
- passwordVisible ? /* @__PURE__ */ import_react16.default.createElement(import_VisibilityOff.default, null) : /* @__PURE__ */ import_react16.default.createElement(import_Visibility.default, null)
1686
- )) : null : enableClearable ? /* @__PURE__ */ import_react16.default.createElement(Stack_default, { gap: 1, direction: "row" }, innerProps.endDecorator, value && /* @__PURE__ */ import_react16.default.createElement(
1783
+ passwordVisible ? /* @__PURE__ */ import_react17.default.createElement(import_VisibilityOff.default, null) : /* @__PURE__ */ import_react17.default.createElement(import_Visibility.default, null)
1784
+ )) : null : enableClearable ? /* @__PURE__ */ import_react17.default.createElement(Stack_default, { gap: 1, direction: "row" }, innerProps.endDecorator, value && /* @__PURE__ */ import_react17.default.createElement(
1687
1785
  IconButton_default,
1688
1786
  {
1689
1787
  onMouseDown: (e) => e.preventDefault(),
1690
1788
  onClick: handleClear,
1691
1789
  "aria-label": "Clear"
1692
1790
  },
1693
- /* @__PURE__ */ import_react16.default.createElement(import_Close2.default, null)
1791
+ /* @__PURE__ */ import_react17.default.createElement(import_Close2.default, null)
1694
1792
  )) : innerProps.endDecorator
1695
1793
  }
1696
1794
  );
1697
- return /* @__PURE__ */ import_react16.default.createElement(
1795
+ return /* @__PURE__ */ import_react17.default.createElement(
1698
1796
  FormControl_default,
1699
1797
  {
1700
1798
  required,
@@ -1705,9 +1803,9 @@ var Input = import_react16.default.forwardRef((props, ref) => {
1705
1803
  sx,
1706
1804
  className
1707
1805
  },
1708
- label && /* @__PURE__ */ import_react16.default.createElement(FormLabel_default, null, label),
1806
+ label && /* @__PURE__ */ import_react17.default.createElement(FormLabel_default, null, label),
1709
1807
  input,
1710
- helperText && /* @__PURE__ */ import_react16.default.createElement(FormHelperText_default, null, helperText)
1808
+ helperText && /* @__PURE__ */ import_react17.default.createElement(FormHelperText_default, null, helperText)
1711
1809
  );
1712
1810
  });
1713
1811
  Input.displayName = "Input";
@@ -1716,10 +1814,9 @@ Input.displayName = "Input";
1716
1814
  var Input_default = Input;
1717
1815
 
1718
1816
  // src/components/CurrencyInput/CurrencyInput.tsx
1719
- var import_joy23 = require("@mui/joy");
1817
+ var import_joy24 = require("@mui/joy");
1720
1818
 
1721
1819
  // src/components/CurrencyInput/hooks/use-currency-setting.ts
1722
- var import_intl_messageformat = __toESM(require("intl-messageformat"));
1723
1820
  var CURRENCY_DECIMAL_MAP = {
1724
1821
  AED: 2,
1725
1822
  ALL: 2,
@@ -1864,9 +1961,10 @@ var CURRENCY_DECIMAL_MAP = {
1864
1961
  };
1865
1962
  var useCurrencySetting = (props) => {
1866
1963
  const { currency = "USD", placeholder } = props;
1867
- const [symbol, thousandSeparator, decimalSeparator, ...rest] = new import_intl_messageformat.default(
1868
- `{amount, number, ::currency/${currency} unit-width-narrow}`
1869
- ).format({ amount: 1e3 }).toString().replace(/\d/g, "").split("");
1964
+ const parts = new Intl.NumberFormat("en-US", { style: "currency", currency }).formatToParts(1000.01);
1965
+ const symbol = parts.find((p) => p.type === "currency")?.value ?? "$";
1966
+ const thousandSeparator = parts.find((p) => p.type === "group")?.value ?? ",";
1967
+ const decimalSeparator = parts.find((p) => p.type === "decimal")?.value;
1870
1968
  const decimalScale = CURRENCY_DECIMAL_MAP[currency];
1871
1969
  return {
1872
1970
  symbol: `${symbol} `,
@@ -1879,9 +1977,9 @@ var useCurrencySetting = (props) => {
1879
1977
  };
1880
1978
 
1881
1979
  // src/components/CurrencyInput/CurrencyInput.tsx
1882
- var TextMaskAdapter = import_react17.default.forwardRef(function TextMaskAdapter2(props, ref) {
1980
+ var TextMaskAdapter = import_react18.default.forwardRef(function TextMaskAdapter2(props, ref) {
1883
1981
  const { onChange, ...innerProps } = props;
1884
- return /* @__PURE__ */ import_react17.default.createElement(
1982
+ return /* @__PURE__ */ import_react18.default.createElement(
1885
1983
  import_react_number_format.NumericFormat,
1886
1984
  {
1887
1985
  ...innerProps,
@@ -1896,13 +1994,13 @@ var TextMaskAdapter = import_react17.default.forwardRef(function TextMaskAdapter
1896
1994
  }
1897
1995
  );
1898
1996
  });
1899
- var CurrencyInputRoot = (0, import_joy23.styled)(Input_default, {
1997
+ var CurrencyInputRoot = (0, import_joy24.styled)(Input_default, {
1900
1998
  name: "CurrencyInput",
1901
1999
  slot: "root",
1902
2000
  overridesResolver: (props, styles) => styles.root
1903
2001
  })({});
1904
- var CurrencyInput = import_react17.default.forwardRef(function CurrencyInput2(inProps, ref) {
1905
- const props = (0, import_joy23.useThemeProps)({ props: inProps, name: "CurrencyInput" });
2002
+ var CurrencyInput = import_react18.default.forwardRef(function CurrencyInput2(inProps, ref) {
2003
+ const props = (0, import_joy24.useThemeProps)({ props: inProps, name: "CurrencyInput" });
1906
2004
  const {
1907
2005
  currency = "USD",
1908
2006
  name,
@@ -1922,28 +2020,28 @@ var CurrencyInput = import_react17.default.forwardRef(function CurrencyInput2(in
1922
2020
  const [_value, setValue] = useControlledState(
1923
2021
  props.value,
1924
2022
  props.defaultValue,
1925
- (0, import_react17.useCallback)((value2) => onChange?.({ target: { name, value: value2 } }), [onChange, name])
2023
+ (0, import_react18.useCallback)((value2) => onChange?.({ target: { name, value: value2 } }), [onChange, name])
1926
2024
  );
1927
- const value = (0, import_react17.useMemo)(() => {
2025
+ const value = (0, import_react18.useMemo)(() => {
1928
2026
  if (_value && useMinorUnit) {
1929
2027
  return _value / Math.pow(10, decimalScale);
1930
2028
  }
1931
2029
  return _value;
1932
2030
  }, [_value, useMinorUnit, decimalScale]);
1933
- const max = (0, import_react17.useMemo)(() => {
2031
+ const max = (0, import_react18.useMemo)(() => {
1934
2032
  if (props.max && useMinorUnit) {
1935
2033
  return props.max / Math.pow(10, decimalScale);
1936
2034
  }
1937
2035
  return props.max;
1938
2036
  }, [props.max, useMinorUnit, decimalScale]);
1939
- const [isOverLimit, setIsOverLimit] = (0, import_react17.useState)(!!max && !!value && value > max);
1940
- const handleChange = (0, import_react17.useCallback)(
2037
+ const [isOverLimit, setIsOverLimit] = (0, import_react18.useState)(!!max && !!value && value > max);
2038
+ const handleChange = (0, import_react18.useCallback)(
1941
2039
  (event) => {
1942
2040
  if (event.target.value === "") {
1943
2041
  setValue(void 0);
1944
2042
  return;
1945
2043
  }
1946
- const amount = useMinorUnit ? Number(event.target.value?.replace(decimalSeparator, "")) : Number(event.target.value);
2044
+ const amount = useMinorUnit ? Number(decimalSeparator ? event.target.value?.replace(decimalSeparator, "") : event.target.value) : Number(event.target.value);
1947
2045
  if (!!max && Number(event.target.value) > max) {
1948
2046
  setIsOverLimit(true);
1949
2047
  } else {
@@ -1953,7 +2051,7 @@ var CurrencyInput = import_react17.default.forwardRef(function CurrencyInput2(in
1953
2051
  },
1954
2052
  [decimalSeparator, max, useMinorUnit, setValue]
1955
2053
  );
1956
- return /* @__PURE__ */ import_react17.default.createElement(
2054
+ return /* @__PURE__ */ import_react18.default.createElement(
1957
2055
  CurrencyInputRoot,
1958
2056
  {
1959
2057
  ...innerProps,
@@ -1966,9 +2064,7 @@ var CurrencyInput = import_react17.default.forwardRef(function CurrencyInput2(in
1966
2064
  required,
1967
2065
  color: error || isOverLimit ? "danger" : props.color,
1968
2066
  label,
1969
- helperText: isOverLimit ? new import_intl_messageformat2.IntlMessageFormat(`limit: {amount, number, ::currency/${currency} unit-width-narrow}`).format({
1970
- amount: max
1971
- }) : helperText,
2067
+ helperText: isOverLimit ? `limit: ${new Intl.NumberFormat("en-US", { style: "currency", currency }).format(max)}` : helperText,
1972
2068
  slotProps: {
1973
2069
  input: {
1974
2070
  component: TextMaskAdapter,
@@ -2040,14 +2136,15 @@ function reorderColumnsByGroupingModel(columns, columnGroupingModel) {
2040
2136
  }
2041
2137
  return reorderedColumns;
2042
2138
  }
2043
- function flattenColumnGroups(items, groupPath = [], columnIndex = { current: 0 }) {
2139
+ function flattenColumnGroups(items, groupPath = [], columnIndex = { current: 0 }, visibleFields) {
2044
2140
  const result = [];
2045
2141
  for (const item of items) {
2046
2142
  if ("groupId" in item) {
2047
2143
  const newPath = [...groupPath, item.groupId];
2048
2144
  const children = Array.isArray(item.children) ? item.children : [item.children];
2049
- result.push(...flattenColumnGroups(children, newPath, columnIndex));
2145
+ result.push(...flattenColumnGroups(children, newPath, columnIndex, visibleFields));
2050
2146
  } else {
2147
+ if (visibleFields && !visibleFields.has(item.field)) continue;
2051
2148
  result.push({
2052
2149
  ...item,
2053
2150
  groupPath,
@@ -2057,9 +2154,9 @@ function flattenColumnGroups(items, groupPath = [], columnIndex = { current: 0 }
2057
2154
  }
2058
2155
  return result;
2059
2156
  }
2060
- function calculateColumnGroups(columnGroupingModel, columns) {
2157
+ function calculateColumnGroups(columnGroupingModel, columns, visibleFields) {
2061
2158
  const fieldsInGroupingModel = extractFieldsFromGroupingModel(columnGroupingModel);
2062
- const flattenedColumns = flattenColumnGroups(columnGroupingModel);
2159
+ const flattenedColumns = flattenColumnGroups(columnGroupingModel, [], { current: 0 }, visibleFields);
2063
2160
  const columnIndexMap = new Map(flattenedColumns.map((col) => [col.field, col.columnIndex]));
2064
2161
  const processedGroups = /* @__PURE__ */ new Map();
2065
2162
  const groupsByLevel = [];
@@ -2107,7 +2204,9 @@ function calculateColumnGroups(columnGroupingModel, columns) {
2107
2204
  groupsByLevel.forEach((level) => {
2108
2205
  level.sort((a, b) => a.startIndex - b.startIndex);
2109
2206
  });
2110
- return { groups: groupsByLevel, maxLevel, fieldsInGroupingModel };
2207
+ const filteredGroupsByLevel = groupsByLevel.map((level) => level.filter((g) => g.colspan > 0)).filter((level) => level.length > 0);
2208
+ const correctedMaxLevel = filteredGroupsByLevel.length > 0 ? filteredGroupsByLevel.length - 1 : -1;
2209
+ return { groups: filteredGroupsByLevel, maxLevel: correctedMaxLevel, fieldsInGroupingModel };
2111
2210
  }
2112
2211
  function getTextAlign(props) {
2113
2212
  return !props.editMode && ["number", "date", "currency"].includes(props.type || "") ? "end" : "start";
@@ -2115,19 +2214,29 @@ function getTextAlign(props) {
2115
2214
  var numberFormatter = (value) => "Intl" in window ? new Intl.NumberFormat().format(value) : value;
2116
2215
 
2117
2216
  // src/components/DataTable/styled.tsx
2118
- var import_react18 = __toESM(require("react"));
2119
- var import_joy24 = require("@mui/joy");
2120
- var import_framer_motion16 = require("framer-motion");
2217
+ var import_react19 = __toESM(require("react"));
2218
+ var import_joy25 = require("@mui/joy");
2219
+ var import_framer_motion17 = require("framer-motion");
2121
2220
  var import_ArrowUpwardRounded = __toESM(require("@mui/icons-material/ArrowUpwardRounded"));
2122
- var EllipsisDiv = (0, import_joy24.styled)("div", {
2221
+ var EllipsisDiv = (0, import_joy25.styled)("div", {
2123
2222
  name: "DataTable",
2124
- slot: "textEllipsis"
2125
- })({
2126
- overflow: "hidden",
2127
- textOverflow: "ellipsis",
2128
- whiteSpace: "nowrap"
2129
- });
2130
- var OverlayWrapper = (0, import_joy24.styled)("tr", {
2223
+ slot: "textEllipsis",
2224
+ shouldForwardProp: (prop) => prop !== "lineClamp"
2225
+ })(
2226
+ ({ lineClamp }) => lineClamp && lineClamp > 1 ? {
2227
+ overflow: "hidden",
2228
+ display: "-webkit-box !important",
2229
+ WebkitBoxOrient: "vertical",
2230
+ WebkitLineClamp: lineClamp,
2231
+ whiteSpace: "normal",
2232
+ overflowWrap: "anywhere"
2233
+ } : {
2234
+ overflow: "hidden",
2235
+ textOverflow: "ellipsis",
2236
+ whiteSpace: "nowrap"
2237
+ }
2238
+ );
2239
+ var OverlayWrapper = (0, import_joy25.styled)("tr", {
2131
2240
  name: "DataTable",
2132
2241
  slot: "overlayWrapper"
2133
2242
  })({
@@ -2142,7 +2251,7 @@ var OverlayWrapper = (0, import_joy24.styled)("tr", {
2142
2251
  border: "none !important"
2143
2252
  }
2144
2253
  });
2145
- var VirtualizedTableBody = (0, import_joy24.styled)("tbody", {
2254
+ var VirtualizedTableBody = (0, import_joy25.styled)("tbody", {
2146
2255
  name: "DataTable",
2147
2256
  slot: "tableBody"
2148
2257
  })({
@@ -2151,21 +2260,21 @@ var VirtualizedTableBody = (0, import_joy24.styled)("tbody", {
2151
2260
  display: "block",
2152
2261
  height: "0.01em"
2153
2262
  },
2154
- [`& .${import_joy24.buttonClasses.root}`]: {
2263
+ [`& .${import_joy25.buttonClasses.root}`]: {
2155
2264
  "--Button-minHeight": "26px",
2156
2265
  "--Button-paddingBlock": "0.25rem",
2157
2266
  lineHeight: 1,
2158
2267
  marginTop: "-2px",
2159
2268
  marginBottom: "-2px"
2160
2269
  },
2161
- [`& .${import_joy24.iconButtonClasses.root}`]: {
2270
+ [`& .${import_joy25.iconButtonClasses.root}`]: {
2162
2271
  "--IconButton-size": "26px",
2163
2272
  verticalAlign: "middle",
2164
2273
  marginTop: "-2px",
2165
2274
  marginBottom: "-2px"
2166
2275
  }
2167
2276
  });
2168
- var StyledTableRow = (0, import_joy24.styled)("tr", {
2277
+ var StyledTableRow = (0, import_joy25.styled)("tr", {
2169
2278
  name: "DataTable",
2170
2279
  slot: "tableRow",
2171
2280
  shouldForwardProp: (prop) => prop !== "striped"
@@ -2184,17 +2293,17 @@ var StyledTableRow = (0, import_joy24.styled)("tr", {
2184
2293
  }
2185
2294
  }
2186
2295
  }));
2187
- var Asterisk = (0, import_joy24.styled)("span", {
2296
+ var Asterisk = (0, import_joy25.styled)("span", {
2188
2297
  name: "DataTable",
2189
2298
  slot: "headCellAsterisk"
2190
2299
  })(({ theme }) => ({
2191
2300
  color: "var(--ceed-palette-danger-500)",
2192
2301
  marginLeft: theme.spacing(0.5)
2193
2302
  }));
2194
- var StyledTh = (0, import_joy24.styled)(import_framer_motion16.motion.th)(({ theme }) => ({
2303
+ var StyledTh = (0, import_joy25.styled)(import_framer_motion17.motion.th)(({ theme }) => ({
2195
2304
  boxShadow: "1px 0 var(--TableCell-borderColor)"
2196
2305
  }));
2197
- var StyledTd = (0, import_joy24.styled)("td")(({ theme }) => ({
2306
+ var StyledTd = (0, import_joy25.styled)("td")(({ theme }) => ({
2198
2307
  transition: `box-shadow 0.3s`,
2199
2308
  "&:not(.is-last-left):not(.is-last-right)": {
2200
2309
  boxShadow: "1px 0 var(--TableCell-borderColor)"
@@ -2210,9 +2319,9 @@ var StyledTd = (0, import_joy24.styled)("td")(({ theme }) => ({
2210
2319
  }
2211
2320
  }
2212
2321
  }));
2213
- var MotionSortIcon = (0, import_framer_motion16.motion)(import_ArrowUpwardRounded.default);
2214
- var DefaultLoadingOverlay = () => /* @__PURE__ */ import_react18.default.createElement(import_joy24.LinearProgress, { value: 8, variant: "plain" });
2215
- var Resizer = (ref, targetRef = ref) => /* @__PURE__ */ import_react18.default.createElement(
2322
+ var MotionSortIcon = (0, import_framer_motion17.motion)(import_ArrowUpwardRounded.default);
2323
+ var DefaultLoadingOverlay = () => /* @__PURE__ */ import_react19.default.createElement(import_joy25.LinearProgress, { value: 8, variant: "plain" });
2324
+ var Resizer = (ref, targetRef = ref) => /* @__PURE__ */ import_react19.default.createElement(
2216
2325
  Box_default,
2217
2326
  {
2218
2327
  sx: {
@@ -2249,24 +2358,24 @@ var import_joy32 = require("@mui/joy");
2249
2358
  var import_framer_motion21 = require("framer-motion");
2250
2359
 
2251
2360
  // src/components/DatePicker/DatePicker.tsx
2252
- var import_react19 = __toESM(require("react"));
2361
+ var import_react20 = __toESM(require("react"));
2253
2362
  var import_react_imask = require("react-imask");
2254
2363
  var import_CalendarToday = __toESM(require("@mui/icons-material/CalendarToday"));
2255
- var import_joy27 = require("@mui/joy");
2364
+ var import_joy28 = require("@mui/joy");
2256
2365
  var import_base3 = require("@mui/base");
2257
2366
 
2258
2367
  // src/components/Sheet/Sheet.tsx
2259
- var import_joy25 = require("@mui/joy");
2260
- var Sheet = import_joy25.Sheet;
2368
+ var import_joy26 = require("@mui/joy");
2369
+ var Sheet = import_joy26.Sheet;
2261
2370
 
2262
2371
  // src/components/Sheet/index.ts
2263
2372
  var Sheet_default = Sheet;
2264
2373
 
2265
2374
  // src/components/DialogActions/DialogActions.tsx
2266
- var import_joy26 = require("@mui/joy");
2267
- var import_framer_motion17 = require("framer-motion");
2268
- var MotionDialogActions = (0, import_framer_motion17.motion)(import_joy26.DialogActions);
2269
- var StyledDialogActions = (0, import_joy26.styled)(MotionDialogActions)(({ theme }) => ({
2375
+ var import_joy27 = require("@mui/joy");
2376
+ var import_framer_motion18 = require("framer-motion");
2377
+ var MotionDialogActions = (0, import_framer_motion18.motion)(import_joy27.DialogActions);
2378
+ var StyledDialogActions = (0, import_joy27.styled)(MotionDialogActions)(({ theme }) => ({
2270
2379
  padding: theme.spacing(2),
2271
2380
  gap: theme.spacing(2),
2272
2381
  flexDirection: "row",
@@ -2279,7 +2388,7 @@ DialogActions.displayName = "DialogActions";
2279
2388
  var DialogActions_default = DialogActions;
2280
2389
 
2281
2390
  // src/components/DatePicker/DatePicker.tsx
2282
- var CalendarButton = (0, import_joy27.styled)(IconButton_default, {
2391
+ var CalendarButton = (0, import_joy28.styled)(IconButton_default, {
2283
2392
  name: "DatePicker",
2284
2393
  slot: "calendarButton"
2285
2394
  })(({ theme }) => ({
@@ -2289,13 +2398,13 @@ var CalendarButton = (0, import_joy27.styled)(IconButton_default, {
2289
2398
  outline: `${theme.getCssVar("focus-thickness")} solid ${theme.getCssVar("palette-focusVisible")}`
2290
2399
  }
2291
2400
  }));
2292
- var StyledPopper = (0, import_joy27.styled)(import_base3.Popper, {
2401
+ var StyledPopper = (0, import_joy28.styled)(import_base3.Popper, {
2293
2402
  name: "DatePicker",
2294
2403
  slot: "popper"
2295
2404
  })(({ theme }) => ({
2296
2405
  zIndex: theme.zIndex.tooltip
2297
2406
  }));
2298
- var CalendarSheet = (0, import_joy27.styled)(Sheet_default, {
2407
+ var CalendarSheet = (0, import_joy28.styled)(Sheet_default, {
2299
2408
  name: "DatePicker",
2300
2409
  slot: "sheet",
2301
2410
  overridesResolver: (props, styles) => styles.root
@@ -2304,7 +2413,7 @@ var CalendarSheet = (0, import_joy27.styled)(Sheet_default, {
2304
2413
  boxShadow: theme.shadow.md,
2305
2414
  borderRadius: theme.radius.md
2306
2415
  }));
2307
- var DatePickerRoot = (0, import_joy27.styled)("div", {
2416
+ var DatePickerRoot = (0, import_joy28.styled)("div", {
2308
2417
  name: "DatePicker",
2309
2418
  slot: "root",
2310
2419
  overridesResolver: (props, styles) => styles.root
@@ -2361,9 +2470,9 @@ function parseDate(dateString, format) {
2361
2470
  var formatToPattern = (format) => {
2362
2471
  return format.replace(/YYYY/g, "Y").replace(/MM/g, "M").replace(/DD/g, "D").replace(/[^YMD\s]/g, (match) => `${match}\``);
2363
2472
  };
2364
- var TextMaskAdapter3 = import_react19.default.forwardRef(function TextMaskAdapter4(props, ref) {
2473
+ var TextMaskAdapter3 = import_react20.default.forwardRef(function TextMaskAdapter4(props, ref) {
2365
2474
  const { onChange, format, ...other } = props;
2366
- return /* @__PURE__ */ import_react19.default.createElement(
2475
+ return /* @__PURE__ */ import_react20.default.createElement(
2367
2476
  import_react_imask.IMaskInput,
2368
2477
  {
2369
2478
  ...other,
@@ -2398,8 +2507,8 @@ var TextMaskAdapter3 = import_react19.default.forwardRef(function TextMaskAdapte
2398
2507
  }
2399
2508
  );
2400
2509
  });
2401
- var DatePicker = (0, import_react19.forwardRef)((inProps, ref) => {
2402
- const props = (0, import_joy27.useThemeProps)({ props: inProps, name: "DatePicker" });
2510
+ var DatePicker = (0, import_react20.forwardRef)((inProps, ref) => {
2511
+ const props = (0, import_joy28.useThemeProps)({ props: inProps, name: "DatePicker" });
2403
2512
  const {
2404
2513
  onChange,
2405
2514
  disabled,
@@ -2423,24 +2532,24 @@ var DatePicker = (0, import_react19.forwardRef)((inProps, ref) => {
2423
2532
  shouldDisableDate,
2424
2533
  ...innerProps
2425
2534
  } = props;
2426
- const innerRef = (0, import_react19.useRef)(null);
2427
- const buttonRef = (0, import_react19.useRef)(null);
2535
+ const innerRef = (0, import_react20.useRef)(null);
2536
+ const buttonRef = (0, import_react20.useRef)(null);
2428
2537
  const [value, setValue] = useControlledState(
2429
2538
  props.value,
2430
2539
  props.defaultValue || "",
2431
- (0, import_react19.useCallback)((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
2540
+ (0, import_react20.useCallback)((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
2432
2541
  );
2433
- const [displayValue, setDisplayValue] = (0, import_react19.useState)(
2542
+ const [displayValue, setDisplayValue] = (0, import_react20.useState)(
2434
2543
  () => value ? formatValueString(parseDate(value, format), displayFormat) : ""
2435
2544
  );
2436
- const [anchorEl, setAnchorEl] = (0, import_react19.useState)(null);
2545
+ const [anchorEl, setAnchorEl] = (0, import_react20.useState)(null);
2437
2546
  const open = Boolean(anchorEl);
2438
- (0, import_react19.useEffect)(() => {
2547
+ (0, import_react20.useEffect)(() => {
2439
2548
  if (!anchorEl) {
2440
2549
  innerRef.current?.blur();
2441
2550
  }
2442
2551
  }, [anchorEl, innerRef]);
2443
- (0, import_react19.useEffect)(() => {
2552
+ (0, import_react20.useEffect)(() => {
2444
2553
  if (value === "") {
2445
2554
  setDisplayValue("");
2446
2555
  return;
@@ -2450,8 +2559,8 @@ var DatePicker = (0, import_react19.forwardRef)((inProps, ref) => {
2450
2559
  setDisplayValue(formattedValue);
2451
2560
  }
2452
2561
  }, [displayFormat, displayValue, format, value]);
2453
- (0, import_react19.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
2454
- const handleChange = (0, import_react19.useCallback)(
2562
+ (0, import_react20.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
2563
+ const handleChange = (0, import_react20.useCallback)(
2455
2564
  (event) => {
2456
2565
  const value2 = event.target.value;
2457
2566
  setDisplayValue(value2 ? formatValueString(parseDate(value2, format), displayFormat) : value2);
@@ -2459,7 +2568,7 @@ var DatePicker = (0, import_react19.forwardRef)((inProps, ref) => {
2459
2568
  },
2460
2569
  [displayFormat, format, setValue]
2461
2570
  );
2462
- const handleDisplayInputChange = (0, import_react19.useCallback)(
2571
+ const handleDisplayInputChange = (0, import_react20.useCallback)(
2463
2572
  (event) => {
2464
2573
  if (event.target.value === "") {
2465
2574
  handleChange({
@@ -2484,7 +2593,7 @@ var DatePicker = (0, import_react19.forwardRef)((inProps, ref) => {
2484
2593
  },
2485
2594
  [displayFormat, format, handleChange, props.name]
2486
2595
  );
2487
- const handleCalendarToggle = (0, import_react19.useCallback)(
2596
+ const handleCalendarToggle = (0, import_react20.useCallback)(
2488
2597
  (event) => {
2489
2598
  setAnchorEl(anchorEl ? null : event.currentTarget);
2490
2599
  setTimeout(() => {
@@ -2493,7 +2602,7 @@ var DatePicker = (0, import_react19.forwardRef)((inProps, ref) => {
2493
2602
  },
2494
2603
  [anchorEl, setAnchorEl, innerRef]
2495
2604
  );
2496
- const handleInputMouseDown = (0, import_react19.useCallback)(
2605
+ const handleInputMouseDown = (0, import_react20.useCallback)(
2497
2606
  (event) => {
2498
2607
  if (inputReadOnly) {
2499
2608
  event.preventDefault();
@@ -2502,7 +2611,7 @@ var DatePicker = (0, import_react19.forwardRef)((inProps, ref) => {
2502
2611
  },
2503
2612
  [inputReadOnly, buttonRef]
2504
2613
  );
2505
- return /* @__PURE__ */ import_react19.default.createElement(DatePickerRoot, null, /* @__PURE__ */ import_react19.default.createElement(import_base3.FocusTrap, { open: true }, /* @__PURE__ */ import_react19.default.createElement(import_react19.default.Fragment, null, /* @__PURE__ */ import_react19.default.createElement(
2614
+ return /* @__PURE__ */ import_react20.default.createElement(DatePickerRoot, null, /* @__PURE__ */ import_react20.default.createElement(import_base3.FocusTrap, { open: true }, /* @__PURE__ */ import_react20.default.createElement(import_react20.default.Fragment, null, /* @__PURE__ */ import_react20.default.createElement(
2506
2615
  Input_default,
2507
2616
  {
2508
2617
  ...innerProps,
@@ -2530,7 +2639,7 @@ var DatePicker = (0, import_react19.forwardRef)((inProps, ref) => {
2530
2639
  },
2531
2640
  className,
2532
2641
  sx,
2533
- endDecorator: /* @__PURE__ */ import_react19.default.createElement(
2642
+ endDecorator: /* @__PURE__ */ import_react20.default.createElement(
2534
2643
  CalendarButton,
2535
2644
  {
2536
2645
  ref: buttonRef,
@@ -2542,13 +2651,13 @@ var DatePicker = (0, import_react19.forwardRef)((inProps, ref) => {
2542
2651
  "aria-expanded": open,
2543
2652
  disabled
2544
2653
  },
2545
- /* @__PURE__ */ import_react19.default.createElement(import_CalendarToday.default, null)
2654
+ /* @__PURE__ */ import_react20.default.createElement(import_CalendarToday.default, null)
2546
2655
  ),
2547
2656
  label,
2548
2657
  helperText,
2549
2658
  readOnly: readOnly || inputReadOnly
2550
2659
  }
2551
- ), open && /* @__PURE__ */ import_react19.default.createElement(import_base3.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react19.default.createElement(
2660
+ ), open && /* @__PURE__ */ import_react20.default.createElement(import_base3.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react20.default.createElement(
2552
2661
  StyledPopper,
2553
2662
  {
2554
2663
  id: "date-picker-popper",
@@ -2567,7 +2676,7 @@ var DatePicker = (0, import_react19.forwardRef)((inProps, ref) => {
2567
2676
  "aria-label": "Calendar Tooltip",
2568
2677
  "aria-expanded": open
2569
2678
  },
2570
- /* @__PURE__ */ import_react19.default.createElement(CalendarSheet, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react19.default.createElement(
2679
+ /* @__PURE__ */ import_react20.default.createElement(CalendarSheet, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react20.default.createElement(
2571
2680
  Calendar_default,
2572
2681
  {
2573
2682
  value: value && !Number.isNaN(parseDate(value, format).getTime()) ? [parseDate(value, format), void 0] : void 0,
@@ -2586,14 +2695,14 @@ var DatePicker = (0, import_react19.forwardRef)((inProps, ref) => {
2586
2695
  disablePast,
2587
2696
  shouldDisableDate: shouldDisableDate ? (date) => shouldDisableDate(formatValueString(date, format)) : void 0
2588
2697
  }
2589
- ), !hideClearButton && /* @__PURE__ */ import_react19.default.createElement(
2698
+ ), !hideClearButton && /* @__PURE__ */ import_react20.default.createElement(
2590
2699
  DialogActions_default,
2591
2700
  {
2592
2701
  sx: {
2593
2702
  p: 1
2594
2703
  }
2595
2704
  },
2596
- /* @__PURE__ */ import_react19.default.createElement(
2705
+ /* @__PURE__ */ import_react20.default.createElement(
2597
2706
  Button_default,
2598
2707
  {
2599
2708
  size,
@@ -2619,10 +2728,10 @@ var DatePicker = (0, import_react19.forwardRef)((inProps, ref) => {
2619
2728
  var DatePicker_default = DatePicker;
2620
2729
 
2621
2730
  // src/components/Textarea/Textarea.tsx
2622
- var import_react20 = __toESM(require("react"));
2623
- var import_joy28 = require("@mui/joy");
2624
- var import_framer_motion18 = require("framer-motion");
2625
- var MotionTextarea = (0, import_framer_motion18.motion)(import_joy28.Textarea);
2731
+ var import_react21 = __toESM(require("react"));
2732
+ var import_joy29 = require("@mui/joy");
2733
+ var import_framer_motion19 = require("framer-motion");
2734
+ var MotionTextarea = (0, import_framer_motion19.motion)(import_joy29.Textarea);
2626
2735
  var Textarea = (props) => {
2627
2736
  const {
2628
2737
  label,
@@ -2639,7 +2748,7 @@ var Textarea = (props) => {
2639
2748
  className,
2640
2749
  ...innerProps
2641
2750
  } = props;
2642
- const textarea = /* @__PURE__ */ import_react20.default.createElement(
2751
+ const textarea = /* @__PURE__ */ import_react21.default.createElement(
2643
2752
  MotionTextarea,
2644
2753
  {
2645
2754
  required,
@@ -2651,7 +2760,7 @@ var Textarea = (props) => {
2651
2760
  ...innerProps
2652
2761
  }
2653
2762
  );
2654
- return /* @__PURE__ */ import_react20.default.createElement(
2763
+ return /* @__PURE__ */ import_react21.default.createElement(
2655
2764
  FormControl_default,
2656
2765
  {
2657
2766
  required,
@@ -2662,9 +2771,9 @@ var Textarea = (props) => {
2662
2771
  sx,
2663
2772
  className
2664
2773
  },
2665
- label && /* @__PURE__ */ import_react20.default.createElement(FormLabel_default, null, label),
2774
+ label && /* @__PURE__ */ import_react21.default.createElement(FormLabel_default, null, label),
2666
2775
  textarea,
2667
- helperText && /* @__PURE__ */ import_react20.default.createElement(FormHelperText_default, null, helperText)
2776
+ helperText && /* @__PURE__ */ import_react21.default.createElement(FormHelperText_default, null, helperText)
2668
2777
  );
2669
2778
  };
2670
2779
  Textarea.displayName = "Textarea";
@@ -2673,10 +2782,10 @@ Textarea.displayName = "Textarea";
2673
2782
  var Textarea_default = Textarea;
2674
2783
 
2675
2784
  // src/components/Select/Select.tsx
2676
- var import_react21 = __toESM(require("react"));
2677
- var import_joy29 = require("@mui/joy");
2678
- var import_framer_motion19 = require("framer-motion");
2679
- var MotionOption = (0, import_framer_motion19.motion)(import_joy29.Option);
2785
+ var import_react22 = __toESM(require("react"));
2786
+ var import_joy30 = require("@mui/joy");
2787
+ var import_framer_motion20 = require("framer-motion");
2788
+ var MotionOption = (0, import_framer_motion20.motion)(import_joy30.Option);
2680
2789
  var Option = MotionOption;
2681
2790
  var secondaryTextLevelMap2 = {
2682
2791
  sm: "body-xs",
@@ -2699,7 +2808,7 @@ function Select(props) {
2699
2808
  className,
2700
2809
  ...innerProps
2701
2810
  } = props;
2702
- const options = (0, import_react21.useMemo)(
2811
+ const options = (0, import_react22.useMemo)(
2703
2812
  () => props.options.map((option) => {
2704
2813
  if (option.hasOwnProperty("value") && option.hasOwnProperty("label")) {
2705
2814
  return option;
@@ -2724,15 +2833,15 @@ function Select(props) {
2724
2833
  };
2725
2834
  onChange?.(newEvent, newValue);
2726
2835
  };
2727
- const optionMap = (0, import_react21.useMemo)(() => {
2836
+ const optionMap = (0, import_react22.useMemo)(() => {
2728
2837
  const map = /* @__PURE__ */ new Map();
2729
2838
  options.forEach((option) => {
2730
2839
  map.set(option.value, option);
2731
2840
  });
2732
2841
  return map;
2733
2842
  }, [options]);
2734
- const select = /* @__PURE__ */ import_react21.default.createElement(
2735
- import_joy29.Select,
2843
+ const select = /* @__PURE__ */ import_react22.default.createElement(
2844
+ import_joy30.Select,
2736
2845
  {
2737
2846
  ...innerProps,
2738
2847
  required,
@@ -2748,9 +2857,9 @@ function Select(props) {
2748
2857
  return optionMap.get(selected.value)?.label;
2749
2858
  }
2750
2859
  },
2751
- options.map((option) => /* @__PURE__ */ import_react21.default.createElement(Option, { key: option.value, value: option.value, disabled: option.disabled }, option.secondaryText ? /* @__PURE__ */ import_react21.default.createElement(import_joy29.ListItemContent, { sx: { gap: 0.5 } }, /* @__PURE__ */ import_react21.default.createElement(import_joy29.Typography, { level: "inherit" }, option.label), /* @__PURE__ */ import_react21.default.createElement(import_joy29.Typography, { level: secondaryTextLevelMap2[size ?? "md"], textColor: "text.tertiary" }, option.secondaryText)) : option.label))
2860
+ options.map((option) => /* @__PURE__ */ import_react22.default.createElement(Option, { key: option.value, value: option.value, disabled: option.disabled }, option.secondaryText ? /* @__PURE__ */ import_react22.default.createElement(import_joy30.ListItemContent, { sx: { gap: 0.5 } }, /* @__PURE__ */ import_react22.default.createElement(import_joy30.Typography, { level: "inherit" }, option.label), /* @__PURE__ */ import_react22.default.createElement(import_joy30.Typography, { level: secondaryTextLevelMap2[size ?? "md"], textColor: "text.tertiary" }, option.secondaryText)) : option.label))
2752
2861
  );
2753
- return /* @__PURE__ */ import_react21.default.createElement(
2862
+ return /* @__PURE__ */ import_react22.default.createElement(
2754
2863
  FormControl_default,
2755
2864
  {
2756
2865
  required,
@@ -2761,9 +2870,9 @@ function Select(props) {
2761
2870
  sx,
2762
2871
  className
2763
2872
  },
2764
- label && /* @__PURE__ */ import_react21.default.createElement(FormLabel_default, null, label),
2873
+ label && /* @__PURE__ */ import_react22.default.createElement(FormLabel_default, null, label),
2765
2874
  select,
2766
- helperText && /* @__PURE__ */ import_react21.default.createElement(FormHelperText_default, null, helperText)
2875
+ helperText && /* @__PURE__ */ import_react22.default.createElement(FormHelperText_default, null, helperText)
2767
2876
  );
2768
2877
  }
2769
2878
  Select.displayName = "Select";
@@ -2774,19 +2883,6 @@ var Select_default = Select;
2774
2883
  // src/components/DataTable/components.tsx
2775
2884
  var import_joy33 = require("@mui/joy");
2776
2885
 
2777
- // src/components/Tooltip/Tooltip.tsx
2778
- var import_react22 = __toESM(require("react"));
2779
- var import_joy30 = require("@mui/joy");
2780
- var import_framer_motion20 = require("framer-motion");
2781
- var MotionTooltip = (0, import_framer_motion20.motion)(import_joy30.Tooltip);
2782
- var Tooltip = (props) => {
2783
- return /* @__PURE__ */ import_react22.default.createElement(MotionTooltip, { ...props });
2784
- };
2785
- Tooltip.displayName = "Tooltip";
2786
-
2787
- // src/components/Tooltip/index.ts
2788
- var Tooltip_default = Tooltip;
2789
-
2790
2886
  // src/components/InfoSign/InfoSign.tsx
2791
2887
  var import_react23 = __toESM(require("react"));
2792
2888
  var import_joy31 = require("@mui/joy");
@@ -2821,21 +2917,22 @@ function InfoSign(props) {
2821
2917
  var InfoSign_default = InfoSign;
2822
2918
 
2823
2919
  // src/components/DataTable/components.tsx
2824
- var TextEllipsis = ({ children }) => {
2920
+ var TextEllipsis = ({ children, lineClamp }) => {
2825
2921
  const textRef = (0, import_react24.useRef)(null);
2826
2922
  const [showTooltip, setShowTooltip] = (0, import_react24.useState)(false);
2827
2923
  (0, import_react24.useLayoutEffect)(() => {
2828
2924
  const element = textRef.current;
2829
- if (element) {
2830
- const isTextTruncated = element.scrollWidth > element.clientWidth;
2831
- setShowTooltip(isTextTruncated);
2832
- }
2833
- }, [children]);
2834
- const content = /* @__PURE__ */ import_react24.default.createElement(EllipsisDiv, { ref: textRef }, children);
2835
- if (showTooltip) {
2836
- return /* @__PURE__ */ import_react24.default.createElement(Tooltip_default, { title: children, placement: "top", onClick: (e) => e.stopPropagation() }, content);
2837
- }
2838
- return content;
2925
+ if (!element) return;
2926
+ const checkTruncation = () => {
2927
+ const isTruncated = lineClamp && lineClamp > 1 ? element.scrollHeight > element.clientHeight + 1 : element.scrollWidth > element.clientWidth;
2928
+ setShowTooltip(isTruncated);
2929
+ };
2930
+ checkTruncation();
2931
+ const ro = new ResizeObserver(checkTruncation);
2932
+ ro.observe(element);
2933
+ return () => ro.disconnect();
2934
+ }, [children, lineClamp]);
2935
+ return /* @__PURE__ */ import_react24.default.createElement(Tooltip_default, { title: showTooltip ? children : "", placement: "top", onClick: (e) => e.stopPropagation() }, /* @__PURE__ */ import_react24.default.createElement(EllipsisDiv, { ref: textRef, lineClamp }, children));
2839
2936
  };
2840
2937
  var CellTextEllipsis = ({ children }) => {
2841
2938
  const textRef = (0, import_react24.useRef)(null);
@@ -2886,7 +2983,8 @@ var HeadCell = (props) => {
2886
2983
  pinnedEndPosition,
2887
2984
  headerRef,
2888
2985
  tableColRef,
2889
- headerClassName
2986
+ headerClassName,
2987
+ headerLineClamp
2890
2988
  } = props;
2891
2989
  const theme = (0, import_joy32.useTheme)();
2892
2990
  const ref = headerRef;
@@ -2980,7 +3078,7 @@ var HeadCell = (props) => {
2980
3078
  initial: "initial",
2981
3079
  className: computedHeaderClassName
2982
3080
  },
2983
- /* @__PURE__ */ import_react24.default.createElement(Stack_default, { gap: 1, direction: "row", justifyContent: textAlign, alignItems: "center" }, textAlign === "end" && sortIcon, textAlign === "end" && infoSign, /* @__PURE__ */ import_react24.default.createElement(TextEllipsis, null, headerName ?? field, editMode && required && /* @__PURE__ */ import_react24.default.createElement(Asterisk, null, "*")), textAlign === "start" && infoSign, textAlign === "start" && sortIcon),
3081
+ /* @__PURE__ */ import_react24.default.createElement(Stack_default, { gap: 1, direction: "row", justifyContent: textAlign, alignItems: "center", sx: { minWidth: 0 } }, textAlign === "end" && sortIcon, textAlign === "end" && infoSign, /* @__PURE__ */ import_react24.default.createElement(TextEllipsis, { lineClamp: headerLineClamp }, headerName ?? field, editMode && required && /* @__PURE__ */ import_react24.default.createElement(Asterisk, null, "*")), textAlign === "start" && infoSign, textAlign === "start" && sortIcon),
2984
3082
  resizer
2985
3083
  );
2986
3084
  };
@@ -3272,7 +3370,9 @@ function useDataTableRenderer({
3272
3370
  getId: _getId,
3273
3371
  isTotalSelected: _isTotalSelected,
3274
3372
  isRowSelectable,
3275
- columnGroupingModel
3373
+ columnGroupingModel,
3374
+ columnVisibilityModel,
3375
+ onColumnVisibilityModelChange
3276
3376
  }) {
3277
3377
  if (pinnedColumns && columnGroupingModel) {
3278
3378
  throw new Error(
@@ -3288,12 +3388,35 @@ function useDataTableRenderer({
3288
3388
  initialState?.sorting?.sortModel ?? [],
3289
3389
  (0, import_react25.useCallback)((sortModel2) => onSortModelChange?.(sortModel2), [onSortModelChange])
3290
3390
  );
3391
+ const [visibilityModel] = useControlledState(
3392
+ columnVisibilityModel,
3393
+ initialState?.columns?.columnVisibilityModel ?? {},
3394
+ (0, import_react25.useCallback)(
3395
+ (model) => onColumnVisibilityModelChange?.(model),
3396
+ [onColumnVisibilityModelChange]
3397
+ )
3398
+ );
3291
3399
  const reorderedColumns = (0, import_react25.useMemo)(() => {
3292
3400
  if (!columnGroupingModel) return columnsProp;
3293
3401
  return reorderColumnsByGroupingModel(columnsProp, columnGroupingModel);
3294
3402
  }, [columnsProp, columnGroupingModel]);
3295
- const columnsByField = (0, import_react25.useMemo)(
3403
+ const visibleColumns = (0, import_react25.useMemo)(
3404
+ () => reorderedColumns.filter((col) => visibilityModel[col.field] !== false),
3405
+ [reorderedColumns, visibilityModel]
3406
+ );
3407
+ const visibleFieldSet = (0, import_react25.useMemo)(() => new Set(visibleColumns.map((c) => c.field)), [visibleColumns]);
3408
+ const allColumnsByField = (0, import_react25.useMemo)(
3296
3409
  () => reorderedColumns.reduce(
3410
+ (acc, curr) => ({
3411
+ ...acc,
3412
+ [curr.field]: curr
3413
+ }),
3414
+ {}
3415
+ ),
3416
+ [reorderedColumns]
3417
+ );
3418
+ const visibleColumnsByField = (0, import_react25.useMemo)(
3419
+ () => visibleColumns.reduce(
3297
3420
  (acc, curr) => ({
3298
3421
  ...acc,
3299
3422
  [curr.field]: {
@@ -3304,7 +3427,7 @@ function useDataTableRenderer({
3304
3427
  }),
3305
3428
  {}
3306
3429
  ),
3307
- [reorderedColumns]
3430
+ [visibleColumns]
3308
3431
  );
3309
3432
  const sortComparator = (0, import_react25.useCallback)(
3310
3433
  (rowA, rowB) => {
@@ -3312,7 +3435,8 @@ function useDataTableRenderer({
3312
3435
  const { field, sort: direction } = sort;
3313
3436
  const a = rowA[field];
3314
3437
  const b = rowB[field];
3315
- const column = columnsByField[field];
3438
+ const column = allColumnsByField[field];
3439
+ if (!column) continue;
3316
3440
  let comparison = 0;
3317
3441
  if (column.sortComparator) {
3318
3442
  comparison = column.sortComparator({
@@ -3332,7 +3456,7 @@ function useDataTableRenderer({
3332
3456
  }
3333
3457
  return 0;
3334
3458
  },
3335
- [sortModel, columnsByField]
3459
+ [sortModel, allColumnsByField]
3336
3460
  );
3337
3461
  const rows = (0, import_react25.useMemo)(
3338
3462
  () => sortModel.length ? [..._rows].sort(sortComparator) : _rows,
@@ -3396,44 +3520,54 @@ function useDataTableRenderer({
3396
3520
  () => _isTotalSelected ?? (selectableRowCount > 0 && (selectionModel?.length || 0) === selectableRowCount),
3397
3521
  [_isTotalSelected, selectionModel, selectableRowCount]
3398
3522
  );
3399
- const columnWidths = useColumnWidths(columnsByField);
3523
+ const columnWidths = useColumnWidths(visibleColumnsByField);
3400
3524
  const getWidth = (0, import_react25.useCallback)(
3401
- (f) => columnWidths[f] ?? columnsByField[f].width ?? // Column prop 으로 지정된 width
3402
- columnsByField[f].minWidth ?? 0,
3403
- [columnWidths, columnsByField]
3525
+ (f) => columnWidths[f] ?? allColumnsByField[f]?.width ?? // Column prop 으로 지정된 width
3526
+ allColumnsByField[f]?.minWidth ?? 0,
3527
+ [columnWidths, allColumnsByField]
3404
3528
  );
3405
3529
  const processedColumnGroups = (0, import_react25.useMemo)(() => {
3406
3530
  if (!columnGroupingModel) return null;
3407
- return calculateColumnGroups(columnGroupingModel, reorderedColumns);
3408
- }, [columnGroupingModel, reorderedColumns]);
3531
+ return calculateColumnGroups(columnGroupingModel, visibleColumns, visibleFieldSet);
3532
+ }, [columnGroupingModel, visibleColumns, visibleFieldSet]);
3533
+ const effectivePinnedLeft = (0, import_react25.useMemo)(
3534
+ () => pinnedColumns?.left?.filter((f) => visibleFieldSet.has(f)),
3535
+ [pinnedColumns?.left, visibleFieldSet]
3536
+ );
3537
+ const effectivePinnedRight = (0, import_react25.useMemo)(
3538
+ () => pinnedColumns?.right?.filter((f) => visibleFieldSet.has(f)),
3539
+ [pinnedColumns?.right, visibleFieldSet]
3540
+ );
3409
3541
  const columns = (0, import_react25.useMemo)(() => {
3410
- const baseColumns = reorderedColumns.length > 0 ? reorderedColumns : Object.keys(rows[0] || {}).map((key) => ({
3542
+ const baseColumns = visibleColumns.length > 0 ? visibleColumns : reorderedColumns.length > 0 ? [] : Object.keys(rows[0] || {}).map((key) => ({
3411
3543
  field: key
3412
3544
  }));
3413
3545
  return baseColumns.map((column) => {
3414
- const isLeftPinned = pinnedColumns?.left?.includes(column.field);
3415
- const isRightPinned = pinnedColumns?.right?.includes(column.field);
3546
+ const isLeftPinned = effectivePinnedLeft?.includes(column.field);
3547
+ const isRightPinned = effectivePinnedRight?.includes(column.field);
3416
3548
  const isPinned = isLeftPinned || isRightPinned;
3417
3549
  return {
3418
3550
  ...column,
3419
- headerRef: columnsByField[column.field].headerRef,
3420
- tableColRef: columnsByField[column.field].tableColRef,
3551
+ headerRef: visibleColumnsByField[column.field]?.headerRef,
3552
+ tableColRef: visibleColumnsByField[column.field]?.tableColRef,
3421
3553
  isCellEditable: editMode && (typeof column.isCellEditable === "function" ? column.isCellEditable : column.isCellEditable ?? true),
3422
3554
  sort: sortModel.find((sort) => sort.field === column.field)?.sort,
3423
- sortOrder: columnsByField[column.field]?.sortOrder || sortOrder,
3555
+ sortOrder: allColumnsByField[column.field]?.sortOrder || sortOrder,
3424
3556
  isPinned,
3425
- isLastStartPinnedColumn: isLeftPinned && [...pinnedColumns?.left || []].pop() === column.field,
3426
- isLastEndPinnedColumn: isRightPinned && (pinnedColumns?.right?.[0] ?? null) === column.field,
3427
- pinnedStartPosition: pinnedColumns?.left?.slice(0, isLeftPinned ? pinnedColumns.left.indexOf(column.field) : pinnedColumns.left.length).reduce((acc, curr) => acc + getWidth(curr), 0),
3428
- pinnedEndPosition: pinnedColumns?.right?.slice(isRightPinned ? pinnedColumns.right.indexOf(column.field) + 1 : 0).reduce((acc, curr) => acc + getWidth(curr), 0)
3557
+ isLastStartPinnedColumn: isLeftPinned && [...effectivePinnedLeft || []].pop() === column.field,
3558
+ isLastEndPinnedColumn: isRightPinned && (effectivePinnedRight?.[0] ?? null) === column.field,
3559
+ pinnedStartPosition: effectivePinnedLeft?.slice(0, isLeftPinned ? effectivePinnedLeft.indexOf(column.field) : effectivePinnedLeft.length).reduce((acc, curr) => acc + getWidth(curr), 0),
3560
+ pinnedEndPosition: effectivePinnedRight?.slice(isRightPinned ? effectivePinnedRight.indexOf(column.field) + 1 : 0).reduce((acc, curr) => acc + getWidth(curr), 0)
3429
3561
  };
3430
3562
  });
3431
3563
  }, [
3564
+ visibleColumns,
3432
3565
  reorderedColumns,
3433
3566
  rows,
3434
- pinnedColumns?.left,
3435
- pinnedColumns?.right,
3436
- columnsByField,
3567
+ effectivePinnedLeft,
3568
+ effectivePinnedRight,
3569
+ visibleColumnsByField,
3570
+ allColumnsByField,
3437
3571
  editMode,
3438
3572
  sortModel,
3439
3573
  sortOrder,
@@ -3449,8 +3583,8 @@ function useDataTableRenderer({
3449
3583
  const handleSortChange = (0, import_react25.useCallback)(
3450
3584
  (props) => {
3451
3585
  const { field, currentSort, multiple } = props;
3452
- const column = columnsByField[field];
3453
- const columnSortOrder = column.sortOrder || sortOrder;
3586
+ const column = allColumnsByField[field];
3587
+ const columnSortOrder = column?.sortOrder || sortOrder;
3454
3588
  if (currentSort !== void 0) {
3455
3589
  const currentOrderIndex = columnSortOrder.indexOf(currentSort);
3456
3590
  const nextSortOrderIndex = (currentOrderIndex + 1) % columnSortOrder.length;
@@ -3467,7 +3601,7 @@ function useDataTableRenderer({
3467
3601
  setSortModel(newSortModel);
3468
3602
  }
3469
3603
  },
3470
- [sortOrder, columnsByField, sortModel, setSortModel]
3604
+ [sortOrder, allColumnsByField, sortModel, setSortModel]
3471
3605
  );
3472
3606
  (0, import_react25.useEffect)(() => {
3473
3607
  if (!paginationModel) {
@@ -3893,6 +4027,10 @@ function Component(props, apiRef) {
3893
4027
  loading,
3894
4028
  columnGroupingModel: _________________,
3895
4029
  // columnGroupingModel is used in useDataTableRenderer
4030
+ columnVisibilityModel: __________________,
4031
+ // columnVisibilityModel is used in useDataTableRenderer
4032
+ onColumnVisibilityModelChange: ___________________,
4033
+ // onColumnVisibilityModelChange is used in useDataTableRenderer
3896
4034
  slots: {
3897
4035
  checkbox: RenderCheckbox = Checkbox_default,
3898
4036
  toolbar: Toolbar,
@@ -4132,7 +4270,7 @@ function Component(props, apiRef) {
4132
4270
  width: c.width
4133
4271
  }
4134
4272
  }
4135
- ))), /* @__PURE__ */ import_react28.default.createElement("thead", null, processedColumnGroups && processedColumnGroups.groups.map((levelGroups, level) => /* @__PURE__ */ import_react28.default.createElement("tr", { key: `group-level-${level}` }, checkboxSelection && level === 0 && /* @__PURE__ */ import_react28.default.createElement(
4273
+ ))), /* @__PURE__ */ import_react28.default.createElement("thead", null, processedColumnGroups && processedColumnGroups.groups.length > 0 && processedColumnGroups.groups.map((levelGroups, level) => /* @__PURE__ */ import_react28.default.createElement("tr", { key: `group-level-${level}` }, checkboxSelection && level === 0 && /* @__PURE__ */ import_react28.default.createElement(
4136
4274
  "th",
4137
4275
  {
4138
4276
  rowSpan: processedColumnGroups.maxLevel + 2,
@@ -4152,7 +4290,7 @@ function Component(props, apiRef) {
4152
4290
  ...checkboxProps
4153
4291
  }
4154
4292
  )
4155
- ), level > 0 && Array.from({ length: levelGroups[0]?.startIndex || 0 }).map((_2, i) => /* @__PURE__ */ import_react28.default.createElement("th", { key: `empty-${level}-${i}` })), levelGroups.map((group, groupIndex) => {
4293
+ ), level > 0 && Array.from({ length: levelGroups[0]?.startIndex || 0 }).map((_2, i) => /* @__PURE__ */ import_react28.default.createElement("th", { key: `empty-${level}-${i}` })), levelGroups.filter((g) => g.colspan > 0).map((group, groupIndex) => {
4156
4294
  const nextGroup = levelGroups[groupIndex + 1];
4157
4295
  const emptyCells = nextGroup ? nextGroup.startIndex - (group.startIndex + group.colspan) : columns.length - (group.startIndex + group.colspan);
4158
4296
  const params = { groupId: group.groupId };
@@ -4170,7 +4308,7 @@ function Component(props, apiRef) {
4170
4308
  },
4171
4309
  group.headerName ?? group.groupId
4172
4310
  ), emptyCells > 0 && Array.from({ length: emptyCells }).map((_2, i) => /* @__PURE__ */ import_react28.default.createElement("th", { key: `empty-between-${level}-${groupIndex}-${i}`, colSpan: 1 })));
4173
- }))), /* @__PURE__ */ import_react28.default.createElement("tr", null, !processedColumnGroups && checkboxSelection && /* @__PURE__ */ import_react28.default.createElement(
4311
+ }))), /* @__PURE__ */ import_react28.default.createElement("tr", null, (!processedColumnGroups || processedColumnGroups.groups.length === 0) && checkboxSelection && /* @__PURE__ */ import_react28.default.createElement(
4174
4312
  "th",
4175
4313
  {
4176
4314
  style: {
@@ -5968,28 +6106,191 @@ var MotionRadioGroup = (0, import_framer_motion27.motion)(import_joy54.RadioGrou
5968
6106
  var RadioGroup = MotionRadioGroup;
5969
6107
  RadioGroup.displayName = "RadioGroup";
5970
6108
 
5971
- // src/components/RadioList/RadioList.tsx
6109
+ // src/components/RadioTileGroup/RadioTileGroup.tsx
5972
6110
  var import_react44 = __toESM(require("react"));
6111
+ var import_joy55 = require("@mui/joy");
6112
+ var RadioTileGroupRoot = (0, import_joy55.styled)(RadioGroup, {
6113
+ name: "RadioTileGroup",
6114
+ slot: "root",
6115
+ shouldForwardProp: (prop) => prop !== "flex" && prop !== "columns"
6116
+ })(({ theme, flex, columns }) => ({
6117
+ flexDirection: "row",
6118
+ gap: theme.spacing(2),
6119
+ ...flex && { flex: 1 },
6120
+ ...columns && {
6121
+ display: "grid",
6122
+ gridTemplateColumns: `repeat(${columns}, 1fr)`
6123
+ },
6124
+ [`& .${import_joy55.sheetClasses.root}.${import_joy55.radioClasses.disabled}`]: {
6125
+ borderColor: theme.palette.neutral.outlinedDisabledBorder
6126
+ },
6127
+ [`& .${import_joy55.radioClasses.root}`]: {
6128
+ [`& .${import_joy55.radioClasses.action}`]: {
6129
+ borderRadius: theme.radius.md
6130
+ },
6131
+ [`&.${import_joy55.radioClasses.checked}`]: {
6132
+ [`& .${import_joy55.radioClasses.action}`]: {
6133
+ inset: -1,
6134
+ border: "2px solid",
6135
+ borderColor: theme.palette.primary.outlinedColor
6136
+ },
6137
+ [`&.${import_joy55.radioClasses.disabled}`]: {
6138
+ [`& .${import_joy55.radioClasses.action}`]: {
6139
+ borderColor: theme.palette.neutral.outlinedBorder
6140
+ }
6141
+ }
6142
+ }
6143
+ }
6144
+ }));
6145
+ var RadioTileSheet = (0, import_joy55.styled)(Sheet, {
6146
+ name: "RadioTileGroup",
6147
+ slot: "tile",
6148
+ shouldForwardProp: (prop) => prop !== "disabled" && prop !== "size" && prop !== "flex" && prop !== "textAlign"
6149
+ })(({
6150
+ theme,
6151
+ disabled,
6152
+ size = "sm",
6153
+ flex,
6154
+ textAlign
6155
+ }) => {
6156
+ const px = { sm: theme.spacing(3), md: theme.spacing(3), lg: theme.spacing(4) }[size];
6157
+ const py = { sm: theme.spacing(3), md: theme.spacing(4), lg: theme.spacing(4) }[size];
6158
+ return {
6159
+ borderRadius: theme.radius.md,
6160
+ display: "flex",
6161
+ gap: { sm: theme.spacing(2), md: theme.spacing(3), lg: theme.spacing(4) }[size],
6162
+ padding: `${py} ${px}`,
6163
+ // NOTE: Radio에도 Label과의 정렬을 맞추기 위해 중복 코드가 있지만 Icon과 RadioButton 의 정렬도 일치시켜야 해서 코드가 중복으로 존재할수밖에 없다.
6164
+ flexDirection: textAlign === "start" ? "row-reverse" : "column-reverse",
6165
+ justifyContent: textAlign === "start" ? "space-between" : "center",
6166
+ alignItems: "center",
6167
+ ...flex ? { flex: 1 } : {},
6168
+ ...disabled ? { borderColor: theme.palette.neutral.outlinedDisabledBorder } : {
6169
+ ":hover": {
6170
+ backgroundColor: theme.palette.neutral.outlinedHoverBg
6171
+ },
6172
+ ":active": {
6173
+ backgroundColor: theme.palette.neutral.outlinedActiveBg
6174
+ }
6175
+ }
6176
+ };
6177
+ });
6178
+ function RadioTileGroup(props) {
6179
+ const {
6180
+ options,
6181
+ value,
6182
+ defaultValue,
6183
+ onChange,
6184
+ name,
6185
+ disabled: allDisabled,
6186
+ sx,
6187
+ className,
6188
+ useIndicator,
6189
+ textAlign = "center",
6190
+ size = "sm",
6191
+ flex,
6192
+ columns,
6193
+ label,
6194
+ helperText,
6195
+ error,
6196
+ required
6197
+ } = props;
6198
+ const radioGroup = /* @__PURE__ */ import_react44.default.createElement(
6199
+ RadioTileGroupRoot,
6200
+ {
6201
+ overlay: true,
6202
+ name,
6203
+ value,
6204
+ defaultValue,
6205
+ onChange,
6206
+ flex,
6207
+ columns
6208
+ },
6209
+ options.map((option) => /* @__PURE__ */ import_react44.default.createElement(
6210
+ RadioTileSheet,
6211
+ {
6212
+ key: option.value,
6213
+ variant: "outlined",
6214
+ disabled: allDisabled ?? option.disabled,
6215
+ size,
6216
+ flex,
6217
+ textAlign
6218
+ },
6219
+ /* @__PURE__ */ import_react44.default.createElement(
6220
+ Radio,
6221
+ {
6222
+ id: `${option.value}`,
6223
+ value: option.value,
6224
+ label: option.label,
6225
+ disableIcon: !useIndicator,
6226
+ disabled: allDisabled ?? option.disabled,
6227
+ size,
6228
+ slotProps: {
6229
+ root: {
6230
+ sx: {
6231
+ width: "100%",
6232
+ flexDirection: textAlign === "start" ? "row-reverse" : "column-reverse",
6233
+ justifyContent: textAlign === "start" ? "space-between" : "center",
6234
+ alignItems: "center",
6235
+ gap: { sm: 2, md: 3, lg: 4 }[size]
6236
+ }
6237
+ },
6238
+ label: ({ disabled }) => ({
6239
+ sx: (theme) => ({
6240
+ ...theme.typography[{ sm: "body-sm", md: "body-md", lg: "body-lg" }[size]],
6241
+ color: disabled ? theme.palette.neutral.outlinedDisabledColor : theme.palette.neutral.outlinedColor
6242
+ })
6243
+ })
6244
+ }
6245
+ }
6246
+ ),
6247
+ option.startDecorator && /* @__PURE__ */ import_react44.default.createElement(
6248
+ Box_default,
6249
+ {
6250
+ sx: {
6251
+ zIndex: 2,
6252
+ // HACK: Radio의 overlay가 decorator를 덮어버리기 때문에 문제 예방을 위해 적용해야 한다.
6253
+ width: { sm: "20px", md: "24px", lg: "24px" }[size],
6254
+ height: { sm: "20px", md: "24px", lg: "24px" }[size],
6255
+ color: "inherit",
6256
+ "& > .MuiSvgIcon-root": {
6257
+ width: "inherit",
6258
+ height: "inherit",
6259
+ fill: "currentColor",
6260
+ color: "inherit"
6261
+ }
6262
+ }
6263
+ },
6264
+ option.startDecorator
6265
+ )
6266
+ ))
6267
+ );
6268
+ return /* @__PURE__ */ import_react44.default.createElement(FormControl_default, { required, disabled: allDisabled, error, size, sx, className }, label && /* @__PURE__ */ import_react44.default.createElement(FormLabel_default, null, label), radioGroup, helperText && /* @__PURE__ */ import_react44.default.createElement(FormHelperText_default, null, helperText));
6269
+ }
6270
+ RadioTileGroup.displayName = "RadioTileGroup";
6271
+
6272
+ // src/components/RadioList/RadioList.tsx
6273
+ var import_react45 = __toESM(require("react"));
5973
6274
  function RadioList(props) {
5974
6275
  const { items, ...innerProps } = props;
5975
- return /* @__PURE__ */ import_react44.default.createElement(RadioGroup, { ...innerProps }, items.map((item) => /* @__PURE__ */ import_react44.default.createElement(Radio, { key: `${item.value}`, value: item.value, label: item.label })));
6276
+ return /* @__PURE__ */ import_react45.default.createElement(RadioGroup, { ...innerProps }, items.map((item) => /* @__PURE__ */ import_react45.default.createElement(Radio, { key: `${item.value}`, value: item.value, label: item.label })));
5976
6277
  }
5977
6278
  RadioList.displayName = "RadioList";
5978
6279
 
5979
6280
  // src/components/Stepper/Stepper.tsx
5980
- var import_react45 = __toESM(require("react"));
5981
- var import_joy55 = require("@mui/joy");
6281
+ var import_react46 = __toESM(require("react"));
6282
+ var import_joy56 = require("@mui/joy");
5982
6283
  var import_Check = __toESM(require("@mui/icons-material/Check"));
5983
6284
  var import_framer_motion28 = require("framer-motion");
5984
- var Step = (0, import_joy55.styled)(import_joy55.Step)({});
6285
+ var Step = (0, import_joy56.styled)(import_joy56.Step)({});
5985
6286
  Step.displayName = "Step";
5986
- var StepIndicator = (0, import_joy55.styled)(import_joy55.StepIndicator)({});
6287
+ var StepIndicator = (0, import_joy56.styled)(import_joy56.StepIndicator)({});
5987
6288
  StepIndicator.displayName = "StepIndicator";
5988
- var StyledStepper = (0, import_joy55.styled)(import_joy55.Stepper)(({ theme }) => ({
6289
+ var StyledStepper = (0, import_joy56.styled)(import_joy56.Stepper)(({ theme }) => ({
5989
6290
  "--StepIndicator-size": "24px",
5990
6291
  "--Step-gap": theme.spacing(2),
5991
6292
  "--joy-palette-success-solidBg": "var(--joy-palette-success-400)",
5992
- [`& .${import_joy55.stepIndicatorClasses.root}`]: {
6293
+ [`& .${import_joy56.stepIndicatorClasses.root}`]: {
5993
6294
  fontSize: "var(--ceed-fontSize-xs)"
5994
6295
  }
5995
6296
  }));
@@ -6006,31 +6307,31 @@ function Stepper(props) {
6006
6307
  stepOrientation = "horizontal"
6007
6308
  } = props;
6008
6309
  const effectiveStepOrientation = orientation === "vertical" ? "horizontal" : stepOrientation;
6009
- return /* @__PURE__ */ import_react45.default.createElement(
6310
+ return /* @__PURE__ */ import_react46.default.createElement(
6010
6311
  MotionStepper,
6011
6312
  {
6012
6313
  orientation,
6013
6314
  sx: (theme) => ({
6014
6315
  "--StepIndicator-size": "24px",
6015
6316
  "--Step-gap": theme.spacing(2),
6016
- [`& .${import_joy55.stepIndicatorClasses.root}`]: {
6317
+ [`& .${import_joy56.stepIndicatorClasses.root}`]: {
6017
6318
  fontSize: "var(--ceed-fontSize-xs)"
6018
6319
  },
6019
- [`& .${import_joy55.stepClasses.completed}`]: {
6320
+ [`& .${import_joy56.stepClasses.completed}`]: {
6020
6321
  "&::after": { bgcolor: activeLineColor },
6021
- [`& .${import_joy55.stepIndicatorClasses.root}`]: {
6322
+ [`& .${import_joy56.stepIndicatorClasses.root}`]: {
6022
6323
  bgcolor: activeColor
6023
6324
  }
6024
6325
  },
6025
- [`& .${import_joy55.stepClasses.active}`]: {
6326
+ [`& .${import_joy56.stepClasses.active}`]: {
6026
6327
  "&::after": { bgcolor: inactiveLineColor },
6027
- [`& .${import_joy55.stepIndicatorClasses.root}`]: {
6328
+ [`& .${import_joy56.stepIndicatorClasses.root}`]: {
6028
6329
  bgcolor: activeColor
6029
6330
  }
6030
6331
  },
6031
- [`& .${import_joy55.stepClasses.disabled}`]: {
6332
+ [`& .${import_joy56.stepClasses.disabled}`]: {
6032
6333
  "&::after": { bgcolor: inactiveLineColor },
6033
- [`& .${import_joy55.stepIndicatorClasses.root}`]: {
6334
+ [`& .${import_joy56.stepIndicatorClasses.root}`]: {
6034
6335
  bgcolor: theme.vars.palette.background.surface,
6035
6336
  borderColor: theme.vars.palette.neutral.outlinedBorder,
6036
6337
  borderWidth: "1px",
@@ -6045,23 +6346,23 @@ function Stepper(props) {
6045
6346
  const completed = activeStep > i + 1;
6046
6347
  const disabled = activeStep < i + 1;
6047
6348
  const hasContent = step.label || step.extraContent;
6048
- return /* @__PURE__ */ import_react45.default.createElement(
6349
+ return /* @__PURE__ */ import_react46.default.createElement(
6049
6350
  Step,
6050
6351
  {
6051
6352
  key: `step-${i}`,
6052
- indicator: /* @__PURE__ */ import_react45.default.createElement(StepIndicator, { variant: disabled ? "outlined" : "solid", color: disabled ? "neutral" : "primary" }, completed ? /* @__PURE__ */ import_react45.default.createElement(import_Check.default, null) : step.indicatorContent),
6353
+ indicator: /* @__PURE__ */ import_react46.default.createElement(StepIndicator, { variant: disabled ? "outlined" : "solid", color: disabled ? "neutral" : "primary" }, completed ? /* @__PURE__ */ import_react46.default.createElement(import_Check.default, null) : step.indicatorContent),
6053
6354
  active,
6054
6355
  completed,
6055
6356
  disabled,
6056
6357
  orientation: effectiveStepOrientation
6057
6358
  },
6058
- hasContent && /* @__PURE__ */ import_react45.default.createElement(
6359
+ hasContent && /* @__PURE__ */ import_react46.default.createElement(
6059
6360
  Stack_default,
6060
6361
  {
6061
6362
  sx: orientation === "horizontal" && effectiveStepOrientation === "vertical" ? { alignItems: "center" } : {}
6062
6363
  },
6063
- step.label && /* @__PURE__ */ import_react45.default.createElement(Typography_default, { level: "title-sm" }, step.label),
6064
- step.extraContent && /* @__PURE__ */ import_react45.default.createElement(Typography_default, { level: "body-xs" }, step.extraContent)
6364
+ step.label && /* @__PURE__ */ import_react46.default.createElement(Typography_default, { level: "title-sm" }, step.label),
6365
+ step.extraContent && /* @__PURE__ */ import_react46.default.createElement(Typography_default, { level: "body-xs" }, step.extraContent)
6065
6366
  )
6066
6367
  );
6067
6368
  })
@@ -6070,11 +6371,11 @@ function Stepper(props) {
6070
6371
  Stepper.displayName = "Stepper";
6071
6372
 
6072
6373
  // src/components/Switch/Switch.tsx
6073
- var import_react46 = __toESM(require("react"));
6074
- var import_joy56 = require("@mui/joy");
6374
+ var import_react47 = __toESM(require("react"));
6375
+ var import_joy57 = require("@mui/joy");
6075
6376
  var import_framer_motion29 = require("framer-motion");
6076
- var MotionSwitch = (0, import_framer_motion29.motion)(import_joy56.Switch);
6077
- var StyledThumb = (0, import_joy56.styled)(import_framer_motion29.motion.div)({
6377
+ var MotionSwitch = (0, import_framer_motion29.motion)(import_joy57.Switch);
6378
+ var StyledThumb = (0, import_joy57.styled)(import_framer_motion29.motion.div)({
6078
6379
  "--Icon-fontSize": "calc(var(--Switch-thumbSize) * 0.75)",
6079
6380
  display: "inline-flex",
6080
6381
  justifyContent: "center",
@@ -6087,19 +6388,19 @@ var StyledThumb = (0, import_joy56.styled)(import_framer_motion29.motion.div)({
6087
6388
  boxShadow: "var(--Switch-thumbShadow)",
6088
6389
  color: "var(--Switch-thumbColor)",
6089
6390
  backgroundColor: "var(--Switch-thumbBackground)",
6090
- [`&.${import_joy56.switchClasses.checked}`]: {
6391
+ [`&.${import_joy57.switchClasses.checked}`]: {
6091
6392
  left: "unset",
6092
6393
  right: "var(--Switch-thumbOffset)"
6093
6394
  }
6094
6395
  });
6095
- var Thumb = (props) => /* @__PURE__ */ import_react46.default.createElement(StyledThumb, { ...props, layout: true, transition: spring });
6396
+ var Thumb = (props) => /* @__PURE__ */ import_react47.default.createElement(StyledThumb, { ...props, layout: true, transition: spring });
6096
6397
  var spring = {
6097
6398
  type: "spring",
6098
6399
  stiffness: 700,
6099
6400
  damping: 30
6100
6401
  };
6101
6402
  var Switch = (props) => {
6102
- return /* @__PURE__ */ import_react46.default.createElement(
6403
+ return /* @__PURE__ */ import_react47.default.createElement(
6103
6404
  MotionSwitch,
6104
6405
  {
6105
6406
  ...props,
@@ -6113,32 +6414,32 @@ var Switch = (props) => {
6113
6414
  Switch.displayName = "Switch";
6114
6415
 
6115
6416
  // src/components/Tabs/Tabs.tsx
6116
- var import_react47 = __toESM(require("react"));
6117
- var import_joy57 = require("@mui/joy");
6118
- var StyledTabs = (0, import_joy57.styled)(import_joy57.Tabs)(({ theme }) => ({
6417
+ var import_react48 = __toESM(require("react"));
6418
+ var import_joy58 = require("@mui/joy");
6419
+ var StyledTabs = (0, import_joy58.styled)(import_joy58.Tabs)(({ theme }) => ({
6119
6420
  backgroundColor: theme.palette.background.body
6120
6421
  }));
6121
6422
  var Tabs = StyledTabs;
6122
6423
  Tabs.displayName = "Tabs";
6123
- var StyledTab = (0, import_joy57.styled)(import_joy57.Tab)(({ theme }) => ({
6424
+ var StyledTab = (0, import_joy58.styled)(import_joy58.Tab)(({ theme }) => ({
6124
6425
  gap: theme.spacing(2),
6125
- [`&:not(.${import_joy57.tabClasses.selected})`]: {
6426
+ [`&:not(.${import_joy58.tabClasses.selected})`]: {
6126
6427
  color: theme.palette.neutral[700]
6127
6428
  },
6128
- [`&.${import_joy57.tabClasses.variantPlain}`]: {
6429
+ [`&.${import_joy58.tabClasses.variantPlain}`]: {
6129
6430
  backgroundColor: theme.palette.background.body
6130
6431
  }
6131
6432
  }));
6132
- var Tab = (0, import_react47.forwardRef)(function Tab2({ startDecorator, endDecorator, children, ...props }, ref) {
6133
- return /* @__PURE__ */ import_react47.default.createElement(StyledTab, { ...props, ref }, startDecorator, children, endDecorator);
6433
+ var Tab = (0, import_react48.forwardRef)(function Tab2({ startDecorator, endDecorator, children, ...props }, ref) {
6434
+ return /* @__PURE__ */ import_react48.default.createElement(StyledTab, { ...props, ref }, startDecorator, children, endDecorator);
6134
6435
  });
6135
6436
  Tab.displayName = "Tab";
6136
- var TabList = import_joy57.TabList;
6137
- var TabPanel = import_joy57.TabPanel;
6437
+ var TabList = import_joy58.TabList;
6438
+ var TabPanel = import_joy58.TabPanel;
6138
6439
 
6139
6440
  // src/components/ThemeProvider/ThemeProvider.tsx
6140
- var import_react48 = __toESM(require("react"));
6141
- var import_joy58 = require("@mui/joy");
6441
+ var import_react49 = __toESM(require("react"));
6442
+ var import_joy59 = require("@mui/joy");
6142
6443
  var colorScheme = {
6143
6444
  palette: {
6144
6445
  danger: {
@@ -6191,7 +6492,7 @@ var colorScheme = {
6191
6492
  }
6192
6493
  }
6193
6494
  };
6194
- var defaultTheme = (0, import_joy58.extendTheme)({
6495
+ var defaultTheme = (0, import_joy59.extendTheme)({
6195
6496
  cssVarPrefix: "ceed",
6196
6497
  spacing: 4,
6197
6498
  breakpoints: {
@@ -6243,7 +6544,7 @@ var defaultTheme = (0, import_joy58.extendTheme)({
6243
6544
  },
6244
6545
  styleOverrides: {
6245
6546
  root: {
6246
- [`.${import_joy58.inputClasses.root}`]: {
6547
+ [`.${import_joy59.inputClasses.root}`]: {
6247
6548
  // NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
6248
6549
  "font-family": "monospace"
6249
6550
  }
@@ -6256,7 +6557,7 @@ var defaultTheme = (0, import_joy58.extendTheme)({
6256
6557
  },
6257
6558
  styleOverrides: {
6258
6559
  root: {
6259
- [`.${import_joy58.inputClasses.root}`]: {
6560
+ [`.${import_joy59.inputClasses.root}`]: {
6260
6561
  // NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
6261
6562
  "font-family": "monospace"
6262
6563
  }
@@ -6269,7 +6570,7 @@ var defaultTheme = (0, import_joy58.extendTheme)({
6269
6570
  },
6270
6571
  styleOverrides: {
6271
6572
  root: {
6272
- [`.${import_joy58.inputClasses.root}`]: {
6573
+ [`.${import_joy59.inputClasses.root}`]: {
6273
6574
  // NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
6274
6575
  "font-family": "monospace"
6275
6576
  }
@@ -6282,7 +6583,7 @@ var defaultTheme = (0, import_joy58.extendTheme)({
6282
6583
  },
6283
6584
  styleOverrides: {
6284
6585
  root: {
6285
- [`.${import_joy58.inputClasses.root}`]: {
6586
+ [`.${import_joy59.inputClasses.root}`]: {
6286
6587
  // NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
6287
6588
  "font-family": "monospace"
6288
6589
  }
@@ -6295,7 +6596,7 @@ var defaultTheme = (0, import_joy58.extendTheme)({
6295
6596
  },
6296
6597
  styleOverrides: {
6297
6598
  root: {
6298
- [`.${import_joy58.inputClasses.root}`]: {
6599
+ [`.${import_joy59.inputClasses.root}`]: {
6299
6600
  // NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
6300
6601
  "font-family": "monospace"
6301
6602
  }
@@ -6337,7 +6638,7 @@ var defaultTheme = (0, import_joy58.extendTheme)({
6337
6638
  outline: `${theme.palette.primary[500]} solid 2px`,
6338
6639
  outlineOffset: "-2px"
6339
6640
  },
6340
- [`& .${import_joy58.checkboxClasses.root}`]: {
6641
+ [`& .${import_joy59.checkboxClasses.root}`]: {
6341
6642
  verticalAlign: "middle"
6342
6643
  }
6343
6644
  })
@@ -6387,13 +6688,13 @@ var defaultTheme = (0, import_joy58.extendTheme)({
6387
6688
  });
6388
6689
  function ThemeProvider(props) {
6389
6690
  const theme = props.theme || defaultTheme;
6390
- return /* @__PURE__ */ import_react48.default.createElement(import_react48.default.Fragment, null, /* @__PURE__ */ import_react48.default.createElement(import_joy58.CssVarsProvider, { theme }, /* @__PURE__ */ import_react48.default.createElement(import_joy58.CssBaseline, null), props.children));
6691
+ return /* @__PURE__ */ import_react49.default.createElement(import_react49.default.Fragment, null, /* @__PURE__ */ import_react49.default.createElement(import_joy59.CssVarsProvider, { theme }, /* @__PURE__ */ import_react49.default.createElement(import_joy59.CssBaseline, null), props.children));
6391
6692
  }
6392
6693
  ThemeProvider.displayName = "ThemeProvider";
6393
6694
 
6394
6695
  // src/components/Uploader/Uploader.tsx
6395
- var import_react49 = __toESM(require("react"));
6396
- var import_joy59 = require("@mui/joy");
6696
+ var import_react50 = __toESM(require("react"));
6697
+ var import_joy60 = require("@mui/joy");
6397
6698
  var import_CloudUploadRounded = __toESM(require("@mui/icons-material/CloudUploadRounded"));
6398
6699
  var import_UploadFileRounded = __toESM(require("@mui/icons-material/UploadFileRounded"));
6399
6700
  var import_ClearRounded = __toESM(require("@mui/icons-material/ClearRounded"));
@@ -6415,7 +6716,7 @@ var esmFiles = {
6415
6716
  "@atlaskit/pragmatic-drag-and-drop/dist/esm/entry-point/prevent-unhandled.js"
6416
6717
  )
6417
6718
  };
6418
- var VisuallyHiddenInput = (0, import_joy59.styled)(import_joy59.Input)({
6719
+ var VisuallyHiddenInput = (0, import_joy60.styled)(import_joy60.Input)({
6419
6720
  width: "1px",
6420
6721
  height: "1px",
6421
6722
  overflow: "hidden",
@@ -6424,18 +6725,18 @@ var VisuallyHiddenInput = (0, import_joy59.styled)(import_joy59.Input)({
6424
6725
  clipPath: "inset(50%)",
6425
6726
  position: "absolute"
6426
6727
  });
6427
- var PreviewRoot = (0, import_joy59.styled)(Stack_default, {
6728
+ var PreviewRoot = (0, import_joy60.styled)(Stack_default, {
6428
6729
  name: "Uploader",
6429
6730
  slot: "PreviewRoot"
6430
6731
  })({});
6431
- var UploadCard = (0, import_joy59.styled)(Card, {
6732
+ var UploadCard = (0, import_joy60.styled)(Card, {
6432
6733
  name: "Uploader",
6433
6734
  slot: "UploadCard"
6434
6735
  })(({ theme }) => ({
6435
6736
  padding: theme.spacing(2.5),
6436
6737
  border: `1px solid ${theme.palette.neutral.outlinedBorder}`
6437
6738
  }));
6438
- var UploadFileIcon = (0, import_joy59.styled)(import_UploadFileRounded.default, {
6739
+ var UploadFileIcon = (0, import_joy60.styled)(import_UploadFileRounded.default, {
6439
6740
  name: "Uploader",
6440
6741
  slot: "UploadFileIcon"
6441
6742
  })(({ theme }) => ({
@@ -6443,7 +6744,7 @@ var UploadFileIcon = (0, import_joy59.styled)(import_UploadFileRounded.default,
6443
6744
  width: "32px",
6444
6745
  height: "32px"
6445
6746
  }));
6446
- var ClearIcon2 = (0, import_joy59.styled)(import_ClearRounded.default, {
6747
+ var ClearIcon2 = (0, import_joy60.styled)(import_ClearRounded.default, {
6447
6748
  name: "Uploader",
6448
6749
  slot: "ClearIcon"
6449
6750
  })(({ theme }) => ({
@@ -6469,7 +6770,7 @@ var getFileSize = (n) => {
6469
6770
  };
6470
6771
  var Preview = (props) => {
6471
6772
  const { files, uploaded, onDelete } = props;
6472
- return /* @__PURE__ */ import_react49.default.createElement(PreviewRoot, { gap: 1 }, [...uploaded, ...files].map((file) => /* @__PURE__ */ import_react49.default.createElement(UploadCard, { key: file.name, size: "sm", color: "neutral" }, /* @__PURE__ */ import_react49.default.createElement(Stack_default, { direction: "row", alignItems: "center", gap: 2 }, /* @__PURE__ */ import_react49.default.createElement(UploadFileIcon, null), /* @__PURE__ */ import_react49.default.createElement(Stack_default, { flex: "1", sx: { overflow: "hidden" } }, /* @__PURE__ */ import_react49.default.createElement(
6773
+ return /* @__PURE__ */ import_react50.default.createElement(PreviewRoot, { gap: 1 }, [...uploaded, ...files].map((file) => /* @__PURE__ */ import_react50.default.createElement(UploadCard, { key: file.name, size: "sm", color: "neutral" }, /* @__PURE__ */ import_react50.default.createElement(Stack_default, { direction: "row", alignItems: "center", gap: 2 }, /* @__PURE__ */ import_react50.default.createElement(UploadFileIcon, null), /* @__PURE__ */ import_react50.default.createElement(Stack_default, { flex: "1", sx: { overflow: "hidden" } }, /* @__PURE__ */ import_react50.default.createElement(
6473
6774
  Typography_default,
6474
6775
  {
6475
6776
  level: "body-sm",
@@ -6481,15 +6782,15 @@ var Preview = (props) => {
6481
6782
  }
6482
6783
  },
6483
6784
  file.name
6484
- ), !!file.size && /* @__PURE__ */ import_react49.default.createElement(Typography_default, { level: "body-xs", fontWeight: "300", lineHeight: "1.33", textColor: "text.tertiary" }, getFileSize(file.size))), /* @__PURE__ */ import_react49.default.createElement(IconButton_default, { onClick: () => onDelete?.(file) }, /* @__PURE__ */ import_react49.default.createElement(ClearIcon2, null))))));
6785
+ ), !!file.size && /* @__PURE__ */ import_react50.default.createElement(Typography_default, { level: "body-xs", fontWeight: "300", lineHeight: "1.33", textColor: "text.tertiary" }, getFileSize(file.size))), /* @__PURE__ */ import_react50.default.createElement(IconButton_default, { onClick: () => onDelete?.(file) }, /* @__PURE__ */ import_react50.default.createElement(ClearIcon2, null))))));
6485
6786
  };
6486
- var UploaderRoot = (0, import_joy59.styled)(Stack_default, {
6787
+ var UploaderRoot = (0, import_joy60.styled)(Stack_default, {
6487
6788
  name: "Uploader",
6488
6789
  slot: "root"
6489
6790
  })(({ theme }) => ({
6490
6791
  gap: theme.spacing(2)
6491
6792
  }));
6492
- var FileDropZone = (0, import_joy59.styled)(Sheet_default, {
6793
+ var FileDropZone = (0, import_joy60.styled)(Sheet_default, {
6493
6794
  name: "Uploader",
6494
6795
  slot: "dropZone",
6495
6796
  shouldForwardProp: (prop) => prop !== "error" && prop !== "disabled"
@@ -6510,7 +6811,7 @@ var FileDropZone = (0, import_joy59.styled)(Sheet_default, {
6510
6811
  }
6511
6812
  })
6512
6813
  );
6513
- var UploaderIcon = (0, import_joy59.styled)(import_CloudUploadRounded.default, {
6814
+ var UploaderIcon = (0, import_joy60.styled)(import_CloudUploadRounded.default, {
6514
6815
  name: "Uploader",
6515
6816
  slot: "iconContainer",
6516
6817
  shouldForwardProp: (prop) => prop !== "error" && prop !== "disabled"
@@ -6524,7 +6825,7 @@ var UploaderIcon = (0, import_joy59.styled)(import_CloudUploadRounded.default, {
6524
6825
  }
6525
6826
  })
6526
6827
  );
6527
- var Uploader = import_react49.default.memo(
6828
+ var Uploader = import_react50.default.memo(
6528
6829
  (props) => {
6529
6830
  const {
6530
6831
  accept,
@@ -6541,14 +6842,14 @@ var Uploader = import_react49.default.memo(
6541
6842
  error: errorProp,
6542
6843
  helperText: helperTextProp
6543
6844
  } = props;
6544
- const dropZoneRef = (0, import_react49.useRef)(null);
6545
- const inputRef = (0, import_react49.useRef)(null);
6546
- const [errorText, setErrorText] = (0, import_react49.useState)();
6547
- const [files, setFiles] = (0, import_react49.useState)([]);
6548
- const [uploaded, setUploaded] = (0, import_react49.useState)(props.uploaded || []);
6549
- const [previewState, setPreviewState] = (0, import_react49.useState)("idle");
6550
- const accepts = (0, import_react49.useMemo)(() => accept.split(",").map((accept2) => accept2.trim()), [accept]);
6551
- const parsedAccepts = (0, import_react49.useMemo)(
6845
+ const dropZoneRef = (0, import_react50.useRef)(null);
6846
+ const inputRef = (0, import_react50.useRef)(null);
6847
+ const [errorText, setErrorText] = (0, import_react50.useState)();
6848
+ const [files, setFiles] = (0, import_react50.useState)([]);
6849
+ const [uploaded, setUploaded] = (0, import_react50.useState)(props.uploaded || []);
6850
+ const [previewState, setPreviewState] = (0, import_react50.useState)("idle");
6851
+ const accepts = (0, import_react50.useMemo)(() => accept.split(",").map((accept2) => accept2.trim()), [accept]);
6852
+ const parsedAccepts = (0, import_react50.useMemo)(
6552
6853
  () => accepts.flatMap((type) => {
6553
6854
  if (["image/*", "video/*", "audio/*"].includes(type)) {
6554
6855
  return ALL_EXTENSIONS_BY_TYPE[type];
@@ -6557,7 +6858,7 @@ var Uploader = import_react49.default.memo(
6557
6858
  }),
6558
6859
  [accepts]
6559
6860
  );
6560
- const helperText = (0, import_react49.useMemo)(() => {
6861
+ const helperText = (0, import_react50.useMemo)(() => {
6561
6862
  if (helperTextProp) {
6562
6863
  return helperTextProp;
6563
6864
  }
@@ -6587,12 +6888,12 @@ var Uploader = import_react49.default.memo(
6587
6888
  }
6588
6889
  return helperTexts.join(", ");
6589
6890
  }, [accepts, maxFileTotalSize, maxCount, helperTextProp]);
6590
- const error = (0, import_react49.useMemo)(() => !!errorText || errorProp, [errorProp, errorText]);
6591
- const showDropZone = (0, import_react49.useMemo)(
6891
+ const error = (0, import_react50.useMemo)(() => !!errorText || errorProp, [errorProp, errorText]);
6892
+ const showDropZone = (0, import_react50.useMemo)(
6592
6893
  () => !maxCount || maxCount && [...uploaded, ...files].length !== maxCount,
6593
6894
  [files, maxCount, uploaded]
6594
6895
  );
6595
- const addFiles = (0, import_react49.useCallback)(
6896
+ const addFiles = (0, import_react50.useCallback)(
6596
6897
  (uploads) => {
6597
6898
  try {
6598
6899
  const types = parsedAccepts.map((type) => type.replace(".", "")) || [];
@@ -6637,7 +6938,7 @@ var Uploader = import_react49.default.memo(
6637
6938
  },
6638
6939
  [files, uploaded, maxCount, parsedAccepts, maxFileSize, maxFileTotalSize, name, onChange]
6639
6940
  );
6640
- (0, import_react49.useEffect)(() => {
6941
+ (0, import_react50.useEffect)(() => {
6641
6942
  if (!dropZoneRef.current || disabled) {
6642
6943
  return;
6643
6944
  }
@@ -6675,7 +6976,7 @@ var Uploader = import_react49.default.memo(
6675
6976
  );
6676
6977
  return () => cleanup?.();
6677
6978
  }, [disabled, addFiles]);
6678
- (0, import_react49.useEffect)(() => {
6979
+ (0, import_react50.useEffect)(() => {
6679
6980
  if (inputRef.current && minCount) {
6680
6981
  if (files.length < minCount) {
6681
6982
  inputRef.current.setCustomValidity(`At least ${minCount} files are required.`);
@@ -6684,14 +6985,14 @@ var Uploader = import_react49.default.memo(
6684
6985
  }
6685
6986
  }
6686
6987
  }, [inputRef, files, minCount]);
6687
- const handleFileChanged = (0, import_react49.useCallback)(
6988
+ const handleFileChanged = (0, import_react50.useCallback)(
6688
6989
  (event) => {
6689
6990
  const files2 = Array.from(event.target.files || []);
6690
6991
  addFiles(files2);
6691
6992
  },
6692
6993
  [addFiles]
6693
6994
  );
6694
- const handleDeleteFile = (0, import_react49.useCallback)(
6995
+ const handleDeleteFile = (0, import_react50.useCallback)(
6695
6996
  (deletedFile) => {
6696
6997
  if (deletedFile instanceof File) {
6697
6998
  setFiles((current) => {
@@ -6711,10 +7012,10 @@ var Uploader = import_react49.default.memo(
6711
7012
  },
6712
7013
  [name, onChange, onDelete]
6713
7014
  );
6714
- const handleUploaderButtonClick = (0, import_react49.useCallback)(() => {
7015
+ const handleUploaderButtonClick = (0, import_react50.useCallback)(() => {
6715
7016
  inputRef.current?.click();
6716
7017
  }, []);
6717
- const uploader = /* @__PURE__ */ import_react49.default.createElement(
7018
+ const uploader = /* @__PURE__ */ import_react50.default.createElement(
6718
7019
  FileDropZone,
6719
7020
  {
6720
7021
  state: previewState,
@@ -6723,8 +7024,8 @@ var Uploader = import_react49.default.memo(
6723
7024
  ref: dropZoneRef,
6724
7025
  onClick: handleUploaderButtonClick
6725
7026
  },
6726
- /* @__PURE__ */ import_react49.default.createElement(Stack_default, { alignItems: "center", gap: 1 }, /* @__PURE__ */ import_react49.default.createElement(UploaderIcon, { state: previewState, error: !!(error || errorText), disabled })),
6727
- /* @__PURE__ */ import_react49.default.createElement(
7027
+ /* @__PURE__ */ import_react50.default.createElement(Stack_default, { alignItems: "center", gap: 1 }, /* @__PURE__ */ import_react50.default.createElement(UploaderIcon, { state: previewState, error: !!(error || errorText), disabled })),
7028
+ /* @__PURE__ */ import_react50.default.createElement(
6728
7029
  VisuallyHiddenInput,
6729
7030
  {
6730
7031
  disabled,
@@ -6747,7 +7048,7 @@ var Uploader = import_react49.default.memo(
6747
7048
  }
6748
7049
  )
6749
7050
  );
6750
- return /* @__PURE__ */ import_react49.default.createElement(UploaderRoot, null, showDropZone && /* @__PURE__ */ import_react49.default.createElement(FormControl_default, { size, error: !!(error || errorText), disabled, required: !!minCount }, label && /* @__PURE__ */ import_react49.default.createElement(FormLabel_default, null, label), uploader, /* @__PURE__ */ import_react49.default.createElement(FormHelperText_default, null, /* @__PURE__ */ import_react49.default.createElement(Stack_default, null, errorText && /* @__PURE__ */ import_react49.default.createElement("div", null, errorText), /* @__PURE__ */ import_react49.default.createElement("div", null, helperText)))), [...uploaded, ...files].length > 0 && /* @__PURE__ */ import_react49.default.createElement(Preview, { files, uploaded, onDelete: handleDeleteFile }));
7051
+ return /* @__PURE__ */ import_react50.default.createElement(UploaderRoot, null, showDropZone && /* @__PURE__ */ import_react50.default.createElement(FormControl_default, { size, error: !!(error || errorText), disabled, required: !!minCount }, label && /* @__PURE__ */ import_react50.default.createElement(FormLabel_default, null, label), uploader, /* @__PURE__ */ import_react50.default.createElement(FormHelperText_default, null, /* @__PURE__ */ import_react50.default.createElement(Stack_default, null, errorText && /* @__PURE__ */ import_react50.default.createElement("div", null, errorText), /* @__PURE__ */ import_react50.default.createElement("div", null, helperText)))), [...uploaded, ...files].length > 0 && /* @__PURE__ */ import_react50.default.createElement(Preview, { files, uploaded, onDelete: handleDeleteFile }));
6751
7052
  }
6752
7053
  );
6753
7054
  Uploader.displayName = "Uploader";