@ceed/cds 1.24.1-next.3 → 1.25.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 (63) 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/styled.d.ts +3 -1
  6. package/dist/components/DataTable/types.d.ts +1 -0
  7. package/dist/components/RadioTileGroup/RadioTileGroup.d.ts +56 -0
  8. package/dist/components/RadioTileGroup/index.d.ts +3 -0
  9. package/dist/components/data-display/DataTable.md +77 -1
  10. package/dist/components/data-display/InfoSign.md +74 -91
  11. package/dist/components/data-display/Typography.md +411 -94
  12. package/dist/components/feedback/CircularProgress.md +257 -0
  13. package/dist/components/feedback/Dialog.md +76 -62
  14. package/dist/components/feedback/Modal.md +430 -138
  15. package/dist/components/feedback/Skeleton.md +280 -0
  16. package/dist/components/feedback/llms.txt +2 -0
  17. package/dist/components/index.d.ts +1 -0
  18. package/dist/components/inputs/Autocomplete.md +356 -107
  19. package/dist/components/inputs/ButtonGroup.md +115 -104
  20. package/dist/components/inputs/CurrencyInput.md +183 -5
  21. package/dist/components/inputs/DatePicker.md +108 -431
  22. package/dist/components/inputs/DateRangePicker.md +131 -492
  23. package/dist/components/inputs/FilterableCheckboxGroup.md +145 -19
  24. package/dist/components/inputs/FormControl.md +361 -0
  25. package/dist/components/inputs/IconButton.md +137 -88
  26. package/dist/components/inputs/Input.md +204 -73
  27. package/dist/components/inputs/MonthPicker.md +95 -422
  28. package/dist/components/inputs/MonthRangePicker.md +89 -466
  29. package/dist/components/inputs/PercentageInput.md +185 -16
  30. package/dist/components/inputs/RadioButton.md +163 -35
  31. package/dist/components/inputs/RadioList.md +241 -0
  32. package/dist/components/inputs/RadioTileGroup.md +507 -0
  33. package/dist/components/inputs/Select.md +222 -326
  34. package/dist/components/inputs/Slider.md +334 -0
  35. package/dist/components/inputs/Switch.md +143 -376
  36. package/dist/components/inputs/Textarea.md +213 -10
  37. package/dist/components/inputs/Uploader/Uploader.md +145 -66
  38. package/dist/components/inputs/llms.txt +4 -0
  39. package/dist/components/navigation/Breadcrumbs.md +57 -308
  40. package/dist/components/navigation/Drawer.md +180 -0
  41. package/dist/components/navigation/Dropdown.md +98 -215
  42. package/dist/components/navigation/IconMenuButton.md +40 -502
  43. package/dist/components/navigation/InsetDrawer.md +281 -650
  44. package/dist/components/navigation/Link.md +31 -348
  45. package/dist/components/navigation/Menu.md +92 -285
  46. package/dist/components/navigation/MenuButton.md +55 -448
  47. package/dist/components/navigation/Pagination.md +47 -338
  48. package/dist/components/navigation/Stepper.md +160 -28
  49. package/dist/components/navigation/Tabs.md +57 -316
  50. package/dist/components/surfaces/Accordions.md +49 -804
  51. package/dist/components/surfaces/Card.md +97 -157
  52. package/dist/components/surfaces/Divider.md +83 -234
  53. package/dist/components/surfaces/Sheet.md +153 -328
  54. package/dist/guides/ThemeProvider.md +89 -0
  55. package/dist/guides/llms.txt +9 -0
  56. package/dist/index.browser.js +224 -0
  57. package/dist/index.browser.js.map +7 -0
  58. package/dist/index.cjs +648 -390
  59. package/dist/index.d.ts +1 -1
  60. package/dist/index.js +563 -361
  61. package/dist/llms.txt +9 -0
  62. package/framer/index.js +1 -163
  63. 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,
