@ceed/ads 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,17 +85,17 @@ __export(index_exports, {
85
85
  AccordionSummary: () => AccordionSummary,
86
86
  Accordions: () => Accordions,
87
87
  Alert: () => Alert,
88
- AspectRatio: () => import_joy67.AspectRatio,
88
+ AspectRatio: () => import_joy69.AspectRatio,
89
89
  Autocomplete: () => Autocomplete,
90
- AutocompleteListbox: () => import_joy67.AutocompleteListbox,
91
- AutocompleteOption: () => import_joy67.AutocompleteOption,
90
+ AutocompleteListbox: () => import_joy69.AutocompleteListbox,
91
+ AutocompleteOption: () => import_joy69.AutocompleteOption,
92
92
  Avatar: () => Avatar,
93
93
  AvatarGroup: () => import_joy11.AvatarGroup,
94
- Badge: () => import_joy67.Badge,
94
+ Badge: () => import_joy69.Badge,
95
95
  Box: () => Box,
96
96
  Breadcrumbs: () => Breadcrumbs,
97
97
  Button: () => Button,
98
- ButtonGroup: () => import_joy67.ButtonGroup,
98
+ ButtonGroup: () => import_joy69.ButtonGroup,
99
99
  Calendar: () => Calendar,
100
100
  Card: () => Card,
101
101
  CardActions: () => CardActions,
@@ -104,9 +104,9 @@ __export(index_exports, {
104
104
  CardOverflow: () => CardOverflow,
105
105
  Checkbox: () => Checkbox,
106
106
  Chip: () => Chip,
107
- CircularProgress: () => import_joy67.CircularProgress,
107
+ CircularProgress: () => import_joy69.CircularProgress,
108
108
  Container: () => Container,
109
- CssBaseline: () => import_joy66.CssBaseline,
109
+ CssBaseline: () => import_joy68.CssBaseline,
110
110
  CurrencyInput: () => CurrencyInput,
111
111
  DataTable: () => DataTable,
112
112
  DatePicker: () => DatePicker,
@@ -116,27 +116,27 @@ __export(index_exports, {
116
116
  DialogFrame: () => DialogFrame,
117
117
  DialogTitle: () => DialogTitle,
118
118
  Divider: () => Divider,
119
- Drawer: () => import_joy67.Drawer,
119
+ Drawer: () => import_joy69.Drawer,
120
120
  Dropdown: () => import_joy14.Dropdown,
121
121
  FilterMenu: () => FilterMenu,
122
122
  FormControl: () => FormControl,
123
123
  FormHelperText: () => FormHelperText,
124
124
  FormLabel: () => FormLabel,
125
- Grid: () => import_joy53.Grid,
125
+ Grid: () => import_joy55.Grid,
126
126
  IconButton: () => IconButton,
127
127
  IconMenuButton: () => IconMenuButton,
128
128
  InfoSign: () => InfoSign,
129
129
  Input: () => Input,
130
130
  InsetDrawer: () => InsetDrawer,
131
- LinearProgress: () => import_joy67.LinearProgress,
132
- Link: () => import_joy67.Link,
133
- List: () => import_joy67.List,
134
- ListDivider: () => import_joy67.ListDivider,
135
- ListItem: () => import_joy67.ListItem,
136
- ListItemButton: () => import_joy67.ListItemButton,
137
- ListItemContent: () => import_joy67.ListItemContent,
138
- ListItemDecorator: () => import_joy67.ListItemDecorator,
139
- ListSubheader: () => import_joy67.ListSubheader,
131
+ LinearProgress: () => import_joy69.LinearProgress,
132
+ Link: () => import_joy69.Link,
133
+ List: () => import_joy69.List,
134
+ ListDivider: () => import_joy69.ListDivider,
135
+ ListItem: () => import_joy69.ListItem,
136
+ ListItemButton: () => import_joy69.ListItemButton,
137
+ ListItemContent: () => import_joy69.ListItemContent,
138
+ ListItemDecorator: () => import_joy69.ListItemDecorator,
139
+ ListSubheader: () => import_joy69.ListSubheader,
140
140
  Markdown: () => Markdown,
141
141
  Menu: () => Menu,
142
142
  MenuButton: () => MenuButton,
@@ -160,11 +160,11 @@ __export(index_exports, {
160
160
  RadioList: () => RadioList,
161
161
  Select: () => Select,
162
162
  Sheet: () => Sheet,
163
- Skeleton: () => import_joy67.Skeleton,
164
- Slider: () => import_joy67.Slider,
163
+ Skeleton: () => import_joy69.Skeleton,
164
+ Slider: () => import_joy69.Slider,
165
165
  Stack: () => import_joy3.Stack,
166
166
  Step: () => Step,
167
- StepButton: () => import_joy67.StepButton,
167
+ StepButton: () => import_joy69.StepButton,
168
168
  StepIndicator: () => StepIndicator,
169
169
  Stepper: () => Stepper,
170
170
  Switch: () => Switch,
@@ -180,84 +180,84 @@ __export(index_exports, {
180
180
  Tooltip: () => Tooltip,
181
181
  Typography: () => Typography,
182
182
  Uploader: () => Uploader,
183
- accordionClasses: () => import_joy67.accordionClasses,
184
- accordionDetailsClasses: () => import_joy67.accordionDetailsClasses,
185
- accordionSummaryClasses: () => import_joy67.accordionSummaryClasses,
186
- accordionsClasses: () => import_joy67.accordionGroupClasses,
187
- alertClasses: () => import_joy67.alertClasses,
188
- aspectRatioClasses: () => import_joy67.aspectRatioClasses,
189
- autocompleteClasses: () => import_joy67.autocompleteClasses,
190
- autocompleteListboxClasses: () => import_joy67.autocompleteListboxClasses,
191
- autocompleteOptionClasses: () => import_joy67.autocompleteOptionClasses,
192
- avatarClasses: () => import_joy67.avatarClasses,
193
- avatarGroupClasses: () => import_joy67.avatarGroupClasses,
194
- badgeClasses: () => import_joy67.badgeClasses,
195
- boxClasses: () => import_joy67.boxClasses,
196
- breadcrumbsClasses: () => import_joy67.breadcrumbsClasses,
197
- buttonClasses: () => import_joy67.buttonClasses,
198
- cardActionsClasses: () => import_joy67.cardActionsClasses,
199
- cardClasses: () => import_joy67.cardClasses,
200
- cardContentClasses: () => import_joy67.cardContentClasses,
201
- cardCoverClasses: () => import_joy67.cardCoverClasses,
202
- cardOverflowClasses: () => import_joy67.cardOverflowClasses,
203
- checkboxClasses: () => import_joy67.checkboxClasses,
204
- chipClasses: () => import_joy67.chipClasses,
205
- circularProgressClasses: () => import_joy67.circularProgressClasses,
206
- dialogActionsClasses: () => import_joy67.dialogActionsClasses,
207
- dialogContentClasses: () => import_joy67.dialogContentClasses,
208
- dialogTitleClasses: () => import_joy67.dialogTitleClasses,
209
- dividerClasses: () => import_joy67.dividerClasses,
210
- drawerClasses: () => import_joy67.drawerClasses,
211
- extendTheme: () => import_joy66.extendTheme,
212
- formControlClasses: () => import_joy67.formControlClasses,
213
- formHelperTextClasses: () => import_joy67.formHelperTextClasses,
214
- formLabelClasses: () => import_joy67.formLabelClasses,
215
- gridClasses: () => import_joy67.gridClasses,
216
- iconButtonClasses: () => import_joy67.iconButtonClasses,
217
- inputClasses: () => import_joy67.inputClasses,
218
- linearProgressClasses: () => import_joy67.linearProgressClasses,
219
- linkClasses: () => import_joy67.linkClasses,
220
- listClasses: () => import_joy67.listClasses,
221
- listDividerClasses: () => import_joy67.listDividerClasses,
222
- listItemButtonClasses: () => import_joy67.listItemButtonClasses,
223
- listItemClasses: () => import_joy67.listItemClasses,
224
- listItemContentClasses: () => import_joy67.listItemContentClasses,
225
- listItemDecoratorClasses: () => import_joy67.listItemDecoratorClasses,
226
- listSubheaderClasses: () => import_joy67.listSubheaderClasses,
227
- menuButtonClasses: () => import_joy67.menuButtonClasses,
228
- menuClasses: () => import_joy67.menuClasses,
229
- menuItemClasses: () => import_joy67.menuItemClasses,
230
- modalClasses: () => import_joy67.modalClasses,
231
- modalCloseClasses: () => import_joy67.modalCloseClasses,
232
- modalDialogClasses: () => import_joy67.modalDialogClasses,
233
- modalOverflowClasses: () => import_joy67.modalOverflowClasses,
234
- optionClasses: () => import_joy67.optionClasses,
235
- radioClasses: () => import_joy67.radioClasses,
236
- radioGroupClasses: () => import_joy67.radioGroupClasses,
237
- selectClasses: () => import_joy67.selectClasses,
238
- sheetClasses: () => import_joy67.sheetClasses,
239
- skeletonClasses: () => import_joy67.skeletonClasses,
240
- sliderClasses: () => import_joy67.sliderClasses,
241
- stackClasses: () => import_joy67.stackClasses,
242
- stepButtonClasses: () => import_joy67.stepButtonClasses,
243
- stepClasses: () => import_joy67.stepClasses,
244
- stepperClasses: () => import_joy67.stepperClasses,
245
- styled: () => import_joy67.styled,
246
- switchClasses: () => import_joy67.switchClasses,
247
- tabListClasses: () => import_joy67.tabListClasses,
248
- tabPanelClasses: () => import_joy67.tabPanelClasses,
249
- tableClasses: () => import_joy67.tableClasses,
250
- tabsClasses: () => import_joy67.tabsClasses,
251
- textareaClasses: () => import_joy67.textareaClasses,
183
+ accordionClasses: () => import_joy69.accordionClasses,
184
+ accordionDetailsClasses: () => import_joy69.accordionDetailsClasses,
185
+ accordionSummaryClasses: () => import_joy69.accordionSummaryClasses,
186
+ accordionsClasses: () => import_joy69.accordionGroupClasses,
187
+ alertClasses: () => import_joy69.alertClasses,
188
+ aspectRatioClasses: () => import_joy69.aspectRatioClasses,
189
+ autocompleteClasses: () => import_joy69.autocompleteClasses,
190
+ autocompleteListboxClasses: () => import_joy69.autocompleteListboxClasses,
191
+ autocompleteOptionClasses: () => import_joy69.autocompleteOptionClasses,
192
+ avatarClasses: () => import_joy69.avatarClasses,
193
+ avatarGroupClasses: () => import_joy69.avatarGroupClasses,
194
+ badgeClasses: () => import_joy69.badgeClasses,
195
+ boxClasses: () => import_joy69.boxClasses,
196
+ breadcrumbsClasses: () => import_joy69.breadcrumbsClasses,
197
+ buttonClasses: () => import_joy69.buttonClasses,
198
+ cardActionsClasses: () => import_joy69.cardActionsClasses,
199
+ cardClasses: () => import_joy69.cardClasses,
200
+ cardContentClasses: () => import_joy69.cardContentClasses,
201
+ cardCoverClasses: () => import_joy69.cardCoverClasses,
202
+ cardOverflowClasses: () => import_joy69.cardOverflowClasses,
203
+ checkboxClasses: () => import_joy69.checkboxClasses,
204
+ chipClasses: () => import_joy69.chipClasses,
205
+ circularProgressClasses: () => import_joy69.circularProgressClasses,
206
+ dialogActionsClasses: () => import_joy69.dialogActionsClasses,
207
+ dialogContentClasses: () => import_joy69.dialogContentClasses,
208
+ dialogTitleClasses: () => import_joy69.dialogTitleClasses,
209
+ dividerClasses: () => import_joy69.dividerClasses,
210
+ drawerClasses: () => import_joy69.drawerClasses,
211
+ extendTheme: () => import_joy68.extendTheme,
212
+ formControlClasses: () => import_joy69.formControlClasses,
213
+ formHelperTextClasses: () => import_joy69.formHelperTextClasses,
214
+ formLabelClasses: () => import_joy69.formLabelClasses,
215
+ gridClasses: () => import_joy69.gridClasses,
216
+ iconButtonClasses: () => import_joy69.iconButtonClasses,
217
+ inputClasses: () => import_joy69.inputClasses,
218
+ linearProgressClasses: () => import_joy69.linearProgressClasses,
219
+ linkClasses: () => import_joy69.linkClasses,
220
+ listClasses: () => import_joy69.listClasses,
221
+ listDividerClasses: () => import_joy69.listDividerClasses,
222
+ listItemButtonClasses: () => import_joy69.listItemButtonClasses,
223
+ listItemClasses: () => import_joy69.listItemClasses,
224
+ listItemContentClasses: () => import_joy69.listItemContentClasses,
225
+ listItemDecoratorClasses: () => import_joy69.listItemDecoratorClasses,
226
+ listSubheaderClasses: () => import_joy69.listSubheaderClasses,
227
+ menuButtonClasses: () => import_joy69.menuButtonClasses,
228
+ menuClasses: () => import_joy69.menuClasses,
229
+ menuItemClasses: () => import_joy69.menuItemClasses,
230
+ modalClasses: () => import_joy69.modalClasses,
231
+ modalCloseClasses: () => import_joy69.modalCloseClasses,
232
+ modalDialogClasses: () => import_joy69.modalDialogClasses,
233
+ modalOverflowClasses: () => import_joy69.modalOverflowClasses,
234
+ optionClasses: () => import_joy69.optionClasses,
235
+ radioClasses: () => import_joy69.radioClasses,
236
+ radioGroupClasses: () => import_joy69.radioGroupClasses,
237
+ selectClasses: () => import_joy69.selectClasses,
238
+ sheetClasses: () => import_joy69.sheetClasses,
239
+ skeletonClasses: () => import_joy69.skeletonClasses,
240
+ sliderClasses: () => import_joy69.sliderClasses,
241
+ stackClasses: () => import_joy69.stackClasses,
242
+ stepButtonClasses: () => import_joy69.stepButtonClasses,
243
+ stepClasses: () => import_joy69.stepClasses,
244
+ stepperClasses: () => import_joy69.stepperClasses,
245
+ styled: () => import_joy69.styled,
246
+ switchClasses: () => import_joy69.switchClasses,
247
+ tabListClasses: () => import_joy69.tabListClasses,
248
+ tabPanelClasses: () => import_joy69.tabPanelClasses,
249
+ tableClasses: () => import_joy69.tableClasses,
250
+ tabsClasses: () => import_joy69.tabsClasses,
251
+ textareaClasses: () => import_joy69.textareaClasses,
252
252
  theme: () => defaultTheme,
253
- tooltipClasses: () => import_joy67.tooltipClasses,
254
- typographyClasses: () => import_joy67.typographyClasses,
255
- useColorScheme: () => import_joy67.useColorScheme,
256
- useTheme: () => import_joy67.useTheme,
257
- useThemeProps: () => import_joy67.useThemeProps
253
+ tooltipClasses: () => import_joy69.tooltipClasses,
254
+ typographyClasses: () => import_joy69.typographyClasses,
255
+ useColorScheme: () => import_joy69.useColorScheme,
256
+ useTheme: () => import_joy69.useTheme,
257
+ useThemeProps: () => import_joy69.useThemeProps
258
258
  });
259
259
  module.exports = __toCommonJS(index_exports);
260
- var import_joy67 = require("@mui/joy");
260
+ var import_joy69 = require("@mui/joy");
261
261
 
262
262
  // src/components/Accordions/Accordions.tsx
263
263
  var import_react = __toESM(require("react"));
@@ -1922,91 +1922,261 @@ var CurrencyInput = import_react17.default.forwardRef(function CurrencyInput2(in
1922
1922
  var CurrencyInput_default = CurrencyInput;
1923
1923
 
1924
1924
  // src/components/DataTable/DataTable.tsx
1925
- var import_react25 = __toESM(require("react"));
1925
+ var import_react28 = __toESM(require("react"));
1926
1926
  var import_react_virtual2 = require("@tanstack/react-virtual");
1927
- var import_joy33 = require("@mui/joy");
1928
- var import_ArrowUpwardRounded = __toESM(require("@mui/icons-material/ArrowUpwardRounded"));
1929
-
1930
- // src/components/Sheet/Sheet.tsx
1931
- var import_joy24 = require("@mui/joy");
1932
- var import_framer_motion16 = require("framer-motion");
1933
- var MotionSheet = (0, import_framer_motion16.motion)(import_joy24.Sheet);
1934
- var Sheet = MotionSheet;
1935
- Sheet.displayName = "Sheet";
1936
-
1937
- // src/components/Sheet/index.ts
1938
- var Sheet_default = Sheet;
1939
1927
 
1940
- // src/components/Table/Table.tsx
1941
- var import_react18 = __toESM(require("react"));
1942
- var import_joy25 = require("@mui/joy");
1943
- var Table = (props) => {
1944
- const { children, ...inheritProps } = props;
1945
- return /* @__PURE__ */ import_react18.default.createElement(import_joy25.Table, { ...inheritProps }, children);
1946
- };
1947
- Table.displayName = "Table";
1948
- function TableHead(props) {
1949
- const {
1950
- headCells,
1951
- showCheckbox,
1952
- onCheckboxChange,
1953
- slots: { checkbox: RenderCheckbox = Checkbox_default } = {},
1954
- slotProps: { checkbox: checkboxProps = {} } = {}
1955
- } = props;
1956
- return /* @__PURE__ */ import_react18.default.createElement("thead", null, /* @__PURE__ */ import_react18.default.createElement("tr", null, showCheckbox && /* @__PURE__ */ import_react18.default.createElement(
1957
- "th",
1958
- {
1959
- style: {
1960
- width: "40px",
1961
- textAlign: "center"
1962
- }
1963
- },
1964
- /* @__PURE__ */ import_react18.default.createElement(RenderCheckbox, { onChange: onCheckboxChange, ...checkboxProps })
1965
- ), headCells.map((headCell) => /* @__PURE__ */ import_react18.default.createElement(
1966
- "th",
1967
- {
1968
- key: headCell.label,
1969
- style: {
1970
- width: headCell.width,
1971
- minWidth: headCell.minWidth,
1972
- maxWidth: headCell.maxWidth,
1973
- textAlign: headCell.numeric ? "right" : "left"
1974
- }
1975
- },
1976
- headCell.label
1977
- ))));
1928
+ // src/components/DataTable/utils.ts
1929
+ function extractFieldsFromGroupingModel(items) {
1930
+ const fields = /* @__PURE__ */ new Set();
1931
+ for (const item of items) {
1932
+ if ("groupId" in item) {
1933
+ const children = Array.isArray(item.children) ? item.children : [item.children];
1934
+ const childFields = extractFieldsFromGroupingModel(children);
1935
+ childFields.forEach((field) => fields.add(field));
1936
+ } else {
1937
+ fields.add(item.field);
1938
+ }
1939
+ }
1940
+ return fields;
1978
1941
  }
1979
- TableHead.displayName = "TableHead";
1980
- function TableBody(props) {
1981
- const {
1982
- rows,
1983
- cellOrder,
1984
- rowOptions,
1985
- showCheckbox,
1986
- onCheckboxChange,
1987
- slots: { checkbox: RenderCheckbox = Checkbox_default } = {},
1988
- slotProps: { checkbox: checkboxProps = {} } = {}
1989
- } = props;
1990
- 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(
1991
- "td",
1992
- {
1993
- style: {
1994
- textAlign: "center"
1942
+ function reorderColumnsByGroupingModel(columns, columnGroupingModel) {
1943
+ const fieldsInGroupingModel = extractFieldsFromGroupingModel(columnGroupingModel);
1944
+ const orderedFields = [];
1945
+ function collectFieldsInOrder(items) {
1946
+ for (const item of items) {
1947
+ if ("groupId" in item) {
1948
+ const children = Array.isArray(item.children) ? item.children : [item.children];
1949
+ collectFieldsInOrder(children);
1950
+ } else {
1951
+ if (!orderedFields.includes(item.field)) {
1952
+ orderedFields.push(item.field);
1953
+ }
1995
1954
  }
1996
- },
1997
- /* @__PURE__ */ import_react18.default.createElement(RenderCheckbox, { onChange: (event) => onCheckboxChange?.(event, rowIndex), ...checkboxProps })
1998
- ), cellOrder.map((cellKey) => /* @__PURE__ */ import_react18.default.createElement(
1999
- "td",
2000
- {
2001
- key: cellKey,
2002
- style: {
2003
- textAlign: rowOptions?.[cellKey]?.numeric ? "right" : "left"
1955
+ }
1956
+ }
1957
+ collectFieldsInOrder(columnGroupingModel);
1958
+ const columnMap = new Map(columns.map((col) => [col.field, col]));
1959
+ const reorderedColumns = [];
1960
+ for (const field of orderedFields) {
1961
+ const column = columnMap.get(field);
1962
+ if (column) {
1963
+ reorderedColumns.push(column);
1964
+ }
1965
+ }
1966
+ for (const column of columns) {
1967
+ if (!fieldsInGroupingModel.has(column.field)) {
1968
+ reorderedColumns.push(column);
1969
+ }
1970
+ }
1971
+ return reorderedColumns;
1972
+ }
1973
+ function flattenColumnGroups(items, groupPath = [], columnIndex = { current: 0 }) {
1974
+ const result = [];
1975
+ for (const item of items) {
1976
+ if ("groupId" in item) {
1977
+ const newPath = [...groupPath, item.groupId];
1978
+ const children = Array.isArray(item.children) ? item.children : [item.children];
1979
+ result.push(...flattenColumnGroups(children, newPath, columnIndex));
1980
+ } else {
1981
+ result.push({
1982
+ ...item,
1983
+ groupPath,
1984
+ columnIndex: columnIndex.current++
1985
+ });
1986
+ }
1987
+ }
1988
+ return result;
1989
+ }
1990
+ function calculateColumnGroups(columnGroupingModel, columns) {
1991
+ const fieldsInGroupingModel = extractFieldsFromGroupingModel(columnGroupingModel);
1992
+ const flattenedColumns = flattenColumnGroups(columnGroupingModel);
1993
+ const columnIndexMap = new Map(flattenedColumns.map((col) => [col.field, col.columnIndex]));
1994
+ const processedGroups = /* @__PURE__ */ new Map();
1995
+ const groupsByLevel = [];
1996
+ let maxLevel = 0;
1997
+ function processGroup(items, level, parentGroupId) {
1998
+ let minIndex = Infinity;
1999
+ let maxIndex = -Infinity;
2000
+ for (const item of items) {
2001
+ if ("groupId" in item) {
2002
+ const groupKey = parentGroupId ? `${parentGroupId}.${item.groupId}` : item.groupId;
2003
+ if (!processedGroups.has(groupKey)) {
2004
+ const children = Array.isArray(item.children) ? item.children : [item.children];
2005
+ const { startIndex, colspan } = processGroup(children, level + 1, groupKey);
2006
+ const group = {
2007
+ groupId: item.groupId,
2008
+ headerName: item.headerName,
2009
+ headerClassName: item.headerClassName,
2010
+ colspan,
2011
+ level,
2012
+ startIndex
2013
+ };
2014
+ processedGroups.set(groupKey, group);
2015
+ if (!groupsByLevel[level]) {
2016
+ groupsByLevel[level] = [];
2017
+ }
2018
+ groupsByLevel[level].push(group);
2019
+ maxLevel = Math.max(maxLevel, level);
2020
+ minIndex = Math.min(minIndex, startIndex);
2021
+ maxIndex = Math.max(maxIndex, startIndex + colspan - 1);
2022
+ }
2023
+ } else {
2024
+ const columnIndex = columnIndexMap.get(item.field);
2025
+ if (columnIndex !== void 0) {
2026
+ minIndex = Math.min(minIndex, columnIndex);
2027
+ maxIndex = Math.max(maxIndex, columnIndex);
2028
+ }
2004
2029
  }
2005
- },
2006
- row[cellKey]
2007
- )))));
2030
+ }
2031
+ return {
2032
+ startIndex: minIndex === Infinity ? 0 : minIndex,
2033
+ colspan: maxIndex === -Infinity ? 0 : maxIndex - minIndex + 1
2034
+ };
2035
+ }
2036
+ processGroup(columnGroupingModel, 0);
2037
+ groupsByLevel.forEach((level) => {
2038
+ level.sort((a, b) => a.startIndex - b.startIndex);
2039
+ });
2040
+ return { groups: groupsByLevel, maxLevel, fieldsInGroupingModel };
2008
2041
  }
2009
- TableBody.displayName = "TableBody";
2042
+ function getTextAlign(props) {
2043
+ return !props.editMode && ["number", "date", "currency"].includes(props.type || "") ? "end" : "start";
2044
+ }
2045
+ var numberFormatter = (value) => "Intl" in window ? new Intl.NumberFormat().format(value) : value;
2046
+
2047
+ // src/components/DataTable/styled.tsx
2048
+ var import_react18 = __toESM(require("react"));
2049
+ var import_joy24 = require("@mui/joy");
2050
+ var import_framer_motion16 = require("framer-motion");
2051
+ var import_ArrowUpwardRounded = __toESM(require("@mui/icons-material/ArrowUpwardRounded"));
2052
+ var EllipsisDiv = (0, import_joy24.styled)("div", {
2053
+ name: "DataTable",
2054
+ slot: "textEllipsis"
2055
+ })({
2056
+ overflow: "hidden",
2057
+ textOverflow: "ellipsis",
2058
+ whiteSpace: "nowrap"
2059
+ });
2060
+ var OverlayWrapper = (0, import_joy24.styled)("tr", {
2061
+ name: "DataTable",
2062
+ slot: "overlayWrapper"
2063
+ })({
2064
+ position: "sticky",
2065
+ top: `calc(var(--unstable_TableCell-height, 32px))`,
2066
+ left: 0,
2067
+ right: 0,
2068
+ zIndex: 1,
2069
+ "& > td": {
2070
+ height: 0,
2071
+ padding: 0,
2072
+ border: "none !important"
2073
+ }
2074
+ });
2075
+ var VirtualizedTableBody = (0, import_joy24.styled)("tbody", {
2076
+ name: "DataTable",
2077
+ slot: "tableBody"
2078
+ })({
2079
+ "&::after": {
2080
+ content: "''",
2081
+ display: "block",
2082
+ height: "0.01em"
2083
+ },
2084
+ [`& .${import_joy24.buttonClasses.root}`]: {
2085
+ "--Button-minHeight": "26px",
2086
+ "--Button-paddingBlock": "0.25rem",
2087
+ lineHeight: 1,
2088
+ marginTop: "-2px",
2089
+ marginBottom: "-2px"
2090
+ },
2091
+ [`& .${import_joy24.iconButtonClasses.root}`]: {
2092
+ "--IconButton-size": "26px",
2093
+ verticalAlign: "middle",
2094
+ marginTop: "-2px",
2095
+ marginBottom: "-2px"
2096
+ }
2097
+ });
2098
+ var StyledTableRow = (0, import_joy24.styled)("tr", {
2099
+ name: "DataTable",
2100
+ slot: "tableRow",
2101
+ shouldForwardProp: (prop) => prop !== "striped"
2102
+ })(({ striped }) => ({
2103
+ ...striped && {
2104
+ backgroundColor: "var(--TableRow-stripeBackground, var(--ceed-palette-background-level2))",
2105
+ color: "var(--ceed-palette-text-primary)",
2106
+ "& td": {
2107
+ backgroundColor: "background.surface"
2108
+ }
2109
+ },
2110
+ "&:hover": {
2111
+ backgroundColor: "var(--TableRow-hoverBackground, var(--ceed-palette-background-level3))",
2112
+ "& td": {
2113
+ backgroundColor: "var(--TableRow-hoverBackground, var(--ceed-palette-background-level3))"
2114
+ }
2115
+ }
2116
+ }));
2117
+ var Asterisk = (0, import_joy24.styled)("span", {
2118
+ name: "DataTable",
2119
+ slot: "headCellAsterisk"
2120
+ })(({ theme }) => ({
2121
+ color: "var(--ceed-palette-danger-500)",
2122
+ marginLeft: theme.spacing(0.5)
2123
+ }));
2124
+ var StyledTh = (0, import_joy24.styled)(import_framer_motion16.motion.th)(({ theme }) => ({
2125
+ boxShadow: "1px 0 var(--TableCell-borderColor)"
2126
+ }));
2127
+ var StyledTd = (0, import_joy24.styled)("td")(({ theme }) => ({
2128
+ transition: `box-shadow 0.3s`,
2129
+ "&:not(.is-last-left):not(.is-last-right)": {
2130
+ boxShadow: "1px 0 var(--TableCell-borderColor)"
2131
+ },
2132
+ ".ScrollableRight &": {
2133
+ "&.is-last-left": {
2134
+ boxShadow: `1px 0 var(--TableCell-borderColor), ${theme.shadow.md}`
2135
+ }
2136
+ },
2137
+ ".ScrollableLeft &": {
2138
+ "&.is-last-right": {
2139
+ boxShadow: `1px 0 var(--TableCell-borderColor), ${theme.shadow.md}`
2140
+ }
2141
+ }
2142
+ }));
2143
+ var MotionSortIcon = (0, import_framer_motion16.motion)(import_ArrowUpwardRounded.default);
2144
+ var DefaultLoadingOverlay = () => /* @__PURE__ */ import_react18.default.createElement(import_joy24.LinearProgress, { value: 8, variant: "plain" });
2145
+ var Resizer = (ref, targetRef = ref) => /* @__PURE__ */ import_react18.default.createElement(
2146
+ Box_default,
2147
+ {
2148
+ sx: {
2149
+ position: "absolute",
2150
+ top: 0,
2151
+ right: 0,
2152
+ bottom: 0,
2153
+ width: "4px",
2154
+ cursor: "col-resize"
2155
+ },
2156
+ onClick: (e) => e.stopPropagation(),
2157
+ onMouseDown: (e) => {
2158
+ const initialX = e.clientX;
2159
+ const initialWidth = ref.current?.getBoundingClientRect().width;
2160
+ const onMouseMove = (e2) => {
2161
+ if (initialWidth && initialX) {
2162
+ ref.current.style.width = `${initialWidth + (e2.clientX - initialX)}px`;
2163
+ targetRef.current.style.width = `${initialWidth + (e2.clientX - initialX)}px`;
2164
+ }
2165
+ };
2166
+ const onMouseUp = () => {
2167
+ document.removeEventListener("mousemove", onMouseMove);
2168
+ document.removeEventListener("mouseup", onMouseUp);
2169
+ };
2170
+ document.addEventListener("mousemove", onMouseMove);
2171
+ document.addEventListener("mouseup", onMouseUp);
2172
+ }
2173
+ }
2174
+ );
2175
+
2176
+ // src/components/DataTable/components.tsx
2177
+ var import_react24 = __toESM(require("react"));
2178
+ var import_joy32 = require("@mui/joy");
2179
+ var import_framer_motion22 = require("framer-motion");
2010
2180
 
2011
2181
  // src/components/DatePicker/DatePicker.tsx
2012
2182
  var import_react19 = __toESM(require("react"));
@@ -2015,10 +2185,20 @@ var import_CalendarToday = __toESM(require("@mui/icons-material/CalendarToday"))
2015
2185
  var import_joy27 = require("@mui/joy");
2016
2186
  var import_base2 = require("@mui/base");
2017
2187
 
2188
+ // src/components/Sheet/Sheet.tsx
2189
+ var import_joy25 = require("@mui/joy");
2190
+ var import_framer_motion17 = require("framer-motion");
2191
+ var MotionSheet = (0, import_framer_motion17.motion)(import_joy25.Sheet);
2192
+ var Sheet = MotionSheet;
2193
+ Sheet.displayName = "Sheet";
2194
+
2195
+ // src/components/Sheet/index.ts
2196
+ var Sheet_default = Sheet;
2197
+
2018
2198
  // src/components/DialogActions/DialogActions.tsx
2019
2199
  var import_joy26 = require("@mui/joy");
2020
- var import_framer_motion17 = require("framer-motion");
2021
- var MotionDialogActions = (0, import_framer_motion17.motion)(import_joy26.DialogActions);
2200
+ var import_framer_motion18 = require("framer-motion");
2201
+ var MotionDialogActions = (0, import_framer_motion18.motion)(import_joy26.DialogActions);
2022
2202
  var StyledDialogActions = (0, import_joy26.styled)(MotionDialogActions)(({ theme }) => ({
2023
2203
  padding: theme.spacing(2),
2024
2204
  gap: theme.spacing(2),
@@ -2374,8 +2554,8 @@ var DatePicker_default = DatePicker;
2374
2554
  // src/components/Textarea/Textarea.tsx
2375
2555
  var import_react20 = __toESM(require("react"));
2376
2556
  var import_joy28 = require("@mui/joy");
2377
- var import_framer_motion18 = require("framer-motion");
2378
- var MotionTextarea = (0, import_framer_motion18.motion)(import_joy28.Textarea);
2557
+ var import_framer_motion19 = require("framer-motion");
2558
+ var MotionTextarea = (0, import_framer_motion19.motion)(import_joy28.Textarea);
2379
2559
  var Textarea = (props) => {
2380
2560
  const {
2381
2561
  label,
@@ -2428,8 +2608,8 @@ var Textarea_default = Textarea;
2428
2608
  // src/components/Select/Select.tsx
2429
2609
  var import_react21 = __toESM(require("react"));
2430
2610
  var import_joy29 = require("@mui/joy");
2431
- var import_framer_motion19 = require("framer-motion");
2432
- var MotionOption = (0, import_framer_motion19.motion)(import_joy29.Option);
2611
+ var import_framer_motion20 = require("framer-motion");
2612
+ var MotionOption = (0, import_framer_motion20.motion)(import_joy29.Option);
2433
2613
  var Option = MotionOption;
2434
2614
  Option.displayName = "Option";
2435
2615
  function Select(props) {
@@ -2505,11 +2685,14 @@ Select.displayName = "Select";
2505
2685
  // src/components/Select/index.ts
2506
2686
  var Select_default = Select;
2507
2687
 
2688
+ // src/components/DataTable/components.tsx
2689
+ var import_joy33 = require("@mui/joy");
2690
+
2508
2691
  // src/components/Tooltip/Tooltip.tsx
2509
2692
  var import_react22 = __toESM(require("react"));
2510
2693
  var import_joy30 = require("@mui/joy");
2511
- var import_framer_motion20 = require("framer-motion");
2512
- var MotionTooltip = (0, import_framer_motion20.motion)(import_joy30.Tooltip);
2694
+ var import_framer_motion21 = require("framer-motion");
2695
+ var MotionTooltip = (0, import_framer_motion21.motion)(import_joy30.Tooltip);
2513
2696
  var Tooltip = (props) => {
2514
2697
  return /* @__PURE__ */ import_react22.default.createElement(MotionTooltip, { ...props });
2515
2698
  };
@@ -2518,151 +2701,11 @@ Tooltip.displayName = "Tooltip";
2518
2701
  // src/components/Tooltip/index.ts
2519
2702
  var Tooltip_default = Tooltip;
2520
2703
 
2521
- // src/components/DataTable/DataTable.tsx
2522
- var import_framer_motion21 = require("framer-motion");
2523
-
2524
- // src/components/Pagination/Pagination.tsx
2704
+ // src/components/InfoSign/InfoSign.tsx
2525
2705
  var import_react23 = __toESM(require("react"));
2526
- var import_ChevronLeft2 = __toESM(require("@mui/icons-material/ChevronLeft"));
2527
- var import_ChevronRight2 = __toESM(require("@mui/icons-material/ChevronRight"));
2528
2706
  var import_joy31 = require("@mui/joy");
2529
- var PaginationButton = (0, import_joy31.styled)(Button_default, {
2530
- name: "Pagination",
2531
- slot: "button"
2532
- })(({ theme, active, size }) => ({
2533
- "--Button-size": {
2534
- sm: "32px",
2535
- md: "40px",
2536
- lg: "48px"
2537
- }[size],
2538
- width: "var(--Button-size)",
2539
- height: "var(--Button-size)",
2540
- backgroundColor: active ? theme.vars.palette.primary.softHoverBg : "transparent",
2541
- color: active ? theme.vars.palette.primary.softColor : theme.vars.palette.neutral.plainColor,
2542
- "&:hover": {
2543
- color: active ? theme.vars.palette.primary.softColor : theme.vars.palette.neutral.softColor,
2544
- backgroundColor: active ? theme.vars.palette.primary.softActiveBg : theme.vars.palette.neutral.softHoverBg
2545
- }
2546
- }));
2547
- var PaginationIconButton = (0, import_joy31.styled)(IconButton_default, {
2548
- name: "Pagination",
2549
- slot: "button"
2550
- })(({ theme, size }) => ({
2551
- "--IconButton-size": {
2552
- sm: "32px",
2553
- md: "40px",
2554
- lg: "48px"
2555
- }[size],
2556
- "--Icon-fontSize": "20px",
2557
- width: "var(--IconButton-size)",
2558
- height: "var(--IconButton-size)",
2559
- color: theme.vars.palette.neutral.plainColor,
2560
- "&:hover": {
2561
- color: theme.vars.palette.neutral.softColor,
2562
- backgroundColor: theme.vars.palette.neutral.softHoverBg
2563
- }
2564
- }));
2565
- var PaginationRoot = (0, import_joy31.styled)(Stack_default, {
2566
- name: "Pagination",
2567
- slot: "root"
2568
- })({});
2569
- var PaginationContainer = (0, import_joy31.styled)(Stack_default, {
2570
- name: "Pagination",
2571
- slot: "container"
2572
- })(({ theme, size }) => ({
2573
- gap: {
2574
- sm: theme.spacing(1),
2575
- md: theme.spacing(1.5),
2576
- lg: theme.spacing(2)
2577
- }[size]
2578
- }));
2579
- function Pagination(props) {
2580
- const {
2581
- paginationModel: _paginationModel,
2582
- defaultPaginationModel = { page: 1, pageSize: 25 },
2583
- onPageChange,
2584
- rowCount,
2585
- size = "md",
2586
- ...innerProps
2587
- } = props;
2588
- const [paginationModel, setPaginationModel] = useControlledState(
2589
- _paginationModel,
2590
- defaultPaginationModel,
2591
- (0, import_react23.useCallback)(
2592
- (newPage) => {
2593
- onPageChange(newPage.page);
2594
- },
2595
- [onPageChange]
2596
- )
2597
- );
2598
- const handlePageChange = (newPage) => {
2599
- setPaginationModel({ ...paginationModel, page: newPage });
2600
- };
2601
- const firstPage = 1;
2602
- const lastPage = Math.max(firstPage, Math.ceil(rowCount / paginationModel.pageSize));
2603
- const beforePages = [paginationModel.page - 2, paginationModel.page - 1].filter((p) => p > 1);
2604
- const afterPages = [paginationModel.page + 1, paginationModel.page + 2].filter((p) => p <= lastPage - 1);
2605
- const isMoreAfterPages = lastPage > 1 && paginationModel.page < lastPage - 3;
2606
- const isMoreBeforePages = lastPage > 1 && paginationModel.page > 4;
2607
- (0, import_react23.useEffect)(() => {
2608
- if (paginationModel.page > lastPage) {
2609
- setPaginationModel({ ...paginationModel, page: lastPage });
2610
- }
2611
- }, [rowCount, paginationModel, lastPage, setPaginationModel]);
2612
- return /* @__PURE__ */ import_react23.default.createElement(PaginationRoot, { ...innerProps }, /* @__PURE__ */ import_react23.default.createElement(PaginationContainer, { direction: "row", size, alignItems: "center" }, /* @__PURE__ */ import_react23.default.createElement(
2613
- PaginationIconButton,
2614
- {
2615
- size,
2616
- variant: "plain",
2617
- color: "neutral",
2618
- onClick: () => handlePageChange(paginationModel.page - 1),
2619
- disabled: paginationModel.page === firstPage,
2620
- "aria-label": "Previous page"
2621
- },
2622
- /* @__PURE__ */ import_react23.default.createElement(import_ChevronLeft2.default, null)
2623
- ), paginationModel.page !== firstPage && /* @__PURE__ */ import_react23.default.createElement(PaginationButton, { size, variant: "plain", color: "neutral", onClick: () => handlePageChange(firstPage) }, firstPage), isMoreBeforePages && /* @__PURE__ */ import_react23.default.createElement(
2624
- PaginationButton,
2625
- {
2626
- size,
2627
- variant: "plain",
2628
- color: "neutral",
2629
- onClick: () => handlePageChange(paginationModel.page - 3),
2630
- "aria-label": "More previous pages"
2631
- },
2632
- "..."
2633
- ), 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: "true", 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(
2634
- PaginationButton,
2635
- {
2636
- size,
2637
- variant: "plain",
2638
- color: "neutral",
2639
- "aria-label": "More next pages",
2640
- onClick: () => handlePageChange(paginationModel.page + 3)
2641
- },
2642
- "..."
2643
- ), paginationModel.page !== lastPage && /* @__PURE__ */ import_react23.default.createElement(PaginationButton, { size, variant: "plain", color: "neutral", onClick: () => handlePageChange(lastPage) }, lastPage), /* @__PURE__ */ import_react23.default.createElement(
2644
- PaginationIconButton,
2645
- {
2646
- size,
2647
- variant: "plain",
2648
- color: "neutral",
2649
- onClick: () => handlePageChange(paginationModel.page + 1),
2650
- disabled: paginationModel.page === lastPage,
2651
- "aria-label": "Next page"
2652
- },
2653
- /* @__PURE__ */ import_react23.default.createElement(import_ChevronRight2.default, null)
2654
- )));
2655
- }
2656
- Pagination.displayName = "Pagination";
2657
-
2658
- // src/components/Pagination/index.ts
2659
- var Pagination_default = Pagination;
2660
-
2661
- // src/components/InfoSign/InfoSign.tsx
2662
- var import_react24 = __toESM(require("react"));
2663
- var import_joy32 = require("@mui/joy");
2664
2707
  var import_Info = __toESM(require("@mui/icons-material/Info"));
2665
- var InfoIcon = (0, import_joy32.styled)(import_Info.default, {
2708
+ var InfoIcon = (0, import_joy31.styled)(import_Info.default, {
2666
2709
  name: "InfoSign",
2667
2710
  slot: "InfoSign"
2668
2711
  })(({ theme }) => ({
@@ -2672,67 +2715,55 @@ var InfoIcon = (0, import_joy32.styled)(import_Info.default, {
2672
2715
  }));
2673
2716
  function InfoSign(props) {
2674
2717
  const { message, placement } = props;
2675
- return /* @__PURE__ */ import_react24.default.createElement(
2718
+ return /* @__PURE__ */ import_react23.default.createElement(
2676
2719
  Tooltip_default,
2677
2720
  {
2678
2721
  arrow: true,
2679
2722
  placement,
2680
2723
  sx: {
2681
- [`&.${import_joy32.tooltipClasses.root}`]: {
2724
+ [`&.${import_joy31.tooltipClasses.root}`]: {
2682
2725
  maxWidth: "320px"
2683
2726
  }
2684
2727
  },
2685
- title: message?.split("\n").map((line, i) => /* @__PURE__ */ import_react24.default.createElement("div", { key: `info-sign-${i}` }, line))
2728
+ title: message?.split("\n").map((line, i) => /* @__PURE__ */ import_react23.default.createElement("div", { key: `info-sign-${i}` }, line))
2686
2729
  },
2687
- /* @__PURE__ */ import_react24.default.createElement(InfoIcon, null)
2730
+ /* @__PURE__ */ import_react23.default.createElement(InfoIcon, null)
2688
2731
  );
2689
2732
  }
2690
2733
 
2691
2734
  // src/components/InfoSign/index.ts
2692
2735
  var InfoSign_default = InfoSign;
2693
2736
 
2694
- // src/components/DataTable/DataTable.tsx
2695
- function getTextAlign(props) {
2696
- return !props.editMode && ["number", "date", "currency"].includes(props.type || "") ? "end" : "start";
2697
- }
2698
- var DefaultLoadingOverlay = () => /* @__PURE__ */ import_react25.default.createElement(import_joy33.LinearProgress, { value: 8, variant: "plain" });
2699
- var EllipsisDiv = (0, import_joy33.styled)("div", {
2700
- name: "DataTable",
2701
- slot: "textEllipsis"
2702
- })({
2703
- overflow: "hidden",
2704
- textOverflow: "ellipsis",
2705
- whiteSpace: "nowrap"
2706
- });
2737
+ // src/components/DataTable/components.tsx
2707
2738
  var TextEllipsis = ({ children }) => {
2708
- const textRef = (0, import_react25.useRef)(null);
2709
- const [showTooltip, setShowTooltip] = (0, import_react25.useState)(false);
2710
- (0, import_react25.useLayoutEffect)(() => {
2739
+ const textRef = (0, import_react24.useRef)(null);
2740
+ const [showTooltip, setShowTooltip] = (0, import_react24.useState)(false);
2741
+ (0, import_react24.useLayoutEffect)(() => {
2711
2742
  const element = textRef.current;
2712
2743
  if (element) {
2713
2744
  const isTextTruncated = element.scrollWidth > element.clientWidth;
2714
2745
  setShowTooltip(isTextTruncated);
2715
2746
  }
2716
2747
  }, [children]);
2717
- const content = /* @__PURE__ */ import_react25.default.createElement(EllipsisDiv, { ref: textRef }, children);
2748
+ const content = /* @__PURE__ */ import_react24.default.createElement(EllipsisDiv, { ref: textRef }, children);
2718
2749
  if (showTooltip) {
2719
- return /* @__PURE__ */ import_react25.default.createElement(Tooltip_default, { title: children, placement: "top", onClick: (e) => e.stopPropagation() }, content);
2750
+ return /* @__PURE__ */ import_react24.default.createElement(Tooltip_default, { title: children, placement: "top", onClick: (e) => e.stopPropagation() }, content);
2720
2751
  }
2721
2752
  return content;
2722
2753
  };
2723
2754
  var CellTextEllipsis = ({ children }) => {
2724
- const textRef = (0, import_react25.useRef)(null);
2725
- const [showTooltip, setShowTooltip] = (0, import_react25.useState)(false);
2726
- (0, import_react25.useLayoutEffect)(() => {
2755
+ const textRef = (0, import_react24.useRef)(null);
2756
+ const [showTooltip, setShowTooltip] = (0, import_react24.useState)(false);
2757
+ (0, import_react24.useLayoutEffect)(() => {
2727
2758
  const element = textRef.current;
2728
2759
  if (element) {
2729
2760
  const isTextTruncated = element.scrollWidth > element.clientWidth;
2730
2761
  setShowTooltip(isTextTruncated);
2731
2762
  }
2732
2763
  }, [children]);
2733
- const content = /* @__PURE__ */ import_react25.default.createElement(EllipsisDiv, { ref: textRef }, children);
2764
+ const content = /* @__PURE__ */ import_react24.default.createElement(EllipsisDiv, { ref: textRef }, children);
2734
2765
  if (showTooltip) {
2735
- return /* @__PURE__ */ import_react25.default.createElement(
2766
+ return /* @__PURE__ */ import_react24.default.createElement(
2736
2767
  Tooltip_default,
2737
2768
  {
2738
2769
  title: children,
@@ -2746,129 +2777,6 @@ var CellTextEllipsis = ({ children }) => {
2746
2777
  }
2747
2778
  return content;
2748
2779
  };
2749
- var OverlayWrapper = (0, import_joy33.styled)("tr", {
2750
- name: "DataTable",
2751
- slot: "overlayWrapper"
2752
- })({
2753
- position: "sticky",
2754
- top: `calc(var(--unstable_TableCell-height, 32px))`,
2755
- left: 0,
2756
- right: 0,
2757
- zIndex: 1,
2758
- "& > td": {
2759
- height: 0,
2760
- padding: 0,
2761
- border: "none !important"
2762
- }
2763
- });
2764
- var numberFormatter = (value) => "Intl" in window ? new Intl.NumberFormat().format(value) : value;
2765
- var Resizer = (ref) => /* @__PURE__ */ import_react25.default.createElement(
2766
- Box_default,
2767
- {
2768
- sx: {
2769
- position: "absolute",
2770
- top: 0,
2771
- right: 0,
2772
- bottom: 0,
2773
- width: "4px",
2774
- cursor: "col-resize"
2775
- },
2776
- onClick: (e) => e.stopPropagation(),
2777
- onMouseDown: (e) => {
2778
- const initialX = e.clientX;
2779
- const initialWidth = ref.current?.getBoundingClientRect().width;
2780
- const onMouseMove = (e2) => {
2781
- if (initialWidth && initialX) {
2782
- ref.current.style.width = `${initialWidth + (e2.clientX - initialX)}px`;
2783
- }
2784
- };
2785
- const onMouseUp = () => {
2786
- document.removeEventListener("mousemove", onMouseMove);
2787
- document.removeEventListener("mouseup", onMouseUp);
2788
- };
2789
- document.addEventListener("mousemove", onMouseMove);
2790
- document.addEventListener("mouseup", onMouseUp);
2791
- }
2792
- }
2793
- );
2794
- var VirtualizedTableBody = (0, import_joy33.styled)("tbody", {
2795
- name: "DataTable",
2796
- slot: "tableBody"
2797
- })({
2798
- // HACK: for virtualization: tbody의 height를 렌더링 된 tr의 총 높이 보다 높은 값으로 지정하고도 tr의 size를 유지하기 위한 꼼수
2799
- "&::after": {
2800
- content: "''",
2801
- display: "block",
2802
- height: "0.01em"
2803
- },
2804
- // NOTE: 테이블 안에 버튼을 넣을 때 버튼의 높이가 테이블의 높이를 넘어가지 않도록 설정
2805
- [`& .${import_joy33.buttonClasses.root}`]: {
2806
- "--Button-minHeight": "26px",
2807
- "--Button-paddingBlock": "0.25rem",
2808
- lineHeight: 1,
2809
- marginTop: "-2px",
2810
- marginBottom: "-2px"
2811
- },
2812
- [`& .${import_joy33.iconButtonClasses.root}`]: {
2813
- "--IconButton-size": "26px",
2814
- verticalAlign: "middle",
2815
- marginTop: "-2px",
2816
- marginBottom: "-2px"
2817
- }
2818
- });
2819
- var StyledTableRow = (0, import_joy33.styled)("tr", {
2820
- name: "DataTable",
2821
- slot: "tableRow",
2822
- shouldForwardProp: (prop) => prop !== "striped"
2823
- })(({ striped }) => ({
2824
- ...striped && {
2825
- backgroundColor: "var(--TableRow-stripeBackground, var(--ceed-palette-background-level2))",
2826
- color: "var(--ceed-palette-text-primary)",
2827
- "& td": {
2828
- backgroundColor: "background.surface"
2829
- }
2830
- },
2831
- "&:hover": {
2832
- backgroundColor: "var(--TableRow-hoverBackground, var(--ceed-palette-background-level3))",
2833
- "& td": {
2834
- backgroundColor: "var(--TableRow-hoverBackground, var(--ceed-palette-background-level3))"
2835
- }
2836
- }
2837
- }));
2838
- var VirtualizedTableRow = (0, import_react25.memo)(StyledTableRow, (prevProps, nextProps) => {
2839
- return prevProps.striped === nextProps.striped && prevProps.style?.height === nextProps.style?.height && prevProps.style?.transform === nextProps.style?.transform && // @ts-ignore
2840
- prevProps["data-row-id"] === nextProps["data-row-id"] && // @ts-ignore
2841
- prevProps["data-index"] === nextProps["data-index"] && prevProps.tabIndex === nextProps.tabIndex && prevProps["aria-checked"] === nextProps["aria-checked"] && // Include children check to handle isCellEditable changes
2842
- prevProps.children === nextProps.children;
2843
- });
2844
- var Asterisk = (0, import_joy33.styled)("span", {
2845
- name: "DataTable",
2846
- slot: "headCellAsterisk"
2847
- })(({ theme }) => ({
2848
- color: "var(--ceed-palette-danger-500)",
2849
- marginLeft: theme.spacing(0.5)
2850
- }));
2851
- var StyledTh = (0, import_joy33.styled)(import_framer_motion21.motion.th)(({ theme }) => ({
2852
- boxShadow: "1px 0 var(--TableCell-borderColor)"
2853
- // border 대신 box-shadow를 사용하여 stickyHeader와 함께 사용할 때 border가 겹치는 문제를 해결
2854
- }));
2855
- var StyledTd = (0, import_joy33.styled)("td")(({ theme }) => ({
2856
- transition: `box-shadow 0.3s`,
2857
- "&:not(.is-last-left):not(.is-last-right)": {
2858
- boxShadow: "1px 0 var(--TableCell-borderColor)"
2859
- },
2860
- ".ScrollableRight &": {
2861
- "&.is-last-left": {
2862
- boxShadow: `1px 0 var(--TableCell-borderColor), ${theme.shadow.md}`
2863
- }
2864
- },
2865
- ".ScrollableLeft &": {
2866
- "&.is-last-right": {
2867
- boxShadow: `1px 0 var(--TableCell-borderColor), ${theme.shadow.md}`
2868
- }
2869
- }
2870
- }));
2871
- var MotionSortIcon = (0, import_framer_motion21.motion)(import_ArrowUpwardRounded.default);
2872
2780
  var HeadCell = (props) => {
2873
2781
  const {
2874
2782
  width,
@@ -2890,18 +2798,21 @@ var HeadCell = (props) => {
2890
2798
  isPinned,
2891
2799
  pinnedStartPosition,
2892
2800
  pinnedEndPosition,
2893
- headerRef
2801
+ headerRef,
2802
+ tableColRef,
2803
+ headerClassName
2894
2804
  } = props;
2895
- const theme = (0, import_joy33.useTheme)();
2805
+ const theme = (0, import_joy32.useTheme)();
2896
2806
  const ref = headerRef;
2897
- const [isHovered, setIsHovered] = (0, import_react25.useState)(false);
2807
+ const colRef = tableColRef;
2808
+ const [isHovered, setIsHovered] = (0, import_react24.useState)(false);
2898
2809
  const sortable = type === "actions" ? false : _sortable;
2899
- const headId = (0, import_react25.useMemo)(
2810
+ const headId = (0, import_react24.useMemo)(
2900
2811
  () => `${tableId}_header_${headerName ?? field}`.trim(),
2901
2812
  [tableId, headerName, field]
2902
2813
  );
2903
- const resizer = (0, import_react25.useMemo)(() => resizable ?? true ? Resizer(ref) : null, [resizable, ref]);
2904
- const style = (0, import_react25.useMemo)(
2814
+ const resizer = (0, import_react24.useMemo)(() => resizable ?? true ? Resizer(ref, colRef) : null, [resizable, ref, colRef]);
2815
+ const style = (0, import_react24.useMemo)(
2905
2816
  () => ({
2906
2817
  width,
2907
2818
  minWidth: minWidth ?? "50px",
@@ -2919,10 +2830,10 @@ var HeadCell = (props) => {
2919
2830
  );
2920
2831
  const textAlign = getTextAlign(props);
2921
2832
  const initialSort = sortOrder[0];
2922
- const sortIcon = (0, import_react25.useMemo)(() => {
2833
+ const sortIcon = (0, import_react24.useMemo)(() => {
2923
2834
  const isSorted = !!sort;
2924
2835
  const isVisible = sortable && (isSorted || isHovered);
2925
- return /* @__PURE__ */ import_react25.default.createElement(import_framer_motion21.AnimatePresence, { mode: "wait" }, isVisible && /* @__PURE__ */ import_react25.default.createElement(
2836
+ return /* @__PURE__ */ import_react24.default.createElement(import_framer_motion22.AnimatePresence, { mode: "wait" }, isVisible && /* @__PURE__ */ import_react24.default.createElement(
2926
2837
  MotionSortIcon,
2927
2838
  {
2928
2839
  key: "sort-icon",
@@ -2950,11 +2861,21 @@ var HeadCell = (props) => {
2950
2861
  }
2951
2862
  ));
2952
2863
  }, [headId, initialSort, sort, sortable, isHovered]);
2953
- const infoSign = (0, import_react25.useMemo)(
2954
- () => description ? /* @__PURE__ */ import_react25.default.createElement(InfoSign_default, { message: description, placement: "bottom" }) : null,
2864
+ const infoSign = (0, import_react24.useMemo)(
2865
+ () => description ? /* @__PURE__ */ import_react24.default.createElement(InfoSign_default, { message: description, placement: "bottom" }) : null,
2955
2866
  [description]
2956
2867
  );
2957
- return /* @__PURE__ */ import_react25.default.createElement(
2868
+ const params = (0, import_react24.useMemo)(
2869
+ () => ({
2870
+ field
2871
+ }),
2872
+ [field]
2873
+ );
2874
+ const computedHeaderClassName = (0, import_react24.useMemo)(
2875
+ () => (typeof headerClassName === "function" ? headerClassName(params) : headerClassName) || void 0,
2876
+ [headerClassName, params]
2877
+ );
2878
+ return /* @__PURE__ */ import_react24.default.createElement(
2958
2879
  StyledTh,
2959
2880
  {
2960
2881
  id: headId,
@@ -2963,16 +2884,17 @@ var HeadCell = (props) => {
2963
2884
  ref,
2964
2885
  key: field,
2965
2886
  style,
2966
- onClick: (0, import_react25.useCallback)(
2887
+ onClick: (0, import_react24.useCallback)(
2967
2888
  (e) => sortable && onSortChange?.({ field, currentSort: sort, multiple: e.shiftKey }),
2968
2889
  [field, onSortChange, sort, sortable]
2969
2890
  ),
2970
2891
  onMouseEnter: () => setIsHovered(true),
2971
2892
  onMouseLeave: () => setIsHovered(false),
2972
2893
  whileHover: "hover",
2973
- initial: "initial"
2894
+ initial: "initial",
2895
+ className: computedHeaderClassName
2974
2896
  },
2975
- /* @__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),
2897
+ /* @__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),
2976
2898
  resizer
2977
2899
  );
2978
2900
  };
@@ -2996,10 +2918,10 @@ var BodyCell = (props) => {
2996
2918
  onCellEditStart,
2997
2919
  onCellEditStop
2998
2920
  } = props;
2999
- const theme = (0, import_joy33.useTheme)();
3000
- const [value, setValue] = (0, import_react25.useState)(row[field]);
3001
- const cellRef = (0, import_react25.useRef)(null);
3002
- const params = (0, import_react25.useMemo)(
2921
+ const theme = (0, import_joy32.useTheme)();
2922
+ const [value, setValue] = (0, import_react24.useState)(row[field]);
2923
+ const cellRef = (0, import_react24.useRef)(null);
2924
+ const params = (0, import_react24.useMemo)(
3003
2925
  () => ({
3004
2926
  row,
3005
2927
  value,
@@ -3008,19 +2930,19 @@ var BodyCell = (props) => {
3008
2930
  }),
3009
2931
  [row, rowId, value, field]
3010
2932
  );
3011
- const editMode = (0, import_react25.useMemo)(
2933
+ const editMode = (0, import_react24.useMemo)(
3012
2934
  () => !!(props.editMode && (typeof isCellEditable === "function" ? isCellEditable(params) : isCellEditable ?? true)),
3013
2935
  [props.editMode, isCellEditable, params]
3014
2936
  );
3015
2937
  const propsComponentProps = "componentProps" in props ? props.componentProps : null;
3016
- const componentProps = (0, import_react25.useMemo)(
2938
+ const componentProps = (0, import_react24.useMemo)(
3017
2939
  () => ({
3018
2940
  ..."componentProps" in props && (typeof propsComponentProps === "function" ? propsComponentProps(params) : propsComponentProps || {}),
3019
2941
  size: "sm"
3020
2942
  }),
3021
2943
  [props, propsComponentProps, params]
3022
2944
  );
3023
- const editModeComponentProps = (0, import_react25.useMemo)(
2945
+ const editModeComponentProps = (0, import_react24.useMemo)(
3024
2946
  () => ({
3025
2947
  ...componentProps,
3026
2948
  onChange: (e) => {
@@ -3082,23 +3004,23 @@ var BodyCell = (props) => {
3082
3004
  }),
3083
3005
  [params, row, field, value, componentProps, type, onCellEditStop, onCellEditStart]
3084
3006
  );
3085
- const EditModeComponent = (0, import_react25.useMemo)(() => {
3007
+ const EditModeComponent = (0, import_react24.useMemo)(() => {
3086
3008
  if (renderEditCell) {
3087
- return (0, import_react25.createElement)((0, import_react25.memo)(renderEditCell), params);
3009
+ return (0, import_react24.createElement)((0, import_react24.memo)(renderEditCell), params);
3088
3010
  }
3089
3011
  return {
3090
- date: /* @__PURE__ */ import_react25.default.createElement(DatePicker_default, { value, ...editModeComponentProps }),
3091
- currency: /* @__PURE__ */ import_react25.default.createElement(
3012
+ date: /* @__PURE__ */ import_react24.default.createElement(DatePicker_default, { value, ...editModeComponentProps }),
3013
+ currency: /* @__PURE__ */ import_react24.default.createElement(
3092
3014
  CurrencyInput_default,
3093
3015
  {
3094
3016
  value,
3095
3017
  ...editModeComponentProps
3096
3018
  }
3097
3019
  ),
3098
- number: /* @__PURE__ */ import_react25.default.createElement(Input_default, { value, type: "number", ...editModeComponentProps }),
3099
- text: /* @__PURE__ */ import_react25.default.createElement(Input_default, { value, type: "text", ...editModeComponentProps }),
3100
- longText: /* @__PURE__ */ import_react25.default.createElement(Textarea_default, { value, ...editModeComponentProps }),
3101
- autocomplete: /* @__PURE__ */ import_react25.default.createElement(
3020
+ number: /* @__PURE__ */ import_react24.default.createElement(Input_default, { value, type: "number", ...editModeComponentProps }),
3021
+ text: /* @__PURE__ */ import_react24.default.createElement(Input_default, { value, type: "text", ...editModeComponentProps }),
3022
+ longText: /* @__PURE__ */ import_react24.default.createElement(Textarea_default, { value, ...editModeComponentProps }),
3023
+ autocomplete: /* @__PURE__ */ import_react24.default.createElement(
3102
3024
  Autocomplete_default,
3103
3025
  {
3104
3026
  value,
@@ -3106,7 +3028,7 @@ var BodyCell = (props) => {
3106
3028
  ...editModeComponentProps
3107
3029
  }
3108
3030
  ),
3109
- select: /* @__PURE__ */ import_react25.default.createElement(
3031
+ select: /* @__PURE__ */ import_react24.default.createElement(
3110
3032
  Select_default,
3111
3033
  {
3112
3034
  value,
@@ -3117,13 +3039,13 @@ var BodyCell = (props) => {
3117
3039
  }[type || "text"];
3118
3040
  }, [value, editModeComponentProps, type, renderEditCell, params]);
3119
3041
  const linkComponentFromProps = props.component;
3120
- const ReadModeComponent = (0, import_react25.useMemo)(() => {
3042
+ const ReadModeComponent = (0, import_react24.useMemo)(() => {
3121
3043
  if (renderCell) {
3122
- return (0, import_react25.createElement)((0, import_react25.memo)(renderCell), params);
3044
+ return (0, import_react24.createElement)((0, import_react24.memo)(renderCell), params);
3123
3045
  }
3124
3046
  const innerText = value;
3125
3047
  const typedComponent = {
3126
- link: import_react25.default.createElement(linkComponentFromProps || import_joy33.Link, {
3048
+ link: import_react24.default.createElement(linkComponentFromProps || import_joy33.Link, {
3127
3049
  children: innerText,
3128
3050
  ...componentProps
3129
3051
  })
@@ -3131,22 +3053,22 @@ var BodyCell = (props) => {
3131
3053
  return typedComponent || innerText;
3132
3054
  }, [value, renderCell, params, type, componentProps, linkComponentFromProps]);
3133
3055
  const getActions = props.getActions;
3134
- const CellComponent = (0, import_react25.useMemo)(() => {
3056
+ const CellComponent = (0, import_react24.useMemo)(() => {
3135
3057
  if (type === "actions") {
3136
- return /* @__PURE__ */ import_react25.default.createElement(Stack_default, { direction: "row", gap: 1, justifyContent: "center", alignItems: "center" }, getActions?.(params));
3058
+ return /* @__PURE__ */ import_react24.default.createElement(Stack_default, { direction: "row", gap: 1, justifyContent: "center", alignItems: "center" }, getActions?.(params));
3137
3059
  }
3138
3060
  return editMode && EditModeComponent ? EditModeComponent : ReadModeComponent;
3139
3061
  }, [type, getActions, params, editMode, EditModeComponent, ReadModeComponent]);
3140
- const showTooltip = (0, import_react25.useMemo)(() => noWrap && type === "longText", [noWrap, type]);
3062
+ const showTooltip = (0, import_react24.useMemo)(() => noWrap && type === "longText", [noWrap, type]);
3141
3063
  const isBoundary = props.isLastStartPinnedColumn || props.isLastEndPinnedColumn;
3142
- const computedCellClassName = (0, import_react25.useMemo)(
3064
+ const computedCellClassName = (0, import_react24.useMemo)(
3143
3065
  () => (typeof cellClassName === "function" ? cellClassName(params) : cellClassName) || "",
3144
3066
  [cellClassName, params]
3145
3067
  );
3146
- (0, import_react25.useEffect)(() => {
3068
+ (0, import_react24.useEffect)(() => {
3147
3069
  setValue(row[field]);
3148
3070
  }, [row, field]);
3149
- return /* @__PURE__ */ import_react25.default.createElement(
3071
+ return /* @__PURE__ */ import_react24.default.createElement(
3150
3072
  StyledTd,
3151
3073
  {
3152
3074
  ref: cellRef,
@@ -3163,16 +3085,16 @@ var BodyCell = (props) => {
3163
3085
  },
3164
3086
  className: [isLastStartPinnedColumn && "is-last-left", isLastEndPinnedColumn && "is-last-right", computedCellClassName].filter(Boolean).join(" ") || ""
3165
3087
  },
3166
- (0, import_react25.useMemo)(
3167
- () => showTooltip ? /* @__PURE__ */ import_react25.default.createElement(CellTextEllipsis, null, CellComponent) : CellComponent,
3088
+ (0, import_react24.useMemo)(
3089
+ () => showTooltip ? /* @__PURE__ */ import_react24.default.createElement(CellTextEllipsis, null, CellComponent) : CellComponent,
3168
3090
  [CellComponent, showTooltip]
3169
3091
  )
3170
3092
  );
3171
3093
  };
3172
- var BodyRow = (0, import_react25.memo)(
3094
+ var BodyRow = (0, import_react24.memo)(
3173
3095
  (props) => {
3174
3096
  const { tableId, columns, rowId, editMode, noWrap, row } = props;
3175
- return /* @__PURE__ */ import_react25.default.createElement(import_react25.default.Fragment, null, columns.map((column, i) => /* @__PURE__ */ import_react25.default.createElement(
3097
+ return /* @__PURE__ */ import_react24.default.createElement(import_react24.default.Fragment, null, columns.map((column, i) => /* @__PURE__ */ import_react24.default.createElement(
3176
3098
  BodyCell,
3177
3099
  {
3178
3100
  key: `${rowId}_${column.field.toString()}_${i}`,
@@ -3186,6 +3108,34 @@ var BodyRow = (0, import_react25.memo)(
3186
3108
  )));
3187
3109
  }
3188
3110
  );
3111
+ var StyledTableRow2 = (0, import_joy32.styled)("tr", {
3112
+ name: "DataTable",
3113
+ slot: "tableRow",
3114
+ shouldForwardProp: (prop) => prop !== "striped"
3115
+ })(({ striped }) => ({
3116
+ ...striped && {
3117
+ backgroundColor: "var(--TableRow-stripeBackground, var(--ceed-palette-background-level2))",
3118
+ color: "var(--ceed-palette-text-primary)",
3119
+ "& td": {
3120
+ backgroundColor: "background.surface"
3121
+ }
3122
+ },
3123
+ "&:hover": {
3124
+ backgroundColor: "var(--TableRow-hoverBackground, var(--ceed-palette-background-level3))",
3125
+ "& td": {
3126
+ backgroundColor: "var(--TableRow-hoverBackground, var(--ceed-palette-background-level3))"
3127
+ }
3128
+ }
3129
+ }));
3130
+ var VirtualizedTableRow = (0, import_react24.memo)(StyledTableRow2, (prevProps, nextProps) => {
3131
+ return prevProps.striped === nextProps.striped && prevProps.style?.height === nextProps.style?.height && prevProps.style?.transform === nextProps.style?.transform && // @ts-ignore
3132
+ prevProps["data-row-id"] === nextProps["data-row-id"] && // @ts-ignore
3133
+ prevProps["data-index"] === nextProps["data-index"] && prevProps.tabIndex === nextProps.tabIndex && prevProps["aria-checked"] === nextProps["aria-checked"] && // Include children check to handle isCellEditable changes
3134
+ prevProps.children === nextProps.children;
3135
+ });
3136
+
3137
+ // src/components/DataTable/hooks.ts
3138
+ var import_react25 = require("react");
3189
3139
  function useColumnWidths(columnsByField) {
3190
3140
  const [widths, setWidths] = (0, import_react25.useState)({});
3191
3141
  const roRef = (0, import_react25.useRef)();
@@ -3235,8 +3185,14 @@ function useDataTableRenderer({
3235
3185
  editMode,
3236
3186
  getId: _getId,
3237
3187
  isTotalSelected: _isTotalSelected,
3238
- isRowSelectable
3188
+ isRowSelectable,
3189
+ columnGroupingModel
3239
3190
  }) {
3191
+ if (pinnedColumns && columnGroupingModel) {
3192
+ throw new Error(
3193
+ "You cannot use both `pinnedColumns` and `columnGroupingModel` at the same time. Please choose one of them."
3194
+ );
3195
+ }
3240
3196
  const onSelectionModelChangeRef = (0, import_react25.useRef)(onSelectionModelChange);
3241
3197
  onSelectionModelChangeRef.current = onSelectionModelChange;
3242
3198
  const [focusedRowId, setFocusedRowId] = (0, import_react25.useState)(null);
@@ -3245,18 +3201,23 @@ function useDataTableRenderer({
3245
3201
  initialState?.sorting?.sortModel ?? [],
3246
3202
  (0, import_react25.useCallback)((sortModel2) => onSortModelChange?.(sortModel2), [onSortModelChange])
3247
3203
  );
3204
+ const reorderedColumns = (0, import_react25.useMemo)(() => {
3205
+ if (!columnGroupingModel) return columnsProp;
3206
+ return reorderColumnsByGroupingModel(columnsProp, columnGroupingModel);
3207
+ }, [columnsProp, columnGroupingModel]);
3248
3208
  const columnsByField = (0, import_react25.useMemo)(
3249
- () => columnsProp.reduce(
3209
+ () => reorderedColumns.reduce(
3250
3210
  (acc, curr) => ({
3251
3211
  ...acc,
3252
3212
  [curr.field]: {
3253
3213
  ...curr,
3254
- headerRef: import_react25.default.createRef()
3214
+ headerRef: (0, import_react25.createRef)(),
3215
+ tableColRef: (0, import_react25.createRef)()
3255
3216
  }
3256
3217
  }),
3257
3218
  {}
3258
3219
  ),
3259
- [columnsProp]
3220
+ [reorderedColumns]
3260
3221
  );
3261
3222
  const sortComparator = (0, import_react25.useCallback)(
3262
3223
  (rowA, rowB) => {
@@ -3291,7 +3252,6 @@ function useDataTableRenderer({
3291
3252
  [_rows, sortModel, sortComparator]
3292
3253
  );
3293
3254
  const sortOrder = (0, import_react25.useMemo)(
3294
- // NOTE: default value를 props destructuring에서 할당하면 렌더링 시점에 초기화가 되어버린다.
3295
3255
  () => Array.from(new Set(_sortOrder || ["asc", "desc", null])),
3296
3256
  [_sortOrder]
3297
3257
  );
@@ -3301,11 +3261,7 @@ function useDataTableRenderer({
3301
3261
  (row, index) => _getId?.(row) ?? row.id ?? `${(index || 0) + (page - 1) * pageSize}`,
3302
3262
  [_getId, page, pageSize]
3303
3263
  );
3304
- const selectedModelSet = (0, import_react25.useMemo)(
3305
- // NOTE: default value를 props destructuring에서 할당하면 렌더링 시점에 초기화가 되어버린다.
3306
- () => new Set(selectionModel || []),
3307
- [selectionModel]
3308
- );
3264
+ const selectedModelSet = (0, import_react25.useMemo)(() => new Set(selectionModel || []), [selectionModel]);
3309
3265
  const dataInPage = (0, import_react25.useMemo)(
3310
3266
  () => !pagination || paginationMode === "server" ? rows : rows.slice((page - 1) * pageSize, (page - 1) * pageSize + pageSize),
3311
3267
  [rows, page, pageSize, paginationMode, pagination]
@@ -3336,9 +3292,12 @@ function useDataTableRenderer({
3336
3292
  columnsByField[f].minWidth ?? 0,
3337
3293
  [columnWidths, columnsByField]
3338
3294
  );
3295
+ const processedColumnGroups = (0, import_react25.useMemo)(() => {
3296
+ if (!columnGroupingModel) return null;
3297
+ return calculateColumnGroups(columnGroupingModel, reorderedColumns);
3298
+ }, [columnGroupingModel, reorderedColumns]);
3339
3299
  const columns = (0, import_react25.useMemo)(() => {
3340
- const baseColumns = columnsProp || // fallback
3341
- Object.keys(rows[0] || {}).map((key) => ({
3300
+ const baseColumns = reorderedColumns.length > 0 ? reorderedColumns : Object.keys(rows[0] || {}).map((key) => ({
3342
3301
  field: key
3343
3302
  }));
3344
3303
  return baseColumns.map((column) => {
@@ -3348,19 +3307,19 @@ function useDataTableRenderer({
3348
3307
  return {
3349
3308
  ...column,
3350
3309
  headerRef: columnsByField[column.field].headerRef,
3310
+ tableColRef: columnsByField[column.field].tableColRef,
3351
3311
  isCellEditable: editMode && (typeof column.isCellEditable === "function" ? column.isCellEditable : column.isCellEditable ?? true),
3352
3312
  sort: sortModel.find((sort) => sort.field === column.field)?.sort,
3353
3313
  sortOrder: columnsByField[column.field]?.sortOrder || sortOrder,
3354
3314
  isPinned,
3355
3315
  isLastStartPinnedColumn: isLeftPinned && [...pinnedColumns?.left || []].pop() === column.field,
3356
3316
  isLastEndPinnedColumn: isRightPinned && (pinnedColumns?.right?.[0] ?? null) === column.field,
3357
- // pinned 관련 계산부
3358
3317
  pinnedStartPosition: pinnedColumns?.left?.slice(0, isLeftPinned ? pinnedColumns.left.indexOf(column.field) : pinnedColumns.left.length).reduce((acc, curr) => acc + getWidth(curr), 0),
3359
3318
  pinnedEndPosition: pinnedColumns?.right?.slice(isRightPinned ? pinnedColumns.right.indexOf(column.field) + 1 : 0).reduce((acc, curr) => acc + getWidth(curr), 0)
3360
3319
  };
3361
3320
  });
3362
3321
  }, [
3363
- columnsProp,
3322
+ reorderedColumns,
3364
3323
  rows,
3365
3324
  pinnedColumns?.left,
3366
3325
  pinnedColumns?.right,
@@ -3426,7 +3385,6 @@ function useDataTableRenderer({
3426
3385
  dataInPage,
3427
3386
  handleSortChange,
3428
3387
  isAllSelected,
3429
- // all rows are selected on this page
3430
3388
  isTotalSelected,
3431
3389
  isSelectedRow: (0, import_react25.useCallback)((model) => selectedModelSet.has(model), [selectedModelSet]),
3432
3390
  isRowSelectable: (0, import_react25.useCallback)(
@@ -3453,18 +3411,229 @@ function useDataTableRenderer({
3453
3411
  onSelectionModelChange?.(newSelectionModel);
3454
3412
  }
3455
3413
  },
3456
- [selectionModel, onSelectionModelChange, selectedModelSet]
3457
- ),
3458
- columns,
3459
- onTotalSelect: (0, import_react25.useCallback)(() => {
3460
- const selectableRows = rows.filter((row, i) => {
3461
- if (!isRowSelectable) return true;
3462
- return isRowSelectable({ row, id: getId(row, i) });
3463
- });
3464
- onSelectionModelChange?.(isTotalSelected ? [] : selectableRows.map(getId), !isTotalSelected);
3465
- }, [isTotalSelected, rows, onSelectionModelChange, getId, isRowSelectable])
3414
+ [selectionModel, onSelectionModelChange, selectedModelSet]
3415
+ ),
3416
+ columns,
3417
+ processedColumnGroups,
3418
+ onTotalSelect: (0, import_react25.useCallback)(() => {
3419
+ const selectableRows = rows.filter((row, i) => {
3420
+ if (!isRowSelectable) return true;
3421
+ return isRowSelectable({ row, id: getId(row, i) });
3422
+ });
3423
+ onSelectionModelChange?.(isTotalSelected ? [] : selectableRows.map(getId), !isTotalSelected);
3424
+ }, [isTotalSelected, rows, onSelectionModelChange, getId, isRowSelectable])
3425
+ };
3426
+ }
3427
+
3428
+ // src/components/Table/Table.tsx
3429
+ var import_react26 = __toESM(require("react"));
3430
+ var import_joy34 = require("@mui/joy");
3431
+ var Table = (props) => {
3432
+ const { children, ...inheritProps } = props;
3433
+ return /* @__PURE__ */ import_react26.default.createElement(import_joy34.Table, { ...inheritProps }, children);
3434
+ };
3435
+ Table.displayName = "Table";
3436
+ function TableHead(props) {
3437
+ const {
3438
+ headCells,
3439
+ showCheckbox,
3440
+ onCheckboxChange,
3441
+ slots: { checkbox: RenderCheckbox = Checkbox_default } = {},
3442
+ slotProps: { checkbox: checkboxProps = {} } = {}
3443
+ } = props;
3444
+ return /* @__PURE__ */ import_react26.default.createElement("thead", null, /* @__PURE__ */ import_react26.default.createElement("tr", null, showCheckbox && /* @__PURE__ */ import_react26.default.createElement(
3445
+ "th",
3446
+ {
3447
+ style: {
3448
+ width: "40px",
3449
+ textAlign: "center"
3450
+ }
3451
+ },
3452
+ /* @__PURE__ */ import_react26.default.createElement(RenderCheckbox, { onChange: onCheckboxChange, ...checkboxProps })
3453
+ ), headCells.map((headCell) => /* @__PURE__ */ import_react26.default.createElement(
3454
+ "th",
3455
+ {
3456
+ key: headCell.label,
3457
+ style: {
3458
+ width: headCell.width,
3459
+ minWidth: headCell.minWidth,
3460
+ maxWidth: headCell.maxWidth,
3461
+ textAlign: headCell.numeric ? "right" : "left"
3462
+ }
3463
+ },
3464
+ headCell.label
3465
+ ))));
3466
+ }
3467
+ TableHead.displayName = "TableHead";
3468
+ function TableBody(props) {
3469
+ const {
3470
+ rows,
3471
+ cellOrder,
3472
+ rowOptions,
3473
+ showCheckbox,
3474
+ onCheckboxChange,
3475
+ slots: { checkbox: RenderCheckbox = Checkbox_default } = {},
3476
+ slotProps: { checkbox: checkboxProps = {} } = {}
3477
+ } = props;
3478
+ 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(
3479
+ "td",
3480
+ {
3481
+ style: {
3482
+ textAlign: "center"
3483
+ }
3484
+ },
3485
+ /* @__PURE__ */ import_react26.default.createElement(RenderCheckbox, { onChange: (event) => onCheckboxChange?.(event, rowIndex), ...checkboxProps })
3486
+ ), cellOrder.map((cellKey) => /* @__PURE__ */ import_react26.default.createElement(
3487
+ "td",
3488
+ {
3489
+ key: cellKey,
3490
+ style: {
3491
+ textAlign: rowOptions?.[cellKey]?.numeric ? "right" : "left"
3492
+ }
3493
+ },
3494
+ row[cellKey]
3495
+ )))));
3496
+ }
3497
+ TableBody.displayName = "TableBody";
3498
+
3499
+ // src/components/Pagination/Pagination.tsx
3500
+ var import_react27 = __toESM(require("react"));
3501
+ var import_ChevronLeft2 = __toESM(require("@mui/icons-material/ChevronLeft"));
3502
+ var import_ChevronRight2 = __toESM(require("@mui/icons-material/ChevronRight"));
3503
+ var import_joy35 = require("@mui/joy");
3504
+ var PaginationButton = (0, import_joy35.styled)(Button_default, {
3505
+ name: "Pagination",
3506
+ slot: "button"
3507
+ })(({ theme, active, size }) => ({
3508
+ "--Button-size": {
3509
+ sm: "32px",
3510
+ md: "40px",
3511
+ lg: "48px"
3512
+ }[size],
3513
+ width: "var(--Button-size)",
3514
+ height: "var(--Button-size)",
3515
+ backgroundColor: active ? theme.vars.palette.primary.softHoverBg : "transparent",
3516
+ color: active ? theme.vars.palette.primary.softColor : theme.vars.palette.neutral.plainColor,
3517
+ "&:hover": {
3518
+ color: active ? theme.vars.palette.primary.softColor : theme.vars.palette.neutral.softColor,
3519
+ backgroundColor: active ? theme.vars.palette.primary.softActiveBg : theme.vars.palette.neutral.softHoverBg
3520
+ }
3521
+ }));
3522
+ var PaginationIconButton = (0, import_joy35.styled)(IconButton_default, {
3523
+ name: "Pagination",
3524
+ slot: "button"
3525
+ })(({ theme, size }) => ({
3526
+ "--IconButton-size": {
3527
+ sm: "32px",
3528
+ md: "40px",
3529
+ lg: "48px"
3530
+ }[size],
3531
+ "--Icon-fontSize": "20px",
3532
+ width: "var(--IconButton-size)",
3533
+ height: "var(--IconButton-size)",
3534
+ color: theme.vars.palette.neutral.plainColor,
3535
+ "&:hover": {
3536
+ color: theme.vars.palette.neutral.softColor,
3537
+ backgroundColor: theme.vars.palette.neutral.softHoverBg
3538
+ }
3539
+ }));
3540
+ var PaginationRoot = (0, import_joy35.styled)(Stack_default, {
3541
+ name: "Pagination",
3542
+ slot: "root"
3543
+ })({});
3544
+ var PaginationContainer = (0, import_joy35.styled)(Stack_default, {
3545
+ name: "Pagination",
3546
+ slot: "container"
3547
+ })(({ theme, size }) => ({
3548
+ gap: {
3549
+ sm: theme.spacing(1),
3550
+ md: theme.spacing(1.5),
3551
+ lg: theme.spacing(2)
3552
+ }[size]
3553
+ }));
3554
+ function Pagination(props) {
3555
+ const {
3556
+ paginationModel: _paginationModel,
3557
+ defaultPaginationModel = { page: 1, pageSize: 25 },
3558
+ onPageChange,
3559
+ rowCount,
3560
+ size = "md",
3561
+ ...innerProps
3562
+ } = props;
3563
+ const [paginationModel, setPaginationModel] = useControlledState(
3564
+ _paginationModel,
3565
+ defaultPaginationModel,
3566
+ (0, import_react27.useCallback)(
3567
+ (newPage) => {
3568
+ onPageChange(newPage.page);
3569
+ },
3570
+ [onPageChange]
3571
+ )
3572
+ );
3573
+ const handlePageChange = (newPage) => {
3574
+ setPaginationModel({ ...paginationModel, page: newPage });
3466
3575
  };
3576
+ const firstPage = 1;
3577
+ const lastPage = Math.max(firstPage, Math.ceil(rowCount / paginationModel.pageSize));
3578
+ const beforePages = [paginationModel.page - 2, paginationModel.page - 1].filter((p) => p > 1);
3579
+ const afterPages = [paginationModel.page + 1, paginationModel.page + 2].filter((p) => p <= lastPage - 1);
3580
+ const isMoreAfterPages = lastPage > 1 && paginationModel.page < lastPage - 3;
3581
+ const isMoreBeforePages = lastPage > 1 && paginationModel.page > 4;
3582
+ (0, import_react27.useEffect)(() => {
3583
+ if (paginationModel.page > lastPage) {
3584
+ setPaginationModel({ ...paginationModel, page: lastPage });
3585
+ }
3586
+ }, [rowCount, paginationModel, lastPage, setPaginationModel]);
3587
+ return /* @__PURE__ */ import_react27.default.createElement(PaginationRoot, { ...innerProps }, /* @__PURE__ */ import_react27.default.createElement(PaginationContainer, { direction: "row", size, alignItems: "center" }, /* @__PURE__ */ import_react27.default.createElement(
3588
+ PaginationIconButton,
3589
+ {
3590
+ size,
3591
+ variant: "plain",
3592
+ color: "neutral",
3593
+ onClick: () => handlePageChange(paginationModel.page - 1),
3594
+ disabled: paginationModel.page === firstPage,
3595
+ "aria-label": "Previous page"
3596
+ },
3597
+ /* @__PURE__ */ import_react27.default.createElement(import_ChevronLeft2.default, null)
3598
+ ), paginationModel.page !== firstPage && /* @__PURE__ */ import_react27.default.createElement(PaginationButton, { size, variant: "plain", color: "neutral", onClick: () => handlePageChange(firstPage) }, firstPage), isMoreBeforePages && /* @__PURE__ */ import_react27.default.createElement(
3599
+ PaginationButton,
3600
+ {
3601
+ size,
3602
+ variant: "plain",
3603
+ color: "neutral",
3604
+ onClick: () => handlePageChange(paginationModel.page - 3),
3605
+ "aria-label": "More previous pages"
3606
+ },
3607
+ "..."
3608
+ ), 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: "true", 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(
3609
+ PaginationButton,
3610
+ {
3611
+ size,
3612
+ variant: "plain",
3613
+ color: "neutral",
3614
+ "aria-label": "More next pages",
3615
+ onClick: () => handlePageChange(paginationModel.page + 3)
3616
+ },
3617
+ "..."
3618
+ ), paginationModel.page !== lastPage && /* @__PURE__ */ import_react27.default.createElement(PaginationButton, { size, variant: "plain", color: "neutral", onClick: () => handlePageChange(lastPage) }, lastPage), /* @__PURE__ */ import_react27.default.createElement(
3619
+ PaginationIconButton,
3620
+ {
3621
+ size,
3622
+ variant: "plain",
3623
+ color: "neutral",
3624
+ onClick: () => handlePageChange(paginationModel.page + 1),
3625
+ disabled: paginationModel.page === lastPage,
3626
+ "aria-label": "Next page"
3627
+ },
3628
+ /* @__PURE__ */ import_react27.default.createElement(import_ChevronRight2.default, null)
3629
+ )));
3467
3630
  }
3631
+ Pagination.displayName = "Pagination";
3632
+
3633
+ // src/components/Pagination/index.ts
3634
+ var Pagination_default = Pagination;
3635
+
3636
+ // src/components/DataTable/DataTable.tsx
3468
3637
  function Component(props, apiRef) {
3469
3638
  const {
3470
3639
  rows,
@@ -3498,6 +3667,8 @@ function Component(props, apiRef) {
3498
3667
  getId: ____________,
3499
3668
  // getId is used in useDataTableRenderer
3500
3669
  loading,
3670
+ columnGroupingModel: _________________,
3671
+ // columnGroupingModel is used in useDataTableRenderer
3501
3672
  slots: {
3502
3673
  checkbox: RenderCheckbox = Checkbox_default,
3503
3674
  toolbar: Toolbar,
@@ -3509,11 +3680,12 @@ function Component(props, apiRef) {
3509
3680
  isTotalSelected: ___________,
3510
3681
  ...innerProps
3511
3682
  } = props;
3512
- const tableId = (0, import_react25.useId)();
3513
- const parentRef = (0, import_react25.useRef)(null);
3514
- const tableBodyRef = (0, import_react25.useRef)(null);
3683
+ const tableId = (0, import_react28.useId)();
3684
+ const parentRef = (0, import_react28.useRef)(null);
3685
+ const tableBodyRef = (0, import_react28.useRef)(null);
3515
3686
  const {
3516
3687
  columns,
3688
+ processedColumnGroups,
3517
3689
  isAllSelected,
3518
3690
  isSelectedRow,
3519
3691
  isRowSelectable: isRowSelectableCheck,
@@ -3541,29 +3713,29 @@ function Component(props, apiRef) {
3541
3713
  measureElement: (element) => element.clientHeight,
3542
3714
  overscan: 10
3543
3715
  });
3544
- const paginationModel = (0, import_react25.useMemo)(() => ({ page, pageSize }), [page, pageSize]);
3716
+ const paginationModel = (0, import_react28.useMemo)(() => ({ page, pageSize }), [page, pageSize]);
3545
3717
  const totalSize = virtualizer.getTotalSize();
3546
3718
  const virtualizedItems = virtualizer.getVirtualItems();
3547
- const getRowClickHandler = (0, import_react25.useCallback)(
3719
+ const getRowClickHandler = (0, import_react28.useCallback)(
3548
3720
  (row, rowId) => (e) => {
3549
3721
  onRowClick?.({ row, rowId }, e);
3550
3722
  checkboxSelection && !disableSelectionOnClick && isRowSelectableCheck(rowId, row) && onCheckboxChange(e, rowId);
3551
3723
  },
3552
3724
  [onRowClick, checkboxSelection, disableSelectionOnClick, onCheckboxChange, isRowSelectableCheck]
3553
3725
  );
3554
- const getRowFocusHandler = (0, import_react25.useCallback)(
3726
+ const getRowFocusHandler = (0, import_react28.useCallback)(
3555
3727
  (rowId) => () => {
3556
3728
  onRowFocus(rowId);
3557
3729
  },
3558
3730
  [onRowFocus]
3559
3731
  );
3560
- const getCheckboxClickHandler = (0, import_react25.useCallback)(
3732
+ const getCheckboxClickHandler = (0, import_react28.useCallback)(
3561
3733
  () => (e) => {
3562
3734
  e.stopPropagation();
3563
3735
  },
3564
3736
  []
3565
3737
  );
3566
- const getCheckboxChangeHandler = (0, import_react25.useCallback)(
3738
+ const getCheckboxChangeHandler = (0, import_react28.useCallback)(
3567
3739
  (rowId, row) => (e) => {
3568
3740
  if (isRowSelectableCheck(rowId, row)) {
3569
3741
  onCheckboxChange(e, rowId);
@@ -3571,7 +3743,7 @@ function Component(props, apiRef) {
3571
3743
  },
3572
3744
  [onCheckboxChange, isRowSelectableCheck]
3573
3745
  );
3574
- (0, import_react25.useImperativeHandle)(apiRef, () => ({
3746
+ (0, import_react28.useImperativeHandle)(apiRef, () => ({
3575
3747
  getRowIndexRelativeToVisibleRows(rowId) {
3576
3748
  return dataInPage.findIndex((row) => String(getId(row)) === rowId);
3577
3749
  },
@@ -3587,7 +3759,7 @@ function Component(props, apiRef) {
3587
3759
  });
3588
3760
  }
3589
3761
  }));
3590
- return /* @__PURE__ */ import_react25.default.createElement(
3762
+ return /* @__PURE__ */ import_react28.default.createElement(
3591
3763
  Box_default,
3592
3764
  {
3593
3765
  sx: {
@@ -3597,7 +3769,7 @@ function Component(props, apiRef) {
3597
3769
  flexDirection: "column"
3598
3770
  }
3599
3771
  },
3600
- (!!checkboxSelection || !!Toolbar) && /* @__PURE__ */ import_react25.default.createElement(
3772
+ (!!checkboxSelection || !!Toolbar) && /* @__PURE__ */ import_react28.default.createElement(
3601
3773
  Stack_default,
3602
3774
  {
3603
3775
  direction: "row",
@@ -3607,10 +3779,10 @@ function Component(props, apiRef) {
3607
3779
  justifyContent: "space-between",
3608
3780
  alignItems: "center"
3609
3781
  },
3610
- !!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"))),
3611
- Toolbar && /* @__PURE__ */ import_react25.default.createElement(Toolbar, { ...toolbarProps || {} })
3782
+ !!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"))),
3783
+ Toolbar && /* @__PURE__ */ import_react28.default.createElement(Toolbar, { ...toolbarProps || {} })
3612
3784
  ),
3613
- /* @__PURE__ */ import_react25.default.createElement(
3785
+ /* @__PURE__ */ import_react28.default.createElement(
3614
3786
  Sheet_default,
3615
3787
  {
3616
3788
  variant: "outlined",
@@ -3621,7 +3793,8 @@ function Component(props, apiRef) {
3621
3793
  boxShadow: "sm",
3622
3794
  borderRadius: "sm",
3623
3795
  "--DataTableSheet-width": parentRef.current?.clientWidth + "px",
3624
- backgroundColor: "white"
3796
+ backgroundColor: "white",
3797
+ "--TableCell-cornerRadius": "0px"
3625
3798
  },
3626
3799
  className: [
3627
3800
  ...(parentRef.current?.scrollLeft || 0) > 0 ? ["ScrollableRight"] : [],
@@ -3630,15 +3803,33 @@ function Component(props, apiRef) {
3630
3803
  ref: parentRef,
3631
3804
  ...backgroundProps
3632
3805
  },
3633
- /* @__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(
3806
+ /* @__PURE__ */ import_react28.default.createElement(Table, { ...innerProps }, /* @__PURE__ */ import_react28.default.createElement("colgroup", null, checkboxSelection && /* @__PURE__ */ import_react28.default.createElement(
3807
+ "col",
3808
+ {
3809
+ style: {
3810
+ width: "40px"
3811
+ }
3812
+ }
3813
+ ), columns.map((c) => /* @__PURE__ */ import_react28.default.createElement(
3814
+ "col",
3815
+ {
3816
+ ref: c.tableColRef,
3817
+ key: `${c.field.toString()}_${c.width}`,
3818
+ style: {
3819
+ width: c.width
3820
+ }
3821
+ }
3822
+ ))), /* @__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(
3634
3823
  "th",
3635
3824
  {
3825
+ rowSpan: processedColumnGroups.maxLevel + 2,
3636
3826
  style: {
3637
3827
  width: "40px",
3638
- textAlign: "center"
3828
+ textAlign: "center",
3829
+ verticalAlign: "middle"
3639
3830
  }
3640
3831
  },
3641
- /* @__PURE__ */ import_react25.default.createElement(
3832
+ /* @__PURE__ */ import_react28.default.createElement(
3642
3833
  RenderCheckbox,
3643
3834
  {
3644
3835
  onChange: onAllCheckboxChange,
@@ -3648,17 +3839,56 @@ function Component(props, apiRef) {
3648
3839
  ...checkboxProps
3649
3840
  }
3650
3841
  )
3651
- ), columns.map((c, i) => /* @__PURE__ */ import_react25.default.createElement(
3652
- HeadCell2,
3842
+ ), 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) => {
3843
+ const nextGroup = levelGroups[groupIndex + 1];
3844
+ const emptyCells = nextGroup ? nextGroup.startIndex - (group.startIndex + group.colspan) : columns.length - (group.startIndex + group.colspan);
3845
+ const params = { groupId: group.groupId };
3846
+ const computedHeaderClassName = group.headerClassName ? typeof group.headerClassName === "function" ? group.headerClassName(params) : group.headerClassName : void 0;
3847
+ return /* @__PURE__ */ import_react28.default.createElement(import_react28.Fragment, { key: group.groupId }, /* @__PURE__ */ import_react28.default.createElement(
3848
+ "th",
3849
+ {
3850
+ colSpan: group.colspan,
3851
+ style: {
3852
+ textAlign: "center",
3853
+ fontWeight: "bold",
3854
+ verticalAlign: "middle"
3855
+ },
3856
+ className: computedHeaderClassName
3857
+ },
3858
+ group.headerName ?? group.groupId
3859
+ ), emptyCells > 0 && Array.from({ length: emptyCells }).map((_2, i) => /* @__PURE__ */ import_react28.default.createElement("th", { key: `empty-between-${level}-${groupIndex}-${i}`, colSpan: 1 })));
3860
+ }))), /* @__PURE__ */ import_react28.default.createElement("tr", null, !processedColumnGroups && checkboxSelection && /* @__PURE__ */ import_react28.default.createElement(
3861
+ "th",
3653
3862
  {
3654
- tableId,
3655
- key: `${c.field.toString()}_${i}`,
3656
- stickyHeader: props.stickyHeader,
3657
- editMode: !!c.isCellEditable,
3658
- onSortChange: handleSortChange,
3659
- ...c
3660
- }
3661
- )))), /* @__PURE__ */ import_react25.default.createElement(
3863
+ style: {
3864
+ width: "40px",
3865
+ textAlign: "center"
3866
+ }
3867
+ },
3868
+ /* @__PURE__ */ import_react28.default.createElement(
3869
+ RenderCheckbox,
3870
+ {
3871
+ onChange: onAllCheckboxChange,
3872
+ checked: isAllSelected,
3873
+ indeterminate: (selectionModel || []).length > 0 && !isAllSelected,
3874
+ disabled: dataInPage.length > 0 && !selectableRowCount,
3875
+ ...checkboxProps
3876
+ }
3877
+ )
3878
+ ), columns.map((c, i) => (
3879
+ // @ts-ignore
3880
+ /* @__PURE__ */ import_react28.default.createElement(
3881
+ HeadCell2,
3882
+ {
3883
+ tableId,
3884
+ key: `${c.field.toString()}_${i}`,
3885
+ stickyHeader: props.stickyHeader,
3886
+ editMode: !!c.isCellEditable,
3887
+ onSortChange: handleSortChange,
3888
+ ...c
3889
+ }
3890
+ )
3891
+ )))), /* @__PURE__ */ import_react28.default.createElement(
3662
3892
  VirtualizedTableBody,
3663
3893
  {
3664
3894
  ref: tableBodyRef,
@@ -3668,7 +3898,7 @@ function Component(props, apiRef) {
3668
3898
  role: "rowgroup",
3669
3899
  "aria-label": "DataTableBody"
3670
3900
  },
3671
- !!loading && /* @__PURE__ */ import_react25.default.createElement(OverlayWrapper, null, /* @__PURE__ */ import_react25.default.createElement(
3901
+ !!loading && /* @__PURE__ */ import_react28.default.createElement(OverlayWrapper, null, /* @__PURE__ */ import_react28.default.createElement(
3672
3902
  "td",
3673
3903
  {
3674
3904
  style: {
@@ -3677,7 +3907,7 @@ function Component(props, apiRef) {
3677
3907
  overflow: "visible"
3678
3908
  }
3679
3909
  },
3680
- /* @__PURE__ */ import_react25.default.createElement(
3910
+ /* @__PURE__ */ import_react28.default.createElement(
3681
3911
  Box_default,
3682
3912
  {
3683
3913
  sx: {
@@ -3687,7 +3917,7 @@ function Component(props, apiRef) {
3687
3917
  right: 0
3688
3918
  }
3689
3919
  },
3690
- /* @__PURE__ */ import_react25.default.createElement(LoadingOverlay, null)
3920
+ /* @__PURE__ */ import_react28.default.createElement(LoadingOverlay, null)
3691
3921
  )
3692
3922
  )),
3693
3923
  virtualizedItems.map((virtualizedRow, index) => {
@@ -3695,7 +3925,7 @@ function Component(props, apiRef) {
3695
3925
  const row = dataInPage[rowIndex];
3696
3926
  const rowId = getId(row, rowIndex);
3697
3927
  const striped = stripe && (stripe === "even" && (rowIndex + 1) % 2 === 0 || stripe === "odd" && (rowIndex + 1) % 2 === 1);
3698
- return /* @__PURE__ */ import_react25.default.createElement(
3928
+ return /* @__PURE__ */ import_react28.default.createElement(
3699
3929
  VirtualizedTableRow,
3700
3930
  {
3701
3931
  key: virtualizedRow.key,
@@ -3713,7 +3943,7 @@ function Component(props, apiRef) {
3713
3943
  transform: `translateY(${virtualizedRow.start - index * virtualizedRow.size}px)`
3714
3944
  }
3715
3945
  },
3716
- checkboxSelection && /* @__PURE__ */ import_react25.default.createElement(
3946
+ checkboxSelection && /* @__PURE__ */ import_react28.default.createElement(
3717
3947
  "th",
3718
3948
  {
3719
3949
  scope: "row",
@@ -3721,7 +3951,7 @@ function Component(props, apiRef) {
3721
3951
  textAlign: "center"
3722
3952
  }
3723
3953
  },
3724
- /* @__PURE__ */ import_react25.default.createElement(
3954
+ /* @__PURE__ */ import_react28.default.createElement(
3725
3955
  RenderCheckbox,
3726
3956
  {
3727
3957
  onClick: getCheckboxClickHandler(),
@@ -3732,7 +3962,7 @@ function Component(props, apiRef) {
3732
3962
  }
3733
3963
  )
3734
3964
  ),
3735
- /* @__PURE__ */ import_react25.default.createElement(
3965
+ /* @__PURE__ */ import_react28.default.createElement(
3736
3966
  BodyRow2,
3737
3967
  {
3738
3968
  tableId,
@@ -3745,9 +3975,9 @@ function Component(props, apiRef) {
3745
3975
  )
3746
3976
  );
3747
3977
  })
3748
- ), Footer && /* @__PURE__ */ import_react25.default.createElement(Footer, null))
3978
+ ), Footer && /* @__PURE__ */ import_react28.default.createElement(Footer, null))
3749
3979
  ),
3750
- pagination && /* @__PURE__ */ import_react25.default.createElement(
3980
+ pagination && /* @__PURE__ */ import_react28.default.createElement(
3751
3981
  Pagination_default,
3752
3982
  {
3753
3983
  pt: 2,
@@ -3760,16 +3990,16 @@ function Component(props, apiRef) {
3760
3990
  )
3761
3991
  );
3762
3992
  }
3763
- var DataTable = (0, import_react25.forwardRef)(Component);
3993
+ var DataTable = (0, import_react28.forwardRef)(Component);
3764
3994
  DataTable.displayName = "DataTable";
3765
3995
 
3766
3996
  // src/components/DateRangePicker/DateRangePicker.tsx
3767
- var import_react26 = __toESM(require("react"));
3997
+ var import_react29 = __toESM(require("react"));
3768
3998
  var import_react_imask2 = require("react-imask");
3769
3999
  var import_CalendarToday2 = __toESM(require("@mui/icons-material/CalendarToday"));
3770
- var import_joy34 = require("@mui/joy");
4000
+ var import_joy36 = require("@mui/joy");
3771
4001
  var import_base3 = require("@mui/base");
3772
- var CalendarButton2 = (0, import_joy34.styled)(IconButton_default, {
4002
+ var CalendarButton2 = (0, import_joy36.styled)(IconButton_default, {
3773
4003
  name: "DateRangePicker",
3774
4004
  slot: "calendarButton"
3775
4005
  })(({ theme }) => ({
@@ -3779,13 +4009,13 @@ var CalendarButton2 = (0, import_joy34.styled)(IconButton_default, {
3779
4009
  outline: `${theme.getCssVar("focus-thickness")} solid ${theme.getCssVar("palette-focusVisible")}`
3780
4010
  }
3781
4011
  }));
3782
- var StyledPopper2 = (0, import_joy34.styled)(import_base3.Popper, {
4012
+ var StyledPopper2 = (0, import_joy36.styled)(import_base3.Popper, {
3783
4013
  name: "DateRangePicker",
3784
4014
  slot: "popper"
3785
4015
  })(({ theme }) => ({
3786
4016
  zIndex: theme.zIndex.tooltip
3787
4017
  }));
3788
- var CalendarSheet2 = (0, import_joy34.styled)(Sheet_default, {
4018
+ var CalendarSheet2 = (0, import_joy36.styled)(Sheet_default, {
3789
4019
  name: "DateRangePicker",
3790
4020
  slot: "sheet",
3791
4021
  overridesResolver: (props, styles) => styles.root
@@ -3795,7 +4025,7 @@ var CalendarSheet2 = (0, import_joy34.styled)(Sheet_default, {
3795
4025
  boxShadow: theme.shadow.md,
3796
4026
  borderRadius: theme.radius.md
3797
4027
  }));
3798
- var DateRangePickerRoot = (0, import_joy34.styled)("div", {
4028
+ var DateRangePickerRoot = (0, import_joy36.styled)("div", {
3799
4029
  name: "DateRangePicker",
3800
4030
  slot: "root",
3801
4031
  overridesResolver: (props, styles) => styles.root
@@ -3865,9 +4095,9 @@ var parseDates = (str, format) => {
3865
4095
  var formatToPattern2 = (format) => {
3866
4096
  return `${format} - ${format}`.replace(/YYYY/g, "Y").replace(/MM/g, "M").replace(/DD/g, "D").replace(/[^YMD\s]/g, (match) => `${match}\``);
3867
4097
  };
3868
- var TextMaskAdapter5 = import_react26.default.forwardRef(function TextMaskAdapter6(props, ref) {
4098
+ var TextMaskAdapter5 = import_react29.default.forwardRef(function TextMaskAdapter6(props, ref) {
3869
4099
  const { onChange, format, ...other } = props;
3870
- return /* @__PURE__ */ import_react26.default.createElement(
4100
+ return /* @__PURE__ */ import_react29.default.createElement(
3871
4101
  import_react_imask2.IMaskInput,
3872
4102
  {
3873
4103
  ...other,
@@ -3901,8 +4131,8 @@ var TextMaskAdapter5 = import_react26.default.forwardRef(function TextMaskAdapte
3901
4131
  }
3902
4132
  );
3903
4133
  });
3904
- var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
3905
- const props = (0, import_joy34.useThemeProps)({ props: inProps, name: "DateRangePicker" });
4134
+ var DateRangePicker = (0, import_react29.forwardRef)((inProps, ref) => {
4135
+ const props = (0, import_joy36.useThemeProps)({ props: inProps, name: "DateRangePicker" });
3906
4136
  const {
3907
4137
  onChange,
3908
4138
  disabled,
@@ -3925,23 +4155,23 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
3925
4155
  readOnly,
3926
4156
  ...innerProps
3927
4157
  } = props;
3928
- const innerRef = (0, import_react26.useRef)(null);
3929
- const buttonRef = (0, import_react26.useRef)(null);
4158
+ const innerRef = (0, import_react29.useRef)(null);
4159
+ const buttonRef = (0, import_react29.useRef)(null);
3930
4160
  const [value, setValue] = useControlledState(
3931
4161
  props.value,
3932
4162
  props.defaultValue || "",
3933
- (0, import_react26.useCallback)((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
4163
+ (0, import_react29.useCallback)((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
3934
4164
  );
3935
- const [displayValue, setDisplayValue] = (0, import_react26.useState)(
4165
+ const [displayValue, setDisplayValue] = (0, import_react29.useState)(
3936
4166
  () => value ? formatValueString2(parseDates(value, format), displayFormat) : ""
3937
4167
  );
3938
- const [anchorEl, setAnchorEl] = (0, import_react26.useState)(null);
4168
+ const [anchorEl, setAnchorEl] = (0, import_react29.useState)(null);
3939
4169
  const open = Boolean(anchorEl);
3940
- const calendarValue = (0, import_react26.useMemo)(
4170
+ const calendarValue = (0, import_react29.useMemo)(
3941
4171
  () => value ? parseDates(value, format) : void 0,
3942
4172
  [value, format]
3943
4173
  );
3944
- (0, import_react26.useEffect)(() => {
4174
+ (0, import_react29.useEffect)(() => {
3945
4175
  if (value) {
3946
4176
  try {
3947
4177
  const dates = parseDates(value, format);
@@ -3953,13 +4183,13 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
3953
4183
  setDisplayValue("");
3954
4184
  }
3955
4185
  }, [displayFormat, value, format]);
3956
- (0, import_react26.useEffect)(() => {
4186
+ (0, import_react29.useEffect)(() => {
3957
4187
  if (!anchorEl) {
3958
4188
  innerRef.current?.blur();
3959
4189
  }
3960
4190
  }, [anchorEl, innerRef]);
3961
- (0, import_react26.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
3962
- const handleChange = (0, import_react26.useCallback)(
4191
+ (0, import_react29.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
4192
+ const handleChange = (0, import_react29.useCallback)(
3963
4193
  (event) => {
3964
4194
  const value2 = event.target.value;
3965
4195
  setDisplayValue(value2 ? formatValueString2(parseDates(value2, format), displayFormat) : value2);
@@ -3967,7 +4197,7 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
3967
4197
  },
3968
4198
  [displayFormat, format, setValue]
3969
4199
  );
3970
- const handleDisplayInputChange = (0, import_react26.useCallback)(
4200
+ const handleDisplayInputChange = (0, import_react29.useCallback)(
3971
4201
  (event) => {
3972
4202
  if (event.target.value === "") {
3973
4203
  handleChange({
@@ -3992,14 +4222,14 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
3992
4222
  },
3993
4223
  [displayFormat, format, handleChange, props.name]
3994
4224
  );
3995
- const handleCalendarToggle = (0, import_react26.useCallback)(
4225
+ const handleCalendarToggle = (0, import_react29.useCallback)(
3996
4226
  (event) => {
3997
4227
  setAnchorEl(anchorEl ? null : event.currentTarget);
3998
4228
  innerRef.current?.focus();
3999
4229
  },
4000
4230
  [anchorEl, setAnchorEl, innerRef]
4001
4231
  );
4002
- const handleCalendarChange = (0, import_react26.useCallback)(
4232
+ const handleCalendarChange = (0, import_react29.useCallback)(
4003
4233
  ([date1, date2]) => {
4004
4234
  if (!date1 || !date2) return;
4005
4235
  const formattedValue = formatValueString2([date1, date2], format);
@@ -4013,7 +4243,7 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
4013
4243
  },
4014
4244
  [props.value, props.name, onChange, setValue, setAnchorEl, format, displayFormat]
4015
4245
  );
4016
- const handleInputMouseDown = (0, import_react26.useCallback)(
4246
+ const handleInputMouseDown = (0, import_react29.useCallback)(
4017
4247
  (event) => {
4018
4248
  if (inputReadOnly) {
4019
4249
  event.preventDefault();
@@ -4022,7 +4252,7 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
4022
4252
  },
4023
4253
  [inputReadOnly, buttonRef]
4024
4254
  );
4025
- 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(
4255
+ 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(
4026
4256
  Input_default,
4027
4257
  {
4028
4258
  ...innerProps,
@@ -4050,7 +4280,7 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
4050
4280
  error,
4051
4281
  className,
4052
4282
  sx,
4053
- endDecorator: /* @__PURE__ */ import_react26.default.createElement(
4283
+ endDecorator: /* @__PURE__ */ import_react29.default.createElement(
4054
4284
  CalendarButton2,
4055
4285
  {
4056
4286
  ref: buttonRef,
@@ -4062,13 +4292,13 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
4062
4292
  "aria-expanded": open,
4063
4293
  disabled
4064
4294
  },
4065
- /* @__PURE__ */ import_react26.default.createElement(import_CalendarToday2.default, null)
4295
+ /* @__PURE__ */ import_react29.default.createElement(import_CalendarToday2.default, null)
4066
4296
  ),
4067
4297
  label,
4068
4298
  helperText,
4069
4299
  readOnly: readOnly || inputReadOnly
4070
4300
  }
4071
- ), open && /* @__PURE__ */ import_react26.default.createElement(import_base3.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react26.default.createElement(
4301
+ ), open && /* @__PURE__ */ import_react29.default.createElement(import_base3.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react29.default.createElement(
4072
4302
  StyledPopper2,
4073
4303
  {
4074
4304
  id: "date-range-picker-popper",
@@ -4087,7 +4317,7 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
4087
4317
  "aria-label": "Calendar Tooltip",
4088
4318
  "aria-expanded": open
4089
4319
  },
4090
- /* @__PURE__ */ import_react26.default.createElement(CalendarSheet2, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react26.default.createElement(
4320
+ /* @__PURE__ */ import_react29.default.createElement(CalendarSheet2, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react29.default.createElement(
4091
4321
  Calendar_default,
4092
4322
  {
4093
4323
  rangeSelection: true,
@@ -4098,14 +4328,14 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
4098
4328
  disableFuture,
4099
4329
  disablePast
4100
4330
  }
4101
- ), !hideClearButton && /* @__PURE__ */ import_react26.default.createElement(
4331
+ ), !hideClearButton && /* @__PURE__ */ import_react29.default.createElement(
4102
4332
  DialogActions_default,
4103
4333
  {
4104
4334
  sx: {
4105
4335
  p: 1
4106
4336
  }
4107
4337
  },
4108
- /* @__PURE__ */ import_react26.default.createElement(
4338
+ /* @__PURE__ */ import_react29.default.createElement(
4109
4339
  Button_default,
4110
4340
  {
4111
4341
  size,
@@ -4125,10 +4355,10 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
4125
4355
  DateRangePicker.displayName = "DateRangePicker";
4126
4356
 
4127
4357
  // src/components/DialogContent/DialogContent.tsx
4128
- var import_joy35 = require("@mui/joy");
4129
- var import_framer_motion22 = require("framer-motion");
4130
- var MotionDialogContent = (0, import_framer_motion22.motion)(import_joy35.DialogContent);
4131
- var StyledDialogContent = (0, import_joy35.styled)(MotionDialogContent)(({ theme }) => ({
4358
+ var import_joy37 = require("@mui/joy");
4359
+ var import_framer_motion23 = require("framer-motion");
4360
+ var MotionDialogContent = (0, import_framer_motion23.motion)(import_joy37.DialogContent);
4361
+ var StyledDialogContent = (0, import_joy37.styled)(MotionDialogContent)(({ theme }) => ({
4132
4362
  padding: theme.spacing(0, 6, 5)
4133
4363
  }));
4134
4364
  var DialogContent = StyledDialogContent;
@@ -4138,10 +4368,10 @@ DialogContent.displayName = "DialogContent";
4138
4368
  var DialogContent_default = DialogContent;
4139
4369
 
4140
4370
  // src/components/DialogTitle/DialogTitle.tsx
4141
- var import_joy36 = require("@mui/joy");
4142
- var import_framer_motion23 = require("framer-motion");
4143
- var MotionDialogTitle = (0, import_framer_motion23.motion)(import_joy36.DialogTitle);
4144
- var StyledDialogTitle = (0, import_joy36.styled)(MotionDialogTitle)(({ theme }) => ({
4371
+ var import_joy38 = require("@mui/joy");
4372
+ var import_framer_motion24 = require("framer-motion");
4373
+ var MotionDialogTitle = (0, import_framer_motion24.motion)(import_joy38.DialogTitle);
4374
+ var StyledDialogTitle = (0, import_joy38.styled)(MotionDialogTitle)(({ theme }) => ({
4145
4375
  padding: theme.spacing(4, 6)
4146
4376
  }));
4147
4377
  var DialogTitle = StyledDialogTitle;
@@ -4151,58 +4381,58 @@ DialogTitle.displayName = "DialogTitle";
4151
4381
  var DialogTitle_default = DialogTitle;
4152
4382
 
4153
4383
  // src/components/DialogFrame/DialogFrame.tsx
4154
- var import_react28 = __toESM(require("react"));
4384
+ var import_react31 = __toESM(require("react"));
4155
4385
 
4156
4386
  // src/components/Modal/Modal.tsx
4157
- var import_react27 = __toESM(require("react"));
4158
- var import_joy37 = require("@mui/joy");
4159
- var import_framer_motion24 = require("framer-motion");
4160
- var MotionModal = (0, import_framer_motion24.motion)(import_joy37.Modal);
4387
+ var import_react30 = __toESM(require("react"));
4388
+ var import_joy39 = require("@mui/joy");
4389
+ var import_framer_motion25 = require("framer-motion");
4390
+ var MotionModal = (0, import_framer_motion25.motion)(import_joy39.Modal);
4161
4391
  var Modal = MotionModal;
4162
4392
  Modal.displayName = "Modal";
4163
- var StyledModalDialog = (0, import_joy37.styled)(import_joy37.ModalDialog)({
4393
+ var StyledModalDialog = (0, import_joy39.styled)(import_joy39.ModalDialog)({
4164
4394
  padding: 0
4165
4395
  });
4166
4396
  var ModalDialog = StyledModalDialog;
4167
4397
  ModalDialog.displayName = "ModalDialog";
4168
- var ModalClose = import_joy37.ModalClose;
4169
- var MotionModalOverflow = (0, import_framer_motion24.motion)(import_joy37.ModalOverflow);
4398
+ var ModalClose = import_joy39.ModalClose;
4399
+ var MotionModalOverflow = (0, import_framer_motion25.motion)(import_joy39.ModalOverflow);
4170
4400
  var ModalOverflow = MotionModalOverflow;
4171
4401
  ModalOverflow.displayName = "ModalOverflow";
4172
4402
  function ModalFrame(props) {
4173
4403
  const { title, children, titleStartDecorator, onClose, ...innerProps } = props;
4174
- return /* @__PURE__ */ import_react27.default.createElement(StyledModalDialog, { ...innerProps }, /* @__PURE__ */ import_react27.default.createElement(ModalClose, { onClick: onClose }), /* @__PURE__ */ import_react27.default.createElement(DialogTitle_default, null, titleStartDecorator, title), /* @__PURE__ */ import_react27.default.createElement(DialogContent_default, null, children));
4404
+ return /* @__PURE__ */ import_react30.default.createElement(StyledModalDialog, { ...innerProps }, /* @__PURE__ */ import_react30.default.createElement(ModalClose, { onClick: onClose }), /* @__PURE__ */ import_react30.default.createElement(DialogTitle_default, null, titleStartDecorator, title), /* @__PURE__ */ import_react30.default.createElement(DialogContent_default, null, children));
4175
4405
  }
4176
4406
  ModalFrame.displayName = "ModalFrame";
4177
4407
 
4178
4408
  // src/components/DialogFrame/DialogFrame.tsx
4179
- var import_joy38 = require("@mui/joy");
4180
- var StyledDialogFrame = (0, import_joy38.styled)(ModalDialog, {
4409
+ var import_joy40 = require("@mui/joy");
4410
+ var StyledDialogFrame = (0, import_joy40.styled)(ModalDialog, {
4181
4411
  name: "Dialog",
4182
4412
  slot: "Root"
4183
4413
  })({
4184
4414
  padding: 0
4185
4415
  });
4186
- var DialogFrame = import_react28.default.forwardRef((props, ref) => {
4416
+ var DialogFrame = import_react31.default.forwardRef((props, ref) => {
4187
4417
  const { title, children, actions, fullscreen, ...innerProps } = props;
4188
- return /* @__PURE__ */ import_react28.default.createElement(StyledDialogFrame, { layout: fullscreen ? "fullscreen" : "center", ref, ...innerProps }, /* @__PURE__ */ import_react28.default.createElement(DialogTitle_default, null, title), /* @__PURE__ */ import_react28.default.createElement(DialogContent_default, null, children), /* @__PURE__ */ import_react28.default.createElement(DialogActions_default, null, actions));
4418
+ return /* @__PURE__ */ import_react31.default.createElement(StyledDialogFrame, { layout: fullscreen ? "fullscreen" : "center", ref, ...innerProps }, /* @__PURE__ */ import_react31.default.createElement(DialogTitle_default, null, title), /* @__PURE__ */ import_react31.default.createElement(DialogContent_default, null, children), /* @__PURE__ */ import_react31.default.createElement(DialogActions_default, null, actions));
4189
4419
  });
4190
4420
  DialogFrame.displayName = "DialogFrame";
4191
4421
 
4192
4422
  // src/components/Divider/Divider.tsx
4193
- var import_react29 = __toESM(require("react"));
4194
- var import_joy39 = require("@mui/joy");
4195
- var import_framer_motion25 = require("framer-motion");
4196
- var MotionDivider = (0, import_framer_motion25.motion)(import_joy39.Divider);
4423
+ var import_react32 = __toESM(require("react"));
4424
+ var import_joy41 = require("@mui/joy");
4425
+ var import_framer_motion26 = require("framer-motion");
4426
+ var MotionDivider = (0, import_framer_motion26.motion)(import_joy41.Divider);
4197
4427
  var Divider = (props) => {
4198
- return /* @__PURE__ */ import_react29.default.createElement(MotionDivider, { ...props });
4428
+ return /* @__PURE__ */ import_react32.default.createElement(MotionDivider, { ...props });
4199
4429
  };
4200
4430
  Divider.displayName = "Divider";
4201
4431
 
4202
4432
  // src/components/InsetDrawer/InsetDrawer.tsx
4203
- var import_joy40 = require("@mui/joy");
4204
- var InsetDrawer = (0, import_joy40.styled)(import_joy40.Drawer)(({ theme }) => ({
4205
- [`& .${import_joy40.drawerClasses.content}`]: {
4433
+ var import_joy42 = require("@mui/joy");
4434
+ var InsetDrawer = (0, import_joy42.styled)(import_joy42.Drawer)(({ theme }) => ({
4435
+ [`& .${import_joy42.drawerClasses.content}`]: {
4206
4436
  backgroundColor: "transparent",
4207
4437
  boxShadow: "none",
4208
4438
  [theme.breakpoints.down("md")]: {
@@ -4216,16 +4446,16 @@ var InsetDrawer = (0, import_joy40.styled)(import_joy40.Drawer)(({ theme }) => (
4216
4446
  }));
4217
4447
 
4218
4448
  // src/components/FilterMenu/FilterMenu.tsx
4219
- var import_react39 = __toESM(require("react"));
4220
- var import_joy51 = require("@mui/joy");
4449
+ var import_react42 = __toESM(require("react"));
4450
+ var import_joy53 = require("@mui/joy");
4221
4451
 
4222
4452
  // src/components/FilterMenu/components/CheckboxGroup.tsx
4223
- var import_react30 = __toESM(require("react"));
4224
- var import_joy41 = require("@mui/joy");
4453
+ var import_react33 = __toESM(require("react"));
4454
+ var import_joy43 = require("@mui/joy");
4225
4455
  function CheckboxGroup(props) {
4226
4456
  const { id, label, options, value, onChange, hidden } = props;
4227
4457
  const [internalValue, setInternalValue] = useControlledState(value, [], onChange);
4228
- const handleCheckboxChange = (0, import_react30.useCallback)(
4458
+ const handleCheckboxChange = (0, import_react33.useCallback)(
4229
4459
  (optionValue) => (event) => {
4230
4460
  const checked = event.target.checked;
4231
4461
  let newValue;
@@ -4241,7 +4471,7 @@ function CheckboxGroup(props) {
4241
4471
  if (hidden) {
4242
4472
  return null;
4243
4473
  }
4244
- return /* @__PURE__ */ import_react30.default.createElement(import_joy41.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react30.default.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), options.map((option) => /* @__PURE__ */ import_react30.default.createElement(
4474
+ return /* @__PURE__ */ import_react33.default.createElement(import_joy43.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react33.default.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), options.map((option) => /* @__PURE__ */ import_react33.default.createElement(
4245
4475
  Checkbox_default,
4246
4476
  {
4247
4477
  key: `${id}-${option.value}`,
@@ -4254,24 +4484,24 @@ function CheckboxGroup(props) {
4254
4484
  CheckboxGroup.displayName = "CheckboxGroup";
4255
4485
 
4256
4486
  // src/components/FilterMenu/components/RadioGroup.tsx
4257
- var import_react31 = __toESM(require("react"));
4487
+ var import_react34 = __toESM(require("react"));
4258
4488
 
4259
4489
  // src/components/Radio/Radio.tsx
4260
- var import_joy42 = require("@mui/joy");
4261
- var import_framer_motion26 = require("framer-motion");
4262
- var MotionRadio = (0, import_framer_motion26.motion)(import_joy42.Radio);
4490
+ var import_joy44 = require("@mui/joy");
4491
+ var import_framer_motion27 = require("framer-motion");
4492
+ var MotionRadio = (0, import_framer_motion27.motion)(import_joy44.Radio);
4263
4493
  var Radio = MotionRadio;
4264
4494
  Radio.displayName = "Radio";
4265
- var MotionRadioGroup = (0, import_framer_motion26.motion)(import_joy42.RadioGroup);
4495
+ var MotionRadioGroup = (0, import_framer_motion27.motion)(import_joy44.RadioGroup);
4266
4496
  var RadioGroup = MotionRadioGroup;
4267
4497
  RadioGroup.displayName = "RadioGroup";
4268
4498
 
4269
4499
  // src/components/FilterMenu/components/RadioGroup.tsx
4270
- var import_joy43 = require("@mui/joy");
4500
+ var import_joy45 = require("@mui/joy");
4271
4501
  function RadioGroup2(props) {
4272
4502
  const { id, label, options, value, onChange, hidden } = props;
4273
4503
  const [internalValue, setInternalValue] = useControlledState(value, value ?? "", onChange);
4274
- const handleRadioChange = (0, import_react31.useCallback)(
4504
+ const handleRadioChange = (0, import_react34.useCallback)(
4275
4505
  (event) => {
4276
4506
  const newValue = event.target.value;
4277
4507
  const option = options.find((opt) => opt.value.toString() === newValue);
@@ -4283,13 +4513,13 @@ function RadioGroup2(props) {
4283
4513
  if (hidden) {
4284
4514
  return null;
4285
4515
  }
4286
- return /* @__PURE__ */ import_react31.default.createElement(import_joy43.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react31.default.createElement(import_joy43.Stack, { spacing: 1 }, /* @__PURE__ */ import_react31.default.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label)), /* @__PURE__ */ import_react31.default.createElement(RadioGroup, { name: id, value: internalValue?.toString(), onChange: handleRadioChange }, options.map((option) => /* @__PURE__ */ import_react31.default.createElement(Radio, { key: `${id}-${option.value}`, value: option.value.toString(), label: option.label }))));
4516
+ return /* @__PURE__ */ import_react34.default.createElement(import_joy45.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react34.default.createElement(import_joy45.Stack, { spacing: 1 }, /* @__PURE__ */ import_react34.default.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label)), /* @__PURE__ */ import_react34.default.createElement(RadioGroup, { name: id, value: internalValue?.toString(), onChange: handleRadioChange }, options.map((option) => /* @__PURE__ */ import_react34.default.createElement(Radio, { key: `${id}-${option.value}`, value: option.value.toString(), label: option.label }))));
4287
4517
  }
4288
4518
  RadioGroup2.displayName = "RadioGroup";
4289
4519
 
4290
4520
  // src/components/FilterMenu/components/DateRange.tsx
4291
- var import_react32 = __toESM(require("react"));
4292
- var import_joy44 = require("@mui/joy");
4521
+ var import_react35 = __toESM(require("react"));
4522
+ var import_joy46 = require("@mui/joy");
4293
4523
  function DateRange(props) {
4294
4524
  const {
4295
4525
  id,
@@ -4307,8 +4537,8 @@ function DateRange(props) {
4307
4537
  hideClearButton
4308
4538
  } = props;
4309
4539
  const [internalValue, setInternalValue] = useControlledState(value, null, onChange);
4310
- const [selectedOption, setSelectedOption] = (0, import_react32.useState)("all-time");
4311
- const dateRangeOptions = (0, import_react32.useMemo)(
4540
+ const [selectedOption, setSelectedOption] = (0, import_react35.useState)("all-time");
4541
+ const dateRangeOptions = (0, import_react35.useMemo)(
4312
4542
  () => [
4313
4543
  { label: "All Time", value: "all-time" },
4314
4544
  { label: "This Month", value: "this-month" },
@@ -4318,7 +4548,7 @@ function DateRange(props) {
4318
4548
  ],
4319
4549
  []
4320
4550
  );
4321
- const getDateRangeForOption = (0, import_react32.useCallback)(
4551
+ const getDateRangeForOption = (0, import_react35.useCallback)(
4322
4552
  (option) => {
4323
4553
  const now = /* @__PURE__ */ new Date();
4324
4554
  const currentYear = now.getFullYear();
@@ -4357,7 +4587,7 @@ function DateRange(props) {
4357
4587
  },
4358
4588
  [internalValue]
4359
4589
  );
4360
- const determineOptionFromValue = (0, import_react32.useCallback)(
4590
+ const determineOptionFromValue = (0, import_react35.useCallback)(
4361
4591
  (value2) => {
4362
4592
  if (!value2) {
4363
4593
  return "all-time";
@@ -4373,17 +4603,17 @@ function DateRange(props) {
4373
4603
  },
4374
4604
  [getDateRangeForOption]
4375
4605
  );
4376
- const customDateRangeValue = (0, import_react32.useMemo)(() => {
4606
+ const customDateRangeValue = (0, import_react35.useMemo)(() => {
4377
4607
  if (selectedOption === "custom" && internalValue) {
4378
4608
  return `${internalValue[0]} - ${internalValue[1]}`;
4379
4609
  }
4380
4610
  return "";
4381
4611
  }, [selectedOption, internalValue]);
4382
- (0, import_react32.useEffect)(() => {
4612
+ (0, import_react35.useEffect)(() => {
4383
4613
  const newOption = determineOptionFromValue(internalValue);
4384
4614
  setSelectedOption(newOption);
4385
4615
  }, [internalValue, determineOptionFromValue]);
4386
- const handleOptionChange = (0, import_react32.useCallback)(
4616
+ const handleOptionChange = (0, import_react35.useCallback)(
4387
4617
  (event) => {
4388
4618
  const newOption = event.target.value;
4389
4619
  setSelectedOption(newOption);
@@ -4392,7 +4622,7 @@ function DateRange(props) {
4392
4622
  },
4393
4623
  [getDateRangeForOption, setInternalValue]
4394
4624
  );
4395
- const handleCustomDateChange = (0, import_react32.useCallback)(
4625
+ const handleCustomDateChange = (0, import_react35.useCallback)(
4396
4626
  (event) => {
4397
4627
  const dateRangeString = event.target.value;
4398
4628
  if (dateRangeString && dateRangeString.includes(" - ")) {
@@ -4410,7 +4640,7 @@ function DateRange(props) {
4410
4640
  if (hidden) {
4411
4641
  return null;
4412
4642
  }
4413
- return /* @__PURE__ */ import_react32.default.createElement(import_joy44.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react32.default.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ import_react32.default.createElement(RadioGroup, { name: `${id}-options`, value: selectedOption, onChange: handleOptionChange }, dateRangeOptions.map((option) => /* @__PURE__ */ import_react32.default.createElement(Radio, { key: `${id}-${option.value}`, value: option.value, label: option.label }))), selectedOption === "custom" && /* @__PURE__ */ import_react32.default.createElement(
4643
+ return /* @__PURE__ */ import_react35.default.createElement(import_joy46.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react35.default.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ import_react35.default.createElement(RadioGroup, { name: `${id}-options`, value: selectedOption, onChange: handleOptionChange }, dateRangeOptions.map((option) => /* @__PURE__ */ import_react35.default.createElement(Radio, { key: `${id}-${option.value}`, value: option.value, label: option.label }))), selectedOption === "custom" && /* @__PURE__ */ import_react35.default.createElement(
4414
4644
  DateRangePicker,
4415
4645
  {
4416
4646
  value: customDateRangeValue,
@@ -4429,12 +4659,12 @@ function DateRange(props) {
4429
4659
  DateRange.displayName = "DateRange";
4430
4660
 
4431
4661
  // src/components/FilterMenu/components/CurrencyInput.tsx
4432
- var import_react33 = __toESM(require("react"));
4433
- var import_joy45 = require("@mui/joy");
4662
+ var import_react36 = __toESM(require("react"));
4663
+ var import_joy47 = require("@mui/joy");
4434
4664
  function CurrencyInput3(props) {
4435
4665
  const { id, label, value, onChange, hidden, max, placeholder, useMinorUnit, currency = "USD" } = props;
4436
4666
  const [internalValue, setInternalValue] = useControlledState(value, value, onChange);
4437
- const handleCurrencyChange = (0, import_react33.useCallback)(
4667
+ const handleCurrencyChange = (0, import_react36.useCallback)(
4438
4668
  (event) => {
4439
4669
  const newValue = event.target.value;
4440
4670
  setInternalValue(newValue);
@@ -4444,7 +4674,7 @@ function CurrencyInput3(props) {
4444
4674
  if (hidden) {
4445
4675
  return null;
4446
4676
  }
4447
- return /* @__PURE__ */ import_react33.default.createElement(import_joy45.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react33.default.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ import_react33.default.createElement(
4677
+ return /* @__PURE__ */ import_react36.default.createElement(import_joy47.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react36.default.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ import_react36.default.createElement(
4448
4678
  CurrencyInput,
4449
4679
  {
4450
4680
  value: internalValue,
@@ -4460,14 +4690,14 @@ function CurrencyInput3(props) {
4460
4690
  CurrencyInput3.displayName = "CurrencyInput";
4461
4691
 
4462
4692
  // src/components/FilterMenu/components/CurrencyRange.tsx
4463
- var import_react34 = __toESM(require("react"));
4464
- var import_joy46 = require("@mui/joy");
4693
+ var import_react37 = __toESM(require("react"));
4694
+ var import_joy48 = require("@mui/joy");
4465
4695
  function CurrencyRange(props) {
4466
4696
  const { id, label, value, onChange, hidden, max, placeholder, useMinorUnit, currency = "USD" } = props;
4467
4697
  const [internalValue, setInternalValue] = useControlledState(value, null, onChange);
4468
4698
  const minValue = internalValue?.[0];
4469
4699
  const maxValue = internalValue?.[1];
4470
- const handleMinChange = (0, import_react34.useCallback)(
4700
+ const handleMinChange = (0, import_react37.useCallback)(
4471
4701
  (event) => {
4472
4702
  const newMinValue = event.target.value;
4473
4703
  const currentMaxValue = maxValue;
@@ -4481,7 +4711,7 @@ function CurrencyRange(props) {
4481
4711
  },
4482
4712
  [maxValue, setInternalValue]
4483
4713
  );
4484
- const handleMaxChange = (0, import_react34.useCallback)(
4714
+ const handleMaxChange = (0, import_react37.useCallback)(
4485
4715
  (event) => {
4486
4716
  const newMaxValue = event.target.value;
4487
4717
  const currentMinValue = minValue;
@@ -4498,7 +4728,7 @@ function CurrencyRange(props) {
4498
4728
  if (hidden) {
4499
4729
  return null;
4500
4730
  }
4501
- return /* @__PURE__ */ import_react34.default.createElement(import_joy46.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react34.default.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ import_react34.default.createElement(import_joy46.Stack, { direction: "row", spacing: 2, alignItems: "flex-end" }, /* @__PURE__ */ import_react34.default.createElement(
4731
+ return /* @__PURE__ */ import_react37.default.createElement(import_joy48.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react37.default.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ import_react37.default.createElement(import_joy48.Stack, { direction: "row", spacing: 2, alignItems: "flex-end" }, /* @__PURE__ */ import_react37.default.createElement(
4502
4732
  CurrencyInput,
4503
4733
  {
4504
4734
  label: "Minimum",
@@ -4511,7 +4741,7 @@ function CurrencyRange(props) {
4511
4741
  "aria-labelledby": label ? id : void 0,
4512
4742
  "aria-label": "Minimum amount"
4513
4743
  }
4514
- ), /* @__PURE__ */ import_react34.default.createElement(
4744
+ ), /* @__PURE__ */ import_react37.default.createElement(
4515
4745
  CurrencyInput,
4516
4746
  {
4517
4747
  label: "Maximum",
@@ -4529,20 +4759,20 @@ function CurrencyRange(props) {
4529
4759
  CurrencyRange.displayName = "CurrencyRange";
4530
4760
 
4531
4761
  // src/components/FilterMenu/components/PercentageInput.tsx
4532
- var import_react36 = __toESM(require("react"));
4533
- var import_joy48 = require("@mui/joy");
4762
+ var import_react39 = __toESM(require("react"));
4763
+ var import_joy50 = require("@mui/joy");
4534
4764
 
4535
4765
  // src/components/PercentageInput/PercentageInput.tsx
4536
- var import_react35 = __toESM(require("react"));
4766
+ var import_react38 = __toESM(require("react"));
4537
4767
  var import_react_number_format2 = require("react-number-format");
4538
- var import_joy47 = require("@mui/joy");
4768
+ var import_joy49 = require("@mui/joy");
4539
4769
  var padDecimal = (value, decimalScale) => {
4540
4770
  const [integer, decimal = ""] = `${value}`.split(".");
4541
4771
  return Number(`${integer}${decimal.padEnd(decimalScale, "0")}`);
4542
4772
  };
4543
- var TextMaskAdapter7 = import_react35.default.forwardRef(function TextMaskAdapter8(props, ref) {
4773
+ var TextMaskAdapter7 = import_react38.default.forwardRef(function TextMaskAdapter8(props, ref) {
4544
4774
  const { onChange, min, max, ...innerProps } = props;
4545
- return /* @__PURE__ */ import_react35.default.createElement(
4775
+ return /* @__PURE__ */ import_react38.default.createElement(
4546
4776
  import_react_number_format2.NumericFormat,
4547
4777
  {
4548
4778
  ...innerProps,
@@ -4562,14 +4792,14 @@ var TextMaskAdapter7 = import_react35.default.forwardRef(function TextMaskAdapte
4562
4792
  }
4563
4793
  );
4564
4794
  });
4565
- var PercentageInputRoot = (0, import_joy47.styled)(Input_default, {
4795
+ var PercentageInputRoot = (0, import_joy49.styled)(Input_default, {
4566
4796
  name: "PercentageInput",
4567
4797
  slot: "Root",
4568
4798
  overridesResolver: (props, styles) => styles.root
4569
4799
  })({});
4570
- var PercentageInput = import_react35.default.forwardRef(
4800
+ var PercentageInput = import_react38.default.forwardRef(
4571
4801
  function PercentageInput2(inProps, ref) {
4572
- const props = (0, import_joy47.useThemeProps)({ props: inProps, name: "PercentageInput" });
4802
+ const props = (0, import_joy49.useThemeProps)({ props: inProps, name: "PercentageInput" });
4573
4803
  const {
4574
4804
  name,
4575
4805
  onChange,
@@ -4590,18 +4820,18 @@ var PercentageInput = import_react35.default.forwardRef(
4590
4820
  const [_value, setValue] = useControlledState(
4591
4821
  props.value,
4592
4822
  props.defaultValue,
4593
- (0, import_react35.useCallback)((value2) => onChange?.({ target: { name, value: value2 } }), [onChange, name])
4823
+ (0, import_react38.useCallback)((value2) => onChange?.({ target: { name, value: value2 } }), [onChange, name])
4594
4824
  );
4595
- const [internalError, setInternalError] = (0, import_react35.useState)(
4825
+ const [internalError, setInternalError] = (0, import_react38.useState)(
4596
4826
  max && _value && _value > max || min && _value && _value < min
4597
4827
  );
4598
- const value = (0, import_react35.useMemo)(() => {
4828
+ const value = (0, import_react38.useMemo)(() => {
4599
4829
  if (_value && useMinorUnit) {
4600
4830
  return _value / Math.pow(10, maxDecimalScale);
4601
4831
  }
4602
4832
  return _value;
4603
4833
  }, [_value, useMinorUnit, maxDecimalScale]);
4604
- const handleChange = (0, import_react35.useCallback)(
4834
+ const handleChange = (0, import_react38.useCallback)(
4605
4835
  (event) => {
4606
4836
  if (event.target.value === "") {
4607
4837
  setValue(void 0);
@@ -4618,7 +4848,7 @@ var PercentageInput = import_react35.default.forwardRef(
4618
4848
  },
4619
4849
  [setValue, useMinorUnit, maxDecimalScale, min, max]
4620
4850
  );
4621
- return /* @__PURE__ */ import_react35.default.createElement(
4851
+ return /* @__PURE__ */ import_react38.default.createElement(
4622
4852
  PercentageInputRoot,
4623
4853
  {
4624
4854
  ...innerProps,
@@ -4665,7 +4895,7 @@ var PercentageInput3 = ({
4665
4895
  if (hidden) {
4666
4896
  return null;
4667
4897
  }
4668
- return /* @__PURE__ */ import_react36.default.createElement(import_joy48.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react36.default.createElement(import_joy48.Typography, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ import_react36.default.createElement(
4898
+ return /* @__PURE__ */ import_react39.default.createElement(import_joy50.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react39.default.createElement(import_joy50.Typography, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ import_react39.default.createElement(
4669
4899
  PercentageInput,
4670
4900
  {
4671
4901
  value: _value,
@@ -4680,8 +4910,8 @@ var PercentageInput3 = ({
4680
4910
  };
4681
4911
 
4682
4912
  // src/components/FilterMenu/components/PercentageRange.tsx
4683
- var import_react37 = __toESM(require("react"));
4684
- var import_joy49 = require("@mui/joy");
4913
+ var import_react40 = __toESM(require("react"));
4914
+ var import_joy51 = require("@mui/joy");
4685
4915
  function PercentageRange(props) {
4686
4916
  const { id, label, value, onChange, hidden, useMinorUnit, maxDecimalScale, min, max } = props;
4687
4917
  const [internalValue, setInternalValue] = useControlledState(
@@ -4691,7 +4921,7 @@ function PercentageRange(props) {
4691
4921
  );
4692
4922
  const minValue = internalValue?.[0];
4693
4923
  const maxValue = internalValue?.[1];
4694
- const handleMinChange = (0, import_react37.useCallback)(
4924
+ const handleMinChange = (0, import_react40.useCallback)(
4695
4925
  (event) => {
4696
4926
  const newMinValue = event.target.value;
4697
4927
  const currentMaxValue = maxValue;
@@ -4703,7 +4933,7 @@ function PercentageRange(props) {
4703
4933
  },
4704
4934
  [maxValue, setInternalValue]
4705
4935
  );
4706
- const handleMaxChange = (0, import_react37.useCallback)(
4936
+ const handleMaxChange = (0, import_react40.useCallback)(
4707
4937
  (event) => {
4708
4938
  const newMaxValue = event.target.value;
4709
4939
  const currentMinValue = minValue;
@@ -4718,7 +4948,7 @@ function PercentageRange(props) {
4718
4948
  if (hidden) {
4719
4949
  return null;
4720
4950
  }
4721
- return /* @__PURE__ */ import_react37.default.createElement(import_joy49.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react37.default.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ import_react37.default.createElement(import_joy49.Stack, { direction: "row", spacing: 2, alignItems: "flex-end" }, /* @__PURE__ */ import_react37.default.createElement(
4951
+ return /* @__PURE__ */ import_react40.default.createElement(import_joy51.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react40.default.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ import_react40.default.createElement(import_joy51.Stack, { direction: "row", spacing: 2, alignItems: "flex-end" }, /* @__PURE__ */ import_react40.default.createElement(
4722
4952
  PercentageInput,
4723
4953
  {
4724
4954
  label: "Minimum",
@@ -4732,7 +4962,7 @@ function PercentageRange(props) {
4732
4962
  "aria-label": "Minimum percentage",
4733
4963
  placeholder: "0%"
4734
4964
  }
4735
- ), /* @__PURE__ */ import_react37.default.createElement(
4965
+ ), /* @__PURE__ */ import_react40.default.createElement(
4736
4966
  PercentageInput,
4737
4967
  {
4738
4968
  label: "Maximum",
@@ -4751,13 +4981,13 @@ function PercentageRange(props) {
4751
4981
  PercentageRange.displayName = "PercentageRange";
4752
4982
 
4753
4983
  // src/components/FilterMenu/components/Autocomplete.tsx
4754
- var import_react38 = __toESM(require("react"));
4755
- var import_joy50 = require("@mui/joy");
4984
+ var import_react41 = __toESM(require("react"));
4985
+ var import_joy52 = require("@mui/joy");
4756
4986
  function Autocomplete2(props) {
4757
4987
  const { id, label, value, onChange, options, multiple, hidden, placeholder } = props;
4758
4988
  const [internalValue, setInternalValue] = useControlledState(value, void 0, onChange);
4759
4989
  const autocompleteValue = typeof internalValue === "string" || typeof internalValue === "number" ? String(internalValue) : void 0;
4760
- const handleChange = (0, import_react38.useCallback)(
4990
+ const handleChange = (0, import_react41.useCallback)(
4761
4991
  (event) => {
4762
4992
  const val = event.target.value;
4763
4993
  if (val) {
@@ -4772,7 +5002,7 @@ function Autocomplete2(props) {
4772
5002
  if (hidden) {
4773
5003
  return null;
4774
5004
  }
4775
- return /* @__PURE__ */ import_react38.default.createElement(import_joy50.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react38.default.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ import_react38.default.createElement(
5005
+ return /* @__PURE__ */ import_react41.default.createElement(import_joy52.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react41.default.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ import_react41.default.createElement(
4776
5006
  Autocomplete,
4777
5007
  {
4778
5008
  value: autocompleteValue,
@@ -4805,7 +5035,7 @@ function FilterMenu(props) {
4805
5035
  void 0
4806
5036
  // onChange는 Apply 버튼에서만 호출
4807
5037
  );
4808
- const handleFilterChange = (0, import_react39.useCallback)(
5038
+ const handleFilterChange = (0, import_react42.useCallback)(
4809
5039
  (filterId, value) => {
4810
5040
  setInternalValues((prev) => ({
4811
5041
  ...prev,
@@ -4814,17 +5044,17 @@ function FilterMenu(props) {
4814
5044
  },
4815
5045
  [setInternalValues]
4816
5046
  );
4817
- const handleApply = (0, import_react39.useCallback)(() => {
5047
+ const handleApply = (0, import_react42.useCallback)(() => {
4818
5048
  onChange?.(internalValues);
4819
5049
  onClose?.();
4820
5050
  }, [onChange, onClose, internalValues]);
4821
- const handleClear = (0, import_react39.useCallback)(() => {
5051
+ const handleClear = (0, import_react42.useCallback)(() => {
4822
5052
  const clearedValues = resetValues || {};
4823
5053
  setInternalValues(clearedValues);
4824
5054
  onChange?.(clearedValues);
4825
5055
  onClose?.();
4826
5056
  }, [resetValues, setInternalValues, onChange, onClose]);
4827
- return /* @__PURE__ */ import_react39.default.createElement(
5057
+ return /* @__PURE__ */ import_react42.default.createElement(
4828
5058
  ModalDialog,
4829
5059
  {
4830
5060
  sx: {
@@ -4834,9 +5064,9 @@ function FilterMenu(props) {
4834
5064
  top: "initial"
4835
5065
  }
4836
5066
  },
4837
- /* @__PURE__ */ import_react39.default.createElement(DialogContent, { sx: { paddingTop: 5 } }, /* @__PURE__ */ import_react39.default.createElement(import_joy51.Stack, { spacing: 6 }, filters?.map((filter) => {
5067
+ /* @__PURE__ */ import_react42.default.createElement(DialogContent, { sx: { paddingTop: 5 } }, /* @__PURE__ */ import_react42.default.createElement(import_joy53.Stack, { spacing: 6 }, filters?.map((filter) => {
4838
5068
  const FilterComponent = componentMap[filter.type];
4839
- return FilterComponent ? /* @__PURE__ */ import_react39.default.createElement(
5069
+ return FilterComponent ? /* @__PURE__ */ import_react42.default.createElement(
4840
5070
  FilterComponent,
4841
5071
  {
4842
5072
  key: filter.id,
@@ -4848,14 +5078,14 @@ function FilterMenu(props) {
4848
5078
  }
4849
5079
  ) : null;
4850
5080
  }))),
4851
- /* @__PURE__ */ import_react39.default.createElement(DialogActions, { sx: { justifyContent: "space-between" } }, useClear && filters?.length === 1 && /* @__PURE__ */ import_react39.default.createElement(import_joy51.Button, { variant: "plain", color: "neutral", size: "md", onClick: handleClear }, "Clear"), useReset && !useClear && /* @__PURE__ */ import_react39.default.createElement(import_joy51.Button, { variant: "plain", color: "neutral", size: "md", onClick: handleClear }, "Reset"), /* @__PURE__ */ import_react39.default.createElement(import_joy51.Button, { variant: "solid", color: "primary", size: "md", onClick: handleApply }, "Apply"))
5081
+ /* @__PURE__ */ import_react42.default.createElement(DialogActions, { sx: { justifyContent: "space-between" } }, useClear && filters?.length === 1 && /* @__PURE__ */ import_react42.default.createElement(import_joy53.Button, { variant: "plain", color: "neutral", size: "md", onClick: handleClear }, "Clear"), useReset && !useClear && /* @__PURE__ */ import_react42.default.createElement(import_joy53.Button, { variant: "plain", color: "neutral", size: "md", onClick: handleClear }, "Reset"), /* @__PURE__ */ import_react42.default.createElement(import_joy53.Button, { variant: "solid", color: "primary", size: "md", onClick: handleApply }, "Apply"))
4852
5082
  );
4853
5083
  }
4854
5084
  FilterMenu.displayName = "FilterMenu";
4855
5085
 
4856
5086
  // src/components/Uploader/Uploader.tsx
4857
- var import_react40 = __toESM(require("react"));
4858
- var import_joy52 = require("@mui/joy");
5087
+ var import_react43 = __toESM(require("react"));
5088
+ var import_joy54 = require("@mui/joy");
4859
5089
  var import_CloudUploadRounded = __toESM(require("@mui/icons-material/CloudUploadRounded"));
4860
5090
  var import_UploadFileRounded = __toESM(require("@mui/icons-material/UploadFileRounded"));
4861
5091
  var import_ClearRounded = __toESM(require("@mui/icons-material/ClearRounded"));
@@ -4877,7 +5107,7 @@ var esmFiles = {
4877
5107
  "@atlaskit/pragmatic-drag-and-drop/dist/esm/entry-point/prevent-unhandled.js"
4878
5108
  )
4879
5109
  };
4880
- var VisuallyHiddenInput = (0, import_joy52.styled)(import_joy52.Input)({
5110
+ var VisuallyHiddenInput = (0, import_joy54.styled)(import_joy54.Input)({
4881
5111
  width: "1px",
4882
5112
  height: "1px",
4883
5113
  overflow: "hidden",
@@ -4886,18 +5116,18 @@ var VisuallyHiddenInput = (0, import_joy52.styled)(import_joy52.Input)({
4886
5116
  clipPath: "inset(50%)",
4887
5117
  position: "absolute"
4888
5118
  });
4889
- var PreviewRoot = (0, import_joy52.styled)(Stack_default, {
5119
+ var PreviewRoot = (0, import_joy54.styled)(Stack_default, {
4890
5120
  name: "Uploader",
4891
5121
  slot: "PreviewRoot"
4892
5122
  })({});
4893
- var UploadCard = (0, import_joy52.styled)(Card, {
5123
+ var UploadCard = (0, import_joy54.styled)(Card, {
4894
5124
  name: "Uploader",
4895
5125
  slot: "UploadCard"
4896
5126
  })(({ theme }) => ({
4897
5127
  padding: theme.spacing(2.5),
4898
5128
  border: `1px solid ${theme.palette.neutral.outlinedBorder}`
4899
5129
  }));
4900
- var UploadFileIcon = (0, import_joy52.styled)(import_UploadFileRounded.default, {
5130
+ var UploadFileIcon = (0, import_joy54.styled)(import_UploadFileRounded.default, {
4901
5131
  name: "Uploader",
4902
5132
  slot: "UploadFileIcon"
4903
5133
  })(({ theme }) => ({
@@ -4905,7 +5135,7 @@ var UploadFileIcon = (0, import_joy52.styled)(import_UploadFileRounded.default,
4905
5135
  width: "32px",
4906
5136
  height: "32px"
4907
5137
  }));
4908
- var ClearIcon2 = (0, import_joy52.styled)(import_ClearRounded.default, {
5138
+ var ClearIcon2 = (0, import_joy54.styled)(import_ClearRounded.default, {
4909
5139
  name: "Uploader",
4910
5140
  slot: "ClearIcon"
4911
5141
  })(({ theme }) => ({
@@ -4931,15 +5161,15 @@ var getFileSize = (n) => {
4931
5161
  };
4932
5162
  var Preview = (props) => {
4933
5163
  const { files, uploaded, onDelete } = props;
4934
- return /* @__PURE__ */ import_react40.default.createElement(PreviewRoot, { gap: 1 }, [...uploaded, ...files].map((file) => /* @__PURE__ */ import_react40.default.createElement(UploadCard, { key: file.name, size: "sm", color: "neutral" }, /* @__PURE__ */ import_react40.default.createElement(Stack_default, { direction: "row", alignItems: "center", gap: 2 }, /* @__PURE__ */ import_react40.default.createElement(UploadFileIcon, null), /* @__PURE__ */ import_react40.default.createElement(Stack_default, { flex: "1" }, /* @__PURE__ */ import_react40.default.createElement(Typography_default, { level: "body-sm", textColor: "common.black" }, file.name), !!file.size && /* @__PURE__ */ import_react40.default.createElement(Typography_default, { level: "body-xs", fontWeight: "300", lineHeight: "1.33", textColor: "text.tertiary" }, getFileSize(file.size))), /* @__PURE__ */ import_react40.default.createElement(IconButton_default, { onClick: () => onDelete?.(file) }, /* @__PURE__ */ import_react40.default.createElement(ClearIcon2, null))))));
5164
+ return /* @__PURE__ */ import_react43.default.createElement(PreviewRoot, { gap: 1 }, [...uploaded, ...files].map((file) => /* @__PURE__ */ import_react43.default.createElement(UploadCard, { key: file.name, size: "sm", color: "neutral" }, /* @__PURE__ */ import_react43.default.createElement(Stack_default, { direction: "row", alignItems: "center", gap: 2 }, /* @__PURE__ */ import_react43.default.createElement(UploadFileIcon, null), /* @__PURE__ */ import_react43.default.createElement(Stack_default, { flex: "1" }, /* @__PURE__ */ import_react43.default.createElement(Typography_default, { level: "body-sm", textColor: "common.black" }, file.name), !!file.size && /* @__PURE__ */ import_react43.default.createElement(Typography_default, { level: "body-xs", fontWeight: "300", lineHeight: "1.33", textColor: "text.tertiary" }, getFileSize(file.size))), /* @__PURE__ */ import_react43.default.createElement(IconButton_default, { onClick: () => onDelete?.(file) }, /* @__PURE__ */ import_react43.default.createElement(ClearIcon2, null))))));
4935
5165
  };
4936
- var UploaderRoot = (0, import_joy52.styled)(Stack_default, {
5166
+ var UploaderRoot = (0, import_joy54.styled)(Stack_default, {
4937
5167
  name: "Uploader",
4938
5168
  slot: "root"
4939
5169
  })(({ theme }) => ({
4940
5170
  gap: theme.spacing(2)
4941
5171
  }));
4942
- var FileDropZone = (0, import_joy52.styled)(Sheet_default, {
5172
+ var FileDropZone = (0, import_joy54.styled)(Sheet_default, {
4943
5173
  name: "Uploader",
4944
5174
  slot: "dropZone",
4945
5175
  shouldForwardProp: (prop) => prop !== "error"
@@ -4955,7 +5185,7 @@ var FileDropZone = (0, import_joy52.styled)(Sheet_default, {
4955
5185
  backgroundColor: theme.palette.background.surface,
4956
5186
  border: error ? `1px solid ${theme.palette.danger.outlinedBorder}` : state === "idle" ? `1px solid ${theme.palette.neutral.outlinedBorder}` : `1px solid ${theme.palette.primary.outlinedBorder}`
4957
5187
  }));
4958
- var UploaderIcon = (0, import_joy52.styled)(import_CloudUploadRounded.default, {
5188
+ var UploaderIcon = (0, import_joy54.styled)(import_CloudUploadRounded.default, {
4959
5189
  name: "Uploader",
4960
5190
  slot: "iconContainer",
4961
5191
  shouldForwardProp: (prop) => prop !== "error"
@@ -4964,7 +5194,7 @@ var UploaderIcon = (0, import_joy52.styled)(import_CloudUploadRounded.default, {
4964
5194
  width: "32px",
4965
5195
  height: "32px"
4966
5196
  }));
4967
- var Uploader = import_react40.default.memo(
5197
+ var Uploader = import_react43.default.memo(
4968
5198
  (props) => {
4969
5199
  const {
4970
5200
  accept,
@@ -4979,14 +5209,14 @@ var Uploader = import_react40.default.memo(
4979
5209
  disabled,
4980
5210
  onDelete
4981
5211
  } = props;
4982
- const dropZoneRef = (0, import_react40.useRef)(null);
4983
- const inputRef = (0, import_react40.useRef)(null);
4984
- const [errorText, setErrorText] = (0, import_react40.useState)();
4985
- const [files, setFiles] = (0, import_react40.useState)([]);
4986
- const [uploaded, setUploaded] = (0, import_react40.useState)(props.uploaded || []);
4987
- const [previewState, setPreviewState] = (0, import_react40.useState)("idle");
4988
- const accepts = (0, import_react40.useMemo)(() => accept.split(",").map((accept2) => accept2.trim()), [accept]);
4989
- const parsedAccepts = (0, import_react40.useMemo)(
5212
+ const dropZoneRef = (0, import_react43.useRef)(null);
5213
+ const inputRef = (0, import_react43.useRef)(null);
5214
+ const [errorText, setErrorText] = (0, import_react43.useState)();
5215
+ const [files, setFiles] = (0, import_react43.useState)([]);
5216
+ const [uploaded, setUploaded] = (0, import_react43.useState)(props.uploaded || []);
5217
+ const [previewState, setPreviewState] = (0, import_react43.useState)("idle");
5218
+ const accepts = (0, import_react43.useMemo)(() => accept.split(",").map((accept2) => accept2.trim()), [accept]);
5219
+ const parsedAccepts = (0, import_react43.useMemo)(
4990
5220
  () => accepts.flatMap((type) => {
4991
5221
  if (["image/*", "video/*", "audio/*"].includes(type)) {
4992
5222
  return ALL_EXTENSIONS_BY_TYPE[type];
@@ -4995,7 +5225,7 @@ var Uploader = import_react40.default.memo(
4995
5225
  }),
4996
5226
  [accepts]
4997
5227
  );
4998
- const helperText = (0, import_react40.useMemo)(() => {
5228
+ const helperText = (0, import_react43.useMemo)(() => {
4999
5229
  const [allAcceptedTypes, acceptedTypes] = [
5000
5230
  accepts.filter((accept2) => ["image/*", "video/*", "audio/*"].includes(accept2)).map((accept2) => {
5001
5231
  const [type] = accept2.split("/");
@@ -5022,12 +5252,12 @@ var Uploader = import_react40.default.memo(
5022
5252
  }
5023
5253
  return helperTexts.join(", ");
5024
5254
  }, [accepts, maxFileTotalSize, maxCount]);
5025
- const error = (0, import_react40.useMemo)(() => !!errorText || props.error, [props.error, errorText]);
5026
- const showDropZone = (0, import_react40.useMemo)(
5255
+ const error = (0, import_react43.useMemo)(() => !!errorText || props.error, [props.error, errorText]);
5256
+ const showDropZone = (0, import_react43.useMemo)(
5027
5257
  () => !maxCount || maxCount && [...uploaded, ...files].length !== maxCount,
5028
5258
  [files, maxCount, uploaded]
5029
5259
  );
5030
- const addFiles = (0, import_react40.useCallback)(
5260
+ const addFiles = (0, import_react43.useCallback)(
5031
5261
  (uploads) => {
5032
5262
  try {
5033
5263
  const types = parsedAccepts.map((type) => type.replace(".", "")) || [];
@@ -5072,7 +5302,7 @@ var Uploader = import_react40.default.memo(
5072
5302
  },
5073
5303
  [files, uploaded, maxCount, parsedAccepts, maxFileSize, maxFileTotalSize, name, onChange]
5074
5304
  );
5075
- (0, import_react40.useEffect)(() => {
5305
+ (0, import_react43.useEffect)(() => {
5076
5306
  if (!dropZoneRef.current || disabled) {
5077
5307
  return;
5078
5308
  }
@@ -5110,7 +5340,7 @@ var Uploader = import_react40.default.memo(
5110
5340
  );
5111
5341
  return () => cleanup?.();
5112
5342
  }, [disabled, addFiles]);
5113
- (0, import_react40.useEffect)(() => {
5343
+ (0, import_react43.useEffect)(() => {
5114
5344
  if (inputRef.current && minCount) {
5115
5345
  if (files.length < minCount) {
5116
5346
  inputRef.current.setCustomValidity(`At least ${minCount} files are required.`);
@@ -5119,14 +5349,14 @@ var Uploader = import_react40.default.memo(
5119
5349
  }
5120
5350
  }
5121
5351
  }, [inputRef, files, minCount]);
5122
- const handleFileChanged = (0, import_react40.useCallback)(
5352
+ const handleFileChanged = (0, import_react43.useCallback)(
5123
5353
  (event) => {
5124
5354
  const files2 = Array.from(event.target.files || []);
5125
5355
  addFiles(files2);
5126
5356
  },
5127
5357
  [addFiles]
5128
5358
  );
5129
- const handleDeleteFile = (0, import_react40.useCallback)(
5359
+ const handleDeleteFile = (0, import_react43.useCallback)(
5130
5360
  (deletedFile) => {
5131
5361
  if (deletedFile instanceof File) {
5132
5362
  setFiles((current) => {
@@ -5146,10 +5376,10 @@ var Uploader = import_react40.default.memo(
5146
5376
  },
5147
5377
  [name, onChange, onDelete]
5148
5378
  );
5149
- const handleUploaderButtonClick = (0, import_react40.useCallback)(() => {
5379
+ const handleUploaderButtonClick = (0, import_react43.useCallback)(() => {
5150
5380
  inputRef.current?.click();
5151
5381
  }, []);
5152
- const uploader = /* @__PURE__ */ import_react40.default.createElement(
5382
+ const uploader = /* @__PURE__ */ import_react43.default.createElement(
5153
5383
  FileDropZone,
5154
5384
  {
5155
5385
  state: previewState,
@@ -5157,8 +5387,8 @@ var Uploader = import_react40.default.memo(
5157
5387
  ref: dropZoneRef,
5158
5388
  onClick: handleUploaderButtonClick
5159
5389
  },
5160
- /* @__PURE__ */ import_react40.default.createElement(Stack_default, { alignItems: "center", gap: 1 }, /* @__PURE__ */ import_react40.default.createElement(UploaderIcon, { state: previewState, error: !!(error || errorText) })),
5161
- /* @__PURE__ */ import_react40.default.createElement(
5390
+ /* @__PURE__ */ import_react43.default.createElement(Stack_default, { alignItems: "center", gap: 1 }, /* @__PURE__ */ import_react43.default.createElement(UploaderIcon, { state: previewState, error: !!(error || errorText) })),
5391
+ /* @__PURE__ */ import_react43.default.createElement(
5162
5392
  VisuallyHiddenInput,
5163
5393
  {
5164
5394
  disabled,
@@ -5181,17 +5411,17 @@ var Uploader = import_react40.default.memo(
5181
5411
  }
5182
5412
  )
5183
5413
  );
5184
- return /* @__PURE__ */ import_react40.default.createElement(UploaderRoot, null, showDropZone && /* @__PURE__ */ import_react40.default.createElement(FormControl_default, { size, error: !!(error || errorText), disabled, required: !!minCount }, label && /* @__PURE__ */ import_react40.default.createElement(FormLabel_default, null, label), uploader, /* @__PURE__ */ import_react40.default.createElement(FormHelperText_default, null, /* @__PURE__ */ import_react40.default.createElement(Stack_default, null, errorText && /* @__PURE__ */ import_react40.default.createElement("div", null, errorText), /* @__PURE__ */ import_react40.default.createElement("div", null, helperText)))), [...uploaded, ...files].length > 0 && /* @__PURE__ */ import_react40.default.createElement(Preview, { files, uploaded, onDelete: handleDeleteFile }));
5414
+ return /* @__PURE__ */ import_react43.default.createElement(UploaderRoot, null, showDropZone && /* @__PURE__ */ import_react43.default.createElement(FormControl_default, { size, error: !!(error || errorText), disabled, required: !!minCount }, label && /* @__PURE__ */ import_react43.default.createElement(FormLabel_default, null, label), uploader, /* @__PURE__ */ import_react43.default.createElement(FormHelperText_default, null, /* @__PURE__ */ import_react43.default.createElement(Stack_default, null, errorText && /* @__PURE__ */ import_react43.default.createElement("div", null, errorText), /* @__PURE__ */ import_react43.default.createElement("div", null, helperText)))), [...uploaded, ...files].length > 0 && /* @__PURE__ */ import_react43.default.createElement(Preview, { files, uploaded, onDelete: handleDeleteFile }));
5185
5415
  }
5186
5416
  );
5187
5417
  Uploader.displayName = "Uploader";
5188
5418
 
5189
5419
  // src/components/Grid/Grid.tsx
5190
- var import_joy53 = require("@mui/joy");
5420
+ var import_joy55 = require("@mui/joy");
5191
5421
 
5192
5422
  // src/components/IconMenuButton/IconMenuButton.tsx
5193
- var import_react41 = __toESM(require("react"));
5194
- var import_joy54 = require("@mui/joy");
5423
+ var import_react44 = __toESM(require("react"));
5424
+ var import_joy56 = require("@mui/joy");
5195
5425
  function IconMenuButton(props) {
5196
5426
  const {
5197
5427
  size,
@@ -5204,8 +5434,8 @@ function IconMenuButton(props) {
5204
5434
  placement = "bottom"
5205
5435
  } = props;
5206
5436
  if (!items.length) {
5207
- return /* @__PURE__ */ import_react41.default.createElement(
5208
- import_joy54.IconButton,
5437
+ return /* @__PURE__ */ import_react44.default.createElement(
5438
+ import_joy56.IconButton,
5209
5439
  {
5210
5440
  component: props.buttonComponent ?? "button",
5211
5441
  size,
@@ -5218,10 +5448,10 @@ function IconMenuButton(props) {
5218
5448
  icon
5219
5449
  );
5220
5450
  }
5221
- return /* @__PURE__ */ import_react41.default.createElement(Dropdown_default, null, /* @__PURE__ */ import_react41.default.createElement(
5222
- import_joy54.MenuButton,
5451
+ return /* @__PURE__ */ import_react44.default.createElement(Dropdown_default, null, /* @__PURE__ */ import_react44.default.createElement(
5452
+ import_joy56.MenuButton,
5223
5453
  {
5224
- slots: { root: import_joy54.IconButton },
5454
+ slots: { root: import_joy56.IconButton },
5225
5455
  slotProps: {
5226
5456
  root: {
5227
5457
  component: props.buttonComponent ?? "button",
@@ -5235,19 +5465,19 @@ function IconMenuButton(props) {
5235
5465
  }
5236
5466
  },
5237
5467
  icon
5238
- ), /* @__PURE__ */ import_react41.default.createElement(Menu, { placement, size }, items.map((i) => /* @__PURE__ */ import_react41.default.createElement(MenuItem, { key: i.text, component: i.component, ...i.componentProps ?? {} }, i.text))));
5468
+ ), /* @__PURE__ */ import_react44.default.createElement(Menu, { placement, size }, items.map((i) => /* @__PURE__ */ import_react44.default.createElement(MenuItem, { key: i.text, component: i.component, ...i.componentProps ?? {} }, i.text))));
5239
5469
  }
5240
5470
  IconMenuButton.displayName = "IconMenuButton";
5241
5471
 
5242
5472
  // src/components/Markdown/Markdown.tsx
5243
- var import_react42 = __toESM(require("react"));
5244
- var import_joy55 = require("@mui/joy");
5245
- var import_joy56 = require("@mui/joy");
5473
+ var import_react45 = __toESM(require("react"));
5474
+ var import_joy57 = require("@mui/joy");
5475
+ var import_joy58 = require("@mui/joy");
5246
5476
  var import_remark_gfm = __toESM(require("remark-gfm"));
5247
- var LazyReactMarkdown = (0, import_react42.lazy)(() => import("react-markdown"));
5477
+ var LazyReactMarkdown = (0, import_react45.lazy)(() => import("react-markdown"));
5248
5478
  var Markdown = (props) => {
5249
- const [rehypeAccent2, setRehypeAccent] = (0, import_react42.useState)(null);
5250
- (0, import_react42.useEffect)(() => {
5479
+ const [rehypeAccent2, setRehypeAccent] = (0, import_react45.useState)(null);
5480
+ (0, import_react45.useEffect)(() => {
5251
5481
  const loadRehypeAccent = async () => {
5252
5482
  const module2 = await Promise.resolve().then(() => (init_rehype_accent(), rehype_accent_exports));
5253
5483
  setRehypeAccent(() => module2.rehypeAccent);
@@ -5269,12 +5499,12 @@ var Markdown = (props) => {
5269
5499
  if (!rehypeAccent2) {
5270
5500
  return null;
5271
5501
  }
5272
- return /* @__PURE__ */ import_react42.default.createElement(Typography, { component: "div", color, textColor, level: defaultLevel, ...innerProps }, /* @__PURE__ */ import_react42.default.createElement(
5273
- import_react42.Suspense,
5502
+ return /* @__PURE__ */ import_react45.default.createElement(Typography, { component: "div", color, textColor, level: defaultLevel, ...innerProps }, /* @__PURE__ */ import_react45.default.createElement(
5503
+ import_react45.Suspense,
5274
5504
  {
5275
- fallback: fallback || /* @__PURE__ */ import_react42.default.createElement(Typography, null, /* @__PURE__ */ import_react42.default.createElement(import_joy55.Skeleton, null, content || ""))
5505
+ fallback: fallback || /* @__PURE__ */ import_react45.default.createElement(Typography, null, /* @__PURE__ */ import_react45.default.createElement(import_joy57.Skeleton, null, content || ""))
5276
5506
  },
5277
- /* @__PURE__ */ import_react42.default.createElement(
5507
+ /* @__PURE__ */ import_react45.default.createElement(
5278
5508
  LazyReactMarkdown,
5279
5509
  {
5280
5510
  ...markdownOptions,
@@ -5282,15 +5512,15 @@ var Markdown = (props) => {
5282
5512
  rehypePlugins: [[rehypeAccent2, { accentColor }]],
5283
5513
  remarkPlugins: [import_remark_gfm.default],
5284
5514
  components: {
5285
- h1: ({ children }) => /* @__PURE__ */ import_react42.default.createElement(Typography, { color, textColor, level: "h1" }, children),
5286
- h2: ({ children }) => /* @__PURE__ */ import_react42.default.createElement(Typography, { color, textColor, level: "h2" }, children),
5287
- h3: ({ children }) => /* @__PURE__ */ import_react42.default.createElement(Typography, { color, textColor, level: "h3" }, children),
5288
- h4: ({ children }) => /* @__PURE__ */ import_react42.default.createElement(Typography, { color, textColor, level: "h4" }, children),
5289
- p: ({ children, node }) => /* @__PURE__ */ import_react42.default.createElement(Typography, { color, textColor, level: defaultLevel, ...node?.properties }, children),
5290
- a: ({ children, href }) => /* @__PURE__ */ import_react42.default.createElement(import_joy56.Link, { href, target: defaultLinkAction }, children),
5291
- hr: () => /* @__PURE__ */ import_react42.default.createElement(Divider, null),
5292
- b: ({ children }) => /* @__PURE__ */ import_react42.default.createElement(Typography, { fontWeight: boldFontWeight }, children),
5293
- strong: ({ children }) => /* @__PURE__ */ import_react42.default.createElement(Typography, { fontWeight: boldFontWeight }, children),
5515
+ h1: ({ children }) => /* @__PURE__ */ import_react45.default.createElement(Typography, { color, textColor, level: "h1" }, children),
5516
+ h2: ({ children }) => /* @__PURE__ */ import_react45.default.createElement(Typography, { color, textColor, level: "h2" }, children),
5517
+ h3: ({ children }) => /* @__PURE__ */ import_react45.default.createElement(Typography, { color, textColor, level: "h3" }, children),
5518
+ h4: ({ children }) => /* @__PURE__ */ import_react45.default.createElement(Typography, { color, textColor, level: "h4" }, children),
5519
+ p: ({ children, node }) => /* @__PURE__ */ import_react45.default.createElement(Typography, { color, textColor, level: defaultLevel, ...node?.properties }, children),
5520
+ a: ({ children, href }) => /* @__PURE__ */ import_react45.default.createElement(import_joy58.Link, { href, target: defaultLinkAction }, children),
5521
+ hr: () => /* @__PURE__ */ import_react45.default.createElement(Divider, null),
5522
+ b: ({ children }) => /* @__PURE__ */ import_react45.default.createElement(Typography, { fontWeight: boldFontWeight }, children),
5523
+ strong: ({ children }) => /* @__PURE__ */ import_react45.default.createElement(Typography, { fontWeight: boldFontWeight }, children),
5294
5524
  ...markdownOptions?.components
5295
5525
  }
5296
5526
  }
@@ -5300,8 +5530,8 @@ var Markdown = (props) => {
5300
5530
  Markdown.displayName = "Markdown";
5301
5531
 
5302
5532
  // src/components/MenuButton/MenuButton.tsx
5303
- var import_react43 = __toESM(require("react"));
5304
- var import_joy57 = require("@mui/joy");
5533
+ var import_react46 = __toESM(require("react"));
5534
+ var import_joy59 = require("@mui/joy");
5305
5535
  var import_ExpandMore = __toESM(require("@mui/icons-material/ExpandMore"));
5306
5536
  function MenuButton(props) {
5307
5537
  const {
@@ -5318,8 +5548,8 @@ function MenuButton(props) {
5318
5548
  placement = "bottom"
5319
5549
  } = props;
5320
5550
  if (!items.length) {
5321
- return /* @__PURE__ */ import_react43.default.createElement(
5322
- import_joy57.Button,
5551
+ return /* @__PURE__ */ import_react46.default.createElement(
5552
+ import_joy59.Button,
5323
5553
  {
5324
5554
  component: props.buttonComponent ?? "button",
5325
5555
  size,
@@ -5329,13 +5559,13 @@ function MenuButton(props) {
5329
5559
  loading,
5330
5560
  startDecorator,
5331
5561
  ...props.buttonComponentProps ?? {},
5332
- endDecorator: showIcon ? /* @__PURE__ */ import_react43.default.createElement(import_react43.default.Fragment, null, endDecorator, /* @__PURE__ */ import_react43.default.createElement(import_ExpandMore.default, null)) : /* @__PURE__ */ import_react43.default.createElement(import_react43.default.Fragment, null, endDecorator)
5562
+ endDecorator: showIcon ? /* @__PURE__ */ import_react46.default.createElement(import_react46.default.Fragment, null, endDecorator, /* @__PURE__ */ import_react46.default.createElement(import_ExpandMore.default, null)) : /* @__PURE__ */ import_react46.default.createElement(import_react46.default.Fragment, null, endDecorator)
5333
5563
  },
5334
5564
  buttonText
5335
5565
  );
5336
5566
  }
5337
- return /* @__PURE__ */ import_react43.default.createElement(Dropdown_default, null, /* @__PURE__ */ import_react43.default.createElement(
5338
- import_joy57.MenuButton,
5567
+ return /* @__PURE__ */ import_react46.default.createElement(Dropdown_default, null, /* @__PURE__ */ import_react46.default.createElement(
5568
+ import_joy59.MenuButton,
5339
5569
  {
5340
5570
  component: props.buttonComponent ?? "button",
5341
5571
  size,
@@ -5345,25 +5575,25 @@ function MenuButton(props) {
5345
5575
  loading,
5346
5576
  startDecorator,
5347
5577
  ...props.buttonComponentProps ?? {},
5348
- endDecorator: showIcon ? /* @__PURE__ */ import_react43.default.createElement(import_react43.default.Fragment, null, endDecorator, /* @__PURE__ */ import_react43.default.createElement(import_ExpandMore.default, null)) : /* @__PURE__ */ import_react43.default.createElement(import_react43.default.Fragment, null, endDecorator)
5578
+ endDecorator: showIcon ? /* @__PURE__ */ import_react46.default.createElement(import_react46.default.Fragment, null, endDecorator, /* @__PURE__ */ import_react46.default.createElement(import_ExpandMore.default, null)) : /* @__PURE__ */ import_react46.default.createElement(import_react46.default.Fragment, null, endDecorator)
5349
5579
  },
5350
5580
  buttonText
5351
- ), /* @__PURE__ */ import_react43.default.createElement(Menu, { placement, size }, items.map((i) => /* @__PURE__ */ import_react43.default.createElement(MenuItem, { key: i.text, component: i.component, ...i.componentProps ?? {} }, i.text))));
5581
+ ), /* @__PURE__ */ import_react46.default.createElement(Menu, { placement, size }, items.map((i) => /* @__PURE__ */ import_react46.default.createElement(MenuItem, { key: i.text, component: i.component, ...i.componentProps ?? {} }, i.text))));
5352
5582
  }
5353
5583
  MenuButton.displayName = "MenuButton";
5354
5584
 
5355
5585
  // src/components/MonthPicker/MonthPicker.tsx
5356
- var import_react44 = __toESM(require("react"));
5586
+ var import_react47 = __toESM(require("react"));
5357
5587
  var import_CalendarToday3 = __toESM(require("@mui/icons-material/CalendarToday"));
5358
- var import_joy58 = require("@mui/joy");
5588
+ var import_joy60 = require("@mui/joy");
5359
5589
  var import_base4 = require("@mui/base");
5360
- var StyledPopper3 = (0, import_joy58.styled)(import_base4.Popper, {
5590
+ var StyledPopper3 = (0, import_joy60.styled)(import_base4.Popper, {
5361
5591
  name: "MonthPicker",
5362
5592
  slot: "popper"
5363
5593
  })(({ theme }) => ({
5364
5594
  zIndex: theme.zIndex.tooltip
5365
5595
  }));
5366
- var CalendarSheet3 = (0, import_joy58.styled)(Sheet_default, {
5596
+ var CalendarSheet3 = (0, import_joy60.styled)(Sheet_default, {
5367
5597
  name: "MonthPicker",
5368
5598
  slot: "sheet",
5369
5599
  overridesResolver: (props, styles) => styles.root
@@ -5372,7 +5602,7 @@ var CalendarSheet3 = (0, import_joy58.styled)(Sheet_default, {
5372
5602
  boxShadow: theme.shadow.md,
5373
5603
  borderRadius: theme.radius.md
5374
5604
  }));
5375
- var MonthPickerRoot = (0, import_joy58.styled)("div", {
5605
+ var MonthPickerRoot = (0, import_joy60.styled)("div", {
5376
5606
  name: "MonthPicker",
5377
5607
  slot: "root",
5378
5608
  overridesResolver: (props, styles) => styles.root
@@ -5408,8 +5638,8 @@ function parseDate3(dateString, format) {
5408
5638
  const result = new Date(year, month, day);
5409
5639
  return result;
5410
5640
  }
5411
- var MonthPicker = (0, import_react44.forwardRef)((inProps, ref) => {
5412
- const props = (0, import_joy58.useThemeProps)({ props: inProps, name: "MonthPicker" });
5641
+ var MonthPicker = (0, import_react47.forwardRef)((inProps, ref) => {
5642
+ const props = (0, import_joy60.useThemeProps)({ props: inProps, name: "MonthPicker" });
5413
5643
  const {
5414
5644
  onChange,
5415
5645
  disabled,
@@ -5435,14 +5665,14 @@ var MonthPicker = (0, import_react44.forwardRef)((inProps, ref) => {
5435
5665
  locale,
5436
5666
  ...innerProps
5437
5667
  } = props;
5438
- const innerRef = (0, import_react44.useRef)(null);
5439
- const buttonRef = (0, import_react44.useRef)(null);
5668
+ const innerRef = (0, import_react47.useRef)(null);
5669
+ const buttonRef = (0, import_react47.useRef)(null);
5440
5670
  const [value, setValue, isControlled] = useControlledState(
5441
5671
  props.value,
5442
5672
  props.defaultValue || "",
5443
- (0, import_react44.useCallback)((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
5673
+ (0, import_react47.useCallback)((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
5444
5674
  );
5445
- const getFormattedDisplayValue = (0, import_react44.useCallback)(
5675
+ const getFormattedDisplayValue = (0, import_react47.useCallback)(
5446
5676
  (inputValue) => {
5447
5677
  if (!inputValue) return "";
5448
5678
  try {
@@ -5453,19 +5683,19 @@ var MonthPicker = (0, import_react44.forwardRef)((inProps, ref) => {
5453
5683
  },
5454
5684
  [format, displayFormat, locale]
5455
5685
  );
5456
- const [displayValue, setDisplayValue] = (0, import_react44.useState)(() => getFormattedDisplayValue(value));
5457
- const [anchorEl, setAnchorEl] = (0, import_react44.useState)(null);
5686
+ const [displayValue, setDisplayValue] = (0, import_react47.useState)(() => getFormattedDisplayValue(value));
5687
+ const [anchorEl, setAnchorEl] = (0, import_react47.useState)(null);
5458
5688
  const open = Boolean(anchorEl);
5459
- (0, import_react44.useEffect)(() => {
5689
+ (0, import_react47.useEffect)(() => {
5460
5690
  if (!anchorEl) {
5461
5691
  innerRef.current?.blur();
5462
5692
  }
5463
5693
  }, [anchorEl, innerRef]);
5464
- (0, import_react44.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
5465
- (0, import_react44.useEffect)(() => {
5694
+ (0, import_react47.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
5695
+ (0, import_react47.useEffect)(() => {
5466
5696
  setDisplayValue(getFormattedDisplayValue(value));
5467
5697
  }, [value, getFormattedDisplayValue]);
5468
- const handleChange = (0, import_react44.useCallback)(
5698
+ const handleChange = (0, import_react47.useCallback)(
5469
5699
  (event) => {
5470
5700
  const newValue = event.target.value;
5471
5701
  setValue(newValue);
@@ -5475,21 +5705,21 @@ var MonthPicker = (0, import_react44.forwardRef)((inProps, ref) => {
5475
5705
  },
5476
5706
  [setValue, getFormattedDisplayValue, isControlled]
5477
5707
  );
5478
- const handleCalendarToggle = (0, import_react44.useCallback)(
5708
+ const handleCalendarToggle = (0, import_react47.useCallback)(
5479
5709
  (event) => {
5480
5710
  setAnchorEl(anchorEl ? null : event.currentTarget);
5481
5711
  innerRef.current?.focus();
5482
5712
  },
5483
5713
  [anchorEl, setAnchorEl, innerRef]
5484
5714
  );
5485
- const handleInputMouseDown = (0, import_react44.useCallback)(
5715
+ const handleInputMouseDown = (0, import_react47.useCallback)(
5486
5716
  (event) => {
5487
5717
  event.preventDefault();
5488
5718
  buttonRef.current?.focus();
5489
5719
  },
5490
5720
  [buttonRef]
5491
5721
  );
5492
- return /* @__PURE__ */ import_react44.default.createElement(MonthPickerRoot, null, /* @__PURE__ */ import_react44.default.createElement(import_base4.FocusTrap, { open: true }, /* @__PURE__ */ import_react44.default.createElement(import_react44.default.Fragment, null, /* @__PURE__ */ import_react44.default.createElement(
5722
+ return /* @__PURE__ */ import_react47.default.createElement(MonthPickerRoot, null, /* @__PURE__ */ import_react47.default.createElement(import_base4.FocusTrap, { open: true }, /* @__PURE__ */ import_react47.default.createElement(import_react47.default.Fragment, null, /* @__PURE__ */ import_react47.default.createElement(
5493
5723
  Input_default,
5494
5724
  {
5495
5725
  ...innerProps,
@@ -5519,7 +5749,7 @@ var MonthPicker = (0, import_react44.forwardRef)((inProps, ref) => {
5519
5749
  // NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
5520
5750
  fontFamily: "monospace"
5521
5751
  },
5522
- endDecorator: /* @__PURE__ */ import_react44.default.createElement(
5752
+ endDecorator: /* @__PURE__ */ import_react47.default.createElement(
5523
5753
  IconButton_default,
5524
5754
  {
5525
5755
  ref: buttonRef,
@@ -5531,12 +5761,12 @@ var MonthPicker = (0, import_react44.forwardRef)((inProps, ref) => {
5531
5761
  "aria-expanded": open,
5532
5762
  disabled
5533
5763
  },
5534
- /* @__PURE__ */ import_react44.default.createElement(import_CalendarToday3.default, null)
5764
+ /* @__PURE__ */ import_react47.default.createElement(import_CalendarToday3.default, null)
5535
5765
  ),
5536
5766
  label,
5537
5767
  helperText
5538
5768
  }
5539
- ), open && /* @__PURE__ */ import_react44.default.createElement(import_base4.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react44.default.createElement(
5769
+ ), open && /* @__PURE__ */ import_react47.default.createElement(import_base4.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react47.default.createElement(
5540
5770
  StyledPopper3,
5541
5771
  {
5542
5772
  id: "month-picker-popper",
@@ -5555,7 +5785,7 @@ var MonthPicker = (0, import_react44.forwardRef)((inProps, ref) => {
5555
5785
  "aria-label": "Calendar Tooltip",
5556
5786
  "aria-expanded": open
5557
5787
  },
5558
- /* @__PURE__ */ import_react44.default.createElement(CalendarSheet3, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react44.default.createElement(
5788
+ /* @__PURE__ */ import_react47.default.createElement(CalendarSheet3, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react47.default.createElement(
5559
5789
  Calendar_default,
5560
5790
  {
5561
5791
  view: "month",
@@ -5576,14 +5806,14 @@ var MonthPicker = (0, import_react44.forwardRef)((inProps, ref) => {
5576
5806
  disablePast,
5577
5807
  locale
5578
5808
  }
5579
- ), /* @__PURE__ */ import_react44.default.createElement(
5809
+ ), /* @__PURE__ */ import_react47.default.createElement(
5580
5810
  DialogActions_default,
5581
5811
  {
5582
5812
  sx: {
5583
5813
  p: 1
5584
5814
  }
5585
5815
  },
5586
- /* @__PURE__ */ import_react44.default.createElement(
5816
+ /* @__PURE__ */ import_react47.default.createElement(
5587
5817
  Button_default,
5588
5818
  {
5589
5819
  size,
@@ -5606,18 +5836,18 @@ var MonthPicker = (0, import_react44.forwardRef)((inProps, ref) => {
5606
5836
  });
5607
5837
 
5608
5838
  // src/components/MonthRangePicker/MonthRangePicker.tsx
5609
- var import_react45 = __toESM(require("react"));
5839
+ var import_react48 = __toESM(require("react"));
5610
5840
  var import_react_imask3 = require("react-imask");
5611
5841
  var import_CalendarToday4 = __toESM(require("@mui/icons-material/CalendarToday"));
5612
- var import_joy59 = require("@mui/joy");
5842
+ var import_joy61 = require("@mui/joy");
5613
5843
  var import_base5 = require("@mui/base");
5614
- var StyledPopper4 = (0, import_joy59.styled)(import_base5.Popper, {
5844
+ var StyledPopper4 = (0, import_joy61.styled)(import_base5.Popper, {
5615
5845
  name: "MonthRangePicker",
5616
5846
  slot: "popper"
5617
5847
  })(({ theme }) => ({
5618
5848
  zIndex: theme.zIndex.tooltip
5619
5849
  }));
5620
- var CalendarSheet4 = (0, import_joy59.styled)(Sheet_default, {
5850
+ var CalendarSheet4 = (0, import_joy61.styled)(Sheet_default, {
5621
5851
  name: "MonthRangePicker",
5622
5852
  slot: "sheet",
5623
5853
  overridesResolver: (props, styles) => styles.root
@@ -5627,7 +5857,7 @@ var CalendarSheet4 = (0, import_joy59.styled)(Sheet_default, {
5627
5857
  boxShadow: theme.shadow.md,
5628
5858
  borderRadius: theme.radius.md
5629
5859
  }));
5630
- var MonthRangePickerRoot = (0, import_joy59.styled)("div", {
5860
+ var MonthRangePickerRoot = (0, import_joy61.styled)("div", {
5631
5861
  name: "MonthRangePicker",
5632
5862
  slot: "root",
5633
5863
  overridesResolver: (props, styles) => styles.root
@@ -5664,9 +5894,9 @@ var parseDates2 = (str) => {
5664
5894
  var formatToPattern3 = (format) => {
5665
5895
  return `${format} - ${format}`.replace(/YYYY/g, "Y").replace(/MM/g, "m").replace(/[^YMm\s]/g, (match) => `${match}\``);
5666
5896
  };
5667
- var TextMaskAdapter9 = import_react45.default.forwardRef(function TextMaskAdapter10(props, ref) {
5897
+ var TextMaskAdapter9 = import_react48.default.forwardRef(function TextMaskAdapter10(props, ref) {
5668
5898
  const { onChange, format, ...other } = props;
5669
- return /* @__PURE__ */ import_react45.default.createElement(
5899
+ return /* @__PURE__ */ import_react48.default.createElement(
5670
5900
  import_react_imask3.IMaskInput,
5671
5901
  {
5672
5902
  ...other,
@@ -5694,8 +5924,8 @@ var TextMaskAdapter9 = import_react45.default.forwardRef(function TextMaskAdapte
5694
5924
  }
5695
5925
  );
5696
5926
  });
5697
- var MonthRangePicker = (0, import_react45.forwardRef)((inProps, ref) => {
5698
- const props = (0, import_joy59.useThemeProps)({ props: inProps, name: "MonthRangePicker" });
5927
+ var MonthRangePicker = (0, import_react48.forwardRef)((inProps, ref) => {
5928
+ const props = (0, import_joy61.useThemeProps)({ props: inProps, name: "MonthRangePicker" });
5699
5929
  const {
5700
5930
  onChange,
5701
5931
  disabled,
@@ -5714,35 +5944,35 @@ var MonthRangePicker = (0, import_react45.forwardRef)((inProps, ref) => {
5714
5944
  size,
5715
5945
  ...innerProps
5716
5946
  } = props;
5717
- const innerRef = (0, import_react45.useRef)(null);
5947
+ const innerRef = (0, import_react48.useRef)(null);
5718
5948
  const [value, setValue] = useControlledState(
5719
5949
  props.value,
5720
5950
  props.defaultValue || "",
5721
- (0, import_react45.useCallback)((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
5951
+ (0, import_react48.useCallback)((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
5722
5952
  );
5723
- const [anchorEl, setAnchorEl] = (0, import_react45.useState)(null);
5953
+ const [anchorEl, setAnchorEl] = (0, import_react48.useState)(null);
5724
5954
  const open = Boolean(anchorEl);
5725
- const calendarValue = (0, import_react45.useMemo)(() => value ? parseDates2(value) : void 0, [value]);
5726
- (0, import_react45.useEffect)(() => {
5955
+ const calendarValue = (0, import_react48.useMemo)(() => value ? parseDates2(value) : void 0, [value]);
5956
+ (0, import_react48.useEffect)(() => {
5727
5957
  if (!anchorEl) {
5728
5958
  innerRef.current?.blur();
5729
5959
  }
5730
5960
  }, [anchorEl, innerRef]);
5731
- (0, import_react45.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
5732
- const handleChange = (0, import_react45.useCallback)(
5961
+ (0, import_react48.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
5962
+ const handleChange = (0, import_react48.useCallback)(
5733
5963
  (event) => {
5734
5964
  setValue(event.target.value);
5735
5965
  },
5736
5966
  [setValue]
5737
5967
  );
5738
- const handleCalendarToggle = (0, import_react45.useCallback)(
5968
+ const handleCalendarToggle = (0, import_react48.useCallback)(
5739
5969
  (event) => {
5740
5970
  setAnchorEl(anchorEl ? null : event.currentTarget);
5741
5971
  innerRef.current?.focus();
5742
5972
  },
5743
5973
  [anchorEl, setAnchorEl, innerRef]
5744
5974
  );
5745
- const handleCalendarChange = (0, import_react45.useCallback)(
5975
+ const handleCalendarChange = (0, import_react48.useCallback)(
5746
5976
  ([date1, date2]) => {
5747
5977
  if (!date1 || !date2) return;
5748
5978
  setValue(formatValueString4([date1, date2], format));
@@ -5750,7 +5980,7 @@ var MonthRangePicker = (0, import_react45.forwardRef)((inProps, ref) => {
5750
5980
  },
5751
5981
  [setValue, setAnchorEl, format]
5752
5982
  );
5753
- return /* @__PURE__ */ import_react45.default.createElement(MonthRangePickerRoot, null, /* @__PURE__ */ import_react45.default.createElement(import_base5.FocusTrap, { open: true }, /* @__PURE__ */ import_react45.default.createElement(import_react45.default.Fragment, null, /* @__PURE__ */ import_react45.default.createElement(
5983
+ return /* @__PURE__ */ import_react48.default.createElement(MonthRangePickerRoot, null, /* @__PURE__ */ import_react48.default.createElement(import_base5.FocusTrap, { open: true }, /* @__PURE__ */ import_react48.default.createElement(import_react48.default.Fragment, null, /* @__PURE__ */ import_react48.default.createElement(
5754
5984
  Input_default,
5755
5985
  {
5756
5986
  ...innerProps,
@@ -5772,7 +6002,7 @@ var MonthRangePicker = (0, import_react45.forwardRef)((inProps, ref) => {
5772
6002
  // NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
5773
6003
  fontFamily: "monospace"
5774
6004
  },
5775
- endDecorator: /* @__PURE__ */ import_react45.default.createElement(
6005
+ endDecorator: /* @__PURE__ */ import_react48.default.createElement(
5776
6006
  IconButton_default,
5777
6007
  {
5778
6008
  variant: "plain",
@@ -5782,12 +6012,12 @@ var MonthRangePicker = (0, import_react45.forwardRef)((inProps, ref) => {
5782
6012
  "aria-haspopup": "dialog",
5783
6013
  "aria-expanded": open
5784
6014
  },
5785
- /* @__PURE__ */ import_react45.default.createElement(import_CalendarToday4.default, null)
6015
+ /* @__PURE__ */ import_react48.default.createElement(import_CalendarToday4.default, null)
5786
6016
  ),
5787
6017
  label,
5788
6018
  helperText
5789
6019
  }
5790
- ), open && /* @__PURE__ */ import_react45.default.createElement(import_base5.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react45.default.createElement(
6020
+ ), open && /* @__PURE__ */ import_react48.default.createElement(import_base5.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react48.default.createElement(
5791
6021
  StyledPopper4,
5792
6022
  {
5793
6023
  id: "month-range-picker-popper",
@@ -5806,7 +6036,7 @@ var MonthRangePicker = (0, import_react45.forwardRef)((inProps, ref) => {
5806
6036
  "aria-label": "Calendar Tooltip",
5807
6037
  "aria-expanded": open
5808
6038
  },
5809
- /* @__PURE__ */ import_react45.default.createElement(CalendarSheet4, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react45.default.createElement(
6039
+ /* @__PURE__ */ import_react48.default.createElement(CalendarSheet4, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react48.default.createElement(
5810
6040
  Calendar_default,
5811
6041
  {
5812
6042
  view: "month",
@@ -5819,14 +6049,14 @@ var MonthRangePicker = (0, import_react45.forwardRef)((inProps, ref) => {
5819
6049
  disableFuture,
5820
6050
  disablePast
5821
6051
  }
5822
- ), /* @__PURE__ */ import_react45.default.createElement(
6052
+ ), /* @__PURE__ */ import_react48.default.createElement(
5823
6053
  DialogActions_default,
5824
6054
  {
5825
6055
  sx: {
5826
6056
  p: 1
5827
6057
  }
5828
6058
  },
5829
- /* @__PURE__ */ import_react45.default.createElement(
6059
+ /* @__PURE__ */ import_react48.default.createElement(
5830
6060
  Button_default,
5831
6061
  {
5832
6062
  size,
@@ -5845,22 +6075,22 @@ var MonthRangePicker = (0, import_react45.forwardRef)((inProps, ref) => {
5845
6075
  MonthRangePicker.displayName = "MonthRangePicker";
5846
6076
 
5847
6077
  // src/components/NavigationGroup/NavigationGroup.tsx
5848
- var import_react46 = __toESM(require("react"));
5849
- var import_joy60 = require("@mui/joy");
5850
- var AccordionSummary2 = (0, import_joy60.styled)(import_joy60.AccordionSummary, {
6078
+ var import_react49 = __toESM(require("react"));
6079
+ var import_joy62 = require("@mui/joy");
6080
+ var AccordionSummary2 = (0, import_joy62.styled)(import_joy62.AccordionSummary, {
5851
6081
  name: "NavigationGroup",
5852
6082
  slot: "Summary",
5853
6083
  shouldForwardProp: (prop) => prop !== "useIcon" && prop !== "level"
5854
6084
  })(({ theme, useIcon, level }) => ({
5855
- [`& .${import_joy60.accordionSummaryClasses.button}`]: {
6085
+ [`& .${import_joy62.accordionSummaryClasses.button}`]: {
5856
6086
  padding: theme.spacing(4, 6, 4, (useIcon ? 6 : 8) + (level || 0) * 8),
5857
- [`&.${import_joy60.accordionSummaryClasses.expanded}`]: {
6087
+ [`&.${import_joy62.accordionSummaryClasses.expanded}`]: {
5858
6088
  color: theme.palette.primary.plainColor,
5859
6089
  "--Icon-color": theme.palette.primary.plainColor
5860
6090
  }
5861
6091
  }
5862
6092
  }));
5863
- var AccordionDetails2 = (0, import_joy60.styled)(import_joy60.AccordionDetails, {
6093
+ var AccordionDetails2 = (0, import_joy62.styled)(import_joy62.AccordionDetails, {
5864
6094
  name: "NavigationGroup",
5865
6095
  slot: "Details"
5866
6096
  })(({ theme }) => ({
@@ -5869,13 +6099,13 @@ var AccordionDetails2 = (0, import_joy60.styled)(import_joy60.AccordionDetails,
5869
6099
  }));
5870
6100
  function NavigationGroup(props) {
5871
6101
  const { title, children, startDecorator, level, ...rest } = props;
5872
- return /* @__PURE__ */ import_react46.default.createElement(import_joy60.Accordion, { ...rest }, /* @__PURE__ */ import_react46.default.createElement(AccordionSummary2, { useIcon: !!startDecorator, level }, /* @__PURE__ */ import_react46.default.createElement(import_joy60.Stack, { direction: "row", gap: 4 }, startDecorator, title)), /* @__PURE__ */ import_react46.default.createElement(AccordionDetails2, null, children));
6102
+ return /* @__PURE__ */ import_react49.default.createElement(import_joy62.Accordion, { ...rest }, /* @__PURE__ */ import_react49.default.createElement(AccordionSummary2, { useIcon: !!startDecorator, level }, /* @__PURE__ */ import_react49.default.createElement(import_joy62.Stack, { direction: "row", gap: 4 }, startDecorator, title)), /* @__PURE__ */ import_react49.default.createElement(AccordionDetails2, null, children));
5873
6103
  }
5874
6104
 
5875
6105
  // src/components/NavigationItem/NavigationItem.tsx
5876
- var import_react47 = __toESM(require("react"));
5877
- var import_joy61 = require("@mui/joy");
5878
- var ListItemButton = (0, import_joy61.styled)(import_joy61.ListItemButton, {
6106
+ var import_react50 = __toESM(require("react"));
6107
+ var import_joy63 = require("@mui/joy");
6108
+ var ListItemButton = (0, import_joy63.styled)(import_joy63.ListItemButton, {
5879
6109
  name: "NavigationItem",
5880
6110
  slot: "Button",
5881
6111
  shouldForwardProp: (prop) => prop !== "useIcon" && prop !== "level"
@@ -5889,7 +6119,7 @@ var ListItemButton = (0, import_joy61.styled)(import_joy61.ListItemButton, {
5889
6119
  "&:active": {
5890
6120
  backgroundColor: theme.palette.neutral.plainActiveBg
5891
6121
  },
5892
- [`&.${import_joy61.listItemButtonClasses.selected}`]: {
6122
+ [`&.${import_joy63.listItemButtonClasses.selected}`]: {
5893
6123
  color: theme.palette.primary.plainColor,
5894
6124
  "--Icon-color": theme.palette.primary.plainColor,
5895
6125
  "&:not(:hover):not(:active)": {
@@ -5902,7 +6132,7 @@ function NavigationItem(props) {
5902
6132
  const handleClick = () => {
5903
6133
  onClick?.(id);
5904
6134
  };
5905
- return /* @__PURE__ */ import_react47.default.createElement(import_joy61.ListItem, { ...rest }, /* @__PURE__ */ import_react47.default.createElement(
6135
+ return /* @__PURE__ */ import_react50.default.createElement(import_joy63.ListItem, { ...rest }, /* @__PURE__ */ import_react50.default.createElement(
5906
6136
  ListItemButton,
5907
6137
  {
5908
6138
  level,
@@ -5911,21 +6141,21 @@ function NavigationItem(props) {
5911
6141
  "aria-current": selected,
5912
6142
  onClick: handleClick
5913
6143
  },
5914
- startDecorator && /* @__PURE__ */ import_react47.default.createElement(import_joy61.ListItemDecorator, null, startDecorator),
6144
+ startDecorator && /* @__PURE__ */ import_react50.default.createElement(import_joy63.ListItemDecorator, null, startDecorator),
5915
6145
  children
5916
6146
  ));
5917
6147
  }
5918
6148
 
5919
6149
  // src/components/Navigator/Navigator.tsx
5920
- var import_react48 = __toESM(require("react"));
6150
+ var import_react51 = __toESM(require("react"));
5921
6151
  function Navigator(props) {
5922
6152
  const { items, level = 0, onSelect } = props;
5923
6153
  const handleItemClick = (id) => {
5924
6154
  onSelect?.(id);
5925
6155
  };
5926
- return /* @__PURE__ */ import_react48.default.createElement("div", null, items.map((item, index) => {
6156
+ return /* @__PURE__ */ import_react51.default.createElement("div", null, items.map((item, index) => {
5927
6157
  if (item.type === "item") {
5928
- return /* @__PURE__ */ import_react48.default.createElement(
6158
+ return /* @__PURE__ */ import_react51.default.createElement(
5929
6159
  NavigationItem,
5930
6160
  {
5931
6161
  key: item.id,
@@ -5938,7 +6168,7 @@ function Navigator(props) {
5938
6168
  item.title
5939
6169
  );
5940
6170
  } else if (item.type === "group") {
5941
- return /* @__PURE__ */ import_react48.default.createElement(
6171
+ return /* @__PURE__ */ import_react51.default.createElement(
5942
6172
  NavigationGroup,
5943
6173
  {
5944
6174
  key: `${item.title}-${index}`,
@@ -5956,22 +6186,22 @@ function Navigator(props) {
5956
6186
  Navigator.displayName = "Navigator";
5957
6187
 
5958
6188
  // src/components/ProfileMenu/ProfileMenu.tsx
5959
- var import_react49 = __toESM(require("react"));
5960
- var import_joy62 = require("@mui/joy");
6189
+ var import_react52 = __toESM(require("react"));
6190
+ var import_joy64 = require("@mui/joy");
5961
6191
  var import_base6 = require("@mui/base");
5962
6192
  var import_ArrowDropDown = __toESM(require("@mui/icons-material/ArrowDropDown"));
5963
- var StyledProfileCard = (0, import_joy62.styled)(import_joy3.Stack, {
6193
+ var StyledProfileCard = (0, import_joy64.styled)(import_joy3.Stack, {
5964
6194
  name: "ProfileMenu",
5965
6195
  slot: "item"
5966
6196
  })({});
5967
6197
  function ProfileCard(props) {
5968
6198
  const { children, chip, caption, size } = props;
5969
- const captionLevel = (0, import_react49.useMemo)(() => size === "sm" ? "body-xs" : "body-sm", [size]);
5970
- const nameLevel = (0, import_react49.useMemo)(() => size === "sm" ? "body-sm" : "body-md", [size]);
5971
- return /* @__PURE__ */ import_react49.default.createElement(StyledProfileCard, { px: 4, py: 2 }, /* @__PURE__ */ import_react49.default.createElement(import_joy3.Stack, { direction: "row", gap: 2 }, /* @__PURE__ */ import_react49.default.createElement(Typography, { level: nameLevel, fontWeight: "bold", textColor: "text.primary" }, children), chip && /* @__PURE__ */ import_react49.default.createElement(Chip, { size, color: "neutral", variant: "outlined" }, chip)), caption && /* @__PURE__ */ import_react49.default.createElement(Typography, { level: captionLevel, textColor: "text.tertiary" }, caption));
6199
+ const captionLevel = (0, import_react52.useMemo)(() => size === "sm" ? "body-xs" : "body-sm", [size]);
6200
+ const nameLevel = (0, import_react52.useMemo)(() => size === "sm" ? "body-sm" : "body-md", [size]);
6201
+ return /* @__PURE__ */ import_react52.default.createElement(StyledProfileCard, { px: 4, py: 2 }, /* @__PURE__ */ import_react52.default.createElement(import_joy3.Stack, { direction: "row", gap: 2 }, /* @__PURE__ */ import_react52.default.createElement(Typography, { level: nameLevel, fontWeight: "bold", textColor: "text.primary" }, children), chip && /* @__PURE__ */ import_react52.default.createElement(Chip, { size, color: "neutral", variant: "outlined" }, chip)), caption && /* @__PURE__ */ import_react52.default.createElement(Typography, { level: captionLevel, textColor: "text.tertiary" }, caption));
5972
6202
  }
5973
6203
  ProfileCard.displayName = "ProfileCard";
5974
- var StyledProfileMenuButton = (0, import_joy62.styled)(import_joy62.MenuButton, {
6204
+ var StyledProfileMenuButton = (0, import_joy64.styled)(import_joy64.MenuButton, {
5975
6205
  name: "ProfileMenu",
5976
6206
  slot: "button"
5977
6207
  })(({ theme }) => ({
@@ -5980,26 +6210,26 @@ var StyledProfileMenuButton = (0, import_joy62.styled)(import_joy62.MenuButton,
5980
6210
  }));
5981
6211
  function ProfileMenuButton(props) {
5982
6212
  const { size = "md", src, alt, children, getInitial, ...innerProps } = props;
5983
- return /* @__PURE__ */ import_react49.default.createElement(
6213
+ return /* @__PURE__ */ import_react52.default.createElement(
5984
6214
  StyledProfileMenuButton,
5985
6215
  {
5986
6216
  variant: "plain",
5987
6217
  color: "neutral",
5988
6218
  size,
5989
- endDecorator: /* @__PURE__ */ import_react49.default.createElement(import_ArrowDropDown.default, null),
6219
+ endDecorator: /* @__PURE__ */ import_react52.default.createElement(import_ArrowDropDown.default, null),
5990
6220
  ...innerProps
5991
6221
  },
5992
- /* @__PURE__ */ import_react49.default.createElement(Avatar, { variant: "soft", color: "primary", size, src, alt, getInitial }, children)
6222
+ /* @__PURE__ */ import_react52.default.createElement(Avatar, { variant: "soft", color: "primary", size, src, alt, getInitial }, children)
5993
6223
  );
5994
6224
  }
5995
6225
  ProfileMenuButton.displayName = "ProfileMenuButton";
5996
- var ProfileMenuRoot = (0, import_joy62.styled)(Menu, {
6226
+ var ProfileMenuRoot = (0, import_joy64.styled)(Menu, {
5997
6227
  name: "ProfileMenu",
5998
6228
  slot: "root"
5999
6229
  })(({ theme }) => ({
6000
6230
  border: "none",
6001
6231
  "--ListItem-paddingX": theme.spacing(4),
6002
- [`.${import_joy62.menuItemClasses.root}`]: {
6232
+ [`.${import_joy64.menuItemClasses.root}`]: {
6003
6233
  border: "none"
6004
6234
  }
6005
6235
  }));
@@ -6008,9 +6238,9 @@ function ProfileMenu(props) {
6008
6238
  const [open, setOpen] = useControlledState(
6009
6239
  _open,
6010
6240
  defaultOpen ?? false,
6011
- (0, import_react49.useCallback)((value) => onOpenChange?.(value), [onOpenChange])
6241
+ (0, import_react52.useCallback)((value) => onOpenChange?.(value), [onOpenChange])
6012
6242
  );
6013
- return /* @__PURE__ */ import_react49.default.createElement(import_base6.ClickAwayListener, { onClickAway: () => setOpen(false) }, /* @__PURE__ */ import_react49.default.createElement("div", null, /* @__PURE__ */ import_react49.default.createElement(import_joy62.Dropdown, { open }, /* @__PURE__ */ import_react49.default.createElement(
6243
+ return /* @__PURE__ */ import_react52.default.createElement(import_base6.ClickAwayListener, { onClickAway: () => setOpen(false) }, /* @__PURE__ */ import_react52.default.createElement("div", null, /* @__PURE__ */ import_react52.default.createElement(import_joy64.Dropdown, { open }, /* @__PURE__ */ import_react52.default.createElement(
6014
6244
  ProfileMenuButton,
6015
6245
  {
6016
6246
  size,
@@ -6020,7 +6250,7 @@ function ProfileMenu(props) {
6020
6250
  getInitial
6021
6251
  },
6022
6252
  profile.name
6023
- ), /* @__PURE__ */ import_react49.default.createElement(ProfileMenuRoot, { size, placement: "bottom-end", ...innerProps, onClose: () => setOpen(false) }, /* @__PURE__ */ import_react49.default.createElement(ProfileCard, { size, caption: profile.caption, chip: profile.chip }, profile.name), !!menuItems.length && /* @__PURE__ */ import_react49.default.createElement(import_joy62.ListDivider, null), menuItems.map(({ label, ...menuProps }) => /* @__PURE__ */ import_react49.default.createElement(
6253
+ ), /* @__PURE__ */ import_react52.default.createElement(ProfileMenuRoot, { size, placement: "bottom-end", ...innerProps, onClose: () => setOpen(false) }, /* @__PURE__ */ import_react52.default.createElement(ProfileCard, { size, caption: profile.caption, chip: profile.chip }, profile.name), !!menuItems.length && /* @__PURE__ */ import_react52.default.createElement(import_joy64.ListDivider, null), menuItems.map(({ label, ...menuProps }) => /* @__PURE__ */ import_react52.default.createElement(
6024
6254
  MenuItem,
6025
6255
  {
6026
6256
  key: label,
@@ -6036,31 +6266,31 @@ function ProfileMenu(props) {
6036
6266
  ProfileMenu.displayName = "ProfileMenu";
6037
6267
 
6038
6268
  // src/components/RadioList/RadioList.tsx
6039
- var import_react50 = __toESM(require("react"));
6269
+ var import_react53 = __toESM(require("react"));
6040
6270
  function RadioList(props) {
6041
6271
  const { items, ...innerProps } = props;
6042
- return /* @__PURE__ */ import_react50.default.createElement(RadioGroup, { ...innerProps }, items.map((item) => /* @__PURE__ */ import_react50.default.createElement(Radio, { key: `${item.value}`, value: item.value, label: item.label })));
6272
+ return /* @__PURE__ */ import_react53.default.createElement(RadioGroup, { ...innerProps }, items.map((item) => /* @__PURE__ */ import_react53.default.createElement(Radio, { key: `${item.value}`, value: item.value, label: item.label })));
6043
6273
  }
6044
6274
  RadioList.displayName = "RadioList";
6045
6275
 
6046
6276
  // src/components/Stepper/Stepper.tsx
6047
- var import_react51 = __toESM(require("react"));
6048
- var import_joy63 = require("@mui/joy");
6277
+ var import_react54 = __toESM(require("react"));
6278
+ var import_joy65 = require("@mui/joy");
6049
6279
  var import_Check = __toESM(require("@mui/icons-material/Check"));
6050
- var import_framer_motion27 = require("framer-motion");
6051
- var Step = (0, import_joy63.styled)(import_joy63.Step)({});
6280
+ var import_framer_motion28 = require("framer-motion");
6281
+ var Step = (0, import_joy65.styled)(import_joy65.Step)({});
6052
6282
  Step.displayName = "Step";
6053
- var StepIndicator = (0, import_joy63.styled)(import_joy63.StepIndicator)({});
6283
+ var StepIndicator = (0, import_joy65.styled)(import_joy65.StepIndicator)({});
6054
6284
  StepIndicator.displayName = "StepIndicator";
6055
- var StyledStepper = (0, import_joy63.styled)(import_joy63.Stepper)(({ theme }) => ({
6285
+ var StyledStepper = (0, import_joy65.styled)(import_joy65.Stepper)(({ theme }) => ({
6056
6286
  "--StepIndicator-size": "24px",
6057
6287
  "--Step-gap": theme.spacing(2),
6058
6288
  "--joy-palette-success-solidBg": "var(--joy-palette-success-400)",
6059
- [`& .${import_joy63.stepIndicatorClasses.root}`]: {
6289
+ [`& .${import_joy65.stepIndicatorClasses.root}`]: {
6060
6290
  fontSize: "var(--ceed-fontSize-xs)"
6061
6291
  }
6062
6292
  }));
6063
- var MotionStepper = (0, import_framer_motion27.motion)(StyledStepper);
6293
+ var MotionStepper = (0, import_framer_motion28.motion)(StyledStepper);
6064
6294
  function Stepper(props) {
6065
6295
  const {
6066
6296
  steps,
@@ -6070,30 +6300,30 @@ function Stepper(props) {
6070
6300
  inactiveLineColor = "neutral.300",
6071
6301
  activeStep
6072
6302
  } = props;
6073
- return /* @__PURE__ */ import_react51.default.createElement(
6303
+ return /* @__PURE__ */ import_react54.default.createElement(
6074
6304
  MotionStepper,
6075
6305
  {
6076
6306
  sx: (theme) => ({
6077
6307
  "--StepIndicator-size": "24px",
6078
6308
  "--Step-gap": theme.spacing(2),
6079
- [`& .${import_joy63.stepIndicatorClasses.root}`]: {
6309
+ [`& .${import_joy65.stepIndicatorClasses.root}`]: {
6080
6310
  fontSize: "var(--ceed-fontSize-xs)"
6081
6311
  },
6082
- [`& .${import_joy63.stepClasses.completed}`]: {
6312
+ [`& .${import_joy65.stepClasses.completed}`]: {
6083
6313
  "&::after": { bgcolor: activeLineColor },
6084
- [`& .${import_joy63.stepIndicatorClasses.root}`]: {
6314
+ [`& .${import_joy65.stepIndicatorClasses.root}`]: {
6085
6315
  bgcolor: activeColor
6086
6316
  }
6087
6317
  },
6088
- [`& .${import_joy63.stepClasses.active}`]: {
6318
+ [`& .${import_joy65.stepClasses.active}`]: {
6089
6319
  "&::after": { bgcolor: inactiveLineColor },
6090
- [`& .${import_joy63.stepIndicatorClasses.root}`]: {
6320
+ [`& .${import_joy65.stepIndicatorClasses.root}`]: {
6091
6321
  bgcolor: activeColor
6092
6322
  }
6093
6323
  },
6094
- [`& .${import_joy63.stepClasses.disabled}`]: {
6324
+ [`& .${import_joy65.stepClasses.disabled}`]: {
6095
6325
  "&::after": { bgcolor: inactiveLineColor },
6096
- [`& .${import_joy63.stepIndicatorClasses.root}`]: {
6326
+ [`& .${import_joy65.stepIndicatorClasses.root}`]: {
6097
6327
  bgcolor: inactiveColor
6098
6328
  }
6099
6329
  }
@@ -6104,16 +6334,16 @@ function Stepper(props) {
6104
6334
  const completed = activeStep > i + 1;
6105
6335
  const disabled = activeStep < i + 1;
6106
6336
  const hasContent = step.label || step.extraContent;
6107
- return /* @__PURE__ */ import_react51.default.createElement(
6337
+ return /* @__PURE__ */ import_react54.default.createElement(
6108
6338
  Step,
6109
6339
  {
6110
6340
  key: `step-${i}`,
6111
- indicator: /* @__PURE__ */ import_react51.default.createElement(StepIndicator, { variant: "solid", color: "primary" }, completed ? /* @__PURE__ */ import_react51.default.createElement(import_Check.default, null) : step.indicatorContent),
6341
+ indicator: /* @__PURE__ */ import_react54.default.createElement(StepIndicator, { variant: "solid", color: "primary" }, completed ? /* @__PURE__ */ import_react54.default.createElement(import_Check.default, null) : step.indicatorContent),
6112
6342
  active,
6113
6343
  completed,
6114
6344
  disabled
6115
6345
  },
6116
- hasContent && /* @__PURE__ */ import_react51.default.createElement(Stack_default, null, step.label && /* @__PURE__ */ import_react51.default.createElement(Typography_default, { level: "title-sm" }, step.label), step.extraContent && /* @__PURE__ */ import_react51.default.createElement(Typography_default, { level: "body-xs" }, step.extraContent))
6346
+ hasContent && /* @__PURE__ */ import_react54.default.createElement(Stack_default, null, step.label && /* @__PURE__ */ import_react54.default.createElement(Typography_default, { level: "title-sm" }, step.label), step.extraContent && /* @__PURE__ */ import_react54.default.createElement(Typography_default, { level: "body-xs" }, step.extraContent))
6117
6347
  );
6118
6348
  })
6119
6349
  );
@@ -6121,11 +6351,11 @@ function Stepper(props) {
6121
6351
  Stepper.displayName = "Stepper";
6122
6352
 
6123
6353
  // src/components/Switch/Switch.tsx
6124
- var import_react52 = __toESM(require("react"));
6125
- var import_joy64 = require("@mui/joy");
6126
- var import_framer_motion28 = require("framer-motion");
6127
- var MotionSwitch = (0, import_framer_motion28.motion)(import_joy64.Switch);
6128
- var StyledThumb = (0, import_joy64.styled)(import_framer_motion28.motion.div)({
6354
+ var import_react55 = __toESM(require("react"));
6355
+ var import_joy66 = require("@mui/joy");
6356
+ var import_framer_motion29 = require("framer-motion");
6357
+ var MotionSwitch = (0, import_framer_motion29.motion)(import_joy66.Switch);
6358
+ var StyledThumb = (0, import_joy66.styled)(import_framer_motion29.motion.div)({
6129
6359
  "--Icon-fontSize": "calc(var(--Switch-thumbSize) * 0.75)",
6130
6360
  display: "inline-flex",
6131
6361
  justifyContent: "center",
@@ -6138,19 +6368,19 @@ var StyledThumb = (0, import_joy64.styled)(import_framer_motion28.motion.div)({
6138
6368
  boxShadow: "var(--Switch-thumbShadow)",
6139
6369
  color: "var(--Switch-thumbColor)",
6140
6370
  backgroundColor: "var(--Switch-thumbBackground)",
6141
- [`&.${import_joy64.switchClasses.checked}`]: {
6371
+ [`&.${import_joy66.switchClasses.checked}`]: {
6142
6372
  left: "unset",
6143
6373
  right: "var(--Switch-thumbOffset)"
6144
6374
  }
6145
6375
  });
6146
- var Thumb = (props) => /* @__PURE__ */ import_react52.default.createElement(StyledThumb, { ...props, layout: true, transition: spring });
6376
+ var Thumb = (props) => /* @__PURE__ */ import_react55.default.createElement(StyledThumb, { ...props, layout: true, transition: spring });
6147
6377
  var spring = {
6148
6378
  type: "spring",
6149
6379
  stiffness: 700,
6150
6380
  damping: 30
6151
6381
  };
6152
6382
  var Switch = (props) => {
6153
- return /* @__PURE__ */ import_react52.default.createElement(
6383
+ return /* @__PURE__ */ import_react55.default.createElement(
6154
6384
  MotionSwitch,
6155
6385
  {
6156
6386
  ...props,
@@ -6164,32 +6394,32 @@ var Switch = (props) => {
6164
6394
  Switch.displayName = "Switch";
6165
6395
 
6166
6396
  // src/components/Tabs/Tabs.tsx
6167
- var import_react53 = __toESM(require("react"));
6168
- var import_joy65 = require("@mui/joy");
6169
- var StyledTabs = (0, import_joy65.styled)(import_joy65.Tabs)(({ theme }) => ({
6397
+ var import_react56 = __toESM(require("react"));
6398
+ var import_joy67 = require("@mui/joy");
6399
+ var StyledTabs = (0, import_joy67.styled)(import_joy67.Tabs)(({ theme }) => ({
6170
6400
  backgroundColor: theme.palette.background.body
6171
6401
  }));
6172
6402
  var Tabs = StyledTabs;
6173
6403
  Tabs.displayName = "Tabs";
6174
- var StyledTab = (0, import_joy65.styled)(import_joy65.Tab)(({ theme }) => ({
6404
+ var StyledTab = (0, import_joy67.styled)(import_joy67.Tab)(({ theme }) => ({
6175
6405
  gap: theme.spacing(2),
6176
- [`&:not(.${import_joy65.tabClasses.selected})`]: {
6406
+ [`&:not(.${import_joy67.tabClasses.selected})`]: {
6177
6407
  color: theme.palette.neutral[700]
6178
6408
  },
6179
- [`&.${import_joy65.tabClasses.variantPlain}`]: {
6409
+ [`&.${import_joy67.tabClasses.variantPlain}`]: {
6180
6410
  backgroundColor: theme.palette.background.body
6181
6411
  }
6182
6412
  }));
6183
- var Tab = (0, import_react53.forwardRef)(function Tab2({ startDecorator, endDecorator, children, ...props }, ref) {
6184
- return /* @__PURE__ */ import_react53.default.createElement(StyledTab, { ...props, ref }, startDecorator, children, endDecorator);
6413
+ var Tab = (0, import_react56.forwardRef)(function Tab2({ startDecorator, endDecorator, children, ...props }, ref) {
6414
+ return /* @__PURE__ */ import_react56.default.createElement(StyledTab, { ...props, ref }, startDecorator, children, endDecorator);
6185
6415
  });
6186
6416
  Tab.displayName = "Tab";
6187
- var TabList = import_joy65.TabList;
6188
- var TabPanel = import_joy65.TabPanel;
6417
+ var TabList = import_joy67.TabList;
6418
+ var TabPanel = import_joy67.TabPanel;
6189
6419
 
6190
6420
  // src/components/ThemeProvider/ThemeProvider.tsx
6191
- var import_react54 = __toESM(require("react"));
6192
- var import_joy66 = require("@mui/joy");
6421
+ var import_react57 = __toESM(require("react"));
6422
+ var import_joy68 = require("@mui/joy");
6193
6423
  var colorScheme = {
6194
6424
  palette: {
6195
6425
  danger: {
@@ -6242,7 +6472,7 @@ var colorScheme = {
6242
6472
  }
6243
6473
  }
6244
6474
  };
6245
- var defaultTheme = (0, import_joy66.extendTheme)({
6475
+ var defaultTheme = (0, import_joy68.extendTheme)({
6246
6476
  cssVarPrefix: "ceed",
6247
6477
  spacing: 4,
6248
6478
  breakpoints: {
@@ -6269,7 +6499,7 @@ var defaultTheme = (0, import_joy66.extendTheme)({
6269
6499
  },
6270
6500
  styleOverrides: {
6271
6501
  root: {
6272
- [`.${import_joy66.inputClasses.root}`]: {
6502
+ [`.${import_joy68.inputClasses.root}`]: {
6273
6503
  // NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
6274
6504
  "font-family": "monospace"
6275
6505
  }
@@ -6282,7 +6512,7 @@ var defaultTheme = (0, import_joy66.extendTheme)({
6282
6512
  },
6283
6513
  styleOverrides: {
6284
6514
  root: {
6285
- [`.${import_joy66.inputClasses.root}`]: {
6515
+ [`.${import_joy68.inputClasses.root}`]: {
6286
6516
  // NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
6287
6517
  "font-family": "monospace"
6288
6518
  }
@@ -6295,7 +6525,7 @@ var defaultTheme = (0, import_joy66.extendTheme)({
6295
6525
  },
6296
6526
  styleOverrides: {
6297
6527
  root: {
6298
- [`.${import_joy66.inputClasses.root}`]: {
6528
+ [`.${import_joy68.inputClasses.root}`]: {
6299
6529
  // NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
6300
6530
  "font-family": "monospace"
6301
6531
  }
@@ -6308,7 +6538,7 @@ var defaultTheme = (0, import_joy66.extendTheme)({
6308
6538
  },
6309
6539
  styleOverrides: {
6310
6540
  root: {
6311
- [`.${import_joy66.inputClasses.root}`]: {
6541
+ [`.${import_joy68.inputClasses.root}`]: {
6312
6542
  // NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
6313
6543
  "font-family": "monospace"
6314
6544
  }
@@ -6321,7 +6551,7 @@ var defaultTheme = (0, import_joy66.extendTheme)({
6321
6551
  },
6322
6552
  styleOverrides: {
6323
6553
  root: {
6324
- [`.${import_joy66.inputClasses.root}`]: {
6554
+ [`.${import_joy68.inputClasses.root}`]: {
6325
6555
  // NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
6326
6556
  "font-family": "monospace"
6327
6557
  }
@@ -6334,7 +6564,7 @@ var defaultTheme = (0, import_joy66.extendTheme)({
6334
6564
  },
6335
6565
  styleOverrides: {
6336
6566
  root: {
6337
- [`.${import_joy66.inputClasses.root}`]: {
6567
+ [`.${import_joy68.inputClasses.root}`]: {
6338
6568
  // NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
6339
6569
  "font-family": "monospace"
6340
6570
  }
@@ -6412,7 +6642,7 @@ var defaultTheme = (0, import_joy66.extendTheme)({
6412
6642
  outline: `${theme.palette.primary[500]} solid 2px`,
6413
6643
  outlineOffset: "-2px"
6414
6644
  },
6415
- [`& .${import_joy66.checkboxClasses.root}`]: {
6645
+ [`& .${import_joy68.checkboxClasses.root}`]: {
6416
6646
  verticalAlign: "middle"
6417
6647
  }
6418
6648
  })
@@ -6467,6 +6697,6 @@ var defaultTheme = (0, import_joy66.extendTheme)({
6467
6697
  });
6468
6698
  function ThemeProvider(props) {
6469
6699
  const theme = props.theme || defaultTheme;
6470
- return /* @__PURE__ */ import_react54.default.createElement(import_react54.default.Fragment, null, /* @__PURE__ */ import_react54.default.createElement(import_joy66.CssVarsProvider, { theme }, /* @__PURE__ */ import_react54.default.createElement(import_joy66.CssBaseline, null), props.children));
6700
+ return /* @__PURE__ */ import_react57.default.createElement(import_react57.default.Fragment, null, /* @__PURE__ */ import_react57.default.createElement(import_joy68.CssVarsProvider, { theme }, /* @__PURE__ */ import_react57.default.createElement(import_joy68.CssBaseline, null), props.children));
6471
6701
  }
6472
6702
  ThemeProvider.displayName = "ThemeProvider";