@ceed/cds 1.8.7 → 1.10.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.
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_joy58.AspectRatio,
88
+ AspectRatio: () => import_joy60.AspectRatio,
89
89
  Autocomplete: () => Autocomplete,
90
- AutocompleteListbox: () => import_joy58.AutocompleteListbox,
91
- AutocompleteOption: () => import_joy58.AutocompleteOption,
90
+ AutocompleteListbox: () => import_joy60.AutocompleteListbox,
91
+ AutocompleteOption: () => import_joy60.AutocompleteOption,
92
92
  Avatar: () => Avatar,
93
93
  AvatarGroup: () => import_joy11.AvatarGroup,
94
- Badge: () => import_joy58.Badge,
94
+ Badge: () => import_joy60.Badge,
95
95
  Box: () => Box,
96
96
  Breadcrumbs: () => Breadcrumbs,
97
97
  Button: () => Button,
98
- ButtonGroup: () => import_joy58.ButtonGroup,
98
+ ButtonGroup: () => import_joy60.ButtonGroup,
99
99
  Calendar: () => Calendar,
100
- Card: () => import_joy58.Card,
101
- CardActions: () => import_joy58.CardActions,
102
- CardContent: () => import_joy58.CardContent,
103
- CardCover: () => import_joy58.CardCover,
104
- CardOverflow: () => import_joy58.CardOverflow,
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,
105
105
  Checkbox: () => Checkbox,
106
- Chip: () => import_joy58.Chip,
107
- CircularProgress: () => import_joy58.CircularProgress,
106
+ Chip: () => import_joy60.Chip,
107
+ CircularProgress: () => import_joy60.CircularProgress,
108
108
  Container: () => Container,
109
109
  CurrencyInput: () => CurrencyInput,
110
110
  DataTable: () => DataTable,
