@ceed/cds 1.24.1-next.3 → 1.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/dist/chunks/rehype-accent-FZRUD7VI.js +39 -0
  2. package/dist/components/CurrencyInput/CurrencyInput.d.ts +1 -1
  3. package/dist/components/CurrencyInput/hooks/use-currency-setting.d.ts +2 -2
  4. package/dist/components/DataTable/components.d.ts +2 -1
  5. package/dist/components/DataTable/styled.d.ts +3 -1
  6. package/dist/components/DataTable/types.d.ts +1 -0
  7. package/dist/components/RadioTileGroup/RadioTileGroup.d.ts +56 -0
  8. package/dist/components/RadioTileGroup/index.d.ts +3 -0
  9. package/dist/components/data-display/DataTable.md +77 -1
  10. package/dist/components/data-display/InfoSign.md +74 -91
  11. package/dist/components/data-display/Typography.md +411 -94
  12. package/dist/components/feedback/CircularProgress.md +257 -0
  13. package/dist/components/feedback/Dialog.md +76 -62
  14. package/dist/components/feedback/Modal.md +430 -138
  15. package/dist/components/feedback/Skeleton.md +280 -0
  16. package/dist/components/feedback/llms.txt +2 -0
  17. package/dist/components/index.d.ts +1 -0
  18. package/dist/components/inputs/Autocomplete.md +356 -107
  19. package/dist/components/inputs/ButtonGroup.md +115 -104
  20. package/dist/components/inputs/CurrencyInput.md +183 -5
  21. package/dist/components/inputs/DatePicker.md +108 -431
  22. package/dist/components/inputs/DateRangePicker.md +131 -492
  23. package/dist/components/inputs/FilterableCheckboxGroup.md +145 -19
  24. package/dist/components/inputs/FormControl.md +361 -0
  25. package/dist/components/inputs/IconButton.md +137 -88
  26. package/dist/components/inputs/Input.md +204 -73
  27. package/dist/components/inputs/MonthPicker.md +95 -422
  28. package/dist/components/inputs/MonthRangePicker.md +89 -466
  29. package/dist/components/inputs/PercentageInput.md +185 -16
  30. package/dist/components/inputs/RadioButton.md +163 -35
  31. package/dist/components/inputs/RadioList.md +241 -0
  32. package/dist/components/inputs/RadioTileGroup.md +507 -0
  33. package/dist/components/inputs/Select.md +222 -326
  34. package/dist/components/inputs/Slider.md +334 -0
  35. package/dist/components/inputs/Switch.md +143 -376
  36. package/dist/components/inputs/Textarea.md +213 -10
  37. package/dist/components/inputs/Uploader/Uploader.md +145 -66
  38. package/dist/components/inputs/llms.txt +4 -0
  39. package/dist/components/navigation/Breadcrumbs.md +57 -308
  40. package/dist/components/navigation/Drawer.md +180 -0
  41. package/dist/components/navigation/Dropdown.md +98 -215
  42. package/dist/components/navigation/IconMenuButton.md +40 -502
  43. package/dist/components/navigation/InsetDrawer.md +281 -650
  44. package/dist/components/navigation/Link.md +31 -348
  45. package/dist/components/navigation/Menu.md +92 -285
  46. package/dist/components/navigation/MenuButton.md +55 -448
  47. package/dist/components/navigation/Pagination.md +47 -338
  48. package/dist/components/navigation/Stepper.md +160 -28
  49. package/dist/components/navigation/Tabs.md +57 -316
  50. package/dist/components/surfaces/Accordions.md +49 -804
  51. package/dist/components/surfaces/Card.md +97 -157
  52. package/dist/components/surfaces/Divider.md +83 -234
  53. package/dist/components/surfaces/Sheet.md +153 -328
  54. package/dist/guides/ThemeProvider.md +89 -0
  55. package/dist/guides/llms.txt +9 -0
  56. package/dist/index.browser.js +224 -0
  57. package/dist/index.browser.js.map +7 -0
  58. package/dist/index.cjs +648 -390
  59. package/dist/index.d.ts +1 -1
  60. package/dist/index.js +563 -361
  61. package/dist/llms.txt +9 -0
  62. package/framer/index.js +1 -163
  63. package/package.json +22 -17
package/dist/index.js CHANGED
@@ -1,59 +1,3 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropNames = Object.getOwnPropertyNames;
3
- var __esm = (fn, res) => function __init() {
4
- return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
5
- };
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
-
11
- // src/libs/rehype-accent/index.ts
12
- var rehype_accent_exports = {};
13
- __export(rehype_accent_exports, {
14
- rehypeAccent: () => rehypeAccent
15
- });
16
- import { visit } from "unist-util-visit";
17
- function rehypeAccent(options) {
18
- const { accentColor } = options;
19
- return (tree) => {
20
- visit(tree, "text", (node, index, parent) => {
21
- const value = node.value;
22
- const regex = /\|\|.*?\|\|/g;
23
- let match;
24
- let lastIndex = 0;
25
- const newNodes = [];
26
- while ((match = regex.exec(value)) !== null) {
27
- if (match.index > lastIndex) {
28
- newNodes.push({
29
- type: "text",
30
- value: value.slice(lastIndex, match.index)
31
- });
32
- }
33
- const innerText = match[0].split("||")[1];
34
- newNodes.push({
35
- type: "element",
36
- tagName: "span",
37
- properties: { textColor: accentColor },
38
- children: [{ type: "text", value: innerText }]
39
- });
40
- lastIndex = match.index + match[0].length;
41
- }
42
- if (lastIndex < value.length) {
43
- newNodes.push({ type: "text", value: value.slice(lastIndex) });
44
- }
45
- if (newNodes.length) {
46
- parent.children.splice(index, 1, ...newNodes);
47
- }
48
- });
49
- };
50
- }
51
- var init_rehype_accent = __esm({
52
- "src/libs/rehype-accent/index.ts"() {
53
- "use strict";
54
- }
55
- });
56
-
57
1
  // src/index.ts