@@ -2115,19 +2211,29 @@ function getTextAlign(props) {
2115
2211
  var numberFormatter = (value) => "Intl" in window ? new Intl.NumberFormat().format(value) : value;
2116
2212
 
2117
2213
  // 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");
2214
+ var import_react19 = __toESM(require("react"));
2215
+ var import_joy25 = require("@mui/joy");
2216
+ var import_framer_motion17 = require("framer-motion");
2121
2217
  var import_ArrowUpwardRounded = __toESM(require("@mui/icons-material/ArrowUpwardRounded"));
2122
- var EllipsisDiv = (0, import_joy24.styled)("div", {
2218
+ var EllipsisDiv = (0, import_joy25.styled)("div", {
2123
2219
  name: "DataTable",
2124
- slot: "textEllipsis"
2125
- })({
2126
- overflow: "hidden",
2127
- textOverflow: "ellipsis",
2128
- whiteSpace: "nowrap"
2129
- });
2130
- var OverlayWrapper = (0, import_joy24.styled)("tr", {
2220
+ slot: "textEllipsis",
2221
+ shouldForwardProp: (prop) => prop !== "lineClamp"
2222
+ })(
2223
+ ({ lineClamp }) => lineClamp && lineClamp > 1 ? {
2224
+ overflow: "hidden",
2225
+ display: "-webkit-box !important",
2226
+ WebkitBoxOrient: "vertical",
2227
+ WebkitLineClamp: lineClamp,
2228
+ whiteSpace: "normal",
2229
+ overflowWrap: "anywhere"
2230
+ } : {
2231
+ overflow: "hidden",
2232
+ textOverflow: "ellipsis",
2233
+ whiteSpace: "nowrap"
2234
+ }
2235
+ );
2236
+ var OverlayWrapper = (0, import_joy25.styled)("tr", {
2131
2237
  name: "DataTable",
2132
2238
  slot: "overlayWrapper"
2133
2239
  })({
@@ -2142,7 +2248,7 @@ var OverlayWrapper = (0, import_joy24.styled)("tr", {
2142
2248
  border: "none !important"
2143
2249
  }
2144
2250
  });
2145
- var VirtualizedTableBody = (0, import_joy24.styled)("tbody", {
2251
+ var VirtualizedTableBody = (0, import_joy25.styled)("tbody", {
2146
2252
  name: "DataTable",
2147
2253
  slot: "tableBody"
2148
2254
  })({
@@ -2151,21 +2257,21 @@ var VirtualizedTableBody = (0, import_joy24.styled)("tbody", {
2151
2257
  display: "block",
2152
2258
  height: "0.01em"
2153
2259
  },
2154
- [`& .${import_joy24.buttonClasses.root}`]: {
2260
+ [`& .${import_joy25.buttonClasses.root}`]: {
2155
2261
  "--Button-minHeight": "26px",
2156
2262
  "--Button-paddingBlock": "0.25rem",
2157
2263
  lineHeight: 1,
2158
2264
  marginTop: "-2px",
2159
2265
  marginBottom: "-2px"
2160
2266
  },
2161
- [`& .${import_joy24.iconButtonClasses.root}`]: {
2267
+ [`& .${import_joy25.iconButtonClasses.root}`]: {
2162
2268
  "--IconButton-size": "26px",
2163
2269
  verticalAlign: "middle",
2164
2270
  marginTop: "-2px",
2165
2271
  marginBottom: "-2px"
2166
2272
  }
2167
2273
  });
2168
- var StyledTableRow = (0, import_joy24.styled)("tr", {
2274
+ var StyledTableRow = (0, import_joy25.styled)("tr", {
2169
2275
  name: "DataTable",
2170
2276
  slot: "tableRow",
2171
2277
  shouldForwardProp: (prop) => prop !== "striped"
@@ -2184,17 +2290,17 @@ var StyledTableRow = (0, import_joy24.styled)("tr", {
2184
2290
  }
2185
2291
  }
2186
2292
  }));
2187
- var Asterisk = (0, import_joy24.styled)("span", {
2293
+ var Asterisk = (0, import_joy25.styled)("span", {
2188
2294
  name: "DataTable",
2189
2295
  slot: "headCellAsterisk"
2190
2296
  })(({ theme }) => ({
2191
2297
  color: "var(--ceed-palette-danger-500)",
2192
2298
  marginLeft: theme.spacing(0.5)
2193
2299
  }));
2194
- var StyledTh = (0, import_joy24.styled)(import_framer_motion16.motion.th)(({ theme }) => ({
2300
+ var StyledTh = (0, import_joy25.styled)(import_framer_motion17.motion.th)(({ theme }) => ({
2195
2301
  boxShadow: "1px 0 var(--TableCell-borderColor)"
2196
2302
  }));
2197
- var StyledTd = (0, import_joy24.styled)("td")(({ theme }) => ({
2303
+ var StyledTd = (0, import_joy25.styled)("td")(({ theme }) => ({
2198
2304
  transition: `box-shadow 0.3s`,
2199
2305
  "&:not(.is-last-left):not(.is-last-right)": {
2200
2306
  boxShadow: "1px 0 var(--TableCell-borderColor)"
@@ -2210,9 +2316,9 @@ var StyledTd = (0, import_joy24.styled)("td")(({ theme }) => ({
2210
2316
  }
2211
2317
  }
2212
2318
  }));
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(
2319
+ var MotionSortIcon = (0, import_framer_motion17.motion)(import_ArrowUpwardRounded.default);
2320
+ var DefaultLoadingOverlay = () => /* @__PURE__ */ import_react19.default.createElement(import_joy25.LinearProgress, { value: 8, variant: "plain" });
2321
+ var Resizer = (ref, targetRef = ref) => /* @__PURE__ */ import_react19.default.createElement(
2216
2322
  Box_default,
2217
2323
  {
2218
2324
  sx: {
@@ -2249,24 +2355,24 @@ var import_joy32 = require("@mui/joy");
2249
2355
  var import_framer_motion21 = require("framer-motion");
2250
2356
 
2251
2357
  // src/components/DatePicker/DatePicker.tsx
2252
- var import_react19 = __toESM(require("react"));
2358
+ var import_react20 = __toESM(require("react"));
2253
2359
  var import_react_imask = require("react-imask");
2254
2360
  var import_CalendarToday = __toESM(require("@mui/icons-material/CalendarToday"));
2255
- var import_joy27 = require("@mui/joy");
2361
+ var import_joy28 = require("@mui/joy");
2256
2362
  var import_base3 = require("@mui/base");
2257
2363
 
2258
2364
  // src/components/Sheet/Sheet.tsx
2259
- var import_joy25 = require("@mui/joy");
2260
- var Sheet = import_joy25.Sheet;
2365
+ var import_joy26 = require("@mui/joy");
2366
+ var Sheet = import_joy26.Sheet;
2261
2367
 
2262
2368
  // src/components/Sheet/index.ts
2263
2369
  var Sheet_default = Sheet;
2264
2370
 
2265
2371
  // 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 }) => ({
2372
+ var import_joy27 = require("@mui/joy");
2373
+ var import_framer_motion18 = require("framer-motion");
2374
+ var MotionDialogActions = (0, import_framer_motion18.motion)(import_joy27.DialogActions);
2375
+ var StyledDialogActions = (0, import_joy27.styled)(MotionDialogActions)(({ theme }) => ({
2270
2376
  padding: theme.spacing(2),
2271
2377
  gap: theme.spacing(2),
2272
2378
  flexDirection: "row",
@@ -2279,7 +2385,7 @@ DialogActions.displayName = "DialogActions";
2279
2385
  var DialogActions_default = DialogActions;
2280
2386
 
2281
2387
  // src/components/DatePicker/DatePicker.tsx
2282
- var CalendarButton = (0, import_joy27.styled)(IconButton_default, {
2388
+ var CalendarButton = (0, import_joy28.styled)(IconButton_default, {
2283
2389
  name: "DatePicker",
2284
2390
  slot: "calendarButton"
2285
2391
  })(({ theme }) => ({
@@ -2289,13 +2395,13 @@ var CalendarButton = (0, import_joy27.styled)(IconButton_default, {
2289
2395
  outline: `${theme.getCssVar("focus-thickness")} solid ${theme.getCssVar("palette-focusVisible")}`
2290
2396
  }
2291
2397
  }));
2292
- var StyledPopper = (0, import_joy27.styled)(import_base3.Popper, {
2398
+ var StyledPopper = (0, import_joy28.styled)(import_base3.Popper, {
2293
2399
  name: "DatePicker",
2294
2400
  slot: "popper"
2295
2401
  })(({ theme }) => ({
2296
2402
  zIndex: theme.zIndex.tooltip
2297
2403
  }));
2298
- var CalendarSheet = (0, import_joy27.styled)(Sheet_default, {
2404
+ var CalendarSheet = (0, import_joy28.styled)(Sheet_default, {
2299
2405
  name: "DatePicker",
2300
2406
  slot: "sheet",
2301
2407
  overridesResolver: (props, styles) => styles.root
@@ -2304,7 +2410,7 @@ var CalendarSheet = (0, import_joy27.styled)(Sheet_default, {
2304
2410
  boxShadow: theme.shadow.md,
2305
2411
  borderRadius: theme.radius.md
2306
2412
  }));
2307
- var DatePickerRoot = (0, import_joy27.styled)("div", {
2413
+ var DatePickerRoot = (0, import_joy28.styled)("div", {
2308
2414
  name: "DatePicker",
2309
2415
  slot: "root",
2310
2416
  overridesResolver: (props, styles) => styles.root
@@ -2361,9 +2467,9 @@ function parseDate(dateString, format) {
2361
2467
  var formatToPattern = (format) => {
2362
2468
  return format.replace(/YYYY/g, "Y").replace(/MM/g, "M").replace(/DD/g, "D").replace(/[^YMD\s]/g, (match) => `${match}\``);
2363
2469
  };
2364
- var TextMaskAdapter3 = import_react19.default.forwardRef(function TextMaskAdapter4(props, ref) {
2470
+ var TextMaskAdapter3 = import_react20.default.forwardRef(function TextMaskAdapter4(props, ref) {
2365
2471
  const { onChange, format, ...other } = props;
2366
- return /* @__PURE__ */ import_react19.default.createElement(
2472
+ return /* @__PURE__ */ import_react20.default.createElement(
2367
2473
  import_react_imask.IMaskInput,
2368
2474
  {
2369
2475
  ...other,
@@ -2398,8 +2504,8 @@ var TextMaskAdapter3 = import_react19.default.forwardRef(function TextMaskAdapte
2398
2504
  }
2399
2505
  );
2400
2506
  });
2401
- var DatePicker = (0, import_react19.forwardRef)((inProps, ref) => {
2402
- const props = (0, import_joy27.useThemeProps)({ props: inProps, name: "DatePicker" });
2507
+ var DatePicker = (0, import_react20.forwardRef)((inProps, ref) => {
2508
+ const props = (0, import_joy28.useThemeProps)({ props: inProps, name: "DatePicker" });
2403
2509
  const {
2404
2510
  onChange,
2405
2511
  disabled,
@@ -2423,24 +2529,24 @@ var DatePicker = (0, import_react19.forwardRef)((inProps, ref) => {
2423
2529
  shouldDisableDate,
2424
2530
  ...innerProps
2425
2531
  } = props;
2426
- const innerRef = (0, import_react19.useRef)(null);
2427
- const buttonRef = (0, import_react19.useRef)(null);
2532
+ const innerRef = (0, import_react20.useRef)(null);
2533
+ const buttonRef = (0, import_react20.useRef)(null);
2428
2534
  const [value, setValue] = useControlledState(
2429
2535
  props.value,
2430
2536
  props.defaultValue || "",
2431
- (0, import_react19.useCallback)((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
2537
+ (0, import_react20.useCallback)((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
2432
2538
  );
2433
- const [displayValue, setDisplayValue] = (0, import_react19.useState)(
2539
+ const [displayValue, setDisplayValue] = (0, import_react20.useState)(
2434
2540
  () => value ? formatValueString(parseDate(value, format), displayFormat) : ""
2435
2541
  );
2436
- const [anchorEl, setAnchorEl] = (0, import_react19.useState)(null);
2542
+ const [anchorEl, setAnchorEl] = (0, import_react20.useState)(null);
2437
2543
  const open = Boolean(anchorEl);
2438
- (0, import_react19.useEffect)(() => {
2544
+ (0, import_react20.useEffect)(() => {
2439
2545
  if (!anchorEl) {
2440
2546
  innerRef.current?.blur();
2441
2547
  }
2442
2548
  }, [anchorEl, innerRef]);
2443
- (0, import_react19.useEffect)(() => {
2549
+ (0, import_react20.useEffect)(() => {
2444
2550
  if (value === "") {
2445
2551
  setDisplayValue("");
2446
2552
  return;
@@ -2450,8 +2556,8 @@ var DatePicker = (0, import_react19.forwardRef)((inProps, ref) => {
2450
2556
  setDisplayValue(formattedValue);
2451
2557
  }
2452
2558
  }, [displayFormat, displayValue, format, value]);
2453
- (0, import_react19.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
2454
- const handleChange = (0, import_react19.useCallback)(
2559
+ (0, import_react20.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
2560
+ const handleChange = (0, import_react20.useCallback)(
2455
2561
  (event) => {
2456
2562
  const value2 = event.target.value;
2457
2563
  setDisplayValue(value2 ? formatValueString(parseDate(value2, format), displayFormat) : value2);
@@ -2459,7 +2565,7 @@ var DatePicker = (0, import_react19.forwardRef)((inProps, ref) => {
2459
2565
  },
2460
2566
  [displayFormat, format, setValue]
2461
2567
  );
2462
- const handleDisplayInputChange = (0, import_react19.useCallback)(
2568
+ const handleDisplayInputChange = (0, import_react20.useCallback)(
2463
2569
  (event) => {
2464
2570
  if (event.target.value === "") {
2465
2571
  handleChange({
@@ -2484,7 +2590,7 @@ var DatePicker = (0, import_react19.forwardRef)((inProps, ref) => {
2484
2590
  },
2485
2591
  [displayFormat, format, handleChange, props.name]
2486
2592
  );
2487
- const handleCalendarToggle = (0, import_react19.useCallback)(
2593
+ const handleCalendarToggle = (0, import_react20.useCallback)(
2488
2594
  (event) => {
2489
2595
  setAnchorEl(anchorEl ? null : event.currentTarget);
2490
2596
  setTimeout(() => {
@@ -2493,7 +2599,7 @@ var DatePicker = (0, import_react19.forwardRef)((inProps, ref) => {
2493
2599
  },
2494
2600
  [anchorEl, setAnchorEl, innerRef]
2495
2601
  );
2496
- const handleInputMouseDown = (0, import_react19.useCallback)(
2602
+ const handleInputMouseDown = (0, import_react20.useCallback)(
2497
2603
  (event) => {
2498
2604
  if (inputReadOnly) {
2499
2605
  event.preventDefault();
@@ -2502,7 +2608,7 @@ var DatePicker = (0, import_react19.forwardRef)((inProps, ref) => {
2502
2608
  },
2503
2609
  [inputReadOnly, buttonRef]
2504
2610
  );
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(
2611
+ 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
2612
  Input_default,
2507
2613
  {
2508
2614
  ...innerProps,
@@ -2530,7 +2636,7 @@ var DatePicker = (0, import_react19.forwardRef)((inProps, ref) => {
2530
2636
  },
2531
2637
  className,
2532
2638
  sx,
2533
- endDecorator: /* @__PURE__ */ import_react19.default.createElement(
2639
+ endDecorator: /* @__PURE__ */ import_react20.default.createElement(
2534
2640
  CalendarButton,
2535
2641
  {
2536
2642
  ref: buttonRef,
@@ -2542,13 +2648,13 @@ var DatePicker = (0, import_react19.forwardRef)((inProps, ref) => {
2542
2648
  "aria-expanded": open,
2543
2649
  disabled
2544
2650
  },
2545
- /* @__PURE__ */ import_react19.default.createElement(import_CalendarToday.default, null)
2651
+ /* @__PURE__ */ import_react20.default.createElement(import_CalendarToday.default, null)
2546
2652
  ),
2547
2653
  label,
2548
2654
  helperText,
2549
2655
  readOnly: readOnly || inputReadOnly
2550
2656
  }
2551
- ), open && /* @__PURE__ */ import_react19.default.createElement(import_base3.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react19.default.createElement(
2657
+ ), open && /* @__PURE__ */ import_react20.default.createElement(import_base3.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react20.default.createElement(
2552
2658
  StyledPopper,
2553
2659
  {
2554
2660
  id: "date-picker-popper",
@@ -2567,7 +2673,7 @@ var DatePicker = (0, import_react19.forwardRef)((inProps, ref) => {
2567
2673
  "aria-label": "Calendar Tooltip",
2568
2674
  "aria-expanded": open
2569
2675
  },
2570
- /* @__PURE__ */ import_react19.default.createElement(CalendarSheet, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react19.default.createElement(
2676
+ /* @__PURE__ */ import_react20.default.createElement(CalendarSheet, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react20.default.createElement(
2571
2677
  Calendar_default,
2572
2678
  {
2573
2679
  value: value && !Number.isNaN(parseDate(value, format).getTime()) ? [parseDate(value, format), void 0] : void 0,
@@ -2586,14 +2692,14 @@ var DatePicker = (0, import_react19.forwardRef)((inProps, ref) => {
2586
2692
  disablePast,
2587
2693
  shouldDisableDate: shouldDisableDate ? (date) => shouldDisableDate(formatValueString(date, format)) : void 0
2588
2694
  }
2589
- ), !hideClearButton && /* @__PURE__ */ import_react19.default.createElement(
2695
+ ), !hideClearButton && /* @__PURE__ */ import_react20.default.createElement(
2590
2696
  DialogActions_default,
2591
2697
  {
2592
2698
  sx: {
2593
2699
  p: 1
2594
2700
  }
2595
2701
  },
2596
- /* @__PURE__ */ import_react19.default.createElement(
2702
+ /* @__PURE__ */ import_react20.default.createElement(
2597
2703
  Button_default,
2598
2704
  {
2599
2705
  size,
@@ -2619,10 +2725,10 @@ var DatePicker = (0, import_react19.forwardRef)((inProps, ref) => {
2619
2725
  var DatePicker_default = DatePicker;
2620
2726
 
2621
2727
  // 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);
2728
+ var import_react21 = __toESM(require("react"));
2729
+ var import_joy29 = require("@mui/joy");
2730
+ var import_framer_motion19 = require("framer-motion");
2731
+ var MotionTextarea = (0, import_framer_motion19.motion)(import_joy29.Textarea);
2626
2732
  var Textarea = (props) => {
2627
2733
  const {
2628
2734
  label,
@@ -2639,7 +2745,7 @@ var Textarea = (props) => {
2639
2745
  className,
2640
2746
  ...innerProps
2641
2747
  } = props;
2642
- const textarea = /* @__PURE__ */ import_react20.default.createElement(
2748
+ const textarea = /* @__PURE__ */ import_react21.default.createElement(
2643
2749
  MotionTextarea,
2644
2750
  {
2645
2751
  required,
@@ -2651,7 +2757,7 @@ var Textarea = (props) => {
2651
2757
  ...innerProps
2652
2758
  }
2653
2759
  );
2654
- return /* @__PURE__ */ import_react20.default.createElement(
2760
+ return /* @__PURE__ */ import_react21.default.createElement(
2655
2761
  FormControl_default,
2656
2762
  {
2657
2763
  required,
@@ -2662,9 +2768,9 @@ var Textarea = (props) => {
2662
2768
  sx,
2663
2769
  className
2664
2770
  },
2665
- label && /* @__PURE__ */ import_react20.default.createElement(FormLabel_default, null, label),
2771
+ label && /* @__PURE__ */ import_react21.default.createElement(FormLabel_default, null, label),
2666
2772
  textarea,
2667
- helperText && /* @__PURE__ */ import_react20.default.createElement(FormHelperText_default, null, helperText)
2773
+ helperText && /* @__PURE__ */ import_react21.default.createElement(FormHelperText_default, null, helperText)
2668
2774
  );
2669
2775
  };
2670
2776
  Textarea.displayName = "Textarea";
@@ -2673,10 +2779,10 @@ Textarea.displayName = "Textarea";
2673
2779
  var Textarea_default = Textarea;
2674
2780
 
2675
2781
  // 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);
2782
+ var import_react22 = __toESM(require("react"));
2783
+ var import_joy30 = require("@mui/joy");
2784
+ var import_framer_motion20 = require("framer-motion");
2785
+ var MotionOption = (0, import_framer_motion20.motion)(import_joy30.Option);
2680
2786
  var Option = MotionOption;
2681
2787
  var secondaryTextLevelMap2 = {
2682
2788
  sm: "body-xs",
@@ -2699,7 +2805,7 @@ function Select(props) {
2699
2805
  className,
2700
2806
  ...innerProps
2701
2807
  } = props;
2702
- const options = (0, import_react21.useMemo)(
2808
+ const options = (0, import_react22.useMemo)(
2703
2809
  () => props.options.map((option) => {
2704
2810
  if (option.hasOwnProperty("value") && option.hasOwnProperty("label")) {
2705
2811
  return option;
@@ -2724,15 +2830,15 @@ function Select(props) {
2724
2830
  };
2725
2831
  onChange?.(newEvent, newValue);
2726
2832
  };
2727
- const optionMap = (0, import_react21.useMemo)(() => {
2833
+ const optionMap = (0, import_react22.useMemo)(() => {
2728
2834
  const map = /* @__PURE__ */ new Map();
2729
2835
  options.forEach((option) => {
2730
2836
  map.set(option.value, option);
2731
2837
  });
2732
2838
  return map;
2733
2839
  }, [options]);
2734
- const select = /* @__PURE__ */ import_react21.default.createElement(
2735
- import_joy29.Select,
2840
+ const select = /* @__PURE__ */ import_react22.default.createElement(
2841
+ import_joy30.Select,
2736
2842
  {
2737
2843
  ...innerProps,
2738
2844
  required,
@@ -2748,9 +2854,9 @@ function Select(props) {
2748
2854
  return optionMap.get(selected.value)?.label;
2749
2855
  }
2750
2856
  },
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))
2857
+ 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
2858
  );
2753
- return /* @__PURE__ */ import_react21.default.createElement(
2859
+ return /* @__PURE__ */ import_react22.default.createElement(
2754
2860
  FormControl_default,
2755
2861
  {
2756
2862
  required,
@@ -2761,9 +2867,9 @@ function Select(props) {
2761
2867
  sx,
2762
2868
  className
2763
2869
  },
2764
- label && /* @__PURE__ */ import_react21.default.createElement(FormLabel_default, null, label),
2870
+ label && /* @__PURE__ */ import_react22.default.createElement(FormLabel_default, null, label),
2765
2871
  select,
2766
- helperText && /* @__PURE__ */ import_react21.default.createElement(FormHelperText_default, null, helperText)
2872
+ helperText && /* @__PURE__ */ import_react22.default.createElement(FormHelperText_default, null, helperText)
2767
2873
  );
2768
2874
  }
2769
2875
  Select.displayName = "Select";
@@ -2774,19 +2880,6 @@ var Select_default = Select;
2774
2880
  // src/components/DataTable/components.tsx
2775
2881
  var import_joy33 = require("@mui/joy");
2776
2882
 
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
2883
  // src/components/InfoSign/InfoSign.tsx
2791
2884
  var import_react23 = __toESM(require("react"));
2792
2885
  var import_joy31 = require("@mui/joy");
@@ -2821,21 +2914,22 @@ function InfoSign(props) {
2821
2914
  var InfoSign_default = InfoSign;
2822
2915
 
2823
2916
  // src/components/DataTable/components.tsx
2824
- var TextEllipsis = ({ children }) => {
2917
+ var TextEllipsis = ({ children, lineClamp }) => {
2825
2918
  const textRef = (0, import_react24.useRef)(null);
2826
2919
  const [showTooltip, setShowTooltip] = (0, import_react24.useState)(false);
2827
2920
  (0, import_react24.useLayoutEffect)(() => {
2828
2921
  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;
2922
+ if (!element) return;
2923
+ const checkTruncation = () => {
2924
+ const isTruncated = lineClamp && lineClamp > 1 ? element.scrollHeight > element.clientHeight + 1 : element.scrollWidth > element.clientWidth;
2925
+ setShowTooltip(isTruncated);
2926
+ };
2927
+ checkTruncation();
2928
+ const ro = new ResizeObserver(checkTruncation);
2929
+ ro.observe(element);
2930
+ return () => ro.disconnect();
2931
+ }, [children, lineClamp]);
2932
+ 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
2933
  };
2840
2934
  var CellTextEllipsis = ({ children }) => {
2841
2935
  const textRef = (0, import_react24.useRef)(null);
@@ -2886,7 +2980,8 @@ var HeadCell = (props) => {
2886
2980
  pinnedEndPosition,
2887
2981
  headerRef,
2888
2982
  tableColRef,
2889
- headerClassName
2983
+ headerClassName,
2984
+ headerLineClamp
2890
2985
  } = props;
2891
2986
  const theme = (0, import_joy32.useTheme)();
2892
2987
  const ref = headerRef;
@@ -2980,7 +3075,7 @@ var HeadCell = (props) => {
2980
3075
  initial: "initial",
2981
3076
  className: computedHeaderClassName
2982
3077
  },
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),
3078
+ /* @__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
3079
  resizer
2985
3080
  );
2986
3081
  };
@@ -5968,28 +6063,191 @@ var MotionRadioGroup = (0, import_framer_motion27.motion)(import_joy54.RadioGrou
5968
6063
  var RadioGroup = MotionRadioGroup;
5969
6064
  RadioGroup.displayName = "RadioGroup";
5970
6065
 
5971
- // src/components/RadioList/RadioList.tsx
6066
+ // src/components/RadioTileGroup/RadioTileGroup.tsx
5972
6067
  var import_react44 = __toESM(require("react"));
6068
+ var import_joy55 = require("@mui/joy");
6069
+ var RadioTileGroupRoot = (0, import_joy55.styled)(RadioGroup, {
6070
+ name: "RadioTileGroup",
6071
+ slot: "root",
6072
+ shouldForwardProp: (prop) => prop !== "flex" && prop !== "columns"
6073
+ })(({ theme, flex, columns }) => ({
6074
+ flexDirection: "row",
6075
+ gap: theme.spacing(2),
6076
+ ...flex && { flex: 1 },
6077
+ ...columns && {
6078
+ display: "grid",
6079
+ gridTemplateColumns: `repeat(${columns}, 1fr)`
6080
+ },
6081
+ [`& .${import_joy55.sheetClasses.root}.${import_joy55.radioClasses.disabled}`]: {
6082
+ borderColor: theme.palette.neutral.outlinedDisabledBorder
6083
+ },
6084
+ [`& .${import_joy55.radioClasses.root}`]: {
6085
+ [`& .${import_joy55.radioClasses.action}`]: {
6086
+ borderRadius: theme.radius.md
6087
+ },
6088
+ [`&.${import_joy55.radioClasses.checked}`]: {
6089
+ [`& .${import_joy55.radioClasses.action}`]: {
6090
+ inset: -1,
6091
+ border: "2px solid",
6092
+ borderColor: theme.palette.primary.outlinedColor
6093
+ },
6094
+ [`&.${import_joy55.radioClasses.disabled}`]: {
6095
+ [`& .${import_joy55.radioClasses.action}`]: {
6096
+ borderColor: theme.palette.neutral.outlinedBorder
6097
+ }
6098
+ }
6099
+ }
6100
+ }
6101
+ }));
6102
+ var RadioTileSheet = (0, import_joy55.styled)(Sheet, {
6103
+ name: "RadioTileGroup",
6104
+ slot: "tile",
6105
+ shouldForwardProp: (prop) => prop !== "disabled" && prop !== "size" && prop !== "flex" && prop !== "textAlign"
6106
+ })(({
6107
+ theme,
6108
+ disabled,
6109
+ size = "sm",
6110
+ flex,
6111
+ textAlign
6112
+ }) => {
6113
+ const px = { sm: theme.spacing(3), md: theme.spacing(3), lg: theme.spacing(4) }[size];
6114
+ const py = { sm: theme.spacing(3), md: theme.spacing(4), lg: theme.spacing(4) }[size];
6115
+ return {
6116
+ borderRadius: theme.radius.md,
6117
+ display: "flex",
6118
+ gap: { sm: theme.spacing(2), md: theme.spacing(3), lg: theme.spacing(4) }[size],
6119
+ padding: `${py} ${px}`,
6120
+ // NOTE: Radio에도 Label과의 정렬을 맞추기 위해 중복 코드가 있지만 Icon과 RadioButton 의 정렬도 일치시켜야 해서 코드가 중복으로 존재할수밖에 없다.
6121
+ flexDirection: textAlign === "start" ? "row-reverse" : "column-reverse",
6122
+ justifyContent: textAlign === "start" ? "space-between" : "center",
6123
+ alignItems: "center",
6124
+ ...flex ? { flex: 1 } : {},
6125
+ ...disabled ? { borderColor: theme.palette.neutral.outlinedDisabledBorder } : {
6126
+ ":hover": {
6127
+ backgroundColor: theme.palette.neutral.outlinedHoverBg
6128
+ },
6129
+ ":active": {
6130
+ backgroundColor: theme.palette.neutral.outlinedActiveBg
6131
+ }
6132
+ }
6133
+ };
6134
+ });
6135
+ function RadioTileGroup(props) {
6136
+ const {
6137
+ options,
6138
+ value,
6139
+ defaultValue,
6140
+ onChange,
6141
+ name,
6142
+ disabled: allDisabled,
6143
+ sx,
6144
+ className,
6145
+ useIndicator,
6146
+ textAlign = "center",
6147
+ size = "sm",
6148
+ flex,
6149
+ columns,
6150
+ label,
6151
+ helperText,
6152
+ error,
6153
+ required
6154
+ } = props;
6155
+ const radioGroup = /* @__PURE__ */ import_react44.default.createElement(
6156
+ RadioTileGroupRoot,
6157
+ {
6158
+ overlay: true,
6159
+ name,
6160
+ value,
6161
+ defaultValue,
6162
+ onChange,
6163
+ flex,
6164
+ columns
6165
+ },
6166
+ options.map((option) => /* @__PURE__ */ import_react44.default.createElement(
6167
+ RadioTileSheet,
6168
+ {
6169
+ key: option.value,
6170
+ variant: "outlined",
6171
+ disabled: allDisabled ?? option.disabled,
6172
+ size,
6173
+ flex,
6174
+ textAlign
6175
+ },
6176
+ /* @__PURE__ */ import_react44.default.createElement(
6177
+ Radio,
6178
+ {
6179
+ id: `${option.value}`,
6180
+ value: option.value,
6181
+ label: option.label,
6182
+ disableIcon: !useIndicator,
6183
+ disabled: allDisabled ?? option.disabled,
6184
+ size,
6185
+ slotProps: {
6186
+ root: {
6187
+ sx: {
6188
+ width: "100%",
6189
+ flexDirection: textAlign === "start" ? "row-reverse" : "column-reverse",
6190
+ justifyContent: textAlign === "start" ? "space-between" : "center",
6191
+ alignItems: "center",
6192
+ gap: { sm: 2, md: 3, lg: 4 }[size]
6193
+ }
6194
+ },
6195
+ label: ({ disabled }) => ({
6196
+ sx: (theme) => ({
6197
+ ...theme.typography[{ sm: "body-sm", md: "body-md", lg: "body-lg" }[size]],
6198
+ color: disabled ? theme.palette.neutral.outlinedDisabledColor : theme.palette.neutral.outlinedColor
6199
+ })
6200
+ })
6201
+ }
6202
+ }
6203
+ ),
6204
+ option.startDecorator && /* @__PURE__ */ import_react44.default.createElement(
6205
+ Box_default,
6206
+ {
6207
+ sx: {
6208
+ zIndex: 2,
6209
+ // HACK: Radio의 overlay가 decorator를 덮어버리기 때문에 문제 예방을 위해 적용해야 한다.
6210
+ width: { sm: "20px", md: "24px", lg: "24px" }[size],
6211
+ height: { sm: "20px", md: "24px", lg: "24px" }[size],
6212
+ color: "inherit",
6213
+ "& > .MuiSvgIcon-root": {
6214
+ width: "inherit",
6215
+ height: "inherit",
6216
+ fill: "currentColor",
6217
+ color: "inherit"
6218
+ }
6219
+ }
6220
+ },
6221
+ option.startDecorator
6222
+ )
6223
+ ))
6224
+ );
6225
+ 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));
6226
+ }
6227
+ RadioTileGroup.displayName = "RadioTileGroup";
6228
+
6229
+ // src/components/RadioList/RadioList.tsx
6230
+ var import_react45 = __toESM(require("react"));
5973
6231
  function RadioList(props) {
5974
6232
  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 })));
6233
+ 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
6234
  }
5977
6235
  RadioList.displayName = "RadioList";
5978
6236
 
5979
6237
  // src/components/Stepper/Stepper.tsx
5980
- var import_react45 = __toESM(require("react"));
5981
- var import_joy55 = require("@mui/joy");
6238
+ var import_react46 = __toESM(require("react"));
6239
+ var import_joy56 = require("@mui/joy");
5982
6240
  var import_Check = __toESM(require("@mui/icons-material/Check"));
5983
6241
  var import_framer_motion28 = require("framer-motion");
5984
- var Step = (0, import_joy55.styled)(import_joy55.Step)({});
6242
+ var Step = (0, import_joy56.styled)(import_joy56.Step)({});
5985
6243
  Step.displayName = "Step";
5986
- var StepIndicator = (0, import_joy55.styled)(import_joy55.StepIndicator)({});
6244
+ var StepIndicator = (0, import_joy56.styled)(import_joy56.StepIndicator)({});
5987
6245
  StepIndicator.displayName = "StepIndicator";
5988
- var StyledStepper = (0, import_joy55.styled)(import_joy55.Stepper)(({ theme }) => ({
6246
+ var StyledStepper = (0, import_joy56.styled)(import_joy56.Stepper)(({ theme }) => ({
5989
6247
  "--StepIndicator-size": "24px",
5990
6248
  "--Step-gap": theme.spacing(2),
5991
6249
  "--joy-palette-success-solidBg": "var(--joy-palette-success-400)",
5992
- [`& .${import_joy55.stepIndicatorClasses.root}`]: {
6250
+ [`& .${import_joy56.stepIndicatorClasses.root}`]: {
5993
6251
  fontSize: "var(--ceed-fontSize-xs)"
5994
6252
  }
5995
6253
  }));
@@ -6006,31 +6264,31 @@ function Stepper(props) {
6006
6264
  stepOrientation = "horizontal"
6007
6265
  } = props;
6008
6266
  const effectiveStepOrientation = orientation === "vertical" ? "horizontal" : stepOrientation;
6009
- return /* @__PURE__ */ import_react45.default.createElement(
6267
+ return /* @__PURE__ */ import_react46.default.createElement(
6010
6268
  MotionStepper,
6011
6269
  {
6012
6270
  orientation,
6013
6271
  sx: (theme) => ({
6014
6272
  "--StepIndicator-size": "24px",
6015
6273
  "--Step-gap": theme.spacing(2),
6016
- [`& .${import_joy55.stepIndicatorClasses.root}`]: {
6274
+ [`& .${import_joy56.stepIndicatorClasses.root}`]: {
6017
6275
  fontSize: "var(--ceed-fontSize-xs)"
6018
6276
  },
6019
- [`& .${import_joy55.stepClasses.completed}`]: {
6277
+ [`& .${import_joy56.stepClasses.completed}`]: {
6020
6278
  "&::after": { bgcolor: activeLineColor },
6021
- [`& .${import_joy55.stepIndicatorClasses.root}`]: {
6279
+ [`& .${import_joy56.stepIndicatorClasses.root}`]: {
6022
6280
  bgcolor: activeColor
6023
6281
  }
6024
6282
  },
6025
- [`& .${import_joy55.stepClasses.active}`]: {
6283
+ [`& .${import_joy56.stepClasses.active}`]: {
6026
6284
  "&::after": { bgcolor: inactiveLineColor },
6027
- [`& .${import_joy55.stepIndicatorClasses.root}`]: {
6285
+ [`& .${import_joy56.stepIndicatorClasses.root}`]: {
6028
6286
  bgcolor: activeColor
6029
6287
  }
6030
6288
  },
6031
- [`& .${import_joy55.stepClasses.disabled}`]: {
6289
+ [`& .${import_joy56.stepClasses.disabled}`]: {
6032
6290
  "&::after": { bgcolor: inactiveLineColor },
6033
- [`& .${import_joy55.stepIndicatorClasses.root}`]: {
6291
+ [`& .${import_joy56.stepIndicatorClasses.root}`]: {
6034
6292
  bgcolor: theme.vars.palette.background.surface,
6035
6293
  borderColor: theme.vars.palette.neutral.outlinedBorder,
6036
6294
  borderWidth: "1px",
@@ -6045,23 +6303,23 @@ function Stepper(props) {
6045
6303
  const completed = activeStep > i + 1;
6046
6304
  const disabled = activeStep < i + 1;
6047
6305
  const hasContent = step.label || step.extraContent;
6048
- return /* @__PURE__ */ import_react45.default.createElement(
6306
+ return /* @__PURE__ */ import_react46.default.createElement(
6049
6307
  Step,
6050
6308
  {
6051
6309
  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),
6310
+ 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
6311
  active,
6054
6312
  completed,
6055
6313
  disabled,
6056
6314
  orientation: effectiveStepOrientation
6057
6315
  },
6058
- hasContent && /* @__PURE__ */ import_react45.default.createElement(
6316
+ hasContent && /* @__PURE__ */ import_react46.default.createElement(
6059
6317
  Stack_default,
6060
6318
  {
6061
6319
  sx: orientation === "horizontal" && effectiveStepOrientation === "vertical" ? { alignItems: "center" } : {}
6062
6320
  },
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)
6321
+ step.label && /* @__PURE__ */ import_react46.default.createElement(Typography_default, { level: "title-sm" }, step.label),
6322
+ step.extraContent && /* @__PURE__ */ import_react46.default.createElement(Typography_default, { level: "body-xs" }, step.extraContent)
6065
6323
  )
6066
6324
  );
6067
6325
  })
@@ -6070,11 +6328,11 @@ function Stepper(props) {
6070
6328
  Stepper.displayName = "Stepper";
6071
6329
 
6072
6330
  // src/components/Switch/Switch.tsx
6073
- var import_react46 = __toESM(require("react"));
6074
- var import_joy56 = require("@mui/joy");
6331
+ var import_react47 = __toESM(require("react"));
6332
+ var import_joy57 = require("@mui/joy");
6075
6333
  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)({
6334
+ var MotionSwitch = (0, import_framer_motion29.motion)(import_joy57.Switch);
6335
+ var StyledThumb = (0, import_joy57.styled)(import_framer_motion29.motion.div)({
6078
6336
  "--Icon-fontSize": "calc(var(--Switch-thumbSize) * 0.75)",
6079
6337
  display: "inline-flex",
6080
6338
  justifyContent: "center",
@@ -6087,19 +6345,19 @@ var StyledThumb = (0, import_joy56.styled)(import_framer_motion29.motion.div)({
6087
6345
  boxShadow: "var(--Switch-thumbShadow)",
6088
6346
  color: "var(--Switch-thumbColor)",
6089
6347
  backgroundColor: "var(--Switch-thumbBackground)",
6090
- [`&.${import_joy56.switchClasses.checked}`]: {
6348
+ [`&.${import_joy57.switchClasses.checked}`]: {
6091
6349
  left: "unset",
6092
6350
  right: "var(--Switch-thumbOffset)"
6093
6351
  }
6094
6352
  });
6095
- var Thumb = (props) => /* @__PURE__ */ import_react46.default.createElement(StyledThumb, { ...props, layout: true, transition: spring });
6353
+ var Thumb = (props) => /* @__PURE__ */ import_react47.default.createElement(StyledThumb, { ...props, layout: true, transition: spring });
6096
6354
  var spring = {
6097
6355
  type: "spring",
6098
6356
  stiffness: 700,
6099
6357
  damping: 30
6100
6358
  };
6101
6359
  var Switch = (props) => {
6102
- return /* @__PURE__ */ import_react46.default.createElement(
6360
+ return /* @__PURE__ */ import_react47.default.createElement(
6103
6361
  MotionSwitch,
6104
6362
  {
6105
6363
  ...props,
@@ -6113,32 +6371,32 @@ var Switch = (props) => {
6113
6371
  Switch.displayName = "Switch";
6114
6372
 
6115
6373
  // 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 }) => ({
6374
+ var import_react48 = __toESM(require("react"));
6375
+ var import_joy58 = require("@mui/joy");
6376
+ var StyledTabs = (0, import_joy58.styled)(import_joy58.Tabs)(({ theme }) => ({
6119
6377
  backgroundColor: theme.palette.background.body
6120
6378
  }));
6121
6379
  var Tabs = StyledTabs;
6122
6380
  Tabs.displayName = "Tabs";
6123
- var StyledTab = (0, import_joy57.styled)(import_joy57.Tab)(({ theme }) => ({
6381
+ var StyledTab = (0, import_joy58.styled)(import_joy58.Tab)(({ theme }) => ({
6124
6382
  gap: theme.spacing(2),
6125
- [`&:not(.${import_joy57.tabClasses.selected})`]: {
6383
+ [`&:not(.${import_joy58.tabClasses.selected})`]: {
6126
6384
  color: theme.palette.neutral[700]
6127
6385
  },
6128
- [`&.${import_joy57.tabClasses.variantPlain}`]: {
6386
+ [`&.${import_joy58.tabClasses.variantPlain}`]: {
6129
6387
  backgroundColor: theme.palette.background.body
6130
6388
  }
6131
6389
  }));
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);
6390
+ var Tab = (0, import_react48.forwardRef)(function Tab2({ startDecorator, endDecorator, children, ...props }, ref) {
6391
+ return /* @__PURE__ */ import_react48.default.createElement(StyledTab, { ...props, ref }, startDecorator, children, endDecorator);
6134
6392
  });
6135
6393
  Tab.displayName = "Tab";
6136
- var TabList = import_joy57.TabList;
6137
- var TabPanel = import_joy57.TabPanel;
6394
+ var TabList = import_joy58.TabList;
6395
+ var TabPanel = import_joy58.TabPanel;
6138
6396
 
6139
6397
  // src/components/ThemeProvider/ThemeProvider.tsx
6140
- var import_react48 = __toESM(require("react"));
6141
- var import_joy58 = require("@mui/joy");
6398
+ var import_react49 = __toESM(require("react"));
6399
+ var import_joy59 = require("@mui/joy");
6142
6400
  var colorScheme = {
6143
6401
  palette: {
6144
6402
  danger: {
@@ -6191,7 +6449,7 @@ var colorScheme = {
6191
6449
  }
6192
6450
  }
6193
6451
  };
6194
- var defaultTheme = (0, import_joy58.extendTheme)({
6452
+ var defaultTheme = (0, import_joy59.extendTheme)({
6195
6453
  cssVarPrefix: "ceed",
6196
6454
  spacing: 4,
6197
6455
  breakpoints: {
@@ -6243,7 +6501,7 @@ var defaultTheme = (0, import_joy58.extendTheme)({
6243
6501
  },
6244
6502
  styleOverrides: {
6245
6503
  root: {
6246
- [`.${import_joy58.inputClasses.root}`]: {
6504
+ [`.${import_joy59.inputClasses.root}`]: {
6247
6505
  // NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
6248
6506
  "font-family": "monospace"
6249
6507
  }
@@ -6256,7 +6514,7 @@ var defaultTheme = (0, import_joy58.extendTheme)({
6256
6514
  },
6257
6515
  styleOverrides: {
6258
6516
  root: {
6259
- [`.${import_joy58.inputClasses.root}`]: {
6517
+ [`.${import_joy59.inputClasses.root}`]: {
6260
6518
  // NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
6261
6519
  "font-family": "monospace"
6262
6520
  }
@@ -6269,7 +6527,7 @@ var defaultTheme = (0, import_joy58.extendTheme)({
6269
6527
  },
6270
6528
  styleOverrides: {
6271
6529
  root: {
6272
- [`.${import_joy58.inputClasses.root}`]: {
6530
+ [`.${import_joy59.inputClasses.root}`]: {
6273
6531
  // NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
6274
6532
  "font-family": "monospace"
6275
6533
  }
@@ -6282,7 +6540,7 @@ var defaultTheme = (0, import_joy58.extendTheme)({
6282
6540
  },
6283
6541
  styleOverrides: {
6284
6542
  root: {
6285
- [`.${import_joy58.inputClasses.root}`]: {
6543
+ [`.${import_joy59.inputClasses.root}`]: {
6286
6544
  // NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
6287
6545
  "font-family": "monospace"
6288
6546
  }
@@ -6295,7 +6553,7 @@ var defaultTheme = (0, import_joy58.extendTheme)({
6295
6553
  },
6296
6554
  styleOverrides: {
6297
6555
  root: {
6298
- [`.${import_joy58.inputClasses.root}`]: {
6556
+ [`.${import_joy59.inputClasses.root}`]: {
6299
6557
  // NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
6300
6558
  "font-family": "monospace"
6301
6559
  }
@@ -6337,7 +6595,7 @@ var defaultTheme = (0, import_joy58.extendTheme)({
6337
6595
  outline: `${theme.palette.primary[500]} solid 2px`,
6338
6596
  outlineOffset: "-2px"
6339
6597
  },
6340
- [`& .${import_joy58.checkboxClasses.root}`]: {
6598
+ [`& .${import_joy59.checkboxClasses.root}`]: {
6341
6599
  verticalAlign: "middle"
6342
6600
  }
6343
6601
  })
@@ -6387,13 +6645,13 @@ var defaultTheme = (0, import_joy58.extendTheme)({
6387
6645
  });
6388
6646
  function ThemeProvider(props) {
6389
6647
  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));
6648
+ 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
6649
  }
6392
6650
  ThemeProvider.displayName = "ThemeProvider";
6393
6651
 
6394
6652
  // src/components/Uploader/Uploader.tsx
6395
- var import_react49 = __toESM(require("react"));
6396
- var import_joy59 = require("@mui/joy");
6653
+ var import_react50 = __toESM(require("react"));
6654
+ var import_joy60 = require("@mui/joy");
6397
6655
  var import_CloudUploadRounded = __toESM(require("@mui/icons-material/CloudUploadRounded"));
6398
6656
  var import_UploadFileRounded = __toESM(require("@mui/icons-material/UploadFileRounded"));
6399
6657
  var import_ClearRounded = __toESM(require("@mui/icons-material/ClearRounded"));
@@ -6415,7 +6673,7 @@ var esmFiles = {
6415
6673
  "@atlaskit/pragmatic-drag-and-drop/dist/esm/entry-point/prevent-unhandled.js"
6416
6674
  )
6417
6675
  };
6418
- var VisuallyHiddenInput = (0, import_joy59.styled)(import_joy59.Input)({
6676
+ var VisuallyHiddenInput = (0, import_joy60.styled)(import_joy60.Input)({
6419
6677
  width: "1px",
6420
6678
  height: "1px",
6421
6679
  overflow: "hidden",
@@ -6424,18 +6682,18 @@ var VisuallyHiddenInput = (0, import_joy59.styled)(import_joy59.Input)({
6424
6682
  clipPath: "inset(50%)",
6425
6683
  position: "absolute"
6426
6684
  });
6427
- var PreviewRoot = (0, import_joy59.styled)(Stack_default, {
6685
+ var PreviewRoot = (0, import_joy60.styled)(Stack_default, {
6428
6686
  name: "Uploader",
6429
6687
  slot: "PreviewRoot"
6430
6688
  })({});
6431
- var UploadCard = (0, import_joy59.styled)(Card, {
6689
+ var UploadCard = (0, import_joy60.styled)(Card, {
6432
6690
  name: "Uploader",
6433
6691
  slot: "UploadCard"
6434
6692
  })(({ theme }) => ({
6435
6693
  padding: theme.spacing(2.5),
6436
6694
  border: `1px solid ${theme.palette.neutral.outlinedBorder}`
6437
6695
  }));
6438
- var UploadFileIcon = (0, import_joy59.styled)(import_UploadFileRounded.default, {
6696
+ var UploadFileIcon = (0, import_joy60.styled)(import_UploadFileRounded.default, {
6439
6697
  name: "Uploader",
6440
6698
  slot: "UploadFileIcon"
6441
6699
  })(({ theme }) => ({
@@ -6443,7 +6701,7 @@ var UploadFileIcon = (0, import_joy59.styled)(import_UploadFileRounded.default,
6443
6701
  width: "32px",
6444
6702
  height: "32px"
6445
6703
  }));
6446
- var ClearIcon2 = (0, import_joy59.styled)(import_ClearRounded.default, {
6704
+ var ClearIcon2 = (0, import_joy60.styled)(import_ClearRounded.default, {
6447
6705
  name: "Uploader",
6448
6706
  slot: "ClearIcon"
6449
6707
  })(({ theme }) => ({
@@ -6469,7 +6727,7 @@ var getFileSize = (n) => {
6469
6727
  };
6470
6728
  var Preview = (props) => {
6471
6729
  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(
6730
+ 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
6731
  Typography_default,
6474
6732
  {
6475
6733
  level: "body-sm",
@@ -6481,15 +6739,15 @@ var Preview = (props) => {
6481
6739
  }
6482
6740
  },
6483
6741
  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))))));
6742
+ ), !!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
6743
  };
6486
- var UploaderRoot = (0, import_joy59.styled)(Stack_default, {
6744
+ var UploaderRoot = (0, import_joy60.styled)(Stack_default, {
6487
6745
  name: "Uploader",
6488
6746
  slot: "root"
6489
6747
  })(({ theme }) => ({
6490
6748
  gap: theme.spacing(2)
6491
6749
  }));
6492
- var FileDropZone = (0, import_joy59.styled)(Sheet_default, {
6750
+ var FileDropZone = (0, import_joy60.styled)(Sheet_default, {
6493
6751
  name: "Uploader",
6494
6752
  slot: "dropZone",
6495
6753
  shouldForwardProp: (prop) => prop !== "error" && prop !== "disabled"
@@ -6510,7 +6768,7 @@ var FileDropZone = (0, import_joy59.styled)(Sheet_default, {
6510
6768
  }
6511
6769
  })
6512
6770
  );
6513
- var UploaderIcon = (0, import_joy59.styled)(import_CloudUploadRounded.default, {
6771
+ var UploaderIcon = (0, import_joy60.styled)(import_CloudUploadRounded.default, {
6514
6772
  name: "Uploader",
6515
6773
  slot: "iconContainer",
6516
6774
  shouldForwardProp: (prop) => prop !== "error" && prop !== "disabled"
@@ -6524,7 +6782,7 @@ var UploaderIcon = (0, import_joy59.styled)(import_CloudUploadRounded.default, {
6524
6782
  }
6525
6783
  })
6526
6784
  );
6527
- var Uploader = import_react49.default.memo(
6785
+ var Uploader = import_react50.default.memo(
6528
6786
  (props) => {
6529
6787
  const {
6530
6788
  accept,
@@ -6541,14 +6799,14 @@ var Uploader = import_react49.default.memo(
6541
6799
  error: errorProp,
6542
6800
  helperText: helperTextProp
6543
6801
  } = 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)(
6802
+ const dropZoneRef = (0, import_react50.useRef)(null);
6803
+ const inputRef = (0, import_react50.useRef)(null);
6804
+ const [errorText, setErrorText] = (0, import_react50.useState)();
6805
+ const [files, setFiles] = (0, import_react50.useState)([]);
6806
+ const [uploaded, setUploaded] = (0, import_react50.useState)(props.uploaded || []);
6807
+ const [previewState, setPreviewState] = (0, import_react50.useState)("idle");
6808
+ const accepts = (0, import_react50.useMemo)(() => accept.split(",").map((accept2) => accept2.trim()), [accept]);
6809
+ const parsedAccepts = (0, import_react50.useMemo)(
6552
6810
  () => accepts.flatMap((type) => {
6553
6811
  if (["image/*", "video/*", "audio/*"].includes(type)) {
6554
6812
  return ALL_EXTENSIONS_BY_TYPE[type];
@@ -6557,7 +6815,7 @@ var Uploader = import_react49.default.memo(
6557
6815
  }),
6558
6816
  [accepts]
6559
6817
  );
6560
- const helperText = (0, import_react49.useMemo)(() => {
6818
+ const helperText = (0, import_react50.useMemo)(() => {
6561
6819
  if (helperTextProp) {
6562
6820
  return helperTextProp;
6563
6821
  }
@@ -6587,12 +6845,12 @@ var Uploader = import_react49.default.memo(
6587
6845
  }
6588
6846
  return helperTexts.join(", ");
6589
6847
  }, [accepts, maxFileTotalSize, maxCount, helperTextProp]);
6590
- const error = (0, import_react49.useMemo)(() => !!errorText || errorProp, [errorProp, errorText]);
6591
- const showDropZone = (0, import_react49.useMemo)(
6848
+ const error = (0, import_react50.useMemo)(() => !!errorText || errorProp, [errorProp, errorText]);
6849
+ const showDropZone = (0, import_react50.useMemo)(
6592
6850
  () => !maxCount || maxCount && [...uploaded, ...files].length !== maxCount,
6593
6851
  [files, maxCount, uploaded]
6594
6852
  );
6595
- const addFiles = (0, import_react49.useCallback)(
6853
+ const addFiles = (0, import_react50.useCallback)(
6596
6854
  (uploads) => {
6597
6855
  try {
6598
6856
  const types = parsedAccepts.map((type) => type.replace(".", "")) || [];
@@ -6637,7 +6895,7 @@ var Uploader = import_react49.default.memo(
6637
6895
  },
6638
6896
  [files, uploaded, maxCount, parsedAccepts, maxFileSize, maxFileTotalSize, name, onChange]
6639
6897
  );
6640
- (0, import_react49.useEffect)(() => {
6898
+ (0, import_react50.useEffect)(() => {
6641
6899
  if (!dropZoneRef.current || disabled) {
6642
6900
  return;
6643
6901
  }
@@ -6675,7 +6933,7 @@ var Uploader = import_react49.default.memo(
6675
6933
  );
6676
6934
  return () => cleanup?.();
6677
6935
  }, [disabled, addFiles]);
6678
- (0, import_react49.useEffect)(() => {
6936
+ (0, import_react50.useEffect)(() => {
6679
6937
  if (inputRef.current && minCount) {
6680
6938
  if (files.length < minCount) {
6681
6939
  inputRef.current.setCustomValidity(`At least ${minCount} files are required.`);
@@ -6684,14 +6942,14 @@ var Uploader = import_react49.default.memo(
6684
6942
  }
6685
6943
  }
6686
6944
  }, [inputRef, files, minCount]);
6687
- const handleFileChanged = (0, import_react49.useCallback)(
6945
+ const handleFileChanged = (0, import_react50.useCallback)(
6688
6946
  (event) => {
6689
6947
  const files2 = Array.from(event.target.files || []);
6690
6948
  addFiles(files2);
6691
6949
  },
6692
6950
  [addFiles]
6693
6951
  );
6694
- const handleDeleteFile = (0, import_react49.useCallback)(
6952
+ const handleDeleteFile = (0, import_react50.useCallback)(
6695
6953
  (deletedFile) => {
6696
6954
  if (deletedFile instanceof File) {
6697
6955
  setFiles((current) => {
@@ -6711,10 +6969,10 @@ var Uploader = import_react49.default.memo(
6711
6969
  },
6712
6970
  [name, onChange, onDelete]
6713
6971
  );
6714
- const handleUploaderButtonClick = (0, import_react49.useCallback)(() => {
6972
+ const handleUploaderButtonClick = (0, import_react50.useCallback)(() => {
6715
6973
  inputRef.current?.click();
6716
6974
  }, []);
6717
- const uploader = /* @__PURE__ */ import_react49.default.createElement(
6975
+ const uploader = /* @__PURE__ */ import_react50.default.createElement(
6718
6976
  FileDropZone,
6719
6977
  {
6720
6978
  state: previewState,
@@ -6723,8 +6981,8 @@ var Uploader = import_react49.default.memo(
6723
6981
  ref: dropZoneRef,
6724
6982
  onClick: handleUploaderButtonClick
6725
6983
  },
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(
6984
+ /* @__PURE__ */ import_react50.default.createElement(Stack_default, { alignItems: "center", gap: 1 }, /* @__PURE__ */ import_react50.default.createElement(UploaderIcon, { state: previewState, error: !!(error || errorText), disabled })),
6985
+ /* @__PURE__ */ import_react50.default.createElement(
6728
6986
  VisuallyHiddenInput,
6729
6987
  {
6730
6988
  disabled,
@@ -6747,7 +7005,7 @@ var Uploader = import_react49.default.memo(
6747
7005
  }
6748
7006
  )
6749
7007
  );
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 }));
7008
+ 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
7009
  }
6752
7010
  );
6753
7011
  Uploader.displayName = "Uploader";