@@ -120,21 +120,21 @@ __export(index_exports, {
120
120
  FormControl: () => FormControl,
121
121
  FormHelperText: () => FormHelperText,
122
122
  FormLabel: () => FormLabel,
123
- Grid: () => import_joy42.Grid,
123
+ Grid: () => import_joy44.Grid,
124
124
  IconButton: () => IconButton,
125
125
  IconMenuButton: () => IconMenuButton,
126
126
  InfoSign: () => InfoSign,
127
127
  Input: () => Input,
128
128
  InsetDrawer: () => InsetDrawer,
129
- LinearProgress: () => import_joy58.LinearProgress,
130
- Link: () => import_joy58.Link,
131
- List: () => import_joy58.List,
132
- ListDivider: () => import_joy58.ListDivider,
133
- ListItem: () => import_joy58.ListItem,
134
- ListItemButton: () => import_joy58.ListItemButton,
135
- ListItemContent: () => import_joy58.ListItemContent,
136
- ListItemDecorator: () => import_joy58.ListItemDecorator,
137
- ListSubheader: () => import_joy58.ListSubheader,
129
+ LinearProgress: () => import_joy60.LinearProgress,
130
+ Link: () => import_joy60.Link,
131
+ List: () => import_joy60.List,
132
+ ListDivider: () => import_joy60.ListDivider,
133
+ ListItem: () => import_joy60.ListItem,
134
+ ListItemButton: () => import_joy60.ListItemButton,
135
+ ListItemContent: () => import_joy60.ListItemContent,
136
+ ListItemDecorator: () => import_joy60.ListItemDecorator,
137
+ ListSubheader: () => import_joy60.ListSubheader,
138
138
  Markdown: () => Markdown,
139
139
  Menu: () => Menu,
140
140
  MenuButton: () => MenuButton,
@@ -157,11 +157,11 @@ __export(index_exports, {
157
157
  RadioList: () => RadioList,
158
158
  Select: () => Select,
159
159
  Sheet: () => Sheet,
160
- Skeleton: () => import_joy58.Skeleton,
161
- Slider: () => import_joy58.Slider,
160
+ Skeleton: () => import_joy60.Skeleton,
161
+ Slider: () => import_joy60.Slider,
162
162
  Stack: () => import_joy3.Stack,
163
163
  Step: () => Step,
164
- StepButton: () => import_joy58.StepButton,
164
+ StepButton: () => import_joy60.StepButton,
165
165
  StepIndicator: () => StepIndicator,
166
166
  Stepper: () => Stepper,
167
167
  Switch: () => Switch,
@@ -177,84 +177,84 @@ __export(index_exports, {
177
177
  Tooltip: () => Tooltip,
178
178
  Typography: () => Typography,
179
179
  Uploader: () => Uploader,
180
- accordionClasses: () => import_joy58.accordionClasses,
181
- accordionDetailsClasses: () => import_joy58.accordionDetailsClasses,
182
- accordionSummaryClasses: () => import_joy58.accordionSummaryClasses,
183
- accordionsClasses: () => import_joy58.accordionGroupClasses,
184
- alertClasses: () => import_joy58.alertClasses,
185
- aspectRatioClasses: () => import_joy58.aspectRatioClasses,
186
- autocompleteClasses: () => import_joy58.autocompleteClasses,
187
- autocompleteListboxClasses: () => import_joy58.autocompleteListboxClasses,
188
- autocompleteOptionClasses: () => import_joy58.autocompleteOptionClasses,
189
- avatarClasses: () => import_joy58.avatarClasses,
190
- avatarGroupClasses: () => import_joy58.avatarGroupClasses,
191
- badgeClasses: () => import_joy58.badgeClasses,
192
- boxClasses: () => import_joy58.boxClasses,
193
- breadcrumbsClasses: () => import_joy58.breadcrumbsClasses,
194
- buttonClasses: () => import_joy58.buttonClasses,
195
- cardActionsClasses: () => import_joy58.cardActionsClasses,
196
- cardClasses: () => import_joy58.cardClasses,
197
- cardContentClasses: () => import_joy58.cardContentClasses,
198
- cardCoverClasses: () => import_joy58.cardCoverClasses,
199
- cardOverflowClasses: () => import_joy58.cardOverflowClasses,
200
- checkboxClasses: () => import_joy58.checkboxClasses,
201
- chipClasses: () => import_joy58.chipClasses,
202
- circularProgressClasses: () => import_joy58.circularProgressClasses,
203
- dialogActionsClasses: () => import_joy58.dialogActionsClasses,
204
- dialogContentClasses: () => import_joy58.dialogContentClasses,
205
- dialogTitleClasses: () => import_joy58.dialogTitleClasses,
206
- dividerClasses: () => import_joy58.dividerClasses,
207
- drawerClasses: () => import_joy58.drawerClasses,
208
- extendTheme: () => import_joy56.extendTheme,
209
- formControlClasses: () => import_joy58.formControlClasses,
210
- formHelperTextClasses: () => import_joy58.formHelperTextClasses,
211
- formLabelClasses: () => import_joy58.formLabelClasses,
212
- gridClasses: () => import_joy58.gridClasses,
213
- iconButtonClasses: () => import_joy58.iconButtonClasses,
214
- inputClasses: () => import_joy58.inputClasses,
215
- linearProgressClasses: () => import_joy58.linearProgressClasses,
216
- linkClasses: () => import_joy58.linkClasses,
217
- listClasses: () => import_joy58.listClasses,
218
- listDividerClasses: () => import_joy58.listDividerClasses,
219
- listItemButtonClasses: () => import_joy58.listItemButtonClasses,
220
- listItemClasses: () => import_joy58.listItemClasses,
221
- listItemContentClasses: () => import_joy58.listItemContentClasses,
222
- listItemDecoratorClasses: () => import_joy58.listItemDecoratorClasses,
223
- listSubheaderClasses: () => import_joy58.listSubheaderClasses,
224
- menuButtonClasses: () => import_joy58.menuButtonClasses,
225
- menuClasses: () => import_joy58.menuClasses,
226
- menuItemClasses: () => import_joy58.menuItemClasses,
227
- modalClasses: () => import_joy58.modalClasses,
228
- modalCloseClasses: () => import_joy58.modalCloseClasses,
229
- modalDialogClasses: () => import_joy58.modalDialogClasses,
230
- modalOverflowClasses: () => import_joy58.modalOverflowClasses,
231
- optionClasses: () => import_joy58.optionClasses,
232
- radioClasses: () => import_joy58.radioClasses,
233
- radioGroupClasses: () => import_joy58.radioGroupClasses,
234
- selectClasses: () => import_joy58.selectClasses,
235
- sheetClasses: () => import_joy58.sheetClasses,
236
- skeletonClasses: () => import_joy58.skeletonClasses,
237
- sliderClasses: () => import_joy58.sliderClasses,
238
- stackClasses: () => import_joy58.stackClasses,
239
- stepButtonClasses: () => import_joy58.stepButtonClasses,
240
- stepClasses: () => import_joy58.stepClasses,
241
- stepperClasses: () => import_joy58.stepperClasses,
242
- styled: () => import_joy58.styled,
243
- switchClasses: () => import_joy58.switchClasses,
244
- tabListClasses: () => import_joy58.tabListClasses,
245
- tabPanelClasses: () => import_joy58.tabPanelClasses,
246
- tableClasses: () => import_joy58.tableClasses,
247
- tabsClasses: () => import_joy58.tabsClasses,
248
- textareaClasses: () => import_joy58.textareaClasses,
180
+ accordionClasses: () => import_joy60.accordionClasses,
181
+ accordionDetailsClasses: () => import_joy60.accordionDetailsClasses,
182
+ accordionSummaryClasses: () => import_joy60.accordionSummaryClasses,
183
+ accordionsClasses: () => import_joy60.accordionGroupClasses,
184
+ alertClasses: () => import_joy60.alertClasses,
185
+ aspectRatioClasses: () => import_joy60.aspectRatioClasses,
186
+ autocompleteClasses: () => import_joy60.autocompleteClasses,
187
+ autocompleteListboxClasses: () => import_joy60.autocompleteListboxClasses,
188
+ autocompleteOptionClasses: () => import_joy60.autocompleteOptionClasses,
189
+ avatarClasses: () => import_joy60.avatarClasses,
190
+ avatarGroupClasses: () => import_joy60.avatarGroupClasses,
191
+ badgeClasses: () => import_joy60.badgeClasses,
192
+ boxClasses: () => import_joy60.boxClasses,
193
+ breadcrumbsClasses: () => import_joy60.breadcrumbsClasses,
194
+ buttonClasses: () => import_joy60.buttonClasses,
195
+ cardActionsClasses: () => import_joy60.cardActionsClasses,
196
+ cardClasses: () => import_joy60.cardClasses,
197
+ cardContentClasses: () => import_joy60.cardContentClasses,
198
+ cardCoverClasses: () => import_joy60.cardCoverClasses,
199
+ cardOverflowClasses: () => import_joy60.cardOverflowClasses,
200
+ checkboxClasses: () => import_joy60.checkboxClasses,
201
+ chipClasses: () => import_joy60.chipClasses,
202
+ circularProgressClasses: () => import_joy60.circularProgressClasses,
203
+ dialogActionsClasses: () => import_joy60.dialogActionsClasses,
204
+ dialogContentClasses: () => import_joy60.dialogContentClasses,
205
+ dialogTitleClasses: () => import_joy60.dialogTitleClasses,
206
+ dividerClasses: () => import_joy60.dividerClasses,
207
+ drawerClasses: () => import_joy60.drawerClasses,
208
+ extendTheme: () => import_joy58.extendTheme,
209
+ formControlClasses: () => import_joy60.formControlClasses,
210
+ formHelperTextClasses: () => import_joy60.formHelperTextClasses,
211
+ formLabelClasses: () => import_joy60.formLabelClasses,
212
+ gridClasses: () => import_joy60.gridClasses,
213
+ iconButtonClasses: () => import_joy60.iconButtonClasses,
214
+ inputClasses: () => import_joy60.inputClasses,
215
+ linearProgressClasses: () => import_joy60.linearProgressClasses,
216
+ linkClasses: () => import_joy60.linkClasses,
217
+ listClasses: () => import_joy60.listClasses,
218
+ listDividerClasses: () => import_joy60.listDividerClasses,
219
+ listItemButtonClasses: () => import_joy60.listItemButtonClasses,
220
+ listItemClasses: () => import_joy60.listItemClasses,
221
+ listItemContentClasses: () => import_joy60.listItemContentClasses,
222
+ listItemDecoratorClasses: () => import_joy60.listItemDecoratorClasses,
223
+ listSubheaderClasses: () => import_joy60.listSubheaderClasses,
224
+ menuButtonClasses: () => import_joy60.menuButtonClasses,
225
+ menuClasses: () => import_joy60.menuClasses,
226
+ menuItemClasses: () => import_joy60.menuItemClasses,
227
+ modalClasses: () => import_joy60.modalClasses,
228
+ modalCloseClasses: () => import_joy60.modalCloseClasses,
229
+ modalDialogClasses: () => import_joy60.modalDialogClasses,
230
+ modalOverflowClasses: () => import_joy60.modalOverflowClasses,
231
+ optionClasses: () => import_joy60.optionClasses,
232
+ radioClasses: () => import_joy60.radioClasses,
233
+ radioGroupClasses: () => import_joy60.radioGroupClasses,
234
+ selectClasses: () => import_joy60.selectClasses,
235
+ sheetClasses: () => import_joy60.sheetClasses,
236
+ skeletonClasses: () => import_joy60.skeletonClasses,
237
+ sliderClasses: () => import_joy60.sliderClasses,
238
+ stackClasses: () => import_joy60.stackClasses,
239
+ stepButtonClasses: () => import_joy60.stepButtonClasses,
240
+ stepClasses: () => import_joy60.stepClasses,
241
+ stepperClasses: () => import_joy60.stepperClasses,
242
+ styled: () => import_joy60.styled,
243
+ switchClasses: () => import_joy60.switchClasses,
244
+ tabListClasses: () => import_joy60.tabListClasses,
245
+ tabPanelClasses: () => import_joy60.tabPanelClasses,
246
+ tableClasses: () => import_joy60.tableClasses,
247
+ tabsClasses: () => import_joy60.tabsClasses,
248
+ textareaClasses: () => import_joy60.textareaClasses,
249
249
  theme: () => defaultTheme,
250
- tooltipClasses: () => import_joy58.tooltipClasses,
251
- typographyClasses: () => import_joy58.typographyClasses,
252
- useColorScheme: () => import_joy58.useColorScheme,
253
- useTheme: () => import_joy58.useTheme,
254
- useThemeProps: () => import_joy58.useThemeProps
250
+ tooltipClasses: () => import_joy60.tooltipClasses,
251
+ typographyClasses: () => import_joy60.typographyClasses,
252
+ useColorScheme: () => import_joy60.useColorScheme,
253
+ useTheme: () => import_joy60.useTheme,
254
+ useThemeProps: () => import_joy60.useThemeProps
255
255
  });
256
256
  module.exports = __toCommonJS(index_exports);
257
- var import_joy58 = require("@mui/joy");
257
+ var import_joy60 = require("@mui/joy");
258
258
 
259
259
  // src/components/Accordions/Accordions.tsx
260
260
  var import_react = __toESM(require("react"));
@@ -1924,91 +1924,261 @@ var CurrencyInput = import_react17.default.forwardRef(function CurrencyInput2(in
1924
1924
  var CurrencyInput_default = CurrencyInput;
1925
1925
 
1926
1926
  // src/components/DataTable/DataTable.tsx
1927
- var import_react25 = __toESM(require("react"));
1927
+ var import_react28 = __toESM(require("react"));
1928
1928
  var import_react_virtual2 = require("@tanstack/react-virtual");
1929
- var import_joy33 = require("@mui/joy");
1930
- var import_ArrowUpwardRounded = __toESM(require("@mui/icons-material/ArrowUpwardRounded"));
1931
-
1932
- // src/components/Sheet/Sheet.tsx
1933
- var import_joy24 = require("@mui/joy");
1934
- var import_framer_motion16 = require("framer-motion");
1935
- var MotionSheet = (0, import_framer_motion16.motion)(import_joy24.Sheet);
1936
- var Sheet = MotionSheet;
1937
- Sheet.displayName = "Sheet";
1938
-
1939
- // src/components/Sheet/index.ts
1940
- var Sheet_default = Sheet;
1941
1929
 
1942
- // src/components/Table/Table.tsx
1943
- var import_react18 = __toESM(require("react"));
1944
- var import_joy25 = require("@mui/joy");
1945
- var Table = (props) => {
1946
- const { children, ...inheritProps } = props;
1947
- return /* @__PURE__ */ import_react18.default.createElement(import_joy25.Table, { ...inheritProps }, children);
1948
- };
1949
- Table.displayName = "Table";
1950
- function TableHead(props) {
1951
- const {
1952
- headCells,
1953
- showCheckbox,
1954
- onCheckboxChange,
1955
- slots: { checkbox: RenderCheckbox = Checkbox_default } = {},
1956
- slotProps: { checkbox: checkboxProps = {} } = {}
1957
- } = props;
1958
- return /* @__PURE__ */ import_react18.default.createElement("thead", null, /* @__PURE__ */ import_react18.default.createElement("tr", null, showCheckbox && /* @__PURE__ */ import_react18.default.createElement(
1959
- "th",
1960
- {
1961
- style: {
1962
- width: "40px",
1963
- textAlign: "center"
1964
- }
1965
- },
1966
- /* @__PURE__ */ import_react18.default.createElement(RenderCheckbox, { onChange: onCheckboxChange, ...checkboxProps })
1967
- ), headCells.map((headCell) => /* @__PURE__ */ import_react18.default.createElement(
1968
- "th",
1969
- {
1970
- key: headCell.label,
1971
- style: {
1972
- width: headCell.width,
1973
- minWidth: headCell.minWidth,
1974
- maxWidth: headCell.maxWidth,
1975
- textAlign: headCell.numeric ? "right" : "left"
1976
- }
1977
- },
1978
- headCell.label
1979
- ))));
1930
+ // src/components/DataTable/utils.ts
1931
+ function extractFieldsFromGroupingModel(items) {
1932
+ const fields = /* @__PURE__ */ new Set();
1933
+ for (const item of items) {
1934
+ if ("groupId" in item) {
1935
+ const children = Array.isArray(item.children) ? item.children : [item.children];
1936
+ const childFields = extractFieldsFromGroupingModel(children);
1937
+ childFields.forEach((field) => fields.add(field));
1938
+ } else {
1939
+ fields.add(item.field);
1940
+ }
1941
+ }
1942
+ return fields;
1980
1943
  }
1981
- TableHead.displayName = "TableHead";
1982
- function TableBody(props) {
1983
- const {
1984
- rows,
1985
- cellOrder,
1986
- rowOptions,
1987
- showCheckbox,
1988
- onCheckboxChange,
1989
- slots: { checkbox: RenderCheckbox = Checkbox_default } = {},
1990
- slotProps: { checkbox: checkboxProps = {} } = {}
1991
- } = props;
1992
- return /* @__PURE__ */ import_react18.default.createElement("tbody", null, rows.map((row, rowIndex) => /* @__PURE__ */ import_react18.default.createElement("tr", { key: `table-row-${rowIndex}` }, showCheckbox && /* @__PURE__ */ import_react18.default.createElement(
1993
- "td",
1994
- {
1995
- style: {
1996
- textAlign: "center"
1944
+ function reorderColumnsByGroupingModel(columns, columnGroupingModel) {
1945
+ const fieldsInGroupingModel = extractFieldsFromGroupingModel(columnGroupingModel);
1946
+ const orderedFields = [];
1947
+ function collectFieldsInOrder(items) {
1948
+ for (const item of items) {
1949
+ if ("groupId" in item) {
1950
+ const children = Array.isArray(item.children) ? item.children : [item.children];
1951
+ collectFieldsInOrder(children);
1952
+ } else {
1953
+ if (!orderedFields.includes(item.field)) {
1954
+ orderedFields.push(item.field);
1955
+ }
1997
1956
  }
1998
- },
1999
- /* @__PURE__ */ import_react18.default.createElement(RenderCheckbox, { onChange: (event) => onCheckboxChange?.(event, rowIndex), ...checkboxProps })
2000
- ), cellOrder.map((cellKey) => /* @__PURE__ */ import_react18.default.createElement(
2001
- "td",
2002
- {
2003
- key: cellKey,
2004
- style: {
2005
- textAlign: rowOptions?.[cellKey]?.numeric ? "right" : "left"
1957
+ }
1958
+ }
1959
+ collectFieldsInOrder(columnGroupingModel);
1960
+ const columnMap = new Map(columns.map((col) => [col.field, col]));
1961
+ const reorderedColumns = [];
1962
+ for (const field of orderedFields) {
1963
+ const column = columnMap.get(field);
1964
+ if (column) {
1965
+ reorderedColumns.push(column);
1966
+ }
1967
+ }
1968
+ for (const column of columns) {
1969
+ if (!fieldsInGroupingModel.has(column.field)) {
1970
+ reorderedColumns.push(column);
1971
+ }
1972
+ }
1973
+ return reorderedColumns;
1974
+ }
1975
+ function flattenColumnGroups(items, groupPath = [], columnIndex = { current: 0 }) {
1976
+ const result = [];
1977
+ for (const item of items) {
1978
+ if ("groupId" in item) {
1979
+ const newPath = [...groupPath, item.groupId];
1980
+ const children = Array.isArray(item.children) ? item.children : [item.children];
1981
+ result.push(...flattenColumnGroups(children, newPath, columnIndex));
1982
+ } else {
1983
+ result.push({
1984
+ ...item,
1985
+ groupPath,
1986
+ columnIndex: columnIndex.current++
1987
+ });
1988
+ }
1989
+ }
1990
+ return result;
1991
+ }
1992
+ function calculateColumnGroups(columnGroupingModel, columns) {
1993
+ const fieldsInGroupingModel = extractFieldsFromGroupingModel(columnGroupingModel);
1994
+ const flattenedColumns = flattenColumnGroups(columnGroupingModel);
1995
+ const columnIndexMap = new Map(flattenedColumns.map((col) => [col.field, col.columnIndex]));
1996
+ const processedGroups = /* @__PURE__ */ new Map();
1997
+ const groupsByLevel = [];
1998
+ let maxLevel = 0;
1999
+ function processGroup(items, level, parentGroupId) {
2000
+ let minIndex = Infinity;
2001
+ let maxIndex = -Infinity;
2002
+ for (const item of items) {
2003
+ if ("groupId" in item) {
2004
+ const groupKey = parentGroupId ? `${parentGroupId}.${item.groupId}` : item.groupId;
2005
+ if (!processedGroups.has(groupKey)) {
2006
+ const children = Array.isArray(item.children) ? item.children : [item.children];
2007
+ const { startIndex, colspan } = processGroup(children, level + 1, groupKey);
2008
+ const group = {
2009
+ groupId: item.groupId,
2010
+ headerName: item.headerName,
2011
+ headerClassName: item.headerClassName,
2012
+ colspan,
2013
+ level,
2014
+ startIndex
2015
+ };
2016
+ processedGroups.set(groupKey, group);
2017
+ if (!groupsByLevel[level]) {
2018
+ groupsByLevel[level] = [];
2019
+ }
2020
+ groupsByLevel[level].push(group);
2021
+ maxLevel = Math.max(maxLevel, level);
2022
+ minIndex = Math.min(minIndex, startIndex);
2023
+ maxIndex = Math.max(maxIndex, startIndex + colspan - 1);
2024
+ }
2025
+ } else {
2026
+ const columnIndex = columnIndexMap.get(item.field);
2027
+ if (columnIndex !== void 0) {
2028
+ minIndex = Math.min(minIndex, columnIndex);
2029
+ maxIndex = Math.max(maxIndex, columnIndex);
2030
+ }
2006
2031
  }
2007
- },
2008
- row[cellKey]
2009
- )))));
2032
+ }
2033
+ return {
2034
+ startIndex: minIndex === Infinity ? 0 : minIndex,
2035
+ colspan: maxIndex === -Infinity ? 0 : maxIndex - minIndex + 1
2036
+ };
2037
+ }
2038
+ processGroup(columnGroupingModel, 0);
2039
+ groupsByLevel.forEach((level) => {
2040
+ level.sort((a, b) => a.startIndex - b.startIndex);
2041
+ });
2042
+ return { groups: groupsByLevel, maxLevel, fieldsInGroupingModel };
2010
2043
  }
2011
- TableBody.displayName = "TableBody";
2044
+ function getTextAlign(props) {
2045
+ return !props.editMode && ["number", "date", "currency"].includes(props.type || "") ? "end" : "start";
2046
+ }
2047
+ var numberFormatter = (value) => "Intl" in window ? new Intl.NumberFormat().format(value) : value;
2048
+
2049
+ // src/components/DataTable/styled.tsx
2050
+ var import_react18 = __toESM(require("react"));
2051
+ var import_joy24 = require("@mui/joy");
2052
+ var import_framer_motion16 = require("framer-motion");
2053
+ var import_ArrowUpwardRounded = __toESM(require("@mui/icons-material/ArrowUpwardRounded"));
2054
+ var EllipsisDiv = (0, import_joy24.styled)("div", {
2055
+ name: "DataTable",
2056
+ slot: "textEllipsis"
2057
+ })({
2058
+ overflow: "hidden",
2059
+ textOverflow: "ellipsis",
2060
+ whiteSpace: "nowrap"
2061
+ });
2062
+ var OverlayWrapper = (0, import_joy24.styled)("tr", {
2063
+ name: "DataTable",
2064
+ slot: "overlayWrapper"
2065
+ })({
2066
+ position: "sticky",
2067
+ top: `calc(var(--unstable_TableCell-height, 32px))`,
2068
+ left: 0,
2069
+ right: 0,
2070
+ zIndex: 1,
2071
+ "& > td": {
2072
+ height: 0,
2073
+ padding: 0,
2074
+ border: "none !important"
2075
+ }
2076
+ });
2077
+ var VirtualizedTableBody = (0, import_joy24.styled)("tbody", {
2078
+ name: "DataTable",
2079
+ slot: "tableBody"
2080
+ })({
2081
+ "&::after": {
2082
+ content: "''",
2083
+ display: "block",
2084
+ height: "0.01em"
2085
+ },
2086
+ [`& .${import_joy24.buttonClasses.root}`]: {
2087
+ "--Button-minHeight": "26px",
2088
+ "--Button-paddingBlock": "0.25rem",
2089
+ lineHeight: 1,
2090
+ marginTop: "-2px",
2091
+ marginBottom: "-2px"
2092
+ },
2093
+ [`& .${import_joy24.iconButtonClasses.root}`]: {
2094
+ "--IconButton-size": "26px",
2095
+ verticalAlign: "middle",
2096
+ marginTop: "-2px",
2097
+ marginBottom: "-2px"
2098
+ }
2099
+ });
2100
+ var StyledTableRow = (0, import_joy24.styled)("tr", {
2101
+ name: "DataTable",
2102
+ slot: "tableRow",
2103
+ shouldForwardProp: (prop) => prop !== "striped"
2104
+ })(({ striped }) => ({
2105
+ ...striped && {
2106
+ backgroundColor: "var(--TableRow-stripeBackground, var(--ceed-palette-background-level2))",
2107
+ color: "var(--ceed-palette-text-primary)",
2108
+ "& td": {
2109
+ backgroundColor: "background.surface"
2110
+ }
2111
+ },
2112
+ "&:hover": {
2113
+ backgroundColor: "var(--TableRow-hoverBackground, var(--ceed-palette-background-level3))",
2114
+ "& td": {
2115
+ backgroundColor: "var(--TableRow-hoverBackground, var(--ceed-palette-background-level3))"
2116
+ }
2117
+ }
2118
+ }));
2119
+ var Asterisk = (0, import_joy24.styled)("span", {
2120
+ name: "DataTable",
2121
+ slot: "headCellAsterisk"
2122
+ })(({ theme }) => ({
2123
+ color: "var(--ceed-palette-danger-500)",
2124
+ marginLeft: theme.spacing(0.5)
2125
+ }));
2126
+ var StyledTh = (0, import_joy24.styled)(import_framer_motion16.motion.th)(({ theme }) => ({
2127
+ boxShadow: "1px 0 var(--TableCell-borderColor)"
2128
+ }));
2129
+ var StyledTd = (0, import_joy24.styled)("td")(({ theme }) => ({
2130
+ transition: `box-shadow 0.3s`,
2131
+ "&:not(.is-last-left):not(.is-last-right)": {
2132
+ boxShadow: "1px 0 var(--TableCell-borderColor)"
2133
+ },
2134
+ ".ScrollableRight &": {
2135
+ "&.is-last-left": {
2136
+ boxShadow: `1px 0 var(--TableCell-borderColor), ${theme.shadow.md}`
2137
+ }
2138
+ },
2139
+ ".ScrollableLeft &": {
2140
+ "&.is-last-right": {
2141
+ boxShadow: `1px 0 var(--TableCell-borderColor), ${theme.shadow.md}`
2142
+ }
2143
+ }
2144
+ }));
2145
+ var MotionSortIcon = (0, import_framer_motion16.motion)(import_ArrowUpwardRounded.default);
2146
+ var DefaultLoadingOverlay = () => /* @__PURE__ */ import_react18.default.createElement(import_joy24.LinearProgress, { value: 8, variant: "plain" });
2147
+ var Resizer = (ref, targetRef = ref) => /* @__PURE__ */ import_react18.default.createElement(
2148
+ Box_default,
2149
+ {
2150
+ sx: {
2151
+ position: "absolute",
2152
+ top: 0,
2153
+ right: 0,
2154
+ bottom: 0,
2155
+ width: "4px",
2156
+ cursor: "col-resize"
2157
+ },
2158
+ onClick: (e) => e.stopPropagation(),
2159
+ onMouseDown: (e) => {
2160
+ const initialX = e.clientX;
2161
+ const initialWidth = ref.current?.getBoundingClientRect().width;
2162
+ const onMouseMove = (e2) => {
2163
+ if (initialWidth && initialX) {
2164
+ ref.current.style.width = `${initialWidth + (e2.clientX - initialX)}px`;
2165
+ targetRef.current.style.width = `${initialWidth + (e2.clientX - initialX)}px`;
2166
+ }
2167
+ };
2168
+ const onMouseUp = () => {
2169
+ document.removeEventListener("mousemove", onMouseMove);
2170
+ document.removeEventListener("mouseup", onMouseUp);
2171
+ };
2172
+ document.addEventListener("mousemove", onMouseMove);
2173
+ document.addEventListener("mouseup", onMouseUp);
2174
+ }
2175
+ }
2176
+ );
2177
+
2178
+ // src/components/DataTable/components.tsx
2179
+ var import_react24 = __toESM(require("react"));
2180
+ var import_joy32 = require("@mui/joy");
2181
+ var import_framer_motion22 = require("framer-motion");
2012
2182
 
2013
2183
  // src/components/DatePicker/DatePicker.tsx
2014
2184
  var import_react19 = __toESM(require("react"));
@@ -2017,10 +2187,20 @@ var import_CalendarToday = __toESM(require("@mui/icons-material/CalendarToday"))
2017
2187
  var import_joy27 = require("@mui/joy");
2018
2188
  var import_base2 = require("@mui/base");
2019
2189
 
2190
+ // src/components/Sheet/Sheet.tsx
2191
+ var import_joy25 = require("@mui/joy");
2192
+ var import_framer_motion17 = require("framer-motion");
2193
+ var MotionSheet = (0, import_framer_motion17.motion)(import_joy25.Sheet);
2194
+ var Sheet = MotionSheet;
2195
+ Sheet.displayName = "Sheet";
2196
+
2197
+ // src/components/Sheet/index.ts
2198
+ var Sheet_default = Sheet;
2199
+
2020
2200
  // src/components/DialogActions/DialogActions.tsx
2021
2201
  var import_joy26 = require("@mui/joy");
2022
- var import_framer_motion17 = require("framer-motion");
2023
- var MotionDialogActions = (0, import_framer_motion17.motion)(import_joy26.DialogActions);
2202
+ var import_framer_motion18 = require("framer-motion");
2203
+ var MotionDialogActions = (0, import_framer_motion18.motion)(import_joy26.DialogActions);
2024
2204
  var StyledDialogActions = (0, import_joy26.styled)(MotionDialogActions)(({ theme }) => ({
2025
2205
  padding: theme.spacing(2),
2026
2206
  gap: theme.spacing(2),
@@ -2376,8 +2556,8 @@ var DatePicker_default = DatePicker;
2376
2556
  // src/components/Textarea/Textarea.tsx
2377
2557
  var import_react20 = __toESM(require("react"));
2378
2558
  var import_joy28 = require("@mui/joy");
2379
- var import_framer_motion18 = require("framer-motion");
2380
- var MotionTextarea = (0, import_framer_motion18.motion)(import_joy28.Textarea);
2559
+ var import_framer_motion19 = require("framer-motion");
2560
+ var MotionTextarea = (0, import_framer_motion19.motion)(import_joy28.Textarea);
2381
2561
  var Textarea = (props) => {
2382
2562
  const {
2383
2563
  label,
@@ -2430,8 +2610,8 @@ var Textarea_default = Textarea;
2430
2610
  // src/components/Select/Select.tsx
2431
2611
  var import_react21 = __toESM(require("react"));
2432
2612
  var import_joy29 = require("@mui/joy");
2433
- var import_framer_motion19 = require("framer-motion");
2434
- var MotionOption = (0, import_framer_motion19.motion)(import_joy29.Option);
2613
+ var import_framer_motion20 = require("framer-motion");
2614
+ var MotionOption = (0, import_framer_motion20.motion)(import_joy29.Option);
2435
2615
  var Option = MotionOption;
2436
2616
  Option.displayName = "Option";
2437
2617
  function Select(props) {
@@ -2507,11 +2687,14 @@ Select.displayName = "Select";
2507
2687
  // src/components/Select/index.ts
2508
2688
  var Select_default = Select;
2509
2689
 
2690
+ // src/components/DataTable/components.tsx
2691
+ var import_joy33 = require("@mui/joy");
2692
+
2510
2693
  // src/components/Tooltip/Tooltip.tsx
2511
2694
  var import_react22 = __toESM(require("react"));
2512
2695
  var import_joy30 = require("@mui/joy");
2513
- var import_framer_motion20 = require("framer-motion");
2514
- var MotionTooltip = (0, import_framer_motion20.motion)(import_joy30.Tooltip);
2696
+ var import_framer_motion21 = require("framer-motion");
2697
+ var MotionTooltip = (0, import_framer_motion21.motion)(import_joy30.Tooltip);
2515
2698
  var Tooltip = (props) => {
2516
2699
  return /* @__PURE__ */ import_react22.default.createElement(MotionTooltip, { ...props });
2517
2700
  };
@@ -2520,151 +2703,11 @@ Tooltip.displayName = "Tooltip";
2520
2703
  // src/components/Tooltip/index.ts
2521
2704
  var Tooltip_default = Tooltip;
2522
2705
 
2523
- // src/components/DataTable/DataTable.tsx
2524
- var import_framer_motion21 = require("framer-motion");
2525
-
2526
- // src/components/Pagination/Pagination.tsx
2706
+ // src/components/InfoSign/InfoSign.tsx
2527
2707
  var import_react23 = __toESM(require("react"));
2528
- var import_ChevronLeft2 = __toESM(require("@mui/icons-material/ChevronLeft"));
2529
- var import_ChevronRight2 = __toESM(require("@mui/icons-material/ChevronRight"));
2530
2708
  var import_joy31 = require("@mui/joy");
2531
- var PaginationButton = (0, import_joy31.styled)(Button_default, {
2532
- name: "Pagination",
2533
- slot: "button"
2534
- })(({ theme, active, size }) => ({
2535
- "--Button-size": {
2536
- sm: "32px",
2537
- md: "40px",
2538
- lg: "48px"
2539
- }[size],
2540
- width: "var(--Button-size)",
2541
- height: "var(--Button-size)",
2542
- backgroundColor: active ? theme.vars.palette.primary.softHoverBg : "transparent",
2543
- color: active ? theme.vars.palette.primary.softColor : theme.vars.palette.neutral.plainColor,
2544
- "&:hover": {
2545
- color: active ? theme.vars.palette.primary.softColor : theme.vars.palette.neutral.softColor,
2546
- backgroundColor: active ? theme.vars.palette.primary.softActiveBg : theme.vars.palette.neutral.softHoverBg
2547
- }
2548
- }));
2549
- var PaginationIconButton = (0, import_joy31.styled)(IconButton_default, {
2550
- name: "Pagination",
2551
- slot: "button"
2552
- })(({ theme, size }) => ({
2553
- "--IconButton-size": {
2554
- sm: "32px",
2555
- md: "40px",
2556
- lg: "48px"
2557
- }[size],
2558
- "--Icon-fontSize": "20px",
2559
- width: "var(--IconButton-size)",
2560
- height: "var(--IconButton-size)",
2561
- color: theme.vars.palette.neutral.plainColor,
2562
- "&:hover": {
2563
- color: theme.vars.palette.neutral.softColor,
2564
- backgroundColor: theme.vars.palette.neutral.softHoverBg
2565
- }
2566
- }));
2567
- var PaginationRoot = (0, import_joy31.styled)(Stack_default, {
2568
- name: "Pagination",
2569
- slot: "root"
2570
- })({});
2571
- var PaginationContainer = (0, import_joy31.styled)(Stack_default, {
2572
- name: "Pagination",
2573
- slot: "container"
2574
- })(({ theme, size }) => ({
2575
- gap: {
2576
- sm: theme.spacing(1),
2577
- md: theme.spacing(1.5),
2578
- lg: theme.spacing(2)
2579
- }[size]
2580
- }));
2581
- function Pagination(props) {
2582
- const {
2583
- paginationModel: _paginationModel,
2584
- defaultPaginationModel = { page: 1, pageSize: 25 },
2585
- onPageChange,
2586
- rowCount,
2587
- size = "md",
2588
- ...innerProps
2589
- } = props;
2590
- const [paginationModel, setPaginationModel] = useControlledState(
2591
- _paginationModel,
2592
- defaultPaginationModel,
2593
- (0, import_react23.useCallback)(
2594
- (newPage) => {
2595
- onPageChange(newPage.page);
2596
- },
2597
- [onPageChange]
2598
- )
2599
- );
2600
- const handlePageChange = (newPage) => {
2601
- setPaginationModel({ ...paginationModel, page: newPage });
2602
- };
2603
- const firstPage = 1;
2604
- const lastPage = Math.max(firstPage, Math.ceil(rowCount / paginationModel.pageSize));
2605
- const beforePages = [paginationModel.page - 2, paginationModel.page - 1].filter((p) => p > 1);
2606
- const afterPages = [paginationModel.page + 1, paginationModel.page + 2].filter((p) => p <= lastPage - 1);
2607
- const isMoreAfterPages = lastPage > 1 && paginationModel.page < lastPage - 3;
2608
- const isMoreBeforePages = lastPage > 1 && paginationModel.page > 4;
2609
- (0, import_react23.useEffect)(() => {
2610
- if (paginationModel.page > lastPage) {
2611
- setPaginationModel({ ...paginationModel, page: lastPage });
2612
- }
2613
- }, [rowCount, paginationModel, lastPage, setPaginationModel]);
2614
- return /* @__PURE__ */ import_react23.default.createElement(PaginationRoot, { ...innerProps }, /* @__PURE__ */ import_react23.default.createElement(PaginationContainer, { direction: "row", size, alignItems: "center" }, /* @__PURE__ */ import_react23.default.createElement(
2615
- PaginationIconButton,
2616
- {
2617
- size,
2618
- variant: "plain",
2619
- color: "neutral",
2620
- onClick: () => handlePageChange(paginationModel.page - 1),
2621
- disabled: paginationModel.page === firstPage,
2622
- "aria-label": "Previous page"
2623
- },
2624
- /* @__PURE__ */ import_react23.default.createElement(import_ChevronLeft2.default, null)
2625
- ), paginationModel.page !== firstPage && /* @__PURE__ */ import_react23.default.createElement(PaginationButton, { size, variant: "plain", color: "neutral", onClick: () => handlePageChange(firstPage) }, firstPage), isMoreBeforePages && /* @__PURE__ */ import_react23.default.createElement(
2626
- PaginationButton,
2627
- {
2628
- size,
2629
- variant: "plain",
2630
- color: "neutral",
2631
- onClick: () => handlePageChange(paginationModel.page - 3),
2632
- "aria-label": "More previous pages"
2633
- },
2634
- "..."
2635
- ), beforePages.map((p) => /* @__PURE__ */ import_react23.default.createElement(PaginationButton, { key: p, size, variant: "plain", color: "neutral", onClick: () => handlePageChange(p) }, p)), /* @__PURE__ */ import_react23.default.createElement(PaginationButton, { active: "active", size, "aria-current": "page" }, paginationModel.page), afterPages.map((p) => /* @__PURE__ */ import_react23.default.createElement(PaginationButton, { key: p, size, variant: "plain", color: "neutral", onClick: () => handlePageChange(p) }, p)), isMoreAfterPages && /* @__PURE__ */ import_react23.default.createElement(
2636
- PaginationButton,
2637
- {
2638
- size,
2639
- variant: "plain",
2640
- color: "neutral",
2641
- "aria-label": "More next pages",
2642
- onClick: () => handlePageChange(paginationModel.page + 3)
2643
- },
2644
- "..."
2645
- ), paginationModel.page !== lastPage && /* @__PURE__ */ import_react23.default.createElement(PaginationButton, { size, variant: "plain", color: "neutral", onClick: () => handlePageChange(lastPage) }, lastPage), /* @__PURE__ */ import_react23.default.createElement(
2646
- PaginationIconButton,
2647
- {
2648
- size,
2649
- variant: "plain",
2650
- color: "neutral",
2651
- onClick: () => handlePageChange(paginationModel.page + 1),
2652
- disabled: paginationModel.page === lastPage,
2653
- "aria-label": "Next page"
2654
- },
2655
- /* @__PURE__ */ import_react23.default.createElement(import_ChevronRight2.default, null)
2656
- )));
2657
- }
2658
- Pagination.displayName = "Pagination";
2659
-
2660
- // src/components/Pagination/index.ts
2661
- var Pagination_default = Pagination;
2662
-
2663
- // src/components/InfoSign/InfoSign.tsx
2664
- var import_react24 = __toESM(require("react"));
2665
- var import_joy32 = require("@mui/joy");
2666
2709
  var import_Info = __toESM(require("@mui/icons-material/Info"));
2667
- var InfoIcon = (0, import_joy32.styled)(import_Info.default, {
2710
+ var InfoIcon = (0, import_joy31.styled)(import_Info.default, {
2668
2711
  name: "InfoSign",
2669
2712
  slot: "InfoSign"
2670
2713
  })(({ theme }) => ({
@@ -2674,67 +2717,55 @@ var InfoIcon = (0, import_joy32.styled)(import_Info.default, {
2674
2717
  }));
2675
2718
  function InfoSign(props) {
2676
2719
  const { message, placement } = props;
2677
- return /* @__PURE__ */ import_react24.default.createElement(
2720
+ return /* @__PURE__ */ import_react23.default.createElement(
2678
2721
  Tooltip_default,
2679
2722
  {
2680
2723
  arrow: true,
2681
2724
  placement,
2682
2725
  sx: {
2683
- [`&.${import_joy32.tooltipClasses.root}`]: {
2726
+ [`&.${import_joy31.tooltipClasses.root}`]: {
2684
2727
  maxWidth: "320px"
2685
2728
  }
2686
2729
  },
2687
- title: message?.split("\n").map((line, i) => /* @__PURE__ */ import_react24.default.createElement("div", { key: `info-sign-${i}` }, line))
2730
+ title: message?.split("\n").map((line, i) => /* @__PURE__ */ import_react23.default.createElement("div", { key: `info-sign-${i}` }, line))
2688
2731
  },
2689
- /* @__PURE__ */ import_react24.default.createElement(InfoIcon, null)
2732
+ /* @__PURE__ */ import_react23.default.createElement(InfoIcon, null)
2690
2733
  );
2691
2734
  }
2692
2735
 
2693
2736
  // src/components/InfoSign/index.ts
2694
2737
  var InfoSign_default = InfoSign;
2695
2738
 
2696
- // src/components/DataTable/DataTable.tsx
2697
- function getTextAlign(props) {
2698
- return !props.editMode && ["number", "date", "currency"].includes(props.type || "") ? "end" : "start";
2699
- }
2700
- var DefaultLoadingOverlay = () => /* @__PURE__ */ import_react25.default.createElement(import_joy33.LinearProgress, { value: 8, variant: "plain" });
2701
- var EllipsisDiv = (0, import_joy33.styled)("div", {
2702
- name: "DataTable",
2703
- slot: "textEllipsis"
2704
- })({
2705
- overflow: "hidden",
2706
- textOverflow: "ellipsis",
2707
- whiteSpace: "nowrap"
2708
- });
2739
+ // src/components/DataTable/components.tsx
2709
2740
  var TextEllipsis = ({ children }) => {
2710
- const textRef = (0, import_react25.useRef)(null);
2711
- const [showTooltip, setShowTooltip] = (0, import_react25.useState)(false);
2712
- (0, import_react25.useLayoutEffect)(() => {
2741
+ const textRef = (0, import_react24.useRef)(null);
2742
+ const [showTooltip, setShowTooltip] = (0, import_react24.useState)(false);
2743
+ (0, import_react24.useLayoutEffect)(() => {
2713
2744
  const element = textRef.current;
2714
2745
  if (element) {
2715
2746
  const isTextTruncated = element.scrollWidth > element.clientWidth;
2716
2747
  setShowTooltip(isTextTruncated);
2717
2748
  }
2718
2749
  }, [children]);
2719
- const content = /* @__PURE__ */ import_react25.default.createElement(EllipsisDiv, { ref: textRef }, children);
2750
+ const content = /* @__PURE__ */ import_react24.default.createElement(EllipsisDiv, { ref: textRef }, children);
2720
2751
  if (showTooltip) {
2721
- return /* @__PURE__ */ import_react25.default.createElement(Tooltip_default, { title: children, placement: "top", onClick: (e) => e.stopPropagation() }, content);
2752
+ return /* @__PURE__ */ import_react24.default.createElement(Tooltip_default, { title: children, placement: "top", onClick: (e) => e.stopPropagation() }, content);
2722
2753
  }
2723
2754
  return content;
2724
2755
  };
2725
2756
  var CellTextEllipsis = ({ children }) => {
2726
- const textRef = (0, import_react25.useRef)(null);
2727
- const [showTooltip, setShowTooltip] = (0, import_react25.useState)(false);
2728
- (0, import_react25.useLayoutEffect)(() => {
2757
+ const textRef = (0, import_react24.useRef)(null);
2758
+ const [showTooltip, setShowTooltip] = (0, import_react24.useState)(false);
2759
+ (0, import_react24.useLayoutEffect)(() => {
2729
2760
  const element = textRef.current;
2730
2761
  if (element) {
2731
2762
  const isTextTruncated = element.scrollWidth > element.clientWidth;
2732
2763
  setShowTooltip(isTextTruncated);
2733
2764
  }
2734
2765
  }, [children]);
2735
- const content = /* @__PURE__ */ import_react25.default.createElement(EllipsisDiv, { ref: textRef }, children);
2766
+ const content = /* @__PURE__ */ import_react24.default.createElement(EllipsisDiv, { ref: textRef }, children);
2736
2767
  if (showTooltip) {
2737
- return /* @__PURE__ */ import_react25.default.createElement(
2768
+ return /* @__PURE__ */ import_react24.default.createElement(
2738
2769
  Tooltip_default,
2739
2770
  {
2740
2771
  title: children,
@@ -2748,129 +2779,6 @@ var CellTextEllipsis = ({ children }) => {
2748
2779
  }
2749
2780
  return content;
2750
2781
  };
2751
- var OverlayWrapper = (0, import_joy33.styled)("tr", {
2752
- name: "DataTable",
2753
- slot: "overlayWrapper"
2754
- })({
2755
- position: "sticky",
2756
- top: `calc(var(--unstable_TableCell-height, 32px))`,
2757
- left: 0,
2758
- right: 0,
2759
- zIndex: 1,
2760
- "& > td": {
2761
- height: 0,
2762
- padding: 0,
2763
- border: "none !important"
2764
- }
2765
- });
2766
- var numberFormatter = (value) => "Intl" in window ? new Intl.NumberFormat().format(value) : value;
2767
- var Resizer = (ref) => /* @__PURE__ */ import_react25.default.createElement(
2768
- Box_default,
2769
- {
2770
- sx: {
2771
- position: "absolute",
2772
- top: 0,
2773
- right: 0,
2774
- bottom: 0,
2775
- width: "4px",
2776
- cursor: "col-resize"
2777
- },
2778
- onClick: (e) => e.stopPropagation(),
2779
- onMouseDown: (e) => {
2780
- const initialX = e.clientX;
2781
- const initialWidth = ref.current?.getBoundingClientRect().width;
2782
- const onMouseMove = (e2) => {
2783
- if (initialWidth && initialX) {
2784
- ref.current.style.width = `${initialWidth + (e2.clientX - initialX)}px`;
2785
- }
2786
- };
2787
- const onMouseUp = () => {
2788
- document.removeEventListener("mousemove", onMouseMove);
2789
- document.removeEventListener("mouseup", onMouseUp);
2790
- };
2791
- document.addEventListener("mousemove", onMouseMove);
2792
- document.addEventListener("mouseup", onMouseUp);
2793
- }
2794
- }
2795
- );
2796
- var VirtualizedTableBody = (0, import_joy33.styled)("tbody", {
2797
- name: "DataTable",
2798
- slot: "tableBody"
2799
- })({
2800
- // HACK: for virtualization: tbody의 height를 렌더링 된 tr의 총 높이 보다 높은 값으로 지정하고도 tr의 size를 유지하기 위한 꼼수
2801
- "&::after": {
2802
- content: "''",
2803
- display: "block",
2804
- height: "0.01em"
2805
- },
2806
- // NOTE: 테이블 안에 버튼을 넣을 때 버튼의 높이가 테이블의 높이를 넘어가지 않도록 설정
2807
- [`& .${import_joy33.buttonClasses.root}`]: {
2808
- "--Button-minHeight": "26px",
2809
- "--Button-paddingBlock": "0.25rem",
2810
- lineHeight: 1,
2811
- marginTop: "-2px",
2812
- marginBottom: "-2px"
2813
- },
2814
- [`& .${import_joy33.iconButtonClasses.root}`]: {
2815
- "--IconButton-size": "26px",
2816
- verticalAlign: "middle",
2817
- marginTop: "-2px",
2818
- marginBottom: "-2px"
2819
- }
2820
- });
2821
- var StyledTableRow = (0, import_joy33.styled)("tr", {
2822
- name: "DataTable",
2823
- slot: "tableRow",
2824
- shouldForwardProp: (prop) => prop !== "striped"
2825
- })(({ striped }) => ({
2826
- ...striped && {
2827
- backgroundColor: "var(--TableRow-stripeBackground, var(--ceed-palette-background-level2))",
2828
- color: "var(--ceed-palette-text-primary)",
2829
- "& td": {
2830
- backgroundColor: "background.surface"
2831
- }
2832
- },
2833
- "&:hover": {
2834
- backgroundColor: "var(--TableRow-hoverBackground, var(--ceed-palette-background-level3))",
2835
- "& td": {
2836
- backgroundColor: "var(--TableRow-hoverBackground, var(--ceed-palette-background-level3))"
2837
- }
2838
- }
2839
- }));
2840
- var VirtualizedTableRow = (0, import_react25.memo)(StyledTableRow, (prevProps, nextProps) => {
2841
- return prevProps.striped === nextProps.striped && prevProps.style?.height === nextProps.style?.height && prevProps.style?.transform === nextProps.style?.transform && // @ts-ignore
2842
- prevProps["data-row-id"] === nextProps["data-row-id"] && // @ts-ignore
2843
- prevProps["data-index"] === nextProps["data-index"] && prevProps.tabIndex === nextProps.tabIndex && prevProps["aria-checked"] === nextProps["aria-checked"] && // Include children check to handle isCellEditable changes
2844
- prevProps.children === nextProps.children;
2845
- });
2846
- var Asterisk = (0, import_joy33.styled)("span", {
2847
- name: "DataTable",
2848
- slot: "headCellAsterisk"
2849
- })(({ theme }) => ({
2850
- color: "var(--ceed-palette-danger-500)",
2851
- marginLeft: theme.spacing(0.5)
2852
- }));
2853
- var StyledTh = (0, import_joy33.styled)(import_framer_motion21.motion.th)(({ theme }) => ({
2854
- boxShadow: "1px 0 var(--TableCell-borderColor)"
2855
- // border 대신 box-shadow를 사용하여 stickyHeader와 함께 사용할 때 border가 겹치는 문제를 해결
2856
- }));
2857
- var StyledTd = (0, import_joy33.styled)("td")(({ theme }) => ({
2858
- transition: `box-shadow 0.3s`,
2859
- "&:not(.is-last-left):not(.is-last-right)": {
2860
- boxShadow: "1px 0 var(--TableCell-borderColor)"
2861
- },
2862
- ".ScrollableRight &": {
2863
- "&.is-last-left": {
2864
- boxShadow: `1px 0 var(--TableCell-borderColor), ${theme.shadow.md}`
2865
- }
2866
- },
2867
- ".ScrollableLeft &": {
2868
- "&.is-last-right": {
2869
- boxShadow: `1px 0 var(--TableCell-borderColor), ${theme.shadow.md}`
2870
- }
2871
- }
2872
- }));
2873
- var MotionSortIcon = (0, import_framer_motion21.motion)(import_ArrowUpwardRounded.default);
2874
2782
  var HeadCell = (props) => {
2875
2783
  const {
2876
2784
  width,
@@ -2892,18 +2800,21 @@ var HeadCell = (props) => {
2892
2800
  isPinned,
2893
2801
  pinnedStartPosition,
2894
2802
  pinnedEndPosition,
2895
- headerRef
2803
+ headerRef,
2804
+ tableColRef,
2805
+ headerClassName
2896
2806
  } = props;
2897
- const theme = (0, import_joy33.useTheme)();
2807
+ const theme = (0, import_joy32.useTheme)();
2898
2808
  const ref = headerRef;
2899
- const [isHovered, setIsHovered] = (0, import_react25.useState)(false);
2809
+ const colRef = tableColRef;
2810
+ const [isHovered, setIsHovered] = (0, import_react24.useState)(false);
2900
2811
  const sortable = type === "actions" ? false : _sortable;
2901
- const headId = (0, import_react25.useMemo)(
2812
+ const headId = (0, import_react24.useMemo)(
2902
2813
  () => `${tableId}_header_${headerName ?? field}`.trim(),
2903
2814
  [tableId, headerName, field]
2904
2815
  );
2905
- const resizer = (0, import_react25.useMemo)(() => resizable ?? true ? Resizer(ref) : null, [resizable, ref]);
2906
- const style = (0, import_react25.useMemo)(
2816
+ const resizer = (0, import_react24.useMemo)(() => resizable ?? true ? Resizer(ref, colRef) : null, [resizable, ref, colRef]);
2817
+ const style = (0, import_react24.useMemo)(
2907
2818
  () => ({
2908
2819
  width,
2909
2820
  minWidth: minWidth ?? "50px",
@@ -2921,10 +2832,10 @@ var HeadCell = (props) => {
2921
2832
  );
2922
2833
  const textAlign = getTextAlign(props);
2923
2834
  const initialSort = sortOrder[0];
2924
- const sortIcon = (0, import_react25.useMemo)(() => {
2835
+ const sortIcon = (0, import_react24.useMemo)(() => {
2925
2836
  const isSorted = !!sort;
2926
2837
  const isVisible = sortable && (isSorted || isHovered);
2927
- return /* @__PURE__ */ import_react25.default.createElement(import_framer_motion21.AnimatePresence, { mode: "wait" }, isVisible && /* @__PURE__ */ import_react25.default.createElement(
2838
+ return /* @__PURE__ */ import_react24.default.createElement(import_framer_motion22.AnimatePresence, { mode: "wait" }, isVisible && /* @__PURE__ */ import_react24.default.createElement(
2928
2839
  MotionSortIcon,
2929
2840
  {
2930
2841
  key: "sort-icon",
@@ -2952,11 +2863,21 @@ var HeadCell = (props) => {
2952
2863
  }
2953
2864
  ));
2954
2865
  }, [headId, initialSort, sort, sortable, isHovered]);
2955
- const infoSign = (0, import_react25.useMemo)(
2956
- () => description ? /* @__PURE__ */ import_react25.default.createElement(InfoSign_default, { message: description, placement: "bottom" }) : null,
2866
+ const infoSign = (0, import_react24.useMemo)(
2867
+ () => description ? /* @__PURE__ */ import_react24.default.createElement(InfoSign_default, { message: description, placement: "bottom" }) : null,
2957
2868
  [description]
2958
2869
  );
2959
- return /* @__PURE__ */ import_react25.default.createElement(
2870
+ const params = (0, import_react24.useMemo)(
2871
+ () => ({
2872
+ field
2873
+ }),
2874
+ [field]
2875
+ );
2876
+ const computedHeaderClassName = (0, import_react24.useMemo)(
2877
+ () => (typeof headerClassName === "function" ? headerClassName(params) : headerClassName) || void 0,
2878
+ [headerClassName, params]
2879
+ );
2880
+ return /* @__PURE__ */ import_react24.default.createElement(
2960
2881
  StyledTh,
2961
2882
  {
2962
2883
  id: headId,
@@ -2965,16 +2886,17 @@ var HeadCell = (props) => {
2965
2886
  ref,
2966
2887
  key: field,
2967
2888
  style,
2968
- onClick: (0, import_react25.useCallback)(
2889
+ onClick: (0, import_react24.useCallback)(
2969
2890
  (e) => sortable && onSortChange?.({ field, currentSort: sort, multiple: e.shiftKey }),
2970
2891
  [field, onSortChange, sort, sortable]
2971
2892
  ),
2972
2893
  onMouseEnter: () => setIsHovered(true),
2973
2894
  onMouseLeave: () => setIsHovered(false),
2974
2895
  whileHover: "hover",
2975
- initial: "initial"
2896
+ initial: "initial",
2897
+ className: computedHeaderClassName
2976
2898
  },
2977
- /* @__PURE__ */ import_react25.default.createElement(Stack_default, { gap: 1, direction: "row", justifyContent: textAlign, alignItems: "center" }, textAlign === "end" && sortIcon, textAlign === "end" && infoSign, /* @__PURE__ */ import_react25.default.createElement(TextEllipsis, null, headerName ?? field, editMode && required && /* @__PURE__ */ import_react25.default.createElement(Asterisk, null, "*")), textAlign === "start" && infoSign, textAlign === "start" && sortIcon),
2899
+ /* @__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),
2978
2900
  resizer
2979
2901
  );
2980
2902
  };
@@ -2998,10 +2920,10 @@ var BodyCell = (props) => {
2998
2920
  onCellEditStart,
2999
2921
  onCellEditStop
3000
2922
  } = props;
3001
- const theme = (0, import_joy33.useTheme)();
3002
- const [value, setValue] = (0, import_react25.useState)(row[field]);
3003
- const cellRef = (0, import_react25.useRef)(null);
3004
- const params = (0, import_react25.useMemo)(
2923
+ const theme = (0, import_joy32.useTheme)();
2924
+ const [value, setValue] = (0, import_react24.useState)(row[field]);
2925
+ const cellRef = (0, import_react24.useRef)(null);
2926
+ const params = (0, import_react24.useMemo)(
3005
2927
  () => ({
3006
2928
  row,
3007
2929
  value,
@@ -3010,19 +2932,19 @@ var BodyCell = (props) => {
3010
2932
  }),
3011
2933
  [row, rowId, value, field]
3012
2934
  );
3013
- const editMode = (0, import_react25.useMemo)(
2935
+ const editMode = (0, import_react24.useMemo)(
3014
2936
  () => !!(props.editMode && (typeof isCellEditable === "function" ? isCellEditable(params) : isCellEditable ?? true)),
3015
2937
  [props.editMode, isCellEditable, params]
3016
2938
  );
3017
2939
  const propsComponentProps = "componentProps" in props ? props.componentProps : null;
3018
- const componentProps = (0, import_react25.useMemo)(
2940
+ const componentProps = (0, import_react24.useMemo)(
3019
2941
  () => ({
3020
2942
  ..."componentProps" in props && (typeof propsComponentProps === "function" ? propsComponentProps(params) : propsComponentProps || {}),
3021
2943
  size: "sm"
3022
2944
  }),
3023
2945
  [props, propsComponentProps, params]
3024
2946
  );
3025
- const editModeComponentProps = (0, import_react25.useMemo)(
2947
+ const editModeComponentProps = (0, import_react24.useMemo)(
3026
2948
  () => ({
3027
2949
  ...componentProps,
3028
2950
  onChange: (e) => {
@@ -3084,23 +3006,23 @@ var BodyCell = (props) => {
3084
3006
  }),
3085
3007
  [params, row, field, value, componentProps, type, onCellEditStop, onCellEditStart]
3086
3008
  );
3087
- const EditModeComponent = (0, import_react25.useMemo)(() => {
3009
+ const EditModeComponent = (0, import_react24.useMemo)(() => {
3088
3010
  if (renderEditCell) {
3089
- return (0, import_react25.createElement)((0, import_react25.memo)(renderEditCell), params);
3011
+ return (0, import_react24.createElement)((0, import_react24.memo)(renderEditCell), params);
3090
3012
  }
3091
3013
  return {
3092
- date: /* @__PURE__ */ import_react25.default.createElement(DatePicker_default, { value, ...editModeComponentProps }),
3093
- currency: /* @__PURE__ */ import_react25.default.createElement(
3014
+ date: /* @__PURE__ */ import_react24.default.createElement(DatePicker_default, { value, ...editModeComponentProps }),
3015
+ currency: /* @__PURE__ */ import_react24.default.createElement(
3094
3016
  CurrencyInput_default,
3095
3017
  {
3096
3018
  value,
3097
3019
  ...editModeComponentProps
3098
3020
  }
3099
3021
  ),
3100
- number: /* @__PURE__ */ import_react25.default.createElement(Input_default, { value, type: "number", ...editModeComponentProps }),
3101
- text: /* @__PURE__ */ import_react25.default.createElement(Input_default, { value, type: "text", ...editModeComponentProps }),
3102
- longText: /* @__PURE__ */ import_react25.default.createElement(Textarea_default, { value, ...editModeComponentProps }),
3103
- autocomplete: /* @__PURE__ */ import_react25.default.createElement(
3022
+ number: /* @__PURE__ */ import_react24.default.createElement(Input_default, { value, type: "number", ...editModeComponentProps }),
3023
+ text: /* @__PURE__ */ import_react24.default.createElement(Input_default, { value, type: "text", ...editModeComponentProps }),
3024
+ longText: /* @__PURE__ */ import_react24.default.createElement(Textarea_default, { value, ...editModeComponentProps }),
3025
+ autocomplete: /* @__PURE__ */ import_react24.default.createElement(
3104
3026
  Autocomplete_default,
3105
3027
  {
3106
3028
  value,
@@ -3108,7 +3030,7 @@ var BodyCell = (props) => {
3108
3030
  ...editModeComponentProps
3109
3031
  }
3110
3032
  ),
3111
- select: /* @__PURE__ */ import_react25.default.createElement(
3033
+ select: /* @__PURE__ */ import_react24.default.createElement(
3112
3034
  Select_default,
3113
3035
  {
3114
3036
  value,
@@ -3119,13 +3041,13 @@ var BodyCell = (props) => {
3119
3041
  }[type || "text"];
3120
3042
  }, [value, editModeComponentProps, type, renderEditCell, params]);
3121
3043
  const linkComponentFromProps = props.component;
3122
- const ReadModeComponent = (0, import_react25.useMemo)(() => {
3044
+ const ReadModeComponent = (0, import_react24.useMemo)(() => {
3123
3045
  if (renderCell) {
3124
- return (0, import_react25.createElement)((0, import_react25.memo)(renderCell), params);
3046
+ return (0, import_react24.createElement)((0, import_react24.memo)(renderCell), params);
3125
3047
  }
3126
3048
  const innerText = value;
3127
3049
  const typedComponent = {
3128
- link: import_react25.default.createElement(linkComponentFromProps || import_joy33.Link, {
3050
+ link: import_react24.default.createElement(linkComponentFromProps || import_joy33.Link, {
3129
3051
  children: innerText,
3130
3052
  ...componentProps
3131
3053
  })
@@ -3133,22 +3055,22 @@ var BodyCell = (props) => {
3133
3055
  return typedComponent || innerText;
3134
3056
  }, [value, renderCell, params, type, componentProps, linkComponentFromProps]);
3135
3057
  const getActions = props.getActions;
3136
- const CellComponent = (0, import_react25.useMemo)(() => {
3058
+ const CellComponent = (0, import_react24.useMemo)(() => {
3137
3059
  if (type === "actions") {
3138
- return /* @__PURE__ */ import_react25.default.createElement(Stack_default, { direction: "row", gap: 1, justifyContent: "center", alignItems: "center" }, getActions?.(params));
3060
+ return /* @__PURE__ */ import_react24.default.createElement(Stack_default, { direction: "row", gap: 1, justifyContent: "center", alignItems: "center" }, getActions?.(params));
3139
3061
  }
3140
3062
  return editMode && EditModeComponent ? EditModeComponent : ReadModeComponent;
3141
3063
  }, [type, getActions, params, editMode, EditModeComponent, ReadModeComponent]);
3142
- const showTooltip = (0, import_react25.useMemo)(() => noWrap && type === "longText", [noWrap, type]);
3064
+ const showTooltip = (0, import_react24.useMemo)(() => noWrap && type === "longText", [noWrap, type]);
3143
3065
  const isBoundary = props.isLastStartPinnedColumn || props.isLastEndPinnedColumn;
3144
- const computedCellClassName = (0, import_react25.useMemo)(
3066
+ const computedCellClassName = (0, import_react24.useMemo)(
3145
3067
  () => (typeof cellClassName === "function" ? cellClassName(params) : cellClassName) || "",
3146
3068
  [cellClassName, params]
3147
3069
  );
3148
- (0, import_react25.useEffect)(() => {
3070
+ (0, import_react24.useEffect)(() => {
3149
3071
  setValue(row[field]);
3150
3072
  }, [row, field]);
3151
- return /* @__PURE__ */ import_react25.default.createElement(
3073
+ return /* @__PURE__ */ import_react24.default.createElement(
3152
3074
  StyledTd,
3153
3075
  {
3154
3076
  ref: cellRef,
@@ -3165,16 +3087,16 @@ var BodyCell = (props) => {
3165
3087
  },
3166
3088
  className: [isLastStartPinnedColumn && "is-last-left", isLastEndPinnedColumn && "is-last-right", computedCellClassName].filter(Boolean).join(" ") || ""
3167
3089
  },
3168
- (0, import_react25.useMemo)(
3169
- () => showTooltip ? /* @__PURE__ */ import_react25.default.createElement(CellTextEllipsis, null, CellComponent) : CellComponent,
3090
+ (0, import_react24.useMemo)(
3091
+ () => showTooltip ? /* @__PURE__ */ import_react24.default.createElement(CellTextEllipsis, null, CellComponent) : CellComponent,
3170
3092
  [CellComponent, showTooltip]
3171
3093
  )
3172
3094
  );
3173
3095
  };
3174
- var BodyRow = (0, import_react25.memo)(
3096
+ var BodyRow = (0, import_react24.memo)(
3175
3097
  (props) => {
3176
3098
  const { tableId, columns, rowId, editMode, noWrap, row } = props;
3177
- return /* @__PURE__ */ import_react25.default.createElement(import_react25.default.Fragment, null, columns.map((column, i) => /* @__PURE__ */ import_react25.default.createElement(
3099
+ return /* @__PURE__ */ import_react24.default.createElement(import_react24.default.Fragment, null, columns.map((column, i) => /* @__PURE__ */ import_react24.default.createElement(
3178
3100
  BodyCell,
3179
3101
  {
3180
3102
  key: `${rowId}_${column.field.toString()}_${i}`,
@@ -3188,6 +3110,34 @@ var BodyRow = (0, import_react25.memo)(
3188
3110
  )));
3189
3111
  }
3190
3112
  );
3113
+ var StyledTableRow2 = (0, import_joy32.styled)("tr", {
3114
+ name: "DataTable",
3115
+ slot: "tableRow",
3116
+ shouldForwardProp: (prop) => prop !== "striped"
3117
+ })(({ striped }) => ({
3118
+ ...striped && {
3119
+ backgroundColor: "var(--TableRow-stripeBackground, var(--ceed-palette-background-level2))",
3120
+ color: "var(--ceed-palette-text-primary)",
3121
+ "& td": {
3122
+ backgroundColor: "background.surface"
3123
+ }
3124
+ },
3125
+ "&:hover": {
3126
+ backgroundColor: "var(--TableRow-hoverBackground, var(--ceed-palette-background-level3))",
3127
+ "& td": {
3128
+ backgroundColor: "var(--TableRow-hoverBackground, var(--ceed-palette-background-level3))"
3129
+ }
3130
+ }
3131
+ }));
3132
+ var VirtualizedTableRow = (0, import_react24.memo)(StyledTableRow2, (prevProps, nextProps) => {
3133
+ return prevProps.striped === nextProps.striped && prevProps.style?.height === nextProps.style?.height && prevProps.style?.transform === nextProps.style?.transform && // @ts-ignore
3134
+ prevProps["data-row-id"] === nextProps["data-row-id"] && // @ts-ignore
3135
+ prevProps["data-index"] === nextProps["data-index"] && prevProps.tabIndex === nextProps.tabIndex && prevProps["aria-checked"] === nextProps["aria-checked"] && // Include children check to handle isCellEditable changes
3136
+ prevProps.children === nextProps.children;
3137
+ });
3138
+
3139
+ // src/components/DataTable/hooks.ts
3140
+ var import_react25 = require("react");
3191
3141
  function useColumnWidths(columnsByField) {
3192
3142
  const [widths, setWidths] = (0, import_react25.useState)({});
3193
3143
  const roRef = (0, import_react25.useRef)();
@@ -3237,8 +3187,14 @@ function useDataTableRenderer({
3237
3187
  editMode,
3238
3188
  getId: _getId,
3239
3189
  isTotalSelected: _isTotalSelected,
3240
- isRowSelectable
3190
+ isRowSelectable,
3191
+ columnGroupingModel
3241
3192
  }) {
3193
+ if (pinnedColumns && columnGroupingModel) {
3194
+ throw new Error(
3195
+ "You cannot use both `pinnedColumns` and `columnGroupingModel` at the same time. Please choose one of them."
3196
+ );
3197
+ }
3242
3198
  const onSelectionModelChangeRef = (0, import_react25.useRef)(onSelectionModelChange);
3243
3199
  onSelectionModelChangeRef.current = onSelectionModelChange;
3244
3200
  const [focusedRowId, setFocusedRowId] = (0, import_react25.useState)(null);
@@ -3247,18 +3203,23 @@ function useDataTableRenderer({
3247
3203
  initialState?.sorting?.sortModel ?? [],
3248
3204
  (0, import_react25.useCallback)((sortModel2) => onSortModelChange?.(sortModel2), [onSortModelChange])
3249
3205
  );
3206
+ const reorderedColumns = (0, import_react25.useMemo)(() => {
3207
+ if (!columnGroupingModel) return columnsProp;
3208
+ return reorderColumnsByGroupingModel(columnsProp, columnGroupingModel);
3209
+ }, [columnsProp, columnGroupingModel]);
3250
3210
  const columnsByField = (0, import_react25.useMemo)(
3251
- () => columnsProp.reduce(
3211
+ () => reorderedColumns.reduce(
3252
3212
  (acc, curr) => ({
3253
3213
  ...acc,
3254
3214
  [curr.field]: {
3255
3215
  ...curr,
3256
- headerRef: import_react25.default.createRef()
3216
+ headerRef: (0, import_react25.createRef)(),
3217
+ tableColRef: (0, import_react25.createRef)()
3257
3218
  }
3258
3219
  }),
3259
3220
  {}
3260
3221
  ),
3261
- [columnsProp]
3222
+ [reorderedColumns]
3262
3223
  );
3263
3224
  const sortComparator = (0, import_react25.useCallback)(
3264
3225
  (rowA, rowB) => {
@@ -3293,7 +3254,6 @@ function useDataTableRenderer({
3293
3254
  [_rows, sortModel, sortComparator]
3294
3255
  );
3295
3256
  const sortOrder = (0, import_react25.useMemo)(
3296
- // NOTE: default value를 props destructuring에서 할당하면 렌더링 시점에 초기화가 되어버린다.
3297
3257
  () => Array.from(new Set(_sortOrder || ["asc", "desc", null])),
3298
3258
  [_sortOrder]
3299
3259
  );
@@ -3303,11 +3263,7 @@ function useDataTableRenderer({
3303
3263
  (row, index) => _getId?.(row) ?? row.id ?? `${(index || 0) + (page - 1) * pageSize}`,
3304
3264
  [_getId, page, pageSize]
3305
3265
  );
3306
- const selectedModelSet = (0, import_react25.useMemo)(
3307
- // NOTE: default value를 props destructuring에서 할당하면 렌더링 시점에 초기화가 되어버린다.
3308
- () => new Set(selectionModel || []),
3309
- [selectionModel]
3310
- );
3266
+ const selectedModelSet = (0, import_react25.useMemo)(() => new Set(selectionModel || []), [selectionModel]);
3311
3267
  const dataInPage = (0, import_react25.useMemo)(
3312
3268
  () => !pagination || paginationMode === "server" ? rows : rows.slice((page - 1) * pageSize, (page - 1) * pageSize + pageSize),
3313
3269
  [rows, page, pageSize, paginationMode, pagination]
@@ -3338,9 +3294,12 @@ function useDataTableRenderer({
3338
3294
  columnsByField[f].minWidth ?? 0,
3339
3295
  [columnWidths, columnsByField]
3340
3296
  );
3297
+ const processedColumnGroups = (0, import_react25.useMemo)(() => {
3298
+ if (!columnGroupingModel) return null;
3299
+ return calculateColumnGroups(columnGroupingModel, reorderedColumns);
3300
+ }, [columnGroupingModel, reorderedColumns]);
3341
3301
  const columns = (0, import_react25.useMemo)(() => {
3342
- const baseColumns = columnsProp || // fallback
3343
- Object.keys(rows[0] || {}).map((key) => ({
3302
+ const baseColumns = reorderedColumns.length > 0 ? reorderedColumns : Object.keys(rows[0] || {}).map((key) => ({
3344
3303
  field: key
3345
3304
  }));
3346
3305
  return baseColumns.map((column) => {
@@ -3350,19 +3309,19 @@ function useDataTableRenderer({
3350
3309
  return {
3351
3310
  ...column,
3352
3311
  headerRef: columnsByField[column.field].headerRef,
3312
+ tableColRef: columnsByField[column.field].tableColRef,
3353
3313
  isCellEditable: editMode && (typeof column.isCellEditable === "function" ? column.isCellEditable : column.isCellEditable ?? true),
3354
3314
  sort: sortModel.find((sort) => sort.field === column.field)?.sort,
3355
3315
  sortOrder: columnsByField[column.field]?.sortOrder || sortOrder,
3356
3316
  isPinned,
3357
3317
  isLastStartPinnedColumn: isLeftPinned && [...pinnedColumns?.left || []].pop() === column.field,
3358
3318
  isLastEndPinnedColumn: isRightPinned && (pinnedColumns?.right?.[0] ?? null) === column.field,
3359
- // pinned 관련 계산부
3360
3319
  pinnedStartPosition: pinnedColumns?.left?.slice(0, isLeftPinned ? pinnedColumns.left.indexOf(column.field) : pinnedColumns.left.length).reduce((acc, curr) => acc + getWidth(curr), 0),
3361
3320
  pinnedEndPosition: pinnedColumns?.right?.slice(isRightPinned ? pinnedColumns.right.indexOf(column.field) + 1 : 0).reduce((acc, curr) => acc + getWidth(curr), 0)
3362
3321
  };
3363
3322
  });
3364
3323
  }, [
3365
- columnsProp,
3324
+ reorderedColumns,
3366
3325
  rows,
3367
3326
  pinnedColumns?.left,
3368
3327
  pinnedColumns?.right,
@@ -3418,55 +3377,265 @@ function useDataTableRenderer({
3418
3377
  }, [page]);
3419
3378
  return {
3420
3379
  rowCount,
3421
- selectableRowCount,
3422
- page,
3423
- pageSize,
3424
- onPaginationModelChange: handlePageChange,
3425
- getId,
3426
- HeadCell,
3427
- BodyRow,
3428
- dataInPage,
3429
- handleSortChange,
3430
- isAllSelected,
3431
- // all rows are selected on this page
3432
- isTotalSelected,
3433
- isSelectedRow: (0, import_react25.useCallback)((model) => selectedModelSet.has(model), [selectedModelSet]),
3434
- isRowSelectable: (0, import_react25.useCallback)(
3435
- (rowId, row) => {
3436
- if (!isRowSelectable) return true;
3437
- return isRowSelectable({ row, id: rowId });
3438
- },
3439
- [isRowSelectable]
3440
- ),
3441
- focusedRowId,
3442
- onRowFocus: (0, import_react25.useCallback)((rowId) => {
3443
- setFocusedRowId(rowId);
3444
- }, []),
3445
- onAllCheckboxChange: (0, import_react25.useCallback)(() => {
3446
- onSelectionModelChange?.(isAllSelected ? [] : selectableDataInPage.map(getId));
3447
- }, [isAllSelected, selectableDataInPage, onSelectionModelChange, getId]),
3448
- onCheckboxChange: (0, import_react25.useCallback)(
3449
- (event, selectedModel) => {
3450
- if (selectedModelSet.has(selectedModel)) {
3451
- const newSelectionModel = (selectionModel || []).filter((model) => model !== selectedModel);
3452
- onSelectionModelChange?.(newSelectionModel);
3453
- } else {
3454
- const newSelectionModel = [...selectionModel || [], selectedModel];
3455
- onSelectionModelChange?.(newSelectionModel);
3456
- }
3380
+ selectableRowCount,
3381
+ page,
3382
+ pageSize,
3383
+ onPaginationModelChange: handlePageChange,
3384
+ getId,
3385
+ HeadCell,
3386
+ BodyRow,
3387
+ dataInPage,
3388
+ handleSortChange,
3389
+ isAllSelected,
3390
+ isTotalSelected,
3391
+ isSelectedRow: (0, import_react25.useCallback)((model) => selectedModelSet.has(model), [selectedModelSet]),
3392
+ isRowSelectable: (0, import_react25.useCallback)(
3393
+ (rowId, row) => {
3394
+ if (!isRowSelectable) return true;
3395
+ return isRowSelectable({ row, id: rowId });
3396
+ },
3397
+ [isRowSelectable]
3398
+ ),
3399
+ focusedRowId,
3400
+ onRowFocus: (0, import_react25.useCallback)((rowId) => {
3401
+ setFocusedRowId(rowId);
3402
+ }, []),
3403
+ onAllCheckboxChange: (0, import_react25.useCallback)(() => {
3404
+ onSelectionModelChange?.(isAllSelected ? [] : selectableDataInPage.map(getId));
3405
+ }, [isAllSelected, selectableDataInPage, onSelectionModelChange, getId]),
3406
+ onCheckboxChange: (0, import_react25.useCallback)(
3407
+ (event, selectedModel) => {
3408
+ if (selectedModelSet.has(selectedModel)) {
3409
+ const newSelectionModel = (selectionModel || []).filter((model) => model !== selectedModel);
3410
+ onSelectionModelChange?.(newSelectionModel);
3411
+ } else {
3412
+ const newSelectionModel = [...selectionModel || [], selectedModel];
3413
+ onSelectionModelChange?.(newSelectionModel);
3414
+ }
3415
+ },
3416
+ [selectionModel, onSelectionModelChange, selectedModelSet]
3417
+ ),
3418
+ columns,
3419
+ processedColumnGroups,
3420
+ onTotalSelect: (0, import_react25.useCallback)(() => {
3421
+ const selectableRows = rows.filter((row, i) => {
3422
+ if (!isRowSelectable) return true;
3423
+ return isRowSelectable({ row, id: getId(row, i) });
3424
+ });
3425
+ onSelectionModelChange?.(isTotalSelected ? [] : selectableRows.map(getId), !isTotalSelected);
3426
+ }, [isTotalSelected, rows, onSelectionModelChange, getId, isRowSelectable])
3427
+ };
3428
+ }
3429
+
3430
+ // src/components/Table/Table.tsx
3431
+ var import_react26 = __toESM(require("react"));
3432
+ var import_joy34 = require("@mui/joy");
3433
+ var Table = (props) => {
3434
+ const { children, ...inheritProps } = props;
3435
+ return /* @__PURE__ */ import_react26.default.createElement(import_joy34.Table, { ...inheritProps }, children);
3436
+ };
3437
+ Table.displayName = "Table";
3438
+ function TableHead(props) {
3439
+ const {
3440
+ headCells,
3441
+ showCheckbox,
3442
+ onCheckboxChange,
3443
+ slots: { checkbox: RenderCheckbox = Checkbox_default } = {},
3444
+ slotProps: { checkbox: checkboxProps = {} } = {}
3445
+ } = props;
3446
+ return /* @__PURE__ */ import_react26.default.createElement("thead", null, /* @__PURE__ */ import_react26.default.createElement("tr", null, showCheckbox && /* @__PURE__ */ import_react26.default.createElement(
3447
+ "th",
3448
+ {
3449
+ style: {
3450
+ width: "40px",
3451
+ textAlign: "center"
3452
+ }
3453
+ },
3454
+ /* @__PURE__ */ import_react26.default.createElement(RenderCheckbox, { onChange: onCheckboxChange, ...checkboxProps })
3455
+ ), headCells.map((headCell) => /* @__PURE__ */ import_react26.default.createElement(
3456
+ "th",
3457
+ {
3458
+ key: headCell.label,
3459
+ style: {
3460
+ width: headCell.width,
3461
+ minWidth: headCell.minWidth,
3462
+ maxWidth: headCell.maxWidth,
3463
+ textAlign: headCell.numeric ? "right" : "left"
3464
+ }
3465
+ },
3466
+ headCell.label
3467
+ ))));
3468
+ }
3469
+ TableHead.displayName = "TableHead";
3470
+ function TableBody(props) {
3471
+ const {
3472
+ rows,
3473
+ cellOrder,
3474
+ rowOptions,
3475
+ showCheckbox,
3476
+ onCheckboxChange,
3477
+ slots: { checkbox: RenderCheckbox = Checkbox_default } = {},
3478
+ slotProps: { checkbox: checkboxProps = {} } = {}
3479
+ } = props;
3480
+ return /* @__PURE__ */ import_react26.default.createElement("tbody", null, rows.map((row, rowIndex) => /* @__PURE__ */ import_react26.default.createElement("tr", { key: `table-row-${rowIndex}` }, showCheckbox && /* @__PURE__ */ import_react26.default.createElement(
3481
+ "td",
3482
+ {
3483
+ style: {
3484
+ textAlign: "center"
3485
+ }
3486
+ },
3487
+ /* @__PURE__ */ import_react26.default.createElement(RenderCheckbox, { onChange: (event) => onCheckboxChange?.(event, rowIndex), ...checkboxProps })
3488
+ ), cellOrder.map((cellKey) => /* @__PURE__ */ import_react26.default.createElement(
3489
+ "td",
3490
+ {
3491
+ key: cellKey,
3492
+ style: {
3493
+ textAlign: rowOptions?.[cellKey]?.numeric ? "right" : "left"
3494
+ }
3495
+ },
3496
+ row[cellKey]
3497
+ )))));
3498
+ }
3499
+ TableBody.displayName = "TableBody";
3500
+
3501
+ // src/components/Pagination/Pagination.tsx
3502
+ var import_react27 = __toESM(require("react"));
3503
+ var import_ChevronLeft2 = __toESM(require("@mui/icons-material/ChevronLeft"));
3504
+ var import_ChevronRight2 = __toESM(require("@mui/icons-material/ChevronRight"));
3505
+ var import_joy35 = require("@mui/joy");
3506
+ var PaginationButton = (0, import_joy35.styled)(Button_default, {
3507
+ name: "Pagination",
3508
+ slot: "button"
3509
+ })(({ theme, active, size }) => ({
3510
+ "--Button-size": {
3511
+ sm: "32px",
3512
+ md: "40px",
3513
+ lg: "48px"
3514
+ }[size],
3515
+ width: "var(--Button-size)",
3516
+ height: "var(--Button-size)",
3517
+ backgroundColor: active ? theme.vars.palette.primary.softHoverBg : "transparent",
3518
+ color: active ? theme.vars.palette.primary.softColor : theme.vars.palette.neutral.plainColor,
3519
+ "&:hover": {
3520
+ color: active ? theme.vars.palette.primary.softColor : theme.vars.palette.neutral.softColor,
3521
+ backgroundColor: active ? theme.vars.palette.primary.softActiveBg : theme.vars.palette.neutral.softHoverBg
3522
+ }
3523
+ }));
3524
+ var PaginationIconButton = (0, import_joy35.styled)(IconButton_default, {
3525
+ name: "Pagination",
3526
+ slot: "button"
3527
+ })(({ theme, size }) => ({
3528
+ "--IconButton-size": {
3529
+ sm: "32px",
3530
+ md: "40px",
3531
+ lg: "48px"
3532
+ }[size],
3533
+ "--Icon-fontSize": "20px",
3534
+ width: "var(--IconButton-size)",
3535
+ height: "var(--IconButton-size)",
3536
+ color: theme.vars.palette.neutral.plainColor,
3537
+ "&:hover": {
3538
+ color: theme.vars.palette.neutral.softColor,
3539
+ backgroundColor: theme.vars.palette.neutral.softHoverBg
3540
+ }
3541
+ }));
3542
+ var PaginationRoot = (0, import_joy35.styled)(Stack_default, {
3543
+ name: "Pagination",
3544
+ slot: "root"
3545
+ })({});
3546
+ var PaginationContainer = (0, import_joy35.styled)(Stack_default, {
3547
+ name: "Pagination",
3548
+ slot: "container"
3549
+ })(({ theme, size }) => ({
3550
+ gap: {
3551
+ sm: theme.spacing(1),
3552
+ md: theme.spacing(1.5),
3553
+ lg: theme.spacing(2)
3554
+ }[size]
3555
+ }));
3556
+ function Pagination(props) {
3557
+ const {
3558
+ paginationModel: _paginationModel,
3559
+ defaultPaginationModel = { page: 1, pageSize: 25 },
3560
+ onPageChange,
3561
+ rowCount,
3562
+ size = "md",
3563
+ ...innerProps
3564
+ } = props;
3565
+ const [paginationModel, setPaginationModel] = useControlledState(
3566
+ _paginationModel,
3567
+ defaultPaginationModel,
3568
+ (0, import_react27.useCallback)(
3569
+ (newPage) => {
3570
+ onPageChange(newPage.page);
3457
3571
  },
3458
- [selectionModel, onSelectionModelChange, selectedModelSet]
3459
- ),
3460
- columns,
3461
- onTotalSelect: (0, import_react25.useCallback)(() => {
3462
- const selectableRows = rows.filter((row, i) => {
3463
- if (!isRowSelectable) return true;
3464
- return isRowSelectable({ row, id: getId(row, i) });
3465
- });
3466
- onSelectionModelChange?.(isTotalSelected ? [] : selectableRows.map(getId), !isTotalSelected);
3467
- }, [isTotalSelected, rows, onSelectionModelChange, getId, isRowSelectable])
3572
+ [onPageChange]
3573
+ )
3574
+ );
3575
+ const handlePageChange = (newPage) => {
3576
+ setPaginationModel({ ...paginationModel, page: newPage });
3468
3577
  };
3578
+ const firstPage = 1;
3579
+ const lastPage = Math.max(firstPage, Math.ceil(rowCount / paginationModel.pageSize));
3580
+ const beforePages = [paginationModel.page - 2, paginationModel.page - 1].filter((p) => p > 1);
3581
+ const afterPages = [paginationModel.page + 1, paginationModel.page + 2].filter((p) => p <= lastPage - 1);
3582
+ const isMoreAfterPages = lastPage > 1 && paginationModel.page < lastPage - 3;
3583
+ const isMoreBeforePages = lastPage > 1 && paginationModel.page > 4;
3584
+ (0, import_react27.useEffect)(() => {
3585
+ if (paginationModel.page > lastPage) {
3586
+ setPaginationModel({ ...paginationModel, page: lastPage });
3587
+ }
3588
+ }, [rowCount, paginationModel, lastPage, setPaginationModel]);
3589
+ return /* @__PURE__ */ import_react27.default.createElement(PaginationRoot, { ...innerProps }, /* @__PURE__ */ import_react27.default.createElement(PaginationContainer, { direction: "row", size, alignItems: "center" }, /* @__PURE__ */ import_react27.default.createElement(
3590
+ PaginationIconButton,
3591
+ {
3592
+ size,
3593
+ variant: "plain",
3594
+ color: "neutral",
3595
+ onClick: () => handlePageChange(paginationModel.page - 1),
3596
+ disabled: paginationModel.page === firstPage,
3597
+ "aria-label": "Previous page"
3598
+ },
3599
+ /* @__PURE__ */ import_react27.default.createElement(import_ChevronLeft2.default, null)
3600
+ ), paginationModel.page !== firstPage && /* @__PURE__ */ import_react27.default.createElement(PaginationButton, { size, variant: "plain", color: "neutral", onClick: () => handlePageChange(firstPage) }, firstPage), isMoreBeforePages && /* @__PURE__ */ import_react27.default.createElement(
3601
+ PaginationButton,
3602
+ {
3603
+ size,
3604
+ variant: "plain",
3605
+ color: "neutral",
3606
+ onClick: () => handlePageChange(paginationModel.page - 3),
3607
+ "aria-label": "More previous pages"
3608
+ },
3609
+ "..."
3610
+ ), beforePages.map((p) => /* @__PURE__ */ import_react27.default.createElement(PaginationButton, { key: p, size, variant: "plain", color: "neutral", onClick: () => handlePageChange(p) }, p)), /* @__PURE__ */ import_react27.default.createElement(PaginationButton, { active: "active", size, "aria-current": "page" }, paginationModel.page), afterPages.map((p) => /* @__PURE__ */ import_react27.default.createElement(PaginationButton, { key: p, size, variant: "plain", color: "neutral", onClick: () => handlePageChange(p) }, p)), isMoreAfterPages && /* @__PURE__ */ import_react27.default.createElement(
3611
+ PaginationButton,
3612
+ {
3613
+ size,
3614
+ variant: "plain",
3615
+ color: "neutral",
3616
+ "aria-label": "More next pages",
3617
+ onClick: () => handlePageChange(paginationModel.page + 3)
3618
+ },
3619
+ "..."
3620
+ ), paginationModel.page !== lastPage && /* @__PURE__ */ import_react27.default.createElement(PaginationButton, { size, variant: "plain", color: "neutral", onClick: () => handlePageChange(lastPage) }, lastPage), /* @__PURE__ */ import_react27.default.createElement(
3621
+ PaginationIconButton,
3622
+ {
3623
+ size,
3624
+ variant: "plain",
3625
+ color: "neutral",
3626
+ onClick: () => handlePageChange(paginationModel.page + 1),
3627
+ disabled: paginationModel.page === lastPage,
3628
+ "aria-label": "Next page"
3629
+ },
3630
+ /* @__PURE__ */ import_react27.default.createElement(import_ChevronRight2.default, null)
3631
+ )));
3469
3632
  }
3633
+ Pagination.displayName = "Pagination";
3634
+
3635
+ // src/components/Pagination/index.ts
3636
+ var Pagination_default = Pagination;
3637
+
3638
+ // src/components/DataTable/DataTable.tsx
3470
3639
  function Component(props, apiRef) {
3471
3640
  const {
3472
3641
  rows,
@@ -3500,6 +3669,8 @@ function Component(props, apiRef) {
3500
3669
  getId: ____________,
3501
3670
  // getId is used in useDataTableRenderer
3502
3671
  loading,
3672
+ columnGroupingModel: _________________,
3673
+ // columnGroupingModel is used in useDataTableRenderer
3503
3674
  slots: {
3504
3675
  checkbox: RenderCheckbox = Checkbox_default,
3505
3676
  toolbar: Toolbar,
@@ -3511,11 +3682,12 @@ function Component(props, apiRef) {
3511
3682
  isTotalSelected: ___________,
3512
3683
  ...innerProps
3513
3684
  } = props;
3514
- const tableId = (0, import_react25.useId)();
3515
- const parentRef = (0, import_react25.useRef)(null);
3516
- const tableBodyRef = (0, import_react25.useRef)(null);
3685
+ const tableId = (0, import_react28.useId)();
3686
+ const parentRef = (0, import_react28.useRef)(null);
3687
+ const tableBodyRef = (0, import_react28.useRef)(null);
3517
3688
  const {
3518
3689
  columns,
3690
+ processedColumnGroups,
3519
3691
  isAllSelected,
3520
3692
  isSelectedRow,
3521
3693
  isRowSelectable: isRowSelectableCheck,
@@ -3543,29 +3715,29 @@ function Component(props, apiRef) {
3543
3715
  measureElement: (element) => element.clientHeight,
3544
3716
  overscan: 10
3545
3717
  });
3546
- const paginationModel = (0, import_react25.useMemo)(() => ({ page, pageSize }), [page, pageSize]);
3718
+ const paginationModel = (0, import_react28.useMemo)(() => ({ page, pageSize }), [page, pageSize]);
3547
3719
  const totalSize = virtualizer.getTotalSize();
3548
3720
  const virtualizedItems = virtualizer.getVirtualItems();
3549
- const getRowClickHandler = (0, import_react25.useCallback)(
3721
+ const getRowClickHandler = (0, import_react28.useCallback)(
3550
3722
  (row, rowId) => (e) => {
3551
3723
  onRowClick?.({ row, rowId }, e);
3552
3724
  checkboxSelection && !disableSelectionOnClick && isRowSelectableCheck(rowId, row) && onCheckboxChange(e, rowId);
3553
3725
  },
3554
3726
  [onRowClick, checkboxSelection, disableSelectionOnClick, onCheckboxChange, isRowSelectableCheck]
3555
3727
  );
3556
- const getRowFocusHandler = (0, import_react25.useCallback)(
3728
+ const getRowFocusHandler = (0, import_react28.useCallback)(
3557
3729
  (rowId) => () => {
3558
3730
  onRowFocus(rowId);
3559
3731
  },
3560
3732
  [onRowFocus]
3561
3733
  );
3562
- const getCheckboxClickHandler = (0, import_react25.useCallback)(
3734
+ const getCheckboxClickHandler = (0, import_react28.useCallback)(
3563
3735
  () => (e) => {
3564
3736
  e.stopPropagation();
3565
3737
  },
3566
3738
  []
3567
3739
  );
3568
- const getCheckboxChangeHandler = (0, import_react25.useCallback)(
3740
+ const getCheckboxChangeHandler = (0, import_react28.useCallback)(
3569
3741
  (rowId, row) => (e) => {
3570
3742
  if (isRowSelectableCheck(rowId, row)) {
3571
3743
  onCheckboxChange(e, rowId);
@@ -3573,7 +3745,7 @@ function Component(props, apiRef) {
3573
3745
  },
3574
3746
  [onCheckboxChange, isRowSelectableCheck]
3575
3747
  );
3576
- (0, import_react25.useImperativeHandle)(apiRef, () => ({
3748
+ (0, import_react28.useImperativeHandle)(apiRef, () => ({
3577
3749
  getRowIndexRelativeToVisibleRows(rowId) {
3578
3750
  return dataInPage.findIndex((row) => String(getId(row)) === rowId);
3579
3751
  },
@@ -3589,7 +3761,7 @@ function Component(props, apiRef) {
3589
3761
  });
3590
3762
  }
3591
3763
  }));
3592
- return /* @__PURE__ */ import_react25.default.createElement(
3764
+ return /* @__PURE__ */ import_react28.default.createElement(
3593
3765
  Box_default,
3594
3766
  {
3595
3767
  sx: {
@@ -3599,7 +3771,7 @@ function Component(props, apiRef) {
3599
3771
  flexDirection: "column"
3600
3772
  }
3601
3773
  },
3602
- (!!checkboxSelection || !!Toolbar) && /* @__PURE__ */ import_react25.default.createElement(
3774
+ (!!checkboxSelection || !!Toolbar) && /* @__PURE__ */ import_react28.default.createElement(
3603
3775
  Stack_default,
3604
3776
  {
3605
3777
  direction: "row",
@@ -3609,10 +3781,10 @@ function Component(props, apiRef) {
3609
3781
  justifyContent: "space-between",
3610
3782
  alignItems: "center"
3611
3783
  },
3612
- !!checkboxSelection && /* @__PURE__ */ import_react25.default.createElement(Stack_default, { direction: "row", spacing: 1 }, !isAllSelected && /* @__PURE__ */ import_react25.default.createElement(Typography_default, { level: "body-xs" }, numberFormatter(selectionModel?.length || 0), " items selected"), isAllSelected && !isTotalSelected && /* @__PURE__ */ import_react25.default.createElement(Stack_default, { direction: "row", spacing: 1, alignItems: "center" }, /* @__PURE__ */ import_react25.default.createElement(Typography_default, { level: "body-xs" }, "All ", numberFormatter(selectionModel?.length || 0), " items on this page are selected."), /* @__PURE__ */ import_react25.default.createElement(Button_default, { size: "sm", variant: "plain", onClick: onTotalSelect }, "Select all ", numberFormatter(selectableRowCount), " items")), isTotalSelected && /* @__PURE__ */ import_react25.default.createElement(Stack_default, { direction: "row", spacing: 1, alignItems: "center" }, /* @__PURE__ */ import_react25.default.createElement(Typography_default, { level: "body-xs" }, "All ", numberFormatter(selectableRowCount), " items are selected."), /* @__PURE__ */ import_react25.default.createElement(Button_default, { size: "sm", variant: "plain", color: "danger", onClick: onTotalSelect }, "Cancel"))),
3613
- Toolbar && /* @__PURE__ */ import_react25.default.createElement(Toolbar, { ...toolbarProps || {} })
3784
+ !!checkboxSelection && /* @__PURE__ */ import_react28.default.createElement(Stack_default, { direction: "row", spacing: 1 }, !isAllSelected && /* @__PURE__ */ import_react28.default.createElement(Typography_default, { level: "body-xs" }, numberFormatter(selectionModel?.length || 0), " items selected"), isAllSelected && !isTotalSelected && /* @__PURE__ */ import_react28.default.createElement(Stack_default, { direction: "row", spacing: 1, alignItems: "center" }, /* @__PURE__ */ import_react28.default.createElement(Typography_default, { level: "body-xs" }, "All ", numberFormatter(selectionModel?.length || 0), " items on this page are selected."), /* @__PURE__ */ import_react28.default.createElement(Button_default, { size: "sm", variant: "plain", onClick: onTotalSelect }, "Select all ", numberFormatter(selectableRowCount), " items")), isTotalSelected && /* @__PURE__ */ import_react28.default.createElement(Stack_default, { direction: "row", spacing: 1, alignItems: "center" }, /* @__PURE__ */ import_react28.default.createElement(Typography_default, { level: "body-xs" }, "All ", numberFormatter(selectableRowCount), " items are selected."), /* @__PURE__ */ import_react28.default.createElement(Button_default, { size: "sm", variant: "plain", color: "danger", onClick: onTotalSelect }, "Cancel"))),
3785
+ Toolbar && /* @__PURE__ */ import_react28.default.createElement(Toolbar, { ...toolbarProps || {} })
3614
3786
  ),
3615
- /* @__PURE__ */ import_react25.default.createElement(
3787
+ /* @__PURE__ */ import_react28.default.createElement(
3616
3788
  Sheet_default,
3617
3789
  {
3618
3790
  variant: "outlined",
@@ -3623,7 +3795,8 @@ function Component(props, apiRef) {
3623
3795
  boxShadow: "sm",
3624
3796
  borderRadius: "sm",
3625
3797
  "--DataTableSheet-width": parentRef.current?.clientWidth + "px",
3626
- backgroundColor: "white"
3798
+ backgroundColor: "white",
3799
+ "--TableCell-cornerRadius": "0px"
3627
3800
  },
3628
3801
  className: [
3629
3802
  ...(parentRef.current?.scrollLeft || 0) > 0 ? ["ScrollableRight"] : [],
@@ -3632,15 +3805,33 @@ function Component(props, apiRef) {
3632
3805
  ref: parentRef,
3633
3806
  ...backgroundProps
3634
3807
  },
3635
- /* @__PURE__ */ import_react25.default.createElement(Table, { ...innerProps }, /* @__PURE__ */ import_react25.default.createElement("thead", null, /* @__PURE__ */ import_react25.default.createElement("tr", null, checkboxSelection && /* @__PURE__ */ import_react25.default.createElement(
3808
+ /* @__PURE__ */ import_react28.default.createElement(Table, { ...innerProps }, /* @__PURE__ */ import_react28.default.createElement("colgroup", null, checkboxSelection && /* @__PURE__ */ import_react28.default.createElement(
3809
+ "col",
3810
+ {
3811
+ style: {
3812
+ width: "40px"
3813
+ }
3814
+ }
3815
+ ), columns.map((c) => /* @__PURE__ */ import_react28.default.createElement(
3816
+ "col",
3817
+ {
3818
+ ref: c.tableColRef,
3819
+ key: `${c.field.toString()}_${c.width}`,
3820
+ style: {
3821
+ width: c.width
3822
+ }
3823
+ }
3824
+ ))), /* @__PURE__ */ import_react28.default.createElement("thead", null, processedColumnGroups && processedColumnGroups.groups.map((levelGroups, level) => /* @__PURE__ */ import_react28.default.createElement("tr", { key: `group-level-${level}` }, checkboxSelection && level === 0 && /* @__PURE__ */ import_react28.default.createElement(
3636
3825
  "th",
3637
3826
  {
3827
+ rowSpan: processedColumnGroups.maxLevel + 2,
3638
3828
  style: {
3639
3829
  width: "40px",
3640
- textAlign: "center"
3830
+ textAlign: "center",
3831
+ verticalAlign: "middle"
3641
3832
  }
3642
3833
  },
3643
- /* @__PURE__ */ import_react25.default.createElement(
3834
+ /* @__PURE__ */ import_react28.default.createElement(
3644
3835
  RenderCheckbox,
3645
3836
  {
3646
3837
  onChange: onAllCheckboxChange,
@@ -3650,17 +3841,56 @@ function Component(props, apiRef) {
3650
3841
  ...checkboxProps
3651
3842
  }
3652
3843
  )
3653
- ), columns.map((c, i) => /* @__PURE__ */ import_react25.default.createElement(
3654
- HeadCell2,
3844
+ ), level > 0 && Array.from({ length: levelGroups[0]?.startIndex || 0 }).map((_2, i) => /* @__PURE__ */ import_react28.default.createElement("th", { key: `empty-${level}-${i}` })), levelGroups.map((group, groupIndex) => {
3845
+ const nextGroup = levelGroups[groupIndex + 1];
3846
+ const emptyCells = nextGroup ? nextGroup.startIndex - (group.startIndex + group.colspan) : columns.length - (group.startIndex + group.colspan);
3847
+ const params = { groupId: group.groupId };
3848
+ const computedHeaderClassName = group.headerClassName ? typeof group.headerClassName === "function" ? group.headerClassName(params) : group.headerClassName : void 0;
3849
+ return /* @__PURE__ */ import_react28.default.createElement(import_react28.Fragment, { key: group.groupId }, /* @__PURE__ */ import_react28.default.createElement(
3850
+ "th",
3851
+ {
3852
+ colSpan: group.colspan,
3853
+ style: {
3854
+ textAlign: "center",
3855
+ fontWeight: "bold",
3856
+ verticalAlign: "middle"
3857
+ },
3858
+ className: computedHeaderClassName
3859
+ },
3860
+ group.headerName ?? group.groupId
3861
+ ), emptyCells > 0 && Array.from({ length: emptyCells }).map((_2, i) => /* @__PURE__ */ import_react28.default.createElement("th", { key: `empty-between-${level}-${groupIndex}-${i}`, colSpan: 1 })));
3862
+ }))), /* @__PURE__ */ import_react28.default.createElement("tr", null, !processedColumnGroups && checkboxSelection && /* @__PURE__ */ import_react28.default.createElement(
3863
+ "th",
3655
3864
  {
3656
- tableId,
3657
- key: `${c.field.toString()}_${i}`,
3658
- stickyHeader: props.stickyHeader,
3659
- editMode: !!c.isCellEditable,
3660
- onSortChange: handleSortChange,
3661
- ...c
3662
- }
3663
- )))), /* @__PURE__ */ import_react25.default.createElement(
3865
+ style: {
3866
+ width: "40px",
3867
+ textAlign: "center"
3868
+ }
3869
+ },
3870
+ /* @__PURE__ */ import_react28.default.createElement(
3871
+ RenderCheckbox,
3872
+ {
3873
+ onChange: onAllCheckboxChange,
3874
+ checked: isAllSelected,
3875
+ indeterminate: (selectionModel || []).length > 0 && !isAllSelected,
3876
+ disabled: dataInPage.length > 0 && !selectableRowCount,
3877
+ ...checkboxProps
3878
+ }
3879
+ )
3880
+ ), columns.map((c, i) => (
3881
+ // @ts-ignore
3882
+ /* @__PURE__ */ import_react28.default.createElement(
3883
+ HeadCell2,
3884
+ {
3885
+ tableId,
3886
+ key: `${c.field.toString()}_${i}`,
3887
+ stickyHeader: props.stickyHeader,
3888
+ editMode: !!c.isCellEditable,
3889
+ onSortChange: handleSortChange,
3890
+ ...c
3891
+ }
3892
+ )
3893
+ )))), /* @__PURE__ */ import_react28.default.createElement(
3664
3894
  VirtualizedTableBody,
3665
3895
  {
3666
3896
  ref: tableBodyRef,
@@ -3670,7 +3900,7 @@ function Component(props, apiRef) {
3670
3900
  role: "rowgroup",
3671
3901
  "aria-label": "DataTableBody"
3672
3902
  },
3673
- !!loading && /* @__PURE__ */ import_react25.default.createElement(OverlayWrapper, null, /* @__PURE__ */ import_react25.default.createElement(
3903
+ !!loading && /* @__PURE__ */ import_react28.default.createElement(OverlayWrapper, null, /* @__PURE__ */ import_react28.default.createElement(
3674
3904
  "td",
3675
3905
  {
3676
3906
  style: {
@@ -3679,7 +3909,7 @@ function Component(props, apiRef) {
3679
3909
  overflow: "visible"
3680
3910
  }
3681
3911
  },
3682
- /* @__PURE__ */ import_react25.default.createElement(
3912
+ /* @__PURE__ */ import_react28.default.createElement(
3683
3913
  Box_default,
3684
3914
  {
3685
3915
  sx: {
@@ -3689,7 +3919,7 @@ function Component(props, apiRef) {
3689
3919
  right: 0
3690
3920
  }
3691
3921
  },
3692
- /* @__PURE__ */ import_react25.default.createElement(LoadingOverlay, null)
3922
+ /* @__PURE__ */ import_react28.default.createElement(LoadingOverlay, null)
3693
3923
  )
3694
3924
  )),
3695
3925
  virtualizedItems.map((virtualizedRow, index) => {
@@ -3697,7 +3927,7 @@ function Component(props, apiRef) {
3697
3927
  const row = dataInPage[rowIndex];
3698
3928
  const rowId = getId(row, rowIndex);
3699
3929
  const striped = stripe && (stripe === "even" && (rowIndex + 1) % 2 === 0 || stripe === "odd" && (rowIndex + 1) % 2 === 1);
3700
- return /* @__PURE__ */ import_react25.default.createElement(
3930
+ return /* @__PURE__ */ import_react28.default.createElement(
3701
3931
  VirtualizedTableRow,
3702
3932
  {
3703
3933
  key: virtualizedRow.key,
@@ -3715,7 +3945,7 @@ function Component(props, apiRef) {
3715
3945
  transform: `translateY(${virtualizedRow.start - index * virtualizedRow.size}px)`
3716
3946
  }
3717
3947
  },
3718
- checkboxSelection && /* @__PURE__ */ import_react25.default.createElement(
3948
+ checkboxSelection && /* @__PURE__ */ import_react28.default.createElement(
3719
3949
  "th",
3720
3950
  {
3721
3951
  scope: "row",
@@ -3723,7 +3953,7 @@ function Component(props, apiRef) {
3723
3953
  textAlign: "center"
3724
3954
  }
3725
3955
  },
3726
- /* @__PURE__ */ import_react25.default.createElement(
3956
+ /* @__PURE__ */ import_react28.default.createElement(
3727
3957
  RenderCheckbox,
3728
3958
  {
3729
3959
  onClick: getCheckboxClickHandler(),
@@ -3734,7 +3964,7 @@ function Component(props, apiRef) {
3734
3964
  }
3735
3965
  )
3736
3966
  ),
3737
- /* @__PURE__ */ import_react25.default.createElement(
3967
+ /* @__PURE__ */ import_react28.default.createElement(
3738
3968
  BodyRow2,
3739
3969
  {
3740
3970
  tableId,
@@ -3747,9 +3977,9 @@ function Component(props, apiRef) {
3747
3977
  )
3748
3978
  );
3749
3979
  })
3750
- ), Footer && /* @__PURE__ */ import_react25.default.createElement(Footer, null))
3980
+ ), Footer && /* @__PURE__ */ import_react28.default.createElement(Footer, null))
3751
3981
  ),
3752
- pagination && /* @__PURE__ */ import_react25.default.createElement(
3982
+ pagination && /* @__PURE__ */ import_react28.default.createElement(
3753
3983
  Pagination_default,
3754
3984
  {
3755
3985
  pt: 2,
@@ -3762,16 +3992,16 @@ function Component(props, apiRef) {
3762
3992
  )
3763
3993
  );
3764
3994
  }
3765
- var DataTable = (0, import_react25.forwardRef)(Component);
3995
+ var DataTable = (0, import_react28.forwardRef)(Component);
3766
3996
  DataTable.displayName = "DataTable";
3767
3997
 
3768
3998
  // src/components/DateRangePicker/DateRangePicker.tsx
3769
- var import_react26 = __toESM(require("react"));
3999
+ var import_react29 = __toESM(require("react"));
3770
4000
  var import_react_imask2 = require("react-imask");
3771
4001
  var import_CalendarToday2 = __toESM(require("@mui/icons-material/CalendarToday"));
3772
- var import_joy34 = require("@mui/joy");
4002
+ var import_joy36 = require("@mui/joy");
3773
4003
  var import_base3 = require("@mui/base");
3774
- var CalendarButton2 = (0, import_joy34.styled)(IconButton_default, {
4004
+ var CalendarButton2 = (0, import_joy36.styled)(IconButton_default, {
3775
4005
  name: "DateRangePicker",
3776
4006
  slot: "calendarButton"
3777
4007
  })(({ theme }) => ({
@@ -3781,13 +4011,13 @@ var CalendarButton2 = (0, import_joy34.styled)(IconButton_default, {
3781
4011
  outline: `${theme.getCssVar("focus-thickness")} solid ${theme.getCssVar("palette-focusVisible")}`
3782
4012
  }
3783
4013
  }));
3784
- var StyledPopper2 = (0, import_joy34.styled)(import_base3.Popper, {
4014
+ var StyledPopper2 = (0, import_joy36.styled)(import_base3.Popper, {
3785
4015
  name: "DateRangePicker",
3786
4016
  slot: "popper"
3787
4017
  })(({ theme }) => ({
3788
4018
  zIndex: theme.zIndex.tooltip
3789
4019
  }));
3790
- var CalendarSheet2 = (0, import_joy34.styled)(Sheet_default, {
4020
+ var CalendarSheet2 = (0, import_joy36.styled)(Sheet_default, {
3791
4021
  name: "DateRangePicker",
3792
4022
  slot: "sheet",
3793
4023
  overridesResolver: (props, styles) => styles.root
@@ -3797,7 +4027,7 @@ var CalendarSheet2 = (0, import_joy34.styled)(Sheet_default, {
3797
4027
  boxShadow: theme.shadow.md,
3798
4028
  borderRadius: theme.radius.md
3799
4029
  }));
3800
- var DateRangePickerRoot = (0, import_joy34.styled)("div", {
4030
+ var DateRangePickerRoot = (0, import_joy36.styled)("div", {
3801
4031
  name: "DateRangePicker",
3802
4032
  slot: "root",
3803
4033
  overridesResolver: (props, styles) => styles.root
@@ -3867,9 +4097,9 @@ var parseDates = (str, format) => {
3867
4097
  var formatToPattern2 = (format) => {
3868
4098
  return `${format} - ${format}`.replace(/YYYY/g, "Y").replace(/MM/g, "M").replace(/DD/g, "D").replace(/[^YMD\s]/g, (match) => `${match}\``);
3869
4099
  };
3870
- var TextMaskAdapter5 = import_react26.default.forwardRef(function TextMaskAdapter6(props, ref) {
4100
+ var TextMaskAdapter5 = import_react29.default.forwardRef(function TextMaskAdapter6(props, ref) {
3871
4101
  const { onChange, format, ...other } = props;
3872
- return /* @__PURE__ */ import_react26.default.createElement(
4102
+ return /* @__PURE__ */ import_react29.default.createElement(
3873
4103
  import_react_imask2.IMaskInput,
3874
4104
  {
3875
4105
  ...other,
@@ -3903,8 +4133,8 @@ var TextMaskAdapter5 = import_react26.default.forwardRef(function TextMaskAdapte
3903
4133
  }
3904
4134
  );
3905
4135
  });
3906
- var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
3907
- const props = (0, import_joy34.useThemeProps)({ props: inProps, name: "DateRangePicker" });
4136
+ var DateRangePicker = (0, import_react29.forwardRef)((inProps, ref) => {
4137
+ const props = (0, import_joy36.useThemeProps)({ props: inProps, name: "DateRangePicker" });
3908
4138
  const {
3909
4139
  onChange,
3910
4140
  disabled,
@@ -3927,23 +4157,23 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
3927
4157
  readOnly,
3928
4158
  ...innerProps
3929
4159
  } = props;
3930
- const innerRef = (0, import_react26.useRef)(null);
3931
- const buttonRef = (0, import_react26.useRef)(null);
4160
+ const innerRef = (0, import_react29.useRef)(null);
4161
+ const buttonRef = (0, import_react29.useRef)(null);
3932
4162
  const [value, setValue] = useControlledState(
3933
4163
  props.value,
3934
4164
  props.defaultValue || "",
3935
- (0, import_react26.useCallback)((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
4165
+ (0, import_react29.useCallback)((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
3936
4166
  );
3937
- const [displayValue, setDisplayValue] = (0, import_react26.useState)(
4167
+ const [displayValue, setDisplayValue] = (0, import_react29.useState)(
3938
4168
  () => value ? formatValueString2(parseDates(value, format), displayFormat) : ""
3939
4169
  );
3940
- const [anchorEl, setAnchorEl] = (0, import_react26.useState)(null);
4170
+ const [anchorEl, setAnchorEl] = (0, import_react29.useState)(null);
3941
4171
  const open = Boolean(anchorEl);
3942
- const calendarValue = (0, import_react26.useMemo)(
4172
+ const calendarValue = (0, import_react29.useMemo)(
3943
4173
  () => value ? parseDates(value, format) : void 0,
3944
4174
  [value, format]
3945
4175
  );
3946
- (0, import_react26.useEffect)(() => {
4176
+ (0, import_react29.useEffect)(() => {
3947
4177
  if (value) {
3948
4178
  try {
3949
4179
  const dates = parseDates(value, format);
@@ -3955,13 +4185,13 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
3955
4185
  setDisplayValue("");
3956
4186
  }
3957
4187
  }, [displayFormat, value, format]);
3958
- (0, import_react26.useEffect)(() => {
4188
+ (0, import_react29.useEffect)(() => {
3959
4189
  if (!anchorEl) {
3960
4190
  innerRef.current?.blur();
3961
4191
  }
3962
4192
  }, [anchorEl, innerRef]);
3963
- (0, import_react26.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
3964
- const handleChange = (0, import_react26.useCallback)(
4193
+ (0, import_react29.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
4194
+ const handleChange = (0, import_react29.useCallback)(
3965
4195
  (event) => {
3966
4196
  const value2 = event.target.value;
3967
4197
  setDisplayValue(value2 ? formatValueString2(parseDates(value2, format), displayFormat) : value2);
@@ -3969,7 +4199,7 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
3969
4199
  },
3970
4200
  [displayFormat, format, setValue]
3971
4201
  );
3972
- const handleDisplayInputChange = (0, import_react26.useCallback)(
4202
+ const handleDisplayInputChange = (0, import_react29.useCallback)(
3973
4203
  (event) => {
3974
4204
  if (event.target.value === "") {
3975
4205
  handleChange({
@@ -3994,14 +4224,14 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
3994
4224
  },
3995
4225
  [displayFormat, format, handleChange, props.name]
3996
4226
  );
3997
- const handleCalendarToggle = (0, import_react26.useCallback)(
4227
+ const handleCalendarToggle = (0, import_react29.useCallback)(
3998
4228
  (event) => {
3999
4229
  setAnchorEl(anchorEl ? null : event.currentTarget);
4000
4230
  innerRef.current?.focus();
4001
4231
  },
4002
4232
  [anchorEl, setAnchorEl, innerRef]
4003
4233
  );
4004
- const handleCalendarChange = (0, import_react26.useCallback)(
4234
+ const handleCalendarChange = (0, import_react29.useCallback)(
4005
4235
  ([date1, date2]) => {
4006
4236
  if (!date1 || !date2) return;
4007
4237
  const formattedValue = formatValueString2([date1, date2], format);
@@ -4015,7 +4245,7 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
4015
4245
  },
4016
4246
  [props.value, props.name, onChange, setValue, setAnchorEl, format, displayFormat]
4017
4247
  );
4018
- const handleInputMouseDown = (0, import_react26.useCallback)(
4248
+ const handleInputMouseDown = (0, import_react29.useCallback)(
4019
4249
  (event) => {
4020
4250
  if (inputReadOnly) {
4021
4251
  event.preventDefault();
@@ -4024,7 +4254,7 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
4024
4254
  },
4025
4255
  [inputReadOnly, buttonRef]
4026
4256
  );
4027
- return /* @__PURE__ */ import_react26.default.createElement(DateRangePickerRoot, null, /* @__PURE__ */ import_react26.default.createElement(import_base3.FocusTrap, { open: true }, /* @__PURE__ */ import_react26.default.createElement(import_react26.default.Fragment, null, /* @__PURE__ */ import_react26.default.createElement(
4257
+ return /* @__PURE__ */ import_react29.default.createElement(DateRangePickerRoot, null, /* @__PURE__ */ import_react29.default.createElement(import_base3.FocusTrap, { open: true }, /* @__PURE__ */ import_react29.default.createElement(import_react29.default.Fragment, null, /* @__PURE__ */ import_react29.default.createElement(
4028
4258
  Input_default,
4029
4259
  {
4030
4260
  ...innerProps,
@@ -4052,7 +4282,7 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
4052
4282
  error,
4053
4283
  className,
4054
4284
  sx,
4055
- endDecorator: /* @__PURE__ */ import_react26.default.createElement(
4285
+ endDecorator: /* @__PURE__ */ import_react29.default.createElement(
4056
4286
  CalendarButton2,
4057
4287
  {
4058
4288
  ref: buttonRef,
@@ -4064,13 +4294,13 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
4064
4294
  "aria-expanded": open,
4065
4295
  disabled
4066
4296
  },
4067
- /* @__PURE__ */ import_react26.default.createElement(import_CalendarToday2.default, null)
4297
+ /* @__PURE__ */ import_react29.default.createElement(import_CalendarToday2.default, null)
4068
4298
  ),
4069
4299
  label,
4070
4300
  helperText,
4071
4301
  readOnly: readOnly || inputReadOnly
4072
4302
  }
4073
- ), open && /* @__PURE__ */ import_react26.default.createElement(import_base3.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react26.default.createElement(
4303
+ ), open && /* @__PURE__ */ import_react29.default.createElement(import_base3.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react29.default.createElement(
4074
4304
  StyledPopper2,
4075
4305
  {
4076
4306
  id: "date-range-picker-popper",
@@ -4089,7 +4319,7 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
4089
4319
  "aria-label": "Calendar Tooltip",
4090
4320
  "aria-expanded": open
4091
4321
  },
4092
- /* @__PURE__ */ import_react26.default.createElement(CalendarSheet2, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react26.default.createElement(
4322
+ /* @__PURE__ */ import_react29.default.createElement(CalendarSheet2, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react29.default.createElement(
4093
4323
  Calendar_default,
4094
4324
  {
4095
4325
  rangeSelection: true,
@@ -4100,14 +4330,14 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
4100
4330
  disableFuture,
4101
4331
  disablePast
4102
4332
  }
4103
- ), !hideClearButton && /* @__PURE__ */ import_react26.default.createElement(
4333
+ ), !hideClearButton && /* @__PURE__ */ import_react29.default.createElement(
4104
4334
  DialogActions_default,
4105
4335
  {
4106
4336
  sx: {
4107
4337
  p: 1
4108
4338
  }
4109
4339
  },
4110
- /* @__PURE__ */ import_react26.default.createElement(
4340
+ /* @__PURE__ */ import_react29.default.createElement(
4111
4341
  Button_default,
4112
4342
  {
4113
4343
  size,
@@ -4127,17 +4357,17 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
4127
4357
  DateRangePicker.displayName = "DateRangePicker";
4128
4358
 
4129
4359
  // src/components/Drawer/Drawer.tsx
4130
- var import_react27 = __toESM(require("react"));
4131
- var import_joy35 = require("@mui/joy");
4132
- var import_framer_motion22 = require("framer-motion");
4133
- var MotionDrawer = (0, import_framer_motion22.motion)(import_joy35.Drawer);
4134
- var StyledDrawer = (0, import_joy35.styled)(MotionDrawer)(({ theme, size = "md" }) => ({
4360
+ var import_react30 = __toESM(require("react"));
4361
+ var import_joy37 = require("@mui/joy");
4362
+ var import_framer_motion23 = require("framer-motion");
4363
+ var MotionDrawer = (0, import_framer_motion23.motion)(import_joy37.Drawer);
4364
+ var StyledDrawer = (0, import_joy37.styled)(MotionDrawer)(({ theme, size = "md" }) => ({
4135
4365
  "--Drawer-horizontalSize": {
4136
4366
  sm: "360px",
4137
4367
  md: "600px",
4138
4368
  lg: "900px"
4139
4369
  }[size],
4140
- [`& .${import_joy35.drawerClasses.content}`]: {
4370
+ [`& .${import_joy37.drawerClasses.content}`]: {
4141
4371
  [theme.breakpoints.down("md")]: {
4142
4372
  width: "100%"
4143
4373
  }
@@ -4145,15 +4375,15 @@ var StyledDrawer = (0, import_joy35.styled)(MotionDrawer)(({ theme, size = "md"
4145
4375
  }));
4146
4376
  var Drawer = (props) => {
4147
4377
  const { children, ...innerProps } = props;
4148
- return /* @__PURE__ */ import_react27.default.createElement(StyledDrawer, { ...innerProps }, children);
4378
+ return /* @__PURE__ */ import_react30.default.createElement(StyledDrawer, { ...innerProps }, children);
4149
4379
  };
4150
4380
  Drawer.displayName = "Drawer";
4151
4381
 
4152
4382
  // src/components/DialogContent/DialogContent.tsx
4153
- var import_joy36 = require("@mui/joy");
4154
- var import_framer_motion23 = require("framer-motion");
4155
- var MotionDialogContent = (0, import_framer_motion23.motion)(import_joy36.DialogContent);
4156
- var StyledDialogContent = (0, import_joy36.styled)(MotionDialogContent)(({ theme }) => ({
4383
+ var import_joy38 = require("@mui/joy");
4384
+ var import_framer_motion24 = require("framer-motion");
4385
+ var MotionDialogContent = (0, import_framer_motion24.motion)(import_joy38.DialogContent);
4386
+ var StyledDialogContent = (0, import_joy38.styled)(MotionDialogContent)(({ theme }) => ({
4157
4387
  padding: theme.spacing(0, 6, 5)
4158
4388
  }));
4159
4389
  var DialogContent = StyledDialogContent;
@@ -4163,10 +4393,10 @@ DialogContent.displayName = "DialogContent";
4163
4393
  var DialogContent_default = DialogContent;
4164
4394
 
4165
4395
  // src/components/DialogTitle/DialogTitle.tsx
4166
- var import_joy37 = require("@mui/joy");
4167
- var import_framer_motion24 = require("framer-motion");
4168
- var MotionDialogTitle = (0, import_framer_motion24.motion)(import_joy37.DialogTitle);
4169
- var StyledDialogTitle = (0, import_joy37.styled)(MotionDialogTitle)(({ theme }) => ({
4396
+ var import_joy39 = require("@mui/joy");
4397
+ var import_framer_motion25 = require("framer-motion");
4398
+ var MotionDialogTitle = (0, import_framer_motion25.motion)(import_joy39.DialogTitle);
4399
+ var StyledDialogTitle = (0, import_joy39.styled)(MotionDialogTitle)(({ theme }) => ({
4170
4400
  padding: theme.spacing(4, 6)
4171
4401
  }));
4172
4402
  var DialogTitle = StyledDialogTitle;
@@ -4176,58 +4406,58 @@ DialogTitle.displayName = "DialogTitle";
4176
4406
  var DialogTitle_default = DialogTitle;
4177
4407
 
4178
4408
  // src/components/DialogFrame/DialogFrame.tsx
4179
- var import_react29 = __toESM(require("react"));
4409
+ var import_react32 = __toESM(require("react"));
4180
4410
 
4181
4411
  // src/components/Modal/Modal.tsx
4182
- var import_react28 = __toESM(require("react"));
4183
- var import_joy38 = require("@mui/joy");
4184
- var import_framer_motion25 = require("framer-motion");
4185
- var MotionModal = (0, import_framer_motion25.motion)(import_joy38.Modal);
4412
+ var import_react31 = __toESM(require("react"));
4413
+ var import_joy40 = require("@mui/joy");
4414
+ var import_framer_motion26 = require("framer-motion");
4415
+ var MotionModal = (0, import_framer_motion26.motion)(import_joy40.Modal);
4186
4416
  var Modal = MotionModal;
4187
4417
  Modal.displayName = "Modal";
4188
- var StyledModalDialog = (0, import_joy38.styled)(import_joy38.ModalDialog)({
4418
+ var StyledModalDialog = (0, import_joy40.styled)(import_joy40.ModalDialog)({
4189
4419
  padding: 0
4190
4420
  });
4191
4421
  var ModalDialog = StyledModalDialog;
4192
4422
  ModalDialog.displayName = "ModalDialog";
4193
- var ModalClose = import_joy38.ModalClose;
4194
- var MotionModalOverflow = (0, import_framer_motion25.motion)(import_joy38.ModalOverflow);
4423
+ var ModalClose = import_joy40.ModalClose;
4424
+ var MotionModalOverflow = (0, import_framer_motion26.motion)(import_joy40.ModalOverflow);
4195
4425
  var ModalOverflow = MotionModalOverflow;
4196
4426
  ModalOverflow.displayName = "ModalOverflow";
4197
4427
  function ModalFrame(props) {
4198
4428
  const { title, children, titleStartDecorator, onClose, ...innerProps } = props;
4199
- return /* @__PURE__ */ import_react28.default.createElement(StyledModalDialog, { ...innerProps }, /* @__PURE__ */ import_react28.default.createElement(ModalClose, { onClick: onClose }), /* @__PURE__ */ import_react28.default.createElement(DialogTitle_default, null, titleStartDecorator, title), /* @__PURE__ */ import_react28.default.createElement(DialogContent_default, null, children));
4429
+ return /* @__PURE__ */ import_react31.default.createElement(StyledModalDialog, { ...innerProps }, /* @__PURE__ */ import_react31.default.createElement(ModalClose, { onClick: onClose }), /* @__PURE__ */ import_react31.default.createElement(DialogTitle_default, null, titleStartDecorator, title), /* @__PURE__ */ import_react31.default.createElement(DialogContent_default, null, children));
4200
4430
  }
4201
4431
  ModalFrame.displayName = "ModalFrame";
4202
4432
 
4203
4433
  // src/components/DialogFrame/DialogFrame.tsx
4204
- var import_joy39 = require("@mui/joy");
4205
- var StyledDialogFrame = (0, import_joy39.styled)(ModalDialog, {
4434
+ var import_joy41 = require("@mui/joy");
4435
+ var StyledDialogFrame = (0, import_joy41.styled)(ModalDialog, {
4206
4436
  name: "Dialog",
4207
4437
  slot: "Root"
4208
4438
  })({
4209
4439
  padding: 0
4210
4440
  });
4211
- var DialogFrame = import_react29.default.forwardRef((props, ref) => {
4441
+ var DialogFrame = import_react32.default.forwardRef((props, ref) => {
4212
4442
  const { title, children, actions, fullscreen, ...innerProps } = props;
4213
- return /* @__PURE__ */ import_react29.default.createElement(StyledDialogFrame, { layout: fullscreen ? "fullscreen" : "center", ref, ...innerProps }, /* @__PURE__ */ import_react29.default.createElement(DialogTitle_default, null, title), /* @__PURE__ */ import_react29.default.createElement(DialogContent_default, null, children), /* @__PURE__ */ import_react29.default.createElement(DialogActions_default, null, actions));
4443
+ return /* @__PURE__ */ import_react32.default.createElement(StyledDialogFrame, { layout: fullscreen ? "fullscreen" : "center", ref, ...innerProps }, /* @__PURE__ */ import_react32.default.createElement(DialogTitle_default, null, title), /* @__PURE__ */ import_react32.default.createElement(DialogContent_default, null, children), /* @__PURE__ */ import_react32.default.createElement(DialogActions_default, null, actions));
4214
4444
  });
4215
4445
  DialogFrame.displayName = "DialogFrame";
4216
4446
 
4217
4447
  // src/components/Divider/Divider.tsx
4218
- var import_react30 = __toESM(require("react"));
4219
- var import_joy40 = require("@mui/joy");
4220
- var import_framer_motion26 = require("framer-motion");
4221
- var MotionDivider = (0, import_framer_motion26.motion)(import_joy40.Divider);
4448
+ var import_react33 = __toESM(require("react"));
4449
+ var import_joy42 = require("@mui/joy");
4450
+ var import_framer_motion27 = require("framer-motion");
4451
+ var MotionDivider = (0, import_framer_motion27.motion)(import_joy42.Divider);
4222
4452
  var Divider = (props) => {
4223
- return /* @__PURE__ */ import_react30.default.createElement(MotionDivider, { ...props });
4453
+ return /* @__PURE__ */ import_react33.default.createElement(MotionDivider, { ...props });
4224
4454
  };
4225
4455
  Divider.displayName = "Divider";
4226
4456
 
4227
4457
  // src/components/InsetDrawer/InsetDrawer.tsx
4228
- var import_joy41 = require("@mui/joy");
4229
- var InsetDrawer = (0, import_joy41.styled)(import_joy41.Drawer)(({ theme }) => ({
4230
- [`& .${import_joy41.drawerClasses.content}`]: {
4458
+ var import_joy43 = require("@mui/joy");
4459
+ var InsetDrawer = (0, import_joy43.styled)(import_joy43.Drawer)(({ theme }) => ({
4460
+ [`& .${import_joy43.drawerClasses.content}`]: {
4231
4461
  backgroundColor: "transparent",
4232
4462
  boxShadow: "none",
4233
4463
  [theme.breakpoints.down("md")]: {
@@ -4241,11 +4471,11 @@ var InsetDrawer = (0, import_joy41.styled)(import_joy41.Drawer)(({ theme }) => (
4241
4471
  }));
4242
4472
 
4243
4473
  // src/components/Grid/Grid.tsx
4244
- var import_joy42 = require("@mui/joy");
4474
+ var import_joy44 = require("@mui/joy");
4245
4475
 
4246
4476
  // src/components/IconMenuButton/IconMenuButton.tsx
4247
- var import_react31 = __toESM(require("react"));
4248
- var import_joy43 = require("@mui/joy");
4477
+ var import_react34 = __toESM(require("react"));
4478
+ var import_joy45 = require("@mui/joy");
4249
4479
  function IconMenuButton(props) {
4250
4480
  const {
4251
4481
  size,
@@ -4258,8 +4488,8 @@ function IconMenuButton(props) {
4258
4488
  placement = "bottom"
4259
4489
  } = props;
4260
4490
  if (!items.length) {
4261
- return /* @__PURE__ */ import_react31.default.createElement(
4262
- import_joy43.IconButton,
4491
+ return /* @__PURE__ */ import_react34.default.createElement(
4492
+ import_joy45.IconButton,
4263
4493
  {
4264
4494
  component: props.buttonComponent ?? "button",
4265
4495
  size,
@@ -4272,10 +4502,10 @@ function IconMenuButton(props) {
4272
4502
  icon
4273
4503
  );
4274
4504
  }
4275
- return /* @__PURE__ */ import_react31.default.createElement(Dropdown_default, null, /* @__PURE__ */ import_react31.default.createElement(
4276
- import_joy43.MenuButton,
4505
+ return /* @__PURE__ */ import_react34.default.createElement(Dropdown_default, null, /* @__PURE__ */ import_react34.default.createElement(
4506
+ import_joy45.MenuButton,
4277
4507
  {
4278
- slots: { root: import_joy43.IconButton },
4508
+ slots: { root: import_joy45.IconButton },
4279
4509
  slotProps: {
4280
4510
  root: {
4281
4511
  component: props.buttonComponent ?? "button",
@@ -4289,19 +4519,19 @@ function IconMenuButton(props) {
4289
4519
  }
4290
4520
  },
4291
4521
  icon
4292
- ), /* @__PURE__ */ import_react31.default.createElement(Menu, { placement, size }, items.map((i) => /* @__PURE__ */ import_react31.default.createElement(MenuItem, { key: i.text, component: i.component, ...i.componentProps ?? {} }, i.text))));
4522
+ ), /* @__PURE__ */ import_react34.default.createElement(Menu, { placement, size }, items.map((i) => /* @__PURE__ */ import_react34.default.createElement(MenuItem, { key: i.text, component: i.component, ...i.componentProps ?? {} }, i.text))));
4293
4523
  }
4294
4524
  IconMenuButton.displayName = "IconMenuButton";
4295
4525
 
4296
4526
  // src/components/Markdown/Markdown.tsx
4297
- var import_react32 = __toESM(require("react"));
4298
- var import_joy44 = require("@mui/joy");
4299
- var import_joy45 = require("@mui/joy");
4527
+ var import_react35 = __toESM(require("react"));
4528
+ var import_joy46 = require("@mui/joy");
4529
+ var import_joy47 = require("@mui/joy");
4300
4530
  var import_remark_gfm = __toESM(require("remark-gfm"));
4301
- var LazyReactMarkdown = (0, import_react32.lazy)(() => import("react-markdown"));
4531
+ var LazyReactMarkdown = (0, import_react35.lazy)(() => import("react-markdown"));
4302
4532
  var Markdown = (props) => {
4303
- const [rehypeAccent2, setRehypeAccent] = (0, import_react32.useState)(null);
4304
- (0, import_react32.useEffect)(() => {
4533
+ const [rehypeAccent2, setRehypeAccent] = (0, import_react35.useState)(null);
4534
+ (0, import_react35.useEffect)(() => {
4305
4535
  const loadRehypeAccent = async () => {
4306
4536
  const module2 = await Promise.resolve().then(() => (init_rehype_accent(), rehype_accent_exports));
4307
4537
  setRehypeAccent(() => module2.rehypeAccent);
@@ -4323,12 +4553,12 @@ var Markdown = (props) => {
4323
4553
  if (!rehypeAccent2) {
4324
4554
  return null;
4325
4555
  }
4326
- return /* @__PURE__ */ import_react32.default.createElement(Typography, { component: "div", color, textColor, level: defaultLevel, ...innerProps }, /* @__PURE__ */ import_react32.default.createElement(
4327
- import_react32.Suspense,
4556
+ return /* @__PURE__ */ import_react35.default.createElement(Typography, { component: "div", color, textColor, level: defaultLevel, ...innerProps }, /* @__PURE__ */ import_react35.default.createElement(
4557
+ import_react35.Suspense,
4328
4558
  {
4329
- fallback: fallback || /* @__PURE__ */ import_react32.default.createElement(Typography, null, /* @__PURE__ */ import_react32.default.createElement(import_joy44.Skeleton, null, content || ""))
4559
+ fallback: fallback || /* @__PURE__ */ import_react35.default.createElement(Typography, null, /* @__PURE__ */ import_react35.default.createElement(import_joy46.Skeleton, null, content || ""))
4330
4560
  },
4331
- /* @__PURE__ */ import_react32.default.createElement(
4561
+ /* @__PURE__ */ import_react35.default.createElement(
4332
4562
  LazyReactMarkdown,
4333
4563
  {
4334
4564
  ...markdownOptions,
@@ -4336,15 +4566,15 @@ var Markdown = (props) => {
4336
4566
  rehypePlugins: [[rehypeAccent2, { accentColor }]],
4337
4567
  remarkPlugins: [import_remark_gfm.default],
4338
4568
  components: {
4339
- h1: ({ children }) => /* @__PURE__ */ import_react32.default.createElement(Typography, { color, textColor, level: "h1" }, children),
4340
- h2: ({ children }) => /* @__PURE__ */ import_react32.default.createElement(Typography, { color, textColor, level: "h2" }, children),
4341
- h3: ({ children }) => /* @__PURE__ */ import_react32.default.createElement(Typography, { color, textColor, level: "h3" }, children),
4342
- h4: ({ children }) => /* @__PURE__ */ import_react32.default.createElement(Typography, { color, textColor, level: "h4" }, children),
4343
- p: ({ children, node }) => /* @__PURE__ */ import_react32.default.createElement(Typography, { color, textColor, level: defaultLevel, ...node?.properties }, children),
4344
- a: ({ children, href }) => /* @__PURE__ */ import_react32.default.createElement(import_joy45.Link, { href, target: defaultLinkAction }, children),
4345
- hr: () => /* @__PURE__ */ import_react32.default.createElement(Divider, null),
4346
- b: ({ children }) => /* @__PURE__ */ import_react32.default.createElement(Typography, { fontWeight: boldFontWeight }, children),
4347
- strong: ({ children }) => /* @__PURE__ */ import_react32.default.createElement(Typography, { fontWeight: boldFontWeight }, children),
4569
+ h1: ({ children }) => /* @__PURE__ */ import_react35.default.createElement(Typography, { color, textColor, level: "h1" }, children),
4570
+ h2: ({ children }) => /* @__PURE__ */ import_react35.default.createElement(Typography, { color, textColor, level: "h2" }, children),
4571
+ h3: ({ children }) => /* @__PURE__ */ import_react35.default.createElement(Typography, { color, textColor, level: "h3" }, children),
4572
+ h4: ({ children }) => /* @__PURE__ */ import_react35.default.createElement(Typography, { color, textColor, level: "h4" }, children),
4573
+ p: ({ children, node }) => /* @__PURE__ */ import_react35.default.createElement(Typography, { color, textColor, level: defaultLevel, ...node?.properties }, children),
4574
+ a: ({ children, href }) => /* @__PURE__ */ import_react35.default.createElement(import_joy47.Link, { href, target: defaultLinkAction }, children),
4575
+ hr: () => /* @__PURE__ */ import_react35.default.createElement(Divider, null),
4576
+ b: ({ children }) => /* @__PURE__ */ import_react35.default.createElement(Typography, { fontWeight: boldFontWeight }, children),
4577
+ strong: ({ children }) => /* @__PURE__ */ import_react35.default.createElement(Typography, { fontWeight: boldFontWeight }, children),
4348
4578
  ...markdownOptions?.components
4349
4579
  }
4350
4580
  }
@@ -4354,8 +4584,8 @@ var Markdown = (props) => {
4354
4584
  Markdown.displayName = "Markdown";
4355
4585
 
4356
4586
  // src/components/MenuButton/MenuButton.tsx
4357
- var import_react33 = __toESM(require("react"));
4358
- var import_joy46 = require("@mui/joy");
4587
+ var import_react36 = __toESM(require("react"));
4588
+ var import_joy48 = require("@mui/joy");
4359
4589
  var import_ExpandMore = __toESM(require("@mui/icons-material/ExpandMore"));
4360
4590
  function MenuButton(props) {
4361
4591
  const {
@@ -4372,8 +4602,8 @@ function MenuButton(props) {
4372
4602
  placement = "bottom"
4373
4603
  } = props;
4374
4604
  if (!items.length) {
4375
- return /* @__PURE__ */ import_react33.default.createElement(
4376
- import_joy46.Button,
4605
+ return /* @__PURE__ */ import_react36.default.createElement(
4606
+ import_joy48.Button,
4377
4607
  {
4378
4608
  component: props.buttonComponent ?? "button",
4379
4609
  size,
@@ -4383,13 +4613,13 @@ function MenuButton(props) {
4383
4613
  loading,
4384
4614
  startDecorator,
4385
4615
  ...props.buttonComponentProps ?? {},
4386
- endDecorator: showIcon ? /* @__PURE__ */ import_react33.default.createElement(import_react33.default.Fragment, null, endDecorator, /* @__PURE__ */ import_react33.default.createElement(import_ExpandMore.default, null)) : /* @__PURE__ */ import_react33.default.createElement(import_react33.default.Fragment, null, endDecorator)
4616
+ endDecorator: showIcon ? /* @__PURE__ */ import_react36.default.createElement(import_react36.default.Fragment, null, endDecorator, /* @__PURE__ */ import_react36.default.createElement(import_ExpandMore.default, null)) : /* @__PURE__ */ import_react36.default.createElement(import_react36.default.Fragment, null, endDecorator)
4387
4617
  },
4388
4618
  buttonText
4389
4619
  );
4390
4620
  }
4391
- return /* @__PURE__ */ import_react33.default.createElement(Dropdown_default, null, /* @__PURE__ */ import_react33.default.createElement(
4392
- import_joy46.MenuButton,
4621
+ return /* @__PURE__ */ import_react36.default.createElement(Dropdown_default, null, /* @__PURE__ */ import_react36.default.createElement(
4622
+ import_joy48.MenuButton,
4393
4623
  {
4394
4624
  component: props.buttonComponent ?? "button",
4395
4625
  size,
@@ -4399,25 +4629,25 @@ function MenuButton(props) {
4399
4629
  loading,
4400
4630
  startDecorator,
4401
4631
  ...props.buttonComponentProps ?? {},
4402
- endDecorator: showIcon ? /* @__PURE__ */ import_react33.default.createElement(import_react33.default.Fragment, null, endDecorator, /* @__PURE__ */ import_react33.default.createElement(import_ExpandMore.default, null)) : /* @__PURE__ */ import_react33.default.createElement(import_react33.default.Fragment, null, endDecorator)
4632
+ endDecorator: showIcon ? /* @__PURE__ */ import_react36.default.createElement(import_react36.default.Fragment, null, endDecorator, /* @__PURE__ */ import_react36.default.createElement(import_ExpandMore.default, null)) : /* @__PURE__ */ import_react36.default.createElement(import_react36.default.Fragment, null, endDecorator)
4403
4633
  },
4404
4634
  buttonText
4405
- ), /* @__PURE__ */ import_react33.default.createElement(Menu, { placement, size }, items.map((i) => /* @__PURE__ */ import_react33.default.createElement(MenuItem, { key: i.text, component: i.component, ...i.componentProps ?? {} }, i.text))));
4635
+ ), /* @__PURE__ */ import_react36.default.createElement(Menu, { placement, size }, items.map((i) => /* @__PURE__ */ import_react36.default.createElement(MenuItem, { key: i.text, component: i.component, ...i.componentProps ?? {} }, i.text))));
4406
4636
  }
4407
4637
  MenuButton.displayName = "MenuButton";
4408
4638
 
4409
4639
  // src/components/MonthPicker/MonthPicker.tsx
4410
- var import_react34 = __toESM(require("react"));
4640
+ var import_react37 = __toESM(require("react"));
4411
4641
  var import_CalendarToday3 = __toESM(require("@mui/icons-material/CalendarToday"));
4412
- var import_joy47 = require("@mui/joy");
4642
+ var import_joy49 = require("@mui/joy");
4413
4643
  var import_base4 = require("@mui/base");
4414
- var StyledPopper3 = (0, import_joy47.styled)(import_base4.Popper, {
4644
+ var StyledPopper3 = (0, import_joy49.styled)(import_base4.Popper, {
4415
4645
  name: "MonthPicker",
4416
4646
  slot: "popper"
4417
4647
  })(({ theme }) => ({
4418
4648
  zIndex: theme.zIndex.tooltip
4419
4649
  }));
4420
- var CalendarSheet3 = (0, import_joy47.styled)(Sheet_default, {
4650
+ var CalendarSheet3 = (0, import_joy49.styled)(Sheet_default, {
4421
4651
  name: "MonthPicker",
4422
4652
  slot: "sheet",
4423
4653
  overridesResolver: (props, styles) => styles.root
@@ -4426,7 +4656,7 @@ var CalendarSheet3 = (0, import_joy47.styled)(Sheet_default, {
4426
4656
  boxShadow: theme.shadow.md,
4427
4657
  borderRadius: theme.radius.md
4428
4658
  }));
4429
- var MonthPickerRoot = (0, import_joy47.styled)("div", {
4659
+ var MonthPickerRoot = (0, import_joy49.styled)("div", {
4430
4660
  name: "MonthPicker",
4431
4661
  slot: "root",
4432
4662
  overridesResolver: (props, styles) => styles.root
@@ -4462,8 +4692,8 @@ function parseDate3(dateString, format) {
4462
4692
  const result = new Date(year, month, day);
4463
4693
  return result;
4464
4694
  }
4465
- var MonthPicker = (0, import_react34.forwardRef)((inProps, ref) => {
4466
- const props = (0, import_joy47.useThemeProps)({ props: inProps, name: "MonthPicker" });
4695
+ var MonthPicker = (0, import_react37.forwardRef)((inProps, ref) => {
4696
+ const props = (0, import_joy49.useThemeProps)({ props: inProps, name: "MonthPicker" });
4467
4697
  const {
4468
4698
  onChange,
4469
4699
  disabled,
@@ -4489,14 +4719,14 @@ var MonthPicker = (0, import_react34.forwardRef)((inProps, ref) => {
4489
4719
  locale,
4490
4720
  ...innerProps
4491
4721
  } = props;
4492
- const innerRef = (0, import_react34.useRef)(null);
4493
- const buttonRef = (0, import_react34.useRef)(null);
4722
+ const innerRef = (0, import_react37.useRef)(null);
4723
+ const buttonRef = (0, import_react37.useRef)(null);
4494
4724
  const [value, setValue, isControlled] = useControlledState(
4495
4725
  props.value,
4496
4726
  props.defaultValue || "",
4497
- (0, import_react34.useCallback)((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
4727
+ (0, import_react37.useCallback)((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
4498
4728
  );
4499
- const getFormattedDisplayValue = (0, import_react34.useCallback)(
4729
+ const getFormattedDisplayValue = (0, import_react37.useCallback)(
4500
4730
  (inputValue) => {
4501
4731
  if (!inputValue) return "";
4502
4732
  try {
@@ -4507,19 +4737,19 @@ var MonthPicker = (0, import_react34.forwardRef)((inProps, ref) => {
4507
4737
  },
4508
4738
  [format, displayFormat, locale]
4509
4739
  );
4510
- const [displayValue, setDisplayValue] = (0, import_react34.useState)(() => getFormattedDisplayValue(value));
4511
- const [anchorEl, setAnchorEl] = (0, import_react34.useState)(null);
4740
+ const [displayValue, setDisplayValue] = (0, import_react37.useState)(() => getFormattedDisplayValue(value));
4741
+ const [anchorEl, setAnchorEl] = (0, import_react37.useState)(null);
4512
4742
  const open = Boolean(anchorEl);
4513
- (0, import_react34.useEffect)(() => {
4743
+ (0, import_react37.useEffect)(() => {
4514
4744
  if (!anchorEl) {
4515
4745
  innerRef.current?.blur();
4516
4746
  }
4517
4747
  }, [anchorEl, innerRef]);
4518
- (0, import_react34.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
4519
- (0, import_react34.useEffect)(() => {
4748
+ (0, import_react37.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
4749
+ (0, import_react37.useEffect)(() => {
4520
4750
  setDisplayValue(getFormattedDisplayValue(value));
4521
4751
  }, [value, getFormattedDisplayValue]);
4522
- const handleChange = (0, import_react34.useCallback)(
4752
+ const handleChange = (0, import_react37.useCallback)(
4523
4753
  (event) => {
4524
4754
  const newValue = event.target.value;
4525
4755
  setValue(newValue);
@@ -4529,21 +4759,21 @@ var MonthPicker = (0, import_react34.forwardRef)((inProps, ref) => {
4529
4759
  },
4530
4760
  [setValue, getFormattedDisplayValue, isControlled]
4531
4761
  );
4532
- const handleCalendarToggle = (0, import_react34.useCallback)(
4762
+ const handleCalendarToggle = (0, import_react37.useCallback)(
4533
4763
  (event) => {
4534
4764
  setAnchorEl(anchorEl ? null : event.currentTarget);
4535
4765
  innerRef.current?.focus();
4536
4766
  },
4537
4767
  [anchorEl, setAnchorEl, innerRef]
4538
4768
  );
4539
- const handleInputMouseDown = (0, import_react34.useCallback)(
4769
+ const handleInputMouseDown = (0, import_react37.useCallback)(
4540
4770
  (event) => {
4541
4771
  event.preventDefault();
4542
4772
  buttonRef.current?.focus();
4543
4773
  },
4544
4774
  [buttonRef]
4545
4775
  );
4546
- return /* @__PURE__ */ import_react34.default.createElement(MonthPickerRoot, null, /* @__PURE__ */ import_react34.default.createElement(import_base4.FocusTrap, { open: true }, /* @__PURE__ */ import_react34.default.createElement(import_react34.default.Fragment, null, /* @__PURE__ */ import_react34.default.createElement(
4776
+ return /* @__PURE__ */ import_react37.default.createElement(MonthPickerRoot, null, /* @__PURE__ */ import_react37.default.createElement(import_base4.FocusTrap, { open: true }, /* @__PURE__ */ import_react37.default.createElement(import_react37.default.Fragment, null, /* @__PURE__ */ import_react37.default.createElement(
4547
4777
  Input_default,
4548
4778
  {
4549
4779
  ...innerProps,
@@ -4573,7 +4803,7 @@ var MonthPicker = (0, import_react34.forwardRef)((inProps, ref) => {
4573
4803
  // NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
4574
4804
  fontFamily: "monospace"
4575
4805
  },
4576
- endDecorator: /* @__PURE__ */ import_react34.default.createElement(
4806
+ endDecorator: /* @__PURE__ */ import_react37.default.createElement(
4577
4807
  IconButton_default,
4578
4808
  {
4579
4809
  ref: buttonRef,
@@ -4585,12 +4815,12 @@ var MonthPicker = (0, import_react34.forwardRef)((inProps, ref) => {
4585
4815
  "aria-expanded": open,
4586
4816
  disabled
4587
4817
  },
4588
- /* @__PURE__ */ import_react34.default.createElement(import_CalendarToday3.default, null)
4818
+ /* @__PURE__ */ import_react37.default.createElement(import_CalendarToday3.default, null)
4589
4819
  ),
4590
4820
  label,
4591
4821
  helperText
4592
4822
  }
4593
- ), open && /* @__PURE__ */ import_react34.default.createElement(import_base4.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react34.default.createElement(
4823
+ ), open && /* @__PURE__ */ import_react37.default.createElement(import_base4.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react37.default.createElement(
4594
4824
  StyledPopper3,
4595
4825
  {
4596
4826
  id: "month-picker-popper",
@@ -4609,7 +4839,7 @@ var MonthPicker = (0, import_react34.forwardRef)((inProps, ref) => {
4609
4839
  "aria-label": "Calendar Tooltip",
4610
4840
  "aria-expanded": open
4611
4841
  },
4612
- /* @__PURE__ */ import_react34.default.createElement(CalendarSheet3, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react34.default.createElement(
4842
+ /* @__PURE__ */ import_react37.default.createElement(CalendarSheet3, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react37.default.createElement(
4613
4843
  Calendar_default,
4614
4844
  {
4615
4845
  view: "month",
@@ -4630,14 +4860,14 @@ var MonthPicker = (0, import_react34.forwardRef)((inProps, ref) => {
4630
4860
  disablePast,
4631
4861
  locale
4632
4862
  }
4633
- ), /* @__PURE__ */ import_react34.default.createElement(
4863
+ ), /* @__PURE__ */ import_react37.default.createElement(
4634
4864
  DialogActions_default,
4635
4865
  {
4636
4866
  sx: {
4637
4867
  p: 1
4638
4868
  }
4639
4869
  },
4640
- /* @__PURE__ */ import_react34.default.createElement(
4870
+ /* @__PURE__ */ import_react37.default.createElement(
4641
4871
  Button_default,
4642
4872
  {
4643
4873
  size,
@@ -4660,18 +4890,18 @@ var MonthPicker = (0, import_react34.forwardRef)((inProps, ref) => {
4660
4890
  });
4661
4891
 
4662
4892
  // src/components/MonthRangePicker/MonthRangePicker.tsx
4663
- var import_react35 = __toESM(require("react"));
4893
+ var import_react38 = __toESM(require("react"));
4664
4894
  var import_react_imask3 = require("react-imask");
4665
4895
  var import_CalendarToday4 = __toESM(require("@mui/icons-material/CalendarToday"));
4666
- var import_joy48 = require("@mui/joy");
4896
+ var import_joy50 = require("@mui/joy");
4667
4897
  var import_base5 = require("@mui/base");
4668
- var StyledPopper4 = (0, import_joy48.styled)(import_base5.Popper, {
4898
+ var StyledPopper4 = (0, import_joy50.styled)(import_base5.Popper, {
4669
4899
  name: "MonthRangePicker",
4670
4900
  slot: "popper"
4671
4901
  })(({ theme }) => ({
4672
4902
  zIndex: theme.zIndex.tooltip
4673
4903
  }));
4674
- var CalendarSheet4 = (0, import_joy48.styled)(Sheet_default, {
4904
+ var CalendarSheet4 = (0, import_joy50.styled)(Sheet_default, {
4675
4905
  name: "MonthRangePicker",
4676
4906
  slot: "sheet",
4677
4907
  overridesResolver: (props, styles) => styles.root
@@ -4681,7 +4911,7 @@ var CalendarSheet4 = (0, import_joy48.styled)(Sheet_default, {
4681
4911
  boxShadow: theme.shadow.md,
4682
4912
  borderRadius: theme.radius.md
4683
4913
  }));
4684
- var MonthRangePickerRoot = (0, import_joy48.styled)("div", {
4914
+ var MonthRangePickerRoot = (0, import_joy50.styled)("div", {
4685
4915
  name: "MonthRangePicker",
4686
4916
  slot: "root",
4687
4917
  overridesResolver: (props, styles) => styles.root
@@ -4718,9 +4948,9 @@ var parseDates2 = (str) => {
4718
4948
  var formatToPattern3 = (format) => {
4719
4949
  return `${format} - ${format}`.replace(/YYYY/g, "Y").replace(/MM/g, "m").replace(/[^YMm\s]/g, (match) => `${match}\``);
4720
4950
  };
4721
- var TextMaskAdapter7 = import_react35.default.forwardRef(function TextMaskAdapter8(props, ref) {
4951
+ var TextMaskAdapter7 = import_react38.default.forwardRef(function TextMaskAdapter8(props, ref) {
4722
4952
  const { onChange, format, ...other } = props;
4723
- return /* @__PURE__ */ import_react35.default.createElement(
4953
+ return /* @__PURE__ */ import_react38.default.createElement(
4724
4954
  import_react_imask3.IMaskInput,
4725
4955
  {
4726
4956
  ...other,
@@ -4748,8 +4978,8 @@ var TextMaskAdapter7 = import_react35.default.forwardRef(function TextMaskAdapte
4748
4978
  }
4749
4979
  );
4750
4980
  });
4751
- var MonthRangePicker = (0, import_react35.forwardRef)((inProps, ref) => {
4752
- const props = (0, import_joy48.useThemeProps)({ props: inProps, name: "MonthRangePicker" });
4981
+ var MonthRangePicker = (0, import_react38.forwardRef)((inProps, ref) => {
4982
+ const props = (0, import_joy50.useThemeProps)({ props: inProps, name: "MonthRangePicker" });
4753
4983
  const {
4754
4984
  onChange,
4755
4985
  disabled,
@@ -4768,35 +4998,35 @@ var MonthRangePicker = (0, import_react35.forwardRef)((inProps, ref) => {
4768
4998
  size,
4769
4999
  ...innerProps
4770
5000
  } = props;
4771
- const innerRef = (0, import_react35.useRef)(null);
5001
+ const innerRef = (0, import_react38.useRef)(null);
4772
5002
  const [value, setValue] = useControlledState(
4773
5003
  props.value,
4774
5004
  props.defaultValue || "",
4775
- (0, import_react35.useCallback)((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
5005
+ (0, import_react38.useCallback)((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
4776
5006
  );
4777
- const [anchorEl, setAnchorEl] = (0, import_react35.useState)(null);
5007
+ const [anchorEl, setAnchorEl] = (0, import_react38.useState)(null);
4778
5008
  const open = Boolean(anchorEl);
4779
- const calendarValue = (0, import_react35.useMemo)(() => value ? parseDates2(value) : void 0, [value]);
4780
- (0, import_react35.useEffect)(() => {
5009
+ const calendarValue = (0, import_react38.useMemo)(() => value ? parseDates2(value) : void 0, [value]);
5010
+ (0, import_react38.useEffect)(() => {
4781
5011
  if (!anchorEl) {
4782
5012
  innerRef.current?.blur();
4783
5013
  }
4784
5014
  }, [anchorEl, innerRef]);
4785
- (0, import_react35.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
4786
- const handleChange = (0, import_react35.useCallback)(
5015
+ (0, import_react38.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
5016
+ const handleChange = (0, import_react38.useCallback)(
4787
5017
  (event) => {
4788
5018
  setValue(event.target.value);
4789
5019
  },
4790
5020
  [setValue]
4791
5021
  );
4792
- const handleCalendarToggle = (0, import_react35.useCallback)(
5022
+ const handleCalendarToggle = (0, import_react38.useCallback)(
4793
5023
  (event) => {
4794
5024
  setAnchorEl(anchorEl ? null : event.currentTarget);
4795
5025
  innerRef.current?.focus();
4796
5026
  },
4797
5027
  [anchorEl, setAnchorEl, innerRef]
4798
5028
  );
4799
- const handleCalendarChange = (0, import_react35.useCallback)(
5029
+ const handleCalendarChange = (0, import_react38.useCallback)(
4800
5030
  ([date1, date2]) => {
4801
5031
  if (!date1 || !date2) return;
4802
5032
  setValue(formatValueString4([date1, date2], format));
@@ -4804,7 +5034,7 @@ var MonthRangePicker = (0, import_react35.forwardRef)((inProps, ref) => {
4804
5034
  },
4805
5035
  [setValue, setAnchorEl, format]
4806
5036
  );
4807
- return /* @__PURE__ */ import_react35.default.createElement(MonthRangePickerRoot, null, /* @__PURE__ */ import_react35.default.createElement(import_base5.FocusTrap, { open: true }, /* @__PURE__ */ import_react35.default.createElement(import_react35.default.Fragment, null, /* @__PURE__ */ import_react35.default.createElement(
5037
+ return /* @__PURE__ */ import_react38.default.createElement(MonthRangePickerRoot, null, /* @__PURE__ */ import_react38.default.createElement(import_base5.FocusTrap, { open: true }, /* @__PURE__ */ import_react38.default.createElement(import_react38.default.Fragment, null, /* @__PURE__ */ import_react38.default.createElement(
4808
5038
  Input_default,
4809
5039
  {
4810
5040
  ...innerProps,
@@ -4826,7 +5056,7 @@ var MonthRangePicker = (0, import_react35.forwardRef)((inProps, ref) => {
4826
5056
  // NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
4827
5057
  fontFamily: "monospace"
4828
5058
  },
4829
- endDecorator: /* @__PURE__ */ import_react35.default.createElement(
5059
+ endDecorator: /* @__PURE__ */ import_react38.default.createElement(
4830
5060
  IconButton_default,
4831
5061
  {
4832
5062
  variant: "plain",
@@ -4836,12 +5066,12 @@ var MonthRangePicker = (0, import_react35.forwardRef)((inProps, ref) => {
4836
5066
  "aria-haspopup": "dialog",
4837
5067
  "aria-expanded": open
4838
5068
  },
4839
- /* @__PURE__ */ import_react35.default.createElement(import_CalendarToday4.default, null)
5069
+ /* @__PURE__ */ import_react38.default.createElement(import_CalendarToday4.default, null)
4840
5070
  ),
4841
5071
  label,
4842
5072
  helperText
4843
5073
  }
4844
- ), open && /* @__PURE__ */ import_react35.default.createElement(import_base5.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react35.default.createElement(
5074
+ ), open && /* @__PURE__ */ import_react38.default.createElement(import_base5.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react38.default.createElement(
4845
5075
  StyledPopper4,
4846
5076
  {
4847
5077
  id: "month-range-picker-popper",
@@ -4860,7 +5090,7 @@ var MonthRangePicker = (0, import_react35.forwardRef)((inProps, ref) => {
4860
5090
  "aria-label": "Calendar Tooltip",
4861
5091
  "aria-expanded": open
4862
5092
  },
4863
- /* @__PURE__ */ import_react35.default.createElement(CalendarSheet4, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react35.default.createElement(
5093
+ /* @__PURE__ */ import_react38.default.createElement(CalendarSheet4, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react38.default.createElement(
4864
5094
  Calendar_default,
4865
5095
  {
4866
5096
  view: "month",
@@ -4873,14 +5103,14 @@ var MonthRangePicker = (0, import_react35.forwardRef)((inProps, ref) => {
4873
5103
  disableFuture,
4874
5104
  disablePast
4875
5105
  }
4876
- ), /* @__PURE__ */ import_react35.default.createElement(
5106
+ ), /* @__PURE__ */ import_react38.default.createElement(
4877
5107
  DialogActions_default,
4878
5108
  {
4879
5109
  sx: {
4880
5110
  p: 1
4881
5111
  }
4882
5112
  },
4883
- /* @__PURE__ */ import_react35.default.createElement(
5113
+ /* @__PURE__ */ import_react38.default.createElement(
4884
5114
  Button_default,
4885
5115
  {
4886
5116
  size,
@@ -4899,22 +5129,22 @@ var MonthRangePicker = (0, import_react35.forwardRef)((inProps, ref) => {
4899
5129
  MonthRangePicker.displayName = "MonthRangePicker";
4900
5130
 
4901
5131
  // src/components/NavigationGroup/NavigationGroup.tsx
4902
- var import_react36 = __toESM(require("react"));
4903
- var import_joy49 = require("@mui/joy");
4904
- var AccordionSummary2 = (0, import_joy49.styled)(import_joy49.AccordionSummary, {
5132
+ var import_react39 = __toESM(require("react"));
5133
+ var import_joy51 = require("@mui/joy");
5134
+ var AccordionSummary2 = (0, import_joy51.styled)(import_joy51.AccordionSummary, {
4905
5135
  name: "NavigationGroup",
4906
5136
  slot: "Summary",
4907
5137
  shouldForwardProp: (prop) => prop !== "useIcon" && prop !== "level"
4908
5138
  })(({ theme, useIcon, level }) => ({
4909
- [`& .${import_joy49.accordionSummaryClasses.button}`]: {
5139
+ [`& .${import_joy51.accordionSummaryClasses.button}`]: {
4910
5140
  padding: theme.spacing(4, 6, 4, (useIcon ? 6 : 8) + (level || 0) * 8),
4911
- [`&.${import_joy49.accordionSummaryClasses.expanded}`]: {
5141
+ [`&.${import_joy51.accordionSummaryClasses.expanded}`]: {
4912
5142
  color: theme.palette.primary.plainColor,
4913
5143
  "--Icon-color": theme.palette.primary.plainColor
4914
5144
  }
4915
5145
  }
4916
5146
  }));
4917
- var AccordionDetails2 = (0, import_joy49.styled)(import_joy49.AccordionDetails, {
5147
+ var AccordionDetails2 = (0, import_joy51.styled)(import_joy51.AccordionDetails, {
4918
5148
  name: "NavigationGroup",
4919
5149
  slot: "Details"
4920
5150
  })(({ theme }) => ({
@@ -4923,13 +5153,13 @@ var AccordionDetails2 = (0, import_joy49.styled)(import_joy49.AccordionDetails,
4923
5153
  }));
4924
5154
  function NavigationGroup(props) {
4925
5155
  const { title, children, startDecorator, level, ...rest } = props;
4926
- return /* @__PURE__ */ import_react36.default.createElement(import_joy49.Accordion, { ...rest }, /* @__PURE__ */ import_react36.default.createElement(AccordionSummary2, { useIcon: !!startDecorator, level }, /* @__PURE__ */ import_react36.default.createElement(import_joy49.Stack, { direction: "row", gap: 4 }, startDecorator, title)), /* @__PURE__ */ import_react36.default.createElement(AccordionDetails2, null, children));
5156
+ return /* @__PURE__ */ import_react39.default.createElement(import_joy51.Accordion, { ...rest }, /* @__PURE__ */ import_react39.default.createElement(AccordionSummary2, { useIcon: !!startDecorator, level }, /* @__PURE__ */ import_react39.default.createElement(import_joy51.Stack, { direction: "row", gap: 4 }, startDecorator, title)), /* @__PURE__ */ import_react39.default.createElement(AccordionDetails2, null, children));
4927
5157
  }
4928
5158
 
4929
5159
  // src/components/NavigationItem/NavigationItem.tsx
4930
- var import_react37 = __toESM(require("react"));
4931
- var import_joy50 = require("@mui/joy");
4932
- var ListItemButton = (0, import_joy50.styled)(import_joy50.ListItemButton, {
5160
+ var import_react40 = __toESM(require("react"));
5161
+ var import_joy52 = require("@mui/joy");
5162
+ var ListItemButton = (0, import_joy52.styled)(import_joy52.ListItemButton, {
4933
5163
  name: "NavigationItem",
4934
5164
  slot: "Button",
4935
5165
  shouldForwardProp: (prop) => prop !== "useIcon" && prop !== "level"
@@ -4943,7 +5173,7 @@ var ListItemButton = (0, import_joy50.styled)(import_joy50.ListItemButton, {
4943
5173
  "&:active": {
4944
5174
  backgroundColor: theme.palette.neutral.plainActiveBg
4945
5175
  },
4946
- [`&.${import_joy50.listItemButtonClasses.selected}`]: {
5176
+ [`&.${import_joy52.listItemButtonClasses.selected}`]: {
4947
5177
  color: theme.palette.primary.plainColor,
4948
5178
  "--Icon-color": theme.palette.primary.plainColor,
4949
5179
  "&:not(:hover):not(:active)": {
@@ -4956,7 +5186,7 @@ function NavigationItem(props) {
4956
5186
  const handleClick = () => {
4957
5187
  onClick?.(id);
4958
5188
  };
4959
- return /* @__PURE__ */ import_react37.default.createElement(import_joy50.ListItem, { ...rest }, /* @__PURE__ */ import_react37.default.createElement(
5189
+ return /* @__PURE__ */ import_react40.default.createElement(import_joy52.ListItem, { ...rest }, /* @__PURE__ */ import_react40.default.createElement(
4960
5190
  ListItemButton,
4961
5191
  {
4962
5192
  level,
@@ -4965,21 +5195,21 @@ function NavigationItem(props) {
4965
5195
  "aria-current": selected,
4966
5196
  onClick: handleClick
4967
5197
  },
4968
- startDecorator && /* @__PURE__ */ import_react37.default.createElement(import_joy50.ListItemDecorator, null, startDecorator),
5198
+ startDecorator && /* @__PURE__ */ import_react40.default.createElement(import_joy52.ListItemDecorator, null, startDecorator),
4969
5199
  children
4970
5200
  ));
4971
5201
  }
4972
5202
 
4973
5203
  // src/components/Navigator/Navigator.tsx
4974
- var import_react38 = __toESM(require("react"));
5204
+ var import_react41 = __toESM(require("react"));
4975
5205
  function Navigator(props) {
4976
5206
  const { items, level = 0, onSelect } = props;
4977
5207
  const handleItemClick = (id) => {
4978
5208
  onSelect?.(id);
4979
5209
  };
4980
- return /* @__PURE__ */ import_react38.default.createElement("div", null, items.map((item, index) => {
5210
+ return /* @__PURE__ */ import_react41.default.createElement("div", null, items.map((item, index) => {
4981
5211
  if (item.type === "item") {
4982
- return /* @__PURE__ */ import_react38.default.createElement(
5212
+ return /* @__PURE__ */ import_react41.default.createElement(
4983
5213
  NavigationItem,
4984
5214
  {
4985
5215
  key: item.id,
@@ -4992,7 +5222,7 @@ function Navigator(props) {
4992
5222
  item.title
4993
5223
  );
4994
5224
  } else if (item.type === "group") {
4995
- return /* @__PURE__ */ import_react38.default.createElement(
5225
+ return /* @__PURE__ */ import_react41.default.createElement(
4996
5226
  NavigationGroup,
4997
5227
  {
4998
5228
  key: `${item.title}-${index}`,
@@ -5010,16 +5240,16 @@ function Navigator(props) {
5010
5240
  Navigator.displayName = "Navigator";
5011
5241
 
5012
5242
  // src/components/PercentageInput/PercentageInput.tsx
5013
- var import_react39 = __toESM(require("react"));
5243
+ var import_react42 = __toESM(require("react"));
5014
5244
  var import_react_number_format2 = require("react-number-format");
5015
- var import_joy51 = require("@mui/joy");
5245
+ var import_joy53 = require("@mui/joy");
5016
5246
  var padDecimal = (value, decimalScale) => {
5017
5247
  const [integer, decimal = ""] = `${value}`.split(".");
5018
5248
  return Number(`${integer}${decimal.padEnd(decimalScale, "0")}`);
5019
5249
  };
5020
- var TextMaskAdapter9 = import_react39.default.forwardRef(function TextMaskAdapter10(props, ref) {
5250
+ var TextMaskAdapter9 = import_react42.default.forwardRef(function TextMaskAdapter10(props, ref) {
5021
5251
  const { onChange, min, max, ...innerProps } = props;
5022
- return /* @__PURE__ */ import_react39.default.createElement(
5252
+ return /* @__PURE__ */ import_react42.default.createElement(
5023
5253
  import_react_number_format2.NumericFormat,
5024
5254
  {
5025
5255
  ...innerProps,
@@ -5039,14 +5269,14 @@ var TextMaskAdapter9 = import_react39.default.forwardRef(function TextMaskAdapte
5039
5269
  }
5040
5270
  );
5041
5271
  });
5042
- var PercentageInputRoot = (0, import_joy51.styled)(Input_default, {
5272
+ var PercentageInputRoot = (0, import_joy53.styled)(Input_default, {
5043
5273
  name: "PercentageInput",
5044
5274
  slot: "Root",
5045
5275
  overridesResolver: (props, styles) => styles.root
5046
5276
  })({});
5047
- var PercentageInput = import_react39.default.forwardRef(
5277
+ var PercentageInput = import_react42.default.forwardRef(
5048
5278
  function PercentageInput2(inProps, ref) {
5049
- const props = (0, import_joy51.useThemeProps)({ props: inProps, name: "PercentageInput" });
5279
+ const props = (0, import_joy53.useThemeProps)({ props: inProps, name: "PercentageInput" });
5050
5280
  const {
5051
5281
  name,
5052
5282
  onChange,
@@ -5067,18 +5297,18 @@ var PercentageInput = import_react39.default.forwardRef(
5067
5297
  const [_value, setValue] = useControlledState(
5068
5298
  props.value,
5069
5299
  props.defaultValue,
5070
- (0, import_react39.useCallback)((value2) => onChange?.({ target: { name, value: value2 } }), [onChange, name])
5300
+ (0, import_react42.useCallback)((value2) => onChange?.({ target: { name, value: value2 } }), [onChange, name])
5071
5301
  );
5072
- const [internalError, setInternalError] = (0, import_react39.useState)(
5302
+ const [internalError, setInternalError] = (0, import_react42.useState)(
5073
5303
  max && _value && _value > max || min && _value && _value < min
5074
5304
  );
5075
- const value = (0, import_react39.useMemo)(() => {
5305
+ const value = (0, import_react42.useMemo)(() => {
5076
5306
  if (_value && useMinorUnit) {
5077
5307
  return _value / Math.pow(10, maxDecimalScale);
5078
5308
  }
5079
5309
  return _value;
5080
5310
  }, [_value, useMinorUnit, maxDecimalScale]);
5081
- const handleChange = (0, import_react39.useCallback)(
5311
+ const handleChange = (0, import_react42.useCallback)(
5082
5312
  (event) => {
5083
5313
  if (event.target.value === "") {
5084
5314
  setValue(void 0);
@@ -5095,7 +5325,7 @@ var PercentageInput = import_react39.default.forwardRef(
5095
5325
  },
5096
5326
  [setValue, useMinorUnit, maxDecimalScale, min, max]
5097
5327
  );
5098
- return /* @__PURE__ */ import_react39.default.createElement(
5328
+ return /* @__PURE__ */ import_react42.default.createElement(
5099
5329
  PercentageInputRoot,
5100
5330
  {
5101
5331
  ...innerProps,
@@ -5126,41 +5356,41 @@ var PercentageInput = import_react39.default.forwardRef(
5126
5356
  PercentageInput.displayName = "PercentageInput";
5127
5357
 
5128
5358
  // src/components/Radio/Radio.tsx
5129
- var import_joy52 = require("@mui/joy");
5130
- var import_framer_motion27 = require("framer-motion");
5131
- var MotionRadio = (0, import_framer_motion27.motion)(import_joy52.Radio);
5359
+ var import_joy54 = require("@mui/joy");
5360
+ var import_framer_motion28 = require("framer-motion");
5361
+ var MotionRadio = (0, import_framer_motion28.motion)(import_joy54.Radio);
5132
5362
  var Radio = MotionRadio;
5133
5363
  Radio.displayName = "Radio";
5134
- var MotionRadioGroup = (0, import_framer_motion27.motion)(import_joy52.RadioGroup);
5364
+ var MotionRadioGroup = (0, import_framer_motion28.motion)(import_joy54.RadioGroup);
5135
5365
  var RadioGroup = MotionRadioGroup;
5136
5366
  RadioGroup.displayName = "RadioGroup";
5137
5367
 
5138
5368
  // src/components/RadioList/RadioList.tsx
5139
- var import_react40 = __toESM(require("react"));
5369
+ var import_react43 = __toESM(require("react"));
5140
5370
  function RadioList(props) {
5141
5371
  const { items, ...innerProps } = props;
5142
- return /* @__PURE__ */ import_react40.default.createElement(RadioGroup, { ...innerProps }, items.map((item) => /* @__PURE__ */ import_react40.default.createElement(Radio, { key: `${item.value}`, value: item.value, label: item.label })));
5372
+ return /* @__PURE__ */ import_react43.default.createElement(RadioGroup, { ...innerProps }, items.map((item) => /* @__PURE__ */ import_react43.default.createElement(Radio, { key: `${item.value}`, value: item.value, label: item.label })));
5143
5373
  }
5144
5374
  RadioList.displayName = "RadioList";
5145
5375
 
5146
5376
  // src/components/Stepper/Stepper.tsx
5147
- var import_react41 = __toESM(require("react"));
5148
- var import_joy53 = require("@mui/joy");
5377
+ var import_react44 = __toESM(require("react"));
5378
+ var import_joy55 = require("@mui/joy");
5149
5379
  var import_Check = __toESM(require("@mui/icons-material/Check"));
5150
- var import_framer_motion28 = require("framer-motion");
5151
- var Step = (0, import_joy53.styled)(import_joy53.Step)({});
5380
+ var import_framer_motion29 = require("framer-motion");
5381
+ var Step = (0, import_joy55.styled)(import_joy55.Step)({});
5152
5382
  Step.displayName = "Step";
5153
- var StepIndicator = (0, import_joy53.styled)(import_joy53.StepIndicator)({});
5383
+ var StepIndicator = (0, import_joy55.styled)(import_joy55.StepIndicator)({});
5154
5384
  StepIndicator.displayName = "StepIndicator";
5155
- var StyledStepper = (0, import_joy53.styled)(import_joy53.Stepper)(({ theme }) => ({
5385
+ var StyledStepper = (0, import_joy55.styled)(import_joy55.Stepper)(({ theme }) => ({
5156
5386
  "--StepIndicator-size": "24px",
5157
5387
  "--Step-gap": theme.spacing(2),
5158
5388
  "--joy-palette-success-solidBg": "var(--joy-palette-success-400)",
5159
- [`& .${import_joy53.stepIndicatorClasses.root}`]: {
5389
+ [`& .${import_joy55.stepIndicatorClasses.root}`]: {
5160
5390
  fontSize: "var(--ceed-fontSize-xs)"
5161
5391
  }
5162
5392
  }));
5163
- var MotionStepper = (0, import_framer_motion28.motion)(StyledStepper);
5393
+ var MotionStepper = (0, import_framer_motion29.motion)(StyledStepper);
5164
5394
  function Stepper(props) {
5165
5395
  const {
5166
5396
  steps,
@@ -5170,30 +5400,30 @@ function Stepper(props) {
5170
5400
  inactiveLineColor = "neutral.300",
5171
5401
  activeStep
5172
5402
  } = props;
5173
- return /* @__PURE__ */ import_react41.default.createElement(
5403
+ return /* @__PURE__ */ import_react44.default.createElement(
5174
5404
  MotionStepper,
5175
5405
  {
5176
5406
  sx: (theme) => ({
5177
5407
  "--StepIndicator-size": "24px",
5178
5408
  "--Step-gap": theme.spacing(2),
5179
- [`& .${import_joy53.stepIndicatorClasses.root}`]: {
5409
+ [`& .${import_joy55.stepIndicatorClasses.root}`]: {
5180
5410
  fontSize: "var(--ceed-fontSize-xs)"
5181
5411
  },
5182
- [`& .${import_joy53.stepClasses.completed}`]: {
5412
+ [`& .${import_joy55.stepClasses.completed}`]: {
5183
5413
  "&::after": { bgcolor: activeLineColor },
5184
- [`& .${import_joy53.stepIndicatorClasses.root}`]: {
5414
+ [`& .${import_joy55.stepIndicatorClasses.root}`]: {
5185
5415
  bgcolor: activeColor
5186
5416
  }
5187
5417
  },
5188
- [`& .${import_joy53.stepClasses.active}`]: {
5418
+ [`& .${import_joy55.stepClasses.active}`]: {
5189
5419
  "&::after": { bgcolor: inactiveLineColor },
5190
- [`& .${import_joy53.stepIndicatorClasses.root}`]: {
5420
+ [`& .${import_joy55.stepIndicatorClasses.root}`]: {
5191
5421
  bgcolor: activeColor
5192
5422
  }
5193
5423
  },
5194
- [`& .${import_joy53.stepClasses.disabled}`]: {
5424
+ [`& .${import_joy55.stepClasses.disabled}`]: {
5195
5425
  "&::after": { bgcolor: inactiveLineColor },
5196
- [`& .${import_joy53.stepIndicatorClasses.root}`]: {
5426
+ [`& .${import_joy55.stepIndicatorClasses.root}`]: {
5197
5427
  bgcolor: inactiveColor
5198
5428
  }
5199
5429
  }
@@ -5204,16 +5434,16 @@ function Stepper(props) {
5204
5434
  const completed = activeStep > i + 1;
5205
5435
  const disabled = activeStep < i + 1;
5206
5436
  const hasContent = step.label || step.extraContent;
5207
- return /* @__PURE__ */ import_react41.default.createElement(
5437
+ return /* @__PURE__ */ import_react44.default.createElement(
5208
5438
  Step,
5209
5439
  {
5210
5440
  key: `step-${i}`,
5211
- indicator: /* @__PURE__ */ import_react41.default.createElement(StepIndicator, { variant: "solid", color: "primary" }, completed ? /* @__PURE__ */ import_react41.default.createElement(import_Check.default, null) : step.indicatorContent),
5441
+ indicator: /* @__PURE__ */ import_react44.default.createElement(StepIndicator, { variant: "solid", color: "primary" }, completed ? /* @__PURE__ */ import_react44.default.createElement(import_Check.default, null) : step.indicatorContent),
5212
5442
  active,
5213
5443
  completed,
5214
5444
  disabled
5215
5445
  },
5216
- hasContent && /* @__PURE__ */ import_react41.default.createElement(Stack_default, null, step.label && /* @__PURE__ */ import_react41.default.createElement(Typography_default, { level: "title-sm" }, step.label), step.extraContent && /* @__PURE__ */ import_react41.default.createElement(Typography_default, { level: "body-xs" }, step.extraContent))
5446
+ hasContent && /* @__PURE__ */ import_react44.default.createElement(Stack_default, null, step.label && /* @__PURE__ */ import_react44.default.createElement(Typography_default, { level: "title-sm" }, step.label), step.extraContent && /* @__PURE__ */ import_react44.default.createElement(Typography_default, { level: "body-xs" }, step.extraContent))
5217
5447
  );
5218
5448
  })
5219
5449
  );
@@ -5221,11 +5451,11 @@ function Stepper(props) {
5221
5451
  Stepper.displayName = "Stepper";
5222
5452
 
5223
5453
  // src/components/Switch/Switch.tsx
5224
- var import_react42 = __toESM(require("react"));
5225
- var import_joy54 = require("@mui/joy");
5226
- var import_framer_motion29 = require("framer-motion");
5227
- var MotionSwitch = (0, import_framer_motion29.motion)(import_joy54.Switch);
5228
- var StyledThumb = (0, import_joy54.styled)(import_framer_motion29.motion.div)({
5454
+ var import_react45 = __toESM(require("react"));
5455
+ var import_joy56 = require("@mui/joy");
5456
+ var import_framer_motion30 = require("framer-motion");
5457
+ var MotionSwitch = (0, import_framer_motion30.motion)(import_joy56.Switch);
5458
+ var StyledThumb = (0, import_joy56.styled)(import_framer_motion30.motion.div)({
5229
5459
  "--Icon-fontSize": "calc(var(--Switch-thumbSize) * 0.75)",
5230
5460
  display: "inline-flex",
5231
5461
  justifyContent: "center",
@@ -5238,19 +5468,19 @@ var StyledThumb = (0, import_joy54.styled)(import_framer_motion29.motion.div)({
5238
5468
  boxShadow: "var(--Switch-thumbShadow)",
5239
5469
  color: "var(--Switch-thumbColor)",
5240
5470
  backgroundColor: "var(--Switch-thumbBackground)",
5241
- [`&.${import_joy54.switchClasses.checked}`]: {
5471
+ [`&.${import_joy56.switchClasses.checked}`]: {
5242
5472
  left: "unset",
5243
5473
  right: "var(--Switch-thumbOffset)"
5244
5474
  }
5245
5475
  });
5246
- var Thumb = (props) => /* @__PURE__ */ import_react42.default.createElement(StyledThumb, { ...props, layout: true, transition: spring });
5476
+ var Thumb = (props) => /* @__PURE__ */ import_react45.default.createElement(StyledThumb, { ...props, layout: true, transition: spring });
5247
5477
  var spring = {
5248
5478
  type: "spring",
5249
5479
  stiffness: 700,
5250
5480
  damping: 30
5251
5481
  };
5252
5482
  var Switch = (props) => {
5253
- return /* @__PURE__ */ import_react42.default.createElement(
5483
+ return /* @__PURE__ */ import_react45.default.createElement(
5254
5484
  MotionSwitch,
5255
5485
  {
5256
5486
  ...props,
@@ -5264,32 +5494,32 @@ var Switch = (props) => {
5264
5494
  Switch.displayName = "Switch";
5265
5495
 
5266
5496
  // src/components/Tabs/Tabs.tsx
5267
- var import_react43 = __toESM(require("react"));
5268
- var import_joy55 = require("@mui/joy");
5269
- var StyledTabs = (0, import_joy55.styled)(import_joy55.Tabs)(({ theme }) => ({
5497
+ var import_react46 = __toESM(require("react"));
5498
+ var import_joy57 = require("@mui/joy");
5499
+ var StyledTabs = (0, import_joy57.styled)(import_joy57.Tabs)(({ theme }) => ({
5270
5500
  backgroundColor: theme.palette.background.body
5271
5501
  }));
5272
5502
  var Tabs = StyledTabs;
5273
5503
  Tabs.displayName = "Tabs";
5274
- var StyledTab = (0, import_joy55.styled)(import_joy55.Tab)(({ theme }) => ({
5504
+ var StyledTab = (0, import_joy57.styled)(import_joy57.Tab)(({ theme }) => ({
5275
5505
  gap: theme.spacing(2),
5276
- [`&:not(.${import_joy55.tabClasses.selected})`]: {
5506
+ [`&:not(.${import_joy57.tabClasses.selected})`]: {
5277
5507
  color: theme.palette.neutral[700]
5278
5508
  },
5279
- [`&.${import_joy55.tabClasses.variantPlain}`]: {
5509
+ [`&.${import_joy57.tabClasses.variantPlain}`]: {
5280
5510
  backgroundColor: theme.palette.background.body
5281
5511
  }
5282
5512
  }));
5283
- var Tab = (0, import_react43.forwardRef)(function Tab2({ startDecorator, endDecorator, children, ...props }, ref) {
5284
- return /* @__PURE__ */ import_react43.default.createElement(StyledTab, { ...props, ref }, startDecorator, children, endDecorator);
5513
+ var Tab = (0, import_react46.forwardRef)(function Tab2({ startDecorator, endDecorator, children, ...props }, ref) {
5514
+ return /* @__PURE__ */ import_react46.default.createElement(StyledTab, { ...props, ref }, startDecorator, children, endDecorator);
5285
5515
  });
5286
5516
  Tab.displayName = "Tab";
5287
- var TabList = import_joy55.TabList;
5288
- var TabPanel = import_joy55.TabPanel;
5517
+ var TabList = import_joy57.TabList;
5518
+ var TabPanel = import_joy57.TabPanel;
5289
5519
 
5290
5520
  // src/components/ThemeProvider/ThemeProvider.tsx
5291
- var import_react44 = __toESM(require("react"));
5292
- var import_joy56 = require("@mui/joy");
5521
+ var import_react47 = __toESM(require("react"));
5522
+ var import_joy58 = require("@mui/joy");
5293
5523
  var colorScheme = {
5294
5524
  palette: {
5295
5525
  danger: {
@@ -5342,7 +5572,7 @@ var colorScheme = {
5342
5572
  }
5343
5573
  }
5344
5574
  };
5345
- var defaultTheme = (0, import_joy56.extendTheme)({
5575
+ var defaultTheme = (0, import_joy58.extendTheme)({
5346
5576
  cssVarPrefix: "ceed",
5347
5577
  spacing: 4,
5348
5578
  breakpoints: {
@@ -5394,7 +5624,7 @@ var defaultTheme = (0, import_joy56.extendTheme)({
5394
5624
  },
5395
5625
  styleOverrides: {
5396
5626
  root: {
5397
- [`.${import_joy56.inputClasses.root}`]: {
5627
+ [`.${import_joy58.inputClasses.root}`]: {
5398
5628
  // NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
5399
5629
  "font-family": "monospace"
5400
5630
  }
@@ -5407,7 +5637,7 @@ var defaultTheme = (0, import_joy56.extendTheme)({
5407
5637
  },
5408
5638
  styleOverrides: {
5409
5639
  root: {
5410
- [`.${import_joy56.inputClasses.root}`]: {
5640
+ [`.${import_joy58.inputClasses.root}`]: {
5411
5641
  // NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
5412
5642
  "font-family": "monospace"
5413
5643
  }
@@ -5420,7 +5650,7 @@ var defaultTheme = (0, import_joy56.extendTheme)({
5420
5650
  },
5421
5651
  styleOverrides: {
5422
5652
  root: {
5423
- [`.${import_joy56.inputClasses.root}`]: {
5653
+ [`.${import_joy58.inputClasses.root}`]: {
5424
5654
  // NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
5425
5655
  "font-family": "monospace"
5426
5656
  }
@@ -5433,7 +5663,7 @@ var defaultTheme = (0, import_joy56.extendTheme)({
5433
5663
  },
5434
5664
  styleOverrides: {
5435
5665
  root: {
5436
- [`.${import_joy56.inputClasses.root}`]: {
5666
+ [`.${import_joy58.inputClasses.root}`]: {
5437
5667
  // NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
5438
5668
  "font-family": "monospace"
5439
5669
  }
@@ -5446,7 +5676,7 @@ var defaultTheme = (0, import_joy56.extendTheme)({
5446
5676
  },
5447
5677
  styleOverrides: {
5448
5678
  root: {
5449
- [`.${import_joy56.inputClasses.root}`]: {
5679
+ [`.${import_joy58.inputClasses.root}`]: {
5450
5680
  // NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
5451
5681
  "font-family": "monospace"
5452
5682
  }
@@ -5488,7 +5718,7 @@ var defaultTheme = (0, import_joy56.extendTheme)({
5488
5718
  outline: `${theme.palette.primary[500]} solid 2px`,
5489
5719
  outlineOffset: "-2px"
5490
5720
  },
5491
- [`& .${import_joy56.checkboxClasses.root}`]: {
5721
+ [`& .${import_joy58.checkboxClasses.root}`]: {
5492
5722
  verticalAlign: "middle"
5493
5723
  }
5494
5724
  })
@@ -5538,13 +5768,13 @@ var defaultTheme = (0, import_joy56.extendTheme)({
5538
5768
  });
5539
5769
  function ThemeProvider(props) {
5540
5770
  const theme = props.theme || defaultTheme;
5541
- return /* @__PURE__ */ import_react44.default.createElement(import_react44.default.Fragment, null, /* @__PURE__ */ import_react44.default.createElement(import_joy56.CssVarsProvider, { theme }, /* @__PURE__ */ import_react44.default.createElement(import_joy56.CssBaseline, null), props.children));
5771
+ return /* @__PURE__ */ import_react47.default.createElement(import_react47.default.Fragment, null, /* @__PURE__ */ import_react47.default.createElement(import_joy58.CssVarsProvider, { theme }, /* @__PURE__ */ import_react47.default.createElement(import_joy58.CssBaseline, null), props.children));
5542
5772
  }
5543
5773
  ThemeProvider.displayName = "ThemeProvider";
5544
5774
 
5545
5775
  // src/components/Uploader/Uploader.tsx
5546
- var import_react45 = __toESM(require("react"));
5547
- var import_joy57 = require("@mui/joy");
5776
+ var import_react48 = __toESM(require("react"));
5777
+ var import_joy59 = require("@mui/joy");
5548
5778
  var import_CloudUploadRounded = __toESM(require("@mui/icons-material/CloudUploadRounded"));
5549
5779
  var import_UploadFileRounded = __toESM(require("@mui/icons-material/UploadFileRounded"));
5550
5780
  var import_ClearRounded = __toESM(require("@mui/icons-material/ClearRounded"));
@@ -5566,7 +5796,7 @@ var esmFiles = {
5566
5796
  "@atlaskit/pragmatic-drag-and-drop/dist/esm/entry-point/prevent-unhandled.js"
5567
5797
  )
5568
5798
  };
5569
- var VisuallyHiddenInput = (0, import_joy57.styled)(import_joy57.Input)({
5799
+ var VisuallyHiddenInput = (0, import_joy59.styled)(import_joy59.Input)({
5570
5800
  width: "1px",
5571
5801
  height: "1px",
5572
5802
  overflow: "hidden",
@@ -5575,18 +5805,18 @@ var VisuallyHiddenInput = (0, import_joy57.styled)(import_joy57.Input)({
5575
5805
  clipPath: "inset(50%)",
5576
5806
  position: "absolute"
5577
5807
  });
5578
- var PreviewRoot = (0, import_joy57.styled)(Stack_default, {
5808
+ var PreviewRoot = (0, import_joy59.styled)(Stack_default, {
5579
5809
  name: "Uploader",
5580
5810
  slot: "PreviewRoot"
5581
5811
  })({});
5582
- var UploadCard = (0, import_joy57.styled)(Card, {
5812
+ var UploadCard = (0, import_joy59.styled)(Card, {
5583
5813
  name: "Uploader",
5584
5814
  slot: "UploadCard"
5585
5815
  })(({ theme }) => ({
5586
5816
  padding: theme.spacing(2.5),
5587
5817
  border: `1px solid ${theme.palette.neutral.outlinedBorder}`
5588
5818
  }));
5589
- var UploadFileIcon = (0, import_joy57.styled)(import_UploadFileRounded.default, {
5819
+ var UploadFileIcon = (0, import_joy59.styled)(import_UploadFileRounded.default, {
5590
5820
  name: "Uploader",
5591
5821
  slot: "UploadFileIcon"
5592
5822
  })(({ theme }) => ({
@@ -5594,7 +5824,7 @@ var UploadFileIcon = (0, import_joy57.styled)(import_UploadFileRounded.default,
5594
5824
  width: "32px",
5595
5825
  height: "32px"
5596
5826
  }));
5597
- var ClearIcon2 = (0, import_joy57.styled)(import_ClearRounded.default, {
5827
+ var ClearIcon2 = (0, import_joy59.styled)(import_ClearRounded.default, {
5598
5828
  name: "Uploader",
5599
5829
  slot: "ClearIcon"
5600
5830
  })(({ theme }) => ({
@@ -5620,15 +5850,15 @@ var getFileSize = (n) => {
5620
5850
  };
5621
5851
  var Preview = (props) => {
5622
5852
  const { files, uploaded, onDelete } = props;
5623
- return /* @__PURE__ */ import_react45.default.createElement(PreviewRoot, { gap: 1 }, [...uploaded, ...files].map((file) => /* @__PURE__ */ import_react45.default.createElement(UploadCard, { key: file.name, size: "sm", color: "neutral" }, /* @__PURE__ */ import_react45.default.createElement(Stack_default, { direction: "row", alignItems: "center", gap: 2 }, /* @__PURE__ */ import_react45.default.createElement(UploadFileIcon, null), /* @__PURE__ */ import_react45.default.createElement(Stack_default, { flex: "1" }, /* @__PURE__ */ import_react45.default.createElement(Typography_default, { level: "body-sm", textColor: "common.black" }, file.name), !!file.size && /* @__PURE__ */ import_react45.default.createElement(Typography_default, { level: "body-xs", fontWeight: "300", lineHeight: "1.33", textColor: "text.tertiary" }, getFileSize(file.size))), /* @__PURE__ */ import_react45.default.createElement(IconButton_default, { onClick: () => onDelete?.(file) }, /* @__PURE__ */ import_react45.default.createElement(ClearIcon2, null))))));
5853
+ return /* @__PURE__ */ import_react48.default.createElement(PreviewRoot, { gap: 1 }, [...uploaded, ...files].map((file) => /* @__PURE__ */ import_react48.default.createElement(UploadCard, { key: file.name, size: "sm", color: "neutral" }, /* @__PURE__ */ import_react48.default.createElement(Stack_default, { direction: "row", alignItems: "center", gap: 2 }, /* @__PURE__ */ import_react48.default.createElement(UploadFileIcon, null), /* @__PURE__ */ import_react48.default.createElement(Stack_default, { flex: "1" }, /* @__PURE__ */ import_react48.default.createElement(Typography_default, { level: "body-sm", textColor: "common.black" }, file.name), !!file.size && /* @__PURE__ */ import_react48.default.createElement(Typography_default, { level: "body-xs", fontWeight: "300", lineHeight: "1.33", textColor: "text.tertiary" }, getFileSize(file.size))), /* @__PURE__ */ import_react48.default.createElement(IconButton_default, { onClick: () => onDelete?.(file) }, /* @__PURE__ */ import_react48.default.createElement(ClearIcon2, null))))));
5624
5854
  };
5625
- var UploaderRoot = (0, import_joy57.styled)(Stack_default, {
5855
+ var UploaderRoot = (0, import_joy59.styled)(Stack_default, {
5626
5856
  name: "Uploader",
5627
5857
  slot: "root"
5628
5858
  })(({ theme }) => ({
5629
5859
  gap: theme.spacing(2)
5630
5860
  }));
5631
- var FileDropZone = (0, import_joy57.styled)(Sheet_default, {
5861
+ var FileDropZone = (0, import_joy59.styled)(Sheet_default, {
5632
5862
  name: "Uploader",
5633
5863
  slot: "dropZone",
5634
5864
  shouldForwardProp: (prop) => prop !== "error"
@@ -5644,7 +5874,7 @@ var FileDropZone = (0, import_joy57.styled)(Sheet_default, {
5644
5874
  backgroundColor: theme.palette.background.surface,
5645
5875
  border: error ? `1px solid ${theme.palette.danger.outlinedBorder}` : state === "idle" ? `1px solid ${theme.palette.neutral.outlinedBorder}` : `1px solid ${theme.palette.primary.outlinedBorder}`
5646
5876
  }));
5647
- var UploaderIcon = (0, import_joy57.styled)(import_CloudUploadRounded.default, {
5877
+ var UploaderIcon = (0, import_joy59.styled)(import_CloudUploadRounded.default, {
5648
5878
  name: "Uploader",
5649
5879
  slot: "iconContainer",
5650
5880
  shouldForwardProp: (prop) => prop !== "error"
@@ -5653,7 +5883,7 @@ var UploaderIcon = (0, import_joy57.styled)(import_CloudUploadRounded.default, {
5653
5883
  width: "32px",
5654
5884
  height: "32px"
5655
5885
  }));
5656
- var Uploader = import_react45.default.memo(
5886
+ var Uploader = import_react48.default.memo(
5657
5887
  (props) => {
5658
5888
  const {
5659
5889
  accept,
@@ -5668,14 +5898,14 @@ var Uploader = import_react45.default.memo(
5668
5898
  disabled,
5669
5899
  onDelete
5670
5900
  } = props;
5671
- const dropZoneRef = (0, import_react45.useRef)(null);
5672
- const inputRef = (0, import_react45.useRef)(null);
5673
- const [errorText, setErrorText] = (0, import_react45.useState)();
5674
- const [files, setFiles] = (0, import_react45.useState)([]);
5675
- const [uploaded, setUploaded] = (0, import_react45.useState)(props.uploaded || []);
5676
- const [previewState, setPreviewState] = (0, import_react45.useState)("idle");
5677
- const accepts = (0, import_react45.useMemo)(() => accept.split(",").map((accept2) => accept2.trim()), [accept]);
5678
- const parsedAccepts = (0, import_react45.useMemo)(
5901
+ const dropZoneRef = (0, import_react48.useRef)(null);
5902
+ const inputRef = (0, import_react48.useRef)(null);
5903
+ const [errorText, setErrorText] = (0, import_react48.useState)();
5904
+ const [files, setFiles] = (0, import_react48.useState)([]);
5905
+ const [uploaded, setUploaded] = (0, import_react48.useState)(props.uploaded || []);
5906
+ const [previewState, setPreviewState] = (0, import_react48.useState)("idle");
5907
+ const accepts = (0, import_react48.useMemo)(() => accept.split(",").map((accept2) => accept2.trim()), [accept]);
5908
+ const parsedAccepts = (0, import_react48.useMemo)(
5679
5909
  () => accepts.flatMap((type) => {
5680
5910
  if (["image/*", "video/*", "audio/*"].includes(type)) {
5681
5911
  return ALL_EXTENSIONS_BY_TYPE[type];
@@ -5684,7 +5914,7 @@ var Uploader = import_react45.default.memo(
5684
5914
  }),
5685
5915
  [accepts]
5686
5916
  );
5687
- const helperText = (0, import_react45.useMemo)(() => {
5917
+ const helperText = (0, import_react48.useMemo)(() => {
5688
5918
  const [allAcceptedTypes, acceptedTypes] = [
5689
5919
  accepts.filter((accept2) => ["image/*", "video/*", "audio/*"].includes(accept2)).map((accept2) => {
5690
5920
  const [type] = accept2.split("/");
@@ -5711,12 +5941,12 @@ var Uploader = import_react45.default.memo(
5711
5941
  }
5712
5942
  return helperTexts.join(", ");
5713
5943
  }, [accepts, maxFileTotalSize, maxCount]);
5714
- const error = (0, import_react45.useMemo)(() => !!errorText || props.error, [props.error, errorText]);
5715
- const showDropZone = (0, import_react45.useMemo)(
5944
+ const error = (0, import_react48.useMemo)(() => !!errorText || props.error, [props.error, errorText]);
5945
+ const showDropZone = (0, import_react48.useMemo)(
5716
5946
  () => !maxCount || maxCount && [...uploaded, ...files].length !== maxCount,
5717
5947
  [files, maxCount, uploaded]
5718
5948
  );
5719
- const addFiles = (0, import_react45.useCallback)(
5949
+ const addFiles = (0, import_react48.useCallback)(
5720
5950
  (uploads) => {
5721
5951
  try {
5722
5952
  const types = parsedAccepts.map((type) => type.replace(".", "")) || [];
@@ -5761,7 +5991,7 @@ var Uploader = import_react45.default.memo(
5761
5991
  },
5762
5992
  [files, uploaded, maxCount, parsedAccepts, maxFileSize, maxFileTotalSize, name, onChange]
5763
5993
  );
5764
- (0, import_react45.useEffect)(() => {
5994
+ (0, import_react48.useEffect)(() => {
5765
5995
  if (!dropZoneRef.current || disabled) {
5766
5996
  return;
5767
5997
  }
@@ -5799,7 +6029,7 @@ var Uploader = import_react45.default.memo(
5799
6029
  );
5800
6030
  return () => cleanup?.();
5801
6031
  }, [disabled, addFiles]);
5802
- (0, import_react45.useEffect)(() => {
6032
+ (0, import_react48.useEffect)(() => {
5803
6033
  if (inputRef.current && minCount) {
5804
6034
  if (files.length < minCount) {
5805
6035
  inputRef.current.setCustomValidity(`At least ${minCount} files are required.`);
@@ -5808,14 +6038,14 @@ var Uploader = import_react45.default.memo(
5808
6038
  }
5809
6039
  }
5810
6040
  }, [inputRef, files, minCount]);
5811
- const handleFileChanged = (0, import_react45.useCallback)(
6041
+ const handleFileChanged = (0, import_react48.useCallback)(
5812
6042
  (event) => {
5813
6043
  const files2 = Array.from(event.target.files || []);
5814
6044
  addFiles(files2);
5815
6045
  },
5816
6046
  [addFiles]
5817
6047
  );
5818
- const handleDeleteFile = (0, import_react45.useCallback)(
6048
+ const handleDeleteFile = (0, import_react48.useCallback)(
5819
6049
  (deletedFile) => {
5820
6050
  if (deletedFile instanceof File) {
5821
6051
  setFiles((current) => {
@@ -5835,10 +6065,10 @@ var Uploader = import_react45.default.memo(
5835
6065
  },
5836
6066
  [name, onChange, onDelete]
5837
6067
  );
5838
- const handleUploaderButtonClick = (0, import_react45.useCallback)(() => {
6068
+ const handleUploaderButtonClick = (0, import_react48.useCallback)(() => {
5839
6069
  inputRef.current?.click();
5840
6070
  }, []);
5841
- const uploader = /* @__PURE__ */ import_react45.default.createElement(
6071
+ const uploader = /* @__PURE__ */ import_react48.default.createElement(
5842
6072
  FileDropZone,
5843
6073
  {
5844
6074
  state: previewState,
@@ -5846,8 +6076,8 @@ var Uploader = import_react45.default.memo(
5846
6076
  ref: dropZoneRef,
5847
6077
  onClick: handleUploaderButtonClick
5848
6078
  },
5849
- /* @__PURE__ */ import_react45.default.createElement(Stack_default, { alignItems: "center", gap: 1 }, /* @__PURE__ */ import_react45.default.createElement(UploaderIcon, { state: previewState, error: !!(error || errorText) })),
5850
- /* @__PURE__ */ import_react45.default.createElement(
6079
+ /* @__PURE__ */ import_react48.default.createElement(Stack_default, { alignItems: "center", gap: 1 }, /* @__PURE__ */ import_react48.default.createElement(UploaderIcon, { state: previewState, error: !!(error || errorText) })),
6080
+ /* @__PURE__ */ import_react48.default.createElement(
5851
6081
  VisuallyHiddenInput,
5852
6082
  {
5853
6083
  disabled,
@@ -5870,7 +6100,7 @@ var Uploader = import_react45.default.memo(
5870
6100
  }
5871
6101
  )
5872
6102
  );
5873
- return /* @__PURE__ */ import_react45.default.createElement(UploaderRoot, null, showDropZone && /* @__PURE__ */ import_react45.default.createElement(FormControl_default, { size, error: !!(error || errorText), disabled, required: !!minCount }, label && /* @__PURE__ */ import_react45.default.createElement(FormLabel_default, null, label), uploader, /* @__PURE__ */ import_react45.default.createElement(FormHelperText_default, null, /* @__PURE__ */ import_react45.default.createElement(Stack_default, null, errorText && /* @__PURE__ */ import_react45.default.createElement("div", null, errorText), /* @__PURE__ */ import_react45.default.createElement("div", null, helperText)))), [...uploaded, ...files].length > 0 && /* @__PURE__ */ import_react45.default.createElement(Preview, { files, uploaded, onDelete: handleDeleteFile }));
6103
+ return /* @__PURE__ */ import_react48.default.createElement(UploaderRoot, null, showDropZone && /* @__PURE__ */ import_react48.default.createElement(FormControl_default, { size, error: !!(error || errorText), disabled, required: !!minCount }, label && /* @__PURE__ */ import_react48.default.createElement(FormLabel_default, null, label), uploader, /* @__PURE__ */ import_react48.default.createElement(FormHelperText_default, null, /* @__PURE__ */ import_react48.default.createElement(Stack_default, null, errorText && /* @__PURE__ */ import_react48.default.createElement("div", null, errorText), /* @__PURE__ */ import_react48.default.createElement("div", null, helperText)))), [...uploaded, ...files].length > 0 && /* @__PURE__ */ import_react48.default.createElement(Preview, { files, uploaded, onDelete: handleDeleteFile }));
5874
6104
  }
5875
6105
  );
5876
6106
  Uploader.displayName = "Uploader";