58
2
  import {
59
3
  useTheme as useTheme2,
@@ -71,7 +15,7 @@ import {
71
15
  menuButtonClasses,
72
16
  menuItemClasses,
73
17
  optionClasses,
74
- radioClasses,
18
+ radioClasses as radioClasses2,
75
19
  radioGroupClasses,
76
20
  selectClasses,
77
21
  switchClasses as switchClasses2,
@@ -83,7 +27,7 @@ import {
83
27
  formHelperTextClasses,
84
28
  gridClasses,
85
29
  stackClasses,
86
- sheetClasses,
30
+ sheetClasses as sheetClasses2,
87
31
  modalClasses,
88
32
  modalCloseClasses,
89
33
  modalDialogClasses,
@@ -152,7 +96,7 @@ import {
152
96
  stepperClasses,
153
97
  Skeleton as Skeleton2,
154
98
  skeletonClasses,
155
- styled as styled30
99
+ styled as styled31
156
100
  } from "@mui/joy";
157
101
 
158
102
  // src/components/Accordions/Accordions.tsx
@@ -759,11 +703,24 @@ Button.displayName = "Button";
759
703
  var Button_default = Button;
760
704
 
761
705
  // src/components/Calendar/Calendar.tsx
762
- import React11, { Fragment, forwardRef as forwardRef4, useMemo as useMemo4 } from "react";
706
+ import React12, { Fragment, forwardRef as forwardRef4, useCallback as useCallback5, useEffect as useEffect3, useMemo as useMemo4, useRef as useRef3, useState as useState4 } from "react";
763
707
  import { styled as styled5 } from "@mui/joy";
764
708
  import ChevronLeftIcon from "@mui/icons-material/ChevronLeft";
765
709
  import ChevronRightIcon from "@mui/icons-material/ChevronRight";
766
- import { AnimatePresence, motion as motion12 } from "framer-motion";
710
+ import { AnimatePresence, motion as motion13 } from "framer-motion";
711
+
712
+ // src/components/Tooltip/Tooltip.tsx
713
+ import React10 from "react";
714
+ import { Tooltip as JoyTooltip } from "@mui/joy";
715
+ import { motion as motion12 } from "framer-motion";
716
+ var MotionTooltip = motion12(JoyTooltip);
717
+ var Tooltip = (props) => {
718
+ return /* @__PURE__ */ React10.createElement(MotionTooltip, { ...props });
719
+ };
720
+ Tooltip.displayName = "Tooltip";
721
+
722
+ // src/components/Tooltip/index.ts
723
+ var Tooltip_default = Tooltip;
767
724
 
768
725
  // src/components/Calendar/utils/index.ts
769
726
  var getCalendarDates = (date) => {
@@ -1122,6 +1079,12 @@ var useCalendar = (ownerState) => {
1122
1079
  };
1123
1080
 
1124
1081
  // src/components/Calendar/Calendar.tsx
1082
+ var MONTH_VIEW_HINT_MESSAGE = "Click the month title to view all months.";
1083
+ var MONTH_NAV_CLICK_WINDOW_MS = 1200;
1084
+ var MONTH_NAV_CLICK_THRESHOLD = 3;
1085
+ var MONTH_VIEW_HINT_DURATION_MS = 5e3;
1086
+ var MONTH_VIEW_HINT_COOLDOWN_MS = 3e4;
1087
+ var lastMonthViewAssistHintShownAt = 0;
1125
1088
  var CalendarRoot = styled5("div", {
1126
1089
  name: "Calendar",
1127
1090
  slot: "root"
@@ -1148,7 +1111,7 @@ var CalendarViewContainer = styled5("div", {
1148
1111
  overflow: "hidden",
1149
1112
  minHeight: calendarType === "datePicker" ? "250px" : "unset"
1150
1113
  }));
1151
- var CalendarViewTable = styled5(motion12.table, {
1114
+ var CalendarViewTable = styled5(motion13.table, {
1152
1115
  name: "Calendar",
1153
1116
  slot: "viewTable"
1154
1117
  })(({ theme }) => ({
@@ -1328,7 +1291,7 @@ var PickerDays = (props) => {
1328
1291
  const { getPickerDayProps, getDayCellProps } = useCalendar(ownerState);
1329
1292
  const calendarDates = useMemo4(() => getCalendarDates(ownerState.viewMonth), [ownerState.viewMonth]);
1330
1293
  const weekdayNames = useMemo4(() => getWeekdayNames(ownerState.locale || "default"), [ownerState.locale]);
1331
- return /* @__PURE__ */ React11.createElement(CalendarViewContainer, { calendarType: "datePicker" }, /* @__PURE__ */ React11.createElement(AnimatePresence, { initial: false, custom: ownerState.direction }, /* @__PURE__ */ React11.createElement(
1294
+ return /* @__PURE__ */ React12.createElement(CalendarViewContainer, { calendarType: "datePicker" }, /* @__PURE__ */ React12.createElement(AnimatePresence, { initial: false, custom: ownerState.direction }, /* @__PURE__ */ React12.createElement(
1332
1295
  CalendarViewTable,
1333
1296
  {
1334
1297
  key: `${ownerState.viewMonth.toString()}_${ownerState.direction}`,
@@ -1357,10 +1320,10 @@ var PickerDays = (props) => {
1357
1320
  }
1358
1321
  }
1359
1322
  },
1360
- /* @__PURE__ */ React11.createElement(CalendarWeekHeaderContainer, null, /* @__PURE__ */ React11.createElement("tr", null, weekdayNames.map((name, i) => /* @__PURE__ */ React11.createElement(Fragment, { key: `${ownerState.viewMonth}_${name}_${i}` }, /* @__PURE__ */ React11.createElement("th", null, /* @__PURE__ */ React11.createElement(Typography_default, { level: "body-xs", textAlign: "center" }, name)), i < 6 && /* @__PURE__ */ React11.createElement("th", { style: { width: 4 }, "aria-hidden": "true", "aria-description": "cell-gap" }))))),
1361
- /* @__PURE__ */ React11.createElement(CalendarDayPickerContainer, null, calendarDates.map((weekDates, rowIndex) => /* @__PURE__ */ React11.createElement(Fragment, { key: `${ownerState.viewMonth}_${rowIndex}` }, /* @__PURE__ */ React11.createElement("tr", null, weekDates.map(
1362
- (date, i) => date ? /* @__PURE__ */ React11.createElement(Fragment, { key: `${ownerState.viewMonth}_${date}_${i}` }, /* @__PURE__ */ React11.createElement(CalendarDayCell, { ...getDayCellProps(date) }, /* @__PURE__ */ React11.createElement(CalendarDay, { size: "sm", variant: "plain", color: "neutral", ...getPickerDayProps(date) }, date)), i < 6 && /* @__PURE__ */ React11.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" })) : /* @__PURE__ */ React11.createElement(Fragment, { key: `${ownerState.viewMonth}_${i}` }, /* @__PURE__ */ React11.createElement("td", null), i < 6 && /* @__PURE__ */ React11.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" }))
1363
- )), rowIndex < calendarDates.length - 1 && /* @__PURE__ */ React11.createElement("tr", { "aria-hidden": "true", "aria-description": "row-gap" }, /* @__PURE__ */ React11.createElement("td", { colSpan: 13, style: { height: 4 } })))))
1323
+ /* @__PURE__ */ React12.createElement(CalendarWeekHeaderContainer, null, /* @__PURE__ */ React12.createElement("tr", null, weekdayNames.map((name, i) => /* @__PURE__ */ React12.createElement(Fragment, { key: `${ownerState.viewMonth}_${name}_${i}` }, /* @__PURE__ */ React12.createElement("th", null, /* @__PURE__ */ React12.createElement(Typography_default, { level: "body-xs", textAlign: "center" }, name)), i < 6 && /* @__PURE__ */ React12.createElement("th", { style: { width: 4 }, "aria-hidden": "true", "aria-description": "cell-gap" }))))),
1324
+ /* @__PURE__ */ React12.createElement(CalendarDayPickerContainer, null, calendarDates.map((weekDates, rowIndex) => /* @__PURE__ */ React12.createElement(Fragment, { key: `${ownerState.viewMonth}_${rowIndex}` }, /* @__PURE__ */ React12.createElement("tr", null, weekDates.map(
1325
+ (date, i) => date ? /* @__PURE__ */ React12.createElement(Fragment, { key: `${ownerState.viewMonth}_${date}_${i}` }, /* @__PURE__ */ React12.createElement(CalendarDayCell, { ...getDayCellProps(date) }, /* @__PURE__ */ React12.createElement(CalendarDay, { size: "sm", variant: "plain", color: "neutral", ...getPickerDayProps(date) }, date)), i < 6 && /* @__PURE__ */ React12.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" })) : /* @__PURE__ */ React12.createElement(Fragment, { key: `${ownerState.viewMonth}_${i}` }, /* @__PURE__ */ React12.createElement("td", null), i < 6 && /* @__PURE__ */ React12.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" }))
1326
+ )), rowIndex < calendarDates.length - 1 && /* @__PURE__ */ React12.createElement("tr", { "aria-hidden": "true", "aria-description": "row-gap" }, /* @__PURE__ */ React12.createElement("td", { colSpan: 13, style: { height: 4 } })))))
1364
1327
  )));
1365
1328
  };
1366
1329
  var PickerMonths = (props) => {
@@ -1377,7 +1340,7 @@ var PickerMonths = (props) => {
1377
1340
  [[]]
1378
1341
  );
1379
1342
  const isMonthPicker = !ownerState.views?.find((view) => view === "day");
1380
- return /* @__PURE__ */ React11.createElement(CalendarViewContainer, { calendarType: isMonthPicker ? "monthPicker" : "datePicker" }, /* @__PURE__ */ React11.createElement(AnimatePresence, { initial: false, custom: ownerState.direction }, /* @__PURE__ */ React11.createElement(
1343
+ return /* @__PURE__ */ React12.createElement(CalendarViewContainer, { calendarType: isMonthPicker ? "monthPicker" : "datePicker" }, /* @__PURE__ */ React12.createElement(AnimatePresence, { initial: false, custom: ownerState.direction }, /* @__PURE__ */ React12.createElement(
1381
1344
  CalendarViewTable,
1382
1345
  {
1383
1346
  key: `${ownerState.viewMonth.getFullYear()}_${ownerState.direction}`,
@@ -1406,7 +1369,7 @@ var PickerMonths = (props) => {
1406
1369
  }
1407
1370
  }
1408
1371
  },
1409
- /* @__PURE__ */ React11.createElement("tbody", null, chunkedMonths.map((months, i) => /* @__PURE__ */ React11.createElement(Fragment, { key: months.join("_") }, /* @__PURE__ */ React11.createElement("tr", null, months.map((monthIndex, j) => /* @__PURE__ */ React11.createElement(Fragment, { key: monthIndex }, /* @__PURE__ */ React11.createElement(CalendarMonthCell, { ...getMonthCellProps(monthIndex) }, /* @__PURE__ */ React11.createElement(CalendarMonth, { size: "sm", variant: "plain", color: "neutral", ...getPickerMonthProps(monthIndex) }, getMonthNameFromIndex(monthIndex, ownerState.locale))), j < 3 && /* @__PURE__ */ React11.createElement("td", { style: { width: 4 }, "aria-hidden": "true", "aria-description": "cell-gap" })))), i < chunkedMonths.length - 1 && /* @__PURE__ */ React11.createElement("tr", { "aria-hidden": "true", "aria-description": "row-gap" }, /* @__PURE__ */ React11.createElement("td", { colSpan: 7, style: { height: 4 } })))))
1372
+ /* @__PURE__ */ React12.createElement("tbody", null, chunkedMonths.map((months, i) => /* @__PURE__ */ React12.createElement(Fragment, { key: months.join("_") }, /* @__PURE__ */ React12.createElement("tr", null, months.map((monthIndex, j) => /* @__PURE__ */ React12.createElement(Fragment, { key: monthIndex }, /* @__PURE__ */ React12.createElement(CalendarMonthCell, { ...getMonthCellProps(monthIndex) }, /* @__PURE__ */ React12.createElement(CalendarMonth, { size: "sm", variant: "plain", color: "neutral", ...getPickerMonthProps(monthIndex) }, getMonthNameFromIndex(monthIndex, ownerState.locale))), j < 3 && /* @__PURE__ */ React12.createElement("td", { style: { width: 4 }, "aria-hidden": "true", "aria-description": "cell-gap" })))), i < chunkedMonths.length - 1 && /* @__PURE__ */ React12.createElement("tr", { "aria-hidden": "true", "aria-description": "row-gap" }, /* @__PURE__ */ React12.createElement("td", { colSpan: 7, style: { height: 4 } })))))
1410
1373
  )));
1411
1374
  };
1412
1375
  var Calendar = forwardRef4((inProps, ref) => {
@@ -1428,17 +1391,96 @@ var Calendar = forwardRef4((inProps, ref) => {
1428
1391
  ...others
1429
1392
  } = props;
1430
1393
  const { calendarTitle, onPrev, onNext } = useCalendar(ownerState);
1431
- return /* @__PURE__ */ React11.createElement(CalendarRoot, { ref, ...others }, /* @__PURE__ */ React11.createElement(CalendarHeader, null, /* @__PURE__ */ React11.createElement(IconButton_default, { size: "sm", onClick: onPrev, "aria-label": `Previous ${view === "day" ? "Month" : "Year"}` }, /* @__PURE__ */ React11.createElement(ChevronLeftIcon, null)), /* @__PURE__ */ React11.createElement(
1432
- CalendarSwitchViewButton,
1394
+ const [isMonthViewAssistHintOpen, setIsMonthViewAssistHintOpen] = useState4(false);
1395
+ const monthNavClickTimestampsRef = useRef3([]);
1396
+ const monthViewAssistHintShownInSessionRef = useRef3(false);
1397
+ const monthViewAssistHintTimeoutRef = useRef3(null);
1398
+ const hasEndDate = Boolean(value?.[1]);
1399
+ const isRangeHintEligible = Boolean(rangeSelection && !hasEndDate);
1400
+ const isHintEligible = Boolean(view === "day" && (!rangeSelection || isRangeHintEligible));
1401
+ const monthViewHintMessage = MONTH_VIEW_HINT_MESSAGE;
1402
+ useEffect3(() => {
1403
+ if (!isHintEligible) {
1404
+ monthNavClickTimestampsRef.current = [];
1405
+ setIsMonthViewAssistHintOpen(false);
1406
+ }
1407
+ }, [isHintEligible]);
1408
+ useEffect3(() => {
1409
+ return () => {
1410
+ if (monthViewAssistHintTimeoutRef.current) {
1411
+ clearTimeout(monthViewAssistHintTimeoutRef.current);
1412
+ }
1413
+ };
1414
+ }, []);
1415
+ const closeMonthViewAssistHint = useCallback5(() => {
1416
+ if (monthViewAssistHintTimeoutRef.current) {
1417
+ clearTimeout(monthViewAssistHintTimeoutRef.current);
1418
+ monthViewAssistHintTimeoutRef.current = null;
1419
+ }
1420
+ setIsMonthViewAssistHintOpen(false);
1421
+ }, []);
1422
+ const showMonthViewAssistHint = useCallback5(() => {
1423
+ const now = Date.now();
1424
+ if (monthViewAssistHintShownInSessionRef.current) return;
1425
+ if (now - lastMonthViewAssistHintShownAt < MONTH_VIEW_HINT_COOLDOWN_MS) return;
1426
+ monthViewAssistHintShownInSessionRef.current = true;
1427
+ lastMonthViewAssistHintShownAt = now;
1428
+ setIsMonthViewAssistHintOpen(true);
1429
+ if (monthViewAssistHintTimeoutRef.current) {
1430
+ clearTimeout(monthViewAssistHintTimeoutRef.current);
1431
+ }
1432
+ monthViewAssistHintTimeoutRef.current = setTimeout(() => {
1433
+ setIsMonthViewAssistHintOpen(false);
1434
+ monthViewAssistHintTimeoutRef.current = null;
1435
+ }, MONTH_VIEW_HINT_DURATION_MS);
1436
+ }, []);
1437
+ const trackFastMonthNavigation = useCallback5(() => {
1438
+ if (!isHintEligible) return;
1439
+ const now = Date.now();
1440
+ monthNavClickTimestampsRef.current = [
1441
+ ...monthNavClickTimestampsRef.current.filter((timestamp) => now - timestamp <= MONTH_NAV_CLICK_WINDOW_MS),
1442
+ now
1443
+ ];
1444
+ if (monthNavClickTimestampsRef.current.length >= MONTH_NAV_CLICK_THRESHOLD) {
1445
+ showMonthViewAssistHint();
1446
+ }
1447
+ }, [isHintEligible, showMonthViewAssistHint]);
1448
+ const handlePrevClick = useCallback5(() => {
1449
+ onPrev();
1450
+ trackFastMonthNavigation();
1451
+ }, [onPrev, trackFastMonthNavigation]);
1452
+ const handleNextClick = useCallback5(() => {
1453
+ onNext();
1454
+ trackFastMonthNavigation();
1455
+ }, [onNext, trackFastMonthNavigation]);
1456
+ const handleSwitchViewClick = useCallback5(() => {
1457
+ closeMonthViewAssistHint();
1458
+ onViewChange?.();
1459
+ }, [closeMonthViewAssistHint, onViewChange]);
1460
+ return /* @__PURE__ */ React12.createElement(CalendarRoot, { ref, ...others }, /* @__PURE__ */ React12.createElement(CalendarHeader, null, /* @__PURE__ */ React12.createElement(IconButton_default, { size: "sm", onClick: handlePrevClick, "aria-label": `Previous ${view === "day" ? "Month" : "Year"}` }, /* @__PURE__ */ React12.createElement(ChevronLeftIcon, null)), /* @__PURE__ */ React12.createElement(
1461
+ Tooltip_default,
1433
1462
  {
1434
- ownerState,
1435
- variant: "plain",
1436
- color: "neutral",
1437
- onClick: onViewChange,
1438
- "aria-label": "Switch Calendar View"
1463
+ title: monthViewHintMessage,
1464
+ arrow: true,
1465
+ open: isMonthViewAssistHintOpen,
1466
+ placement: "bottom",
1467
+ disableFocusListener: true,
1468
+ disableHoverListener: true,
1469
+ disableTouchListener: true,
1470
+ variant: "solid"
1439
1471
  },
1440
- calendarTitle
1441
- ), /* @__PURE__ */ React11.createElement(IconButton_default, { size: "sm", onClick: onNext, "aria-label": `Next ${view === "day" ? "Month" : "Year"}` }, /* @__PURE__ */ React11.createElement(ChevronRightIcon, null))), view === "day" && /* @__PURE__ */ React11.createElement(PickerDays, { ownerState }), view === "month" && /* @__PURE__ */ React11.createElement(PickerMonths, { ownerState }));
1472
+ /* @__PURE__ */ React12.createElement(
1473
+ CalendarSwitchViewButton,
1474
+ {
1475
+ ownerState,
1476
+ variant: "plain",
1477
+ color: "neutral",
1478
+ onClick: handleSwitchViewClick,
1479
+ "aria-label": "Switch Calendar View"
1480
+ },
1481
+ calendarTitle
1482
+ )
1483
+ ), /* @__PURE__ */ React12.createElement(IconButton_default, { size: "sm", onClick: handleNextClick, "aria-label": `Next ${view === "day" ? "Month" : "Year"}` }, /* @__PURE__ */ React12.createElement(ChevronRightIcon, null))), view === "day" && /* @__PURE__ */ React12.createElement(PickerDays, { ownerState }), view === "month" && /* @__PURE__ */ React12.createElement(PickerMonths, { ownerState }));
1442
1484
  });
1443
1485
  Calendar.displayName = "Calendar";
1444
1486
 
@@ -1453,30 +1495,30 @@ import {
1453
1495
  CardActions as JoyCardActions,
1454
1496
  CardOverflow as JoyCardOverflow
1455
1497
  } from "@mui/joy";
1456
- import { motion as motion13 } from "framer-motion";
1457
- var MotionCard = motion13(JoyCard);
1498
+ import { motion as motion14 } from "framer-motion";
1499
+ var MotionCard = motion14(JoyCard);
1458
1500
  var Card = MotionCard;
1459
1501
  Card.displayName = "Card";
1460
- var MotionCardContent = motion13(JoyCardContent);
1502
+ var MotionCardContent = motion14(JoyCardContent);
1461
1503
  var CardContent = MotionCardContent;
1462
1504
  CardContent.displayName = "CardContent";
1463
- var MotionCardCover = motion13(JoyCardCover);
1505
+ var MotionCardCover = motion14(JoyCardCover);
1464
1506
  var CardCover = MotionCardCover;
1465
1507
  CardCover.displayName = "CardCover";
1466
- var MotionCardActions = motion13(JoyCardActions);
1508
+ var MotionCardActions = motion14(JoyCardActions);
1467
1509
  var CardActions = MotionCardActions;
1468
1510
  CardActions.displayName = "CardActions";
1469
- var MotionCardOverflow = motion13(JoyCardOverflow);
1511
+ var MotionCardOverflow = motion14(JoyCardOverflow);
1470
1512
  var CardOverflow = MotionCardOverflow;
1471
1513
  CardOverflow.displayName = "CardOverflow";
1472
1514
 
1473
1515
  // src/components/Checkbox/Checkbox.tsx
1474
- import React12 from "react";
1516
+ import React13 from "react";
1475
1517
  import { Checkbox as JoyCheckbox } from "@mui/joy";
1476
- import { motion as motion14 } from "framer-motion";
1477
- var MotionCheckbox = motion14(JoyCheckbox);
1518
+ import { motion as motion15 } from "framer-motion";
1519
+ var MotionCheckbox = motion15(JoyCheckbox);
1478
1520
  var Checkbox = (props) => {
1479
- return /* @__PURE__ */ React12.createElement(MotionCheckbox, { ...props });
1521
+ return /* @__PURE__ */ React13.createElement(MotionCheckbox, { ...props });
1480
1522
  };
1481
1523
  Checkbox.displayName = "Checkbox";
1482
1524
 
@@ -1485,7 +1527,7 @@ var Checkbox_default = Checkbox;
1485
1527
 
1486
1528
  // src/components/Container/Container.tsx
1487
1529
  import { styled as styled6 } from "@mui/joy";
1488
- import React13, { forwardRef as forwardRef5 } from "react";
1530
+ import React14, { forwardRef as forwardRef5 } from "react";
1489
1531
  var ContainerRoot = styled6("div", {
1490
1532
  name: "Container",
1491
1533
  slot: "root",
@@ -1512,24 +1554,23 @@ var ContainerRoot = styled6("div", {
1512
1554
  } : null
1513
1555
  ]);
1514
1556
  var Container = forwardRef5(function Container2(props, ref) {
1515
- return /* @__PURE__ */ React13.createElement(ContainerRoot, { ref, ...props });
1557
+ return /* @__PURE__ */ React14.createElement(ContainerRoot, { ref, ...props });
1516
1558
  });
1517
1559
  Container.displayName = "Container";
1518
1560
 
1519
1561
  // src/components/CurrencyInput/CurrencyInput.tsx
1520
- import React15, { useCallback as useCallback6, useMemo as useMemo5, useState as useState5 } from "react";
1521
- import { IntlMessageFormat as IntlMessageFormat2 } from "intl-messageformat";
1562
+ import React16, { useCallback as useCallback7, useMemo as useMemo5, useState as useState6 } from "react";
1522
1563
  import { NumericFormat } from "react-number-format";
1523
1564
 
1524
1565
  // src/components/Input/Input.tsx
1525
- import React14, { useCallback as useCallback5, useState as useState4 } from "react";
1566
+ import React15, { useCallback as useCallback6, useState as useState5 } from "react";
1526
1567
  import { Input as JoyInput } from "@mui/joy";
1527
- import { motion as motion15 } from "framer-motion";
1568
+ import { motion as motion16 } from "framer-motion";
1528
1569
  import ClearIcon from "@mui/icons-material/Close";
1529
1570
  import VisibilityIcon from "@mui/icons-material/Visibility";
1530
1571
  import VisibilityOffIcon from "@mui/icons-material/VisibilityOff";
1531
- var MotionInput = motion15(JoyInput);
1532
- var Input = React14.forwardRef((props, ref) => {
1572
+ var MotionInput = motion16(JoyInput);
1573
+ var Input = React15.forwardRef((props, ref) => {
1533
1574
  const {
1534
1575
  label,
1535
1576
  helperText,
@@ -1552,11 +1593,11 @@ var Input = React14.forwardRef((props, ref) => {
1552
1593
  if (type === "password" && innerProps.endDecorator) {
1553
1594
  console.warn('Input: endDecorator is not supported when type="password"');
1554
1595
  }
1555
- const [passwordVisible, setPasswordVisible] = useState4(false);
1596
+ const [passwordVisible, setPasswordVisible] = useState5(false);
1556
1597
  const [value, setValue] = useControlledState(
1557
1598
  props.value,
1558
1599
  props.defaultValue,
1559
- useCallback5(
1600
+ useCallback6(
1560
1601
  (value2) => {
1561
1602
  onChange?.({
1562
1603
  /**
@@ -1582,7 +1623,7 @@ var Input = React14.forwardRef((props, ref) => {
1582
1623
  const actualType = type === "password" && passwordVisible ? "text" : type;
1583
1624
  const isPasswordType = type === "password";
1584
1625
  const showPasswordToggle = isPasswordType && !disableTogglePasswordButton;
1585
- const input = /* @__PURE__ */ React14.createElement(
1626
+ const input = /* @__PURE__ */ React15.createElement(
1586
1627
  MotionInput,
1587
1628
  {
1588
1629
  value,
@@ -1597,7 +1638,7 @@ var Input = React14.forwardRef((props, ref) => {
1597
1638
  ...innerProps.slotProps
1598
1639
  },
1599
1640
  ...innerProps,
1600
- endDecorator: isPasswordType ? showPasswordToggle ? /* @__PURE__ */ React14.createElement(Stack_default, { gap: 1, direction: "row" }, /* @__PURE__ */ React14.createElement(
1641
+ endDecorator: isPasswordType ? showPasswordToggle ? /* @__PURE__ */ React15.createElement(Stack_default, { gap: 1, direction: "row" }, /* @__PURE__ */ React15.createElement(
1601
1642
  IconButton_default,
1602
1643
  {
1603
1644
  onMouseDown: (e) => e.preventDefault(),
@@ -1605,19 +1646,19 @@ var Input = React14.forwardRef((props, ref) => {
1605
1646
  disabled,
1606
1647
  "aria-label": passwordVisible ? "Hide password" : "Show password"
1607
1648
  },
1608
- passwordVisible ? /* @__PURE__ */ React14.createElement(VisibilityOffIcon, null) : /* @__PURE__ */ React14.createElement(VisibilityIcon, null)
1609
- )) : null : enableClearable ? /* @__PURE__ */ React14.createElement(Stack_default, { gap: 1, direction: "row" }, innerProps.endDecorator, value && /* @__PURE__ */ React14.createElement(
1649
+ passwordVisible ? /* @__PURE__ */ React15.createElement(VisibilityOffIcon, null) : /* @__PURE__ */ React15.createElement(VisibilityIcon, null)
1650
+ )) : null : enableClearable ? /* @__PURE__ */ React15.createElement(Stack_default, { gap: 1, direction: "row" }, innerProps.endDecorator, value && /* @__PURE__ */ React15.createElement(
1610
1651
  IconButton_default,
1611
1652
  {
1612
1653
  onMouseDown: (e) => e.preventDefault(),
1613
1654
  onClick: handleClear,
1614
1655
  "aria-label": "Clear"
1615
1656
  },
1616
- /* @__PURE__ */ React14.createElement(ClearIcon, null)
1657
+ /* @__PURE__ */ React15.createElement(ClearIcon, null)
1617
1658
  )) : innerProps.endDecorator
1618
1659
  }
1619
1660
  );
1620
- return /* @__PURE__ */ React14.createElement(
1661
+ return /* @__PURE__ */ React15.createElement(
1621
1662
  FormControl_default,
1622
1663
  {
1623
1664
  required,
@@ -1628,9 +1669,9 @@ var Input = React14.forwardRef((props, ref) => {
1628
1669
  sx,
1629
1670
  className
1630
1671
  },
1631
- label && /* @__PURE__ */ React14.createElement(FormLabel_default, null, label),
1672
+ label && /* @__PURE__ */ React15.createElement(FormLabel_default, null, label),
1632
1673
  input,
1633
- helperText && /* @__PURE__ */ React14.createElement(FormHelperText_default, null, helperText)
1674
+ helperText && /* @__PURE__ */ React15.createElement(FormHelperText_default, null, helperText)
1634
1675
  );
1635
1676
  });
1636
1677
  Input.displayName = "Input";
@@ -1642,7 +1683,6 @@ var Input_default = Input;
1642
1683
  import { styled as styled7, useThemeProps as useThemeProps3 } from "@mui/joy";
1643
1684
 
1644
1685
  // src/components/CurrencyInput/hooks/use-currency-setting.ts
1645
- import IntlMessageFormat from "intl-messageformat";
1646
1686
  var CURRENCY_DECIMAL_MAP = {
1647
1687
  AED: 2,
1648
1688
  ALL: 2,
@@ -1787,9 +1827,10 @@ var CURRENCY_DECIMAL_MAP = {
1787
1827
  };
1788
1828
  var useCurrencySetting = (props) => {
1789
1829
  const { currency = "USD", placeholder } = props;
1790
- const [symbol, thousandSeparator, decimalSeparator, ...rest] = new IntlMessageFormat(
1791
- `{amount, number, ::currency/${currency} unit-width-narrow}`
1792
- ).format({ amount: 1e3 }).toString().replace(/\d/g, "").split("");
1830
+ const parts = new Intl.NumberFormat("en-US", { style: "currency", currency }).formatToParts(1000.01);
1831
+ const symbol = parts.find((p) => p.type === "currency")?.value ?? "$";
1832
+ const thousandSeparator = parts.find((p) => p.type === "group")?.value ?? ",";
1833
+ const decimalSeparator = parts.find((p) => p.type === "decimal")?.value;
1793
1834
  const decimalScale = CURRENCY_DECIMAL_MAP[currency];
1794
1835
  return {
1795
1836
  symbol: `${symbol} `,
@@ -1802,9 +1843,9 @@ var useCurrencySetting = (props) => {
1802
1843
  };
1803
1844
 
1804
1845
  // src/components/CurrencyInput/CurrencyInput.tsx
1805
- var TextMaskAdapter = React15.forwardRef(function TextMaskAdapter2(props, ref) {
1846
+ var TextMaskAdapter = React16.forwardRef(function TextMaskAdapter2(props, ref) {
1806
1847
  const { onChange, ...innerProps } = props;
1807
- return /* @__PURE__ */ React15.createElement(
1848
+ return /* @__PURE__ */ React16.createElement(
1808
1849
  NumericFormat,
1809
1850
  {
1810
1851
  ...innerProps,
@@ -1824,7 +1865,7 @@ var CurrencyInputRoot = styled7(Input_default, {
1824
1865
  slot: "root",
1825
1866
  overridesResolver: (props, styles) => styles.root
1826
1867
  })({});
1827
- var CurrencyInput = React15.forwardRef(function CurrencyInput2(inProps, ref) {
1868
+ var CurrencyInput = React16.forwardRef(function CurrencyInput2(inProps, ref) {
1828
1869
  const props = useThemeProps3({ props: inProps, name: "CurrencyInput" });
1829
1870
  const {
1830
1871
  currency = "USD",
@@ -1845,7 +1886,7 @@ var CurrencyInput = React15.forwardRef(function CurrencyInput2(inProps, ref) {
1845
1886
  const [_value, setValue] = useControlledState(
1846
1887
  props.value,
1847
1888
  props.defaultValue,
1848
- useCallback6((value2) => onChange?.({ target: { name, value: value2 } }), [onChange, name])
1889
+ useCallback7((value2) => onChange?.({ target: { name, value: value2 } }), [onChange, name])
1849
1890
  );
1850
1891
  const value = useMemo5(() => {
1851
1892
  if (_value && useMinorUnit) {
@@ -1859,14 +1900,14 @@ var CurrencyInput = React15.forwardRef(function CurrencyInput2(inProps, ref) {
1859
1900
  }
1860
1901
  return props.max;
1861
1902
  }, [props.max, useMinorUnit, decimalScale]);
1862
- const [isOverLimit, setIsOverLimit] = useState5(!!max && !!value && value > max);
1863
- const handleChange = useCallback6(
1903
+ const [isOverLimit, setIsOverLimit] = useState6(!!max && !!value && value > max);
1904
+ const handleChange = useCallback7(
1864
1905
  (event) => {
1865
1906
  if (event.target.value === "") {
1866
1907
  setValue(void 0);
1867
1908
  return;
1868
1909
  }
1869
- const amount = useMinorUnit ? Number(event.target.value?.replace(decimalSeparator, "")) : Number(event.target.value);
1910
+ const amount = useMinorUnit ? Number(decimalSeparator ? event.target.value?.replace(decimalSeparator, "") : event.target.value) : Number(event.target.value);
1870
1911
  if (!!max && Number(event.target.value) > max) {
1871
1912
  setIsOverLimit(true);
1872
1913
  } else {
@@ -1876,7 +1917,7 @@ var CurrencyInput = React15.forwardRef(function CurrencyInput2(inProps, ref) {
1876
1917
  },
1877
1918
  [decimalSeparator, max, useMinorUnit, setValue]
1878
1919
  );
1879
- return /* @__PURE__ */ React15.createElement(
1920
+ return /* @__PURE__ */ React16.createElement(
1880
1921
  CurrencyInputRoot,
1881
1922
  {
1882
1923
  ...innerProps,
@@ -1889,9 +1930,7 @@ var CurrencyInput = React15.forwardRef(function CurrencyInput2(inProps, ref) {
1889
1930
  required,
1890
1931
  color: error || isOverLimit ? "danger" : props.color,
1891
1932
  label,
1892
- helperText: isOverLimit ? new IntlMessageFormat2(`limit: {amount, number, ::currency/${currency} unit-width-narrow}`).format({
1893
- amount: max
1894
- }) : helperText,
1933
+ helperText: isOverLimit ? `limit: ${new Intl.NumberFormat("en-US", { style: "currency", currency }).format(max)}` : helperText,
1895
1934
  slotProps: {
1896
1935
  input: {
1897
1936
  component: TextMaskAdapter,
@@ -1916,9 +1955,9 @@ var CurrencyInput_default = CurrencyInput;
1916
1955
 
1917
1956
  // src/components/DataTable/DataTable.tsx
1918
1957
  import React25, {
1919
- useCallback as useCallback11,
1958
+ useCallback as useCallback12,
1920
1959
  useMemo as useMemo10,
1921
- useRef as useRef6,
1960
+ useRef as useRef7,
1922
1961
  useId,
1923
1962
  forwardRef as forwardRef7,
1924
1963
  useImperativeHandle as useImperativeHandle2,
@@ -2046,18 +2085,28 @@ function getTextAlign(props) {
2046
2085
  var numberFormatter = (value) => "Intl" in window ? new Intl.NumberFormat().format(value) : value;
2047
2086
 
2048
2087
  // src/components/DataTable/styled.tsx
2049
- import React16 from "react";
2088
+ import React17 from "react";
2050
2089
  import { styled as styled8, LinearProgress, buttonClasses, iconButtonClasses } from "@mui/joy";
2051
- import { motion as motion16 } from "framer-motion";
2090
+ import { motion as motion17 } from "framer-motion";
2052
2091
  import SortIcon from "@mui/icons-material/ArrowUpwardRounded";
2053
2092
  var EllipsisDiv = styled8("div", {
2054
2093
  name: "DataTable",
2055
- slot: "textEllipsis"
2056
- })({
2057
- overflow: "hidden",
2058
- textOverflow: "ellipsis",
2059
- whiteSpace: "nowrap"
2060
- });
2094
+ slot: "textEllipsis",
2095
+ shouldForwardProp: (prop) => prop !== "lineClamp"
2096
+ })(
2097
+ ({ lineClamp }) => lineClamp && lineClamp > 1 ? {
2098
+ overflow: "hidden",
2099
+ display: "-webkit-box !important",
2100
+ WebkitBoxOrient: "vertical",
2101
+ WebkitLineClamp: lineClamp,
2102
+ whiteSpace: "normal",
2103
+ overflowWrap: "anywhere"
2104
+ } : {
2105
+ overflow: "hidden",
2106
+ textOverflow: "ellipsis",
2107
+ whiteSpace: "nowrap"
2108
+ }
2109
+ );
2061
2110
  var OverlayWrapper = styled8("tr", {
2062
2111
  name: "DataTable",
2063
2112
  slot: "overlayWrapper"
@@ -2122,7 +2171,7 @@ var Asterisk = styled8("span", {
2122
2171
  color: "var(--ceed-palette-danger-500)",
2123
2172
  marginLeft: theme.spacing(0.5)
2124
2173
  }));
2125
- var StyledTh = styled8(motion16.th)(({ theme }) => ({
2174
+ var StyledTh = styled8(motion17.th)(({ theme }) => ({
2126
2175
  boxShadow: "1px 0 var(--TableCell-borderColor)"
2127
2176
  }));
2128
2177
  var StyledTd = styled8("td")(({ theme }) => ({
@@ -2141,9 +2190,9 @@ var StyledTd = styled8("td")(({ theme }) => ({
2141
2190
  }
2142
2191
  }
2143
2192
  }));
2144
- var MotionSortIcon = motion16(SortIcon);
2145
- var DefaultLoadingOverlay = () => /* @__PURE__ */ React16.createElement(LinearProgress, { value: 8, variant: "plain" });
2146
- var Resizer = (ref, targetRef = ref) => /* @__PURE__ */ React16.createElement(
2193
+ var MotionSortIcon = motion17(SortIcon);
2194
+ var DefaultLoadingOverlay = () => /* @__PURE__ */ React17.createElement(LinearProgress, { value: 8, variant: "plain" });
2195
+ var Resizer = (ref, targetRef = ref) => /* @__PURE__ */ React17.createElement(
2147
2196
  Box_default,
2148
2197
  {
2149
2198
  sx: {
@@ -2176,12 +2225,12 @@ var Resizer = (ref, targetRef = ref) => /* @__PURE__ */ React16.createElement(
2176
2225
 
2177
2226
  // src/components/DataTable/components.tsx
2178
2227
  import React22, {
2179
- useRef as useRef4,
2180
- useState as useState7,
2228
+ useRef as useRef5,
2229
+ useState as useState8,
2181
2230
  useLayoutEffect,
2182
2231
  useMemo as useMemo8,
2183
- useCallback as useCallback8,
2184
- useEffect as useEffect4,
2232
+ useCallback as useCallback9,
2233
+ useEffect as useEffect5,
2185
2234
  memo,
2186
2235
  createElement
2187
2236
  } from "react";
@@ -2189,7 +2238,7 @@ import { styled as styled12, useTheme } from "@mui/joy";
2189
2238
  import { AnimatePresence as AnimatePresence2 } from "framer-motion";
2190
2239
 
2191
2240
  // src/components/DatePicker/DatePicker.tsx
2192
- import React17, { forwardRef as forwardRef6, useCallback as useCallback7, useEffect as useEffect3, useImperativeHandle, useRef as useRef3, useState as useState6 } from "react";
2241
+ import React18, { forwardRef as forwardRef6, useCallback as useCallback8, useEffect as useEffect4, useImperativeHandle, useRef as useRef4, useState as useState7 } from "react";
2193
2242
  import { IMaskInput, IMask } from "react-imask";
2194
2243
  import CalendarTodayIcon from "@mui/icons-material/CalendarToday";
2195
2244
  import { styled as styled10, useThemeProps as useThemeProps4 } from "@mui/joy";
@@ -2204,8 +2253,8 @@ var Sheet_default = Sheet;
2204
2253
 
2205
2254
  // src/components/DialogActions/DialogActions.tsx
2206
2255
  import { DialogActions as JoyDialogActions, styled as styled9 } from "@mui/joy";
2207
- import { motion as motion17 } from "framer-motion";
2208
- var MotionDialogActions = motion17(JoyDialogActions);
2256
+ import { motion as motion18 } from "framer-motion";
2257
+ var MotionDialogActions = motion18(JoyDialogActions);
2209
2258
  var StyledDialogActions = styled9(MotionDialogActions)(({ theme }) => ({
2210
2259
  padding: theme.spacing(2),
2211
2260
  gap: theme.spacing(2),
@@ -2301,9 +2350,9 @@ function parseDate(dateString, format) {
2301
2350
  var formatToPattern = (format) => {
2302
2351
  return format.replace(/YYYY/g, "Y").replace(/MM/g, "M").replace(/DD/g, "D").replace(/[^YMD\s]/g, (match) => `${match}\``);
2303
2352
  };
2304
- var TextMaskAdapter3 = React17.forwardRef(function TextMaskAdapter4(props, ref) {
2353
+ var TextMaskAdapter3 = React18.forwardRef(function TextMaskAdapter4(props, ref) {
2305
2354
  const { onChange, format, ...other } = props;
2306
- return /* @__PURE__ */ React17.createElement(
2355
+ return /* @__PURE__ */ React18.createElement(
2307
2356
  IMaskInput,
2308
2357
  {
2309
2358
  ...other,
@@ -2363,24 +2412,24 @@ var DatePicker = forwardRef6((inProps, ref) => {
2363
2412
  shouldDisableDate,
2364
2413
  ...innerProps
2365
2414
  } = props;
2366
- const innerRef = useRef3(null);
2367
- const buttonRef = useRef3(null);
2415
+ const innerRef = useRef4(null);
2416
+ const buttonRef = useRef4(null);
2368
2417
  const [value, setValue] = useControlledState(
2369
2418
  props.value,
2370
2419
  props.defaultValue || "",
2371
- useCallback7((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
2420
+ useCallback8((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
2372
2421
  );
2373
- const [displayValue, setDisplayValue] = useState6(
2422
+ const [displayValue, setDisplayValue] = useState7(
2374
2423
  () => value ? formatValueString(parseDate(value, format), displayFormat) : ""
2375
2424
  );
2376
- const [anchorEl, setAnchorEl] = useState6(null);
2425
+ const [anchorEl, setAnchorEl] = useState7(null);
2377
2426
  const open = Boolean(anchorEl);
2378
- useEffect3(() => {
2427
+ useEffect4(() => {
2379
2428
  if (!anchorEl) {
2380
2429
  innerRef.current?.blur();
2381
2430
  }
2382
2431
  }, [anchorEl, innerRef]);
2383
- useEffect3(() => {
2432
+ useEffect4(() => {
2384
2433
  if (value === "") {
2385
2434
  setDisplayValue("");
2386
2435
  return;
@@ -2391,7 +2440,7 @@ var DatePicker = forwardRef6((inProps, ref) => {
2391
2440
  }
2392
2441
  }, [displayFormat, displayValue, format, value]);
2393
2442
  useImperativeHandle(ref, () => innerRef.current, [innerRef]);
2394
- const handleChange = useCallback7(
2443
+ const handleChange = useCallback8(
2395
2444
  (event) => {
2396
2445
  const value2 = event.target.value;
2397
2446
  setDisplayValue(value2 ? formatValueString(parseDate(value2, format), displayFormat) : value2);
@@ -2399,7 +2448,7 @@ var DatePicker = forwardRef6((inProps, ref) => {
2399
2448
  },
2400
2449
  [displayFormat, format, setValue]
2401
2450
  );
2402
- const handleDisplayInputChange = useCallback7(
2451
+ const handleDisplayInputChange = useCallback8(
2403
2452
  (event) => {
2404
2453
  if (event.target.value === "") {
2405
2454
  handleChange({
@@ -2424,7 +2473,7 @@ var DatePicker = forwardRef6((inProps, ref) => {
2424
2473
  },
2425
2474
  [displayFormat, format, handleChange, props.name]
2426
2475
  );
2427
- const handleCalendarToggle = useCallback7(
2476
+ const handleCalendarToggle = useCallback8(
2428
2477
  (event) => {
2429
2478
  setAnchorEl(anchorEl ? null : event.currentTarget);
2430
2479
  setTimeout(() => {
@@ -2433,7 +2482,7 @@ var DatePicker = forwardRef6((inProps, ref) => {
2433
2482
  },
2434
2483
  [anchorEl, setAnchorEl, innerRef]
2435
2484
  );
2436
- const handleInputMouseDown = useCallback7(
2485
+ const handleInputMouseDown = useCallback8(
2437
2486
  (event) => {
2438
2487
  if (inputReadOnly) {
2439
2488
  event.preventDefault();
@@ -2442,7 +2491,7 @@ var DatePicker = forwardRef6((inProps, ref) => {
2442
2491
  },
2443
2492
  [inputReadOnly, buttonRef]
2444
2493
  );
2445
- return /* @__PURE__ */ React17.createElement(DatePickerRoot, null, /* @__PURE__ */ React17.createElement(FocusTrap, { open: true }, /* @__PURE__ */ React17.createElement(React17.Fragment, null, /* @__PURE__ */ React17.createElement(
2494
+ return /* @__PURE__ */ React18.createElement(DatePickerRoot, null, /* @__PURE__ */ React18.createElement(FocusTrap, { open: true }, /* @__PURE__ */ React18.createElement(React18.Fragment, null, /* @__PURE__ */ React18.createElement(
2446
2495
  Input_default,
2447
2496
  {
2448
2497
  ...innerProps,
@@ -2470,7 +2519,7 @@ var DatePicker = forwardRef6((inProps, ref) => {
2470
2519
  },
2471
2520
  className,
2472
2521
  sx,
2473
- endDecorator: /* @__PURE__ */ React17.createElement(
2522
+ endDecorator: /* @__PURE__ */ React18.createElement(
2474
2523
  CalendarButton,
2475
2524
  {
2476
2525
  ref: buttonRef,
@@ -2482,13 +2531,13 @@ var DatePicker = forwardRef6((inProps, ref) => {
2482
2531
  "aria-expanded": open,
2483
2532
  disabled
2484
2533
  },
2485
- /* @__PURE__ */ React17.createElement(CalendarTodayIcon, null)
2534
+ /* @__PURE__ */ React18.createElement(CalendarTodayIcon, null)
2486
2535
  ),
2487
2536
  label,
2488
2537
  helperText,
2489
2538
  readOnly: readOnly || inputReadOnly
2490
2539
  }
2491
- ), open && /* @__PURE__ */ React17.createElement(ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ React17.createElement(
2540
+ ), open && /* @__PURE__ */ React18.createElement(ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ React18.createElement(
2492
2541
  StyledPopper,
2493
2542
  {
2494
2543
  id: "date-picker-popper",
@@ -2507,7 +2556,7 @@ var DatePicker = forwardRef6((inProps, ref) => {
2507
2556
  "aria-label": "Calendar Tooltip",
2508
2557
  "aria-expanded": open
2509
2558
  },
2510
- /* @__PURE__ */ React17.createElement(CalendarSheet, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ React17.createElement(
2559
+ /* @__PURE__ */ React18.createElement(CalendarSheet, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ React18.createElement(
2511
2560
  Calendar_default,
2512
2561
  {
2513
2562
  value: value && !Number.isNaN(parseDate(value, format).getTime()) ? [parseDate(value, format), void 0] : void 0,
@@ -2526,14 +2575,14 @@ var DatePicker = forwardRef6((inProps, ref) => {
2526
2575
  disablePast,
2527
2576
  shouldDisableDate: shouldDisableDate ? (date) => shouldDisableDate(formatValueString(date, format)) : void 0
2528
2577
  }
2529
- ), !hideClearButton && /* @__PURE__ */ React17.createElement(
2578
+ ), !hideClearButton && /* @__PURE__ */ React18.createElement(
2530
2579
  DialogActions_default,
2531
2580
  {
2532
2581
  sx: {
2533
2582
  p: 1
2534
2583
  }
2535
2584
  },
2536
- /* @__PURE__ */ React17.createElement(
2585
+ /* @__PURE__ */ React18.createElement(
2537
2586
  Button_default,
2538
2587
  {
2539
2588
  size,
@@ -2559,10 +2608,10 @@ var DatePicker = forwardRef6((inProps, ref) => {
2559
2608
  var DatePicker_default = DatePicker;
2560
2609
 
2561
2610
  // src/components/Textarea/Textarea.tsx
2562
- import React18 from "react";
2611
+ import React19 from "react";
2563
2612
  import { Textarea as JoyTextarea } from "@mui/joy";
2564
- import { motion as motion18 } from "framer-motion";
2565
- var MotionTextarea = motion18(JoyTextarea);
2613
+ import { motion as motion19 } from "framer-motion";
2614
+ var MotionTextarea = motion19(JoyTextarea);
2566
2615
  var Textarea = (props) => {
2567
2616
  const {
2568
2617
  label,
@@ -2579,7 +2628,7 @@ var Textarea = (props) => {
2579
2628
  className,
2580
2629
  ...innerProps
2581
2630
  } = props;
2582
- const textarea = /* @__PURE__ */ React18.createElement(
2631
+ const textarea = /* @__PURE__ */ React19.createElement(
2583
2632
  MotionTextarea,
2584
2633
  {
2585
2634
  required,
@@ -2591,7 +2640,7 @@ var Textarea = (props) => {
2591
2640
  ...innerProps
2592
2641
  }
2593
2642
  );
2594
- return /* @__PURE__ */ React18.createElement(
2643
+ return /* @__PURE__ */ React19.createElement(
2595
2644
  FormControl_default,
2596
2645
  {
2597
2646
  required,
@@ -2602,9 +2651,9 @@ var Textarea = (props) => {
2602
2651
  sx,
2603
2652
  className
2604
2653
  },
2605
- label && /* @__PURE__ */ React18.createElement(FormLabel_default, null, label),
2654
+ label && /* @__PURE__ */ React19.createElement(FormLabel_default, null, label),
2606
2655
  textarea,
2607
- helperText && /* @__PURE__ */ React18.createElement(FormHelperText_default, null, helperText)
2656
+ helperText && /* @__PURE__ */ React19.createElement(FormHelperText_default, null, helperText)
2608
2657
  );
2609
2658
  };
2610
2659
  Textarea.displayName = "Textarea";
@@ -2613,10 +2662,10 @@ Textarea.displayName = "Textarea";
2613
2662
  var Textarea_default = Textarea;
2614
2663
 
2615
2664
  // src/components/Select/Select.tsx
2616
- import React19, { useMemo as useMemo7 } from "react";
2665
+ import React20, { useMemo as useMemo7 } from "react";
2617
2666
  import { Select as JoySelect, Option as JoyOption, ListItemContent as ListItemContent2, Typography as Typography3 } from "@mui/joy";
2618
- import { motion as motion19 } from "framer-motion";
2619
- var MotionOption = motion19(JoyOption);
2667
+ import { motion as motion20 } from "framer-motion";
2668
+ var MotionOption = motion20(JoyOption);
2620
2669
  var Option = MotionOption;
2621
2670
  var secondaryTextLevelMap2 = {
2622
2671
  sm: "body-xs",
@@ -2671,7 +2720,7 @@ function Select(props) {
2671
2720
  });
2672
2721
  return map;
2673
2722
  }, [options]);
2674
- const select = /* @__PURE__ */ React19.createElement(
2723
+ const select = /* @__PURE__ */ React20.createElement(
2675
2724
  JoySelect,
2676
2725
  {
2677
2726
  ...innerProps,
@@ -2688,9 +2737,9 @@ function Select(props) {
2688
2737
  return optionMap.get(selected.value)?.label;
2689
2738
  }
2690
2739
  },
2691
- options.map((option) => /* @__PURE__ */ React19.createElement(Option, { key: option.value, value: option.value, disabled: option.disabled }, option.secondaryText ? /* @__PURE__ */ React19.createElement(ListItemContent2, { sx: { gap: 0.5 } }, /* @__PURE__ */ React19.createElement(Typography3, { level: "inherit" }, option.label), /* @__PURE__ */ React19.createElement(Typography3, { level: secondaryTextLevelMap2[size ?? "md"], textColor: "text.tertiary" }, option.secondaryText)) : option.label))
2740
+ options.map((option) => /* @__PURE__ */ React20.createElement(Option, { key: option.value, value: option.value, disabled: option.disabled }, option.secondaryText ? /* @__PURE__ */ React20.createElement(ListItemContent2, { sx: { gap: 0.5 } }, /* @__PURE__ */ React20.createElement(Typography3, { level: "inherit" }, option.label), /* @__PURE__ */ React20.createElement(Typography3, { level: secondaryTextLevelMap2[size ?? "md"], textColor: "text.tertiary" }, option.secondaryText)) : option.label))
2692
2741
  );
2693
- return /* @__PURE__ */ React19.createElement(
2742
+ return /* @__PURE__ */ React20.createElement(
2694
2743
  FormControl_default,
2695
2744
  {
2696
2745
  required,
@@ -2701,9 +2750,9 @@ function Select(props) {
2701
2750
  sx,
2702
2751
  className
2703
2752
  },
2704
- label && /* @__PURE__ */ React19.createElement(FormLabel_default, null, label),
2753
+ label && /* @__PURE__ */ React20.createElement(FormLabel_default, null, label),
2705
2754
  select,
2706
- helperText && /* @__PURE__ */ React19.createElement(FormHelperText_default, null, helperText)
2755
+ helperText && /* @__PURE__ */ React20.createElement(FormHelperText_default, null, helperText)
2707
2756
  );
2708
2757
  }
2709
2758
  Select.displayName = "Select";
@@ -2714,19 +2763,6 @@ var Select_default = Select;
2714
2763
  // src/components/DataTable/components.tsx
2715
2764
  import { Link } from "@mui/joy";
2716
2765
 
2717
- // src/components/Tooltip/Tooltip.tsx
2718
- import React20 from "react";
2719
- import { Tooltip as JoyTooltip } from "@mui/joy";
2720
- import { motion as motion20 } from "framer-motion";
2721
- var MotionTooltip = motion20(JoyTooltip);
2722
- var Tooltip = (props) => {
2723
- return /* @__PURE__ */ React20.createElement(MotionTooltip, { ...props });
2724
- };
2725
- Tooltip.displayName = "Tooltip";
2726
-
2727
- // src/components/Tooltip/index.ts
2728
- var Tooltip_default = Tooltip;
2729
-
2730
2766
  // src/components/InfoSign/InfoSign.tsx
2731
2767
  import React21 from "react";
2732
2768
  import { styled as styled11, tooltipClasses } from "@mui/joy";
@@ -2761,25 +2797,26 @@ function InfoSign(props) {
2761
2797
  var InfoSign_default = InfoSign;
2762
2798
 
2763
2799
  // src/components/DataTable/components.tsx
2764
- var TextEllipsis = ({ children }) => {
2765
- const textRef = useRef4(null);
2766
- const [showTooltip, setShowTooltip] = useState7(false);
2800
+ var TextEllipsis = ({ children, lineClamp }) => {
2801
+ const textRef = useRef5(null);
2802
+ const [showTooltip, setShowTooltip] = useState8(false);
2767
2803
  useLayoutEffect(() => {
2768
2804
  const element = textRef.current;
2769
- if (element) {
2770
- const isTextTruncated = element.scrollWidth > element.clientWidth;
2771
- setShowTooltip(isTextTruncated);
2772
- }
2773
- }, [children]);
2774
- const content = /* @__PURE__ */ React22.createElement(EllipsisDiv, { ref: textRef }, children);
2775
- if (showTooltip) {
2776
- return /* @__PURE__ */ React22.createElement(Tooltip_default, { title: children, placement: "top", onClick: (e) => e.stopPropagation() }, content);
2777
- }
2778
- return content;
2805
+ if (!element) return;
2806
+ const checkTruncation = () => {
2807
+ const isTruncated = lineClamp && lineClamp > 1 ? element.scrollHeight > element.clientHeight + 1 : element.scrollWidth > element.clientWidth;
2808
+ setShowTooltip(isTruncated);
2809
+ };
2810
+ checkTruncation();
2811
+ const ro = new ResizeObserver(checkTruncation);
2812
+ ro.observe(element);
2813
+ return () => ro.disconnect();
2814
+ }, [children, lineClamp]);
2815
+ return /* @__PURE__ */ React22.createElement(Tooltip_default, { title: showTooltip ? children : "", placement: "top", onClick: (e) => e.stopPropagation() }, /* @__PURE__ */ React22.createElement(EllipsisDiv, { ref: textRef, lineClamp }, children));
2779
2816
  };
2780
2817
  var CellTextEllipsis = ({ children }) => {
2781
- const textRef = useRef4(null);
2782
- const [showTooltip, setShowTooltip] = useState7(false);
2818
+ const textRef = useRef5(null);
2819
+ const [showTooltip, setShowTooltip] = useState8(false);
2783
2820
  useLayoutEffect(() => {
2784
2821
  const element = textRef.current;
2785
2822
  if (element) {
@@ -2826,12 +2863,13 @@ var HeadCell = (props) => {
2826
2863
  pinnedEndPosition,
2827
2864
  headerRef,
2828
2865
  tableColRef,
2829
- headerClassName
2866
+ headerClassName,
2867
+ headerLineClamp
2830
2868
  } = props;
2831
2869
  const theme = useTheme();
2832
2870
  const ref = headerRef;
2833
2871
  const colRef = tableColRef;
2834
- const [isHovered, setIsHovered] = useState7(false);
2872
+ const [isHovered, setIsHovered] = useState8(false);
2835
2873
  const sortable = type === "actions" ? false : _sortable;
2836
2874
  const headId = useMemo8(
2837
2875
  () => `${tableId}_header_${headerName ?? field}`.trim(),
@@ -2910,7 +2948,7 @@ var HeadCell = (props) => {
2910
2948
  ref,
2911
2949
  key: field,
2912
2950
  style,
2913
- onClick: useCallback8(
2951
+ onClick: useCallback9(
2914
2952
  (e) => sortable && onSortChange?.({ field, currentSort: sort, multiple: e.shiftKey }),
2915
2953
  [field, onSortChange, sort, sortable]
2916
2954
  ),
@@ -2920,7 +2958,7 @@ var HeadCell = (props) => {
2920
2958
  initial: "initial",
2921
2959
  className: computedHeaderClassName
2922
2960
  },
2923
- /* @__PURE__ */ React22.createElement(Stack_default, { gap: 1, direction: "row", justifyContent: textAlign, alignItems: "center" }, textAlign === "end" && sortIcon, textAlign === "end" && infoSign, /* @__PURE__ */ React22.createElement(TextEllipsis, null, headerName ?? field, editMode && required && /* @__PURE__ */ React22.createElement(Asterisk, null, "*")), textAlign === "start" && infoSign, textAlign === "start" && sortIcon),
2961
+ /* @__PURE__ */ React22.createElement(Stack_default, { gap: 1, direction: "row", justifyContent: textAlign, alignItems: "center", sx: { minWidth: 0 } }, textAlign === "end" && sortIcon, textAlign === "end" && infoSign, /* @__PURE__ */ React22.createElement(TextEllipsis, { lineClamp: headerLineClamp }, headerName ?? field, editMode && required && /* @__PURE__ */ React22.createElement(Asterisk, null, "*")), textAlign === "start" && infoSign, textAlign === "start" && sortIcon),
2924
2962
  resizer
2925
2963
  );
2926
2964
  };
@@ -2945,8 +2983,8 @@ var BodyCell = (props) => {
2945
2983
  onCellEditStop
2946
2984
  } = props;
2947
2985
  const theme = useTheme();
2948
- const [value, setValue] = useState7(row[field]);
2949
- const cellRef = useRef4(null);
2986
+ const [value, setValue] = useState8(row[field]);
2987
+ const cellRef = useRef5(null);
2950
2988
  const params = useMemo8(
2951
2989
  () => ({
2952
2990
  row,
@@ -3091,7 +3129,7 @@ var BodyCell = (props) => {
3091
3129
  () => (typeof cellClassName === "function" ? cellClassName(params) : cellClassName) || "",
3092
3130
  [cellClassName, params]
3093
3131
  );
3094
- useEffect4(() => {
3132
+ useEffect5(() => {
3095
3133
  setValue(row[field]);
3096
3134
  }, [row, field]);
3097
3135
  return /* @__PURE__ */ React22.createElement(
@@ -3161,10 +3199,10 @@ var VirtualizedTableRow = memo(StyledTableRow2, (prevProps, nextProps) => {
3161
3199
  });
3162
3200
 
3163
3201
  // src/components/DataTable/hooks.ts
3164
- import { useState as useState8, useLayoutEffect as useLayoutEffect2, useRef as useRef5, useMemo as useMemo9, useCallback as useCallback9, useEffect as useEffect5, createRef } from "react";
3202
+ import { useState as useState9, useLayoutEffect as useLayoutEffect2, useRef as useRef6, useMemo as useMemo9, useCallback as useCallback10, useEffect as useEffect6, createRef } from "react";
3165
3203
  function useColumnWidths(columnsByField) {
3166
- const [widths, setWidths] = useState8({});
3167
- const roRef = useRef5();
3204
+ const [widths, setWidths] = useState9({});
3205
+ const roRef = useRef6();
3168
3206
  useLayoutEffect2(() => {
3169
3207
  if (roRef.current) roRef.current.disconnect();
3170
3208
  roRef.current = new ResizeObserver((entries) => {
@@ -3219,14 +3257,14 @@ function useDataTableRenderer({
3219
3257
  "You cannot use both `pinnedColumns` and `columnGroupingModel` at the same time. Please choose one of them."
3220
3258
  );
3221
3259
  }
3222
- const onSelectionModelChangeRef = useRef5(onSelectionModelChange);
3260
+ const onSelectionModelChangeRef = useRef6(onSelectionModelChange);
3223
3261
  onSelectionModelChangeRef.current = onSelectionModelChange;
3224
- const [focusedRowId, setFocusedRowId] = useState8(null);
3225
- const [selectionAnchor, setSelectionAnchor] = useState8(null);
3262
+ const [focusedRowId, setFocusedRowId] = useState9(null);
3263
+ const [selectionAnchor, setSelectionAnchor] = useState9(null);
3226
3264
  const [sortModel, setSortModel] = useControlledState(
3227
3265
  controlledSortModel,
3228
3266
  initialState?.sorting?.sortModel ?? [],
3229
- useCallback9((sortModel2) => onSortModelChange?.(sortModel2), [onSortModelChange])
3267
+ useCallback10((sortModel2) => onSortModelChange?.(sortModel2), [onSortModelChange])
3230
3268
  );
3231
3269
  const reorderedColumns = useMemo9(() => {
3232
3270
  if (!columnGroupingModel) return columnsProp;
@@ -3246,7 +3284,7 @@ function useDataTableRenderer({
3246
3284
  ),
3247
3285
  [reorderedColumns]
3248
3286
  );
3249
- const sortComparator = useCallback9(
3287
+ const sortComparator = useCallback10(
3250
3288
  (rowA, rowB) => {
3251
3289
  for (const sort of sortModel) {
3252
3290
  const { field, sort: direction } = sort;
@@ -3282,9 +3320,9 @@ function useDataTableRenderer({
3282
3320
  () => Array.from(new Set(_sortOrder || ["asc", "desc", null])),
3283
3321
  [_sortOrder]
3284
3322
  );
3285
- const [page, setPage] = useState8(paginationModel?.page || 1);
3323
+ const [page, setPage] = useState9(paginationModel?.page || 1);
3286
3324
  const pageSize = paginationModel?.pageSize || 20;
3287
- const getId = useCallback9(
3325
+ const getId = useCallback10(
3288
3326
  (row, index) => _getId?.(row) ?? row.id ?? `${(index || 0) + (page - 1) * pageSize}`,
3289
3327
  [_getId, page, pageSize]
3290
3328
  );
@@ -3300,7 +3338,7 @@ function useDataTableRenderer({
3300
3338
  }),
3301
3339
  [dataInPage, isRowSelectable, getId]
3302
3340
  );
3303
- const handleRangeSelection = useCallback9(
3341
+ const handleRangeSelection = useCallback10(
3304
3342
  (anchor, targetIndex) => {
3305
3343
  const startIndex = Math.min(anchor.rowIndex, targetIndex);
3306
3344
  const endIndex = Math.max(anchor.rowIndex, targetIndex);
@@ -3337,7 +3375,7 @@ function useDataTableRenderer({
3337
3375
  [_isTotalSelected, selectionModel, selectableRowCount]
3338
3376
  );
3339
3377
  const columnWidths = useColumnWidths(columnsByField);
3340
- const getWidth = useCallback9(
3378
+ const getWidth = useCallback10(
3341
3379
  (f) => columnWidths[f] ?? columnsByField[f].width ?? // Column prop 으로 지정된 width
3342
3380
  columnsByField[f].minWidth ?? 0,
3343
3381
  [columnWidths, columnsByField]
@@ -3379,14 +3417,14 @@ function useDataTableRenderer({
3379
3417
  sortOrder,
3380
3418
  getWidth
3381
3419
  ]);
3382
- const handlePageChange = useCallback9(
3420
+ const handlePageChange = useCallback10(
3383
3421
  (newPage) => {
3384
3422
  setPage(newPage);
3385
3423
  onPaginationModelChange?.({ page: newPage, pageSize });
3386
3424
  },
3387
3425
  [onPaginationModelChange, pageSize]
3388
3426
  );
3389
- const handleSortChange = useCallback9(
3427
+ const handleSortChange = useCallback10(
3390
3428
  (props) => {
3391
3429
  const { field, currentSort, multiple } = props;
3392
3430
  const column = columnsByField[field];
@@ -3409,23 +3447,23 @@ function useDataTableRenderer({
3409
3447
  },
3410
3448
  [sortOrder, columnsByField, sortModel, setSortModel]
3411
3449
  );
3412
- useEffect5(() => {
3450
+ useEffect6(() => {
3413
3451
  if (!paginationModel) {
3414
3452
  handlePageChange(1);
3415
3453
  }
3416
3454
  }, [rowCount, handlePageChange, paginationModel]);
3417
- useEffect5(() => {
3455
+ useEffect6(() => {
3418
3456
  const lastPage = Math.max(1, Math.ceil(rowCount / pageSize));
3419
3457
  if (page > lastPage) {
3420
3458
  handlePageChange(lastPage);
3421
3459
  }
3422
3460
  }, [page, rowCount, pageSize, handlePageChange]);
3423
- useEffect5(() => {
3461
+ useEffect6(() => {
3424
3462
  onSelectionModelChangeRef.current?.([]);
3425
3463
  setSelectionAnchor(null);
3426
3464
  }, [page]);
3427
- const prevRowsRef = useRef5(_rows);
3428
- useEffect5(() => {
3465
+ const prevRowsRef = useRef6(_rows);
3466
+ useEffect6(() => {
3429
3467
  if (prevRowsRef.current !== _rows) {
3430
3468
  setSelectionAnchor(null);
3431
3469
  prevRowsRef.current = _rows;
@@ -3444,8 +3482,8 @@ function useDataTableRenderer({
3444
3482
  handleSortChange,
3445
3483
  isAllSelected,
3446
3484
  isTotalSelected,
3447
- isSelectedRow: useCallback9((model) => selectedModelSet.has(model), [selectedModelSet]),
3448
- isRowSelectable: useCallback9(
3485
+ isSelectedRow: useCallback10((model) => selectedModelSet.has(model), [selectedModelSet]),
3486
+ isRowSelectable: useCallback10(
3449
3487
  (rowId, row) => {
3450
3488
  if (!isRowSelectable) return true;
3451
3489
  return isRowSelectable({ row, id: rowId });
@@ -3453,13 +3491,13 @@ function useDataTableRenderer({
3453
3491
  [isRowSelectable]
3454
3492
  ),
3455
3493
  focusedRowId,
3456
- onRowFocus: useCallback9((rowId) => {
3494
+ onRowFocus: useCallback10((rowId) => {
3457
3495
  setFocusedRowId(rowId);
3458
3496
  }, []),
3459
- onAllCheckboxChange: useCallback9(() => {
3497
+ onAllCheckboxChange: useCallback10(() => {
3460
3498
  onSelectionModelChange?.(isAllSelected ? [] : selectableDataInPage.map(getId));
3461
3499
  }, [isAllSelected, selectableDataInPage, onSelectionModelChange, getId]),
3462
- onCheckboxChange: useCallback9(
3500
+ onCheckboxChange: useCallback10(
3463
3501
  (event, selectedModel) => {
3464
3502
  const isShiftClick = "shiftKey" in event && event.shiftKey;
3465
3503
  const rowIndex = dataInPage.findIndex((row, i) => getId(row, i) === selectedModel);
@@ -3492,7 +3530,7 @@ function useDataTableRenderer({
3492
3530
  ),
3493
3531
  columns,
3494
3532
  processedColumnGroups,
3495
- onTotalSelect: useCallback9(() => {
3533
+ onTotalSelect: useCallback10(() => {
3496
3534
  const selectableRows = rows.filter((row, i) => {
3497
3535
  if (!isRowSelectable) return true;
3498
3536
  return isRowSelectable({ row, id: getId(row, i) });
@@ -3577,7 +3615,7 @@ function TableBody(props) {
3577
3615
  TableBody.displayName = "TableBody";
3578
3616
 
3579
3617
  // src/components/Pagination/Pagination.tsx
3580
- import React24, { useCallback as useCallback10, useEffect as useEffect6 } from "react";
3618
+ import React24, { useCallback as useCallback11, useEffect as useEffect7 } from "react";
3581
3619
  import PreviousIcon from "@mui/icons-material/ChevronLeftRounded";
3582
3620
  import NextIcon from "@mui/icons-material/ChevronRightRounded";
3583
3621
  import FirstPageIcon from "@mui/icons-material/FirstPageRounded";
@@ -3646,7 +3684,7 @@ function Pagination(props) {
3646
3684
  const [paginationModel, setPaginationModel] = useControlledState(
3647
3685
  _paginationModel,
3648
3686
  defaultPaginationModel,
3649
- useCallback10(
3687
+ useCallback11(
3650
3688
  (newPage) => {
3651
3689
  onPageChange(newPage.page);
3652
3690
  },
@@ -3662,7 +3700,7 @@ function Pagination(props) {
3662
3700
  const afterPages = [paginationModel.page + 1, paginationModel.page + 2].filter((p) => p <= lastPage - 1);
3663
3701
  const isMoreAfterPages = lastPage > 1 && paginationModel.page < lastPage - 3;
3664
3702
  const isMoreBeforePages = lastPage > 1 && paginationModel.page > 4;
3665
- useEffect6(() => {
3703
+ useEffect7(() => {
3666
3704
  if (paginationModel.page > lastPage) {
3667
3705
  setPaginationModel({ ...paginationModel, page: lastPage });
3668
3706
  }
@@ -3845,8 +3883,8 @@ function Component(props, apiRef) {
3845
3883
  ...innerProps
3846
3884
  } = props;
3847
3885
  const tableId = useId();
3848
- const parentRef = useRef6(null);
3849
- const tableBodyRef = useRef6(null);
3886
+ const parentRef = useRef7(null);
3887
+ const tableBodyRef = useRef7(null);
3850
3888
  const {
3851
3889
  columns,
3852
3890
  processedColumnGroups,
@@ -3883,20 +3921,20 @@ function Component(props, apiRef) {
3883
3921
  const paginationModel = useMemo10(() => ({ page, pageSize }), [page, pageSize]);
3884
3922
  const totalSize = virtualizer.getTotalSize();
3885
3923
  const virtualizedItems = virtualizer.getVirtualItems();
3886
- const getRowClickHandler = useCallback11(
3924
+ const getRowClickHandler = useCallback12(
3887
3925
  (row, rowId) => (e) => {
3888
3926
  onRowClick?.({ row, rowId }, e);
3889
3927
  checkboxSelection && !disableSelectionOnClick && isRowSelectableCheck(rowId, row) && onCheckboxChange(e, rowId);
3890
3928
  },
3891
3929
  [onRowClick, checkboxSelection, disableSelectionOnClick, onCheckboxChange, isRowSelectableCheck]
3892
3930
  );
3893
- const getRowFocusHandler = useCallback11(
3931
+ const getRowFocusHandler = useCallback12(
3894
3932
  (rowId) => () => {
3895
3933
  onRowFocus(rowId);
3896
3934
  },
3897
3935
  [onRowFocus]
3898
3936
  );
3899
- const getCheckboxClickHandler = useCallback11(
3937
+ const getCheckboxClickHandler = useCallback12(
3900
3938
  (rowId, row) => (e) => {
3901
3939
  e.stopPropagation();
3902
3940
  if (isRowSelectableCheck(rowId, row)) {
@@ -3906,7 +3944,7 @@ function Component(props, apiRef) {
3906
3944
  },
3907
3945
  [onCheckboxChange, isRowSelectableCheck, onRowFocus]
3908
3946
  );
3909
- const handleTableKeyDown = useCallback11(
3947
+ const handleTableKeyDown = useCallback12(
3910
3948
  (e) => {
3911
3949
  const supportedKeys = ["ArrowUp", "ArrowDown", " ", "Home", "End", "PageUp", "PageDown"];
3912
3950
  if (!supportedKeys.includes(e.key)) return;
@@ -4248,7 +4286,7 @@ var DataTable = forwardRef7(Component);
4248
4286
  DataTable.displayName = "DataTable";
4249
4287
 
4250
4288
  // src/components/DateRangePicker/DateRangePicker.tsx
4251
- import React26, { forwardRef as forwardRef8, useCallback as useCallback12, useEffect as useEffect7, useImperativeHandle as useImperativeHandle3, useMemo as useMemo11, useRef as useRef7, useState as useState9 } from "react";
4289
+ import React26, { forwardRef as forwardRef8, useCallback as useCallback13, useEffect as useEffect8, useImperativeHandle as useImperativeHandle3, useMemo as useMemo11, useRef as useRef8, useState as useState10 } from "react";
4252
4290
  import { IMaskInput as IMaskInput2, IMask as IMask2 } from "react-imask";
4253
4291
  import CalendarTodayIcon2 from "@mui/icons-material/CalendarToday";
4254
4292
  import { styled as styled14, useThemeProps as useThemeProps5 } from "@mui/joy";
@@ -4409,23 +4447,23 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
4409
4447
  readOnly,
4410
4448
  ...innerProps
4411
4449
  } = props;
4412
- const innerRef = useRef7(null);
4413
- const buttonRef = useRef7(null);
4450
+ const innerRef = useRef8(null);
4451
+ const buttonRef = useRef8(null);
4414
4452
  const [value, setValue] = useControlledState(
4415
4453
  props.value,
4416
4454
  props.defaultValue || "",
4417
- useCallback12((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
4455
+ useCallback13((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
4418
4456
  );
4419
- const [displayValue, setDisplayValue] = useState9(
4457
+ const [displayValue, setDisplayValue] = useState10(
4420
4458
  () => value ? formatValueString2(parseDates(value, format), displayFormat) : ""
4421
4459
  );
4422
- const [anchorEl, setAnchorEl] = useState9(null);
4460
+ const [anchorEl, setAnchorEl] = useState10(null);
4423
4461
  const open = Boolean(anchorEl);
4424
4462
  const calendarValue = useMemo11(
4425
4463
  () => value ? parseDates(value, format) : void 0,
4426
4464
  [value, format]
4427
4465
  );
4428
- useEffect7(() => {
4466
+ useEffect8(() => {
4429
4467
  if (value) {
4430
4468
  try {
4431
4469
  const dates = parseDates(value, format);
@@ -4437,13 +4475,13 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
4437
4475
  setDisplayValue("");
4438
4476
  }
4439
4477
  }, [displayFormat, value, format]);
4440
- useEffect7(() => {
4478
+ useEffect8(() => {
4441
4479
  if (!anchorEl) {
4442
4480
  innerRef.current?.blur();
4443
4481
  }
4444
4482
  }, [anchorEl, innerRef]);
4445
4483
  useImperativeHandle3(ref, () => innerRef.current, [innerRef]);
4446
- const handleChange = useCallback12(
4484
+ const handleChange = useCallback13(
4447
4485
  (event) => {
4448
4486
  const value2 = event.target.value;
4449
4487
  setDisplayValue(value2 ? formatValueString2(parseDates(value2, format), displayFormat) : value2);
@@ -4451,7 +4489,7 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
4451
4489
  },
4452
4490
  [displayFormat, format, setValue]
4453
4491
  );
4454
- const handleDisplayInputChange = useCallback12(
4492
+ const handleDisplayInputChange = useCallback13(
4455
4493
  (event) => {
4456
4494
  if (event.target.value === "") {
4457
4495
  handleChange({
@@ -4476,14 +4514,14 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
4476
4514
  },
4477
4515
  [displayFormat, format, handleChange, props.name]
4478
4516
  );
4479
- const handleCalendarToggle = useCallback12(
4517
+ const handleCalendarToggle = useCallback13(
4480
4518
  (event) => {
4481
4519
  setAnchorEl(anchorEl ? null : event.currentTarget);
4482
4520
  innerRef.current?.focus();
4483
4521
  },
4484
4522
  [anchorEl, setAnchorEl, innerRef]
4485
4523
  );
4486
- const handleCalendarChange = useCallback12(
4524
+ const handleCalendarChange = useCallback13(
4487
4525
  ([date1, date2]) => {
4488
4526
  if (!date1 || !date2) return;
4489
4527
  const formattedValue = formatValueString2([date1, date2], format);
@@ -4497,7 +4535,7 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
4497
4535
  },
4498
4536
  [props.value, props.name, onChange, setValue, setAnchorEl, format, displayFormat]
4499
4537
  );
4500
- const handleInputMouseDown = useCallback12(
4538
+ const handleInputMouseDown = useCallback13(
4501
4539
  (event) => {
4502
4540
  if (inputReadOnly) {
4503
4541
  event.preventDefault();
@@ -4729,13 +4767,13 @@ var InsetDrawer = styled20(JoyDrawer2)(({ theme }) => ({
4729
4767
  }));
4730
4768
 
4731
4769
  // src/components/FilterableCheckboxGroup/FilterableCheckboxGroup.tsx
4732
- import React31, { useCallback as useCallback13, useEffect as useEffect8, useMemo as useMemo12, useRef as useRef8, useState as useState10 } from "react";
4770
+ import React31, { useCallback as useCallback14, useEffect as useEffect9, useMemo as useMemo12, useRef as useRef9, useState as useState11 } from "react";
4733
4771
  import SearchIcon from "@mui/icons-material/Search";
4734
4772
  import { useVirtualizer as useVirtualizer3 } from "@tanstack/react-virtual";
4735
4773
  function LabelWithTooltip(props) {
4736
4774
  const { label, size } = props;
4737
- const labelContentRef = useRef8(null);
4738
- const [isOverflowing, setIsOverflowing] = useState10(false);
4775
+ const labelContentRef = useRef9(null);
4776
+ const [isOverflowing, setIsOverflowing] = useState11(false);
4739
4777
  const labelContent = /* @__PURE__ */ React31.createElement(
4740
4778
  "span",
4741
4779
  {
@@ -4752,7 +4790,7 @@ function LabelWithTooltip(props) {
4752
4790
  },
4753
4791
  label
4754
4792
  );
4755
- useEffect8(() => {
4793
+ useEffect9(() => {
4756
4794
  const element = labelContentRef.current;
4757
4795
  if (element) {
4758
4796
  setIsOverflowing(element.scrollWidth > element.clientWidth);
@@ -4776,16 +4814,16 @@ function FilterableCheckboxGroup(props) {
4776
4814
  maxHeight = 300,
4777
4815
  disabled
4778
4816
  } = props;
4779
- const [searchTerm, setSearchTerm] = useState10("");
4780
- const [sortedOptions, setSortedOptions] = useState10(options);
4817
+ const [searchTerm, setSearchTerm] = useState11("");
4818
+ const [sortedOptions, setSortedOptions] = useState11(options);
4781
4819
  const [internalValue, setInternalValue] = useControlledState(
4782
4820
  value,
4783
4821
  value ?? [],
4784
- useCallback13((newValue) => onChange?.(newValue), [onChange])
4822
+ useCallback14((newValue) => onChange?.(newValue), [onChange])
4785
4823
  );
4786
- const parentRef = useRef8(null);
4787
- const isInitialSortRef = useRef8(false);
4788
- const prevOptionsRef = useRef8([...options]);
4824
+ const parentRef = useRef9(null);
4825
+ const isInitialSortRef = useRef9(false);
4826
+ const prevOptionsRef = useRef9([...options]);
4789
4827
  const filteredOptions = useMemo12(() => {
4790
4828
  if (!searchTerm) return sortedOptions;
4791
4829
  return sortedOptions.filter((option) => option.label.toLowerCase().includes(searchTerm.toLowerCase()));
@@ -4808,7 +4846,7 @@ function FilterableCheckboxGroup(props) {
4808
4846
  overscan: 5
4809
4847
  });
4810
4848
  const items = virtualizer.getVirtualItems();
4811
- useEffect8(() => {
4849
+ useEffect9(() => {
4812
4850
  const optionsChanged = prevOptionsRef.current.length !== options.length || prevOptionsRef.current.some(
4813
4851
  (prevOption, index) => prevOption.value !== options[index]?.value || prevOption.label !== options[index]?.label || prevOption.disabled !== options[index]?.disabled
4814
4852
  );
@@ -4834,13 +4872,13 @@ function FilterableCheckboxGroup(props) {
4834
4872
  }
4835
4873
  }
4836
4874
  }, [options, value]);
4837
- useEffect8(() => {
4875
+ useEffect9(() => {
4838
4876
  virtualizer.measure();
4839
4877
  }, [virtualizer, filteredOptions, size]);
4840
- const handleSearchChange = useCallback13((event) => {
4878
+ const handleSearchChange = useCallback14((event) => {
4841
4879
  setSearchTerm(event.target.value);
4842
4880
  }, []);
4843
- const handleCheckboxChange = useCallback13(
4881
+ const handleCheckboxChange = useCallback14(
4844
4882
  (optionValue) => (event) => {
4845
4883
  const checked = event.target.checked;
4846
4884
  const newValue = checked ? [...internalValue, optionValue] : internalValue.filter((v) => v !== optionValue);
@@ -4848,7 +4886,7 @@ function FilterableCheckboxGroup(props) {
4848
4886
  },
4849
4887
  [internalValue, setInternalValue]
4850
4888
  );
4851
- const handleSelectAll = useCallback13(
4889
+ const handleSelectAll = useCallback14(
4852
4890
  (event) => {
4853
4891
  const checked = event.target.checked;
4854
4892
  const enabledOptions = filteredOptions.filter((option) => !option.disabled);
@@ -5005,16 +5043,16 @@ function IconMenuButton(props) {
5005
5043
  IconMenuButton.displayName = "IconMenuButton";
5006
5044
 
5007
5045
  // src/components/Markdown/Markdown.tsx
5008
- import React33, { lazy, Suspense, useEffect as useEffect9, useState as useState11 } from "react";
5046
+ import React33, { lazy, Suspense, useEffect as useEffect10, useState as useState12 } from "react";
5009
5047
  import { Skeleton } from "@mui/joy";
5010
5048
  import { Link as Link2 } from "@mui/joy";
5011
5049
  import remarkGfm from "remark-gfm";
5012
5050
  var LazyReactMarkdown = lazy(() => import("react-markdown"));
5013
5051
  var Markdown = (props) => {
5014
- const [rehypeAccent2, setRehypeAccent] = useState11(null);
5015
- useEffect9(() => {
5052
+ const [rehypeAccent, setRehypeAccent] = useState12(null);
5053
+ useEffect10(() => {
5016
5054
  const loadRehypeAccent = async () => {
5017
- const module = await Promise.resolve().then(() => (init_rehype_accent(), rehype_accent_exports));
5055
+ const module = await import("./chunks/rehype-accent-FZRUD7VI.js");
5018
5056
  setRehypeAccent(() => module.rehypeAccent);
5019
5057
  };
5020
5058
  loadRehypeAccent();
@@ -5031,7 +5069,7 @@ var Markdown = (props) => {
5031
5069
  fallback,
5032
5070
  ...innerProps
5033
5071
  } = props;
5034
- if (!rehypeAccent2) {
5072
+ if (!rehypeAccent) {
5035
5073
  return null;
5036
5074
  }
5037
5075
  return /* @__PURE__ */ React33.createElement(Typography, { component: "div", color, textColor, level: defaultLevel, ...innerProps }, /* @__PURE__ */ React33.createElement(
@@ -5044,7 +5082,7 @@ var Markdown = (props) => {
5044
5082
  {
5045
5083
  ...markdownOptions,
5046
5084
  children: content,
5047
- rehypePlugins: [[rehypeAccent2, { accentColor }]],
5085
+ rehypePlugins: [[rehypeAccent, { accentColor }]],
5048
5086
  remarkPlugins: [remarkGfm],
5049
5087
  components: {
5050
5088
  a: ({ children, href }) => /* @__PURE__ */ React33.createElement(Link2, { href, target: defaultLinkAction }, children),
@@ -5186,7 +5224,7 @@ function MenuButton(props) {
5186
5224
  MenuButton.displayName = "MenuButton";
5187
5225
 
5188
5226
  // src/components/MonthPicker/MonthPicker.tsx
5189
- import React35, { forwardRef as forwardRef9, useCallback as useCallback14, useEffect as useEffect10, useImperativeHandle as useImperativeHandle4, useRef as useRef9, useState as useState12 } from "react";
5227
+ import React35, { forwardRef as forwardRef9, useCallback as useCallback15, useEffect as useEffect11, useImperativeHandle as useImperativeHandle4, useRef as useRef10, useState as useState13 } from "react";
5190
5228
  import CalendarTodayIcon3 from "@mui/icons-material/CalendarToday";
5191
5229
  import { styled as styled21, useThemeProps as useThemeProps6 } from "@mui/joy";
5192
5230
  import { FocusTrap as FocusTrap3, ClickAwayListener as ClickAwayListener3, Popper as Popper4 } from "@mui/base";
@@ -5268,14 +5306,14 @@ var MonthPicker = forwardRef9((inProps, ref) => {
5268
5306
  locale,
5269
5307
  ...innerProps
5270
5308
  } = props;
5271
- const innerRef = useRef9(null);
5272
- const buttonRef = useRef9(null);
5309
+ const innerRef = useRef10(null);
5310
+ const buttonRef = useRef10(null);
5273
5311
  const [value, setValue, isControlled] = useControlledState(
5274
5312
  props.value,
5275
5313
  props.defaultValue || "",
5276
- useCallback14((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
5314
+ useCallback15((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
5277
5315
  );
5278
- const getFormattedDisplayValue = useCallback14(
5316
+ const getFormattedDisplayValue = useCallback15(
5279
5317
  (inputValue) => {
5280
5318
  if (!inputValue) return "";
5281
5319
  try {
@@ -5286,19 +5324,19 @@ var MonthPicker = forwardRef9((inProps, ref) => {
5286
5324
  },
5287
5325
  [format, displayFormat, locale]
5288
5326
  );
5289
- const [displayValue, setDisplayValue] = useState12(() => getFormattedDisplayValue(value));
5290
- const [anchorEl, setAnchorEl] = useState12(null);
5327
+ const [displayValue, setDisplayValue] = useState13(() => getFormattedDisplayValue(value));
5328
+ const [anchorEl, setAnchorEl] = useState13(null);
5291
5329
  const open = Boolean(anchorEl);
5292
- useEffect10(() => {
5330
+ useEffect11(() => {
5293
5331
  if (!anchorEl) {
5294
5332
  innerRef.current?.blur();
5295
5333
  }
5296
5334
  }, [anchorEl, innerRef]);
5297
5335
  useImperativeHandle4(ref, () => innerRef.current, [innerRef]);
5298
- useEffect10(() => {
5336
+ useEffect11(() => {
5299
5337
  setDisplayValue(getFormattedDisplayValue(value));
5300
5338
  }, [value, getFormattedDisplayValue]);
5301
- const handleChange = useCallback14(
5339
+ const handleChange = useCallback15(
5302
5340
  (event) => {
5303
5341
  const newValue = event.target.value;
5304
5342
  setValue(newValue);
@@ -5308,14 +5346,14 @@ var MonthPicker = forwardRef9((inProps, ref) => {
5308
5346
  },
5309
5347
  [setValue, getFormattedDisplayValue, isControlled]
5310
5348
  );
5311
- const handleCalendarToggle = useCallback14(
5349
+ const handleCalendarToggle = useCallback15(
5312
5350
  (event) => {
5313
5351
  setAnchorEl(anchorEl ? null : event.currentTarget);
5314
5352
  innerRef.current?.focus();
5315
5353
  },
5316
5354
  [anchorEl, setAnchorEl, innerRef]
5317
5355
  );
5318
- const handleInputMouseDown = useCallback14(
5356
+ const handleInputMouseDown = useCallback15(
5319
5357
  (event) => {
5320
5358
  event.preventDefault();
5321
5359
  buttonRef.current?.focus();
@@ -5439,7 +5477,7 @@ var MonthPicker = forwardRef9((inProps, ref) => {
5439
5477
  });
5440
5478
 
5441
5479
  // src/components/MonthRangePicker/MonthRangePicker.tsx
5442
- import React36, { forwardRef as forwardRef10, useCallback as useCallback15, useEffect as useEffect11, useImperativeHandle as useImperativeHandle5, useMemo as useMemo13, useRef as useRef10, useState as useState13 } from "react";
5480
+ import React36, { forwardRef as forwardRef10, useCallback as useCallback16, useEffect as useEffect12, useImperativeHandle as useImperativeHandle5, useMemo as useMemo13, useRef as useRef11, useState as useState14 } from "react";
5443
5481
  import { IMaskInput as IMaskInput3, IMask as IMask3 } from "react-imask";
5444
5482
  import CalendarTodayIcon4 from "@mui/icons-material/CalendarToday";
5445
5483
  import { styled as styled22, useThemeProps as useThemeProps7 } from "@mui/joy";
@@ -5547,35 +5585,35 @@ var MonthRangePicker = forwardRef10((inProps, ref) => {
5547
5585
  size,
5548
5586
  ...innerProps
5549
5587
  } = props;
5550
- const innerRef = useRef10(null);
5588
+ const innerRef = useRef11(null);
5551
5589
  const [value, setValue] = useControlledState(
5552
5590
  props.value,
5553
5591
  props.defaultValue || "",
5554
- useCallback15((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
5592
+ useCallback16((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
5555
5593
  );
5556
- const [anchorEl, setAnchorEl] = useState13(null);
5594
+ const [anchorEl, setAnchorEl] = useState14(null);
5557
5595
  const open = Boolean(anchorEl);
5558
5596
  const calendarValue = useMemo13(() => value ? parseDates2(value) : void 0, [value]);
5559
- useEffect11(() => {
5597
+ useEffect12(() => {
5560
5598
  if (!anchorEl) {
5561
5599
  innerRef.current?.blur();
5562
5600
  }
5563
5601
  }, [anchorEl, innerRef]);
5564
5602
  useImperativeHandle5(ref, () => innerRef.current, [innerRef]);
5565
- const handleChange = useCallback15(
5603
+ const handleChange = useCallback16(
5566
5604
  (event) => {
5567
5605
  setValue(event.target.value);
5568
5606
  },
5569
5607
  [setValue]
5570
5608
  );
5571
- const handleCalendarToggle = useCallback15(
5609
+ const handleCalendarToggle = useCallback16(
5572
5610
  (event) => {
5573
5611
  setAnchorEl(anchorEl ? null : event.currentTarget);
5574
5612
  innerRef.current?.focus();
5575
5613
  },
5576
5614
  [anchorEl, setAnchorEl, innerRef]
5577
5615
  );
5578
- const handleCalendarChange = useCallback15(
5616
+ const handleCalendarChange = useCallback16(
5579
5617
  ([date1, date2]) => {
5580
5618
  if (!date1 || !date2) return;
5581
5619
  setValue(formatValueString4([date1, date2], format));
@@ -5802,7 +5840,7 @@ function Navigator(props) {
5802
5840
  Navigator.displayName = "Navigator";
5803
5841
 
5804
5842
  // src/components/PercentageInput/PercentageInput.tsx
5805
- import React40, { useCallback as useCallback16, useMemo as useMemo14, useState as useState14 } from "react";
5843
+ import React40, { useCallback as useCallback17, useMemo as useMemo14, useState as useState15 } from "react";
5806
5844
  import { NumericFormat as NumericFormat2 } from "react-number-format";
5807
5845
  import { styled as styled25, useThemeProps as useThemeProps8 } from "@mui/joy";
5808
5846
  var padDecimal = (value, decimalScale) => {
@@ -5859,9 +5897,9 @@ var PercentageInput = React40.forwardRef(
5859
5897
  const [_value, setValue] = useControlledState(
5860
5898
  props.value,
5861
5899
  props.defaultValue,
5862
- useCallback16((value2) => onChange?.({ target: { name, value: value2 } }), [onChange, name])
5900
+ useCallback17((value2) => onChange?.({ target: { name, value: value2 } }), [onChange, name])
5863
5901
  );
5864
- const [internalError, setInternalError] = useState14(
5902
+ const [internalError, setInternalError] = useState15(
5865
5903
  max && _value && _value > max || min && _value && _value < min
5866
5904
  );
5867
5905
  const value = useMemo14(() => {
@@ -5870,7 +5908,7 @@ var PercentageInput = React40.forwardRef(
5870
5908
  }
5871
5909
  return _value;
5872
5910
  }, [_value, useMinorUnit, maxDecimalScale]);
5873
- const handleChange = useCallback16(
5911
+ const handleChange = useCallback17(
5874
5912
  (event) => {
5875
5913
  if (event.target.value === "") {
5876
5914
  setValue(void 0);
@@ -5927,31 +5965,194 @@ var MotionRadioGroup = motion26(JoyRadioGroup);
5927
5965
  var RadioGroup = MotionRadioGroup;
5928
5966
  RadioGroup.displayName = "RadioGroup";
5929
5967
 
5930
- // src/components/RadioList/RadioList.tsx
5968
+ // src/components/RadioTileGroup/RadioTileGroup.tsx
5931
5969
  import React41 from "react";
5970
+ import { styled as styled26, radioClasses, sheetClasses } from "@mui/joy";
5971
+ var RadioTileGroupRoot = styled26(RadioGroup, {
5972
+ name: "RadioTileGroup",
5973
+ slot: "root",
5974
+ shouldForwardProp: (prop) => prop !== "flex" && prop !== "columns"
5975
+ })(({ theme, flex, columns }) => ({
5976
+ flexDirection: "row",
5977
+ gap: theme.spacing(2),
5978
+ ...flex && { flex: 1 },
5979
+ ...columns && {
5980
+ display: "grid",
5981
+ gridTemplateColumns: `repeat(${columns}, 1fr)`
5982
+ },
5983
+ [`& .${sheetClasses.root}.${radioClasses.disabled}`]: {
5984
+ borderColor: theme.palette.neutral.outlinedDisabledBorder
5985
+ },
5986
+ [`& .${radioClasses.root}`]: {
5987
+ [`& .${radioClasses.action}`]: {
5988
+ borderRadius: theme.radius.md
5989
+ },
5990
+ [`&.${radioClasses.checked}`]: {
5991
+ [`& .${radioClasses.action}`]: {
5992
+ inset: -1,
5993
+ border: "2px solid",
5994
+ borderColor: theme.palette.primary.outlinedColor
5995
+ },
5996
+ [`&.${radioClasses.disabled}`]: {
5997
+ [`& .${radioClasses.action}`]: {
5998
+ borderColor: theme.palette.neutral.outlinedBorder
5999
+ }
6000
+ }
6001
+ }
6002
+ }
6003
+ }));
6004
+ var RadioTileSheet = styled26(Sheet, {
6005
+ name: "RadioTileGroup",
6006
+ slot: "tile",
6007
+ shouldForwardProp: (prop) => prop !== "disabled" && prop !== "size" && prop !== "flex" && prop !== "textAlign"
6008
+ })(({
6009
+ theme,
6010
+ disabled,
6011
+ size = "sm",
6012
+ flex,
6013
+ textAlign
6014
+ }) => {
6015
+ const px = { sm: theme.spacing(3), md: theme.spacing(3), lg: theme.spacing(4) }[size];
6016
+ const py = { sm: theme.spacing(3), md: theme.spacing(4), lg: theme.spacing(4) }[size];
6017
+ return {
6018
+ borderRadius: theme.radius.md,
6019
+ display: "flex",
6020
+ gap: { sm: theme.spacing(2), md: theme.spacing(3), lg: theme.spacing(4) }[size],
6021
+ padding: `${py} ${px}`,
6022
+ // NOTE: Radio에도 Label과의 정렬을 맞추기 위해 중복 코드가 있지만 Icon과 RadioButton 의 정렬도 일치시켜야 해서 코드가 중복으로 존재할수밖에 없다.
6023
+ flexDirection: textAlign === "start" ? "row-reverse" : "column-reverse",
6024
+ justifyContent: textAlign === "start" ? "space-between" : "center",
6025
+ alignItems: "center",
6026
+ ...flex ? { flex: 1 } : {},
6027
+ ...disabled ? { borderColor: theme.palette.neutral.outlinedDisabledBorder } : {
6028
+ ":hover": {
6029
+ backgroundColor: theme.palette.neutral.outlinedHoverBg
6030
+ },
6031
+ ":active": {
6032
+ backgroundColor: theme.palette.neutral.outlinedActiveBg
6033
+ }
6034
+ }
6035
+ };
6036
+ });
6037
+ function RadioTileGroup(props) {
6038
+ const {
6039
+ options,
6040
+ value,
6041
+ defaultValue,
6042
+ onChange,
6043
+ name,
6044
+ disabled: allDisabled,
6045
+ sx,
6046
+ className,
6047
+ useIndicator,
6048
+ textAlign = "center",
6049
+ size = "sm",
6050
+ flex,
6051
+ columns,
6052
+ label,
6053
+ helperText,
6054
+ error,
6055
+ required
6056
+ } = props;
6057
+ const radioGroup = /* @__PURE__ */ React41.createElement(
6058
+ RadioTileGroupRoot,
6059
+ {
6060
+ overlay: true,
6061
+ name,
6062
+ value,
6063
+ defaultValue,
6064
+ onChange,
6065
+ flex,
6066
+ columns
6067
+ },
6068
+ options.map((option) => /* @__PURE__ */ React41.createElement(
6069
+ RadioTileSheet,
6070
+ {
6071
+ key: option.value,
6072
+ variant: "outlined",
6073
+ disabled: allDisabled ?? option.disabled,
6074
+ size,
6075
+ flex,
6076
+ textAlign
6077
+ },
6078
+ /* @__PURE__ */ React41.createElement(
6079
+ Radio,
6080
+ {
6081
+ id: `${option.value}`,
6082
+ value: option.value,
6083
+ label: option.label,
6084
+ disableIcon: !useIndicator,
6085
+ disabled: allDisabled ?? option.disabled,
6086
+ size,
6087
+ slotProps: {
6088
+ root: {
6089
+ sx: {
6090
+ width: "100%",
6091
+ flexDirection: textAlign === "start" ? "row-reverse" : "column-reverse",
6092
+ justifyContent: textAlign === "start" ? "space-between" : "center",
6093
+ alignItems: "center",
6094
+ gap: { sm: 2, md: 3, lg: 4 }[size]
6095
+ }
6096
+ },
6097
+ label: ({ disabled }) => ({
6098
+ sx: (theme) => ({
6099
+ ...theme.typography[{ sm: "body-sm", md: "body-md", lg: "body-lg" }[size]],
6100
+ color: disabled ? theme.palette.neutral.outlinedDisabledColor : theme.palette.neutral.outlinedColor
6101
+ })
6102
+ })
6103
+ }
6104
+ }
6105
+ ),
6106
+ option.startDecorator && /* @__PURE__ */ React41.createElement(
6107
+ Box_default,
6108
+ {
6109
+ sx: {
6110
+ zIndex: 2,
6111
+ // HACK: Radio의 overlay가 decorator를 덮어버리기 때문에 문제 예방을 위해 적용해야 한다.
6112
+ width: { sm: "20px", md: "24px", lg: "24px" }[size],
6113
+ height: { sm: "20px", md: "24px", lg: "24px" }[size],
6114
+ color: "inherit",
6115
+ "& > .MuiSvgIcon-root": {
6116
+ width: "inherit",
6117
+ height: "inherit",
6118
+ fill: "currentColor",
6119
+ color: "inherit"
6120
+ }
6121
+ }
6122
+ },
6123
+ option.startDecorator
6124
+ )
6125
+ ))
6126
+ );
6127
+ return /* @__PURE__ */ React41.createElement(FormControl_default, { required, disabled: allDisabled, error, size, sx, className }, label && /* @__PURE__ */ React41.createElement(FormLabel_default, null, label), radioGroup, helperText && /* @__PURE__ */ React41.createElement(FormHelperText_default, null, helperText));
6128
+ }
6129
+ RadioTileGroup.displayName = "RadioTileGroup";
6130
+
6131
+ // src/components/RadioList/RadioList.tsx
6132
+ import React42 from "react";
5932
6133
  function RadioList(props) {
5933
6134
  const { items, ...innerProps } = props;
5934
- return /* @__PURE__ */ React41.createElement(RadioGroup, { ...innerProps }, items.map((item) => /* @__PURE__ */ React41.createElement(Radio, { key: `${item.value}`, value: item.value, label: item.label })));
6135
+ return /* @__PURE__ */ React42.createElement(RadioGroup, { ...innerProps }, items.map((item) => /* @__PURE__ */ React42.createElement(Radio, { key: `${item.value}`, value: item.value, label: item.label })));
5935
6136
  }
5936
6137
  RadioList.displayName = "RadioList";
5937
6138
 
5938
6139
  // src/components/Stepper/Stepper.tsx
5939
- import React42 from "react";
6140
+ import React43 from "react";
5940
6141
  import {
5941
6142
  Stepper as JoyStepper,
5942
6143
  Step as JoyStep,
5943
6144
  StepIndicator as JoyStepIndicator,
5944
6145
  stepClasses,
5945
6146
  stepIndicatorClasses,
5946
- styled as styled26
6147
+ styled as styled27
5947
6148
  } from "@mui/joy";
5948
6149
  import CheckIcon from "@mui/icons-material/Check";
5949
6150
  import { motion as motion27 } from "framer-motion";
5950
- var Step = styled26(JoyStep)({});
6151
+ var Step = styled27(JoyStep)({});
5951
6152
  Step.displayName = "Step";
5952
- var StepIndicator = styled26(JoyStepIndicator)({});
6153
+ var StepIndicator = styled27(JoyStepIndicator)({});
5953
6154
  StepIndicator.displayName = "StepIndicator";
5954
- var StyledStepper = styled26(JoyStepper)(({ theme }) => ({
6155
+ var StyledStepper = styled27(JoyStepper)(({ theme }) => ({
5955
6156
  "--StepIndicator-size": "24px",
5956
6157
  "--Step-gap": theme.spacing(2),
5957
6158
  "--joy-palette-success-solidBg": "var(--joy-palette-success-400)",
@@ -5972,7 +6173,7 @@ function Stepper(props) {
5972
6173
  stepOrientation = "horizontal"
5973
6174
  } = props;
5974
6175
  const effectiveStepOrientation = orientation === "vertical" ? "horizontal" : stepOrientation;
5975
- return /* @__PURE__ */ React42.createElement(
6176
+ return /* @__PURE__ */ React43.createElement(
5976
6177
  MotionStepper,
5977
6178
  {
5978
6179
  orientation,
@@ -6011,23 +6212,23 @@ function Stepper(props) {
6011
6212
  const completed = activeStep > i + 1;
6012
6213
  const disabled = activeStep < i + 1;
6013
6214
  const hasContent = step.label || step.extraContent;
6014
- return /* @__PURE__ */ React42.createElement(
6215
+ return /* @__PURE__ */ React43.createElement(
6015
6216
  Step,
6016
6217
  {
6017
6218
  key: `step-${i}`,
6018
- indicator: /* @__PURE__ */ React42.createElement(StepIndicator, { variant: disabled ? "outlined" : "solid", color: disabled ? "neutral" : "primary" }, completed ? /* @__PURE__ */ React42.createElement(CheckIcon, null) : step.indicatorContent),
6219
+ indicator: /* @__PURE__ */ React43.createElement(StepIndicator, { variant: disabled ? "outlined" : "solid", color: disabled ? "neutral" : "primary" }, completed ? /* @__PURE__ */ React43.createElement(CheckIcon, null) : step.indicatorContent),
6019
6220
  active,
6020
6221
  completed,
6021
6222
  disabled,
6022
6223
  orientation: effectiveStepOrientation
6023
6224
  },
6024
- hasContent && /* @__PURE__ */ React42.createElement(
6225
+ hasContent && /* @__PURE__ */ React43.createElement(
6025
6226
  Stack_default,
6026
6227
  {
6027
6228
  sx: orientation === "horizontal" && effectiveStepOrientation === "vertical" ? { alignItems: "center" } : {}
6028
6229
  },
6029
- step.label && /* @__PURE__ */ React42.createElement(Typography_default, { level: "title-sm" }, step.label),
6030
- step.extraContent && /* @__PURE__ */ React42.createElement(Typography_default, { level: "body-xs" }, step.extraContent)
6230
+ step.label && /* @__PURE__ */ React43.createElement(Typography_default, { level: "title-sm" }, step.label),
6231
+ step.extraContent && /* @__PURE__ */ React43.createElement(Typography_default, { level: "body-xs" }, step.extraContent)
6031
6232
  )
6032
6233
  );
6033
6234
  })
@@ -6036,11 +6237,11 @@ function Stepper(props) {
6036
6237
  Stepper.displayName = "Stepper";
6037
6238
 
6038
6239
  // src/components/Switch/Switch.tsx
6039
- import React43 from "react";
6040
- import { Switch as JoySwitch, styled as styled27, switchClasses } from "@mui/joy";
6240
+ import React44 from "react";
6241
+ import { Switch as JoySwitch, styled as styled28, switchClasses } from "@mui/joy";
6041
6242
  import { motion as motion28 } from "framer-motion";
6042
6243
  var MotionSwitch = motion28(JoySwitch);
6043
- var StyledThumb = styled27(motion28.div)({
6244
+ var StyledThumb = styled28(motion28.div)({
6044
6245
  "--Icon-fontSize": "calc(var(--Switch-thumbSize) * 0.75)",
6045
6246
  display: "inline-flex",
6046
6247
  justifyContent: "center",
@@ -6058,14 +6259,14 @@ var StyledThumb = styled27(motion28.div)({
6058
6259
  right: "var(--Switch-thumbOffset)"
6059
6260
  }
6060
6261
  });
6061
- var Thumb = (props) => /* @__PURE__ */ React43.createElement(StyledThumb, { ...props, layout: true, transition: spring });
6262
+ var Thumb = (props) => /* @__PURE__ */ React44.createElement(StyledThumb, { ...props, layout: true, transition: spring });
6062
6263
  var spring = {
6063
6264
  type: "spring",
6064
6265
  stiffness: 700,
6065
6266
  damping: 30
6066
6267
  };
6067
6268
  var Switch = (props) => {
6068
- return /* @__PURE__ */ React43.createElement(
6269
+ return /* @__PURE__ */ React44.createElement(
6069
6270
  MotionSwitch,
6070
6271
  {
6071
6272
  ...props,
@@ -6079,21 +6280,21 @@ var Switch = (props) => {
6079
6280
  Switch.displayName = "Switch";
6080
6281
 
6081
6282
  // src/components/Tabs/Tabs.tsx
6082
- import React44, { forwardRef as forwardRef11 } from "react";
6283
+ import React45, { forwardRef as forwardRef11 } from "react";
6083
6284
  import {
6084
6285
  Tabs as JoyTabs,
6085
6286
  Tab as JoyTab,
6086
6287
  TabList as JoyTabList,
6087
6288
  TabPanel as JoyTabPanel,
6088
- styled as styled28,
6289
+ styled as styled29,
6089
6290
  tabClasses
6090
6291
  } from "@mui/joy";
6091
- var StyledTabs = styled28(JoyTabs)(({ theme }) => ({
6292
+ var StyledTabs = styled29(JoyTabs)(({ theme }) => ({
6092
6293
  backgroundColor: theme.palette.background.body
6093
6294
  }));
6094
6295
  var Tabs = StyledTabs;
6095
6296
  Tabs.displayName = "Tabs";
6096
- var StyledTab = styled28(JoyTab)(({ theme }) => ({
6297
+ var StyledTab = styled29(JoyTab)(({ theme }) => ({
6097
6298
  gap: theme.spacing(2),
6098
6299
  [`&:not(.${tabClasses.selected})`]: {
6099
6300
  color: theme.palette.neutral[700]
@@ -6103,14 +6304,14 @@ var StyledTab = styled28(JoyTab)(({ theme }) => ({
6103
6304
  }
6104
6305
  }));
6105
6306
  var Tab = forwardRef11(function Tab2({ startDecorator, endDecorator, children, ...props }, ref) {
6106
- return /* @__PURE__ */ React44.createElement(StyledTab, { ...props, ref }, startDecorator, children, endDecorator);
6307
+ return /* @__PURE__ */ React45.createElement(StyledTab, { ...props, ref }, startDecorator, children, endDecorator);
6107
6308
  });
6108
6309
  Tab.displayName = "Tab";
6109
6310
  var TabList = JoyTabList;
6110
6311
  var TabPanel = JoyTabPanel;
6111
6312
 
6112
6313
  // src/components/ThemeProvider/ThemeProvider.tsx
6113
- import React45 from "react";
6314
+ import React46 from "react";
6114
6315
  import {
6115
6316
  CssBaseline,
6116
6317
  CssVarsProvider,
@@ -6366,13 +6567,13 @@ var defaultTheme = extendTheme({
6366
6567
  });
6367
6568
  function ThemeProvider(props) {
6368
6569
  const theme = props.theme || defaultTheme;
6369
- return /* @__PURE__ */ React45.createElement(React45.Fragment, null, /* @__PURE__ */ React45.createElement(CssVarsProvider, { theme }, /* @__PURE__ */ React45.createElement(CssBaseline, null), props.children));
6570
+ return /* @__PURE__ */ React46.createElement(React46.Fragment, null, /* @__PURE__ */ React46.createElement(CssVarsProvider, { theme }, /* @__PURE__ */ React46.createElement(CssBaseline, null), props.children));
6370
6571
  }
6371
6572
  ThemeProvider.displayName = "ThemeProvider";
6372
6573
 
6373
6574
  // src/components/Uploader/Uploader.tsx
6374
- import React46, { useCallback as useCallback17, useEffect as useEffect12, useMemo as useMemo15, useRef as useRef11, useState as useState15 } from "react";
6375
- import { styled as styled29, Input as Input2 } from "@mui/joy";
6575
+ import React47, { useCallback as useCallback18, useEffect as useEffect13, useMemo as useMemo15, useRef as useRef12, useState as useState16 } from "react";
6576
+ import { styled as styled30, Input as Input2 } from "@mui/joy";
6376
6577
  import MuiFileUploadIcon from "@mui/icons-material/CloudUploadRounded";
6377
6578
  import MuiUploadFileIcon from "@mui/icons-material/UploadFileRounded";
6378
6579
  import MuiClearIcon from "@mui/icons-material/ClearRounded";
@@ -6394,7 +6595,7 @@ var esmFiles = {
6394
6595
  "@atlaskit/pragmatic-drag-and-drop/dist/esm/entry-point/prevent-unhandled.js"
6395
6596
  )
6396
6597
  };
6397
- var VisuallyHiddenInput = styled29(Input2)({
6598
+ var VisuallyHiddenInput = styled30(Input2)({
6398
6599
  width: "1px",
6399
6600
  height: "1px",
6400
6601
  overflow: "hidden",
@@ -6403,18 +6604,18 @@ var VisuallyHiddenInput = styled29(Input2)({
6403
6604
  clipPath: "inset(50%)",
6404
6605
  position: "absolute"
6405
6606
  });
6406
- var PreviewRoot = styled29(Stack_default, {
6607
+ var PreviewRoot = styled30(Stack_default, {
6407
6608
  name: "Uploader",
6408
6609
  slot: "PreviewRoot"
6409
6610
  })({});
6410
- var UploadCard = styled29(Card, {
6611
+ var UploadCard = styled30(Card, {
6411
6612
  name: "Uploader",
6412
6613
  slot: "UploadCard"
6413
6614
  })(({ theme }) => ({
6414
6615
  padding: theme.spacing(2.5),
6415
6616
  border: `1px solid ${theme.palette.neutral.outlinedBorder}`
6416
6617
  }));
6417
- var UploadFileIcon = styled29(MuiUploadFileIcon, {
6618
+ var UploadFileIcon = styled30(MuiUploadFileIcon, {
6418
6619
  name: "Uploader",
6419
6620
  slot: "UploadFileIcon"
6420
6621
  })(({ theme }) => ({
@@ -6422,7 +6623,7 @@ var UploadFileIcon = styled29(MuiUploadFileIcon, {
6422
6623
  width: "32px",
6423
6624
  height: "32px"
6424
6625
  }));
6425
- var ClearIcon2 = styled29(MuiClearIcon, {
6626
+ var ClearIcon2 = styled30(MuiClearIcon, {
6426
6627
  name: "Uploader",
6427
6628
  slot: "ClearIcon"
6428
6629
  })(({ theme }) => ({
@@ -6448,7 +6649,7 @@ var getFileSize = (n) => {
6448
6649
  };
6449
6650
  var Preview = (props) => {
6450
6651
  const { files, uploaded, onDelete } = props;
6451
- return /* @__PURE__ */ React46.createElement(PreviewRoot, { gap: 1 }, [...uploaded, ...files].map((file) => /* @__PURE__ */ React46.createElement(UploadCard, { key: file.name, size: "sm", color: "neutral" }, /* @__PURE__ */ React46.createElement(Stack_default, { direction: "row", alignItems: "center", gap: 2 }, /* @__PURE__ */ React46.createElement(UploadFileIcon, null), /* @__PURE__ */ React46.createElement(Stack_default, { flex: "1", sx: { overflow: "hidden" } }, /* @__PURE__ */ React46.createElement(
6652
+ return /* @__PURE__ */ React47.createElement(PreviewRoot, { gap: 1 }, [...uploaded, ...files].map((file) => /* @__PURE__ */ React47.createElement(UploadCard, { key: file.name, size: "sm", color: "neutral" }, /* @__PURE__ */ React47.createElement(Stack_default, { direction: "row", alignItems: "center", gap: 2 }, /* @__PURE__ */ React47.createElement(UploadFileIcon, null), /* @__PURE__ */ React47.createElement(Stack_default, { flex: "1", sx: { overflow: "hidden" } }, /* @__PURE__ */ React47.createElement(
6452
6653
  Typography_default,
6453
6654
  {
6454
6655
  level: "body-sm",
@@ -6460,15 +6661,15 @@ var Preview = (props) => {
6460
6661
  }
6461
6662
  },
6462
6663
  file.name
6463
- ), !!file.size && /* @__PURE__ */ React46.createElement(Typography_default, { level: "body-xs", fontWeight: "300", lineHeight: "1.33", textColor: "text.tertiary" }, getFileSize(file.size))), /* @__PURE__ */ React46.createElement(IconButton_default, { onClick: () => onDelete?.(file) }, /* @__PURE__ */ React46.createElement(ClearIcon2, null))))));
6664
+ ), !!file.size && /* @__PURE__ */ React47.createElement(Typography_default, { level: "body-xs", fontWeight: "300", lineHeight: "1.33", textColor: "text.tertiary" }, getFileSize(file.size))), /* @__PURE__ */ React47.createElement(IconButton_default, { onClick: () => onDelete?.(file) }, /* @__PURE__ */ React47.createElement(ClearIcon2, null))))));
6464
6665
  };
6465
- var UploaderRoot = styled29(Stack_default, {
6666
+ var UploaderRoot = styled30(Stack_default, {
6466
6667
  name: "Uploader",
6467
6668
  slot: "root"
6468
6669
  })(({ theme }) => ({
6469
6670
  gap: theme.spacing(2)
6470
6671
  }));
6471
- var FileDropZone = styled29(Sheet_default, {
6672
+ var FileDropZone = styled30(Sheet_default, {
6472
6673
  name: "Uploader",
6473
6674
  slot: "dropZone",
6474
6675
  shouldForwardProp: (prop) => prop !== "error" && prop !== "disabled"
@@ -6489,7 +6690,7 @@ var FileDropZone = styled29(Sheet_default, {
6489
6690
  }
6490
6691
  })
6491
6692
  );
6492
- var UploaderIcon = styled29(MuiFileUploadIcon, {
6693
+ var UploaderIcon = styled30(MuiFileUploadIcon, {
6493
6694
  name: "Uploader",
6494
6695
  slot: "iconContainer",
6495
6696
  shouldForwardProp: (prop) => prop !== "error" && prop !== "disabled"
@@ -6503,7 +6704,7 @@ var UploaderIcon = styled29(MuiFileUploadIcon, {
6503
6704
  }
6504
6705
  })
6505
6706
  );
6506
- var Uploader = React46.memo(
6707
+ var Uploader = React47.memo(
6507
6708
  (props) => {
6508
6709
  const {
6509
6710
  accept,
@@ -6520,12 +6721,12 @@ var Uploader = React46.memo(
6520
6721
  error: errorProp,
6521
6722
  helperText: helperTextProp
6522
6723
  } = props;
6523
- const dropZoneRef = useRef11(null);
6524
- const inputRef = useRef11(null);
6525
- const [errorText, setErrorText] = useState15();
6526
- const [files, setFiles] = useState15([]);
6527
- const [uploaded, setUploaded] = useState15(props.uploaded || []);
6528
- const [previewState, setPreviewState] = useState15("idle");
6724
+ const dropZoneRef = useRef12(null);
6725
+ const inputRef = useRef12(null);
6726
+ const [errorText, setErrorText] = useState16();
6727
+ const [files, setFiles] = useState16([]);
6728
+ const [uploaded, setUploaded] = useState16(props.uploaded || []);
6729
+ const [previewState, setPreviewState] = useState16("idle");
6529
6730
  const accepts = useMemo15(() => accept.split(",").map((accept2) => accept2.trim()), [accept]);
6530
6731
  const parsedAccepts = useMemo15(
6531
6732
  () => accepts.flatMap((type) => {
@@ -6571,7 +6772,7 @@ var Uploader = React46.memo(
6571
6772
  () => !maxCount || maxCount && [...uploaded, ...files].length !== maxCount,
6572
6773
  [files, maxCount, uploaded]
6573
6774
  );
6574
- const addFiles = useCallback17(
6775
+ const addFiles = useCallback18(
6575
6776
  (uploads) => {
6576
6777
  try {
6577
6778
  const types = parsedAccepts.map((type) => type.replace(".", "")) || [];
@@ -6616,7 +6817,7 @@ var Uploader = React46.memo(
6616
6817
  },
6617
6818
  [files, uploaded, maxCount, parsedAccepts, maxFileSize, maxFileTotalSize, name, onChange]
6618
6819
  );
6619
- useEffect12(() => {
6820
+ useEffect13(() => {
6620
6821
  if (!dropZoneRef.current || disabled) {
6621
6822
  return;
6622
6823
  }
@@ -6654,7 +6855,7 @@ var Uploader = React46.memo(
6654
6855
  );
6655
6856
  return () => cleanup?.();
6656
6857
  }, [disabled, addFiles]);
6657
- useEffect12(() => {
6858
+ useEffect13(() => {
6658
6859
  if (inputRef.current && minCount) {
6659
6860
  if (files.length < minCount) {
6660
6861
  inputRef.current.setCustomValidity(`At least ${minCount} files are required.`);
@@ -6663,14 +6864,14 @@ var Uploader = React46.memo(
6663
6864
  }
6664
6865
  }
6665
6866
  }, [inputRef, files, minCount]);
6666
- const handleFileChanged = useCallback17(
6867
+ const handleFileChanged = useCallback18(
6667
6868
  (event) => {
6668
6869
  const files2 = Array.from(event.target.files || []);
6669
6870
  addFiles(files2);
6670
6871
  },
6671
6872
  [addFiles]
6672
6873
  );
6673
- const handleDeleteFile = useCallback17(
6874
+ const handleDeleteFile = useCallback18(
6674
6875
  (deletedFile) => {
6675
6876
  if (deletedFile instanceof File) {
6676
6877
  setFiles((current) => {
@@ -6690,10 +6891,10 @@ var Uploader = React46.memo(
6690
6891
  },
6691
6892
  [name, onChange, onDelete]
6692
6893
  );
6693
- const handleUploaderButtonClick = useCallback17(() => {
6894
+ const handleUploaderButtonClick = useCallback18(() => {
6694
6895
  inputRef.current?.click();
6695
6896
  }, []);
6696
- const uploader = /* @__PURE__ */ React46.createElement(
6897
+ const uploader = /* @__PURE__ */ React47.createElement(
6697
6898
  FileDropZone,
6698
6899
  {
6699
6900
  state: previewState,
@@ -6702,8 +6903,8 @@ var Uploader = React46.memo(
6702
6903
  ref: dropZoneRef,
6703
6904
  onClick: handleUploaderButtonClick
6704
6905
  },
6705
- /* @__PURE__ */ React46.createElement(Stack_default, { alignItems: "center", gap: 1 }, /* @__PURE__ */ React46.createElement(UploaderIcon, { state: previewState, error: !!(error || errorText), disabled })),
6706
- /* @__PURE__ */ React46.createElement(
6906
+ /* @__PURE__ */ React47.createElement(Stack_default, { alignItems: "center", gap: 1 }, /* @__PURE__ */ React47.createElement(UploaderIcon, { state: previewState, error: !!(error || errorText), disabled })),
6907
+ /* @__PURE__ */ React47.createElement(
6707
6908
  VisuallyHiddenInput,
6708
6909
  {
6709
6910
  disabled,
@@ -6726,7 +6927,7 @@ var Uploader = React46.memo(
6726
6927
  }
6727
6928
  )
6728
6929
  );
6729
- return /* @__PURE__ */ React46.createElement(UploaderRoot, null, showDropZone && /* @__PURE__ */ React46.createElement(FormControl_default, { size, error: !!(error || errorText), disabled, required: !!minCount }, label && /* @__PURE__ */ React46.createElement(FormLabel_default, null, label), uploader, /* @__PURE__ */ React46.createElement(FormHelperText_default, null, /* @__PURE__ */ React46.createElement(Stack_default, null, errorText && /* @__PURE__ */ React46.createElement("div", null, errorText), /* @__PURE__ */ React46.createElement("div", null, helperText)))), [...uploaded, ...files].length > 0 && /* @__PURE__ */ React46.createElement(Preview, { files, uploaded, onDelete: handleDeleteFile }));
6930
+ return /* @__PURE__ */ React47.createElement(UploaderRoot, null, showDropZone && /* @__PURE__ */ React47.createElement(FormControl_default, { size, error: !!(error || errorText), disabled, required: !!minCount }, label && /* @__PURE__ */ React47.createElement(FormLabel_default, null, label), uploader, /* @__PURE__ */ React47.createElement(FormHelperText_default, null, /* @__PURE__ */ React47.createElement(Stack_default, null, errorText && /* @__PURE__ */ React47.createElement("div", null, errorText), /* @__PURE__ */ React47.createElement("div", null, helperText)))), [...uploaded, ...files].length > 0 && /* @__PURE__ */ React47.createElement(Preview, { files, uploaded, onDelete: handleDeleteFile }));
6730
6931
  }
6731
6932
  );
6732
6933
  Uploader.displayName = "Uploader";
@@ -6807,6 +7008,7 @@ export {
6807
7008
  Radio,
6808
7009
  RadioGroup,
6809
7010
  RadioList,
7011
+ RadioTileGroup,
6810
7012
  Select,
6811
7013
  Sheet,
6812
7014
  Skeleton2 as Skeleton,
@@ -6881,17 +7083,17 @@ export {
6881
7083
  modalDialogClasses,
6882
7084
  modalOverflowClasses,
6883
7085
  optionClasses,
6884
- radioClasses,
7086
+ radioClasses2 as radioClasses,
6885
7087
  radioGroupClasses,
6886
7088
  selectClasses,
6887
- sheetClasses,
7089
+ sheetClasses2 as sheetClasses,
6888
7090
  skeletonClasses,
6889
7091
  sliderClasses,
6890
7092
  stackClasses,
6891
7093
  stepButtonClasses,
6892
7094
  stepClasses2 as stepClasses,
6893
7095
  stepperClasses,
6894
- styled30 as styled,
7096
+ styled31 as styled,
6895
7097
  switchClasses2 as switchClasses,
6896
7098
  tabListClasses,
6897
7099
  tabPanelClasses,