@ceed/ads 1.25.1-next.3 → 1.27.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 (62) hide show
  1. package/dist/chunks/rehype-accent-FZRUD7VI.js +39 -0
  2. package/dist/components/CurrencyInput/CurrencyInput.d.ts +1 -1
  3. package/dist/components/CurrencyInput/hooks/use-currency-setting.d.ts +2 -2
  4. package/dist/components/DataTable/components.d.ts +2 -1
  5. package/dist/components/DataTable/hooks.d.ts +1 -1
  6. package/dist/components/DataTable/styled.d.ts +3 -1
  7. package/dist/components/DataTable/types.d.ts +11 -0
  8. package/dist/components/DataTable/utils.d.ts +2 -2
  9. package/dist/components/ProfileMenu/ProfileMenu.d.ts +1 -1
  10. package/dist/components/data-display/Badge.md +71 -39
  11. package/dist/components/data-display/DataTable.md +177 -1
  12. package/dist/components/data-display/InfoSign.md +74 -98
  13. package/dist/components/data-display/Typography.md +363 -97
  14. package/dist/components/feedback/CircularProgress.md +257 -0
  15. package/dist/components/feedback/Dialog.md +76 -62
  16. package/dist/components/feedback/Modal.md +259 -44
  17. package/dist/components/feedback/Skeleton.md +280 -0
  18. package/dist/components/feedback/llms.txt +2 -0
  19. package/dist/components/inputs/Autocomplete.md +356 -107
  20. package/dist/components/inputs/ButtonGroup.md +115 -106
  21. package/dist/components/inputs/Calendar.md +98 -459
  22. package/dist/components/inputs/CurrencyInput.md +183 -5
  23. package/dist/components/inputs/DatePicker.md +108 -431
  24. package/dist/components/inputs/DateRangePicker.md +131 -492
  25. package/dist/components/inputs/FilterMenu.md +169 -19
  26. package/dist/components/inputs/FilterableCheckboxGroup.md +123 -23
  27. package/dist/components/inputs/FormControl.md +361 -0
  28. package/dist/components/inputs/IconButton.md +137 -88
  29. package/dist/components/inputs/Input.md +5 -0
  30. package/dist/components/inputs/MonthPicker.md +95 -422
  31. package/dist/components/inputs/MonthRangePicker.md +89 -466
  32. package/dist/components/inputs/PercentageInput.md +185 -16
  33. package/dist/components/inputs/RadioButton.md +163 -35
  34. package/dist/components/inputs/RadioList.md +241 -0
  35. package/dist/components/inputs/RadioTileGroup.md +150 -61
  36. package/dist/components/inputs/Select.md +222 -326
  37. package/dist/components/inputs/Slider.md +334 -0
  38. package/dist/components/inputs/Switch.md +136 -376
  39. package/dist/components/inputs/Textarea.md +213 -10
  40. package/dist/components/inputs/Uploader/Uploader.md +145 -66
  41. package/dist/components/inputs/llms.txt +3 -0
  42. package/dist/components/navigation/Breadcrumbs.md +80 -322
  43. package/dist/components/navigation/Dropdown.md +92 -221
  44. package/dist/components/navigation/IconMenuButton.md +40 -502
  45. package/dist/components/navigation/InsetDrawer.md +68 -738
  46. package/dist/components/navigation/Link.md +39 -298
  47. package/dist/components/navigation/Menu.md +92 -285
  48. package/dist/components/navigation/MenuButton.md +55 -448
  49. package/dist/components/navigation/Pagination.md +47 -338
  50. package/dist/components/navigation/ProfileMenu.md +45 -268
  51. package/dist/components/navigation/Stepper.md +160 -28
  52. package/dist/components/navigation/Tabs.md +57 -316
  53. package/dist/components/surfaces/Sheet.md +151 -334
  54. package/dist/guides/ThemeProvider.md +116 -0
  55. package/dist/guides/llms.txt +9 -0
  56. package/dist/index.browser.js +16 -18
  57. package/dist/index.browser.js.map +4 -4
  58. package/dist/index.cjs +381 -244
  59. package/dist/index.js +459 -378
  60. package/dist/llms.txt +8 -0
  61. package/framer/index.js +1 -166
  62. package/package.json +15 -16
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,
@@ -749,11 +693,24 @@ Button.displayName = "Button";
749
693
  var Button_default = Button;
750
694
 
751
695
  // src/components/Calendar/Calendar.tsx
752
- import React11, { Fragment, forwardRef as forwardRef4, useMemo as useMemo4 } from "react";
696
+ import React12, { Fragment, forwardRef as forwardRef4, useCallback as useCallback5, useEffect as useEffect3, useMemo as useMemo4, useRef as useRef3, useState as useState4 } from "react";
753
697
  import { styled as styled5 } from "@mui/joy";
754
698
  import ChevronLeftIcon from "@mui/icons-material/ChevronLeft";
755
699
  import ChevronRightIcon from "@mui/icons-material/ChevronRight";
756
- import { AnimatePresence, motion as motion12 } from "framer-motion";
700
+ import { AnimatePresence, motion as motion13 } from "framer-motion";
701
+
702
+ // src/components/Tooltip/Tooltip.tsx
703
+ import React10 from "react";
704
+ import { Tooltip as JoyTooltip } from "@mui/joy";
705
+ import { motion as motion12 } from "framer-motion";
706
+ var MotionTooltip = motion12(JoyTooltip);
707
+ var Tooltip = (props) => {
708
+ return /* @__PURE__ */ React10.createElement(MotionTooltip, { ...props });
709
+ };
710
+ Tooltip.displayName = "Tooltip";
711
+
712
+ // src/components/Tooltip/index.ts
713
+ var Tooltip_default = Tooltip;
757
714
 
758
715
  // src/components/Calendar/utils/index.ts
759
716
  var getCalendarDates = (date) => {
@@ -1112,6 +1069,12 @@ var useCalendar = (ownerState) => {
1112
1069
  };
1113
1070
 
1114
1071
  // src/components/Calendar/Calendar.tsx
1072
+ var MONTH_VIEW_HINT_MESSAGE = "Click the month title to view all months.";
1073
+ var MONTH_NAV_CLICK_WINDOW_MS = 1200;
1074
+ var MONTH_NAV_CLICK_THRESHOLD = 3;
1075
+ var MONTH_VIEW_HINT_DURATION_MS = 5e3;
1076
+ var MONTH_VIEW_HINT_COOLDOWN_MS = 3e4;
1077
+ var lastMonthViewAssistHintShownAt = 0;
1115
1078
  var CalendarRoot = styled5("div", {
1116
1079
  name: "Calendar",
1117
1080
  slot: "root"
@@ -1138,7 +1101,7 @@ var CalendarViewContainer = styled5("div", {
1138
1101
  overflow: "hidden",
1139
1102
  minHeight: calendarType === "datePicker" ? "250px" : "unset"
1140
1103
  }));
1141
- var CalendarViewTable = styled5(motion12.table, {
1104
+ var CalendarViewTable = styled5(motion13.table, {
1142
1105
  name: "Calendar",
1143
1106
  slot: "viewTable"
1144
1107
  })(({ theme }) => ({
@@ -1318,7 +1281,7 @@ var PickerDays = (props) => {
1318
1281
  const { getPickerDayProps, getDayCellProps } = useCalendar(ownerState);
1319
1282
  const calendarDates = useMemo4(() => getCalendarDates(ownerState.viewMonth), [ownerState.viewMonth]);
1320
1283
  const weekdayNames = useMemo4(() => getWeekdayNames(ownerState.locale || "default"), [ownerState.locale]);
1321
- return /* @__PURE__ */ React11.createElement(CalendarViewContainer, { calendarType: "datePicker" }, /* @__PURE__ */ React11.createElement(AnimatePresence, { initial: false, custom: ownerState.direction }, /* @__PURE__ */ React11.createElement(
1284
+ return /* @__PURE__ */ React12.createElement(CalendarViewContainer, { calendarType: "datePicker" }, /* @__PURE__ */ React12.createElement(AnimatePresence, { initial: false, custom: ownerState.direction }, /* @__PURE__ */ React12.createElement(
1322
1285
  CalendarViewTable,
1323
1286
  {
1324
1287
  key: `${ownerState.viewMonth.toString()}_${ownerState.direction}`,
@@ -1347,10 +1310,10 @@ var PickerDays = (props) => {
1347
1310
  }
1348
1311
  }
1349
1312
  },
1350
- /* @__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" }))))),
1351
- /* @__PURE__ */ React11.createElement(CalendarDayPickerContainer, null, calendarDates.map((weekDates, rowIndex) => /* @__PURE__ */ React11.createElement(Fragment, { key: `${ownerState.viewMonth}_${rowIndex}` }, /* @__PURE__ */ React11.createElement("tr", null, weekDates.map(
1352
- (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" }))
1353
- )), rowIndex < calendarDates.length - 1 && /* @__PURE__ */ React11.createElement("tr", { "aria-hidden": "true", "aria-description": "row-gap" }, /* @__PURE__ */ React11.createElement("td", { colSpan: 13, style: { height: 4 } })))))
1313
+ /* @__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" }))))),
1314
+ /* @__PURE__ */ React12.createElement(CalendarDayPickerContainer, null, calendarDates.map((weekDates, rowIndex) => /* @__PURE__ */ React12.createElement(Fragment, { key: `${ownerState.viewMonth}_${rowIndex}` }, /* @__PURE__ */ React12.createElement("tr", null, weekDates.map(
1315
+ (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" }))
1316
+ )), rowIndex < calendarDates.length - 1 && /* @__PURE__ */ React12.createElement("tr", { "aria-hidden": "true", "aria-description": "row-gap" }, /* @__PURE__ */ React12.createElement("td", { colSpan: 13, style: { height: 4 } })))))
1354
1317
  )));
1355
1318
  };
1356
1319
  var PickerMonths = (props) => {
@@ -1367,7 +1330,7 @@ var PickerMonths = (props) => {
1367
1330
  [[]]
1368
1331
  );
1369
1332
  const isMonthPicker = !ownerState.views?.find((view) => view === "day");
1370
- return /* @__PURE__ */ React11.createElement(CalendarViewContainer, { calendarType: isMonthPicker ? "monthPicker" : "datePicker" }, /* @__PURE__ */ React11.createElement(AnimatePresence, { initial: false, custom: ownerState.direction }, /* @__PURE__ */ React11.createElement(
1333
+ return /* @__PURE__ */ React12.createElement(CalendarViewContainer, { calendarType: isMonthPicker ? "monthPicker" : "datePicker" }, /* @__PURE__ */ React12.createElement(AnimatePresence, { initial: false, custom: ownerState.direction }, /* @__PURE__ */ React12.createElement(
1371
1334
  CalendarViewTable,
1372
1335
  {
1373
1336
  key: `${ownerState.viewMonth.getFullYear()}_${ownerState.direction}`,
@@ -1396,7 +1359,7 @@ var PickerMonths = (props) => {
1396
1359
  }
1397
1360
  }
1398
1361
  },
1399
- /* @__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 } })))))
1362
+ /* @__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 } })))))
1400
1363
  )));
1401
1364
  };
1402
1365
  var Calendar = forwardRef4((inProps, ref) => {
@@ -1418,17 +1381,96 @@ var Calendar = forwardRef4((inProps, ref) => {
1418
1381
  ...others
1419
1382
  } = props;
1420
1383
  const { calendarTitle, onPrev, onNext } = useCalendar(ownerState);
1421
- 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(
1422
- CalendarSwitchViewButton,
1384
+ const [isMonthViewAssistHintOpen, setIsMonthViewAssistHintOpen] = useState4(false);
1385
+ const monthNavClickTimestampsRef = useRef3([]);
1386
+ const monthViewAssistHintShownInSessionRef = useRef3(false);
1387
+ const monthViewAssistHintTimeoutRef = useRef3(null);
1388
+ const hasEndDate = Boolean(value?.[1]);
1389
+ const isRangeHintEligible = Boolean(rangeSelection && !hasEndDate);
1390
+ const isHintEligible = Boolean(view === "day" && (!rangeSelection || isRangeHintEligible));
1391
+ const monthViewHintMessage = MONTH_VIEW_HINT_MESSAGE;
1392
+ useEffect3(() => {
1393
+ if (!isHintEligible) {
1394
+ monthNavClickTimestampsRef.current = [];
1395
+ setIsMonthViewAssistHintOpen(false);
1396
+ }
1397
+ }, [isHintEligible]);
1398
+ useEffect3(() => {
1399
+ return () => {
1400
+ if (monthViewAssistHintTimeoutRef.current) {
1401
+ clearTimeout(monthViewAssistHintTimeoutRef.current);
1402
+ }
1403
+ };
1404
+ }, []);
1405
+ const closeMonthViewAssistHint = useCallback5(() => {
1406
+ if (monthViewAssistHintTimeoutRef.current) {
1407
+ clearTimeout(monthViewAssistHintTimeoutRef.current);
1408
+ monthViewAssistHintTimeoutRef.current = null;
1409
+ }
1410
+ setIsMonthViewAssistHintOpen(false);
1411
+ }, []);
1412
+ const showMonthViewAssistHint = useCallback5(() => {
1413
+ const now = Date.now();
1414
+ if (monthViewAssistHintShownInSessionRef.current) return;
1415
+ if (now - lastMonthViewAssistHintShownAt < MONTH_VIEW_HINT_COOLDOWN_MS) return;
1416
+ monthViewAssistHintShownInSessionRef.current = true;
1417
+ lastMonthViewAssistHintShownAt = now;
1418
+ setIsMonthViewAssistHintOpen(true);
1419
+ if (monthViewAssistHintTimeoutRef.current) {
1420
+ clearTimeout(monthViewAssistHintTimeoutRef.current);
1421
+ }
1422
+ monthViewAssistHintTimeoutRef.current = setTimeout(() => {
1423
+ setIsMonthViewAssistHintOpen(false);
1424
+ monthViewAssistHintTimeoutRef.current = null;
1425
+ }, MONTH_VIEW_HINT_DURATION_MS);
1426
+ }, []);
1427
+ const trackFastMonthNavigation = useCallback5(() => {
1428
+ if (!isHintEligible) return;
1429
+ const now = Date.now();
1430
+ monthNavClickTimestampsRef.current = [
1431
+ ...monthNavClickTimestampsRef.current.filter((timestamp) => now - timestamp <= MONTH_NAV_CLICK_WINDOW_MS),
1432
+ now
1433
+ ];
1434
+ if (monthNavClickTimestampsRef.current.length >= MONTH_NAV_CLICK_THRESHOLD) {
1435
+ showMonthViewAssistHint();
1436
+ }
1437
+ }, [isHintEligible, showMonthViewAssistHint]);
1438
+ const handlePrevClick = useCallback5(() => {
1439
+ onPrev();
1440
+ trackFastMonthNavigation();
1441
+ }, [onPrev, trackFastMonthNavigation]);
1442
+ const handleNextClick = useCallback5(() => {
1443
+ onNext();
1444
+ trackFastMonthNavigation();
1445
+ }, [onNext, trackFastMonthNavigation]);
1446
+ const handleSwitchViewClick = useCallback5(() => {
1447
+ closeMonthViewAssistHint();
1448
+ onViewChange?.();
1449
+ }, [closeMonthViewAssistHint, onViewChange]);
1450
+ 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(
1451
+ Tooltip_default,
1423
1452
  {
1424
- ownerState,
1425
- variant: "plain",
1426
- color: "neutral",
1427
- onClick: onViewChange,
1428
- "aria-label": "Switch Calendar View"
1453
+ title: monthViewHintMessage,
1454
+ arrow: true,
1455
+ open: isMonthViewAssistHintOpen,
1456
+ placement: "bottom",
1457
+ disableFocusListener: true,
1458
+ disableHoverListener: true,
1459
+ disableTouchListener: true,
1460
+ variant: "solid"
1429
1461
  },
1430
- calendarTitle
1431
- ), /* @__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 }));
1462
+ /* @__PURE__ */ React12.createElement(
1463
+ CalendarSwitchViewButton,
1464
+ {
1465
+ ownerState,
1466
+ variant: "plain",
1467
+ color: "neutral",
1468
+ onClick: handleSwitchViewClick,
1469
+ "aria-label": "Switch Calendar View"
1470
+ },
1471
+ calendarTitle
1472
+ )
1473
+ ), /* @__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 }));
1432
1474
  });
1433
1475
  Calendar.displayName = "Calendar";
1434
1476
 
@@ -1443,30 +1485,30 @@ import {
1443
1485
  CardActions as JoyCardActions,
1444
1486
  CardOverflow as JoyCardOverflow
1445
1487
  } from "@mui/joy";
1446
- import { motion as motion13 } from "framer-motion";
1447
- var MotionCard = motion13(JoyCard);
1488
+ import { motion as motion14 } from "framer-motion";
1489
+ var MotionCard = motion14(JoyCard);
1448
1490
  var Card = MotionCard;
1449
1491
  Card.displayName = "Card";
1450
- var MotionCardContent = motion13(JoyCardContent);
1492
+ var MotionCardContent = motion14(JoyCardContent);
1451
1493
  var CardContent = MotionCardContent;
1452
1494
  CardContent.displayName = "CardContent";
1453
- var MotionCardCover = motion13(JoyCardCover);
1495
+ var MotionCardCover = motion14(JoyCardCover);
1454
1496
  var CardCover = MotionCardCover;
1455
1497
  CardCover.displayName = "CardCover";
1456
- var MotionCardActions = motion13(JoyCardActions);
1498
+ var MotionCardActions = motion14(JoyCardActions);
1457
1499
  var CardActions = MotionCardActions;
1458
1500
  CardActions.displayName = "CardActions";
1459
- var MotionCardOverflow = motion13(JoyCardOverflow);
1501
+ var MotionCardOverflow = motion14(JoyCardOverflow);
1460
1502
  var CardOverflow = MotionCardOverflow;
1461
1503
  CardOverflow.displayName = "CardOverflow";
1462
1504
 
1463
1505
  // src/components/Checkbox/Checkbox.tsx
1464
- import React12 from "react";
1506
+ import React13 from "react";
1465
1507
  import { Checkbox as JoyCheckbox } from "@mui/joy";
1466
- import { motion as motion14 } from "framer-motion";
1467
- var MotionCheckbox = motion14(JoyCheckbox);
1508
+ import { motion as motion15 } from "framer-motion";
1509
+ var MotionCheckbox = motion15(JoyCheckbox);
1468
1510
  var Checkbox = (props) => {
1469
- return /* @__PURE__ */ React12.createElement(MotionCheckbox, { ...props });
1511
+ return /* @__PURE__ */ React13.createElement(MotionCheckbox, { ...props });
1470
1512
  };
1471
1513
  Checkbox.displayName = "Checkbox";
1472
1514
 
@@ -1475,7 +1517,7 @@ var Checkbox_default = Checkbox;
1475
1517
 
1476
1518
  // src/components/Container/Container.tsx
1477
1519
  import { styled as styled6 } from "@mui/joy";
1478
- import React13, { forwardRef as forwardRef5 } from "react";
1520
+ import React14, { forwardRef as forwardRef5 } from "react";
1479
1521
  var ContainerRoot = styled6("div", {
1480
1522
  name: "Container",
1481
1523
  slot: "root",
@@ -1502,24 +1544,23 @@ var ContainerRoot = styled6("div", {
1502
1544
  } : null
1503
1545
  ]);
1504
1546
  var Container = forwardRef5(function Container2(props, ref) {
1505
- return /* @__PURE__ */ React13.createElement(ContainerRoot, { ref, ...props });
1547
+ return /* @__PURE__ */ React14.createElement(ContainerRoot, { ref, ...props });
1506
1548
  });
1507
1549
  Container.displayName = "Container";
1508
1550
 
1509
1551
  // src/components/CurrencyInput/CurrencyInput.tsx
1510
- import React15, { useCallback as useCallback6, useMemo as useMemo5, useState as useState5 } from "react";
1511
- import { IntlMessageFormat as IntlMessageFormat2 } from "intl-messageformat";
1552
+ import React16, { useCallback as useCallback7, useMemo as useMemo5, useState as useState6 } from "react";
1512
1553
  import { NumericFormat } from "react-number-format";
1513
1554
 
1514
1555
  // src/components/Input/Input.tsx
1515
- import React14, { useCallback as useCallback5, useState as useState4 } from "react";
1556
+ import React15, { useCallback as useCallback6, useState as useState5 } from "react";
1516
1557
  import { Input as JoyInput } from "@mui/joy";
1517
- import { motion as motion15 } from "framer-motion";
1558
+ import { motion as motion16 } from "framer-motion";
1518
1559
  import ClearIcon from "@mui/icons-material/Close";
1519
1560
  import VisibilityIcon from "@mui/icons-material/Visibility";
1520
1561
  import VisibilityOffIcon from "@mui/icons-material/VisibilityOff";
1521
- var MotionInput = motion15(JoyInput);
1522
- var Input = React14.forwardRef((props, ref) => {
1562
+ var MotionInput = motion16(JoyInput);
1563
+ var Input = React15.forwardRef((props, ref) => {
1523
1564
  const {
1524
1565
  label,
1525
1566
  helperText,
@@ -1542,11 +1583,11 @@ var Input = React14.forwardRef((props, ref) => {
1542
1583
  if (type === "password" && innerProps.endDecorator) {
1543
1584
  console.warn('Input: endDecorator is not supported when type="password"');
1544
1585
  }
1545
- const [passwordVisible, setPasswordVisible] = useState4(false);
1586
+ const [passwordVisible, setPasswordVisible] = useState5(false);
1546
1587
  const [value, setValue] = useControlledState(
1547
1588
  props.value,
1548
1589
  props.defaultValue,
1549
- useCallback5(
1590
+ useCallback6(
1550
1591
  (value2) => {
1551
1592
  onChange?.({
1552
1593
  /**
@@ -1572,7 +1613,7 @@ var Input = React14.forwardRef((props, ref) => {
1572
1613
  const actualType = type === "password" && passwordVisible ? "text" : type;
1573
1614
  const isPasswordType = type === "password";
1574
1615
  const showPasswordToggle = isPasswordType && !disableTogglePasswordButton;
1575
- const input = /* @__PURE__ */ React14.createElement(
1616
+ const input = /* @__PURE__ */ React15.createElement(
1576
1617
  MotionInput,
1577
1618
  {
1578
1619
  value,
@@ -1587,7 +1628,7 @@ var Input = React14.forwardRef((props, ref) => {
1587
1628
  ...innerProps.slotProps
1588
1629
  },
1589
1630
  ...innerProps,
1590
- endDecorator: isPasswordType ? showPasswordToggle ? /* @__PURE__ */ React14.createElement(Stack_default, { gap: 1, direction: "row" }, /* @__PURE__ */ React14.createElement(
1631
+ endDecorator: isPasswordType ? showPasswordToggle ? /* @__PURE__ */ React15.createElement(Stack_default, { gap: 1, direction: "row" }, /* @__PURE__ */ React15.createElement(
1591
1632
  IconButton_default,
1592
1633
  {
1593
1634
  onMouseDown: (e) => e.preventDefault(),
@@ -1595,19 +1636,19 @@ var Input = React14.forwardRef((props, ref) => {
1595
1636
  disabled,
1596
1637
  "aria-label": passwordVisible ? "Hide password" : "Show password"
1597
1638
  },
1598
- passwordVisible ? /* @__PURE__ */ React14.createElement(VisibilityOffIcon, null) : /* @__PURE__ */ React14.createElement(VisibilityIcon, null)
1599
- )) : null : enableClearable ? /* @__PURE__ */ React14.createElement(Stack_default, { gap: 1, direction: "row" }, innerProps.endDecorator, value && /* @__PURE__ */ React14.createElement(
1639
+ passwordVisible ? /* @__PURE__ */ React15.createElement(VisibilityOffIcon, null) : /* @__PURE__ */ React15.createElement(VisibilityIcon, null)
1640
+ )) : null : enableClearable ? /* @__PURE__ */ React15.createElement(Stack_default, { gap: 1, direction: "row" }, innerProps.endDecorator, value && /* @__PURE__ */ React15.createElement(
1600
1641
  IconButton_default,
1601
1642
  {
1602
1643
  onMouseDown: (e) => e.preventDefault(),
1603
1644
  onClick: handleClear,
1604
1645
  "aria-label": "Clear"
1605
1646
  },
1606
- /* @__PURE__ */ React14.createElement(ClearIcon, null)
1647
+ /* @__PURE__ */ React15.createElement(ClearIcon, null)
1607
1648
  )) : innerProps.endDecorator
1608
1649
  }
1609
1650
  );
1610
- return /* @__PURE__ */ React14.createElement(
1651
+ return /* @__PURE__ */ React15.createElement(
1611
1652
  FormControl_default,
1612
1653
  {
1613
1654
  required,
@@ -1618,9 +1659,9 @@ var Input = React14.forwardRef((props, ref) => {
1618
1659
  sx,
1619
1660
  className
1620
1661
  },
1621
- label && /* @__PURE__ */ React14.createElement(FormLabel_default, null, label),
1662
+ label && /* @__PURE__ */ React15.createElement(FormLabel_default, null, label),
1622
1663
  input,
1623
- helperText && /* @__PURE__ */ React14.createElement(FormHelperText_default, null, helperText)
1664
+ helperText && /* @__PURE__ */ React15.createElement(FormHelperText_default, null, helperText)
1624
1665
  );
1625
1666
  });
1626
1667
  Input.displayName = "Input";
@@ -1632,7 +1673,6 @@ var Input_default = Input;
1632
1673
  import { styled as styled7, useThemeProps as useThemeProps3 } from "@mui/joy";
1633
1674
 
1634
1675
  // src/components/CurrencyInput/hooks/use-currency-setting.ts
1635
- import IntlMessageFormat from "intl-messageformat";
1636
1676
  var CURRENCY_DECIMAL_MAP = {
1637
1677
  AED: 2,
1638
1678
  ALL: 2,
@@ -1777,9 +1817,10 @@ var CURRENCY_DECIMAL_MAP = {
1777
1817
  };
1778
1818
  var useCurrencySetting = (props) => {
1779
1819
  const { currency = "USD", placeholder } = props;
1780
- const [symbol, thousandSeparator, decimalSeparator, ...rest] = new IntlMessageFormat(
1781
- `{amount, number, ::currency/${currency} unit-width-narrow}`
1782
- ).format({ amount: 1e3 }).toString().replace(/\d/g, "").split("");
1820
+ const parts = new Intl.NumberFormat("en-US", { style: "currency", currency }).formatToParts(1000.01);
1821
+ const symbol = parts.find((p) => p.type === "currency")?.value ?? "$";
1822
+ const thousandSeparator = parts.find((p) => p.type === "group")?.value ?? ",";
1823
+ const decimalSeparator = parts.find((p) => p.type === "decimal")?.value;
1783
1824
  const decimalScale = CURRENCY_DECIMAL_MAP[currency];
1784
1825
  return {
1785
1826
  symbol: `${symbol} `,
@@ -1792,9 +1833,9 @@ var useCurrencySetting = (props) => {
1792
1833
  };
1793
1834
 
1794
1835
  // src/components/CurrencyInput/CurrencyInput.tsx
1795
- var TextMaskAdapter = React15.forwardRef(function TextMaskAdapter2(props, ref) {
1836
+ var TextMaskAdapter = React16.forwardRef(function TextMaskAdapter2(props, ref) {
1796
1837
  const { onChange, ...innerProps } = props;
1797
- return /* @__PURE__ */ React15.createElement(
1838
+ return /* @__PURE__ */ React16.createElement(
1798
1839
  NumericFormat,
1799
1840
  {
1800
1841
  ...innerProps,
@@ -1814,7 +1855,7 @@ var CurrencyInputRoot = styled7(Input_default, {
1814
1855
  slot: "root",
1815
1856
  overridesResolver: (props, styles) => styles.root
1816
1857
  })({});
1817
- var CurrencyInput = React15.forwardRef(function CurrencyInput2(inProps, ref) {
1858
+ var CurrencyInput = React16.forwardRef(function CurrencyInput2(inProps, ref) {
1818
1859
  const props = useThemeProps3({ props: inProps, name: "CurrencyInput" });
1819
1860
  const {
1820
1861
  currency = "USD",
@@ -1835,7 +1876,7 @@ var CurrencyInput = React15.forwardRef(function CurrencyInput2(inProps, ref) {
1835
1876
  const [_value, setValue] = useControlledState(
1836
1877
  props.value,
1837
1878
  props.defaultValue,
1838
- useCallback6((value2) => onChange?.({ target: { name, value: value2 } }), [onChange, name])
1879
+ useCallback7((value2) => onChange?.({ target: { name, value: value2 } }), [onChange, name])
1839
1880
  );
1840
1881
  const value = useMemo5(() => {
1841
1882
  if (_value && useMinorUnit) {
@@ -1849,14 +1890,14 @@ var CurrencyInput = React15.forwardRef(function CurrencyInput2(inProps, ref) {
1849
1890
  }
1850
1891
  return props.max;
1851
1892
  }, [props.max, useMinorUnit, decimalScale]);
1852
- const [isOverLimit, setIsOverLimit] = useState5(!!max && !!value && value > max);
1853
- const handleChange = useCallback6(
1893
+ const [isOverLimit, setIsOverLimit] = useState6(!!max && !!value && value > max);
1894
+ const handleChange = useCallback7(
1854
1895
  (event) => {
1855
1896
  if (event.target.value === "") {
1856
1897
  setValue(void 0);
1857
1898
  return;
1858
1899
  }
1859
- const amount = useMinorUnit ? Number(event.target.value?.replace(decimalSeparator, "")) : Number(event.target.value);
1900
+ const amount = useMinorUnit ? Number(decimalSeparator ? event.target.value?.replace(decimalSeparator, "") : event.target.value) : Number(event.target.value);
1860
1901
  if (!!max && Number(event.target.value) > max) {
1861
1902
  setIsOverLimit(true);
1862
1903
  } else {
@@ -1866,7 +1907,7 @@ var CurrencyInput = React15.forwardRef(function CurrencyInput2(inProps, ref) {
1866
1907
  },
1867
1908
  [decimalSeparator, max, useMinorUnit, setValue]
1868
1909
  );
1869
- return /* @__PURE__ */ React15.createElement(
1910
+ return /* @__PURE__ */ React16.createElement(
1870
1911
  CurrencyInputRoot,
1871
1912
  {
1872
1913
  ...innerProps,
@@ -1879,9 +1920,7 @@ var CurrencyInput = React15.forwardRef(function CurrencyInput2(inProps, ref) {
1879
1920
  required,
1880
1921
  color: error || isOverLimit ? "danger" : props.color,
1881
1922
  label,
1882
- helperText: isOverLimit ? new IntlMessageFormat2(`limit: {amount, number, ::currency/${currency} unit-width-narrow}`).format({
1883
- amount: max
1884
- }) : helperText,
1923
+ helperText: isOverLimit ? `limit: ${new Intl.NumberFormat("en-US", { style: "currency", currency }).format(max)}` : helperText,
1885
1924
  slotProps: {
1886
1925
  input: {
1887
1926
  component: TextMaskAdapter,
@@ -1906,9 +1945,9 @@ var CurrencyInput_default = CurrencyInput;
1906
1945
 
1907
1946
  // src/components/DataTable/DataTable.tsx
1908
1947
  import React25, {
1909
- useCallback as useCallback11,
1948
+ useCallback as useCallback12,
1910
1949
  useMemo as useMemo10,
1911
- useRef as useRef6,
1950
+ useRef as useRef7,
1912
1951
  useId,
1913
1952
  forwardRef as forwardRef7,
1914
1953
  useImperativeHandle as useImperativeHandle2,
@@ -1961,14 +2000,15 @@ function reorderColumnsByGroupingModel(columns, columnGroupingModel) {
1961
2000
  }
1962
2001
  return reorderedColumns;
1963
2002
  }
1964
- function flattenColumnGroups(items, groupPath = [], columnIndex = { current: 0 }) {
2003
+ function flattenColumnGroups(items, groupPath = [], columnIndex = { current: 0 }, visibleFields) {
1965
2004
  const result = [];
1966
2005
  for (const item of items) {
1967
2006
  if ("groupId" in item) {
1968
2007
  const newPath = [...groupPath, item.groupId];
1969
2008
  const children = Array.isArray(item.children) ? item.children : [item.children];
1970
- result.push(...flattenColumnGroups(children, newPath, columnIndex));
2009
+ result.push(...flattenColumnGroups(children, newPath, columnIndex, visibleFields));
1971
2010
  } else {
2011
+ if (visibleFields && !visibleFields.has(item.field)) continue;
1972
2012
  result.push({
1973
2013
  ...item,
1974
2014
  groupPath,
@@ -1978,9 +2018,9 @@ function flattenColumnGroups(items, groupPath = [], columnIndex = { current: 0 }
1978
2018
  }
1979
2019
  return result;
1980
2020
  }
1981
- function calculateColumnGroups(columnGroupingModel, columns) {
2021
+ function calculateColumnGroups(columnGroupingModel, columns, visibleFields) {
1982
2022
  const fieldsInGroupingModel = extractFieldsFromGroupingModel(columnGroupingModel);
1983
- const flattenedColumns = flattenColumnGroups(columnGroupingModel);
2023
+ const flattenedColumns = flattenColumnGroups(columnGroupingModel, [], { current: 0 }, visibleFields);
1984
2024
  const columnIndexMap = new Map(flattenedColumns.map((col) => [col.field, col.columnIndex]));
1985
2025
  const processedGroups = /* @__PURE__ */ new Map();
1986
2026
  const groupsByLevel = [];
@@ -2028,7 +2068,9 @@ function calculateColumnGroups(columnGroupingModel, columns) {
2028
2068
  groupsByLevel.forEach((level) => {
2029
2069
  level.sort((a, b) => a.startIndex - b.startIndex);
2030
2070
  });
2031
- return { groups: groupsByLevel, maxLevel, fieldsInGroupingModel };
2071
+ const filteredGroupsByLevel = groupsByLevel.map((level) => level.filter((g) => g.colspan > 0)).filter((level) => level.length > 0);
2072
+ const correctedMaxLevel = filteredGroupsByLevel.length > 0 ? filteredGroupsByLevel.length - 1 : -1;
2073
+ return { groups: filteredGroupsByLevel, maxLevel: correctedMaxLevel, fieldsInGroupingModel };
2032
2074
  }
2033
2075
  function getTextAlign(props) {
2034
2076
  return !props.editMode && ["number", "date", "currency"].includes(props.type || "") ? "end" : "start";
@@ -2036,18 +2078,28 @@ function getTextAlign(props) {
2036
2078
  var numberFormatter = (value) => "Intl" in window ? new Intl.NumberFormat().format(value) : value;
2037
2079
 
2038
2080
  // src/components/DataTable/styled.tsx
2039
- import React16 from "react";
2081
+ import React17 from "react";
2040
2082
  import { styled as styled8, LinearProgress, buttonClasses, iconButtonClasses } from "@mui/joy";
2041
- import { motion as motion16 } from "framer-motion";
2083
+ import { motion as motion17 } from "framer-motion";
2042
2084
  import SortIcon from "@mui/icons-material/ArrowUpwardRounded";
2043
2085
  var EllipsisDiv = styled8("div", {
2044
2086
  name: "DataTable",
2045
- slot: "textEllipsis"
2046
- })({
2047
- overflow: "hidden",
2048
- textOverflow: "ellipsis",
2049
- whiteSpace: "nowrap"
2050
- });
2087
+ slot: "textEllipsis",
2088
+ shouldForwardProp: (prop) => prop !== "lineClamp"
2089
+ })(
2090
+ ({ lineClamp }) => lineClamp && lineClamp > 1 ? {
2091
+ overflow: "hidden",
2092
+ display: "-webkit-box !important",
2093
+ WebkitBoxOrient: "vertical",
2094
+ WebkitLineClamp: lineClamp,
2095
+ whiteSpace: "normal",
2096
+ overflowWrap: "anywhere"
2097
+ } : {
2098
+ overflow: "hidden",
2099
+ textOverflow: "ellipsis",
2100
+ whiteSpace: "nowrap"
2101
+ }
2102
+ );
2051
2103
  var OverlayWrapper = styled8("tr", {
2052
2104
  name: "DataTable",
2053
2105
  slot: "overlayWrapper"
@@ -2112,7 +2164,7 @@ var Asterisk = styled8("span", {
2112
2164
  color: "var(--ceed-palette-danger-500)",
2113
2165
  marginLeft: theme.spacing(0.5)
2114
2166
  }));
2115
- var StyledTh = styled8(motion16.th)(({ theme }) => ({
2167
+ var StyledTh = styled8(motion17.th)(({ theme }) => ({
2116
2168
  boxShadow: "1px 0 var(--TableCell-borderColor)"
2117
2169
  }));
2118
2170
  var StyledTd = styled8("td")(({ theme }) => ({
@@ -2131,9 +2183,9 @@ var StyledTd = styled8("td")(({ theme }) => ({
2131
2183
  }
2132
2184
  }
2133
2185
  }));
2134
- var MotionSortIcon = motion16(SortIcon);
2135
- var DefaultLoadingOverlay = () => /* @__PURE__ */ React16.createElement(LinearProgress, { value: 8, variant: "plain" });
2136
- var Resizer = (ref, targetRef = ref) => /* @__PURE__ */ React16.createElement(
2186
+ var MotionSortIcon = motion17(SortIcon);
2187
+ var DefaultLoadingOverlay = () => /* @__PURE__ */ React17.createElement(LinearProgress, { value: 8, variant: "plain" });
2188
+ var Resizer = (ref, targetRef = ref) => /* @__PURE__ */ React17.createElement(
2137
2189
  Box_default,
2138
2190
  {
2139
2191
  sx: {
@@ -2166,12 +2218,12 @@ var Resizer = (ref, targetRef = ref) => /* @__PURE__ */ React16.createElement(
2166
2218
 
2167
2219
  // src/components/DataTable/components.tsx
2168
2220
  import React22, {
2169
- useRef as useRef4,
2170
- useState as useState7,
2221
+ useRef as useRef5,
2222
+ useState as useState8,
2171
2223
  useLayoutEffect,
2172
2224
  useMemo as useMemo8,
2173
- useCallback as useCallback8,
2174
- useEffect as useEffect4,
2225
+ useCallback as useCallback9,
2226
+ useEffect as useEffect5,
2175
2227
  memo,
2176
2228
  createElement
2177
2229
  } from "react";
@@ -2179,7 +2231,7 @@ import { styled as styled12, useTheme } from "@mui/joy";
2179
2231
  import { AnimatePresence as AnimatePresence2 } from "framer-motion";
2180
2232
 
2181
2233
  // src/components/DatePicker/DatePicker.tsx
2182
- import React17, { forwardRef as forwardRef6, useCallback as useCallback7, useEffect as useEffect3, useImperativeHandle, useRef as useRef3, useState as useState6 } from "react";
2234
+ import React18, { forwardRef as forwardRef6, useCallback as useCallback8, useEffect as useEffect4, useImperativeHandle, useRef as useRef4, useState as useState7 } from "react";
2183
2235
  import { IMaskInput, IMask } from "react-imask";
2184
2236
  import CalendarTodayIcon from "@mui/icons-material/CalendarToday";
2185
2237
  import { styled as styled10, useThemeProps as useThemeProps4 } from "@mui/joy";
@@ -2194,8 +2246,8 @@ var Sheet_default = Sheet;
2194
2246
 
2195
2247
  // src/components/DialogActions/DialogActions.tsx
2196
2248
  import { DialogActions as JoyDialogActions, styled as styled9 } from "@mui/joy";
2197
- import { motion as motion17 } from "framer-motion";
2198
- var MotionDialogActions = motion17(JoyDialogActions);
2249
+ import { motion as motion18 } from "framer-motion";
2250
+ var MotionDialogActions = motion18(JoyDialogActions);
2199
2251
  var StyledDialogActions = styled9(MotionDialogActions)(({ theme }) => ({
2200
2252
  padding: theme.spacing(2),
2201
2253
  gap: theme.spacing(2),
@@ -2291,9 +2343,9 @@ function parseDate(dateString, format) {
2291
2343
  var formatToPattern = (format) => {
2292
2344
  return format.replace(/YYYY/g, "Y").replace(/MM/g, "M").replace(/DD/g, "D").replace(/[^YMD\s]/g, (match) => `${match}\``);
2293
2345
  };
2294
- var TextMaskAdapter3 = React17.forwardRef(function TextMaskAdapter4(props, ref) {
2346
+ var TextMaskAdapter3 = React18.forwardRef(function TextMaskAdapter4(props, ref) {
2295
2347
  const { onChange, format, ...other } = props;
2296
- return /* @__PURE__ */ React17.createElement(
2348
+ return /* @__PURE__ */ React18.createElement(
2297
2349
  IMaskInput,
2298
2350
  {
2299
2351
  ...other,
@@ -2353,24 +2405,24 @@ var DatePicker = forwardRef6((inProps, ref) => {
2353
2405
  shouldDisableDate,
2354
2406
  ...innerProps
2355
2407
  } = props;
2356
- const innerRef = useRef3(null);
2357
- const buttonRef = useRef3(null);
2408
+ const innerRef = useRef4(null);
2409
+ const buttonRef = useRef4(null);
2358
2410
  const [value, setValue] = useControlledState(
2359
2411
  props.value,
2360
2412
  props.defaultValue || "",
2361
- useCallback7((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
2413
+ useCallback8((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
2362
2414
  );
2363
- const [displayValue, setDisplayValue] = useState6(
2415
+ const [displayValue, setDisplayValue] = useState7(
2364
2416
  () => value ? formatValueString(parseDate(value, format), displayFormat) : ""
2365
2417
  );
2366
- const [anchorEl, setAnchorEl] = useState6(null);
2418
+ const [anchorEl, setAnchorEl] = useState7(null);
2367
2419
  const open = Boolean(anchorEl);
2368
- useEffect3(() => {
2420
+ useEffect4(() => {
2369
2421
  if (!anchorEl) {
2370
2422
  innerRef.current?.blur();
2371
2423
  }
2372
2424
  }, [anchorEl, innerRef]);
2373
- useEffect3(() => {
2425
+ useEffect4(() => {
2374
2426
  if (value === "") {
2375
2427
  setDisplayValue("");
2376
2428
  return;
@@ -2381,7 +2433,7 @@ var DatePicker = forwardRef6((inProps, ref) => {
2381
2433
  }
2382
2434
  }, [displayFormat, displayValue, format, value]);
2383
2435
  useImperativeHandle(ref, () => innerRef.current, [innerRef]);
2384
- const handleChange = useCallback7(
2436
+ const handleChange = useCallback8(
2385
2437
  (event) => {
2386
2438
  const value2 = event.target.value;
2387
2439
  setDisplayValue(value2 ? formatValueString(parseDate(value2, format), displayFormat) : value2);
@@ -2389,7 +2441,7 @@ var DatePicker = forwardRef6((inProps, ref) => {
2389
2441
  },
2390
2442
  [displayFormat, format, setValue]
2391
2443
  );
2392
- const handleDisplayInputChange = useCallback7(
2444
+ const handleDisplayInputChange = useCallback8(
2393
2445
  (event) => {
2394
2446
  if (event.target.value === "") {
2395
2447
  handleChange({
@@ -2414,7 +2466,7 @@ var DatePicker = forwardRef6((inProps, ref) => {
2414
2466
  },
2415
2467
  [displayFormat, format, handleChange, props.name]
2416
2468
  );
2417
- const handleCalendarToggle = useCallback7(
2469
+ const handleCalendarToggle = useCallback8(
2418
2470
  (event) => {
2419
2471
  setAnchorEl(anchorEl ? null : event.currentTarget);
2420
2472
  setTimeout(() => {
@@ -2423,7 +2475,7 @@ var DatePicker = forwardRef6((inProps, ref) => {
2423
2475
  },
2424
2476
  [anchorEl, setAnchorEl, innerRef]
2425
2477
  );
2426
- const handleInputMouseDown = useCallback7(
2478
+ const handleInputMouseDown = useCallback8(
2427
2479
  (event) => {
2428
2480
  if (inputReadOnly) {
2429
2481
  event.preventDefault();
@@ -2432,7 +2484,7 @@ var DatePicker = forwardRef6((inProps, ref) => {
2432
2484
  },
2433
2485
  [inputReadOnly, buttonRef]
2434
2486
  );
2435
- return /* @__PURE__ */ React17.createElement(DatePickerRoot, null, /* @__PURE__ */ React17.createElement(FocusTrap, { open: true }, /* @__PURE__ */ React17.createElement(React17.Fragment, null, /* @__PURE__ */ React17.createElement(
2487
+ return /* @__PURE__ */ React18.createElement(DatePickerRoot, null, /* @__PURE__ */ React18.createElement(FocusTrap, { open: true }, /* @__PURE__ */ React18.createElement(React18.Fragment, null, /* @__PURE__ */ React18.createElement(
2436
2488
  Input_default,
2437
2489
  {
2438
2490
  ...innerProps,
@@ -2460,7 +2512,7 @@ var DatePicker = forwardRef6((inProps, ref) => {
2460
2512
  },
2461
2513
  className,
2462
2514
  sx,
2463
- endDecorator: /* @__PURE__ */ React17.createElement(
2515
+ endDecorator: /* @__PURE__ */ React18.createElement(
2464
2516
  CalendarButton,
2465
2517
  {
2466
2518
  ref: buttonRef,
@@ -2472,13 +2524,13 @@ var DatePicker = forwardRef6((inProps, ref) => {
2472
2524
  "aria-expanded": open,
2473
2525
  disabled
2474
2526
  },
2475
- /* @__PURE__ */ React17.createElement(CalendarTodayIcon, null)
2527
+ /* @__PURE__ */ React18.createElement(CalendarTodayIcon, null)
2476
2528
  ),
2477
2529
  label,
2478
2530
  helperText,
2479
2531
  readOnly: readOnly || inputReadOnly
2480
2532
  }
2481
- ), open && /* @__PURE__ */ React17.createElement(ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ React17.createElement(
2533
+ ), open && /* @__PURE__ */ React18.createElement(ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ React18.createElement(
2482
2534
  StyledPopper,
2483
2535
  {
2484
2536
  id: "date-picker-popper",
@@ -2497,7 +2549,7 @@ var DatePicker = forwardRef6((inProps, ref) => {
2497
2549
  "aria-label": "Calendar Tooltip",
2498
2550
  "aria-expanded": open
2499
2551
  },
2500
- /* @__PURE__ */ React17.createElement(CalendarSheet, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ React17.createElement(
2552
+ /* @__PURE__ */ React18.createElement(CalendarSheet, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ React18.createElement(
2501
2553
  Calendar_default,
2502
2554
  {
2503
2555
  value: value && !Number.isNaN(parseDate(value, format).getTime()) ? [parseDate(value, format), void 0] : void 0,
@@ -2516,14 +2568,14 @@ var DatePicker = forwardRef6((inProps, ref) => {
2516
2568
  disablePast,
2517
2569
  shouldDisableDate: shouldDisableDate ? (date) => shouldDisableDate(formatValueString(date, format)) : void 0
2518
2570
  }
2519
- ), !hideClearButton && /* @__PURE__ */ React17.createElement(
2571
+ ), !hideClearButton && /* @__PURE__ */ React18.createElement(
2520
2572
  DialogActions_default,
2521
2573
  {
2522
2574
  sx: {
2523
2575
  p: 1
2524
2576
  }
2525
2577
  },
2526
- /* @__PURE__ */ React17.createElement(
2578
+ /* @__PURE__ */ React18.createElement(
2527
2579
  Button_default,
2528
2580
  {
2529
2581
  size,
@@ -2549,10 +2601,10 @@ var DatePicker = forwardRef6((inProps, ref) => {
2549
2601
  var DatePicker_default = DatePicker;
2550
2602
 
2551
2603
  // src/components/Textarea/Textarea.tsx
2552
- import React18 from "react";
2604
+ import React19 from "react";
2553
2605
  import { Textarea as JoyTextarea } from "@mui/joy";
2554
- import { motion as motion18 } from "framer-motion";
2555
- var MotionTextarea = motion18(JoyTextarea);
2606
+ import { motion as motion19 } from "framer-motion";
2607
+ var MotionTextarea = motion19(JoyTextarea);
2556
2608
  var Textarea = (props) => {
2557
2609
  const {
2558
2610
  label,
@@ -2569,7 +2621,7 @@ var Textarea = (props) => {
2569
2621
  className,
2570
2622
  ...innerProps
2571
2623
  } = props;
2572
- const textarea = /* @__PURE__ */ React18.createElement(
2624
+ const textarea = /* @__PURE__ */ React19.createElement(
2573
2625
  MotionTextarea,
2574
2626
  {
2575
2627
  required,
@@ -2581,7 +2633,7 @@ var Textarea = (props) => {
2581
2633
  ...innerProps
2582
2634
  }
2583
2635
  );
2584
- return /* @__PURE__ */ React18.createElement(
2636
+ return /* @__PURE__ */ React19.createElement(
2585
2637
  FormControl_default,
2586
2638
  {
2587
2639
  required,
@@ -2592,9 +2644,9 @@ var Textarea = (props) => {
2592
2644
  sx,
2593
2645
  className
2594
2646
  },
2595
- label && /* @__PURE__ */ React18.createElement(FormLabel_default, null, label),
2647
+ label && /* @__PURE__ */ React19.createElement(FormLabel_default, null, label),
2596
2648
  textarea,
2597
- helperText && /* @__PURE__ */ React18.createElement(FormHelperText_default, null, helperText)
2649
+ helperText && /* @__PURE__ */ React19.createElement(FormHelperText_default, null, helperText)
2598
2650
  );
2599
2651
  };
2600
2652
  Textarea.displayName = "Textarea";
@@ -2603,10 +2655,10 @@ Textarea.displayName = "Textarea";
2603
2655
  var Textarea_default = Textarea;
2604
2656
 
2605
2657
  // src/components/Select/Select.tsx
2606
- import React19, { useMemo as useMemo7 } from "react";
2658
+ import React20, { useMemo as useMemo7 } from "react";
2607
2659
  import { Select as JoySelect, Option as JoyOption, ListItemContent as ListItemContent2, Typography as Typography3 } from "@mui/joy";
2608
- import { motion as motion19 } from "framer-motion";
2609
- var MotionOption = motion19(JoyOption);
2660
+ import { motion as motion20 } from "framer-motion";
2661
+ var MotionOption = motion20(JoyOption);
2610
2662
  var Option = MotionOption;
2611
2663
  var secondaryTextLevelMap2 = {
2612
2664
  sm: "body-xs",
@@ -2661,7 +2713,7 @@ function Select(props) {
2661
2713
  });
2662
2714
  return map;
2663
2715
  }, [options]);
2664
- const select = /* @__PURE__ */ React19.createElement(
2716
+ const select = /* @__PURE__ */ React20.createElement(
2665
2717
  JoySelect,
2666
2718
  {
2667
2719
  ...innerProps,
@@ -2678,9 +2730,9 @@ function Select(props) {
2678
2730
  return optionMap.get(selected.value)?.label;
2679
2731
  }
2680
2732
  },
2681
- 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))
2733
+ 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))
2682
2734
  );
2683
- return /* @__PURE__ */ React19.createElement(
2735
+ return /* @__PURE__ */ React20.createElement(
2684
2736
  FormControl_default,
2685
2737
  {
2686
2738
  required,
@@ -2691,9 +2743,9 @@ function Select(props) {
2691
2743
  sx,
2692
2744
  className
2693
2745
  },
2694
- label && /* @__PURE__ */ React19.createElement(FormLabel_default, null, label),
2746
+ label && /* @__PURE__ */ React20.createElement(FormLabel_default, null, label),
2695
2747
  select,
2696
- helperText && /* @__PURE__ */ React19.createElement(FormHelperText_default, null, helperText)
2748
+ helperText && /* @__PURE__ */ React20.createElement(FormHelperText_default, null, helperText)
2697
2749
  );
2698
2750
  }
2699
2751
  Select.displayName = "Select";
@@ -2704,19 +2756,6 @@ var Select_default = Select;
2704
2756
  // src/components/DataTable/components.tsx
2705
2757
  import { Link } from "@mui/joy";
2706
2758
 
2707
- // src/components/Tooltip/Tooltip.tsx
2708
- import React20 from "react";
2709
- import { Tooltip as JoyTooltip } from "@mui/joy";
2710
- import { motion as motion20 } from "framer-motion";
2711
- var MotionTooltip = motion20(JoyTooltip);
2712
- var Tooltip = (props) => {
2713
- return /* @__PURE__ */ React20.createElement(MotionTooltip, { ...props });
2714
- };
2715
- Tooltip.displayName = "Tooltip";
2716
-
2717
- // src/components/Tooltip/index.ts
2718
- var Tooltip_default = Tooltip;
2719
-
2720
2759
  // src/components/InfoSign/InfoSign.tsx
2721
2760
  import React21 from "react";
2722
2761
  import { styled as styled11, tooltipClasses } from "@mui/joy";
@@ -2751,25 +2790,26 @@ function InfoSign(props) {
2751
2790
  var InfoSign_default = InfoSign;
2752
2791
 
2753
2792
  // src/components/DataTable/components.tsx
2754
- var TextEllipsis = ({ children }) => {
2755
- const textRef = useRef4(null);
2756
- const [showTooltip, setShowTooltip] = useState7(false);
2793
+ var TextEllipsis = ({ children, lineClamp }) => {
2794
+ const textRef = useRef5(null);
2795
+ const [showTooltip, setShowTooltip] = useState8(false);
2757
2796
  useLayoutEffect(() => {
2758
2797
  const element = textRef.current;
2759
- if (element) {
2760
- const isTextTruncated = element.scrollWidth > element.clientWidth;
2761
- setShowTooltip(isTextTruncated);
2762
- }
2763
- }, [children]);
2764
- const content = /* @__PURE__ */ React22.createElement(EllipsisDiv, { ref: textRef }, children);
2765
- if (showTooltip) {
2766
- return /* @__PURE__ */ React22.createElement(Tooltip_default, { title: children, placement: "top", onClick: (e) => e.stopPropagation() }, content);
2767
- }
2768
- return content;
2798
+ if (!element) return;
2799
+ const checkTruncation = () => {
2800
+ const isTruncated = lineClamp && lineClamp > 1 ? element.scrollHeight > element.clientHeight + 1 : element.scrollWidth > element.clientWidth;
2801
+ setShowTooltip(isTruncated);
2802
+ };
2803
+ checkTruncation();
2804
+ const ro = new ResizeObserver(checkTruncation);
2805
+ ro.observe(element);
2806
+ return () => ro.disconnect();
2807
+ }, [children, lineClamp]);
2808
+ return /* @__PURE__ */ React22.createElement(Tooltip_default, { title: showTooltip ? children : "", placement: "top", onClick: (e) => e.stopPropagation() }, /* @__PURE__ */ React22.createElement(EllipsisDiv, { ref: textRef, lineClamp }, children));
2769
2809
  };
2770
2810
  var CellTextEllipsis = ({ children }) => {
2771
- const textRef = useRef4(null);
2772
- const [showTooltip, setShowTooltip] = useState7(false);
2811
+ const textRef = useRef5(null);
2812
+ const [showTooltip, setShowTooltip] = useState8(false);
2773
2813
  useLayoutEffect(() => {
2774
2814
  const element = textRef.current;
2775
2815
  if (element) {
@@ -2816,12 +2856,13 @@ var HeadCell = (props) => {
2816
2856
  pinnedEndPosition,
2817
2857
  headerRef,
2818
2858
  tableColRef,
2819
- headerClassName
2859
+ headerClassName,
2860
+ headerLineClamp
2820
2861
  } = props;
2821
2862
  const theme = useTheme();
2822
2863
  const ref = headerRef;
2823
2864
  const colRef = tableColRef;
2824
- const [isHovered, setIsHovered] = useState7(false);
2865
+ const [isHovered, setIsHovered] = useState8(false);
2825
2866
  const sortable = type === "actions" ? false : _sortable;
2826
2867
  const headId = useMemo8(
2827
2868
  () => `${tableId}_header_${headerName ?? field}`.trim(),
@@ -2900,7 +2941,7 @@ var HeadCell = (props) => {
2900
2941
  ref,
2901
2942
  key: field,
2902
2943
  style,
2903
- onClick: useCallback8(
2944
+ onClick: useCallback9(
2904
2945
  (e) => sortable && onSortChange?.({ field, currentSort: sort, multiple: e.shiftKey }),
2905
2946
  [field, onSortChange, sort, sortable]
2906
2947
  ),
@@ -2910,7 +2951,7 @@ var HeadCell = (props) => {
2910
2951
  initial: "initial",
2911
2952
  className: computedHeaderClassName
2912
2953
  },
2913
- /* @__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),
2954
+ /* @__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),
2914
2955
  resizer
2915
2956
  );
2916
2957
  };
@@ -2935,8 +2976,8 @@ var BodyCell = (props) => {
2935
2976
  onCellEditStop
2936
2977
  } = props;
2937
2978
  const theme = useTheme();
2938
- const [value, setValue] = useState7(row[field]);
2939
- const cellRef = useRef4(null);
2979
+ const [value, setValue] = useState8(row[field]);
2980
+ const cellRef = useRef5(null);
2940
2981
  const params = useMemo8(
2941
2982
  () => ({
2942
2983
  row,
@@ -3081,7 +3122,7 @@ var BodyCell = (props) => {
3081
3122
  () => (typeof cellClassName === "function" ? cellClassName(params) : cellClassName) || "",
3082
3123
  [cellClassName, params]
3083
3124
  );
3084
- useEffect4(() => {
3125
+ useEffect5(() => {
3085
3126
  setValue(row[field]);
3086
3127
  }, [row, field]);
3087
3128
  return /* @__PURE__ */ React22.createElement(
@@ -3151,10 +3192,10 @@ var VirtualizedTableRow = memo(StyledTableRow2, (prevProps, nextProps) => {
3151
3192
  });
3152
3193
 
3153
3194
  // src/components/DataTable/hooks.ts
3154
- import { useState as useState8, useLayoutEffect as useLayoutEffect2, useRef as useRef5, useMemo as useMemo9, useCallback as useCallback9, useEffect as useEffect5, createRef } from "react";
3195
+ import { useState as useState9, useLayoutEffect as useLayoutEffect2, useRef as useRef6, useMemo as useMemo9, useCallback as useCallback10, useEffect as useEffect6, createRef } from "react";
3155
3196
  function useColumnWidths(columnsByField) {
3156
- const [widths, setWidths] = useState8({});
3157
- const roRef = useRef5();
3197
+ const [widths, setWidths] = useState9({});
3198
+ const roRef = useRef6();
3158
3199
  useLayoutEffect2(() => {
3159
3200
  if (roRef.current) roRef.current.disconnect();
3160
3201
  roRef.current = new ResizeObserver((entries) => {
@@ -3202,28 +3243,53 @@ function useDataTableRenderer({
3202
3243
  getId: _getId,
3203
3244
  isTotalSelected: _isTotalSelected,
3204
3245
  isRowSelectable,
3205
- columnGroupingModel
3246
+ columnGroupingModel,
3247
+ columnVisibilityModel,
3248
+ onColumnVisibilityModelChange
3206
3249
  }) {
3207
3250
  if (pinnedColumns && columnGroupingModel) {
3208
3251
  throw new Error(
3209
3252
  "You cannot use both `pinnedColumns` and `columnGroupingModel` at the same time. Please choose one of them."
3210
3253
  );
3211
3254
  }
3212
- const onSelectionModelChangeRef = useRef5(onSelectionModelChange);
3255
+ const onSelectionModelChangeRef = useRef6(onSelectionModelChange);
3213
3256
  onSelectionModelChangeRef.current = onSelectionModelChange;
3214
- const [focusedRowId, setFocusedRowId] = useState8(null);
3215
- const [selectionAnchor, setSelectionAnchor] = useState8(null);
3257
+ const [focusedRowId, setFocusedRowId] = useState9(null);
3258
+ const [selectionAnchor, setSelectionAnchor] = useState9(null);
3216
3259
  const [sortModel, setSortModel] = useControlledState(
3217
3260
  controlledSortModel,
3218
3261
  initialState?.sorting?.sortModel ?? [],
3219
- useCallback9((sortModel2) => onSortModelChange?.(sortModel2), [onSortModelChange])
3262
+ useCallback10((sortModel2) => onSortModelChange?.(sortModel2), [onSortModelChange])
3263
+ );
3264
+ const [visibilityModel] = useControlledState(
3265
+ columnVisibilityModel,
3266
+ initialState?.columns?.columnVisibilityModel ?? {},
3267
+ useCallback10(
3268
+ (model) => onColumnVisibilityModelChange?.(model),
3269
+ [onColumnVisibilityModelChange]
3270
+ )
3220
3271
  );
3221
3272
  const reorderedColumns = useMemo9(() => {
3222
3273
  if (!columnGroupingModel) return columnsProp;
3223
3274
  return reorderColumnsByGroupingModel(columnsProp, columnGroupingModel);
3224
3275
  }, [columnsProp, columnGroupingModel]);
3225
- const columnsByField = useMemo9(
3276
+ const visibleColumns = useMemo9(
3277
+ () => reorderedColumns.filter((col) => visibilityModel[col.field] !== false),
3278
+ [reorderedColumns, visibilityModel]
3279
+ );
3280
+ const visibleFieldSet = useMemo9(() => new Set(visibleColumns.map((c) => c.field)), [visibleColumns]);
3281
+ const allColumnsByField = useMemo9(
3226
3282
  () => reorderedColumns.reduce(
3283
+ (acc, curr) => ({
3284
+ ...acc,
3285
+ [curr.field]: curr
3286
+ }),
3287
+ {}
3288
+ ),
3289
+ [reorderedColumns]
3290
+ );
3291
+ const visibleColumnsByField = useMemo9(
3292
+ () => visibleColumns.reduce(
3227
3293
  (acc, curr) => ({
3228
3294
  ...acc,
3229
3295
  [curr.field]: {
@@ -3234,15 +3300,16 @@ function useDataTableRenderer({
3234
3300
  }),
3235
3301
  {}
3236
3302
  ),
3237
- [reorderedColumns]
3303
+ [visibleColumns]
3238
3304
  );
3239
- const sortComparator = useCallback9(
3305
+ const sortComparator = useCallback10(
3240
3306
  (rowA, rowB) => {
3241
3307
  for (const sort of sortModel) {
3242
3308
  const { field, sort: direction } = sort;
3243
3309
  const a = rowA[field];
3244
3310
  const b = rowB[field];
3245
- const column = columnsByField[field];
3311
+ const column = allColumnsByField[field];
3312
+ if (!column) continue;
3246
3313
  let comparison = 0;
3247
3314
  if (column.sortComparator) {
3248
3315
  comparison = column.sortComparator({
@@ -3262,7 +3329,7 @@ function useDataTableRenderer({
3262
3329
  }
3263
3330
  return 0;
3264
3331
  },
3265
- [sortModel, columnsByField]
3332
+ [sortModel, allColumnsByField]
3266
3333
  );
3267
3334
  const rows = useMemo9(
3268
3335
  () => sortModel.length ? [..._rows].sort(sortComparator) : _rows,
@@ -3272,9 +3339,9 @@ function useDataTableRenderer({
3272
3339
  () => Array.from(new Set(_sortOrder || ["asc", "desc", null])),
3273
3340
  [_sortOrder]
3274
3341
  );
3275
- const [page, setPage] = useState8(paginationModel?.page || 1);
3342
+ const [page, setPage] = useState9(paginationModel?.page || 1);
3276
3343
  const pageSize = paginationModel?.pageSize || 20;
3277
- const getId = useCallback9(
3344
+ const getId = useCallback10(
3278
3345
  (row, index) => _getId?.(row) ?? row.id ?? `${(index || 0) + (page - 1) * pageSize}`,
3279
3346
  [_getId, page, pageSize]
3280
3347
  );
@@ -3290,7 +3357,7 @@ function useDataTableRenderer({
3290
3357
  }),
3291
3358
  [dataInPage, isRowSelectable, getId]
3292
3359
  );
3293
- const handleRangeSelection = useCallback9(
3360
+ const handleRangeSelection = useCallback10(
3294
3361
  (anchor, targetIndex) => {
3295
3362
  const startIndex = Math.min(anchor.rowIndex, targetIndex);
3296
3363
  const endIndex = Math.max(anchor.rowIndex, targetIndex);
@@ -3326,61 +3393,71 @@ function useDataTableRenderer({
3326
3393
  () => _isTotalSelected ?? (selectableRowCount > 0 && (selectionModel?.length || 0) === selectableRowCount),
3327
3394
  [_isTotalSelected, selectionModel, selectableRowCount]
3328
3395
  );
3329
- const columnWidths = useColumnWidths(columnsByField);
3330
- const getWidth = useCallback9(
3331
- (f) => columnWidths[f] ?? columnsByField[f].width ?? // Column prop 으로 지정된 width
3332
- columnsByField[f].minWidth ?? 0,
3333
- [columnWidths, columnsByField]
3396
+ const columnWidths = useColumnWidths(visibleColumnsByField);
3397
+ const getWidth = useCallback10(
3398
+ (f) => columnWidths[f] ?? allColumnsByField[f]?.width ?? // Column prop 으로 지정된 width
3399
+ allColumnsByField[f]?.minWidth ?? 0,
3400
+ [columnWidths, allColumnsByField]
3334
3401
  );
3335
3402
  const processedColumnGroups = useMemo9(() => {
3336
3403
  if (!columnGroupingModel) return null;
3337
- return calculateColumnGroups(columnGroupingModel, reorderedColumns);
3338
- }, [columnGroupingModel, reorderedColumns]);
3404
+ return calculateColumnGroups(columnGroupingModel, visibleColumns, visibleFieldSet);
3405
+ }, [columnGroupingModel, visibleColumns, visibleFieldSet]);
3406
+ const effectivePinnedLeft = useMemo9(
3407
+ () => pinnedColumns?.left?.filter((f) => visibleFieldSet.has(f)),
3408
+ [pinnedColumns?.left, visibleFieldSet]
3409
+ );
3410
+ const effectivePinnedRight = useMemo9(
3411
+ () => pinnedColumns?.right?.filter((f) => visibleFieldSet.has(f)),
3412
+ [pinnedColumns?.right, visibleFieldSet]
3413
+ );
3339
3414
  const columns = useMemo9(() => {
3340
- const baseColumns = reorderedColumns.length > 0 ? reorderedColumns : Object.keys(rows[0] || {}).map((key) => ({
3415
+ const baseColumns = visibleColumns.length > 0 ? visibleColumns : reorderedColumns.length > 0 ? [] : Object.keys(rows[0] || {}).map((key) => ({
3341
3416
  field: key
3342
3417
  }));
3343
3418
  return baseColumns.map((column) => {
3344
- const isLeftPinned = pinnedColumns?.left?.includes(column.field);
3345
- const isRightPinned = pinnedColumns?.right?.includes(column.field);
3419
+ const isLeftPinned = effectivePinnedLeft?.includes(column.field);
3420
+ const isRightPinned = effectivePinnedRight?.includes(column.field);
3346
3421
  const isPinned = isLeftPinned || isRightPinned;
3347
3422
  return {
3348
3423
  ...column,
3349
- headerRef: columnsByField[column.field].headerRef,
3350
- tableColRef: columnsByField[column.field].tableColRef,
3424
+ headerRef: visibleColumnsByField[column.field]?.headerRef,
3425
+ tableColRef: visibleColumnsByField[column.field]?.tableColRef,
3351
3426
  isCellEditable: editMode && (typeof column.isCellEditable === "function" ? column.isCellEditable : column.isCellEditable ?? true),
3352
3427
  sort: sortModel.find((sort) => sort.field === column.field)?.sort,
3353
- sortOrder: columnsByField[column.field]?.sortOrder || sortOrder,
3428
+ sortOrder: allColumnsByField[column.field]?.sortOrder || sortOrder,
3354
3429
  isPinned,
3355
- isLastStartPinnedColumn: isLeftPinned && [...pinnedColumns?.left || []].pop() === column.field,
3356
- isLastEndPinnedColumn: isRightPinned && (pinnedColumns?.right?.[0] ?? null) === column.field,
3357
- pinnedStartPosition: pinnedColumns?.left?.slice(0, isLeftPinned ? pinnedColumns.left.indexOf(column.field) : pinnedColumns.left.length).reduce((acc, curr) => acc + getWidth(curr), 0),
3358
- pinnedEndPosition: pinnedColumns?.right?.slice(isRightPinned ? pinnedColumns.right.indexOf(column.field) + 1 : 0).reduce((acc, curr) => acc + getWidth(curr), 0)
3430
+ isLastStartPinnedColumn: isLeftPinned && [...effectivePinnedLeft || []].pop() === column.field,
3431
+ isLastEndPinnedColumn: isRightPinned && (effectivePinnedRight?.[0] ?? null) === column.field,
3432
+ pinnedStartPosition: effectivePinnedLeft?.slice(0, isLeftPinned ? effectivePinnedLeft.indexOf(column.field) : effectivePinnedLeft.length).reduce((acc, curr) => acc + getWidth(curr), 0),
3433
+ pinnedEndPosition: effectivePinnedRight?.slice(isRightPinned ? effectivePinnedRight.indexOf(column.field) + 1 : 0).reduce((acc, curr) => acc + getWidth(curr), 0)
3359
3434
  };
3360
3435
  });
3361
3436
  }, [
3437
+ visibleColumns,
3362
3438
  reorderedColumns,
3363
3439
  rows,
3364
- pinnedColumns?.left,
3365
- pinnedColumns?.right,
3366
- columnsByField,
3440
+ effectivePinnedLeft,
3441
+ effectivePinnedRight,
3442
+ visibleColumnsByField,
3443
+ allColumnsByField,
3367
3444
  editMode,
3368
3445
  sortModel,
3369
3446
  sortOrder,
3370
3447
  getWidth
3371
3448
  ]);
3372
- const handlePageChange = useCallback9(
3449
+ const handlePageChange = useCallback10(
3373
3450
  (newPage) => {
3374
3451
  setPage(newPage);
3375
3452
  onPaginationModelChange?.({ page: newPage, pageSize });
3376
3453
  },
3377
3454
  [onPaginationModelChange, pageSize]
3378
3455
  );
3379
- const handleSortChange = useCallback9(
3456
+ const handleSortChange = useCallback10(
3380
3457
  (props) => {
3381
3458
  const { field, currentSort, multiple } = props;
3382
- const column = columnsByField[field];
3383
- const columnSortOrder = column.sortOrder || sortOrder;
3459
+ const column = allColumnsByField[field];
3460
+ const columnSortOrder = column?.sortOrder || sortOrder;
3384
3461
  if (currentSort !== void 0) {
3385
3462
  const currentOrderIndex = columnSortOrder.indexOf(currentSort);
3386
3463
  const nextSortOrderIndex = (currentOrderIndex + 1) % columnSortOrder.length;
@@ -3397,25 +3474,25 @@ function useDataTableRenderer({
3397
3474
  setSortModel(newSortModel);
3398
3475
  }
3399
3476
  },
3400
- [sortOrder, columnsByField, sortModel, setSortModel]
3477
+ [sortOrder, allColumnsByField, sortModel, setSortModel]
3401
3478
  );
3402
- useEffect5(() => {
3479
+ useEffect6(() => {
3403
3480
  if (!paginationModel) {
3404
3481
  handlePageChange(1);
3405
3482
  }
3406
3483
  }, [rowCount, handlePageChange, paginationModel]);
3407
- useEffect5(() => {
3484
+ useEffect6(() => {
3408
3485
  const lastPage = Math.max(1, Math.ceil(rowCount / pageSize));
3409
3486
  if (page > lastPage) {
3410
3487
  handlePageChange(lastPage);
3411
3488
  }
3412
3489
  }, [page, rowCount, pageSize, handlePageChange]);
3413
- useEffect5(() => {
3490
+ useEffect6(() => {
3414
3491
  onSelectionModelChangeRef.current?.([]);
3415
3492
  setSelectionAnchor(null);
3416
3493
  }, [page]);
3417
- const prevRowsRef = useRef5(_rows);
3418
- useEffect5(() => {
3494
+ const prevRowsRef = useRef6(_rows);
3495
+ useEffect6(() => {
3419
3496
  if (prevRowsRef.current !== _rows) {
3420
3497
  setSelectionAnchor(null);
3421
3498
  prevRowsRef.current = _rows;
@@ -3434,8 +3511,8 @@ function useDataTableRenderer({
3434
3511
  handleSortChange,
3435
3512
  isAllSelected,
3436
3513
  isTotalSelected,
3437
- isSelectedRow: useCallback9((model) => selectedModelSet.has(model), [selectedModelSet]),
3438
- isRowSelectable: useCallback9(
3514
+ isSelectedRow: useCallback10((model) => selectedModelSet.has(model), [selectedModelSet]),
3515
+ isRowSelectable: useCallback10(
3439
3516
  (rowId, row) => {
3440
3517
  if (!isRowSelectable) return true;
3441
3518
  return isRowSelectable({ row, id: rowId });
@@ -3443,13 +3520,13 @@ function useDataTableRenderer({
3443
3520
  [isRowSelectable]
3444
3521
  ),
3445
3522
  focusedRowId,
3446
- onRowFocus: useCallback9((rowId) => {
3523
+ onRowFocus: useCallback10((rowId) => {
3447
3524
  setFocusedRowId(rowId);
3448
3525
  }, []),
3449
- onAllCheckboxChange: useCallback9(() => {
3526
+ onAllCheckboxChange: useCallback10(() => {
3450
3527
  onSelectionModelChange?.(isAllSelected ? [] : selectableDataInPage.map(getId));
3451
3528
  }, [isAllSelected, selectableDataInPage, onSelectionModelChange, getId]),
3452
- onCheckboxChange: useCallback9(
3529
+ onCheckboxChange: useCallback10(
3453
3530
  (event, selectedModel) => {
3454
3531
  const isShiftClick = "shiftKey" in event && event.shiftKey;
3455
3532
  const rowIndex = dataInPage.findIndex((row, i) => getId(row, i) === selectedModel);
@@ -3482,7 +3559,7 @@ function useDataTableRenderer({
3482
3559
  ),
3483
3560
  columns,
3484
3561
  processedColumnGroups,
3485
- onTotalSelect: useCallback9(() => {
3562
+ onTotalSelect: useCallback10(() => {
3486
3563
  const selectableRows = rows.filter((row, i) => {
3487
3564
  if (!isRowSelectable) return true;
3488
3565
  return isRowSelectable({ row, id: getId(row, i) });
@@ -3567,7 +3644,7 @@ function TableBody(props) {
3567
3644
  TableBody.displayName = "TableBody";
3568
3645
 
3569
3646
  // src/components/Pagination/Pagination.tsx
3570
- import React24, { useCallback as useCallback10, useEffect as useEffect6 } from "react";
3647
+ import React24, { useCallback as useCallback11, useEffect as useEffect7 } from "react";
3571
3648
  import PreviousIcon from "@mui/icons-material/ChevronLeftRounded";
3572
3649
  import NextIcon from "@mui/icons-material/ChevronRightRounded";
3573
3650
  import FirstPageIcon from "@mui/icons-material/FirstPageRounded";
@@ -3636,7 +3713,7 @@ function Pagination(props) {
3636
3713
  const [paginationModel, setPaginationModel] = useControlledState(
3637
3714
  _paginationModel,
3638
3715
  defaultPaginationModel,
3639
- useCallback10(
3716
+ useCallback11(
3640
3717
  (newPage) => {
3641
3718
  onPageChange(newPage.page);
3642
3719
  },
@@ -3652,7 +3729,7 @@ function Pagination(props) {
3652
3729
  const afterPages = [paginationModel.page + 1, paginationModel.page + 2].filter((p) => p <= lastPage - 1);
3653
3730
  const isMoreAfterPages = lastPage > 1 && paginationModel.page < lastPage - 3;
3654
3731
  const isMoreBeforePages = lastPage > 1 && paginationModel.page > 4;
3655
- useEffect6(() => {
3732
+ useEffect7(() => {
3656
3733
  if (paginationModel.page > lastPage) {
3657
3734
  setPaginationModel({ ...paginationModel, page: lastPage });
3658
3735
  }
@@ -3823,6 +3900,10 @@ function Component(props, apiRef) {
3823
3900
  loading,
3824
3901
  columnGroupingModel: _________________,
3825
3902
  // columnGroupingModel is used in useDataTableRenderer
3903
+ columnVisibilityModel: __________________,
3904
+ // columnVisibilityModel is used in useDataTableRenderer
3905
+ onColumnVisibilityModelChange: ___________________,
3906
+ // onColumnVisibilityModelChange is used in useDataTableRenderer
3826
3907
  slots: {
3827
3908
  checkbox: RenderCheckbox = Checkbox_default,
3828
3909
  toolbar: Toolbar,
@@ -3835,8 +3916,8 @@ function Component(props, apiRef) {
3835
3916
  ...innerProps
3836
3917
  } = props;
3837
3918
  const tableId = useId();
3838
- const parentRef = useRef6(null);
3839
- const tableBodyRef = useRef6(null);
3919
+ const parentRef = useRef7(null);
3920
+ const tableBodyRef = useRef7(null);
3840
3921
  const {
3841
3922
  columns,
3842
3923
  processedColumnGroups,
@@ -3873,20 +3954,20 @@ function Component(props, apiRef) {
3873
3954
  const paginationModel = useMemo10(() => ({ page, pageSize }), [page, pageSize]);
3874
3955
  const totalSize = virtualizer.getTotalSize();
3875
3956
  const virtualizedItems = virtualizer.getVirtualItems();
3876
- const getRowClickHandler = useCallback11(
3957
+ const getRowClickHandler = useCallback12(
3877
3958
  (row, rowId) => (e) => {
3878
3959
  onRowClick?.({ row, rowId }, e);
3879
3960
  checkboxSelection && !disableSelectionOnClick && isRowSelectableCheck(rowId, row) && onCheckboxChange(e, rowId);
3880
3961
  },
3881
3962
  [onRowClick, checkboxSelection, disableSelectionOnClick, onCheckboxChange, isRowSelectableCheck]
3882
3963
  );
3883
- const getRowFocusHandler = useCallback11(
3964
+ const getRowFocusHandler = useCallback12(
3884
3965
  (rowId) => () => {
3885
3966
  onRowFocus(rowId);
3886
3967
  },
3887
3968
  [onRowFocus]
3888
3969
  );
3889
- const getCheckboxClickHandler = useCallback11(
3970
+ const getCheckboxClickHandler = useCallback12(
3890
3971
  (rowId, row) => (e) => {
3891
3972
  e.stopPropagation();
3892
3973
  if (isRowSelectableCheck(rowId, row)) {
@@ -3896,7 +3977,7 @@ function Component(props, apiRef) {
3896
3977
  },
3897
3978
  [onCheckboxChange, isRowSelectableCheck, onRowFocus]
3898
3979
  );
3899
- const handleTableKeyDown = useCallback11(
3980
+ const handleTableKeyDown = useCallback12(
3900
3981
  (e) => {
3901
3982
  const supportedKeys = ["ArrowUp", "ArrowDown", " ", "Home", "End", "PageUp", "PageDown"];
3902
3983
  if (!supportedKeys.includes(e.key)) return;
@@ -4062,7 +4143,7 @@ function Component(props, apiRef) {
4062
4143
  width: c.width
4063
4144
  }
4064
4145
  }
4065
- ))), /* @__PURE__ */ React25.createElement("thead", null, processedColumnGroups && processedColumnGroups.groups.map((levelGroups, level) => /* @__PURE__ */ React25.createElement("tr", { key: `group-level-${level}` }, checkboxSelection && level === 0 && /* @__PURE__ */ React25.createElement(
4146
+ ))), /* @__PURE__ */ React25.createElement("thead", null, processedColumnGroups && processedColumnGroups.groups.length > 0 && processedColumnGroups.groups.map((levelGroups, level) => /* @__PURE__ */ React25.createElement("tr", { key: `group-level-${level}` }, checkboxSelection && level === 0 && /* @__PURE__ */ React25.createElement(
4066
4147
  "th",
4067
4148
  {
4068
4149
  rowSpan: processedColumnGroups.maxLevel + 2,
@@ -4082,7 +4163,7 @@ function Component(props, apiRef) {
4082
4163
  ...checkboxProps
4083
4164
  }
4084
4165
  )
4085
- ), level > 0 && Array.from({ length: levelGroups[0]?.startIndex || 0 }).map((_2, i) => /* @__PURE__ */ React25.createElement("th", { key: `empty-${level}-${i}` })), levelGroups.map((group, groupIndex) => {
4166
+ ), level > 0 && Array.from({ length: levelGroups[0]?.startIndex || 0 }).map((_2, i) => /* @__PURE__ */ React25.createElement("th", { key: `empty-${level}-${i}` })), levelGroups.filter((g) => g.colspan > 0).map((group, groupIndex) => {
4086
4167
  const nextGroup = levelGroups[groupIndex + 1];
4087
4168
  const emptyCells = nextGroup ? nextGroup.startIndex - (group.startIndex + group.colspan) : columns.length - (group.startIndex + group.colspan);
4088
4169
  const params = { groupId: group.groupId };
@@ -4100,7 +4181,7 @@ function Component(props, apiRef) {
4100
4181
  },
4101
4182
  group.headerName ?? group.groupId
4102
4183
  ), emptyCells > 0 && Array.from({ length: emptyCells }).map((_2, i) => /* @__PURE__ */ React25.createElement("th", { key: `empty-between-${level}-${groupIndex}-${i}`, colSpan: 1 })));
4103
- }))), /* @__PURE__ */ React25.createElement("tr", null, !processedColumnGroups && checkboxSelection && /* @__PURE__ */ React25.createElement(
4184
+ }))), /* @__PURE__ */ React25.createElement("tr", null, (!processedColumnGroups || processedColumnGroups.groups.length === 0) && checkboxSelection && /* @__PURE__ */ React25.createElement(
4104
4185
  "th",
4105
4186
  {
4106
4187
  style: {
@@ -4238,7 +4319,7 @@ var DataTable = forwardRef7(Component);
4238
4319
  DataTable.displayName = "DataTable";
4239
4320
 
4240
4321
  // src/components/DateRangePicker/DateRangePicker.tsx
4241
- 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";
4322
+ 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";
4242
4323
  import { IMaskInput as IMaskInput2, IMask as IMask2 } from "react-imask";
4243
4324
  import CalendarTodayIcon2 from "@mui/icons-material/CalendarToday";
4244
4325
  import { styled as styled14, useThemeProps as useThemeProps5 } from "@mui/joy";
@@ -4399,23 +4480,23 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
4399
4480
  readOnly,
4400
4481
  ...innerProps
4401
4482
  } = props;
4402
- const innerRef = useRef7(null);
4403
- const buttonRef = useRef7(null);
4483
+ const innerRef = useRef8(null);
4484
+ const buttonRef = useRef8(null);
4404
4485
  const [value, setValue] = useControlledState(
4405
4486
  props.value,
4406
4487
  props.defaultValue || "",
4407
- useCallback12((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
4488
+ useCallback13((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
4408
4489
  );
4409
- const [displayValue, setDisplayValue] = useState9(
4490
+ const [displayValue, setDisplayValue] = useState10(
4410
4491
  () => value ? formatValueString2(parseDates(value, format), displayFormat) : ""
4411
4492
  );
4412
- const [anchorEl, setAnchorEl] = useState9(null);
4493
+ const [anchorEl, setAnchorEl] = useState10(null);
4413
4494
  const open = Boolean(anchorEl);
4414
4495
  const calendarValue = useMemo11(
4415
4496
  () => value ? parseDates(value, format) : void 0,
4416
4497
  [value, format]
4417
4498
  );
4418
- useEffect7(() => {
4499
+ useEffect8(() => {
4419
4500
  if (value) {
4420
4501
  try {
4421
4502
  const dates = parseDates(value, format);
@@ -4427,13 +4508,13 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
4427
4508
  setDisplayValue("");
4428
4509
  }
4429
4510
  }, [displayFormat, value, format]);
4430
- useEffect7(() => {
4511
+ useEffect8(() => {
4431
4512
  if (!anchorEl) {
4432
4513
  innerRef.current?.blur();
4433
4514
  }
4434
4515
  }, [anchorEl, innerRef]);
4435
4516
  useImperativeHandle3(ref, () => innerRef.current, [innerRef]);
4436
- const handleChange = useCallback12(
4517
+ const handleChange = useCallback13(
4437
4518
  (event) => {
4438
4519
  const value2 = event.target.value;
4439
4520
  setDisplayValue(value2 ? formatValueString2(parseDates(value2, format), displayFormat) : value2);
@@ -4441,7 +4522,7 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
4441
4522
  },
4442
4523
  [displayFormat, format, setValue]
4443
4524
  );
4444
- const handleDisplayInputChange = useCallback12(
4525
+ const handleDisplayInputChange = useCallback13(
4445
4526
  (event) => {
4446
4527
  if (event.target.value === "") {
4447
4528
  handleChange({
@@ -4466,14 +4547,14 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
4466
4547
  },
4467
4548
  [displayFormat, format, handleChange, props.name]
4468
4549
  );
4469
- const handleCalendarToggle = useCallback12(
4550
+ const handleCalendarToggle = useCallback13(
4470
4551
  (event) => {
4471
4552
  setAnchorEl(anchorEl ? null : event.currentTarget);
4472
4553
  innerRef.current?.focus();
4473
4554
  },
4474
4555
  [anchorEl, setAnchorEl, innerRef]
4475
4556
  );
4476
- const handleCalendarChange = useCallback12(
4557
+ const handleCalendarChange = useCallback13(
4477
4558
  ([date1, date2]) => {
4478
4559
  if (!date1 || !date2) return;
4479
4560
  const formattedValue = formatValueString2([date1, date2], format);
@@ -4487,7 +4568,7 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
4487
4568
  },
4488
4569
  [props.value, props.name, onChange, setValue, setAnchorEl, format, displayFormat]
4489
4570
  );
4490
- const handleInputMouseDown = useCallback12(
4571
+ const handleInputMouseDown = useCallback13(
4491
4572
  (event) => {
4492
4573
  if (inputReadOnly) {
4493
4574
  event.preventDefault();
@@ -4696,13 +4777,13 @@ var InsetDrawer = styled19(JoyDrawer)(({ theme }) => ({
4696
4777
  }));
4697
4778
 
4698
4779
  // src/components/FilterableCheckboxGroup/FilterableCheckboxGroup.tsx
4699
- import React30, { useCallback as useCallback13, useEffect as useEffect8, useMemo as useMemo12, useRef as useRef8, useState as useState10 } from "react";
4780
+ import React30, { useCallback as useCallback14, useEffect as useEffect9, useMemo as useMemo12, useRef as useRef9, useState as useState11 } from "react";
4700
4781
  import SearchIcon from "@mui/icons-material/Search";
4701
4782
  import { useVirtualizer as useVirtualizer3 } from "@tanstack/react-virtual";
4702
4783
  function LabelWithTooltip(props) {
4703
4784
  const { label, size } = props;
4704
- const labelContentRef = useRef8(null);
4705
- const [isOverflowing, setIsOverflowing] = useState10(false);
4785
+ const labelContentRef = useRef9(null);
4786
+ const [isOverflowing, setIsOverflowing] = useState11(false);
4706
4787
  const labelContent = /* @__PURE__ */ React30.createElement(
4707
4788
  "span",
4708
4789
  {
@@ -4719,7 +4800,7 @@ function LabelWithTooltip(props) {
4719
4800
  },
4720
4801
  label
4721
4802
  );
4722
- useEffect8(() => {
4803
+ useEffect9(() => {
4723
4804
  const element = labelContentRef.current;
4724
4805
  if (element) {
4725
4806
  setIsOverflowing(element.scrollWidth > element.clientWidth);
@@ -4743,16 +4824,16 @@ function FilterableCheckboxGroup(props) {
4743
4824
  maxHeight = 300,
4744
4825
  disabled
4745
4826
  } = props;
4746
- const [searchTerm, setSearchTerm] = useState10("");
4747
- const [sortedOptions, setSortedOptions] = useState10(options);
4827
+ const [searchTerm, setSearchTerm] = useState11("");
4828
+ const [sortedOptions, setSortedOptions] = useState11(options);
4748
4829
  const [internalValue, setInternalValue] = useControlledState(
4749
4830
  value,
4750
4831
  value ?? [],
4751
- useCallback13((newValue) => onChange?.(newValue), [onChange])
4832
+ useCallback14((newValue) => onChange?.(newValue), [onChange])
4752
4833
  );
4753
- const parentRef = useRef8(null);
4754
- const isInitialSortRef = useRef8(false);
4755
- const prevOptionsRef = useRef8([...options]);
4834
+ const parentRef = useRef9(null);
4835
+ const isInitialSortRef = useRef9(false);
4836
+ const prevOptionsRef = useRef9([...options]);
4756
4837
  const filteredOptions = useMemo12(() => {
4757
4838
  if (!searchTerm) return sortedOptions;
4758
4839
  return sortedOptions.filter((option) => option.label.toLowerCase().includes(searchTerm.toLowerCase()));
@@ -4775,7 +4856,7 @@ function FilterableCheckboxGroup(props) {
4775
4856
  overscan: 5
4776
4857
  });
4777
4858
  const items = virtualizer.getVirtualItems();
4778
- useEffect8(() => {
4859
+ useEffect9(() => {
4779
4860
  const optionsChanged = prevOptionsRef.current.length !== options.length || prevOptionsRef.current.some(
4780
4861
  (prevOption, index) => prevOption.value !== options[index]?.value || prevOption.label !== options[index]?.label || prevOption.disabled !== options[index]?.disabled
4781
4862
  );
@@ -4801,13 +4882,13 @@ function FilterableCheckboxGroup(props) {
4801
4882
  }
4802
4883
  }
4803
4884
  }, [options, value]);
4804
- useEffect8(() => {
4885
+ useEffect9(() => {
4805
4886
  virtualizer.measure();
4806
4887
  }, [virtualizer, filteredOptions, size]);
4807
- const handleSearchChange = useCallback13((event) => {
4888
+ const handleSearchChange = useCallback14((event) => {
4808
4889
  setSearchTerm(event.target.value);
4809
4890
  }, []);
4810
- const handleCheckboxChange = useCallback13(
4891
+ const handleCheckboxChange = useCallback14(
4811
4892
  (optionValue) => (event) => {
4812
4893
  const checked = event.target.checked;
4813
4894
  const newValue = checked ? [...internalValue, optionValue] : internalValue.filter((v) => v !== optionValue);
@@ -4815,7 +4896,7 @@ function FilterableCheckboxGroup(props) {
4815
4896
  },
4816
4897
  [internalValue, setInternalValue]
4817
4898
  );
4818
- const handleSelectAll = useCallback13(
4899
+ const handleSelectAll = useCallback14(
4819
4900
  (event) => {
4820
4901
  const checked = event.target.checked;
4821
4902
  const enabledOptions = filteredOptions.filter((option) => !option.disabled);
@@ -4919,16 +5000,16 @@ function FilterableCheckboxGroup(props) {
4919
5000
  FilterableCheckboxGroup.displayName = "FilterableCheckboxGroup";
4920
5001
 
4921
5002
  // src/components/FilterMenu/FilterMenu.tsx
4922
- import React41, { useCallback as useCallback23 } from "react";
5003
+ import React41, { useCallback as useCallback24 } from "react";
4923
5004
  import { Button as Button2, Stack as Stack11 } from "@mui/joy";
4924
5005
 
4925
5006
  // src/components/FilterMenu/components/CheckboxGroup.tsx
4926
- import React31, { useCallback as useCallback14 } from "react";
5007
+ import React31, { useCallback as useCallback15 } from "react";
4927
5008
  import { Stack as Stack2 } from "@mui/joy";
4928
5009
  function CheckboxGroup(props) {
4929
5010
  const { id, label, options, value, onChange, hidden } = props;
4930
5011
  const [internalValue, setInternalValue] = useControlledState(value, [], onChange);
4931
- const handleCheckboxChange = useCallback14(
5012
+ const handleCheckboxChange = useCallback15(
4932
5013
  (optionValue) => (event) => {
4933
5014
  const checked = event.target.checked;
4934
5015
  let newValue;
@@ -4957,12 +5038,12 @@ function CheckboxGroup(props) {
4957
5038
  CheckboxGroup.displayName = "CheckboxGroup";
4958
5039
 
4959
5040
  // src/components/FilterMenu/components/FilterableCheckboxGroup.tsx
4960
- import React32, { useCallback as useCallback15 } from "react";
5041
+ import React32, { useCallback as useCallback16 } from "react";
4961
5042
  import { Stack as Stack3 } from "@mui/joy";
4962
5043
  function FilterableCheckboxGroup2(props) {
4963
5044
  const { id, label, options, value, onChange, hidden, placeholder, maxHeight } = props;
4964
5045
  const [internalValue, setInternalValue] = useControlledState(value, [], onChange);
4965
- const handleChange = useCallback15(
5046
+ const handleChange = useCallback16(
4966
5047
  (newValue) => {
4967
5048
  setInternalValue(newValue);
4968
5049
  },
@@ -4986,7 +5067,7 @@ function FilterableCheckboxGroup2(props) {
4986
5067
  FilterableCheckboxGroup2.displayName = "FilterableCheckboxGroup";
4987
5068
 
4988
5069
  // src/components/FilterMenu/components/RadioGroup.tsx
4989
- import React33, { useCallback as useCallback16 } from "react";
5070
+ import React33, { useCallback as useCallback17 } from "react";
4990
5071
 
4991
5072
  // src/components/Radio/Radio.tsx
4992
5073
  import { Radio as JoyRadio, RadioGroup as JoyRadioGroup } from "@mui/joy";
@@ -5003,7 +5084,7 @@ import { Stack as Stack4 } from "@mui/joy";
5003
5084
  function RadioGroup2(props) {
5004
5085
  const { id, label, options, value, onChange, hidden } = props;
5005
5086
  const [internalValue, setInternalValue] = useControlledState(value, value ?? "", onChange);
5006
- const handleRadioChange = useCallback16(
5087
+ const handleRadioChange = useCallback17(
5007
5088
  (event) => {
5008
5089
  const newValue = event.target.value;
5009
5090
  const option = options.find((opt) => opt.value.toString() === newValue);
@@ -5020,7 +5101,7 @@ function RadioGroup2(props) {
5020
5101
  RadioGroup2.displayName = "RadioGroup";
5021
5102
 
5022
5103
  // src/components/FilterMenu/components/DateRange.tsx
5023
- import React34, { useCallback as useCallback17, useMemo as useMemo13, useState as useState11, useEffect as useEffect9 } from "react";
5104
+ import React34, { useCallback as useCallback18, useMemo as useMemo13, useState as useState12, useEffect as useEffect10 } from "react";
5024
5105
  import { Stack as Stack5 } from "@mui/joy";
5025
5106
  function DateRange(props) {
5026
5107
  const {
@@ -5038,7 +5119,7 @@ function DateRange(props) {
5038
5119
  hideClearButton
5039
5120
  } = props;
5040
5121
  const [internalValue, setInternalValue] = useControlledState(value, null, onChange);
5041
- const [selectedOption, setSelectedOption] = useState11("all-time");
5122
+ const [selectedOption, setSelectedOption] = useState12("all-time");
5042
5123
  const dateRangeOptions = useMemo13(
5043
5124
  () => [
5044
5125
  { label: "All Time", value: "all-time" },
@@ -5049,7 +5130,7 @@ function DateRange(props) {
5049
5130
  ],
5050
5131
  []
5051
5132
  );
5052
- const getDateRangeForOption = useCallback17(
5133
+ const getDateRangeForOption = useCallback18(
5053
5134
  (option) => {
5054
5135
  const now = /* @__PURE__ */ new Date();
5055
5136
  const currentYear = now.getFullYear();
@@ -5088,7 +5169,7 @@ function DateRange(props) {
5088
5169
  },
5089
5170
  [internalValue]
5090
5171
  );
5091
- const determineOptionFromValue = useCallback17(
5172
+ const determineOptionFromValue = useCallback18(
5092
5173
  (value2) => {
5093
5174
  if (!value2) {
5094
5175
  return "all-time";
@@ -5110,11 +5191,11 @@ function DateRange(props) {
5110
5191
  }
5111
5192
  return "";
5112
5193
  }, [selectedOption, internalValue]);
5113
- useEffect9(() => {
5194
+ useEffect10(() => {
5114
5195
  const newOption = determineOptionFromValue(internalValue);
5115
5196
  setSelectedOption(newOption);
5116
5197
  }, [internalValue, determineOptionFromValue]);
5117
- const handleOptionChange = useCallback17(
5198
+ const handleOptionChange = useCallback18(
5118
5199
  (event) => {
5119
5200
  const newOption = event.target.value;
5120
5201
  setSelectedOption(newOption);
@@ -5123,7 +5204,7 @@ function DateRange(props) {
5123
5204
  },
5124
5205
  [getDateRangeForOption, setInternalValue]
5125
5206
  );
5126
- const handleCustomDateChange = useCallback17(
5207
+ const handleCustomDateChange = useCallback18(
5127
5208
  (event) => {
5128
5209
  const dateRangeString = event.target.value;
5129
5210
  if (dateRangeString && dateRangeString.includes(" - ")) {
@@ -5163,12 +5244,12 @@ function DateRange(props) {
5163
5244
  DateRange.displayName = "DateRange";
5164
5245
 
5165
5246
  // src/components/FilterMenu/components/CurrencyInput.tsx
5166
- import React35, { useCallback as useCallback18 } from "react";
5247
+ import React35, { useCallback as useCallback19 } from "react";
5167
5248
  import { Stack as Stack6 } from "@mui/joy";
5168
5249
  function CurrencyInput3(props) {
5169
5250
  const { id, label, value, onChange, hidden, max, placeholder, useMinorUnit, currency = "USD" } = props;
5170
5251
  const [internalValue, setInternalValue] = useControlledState(value, value, onChange);
5171
- const handleCurrencyChange = useCallback18(
5252
+ const handleCurrencyChange = useCallback19(
5172
5253
  (event) => {
5173
5254
  const newValue = event.target.value;
5174
5255
  setInternalValue(newValue);
@@ -5194,14 +5275,14 @@ function CurrencyInput3(props) {
5194
5275
  CurrencyInput3.displayName = "CurrencyInput";
5195
5276
 
5196
5277
  // src/components/FilterMenu/components/CurrencyRange.tsx
5197
- import React36, { useCallback as useCallback19 } from "react";
5278
+ import React36, { useCallback as useCallback20 } from "react";
5198
5279
  import { Stack as Stack7 } from "@mui/joy";
5199
5280
  function CurrencyRange(props) {
5200
5281
  const { id, label, value, onChange, hidden, max, placeholder, useMinorUnit, currency = "USD" } = props;
5201
5282
  const [internalValue, setInternalValue] = useControlledState(value, null, onChange);
5202
5283
  const minValue = internalValue?.[0];
5203
5284
  const maxValue = internalValue?.[1];
5204
- const handleMinChange = useCallback19(
5285
+ const handleMinChange = useCallback20(
5205
5286
  (event) => {
5206
5287
  const newMinValue = event.target.value;
5207
5288
  const currentMaxValue = maxValue;
@@ -5215,7 +5296,7 @@ function CurrencyRange(props) {
5215
5296
  },
5216
5297
  [maxValue, setInternalValue]
5217
5298
  );
5218
- const handleMaxChange = useCallback19(
5299
+ const handleMaxChange = useCallback20(
5219
5300
  (event) => {
5220
5301
  const newMaxValue = event.target.value;
5221
5302
  const currentMinValue = minValue;
@@ -5267,7 +5348,7 @@ import React38 from "react";
5267
5348
  import { Stack as Stack8, Typography as Typography4 } from "@mui/joy";
5268
5349
 
5269
5350
  // src/components/PercentageInput/PercentageInput.tsx
5270
- import React37, { useCallback as useCallback20, useMemo as useMemo14, useState as useState12 } from "react";
5351
+ import React37, { useCallback as useCallback21, useMemo as useMemo14, useState as useState13 } from "react";
5271
5352
  import { NumericFormat as NumericFormat2 } from "react-number-format";
5272
5353
  import { styled as styled20, useThemeProps as useThemeProps6 } from "@mui/joy";
5273
5354
  var padDecimal = (value, decimalScale) => {
@@ -5324,9 +5405,9 @@ var PercentageInput = React37.forwardRef(
5324
5405
  const [_value, setValue] = useControlledState(
5325
5406
  props.value,
5326
5407
  props.defaultValue,
5327
- useCallback20((value2) => onChange?.({ target: { name, value: value2 } }), [onChange, name])
5408
+ useCallback21((value2) => onChange?.({ target: { name, value: value2 } }), [onChange, name])
5328
5409
  );
5329
- const [internalError, setInternalError] = useState12(
5410
+ const [internalError, setInternalError] = useState13(
5330
5411
  max && _value && _value > max || min && _value && _value < min
5331
5412
  );
5332
5413
  const value = useMemo14(() => {
@@ -5335,7 +5416,7 @@ var PercentageInput = React37.forwardRef(
5335
5416
  }
5336
5417
  return _value;
5337
5418
  }, [_value, useMinorUnit, maxDecimalScale]);
5338
- const handleChange = useCallback20(
5419
+ const handleChange = useCallback21(
5339
5420
  (event) => {
5340
5421
  if (event.target.value === "") {
5341
5422
  setValue(void 0);
@@ -5414,7 +5495,7 @@ var PercentageInput3 = ({
5414
5495
  };
5415
5496
 
5416
5497
  // src/components/FilterMenu/components/PercentageRange.tsx
5417
- import React39, { useCallback as useCallback21 } from "react";
5498
+ import React39, { useCallback as useCallback22 } from "react";
5418
5499
  import { Stack as Stack9 } from "@mui/joy";
5419
5500
  function PercentageRange(props) {
5420
5501
  const { id, label, value, onChange, hidden, useMinorUnit, maxDecimalScale, min, max } = props;
@@ -5425,7 +5506,7 @@ function PercentageRange(props) {
5425
5506
  );
5426
5507
  const minValue = internalValue?.[0];
5427
5508
  const maxValue = internalValue?.[1];
5428
- const handleMinChange = useCallback21(
5509
+ const handleMinChange = useCallback22(
5429
5510
  (event) => {
5430
5511
  const newMinValue = event.target.value;
5431
5512
  const currentMaxValue = maxValue;
@@ -5437,7 +5518,7 @@ function PercentageRange(props) {
5437
5518
  },
5438
5519
  [maxValue, setInternalValue]
5439
5520
  );
5440
- const handleMaxChange = useCallback21(
5521
+ const handleMaxChange = useCallback22(
5441
5522
  (event) => {
5442
5523
  const newMaxValue = event.target.value;
5443
5524
  const currentMinValue = minValue;
@@ -5485,13 +5566,13 @@ function PercentageRange(props) {
5485
5566
  PercentageRange.displayName = "PercentageRange";
5486
5567
 
5487
5568
  // src/components/FilterMenu/components/Autocomplete.tsx
5488
- import React40, { useCallback as useCallback22 } from "react";
5569
+ import React40, { useCallback as useCallback23 } from "react";
5489
5570
  import { Stack as Stack10 } from "@mui/joy";
5490
5571
  function Autocomplete2(props) {
5491
5572
  const { id, label, value, onChange, options, multiple, hidden, placeholder } = props;
5492
5573
  const [internalValue, setInternalValue] = useControlledState(value, void 0, onChange);
5493
5574
  const autocompleteValue = typeof internalValue === "string" || typeof internalValue === "number" ? String(internalValue) : void 0;
5494
- const handleChange = useCallback22(
5575
+ const handleChange = useCallback23(
5495
5576
  (event) => {
5496
5577
  const val = event.target.value;
5497
5578
  if (val) {
@@ -5540,7 +5621,7 @@ function FilterMenu(props) {
5540
5621
  void 0
5541
5622
  // onChange는 Apply 버튼에서만 호출
5542
5623
  );
5543
- const handleFilterChange = useCallback23(
5624
+ const handleFilterChange = useCallback24(
5544
5625
  (filterId, value) => {
5545
5626
  setInternalValues((prev) => ({
5546
5627
  ...prev,
@@ -5549,11 +5630,11 @@ function FilterMenu(props) {
5549
5630
  },
5550
5631
  [setInternalValues]
5551
5632
  );
5552
- const handleApply = useCallback23(() => {
5633
+ const handleApply = useCallback24(() => {
5553
5634
  onChange?.(internalValues);
5554
5635
  onClose?.();
5555
5636
  }, [onChange, onClose, internalValues]);
5556
- const handleClear = useCallback23(() => {
5637
+ const handleClear = useCallback24(() => {
5557
5638
  const clearedValues = resetValues || {};
5558
5639
  setInternalValues(clearedValues);
5559
5640
  onChange?.(clearedValues);
@@ -5589,7 +5670,7 @@ function FilterMenu(props) {
5589
5670
  FilterMenu.displayName = "FilterMenu";
5590
5671
 
5591
5672
  // src/components/Uploader/Uploader.tsx
5592
- import React42, { useCallback as useCallback24, useEffect as useEffect10, useMemo as useMemo15, useRef as useRef9, useState as useState13 } from "react";
5673
+ import React42, { useCallback as useCallback25, useEffect as useEffect11, useMemo as useMemo15, useRef as useRef10, useState as useState14 } from "react";
5593
5674
  import { styled as styled21, Input as Input2 } from "@mui/joy";
5594
5675
  import MuiFileUploadIcon from "@mui/icons-material/CloudUploadRounded";
5595
5676
  import MuiUploadFileIcon from "@mui/icons-material/UploadFileRounded";
@@ -5738,12 +5819,12 @@ var Uploader = React42.memo(
5738
5819
  error: errorProp,
5739
5820
  helperText: helperTextProp
5740
5821
  } = props;
5741
- const dropZoneRef = useRef9(null);
5742
- const inputRef = useRef9(null);
5743
- const [errorText, setErrorText] = useState13();
5744
- const [files, setFiles] = useState13([]);
5745
- const [uploaded, setUploaded] = useState13(props.uploaded || []);
5746
- const [previewState, setPreviewState] = useState13("idle");
5822
+ const dropZoneRef = useRef10(null);
5823
+ const inputRef = useRef10(null);
5824
+ const [errorText, setErrorText] = useState14();
5825
+ const [files, setFiles] = useState14([]);
5826
+ const [uploaded, setUploaded] = useState14(props.uploaded || []);
5827
+ const [previewState, setPreviewState] = useState14("idle");
5747
5828
  const accepts = useMemo15(() => accept.split(",").map((accept2) => accept2.trim()), [accept]);
5748
5829
  const parsedAccepts = useMemo15(
5749
5830
  () => accepts.flatMap((type) => {
@@ -5789,7 +5870,7 @@ var Uploader = React42.memo(
5789
5870
  () => !maxCount || maxCount && [...uploaded, ...files].length !== maxCount,
5790
5871
  [files, maxCount, uploaded]
5791
5872
  );
5792
- const addFiles = useCallback24(
5873
+ const addFiles = useCallback25(
5793
5874
  (uploads) => {
5794
5875
  try {
5795
5876
  const types = parsedAccepts.map((type) => type.replace(".", "")) || [];
@@ -5834,7 +5915,7 @@ var Uploader = React42.memo(
5834
5915
  },
5835
5916
  [files, uploaded, maxCount, parsedAccepts, maxFileSize, maxFileTotalSize, name, onChange]
5836
5917
  );
5837
- useEffect10(() => {
5918
+ useEffect11(() => {
5838
5919
  if (!dropZoneRef.current || disabled) {
5839
5920
  return;
5840
5921
  }
@@ -5872,7 +5953,7 @@ var Uploader = React42.memo(
5872
5953
  );
5873
5954
  return () => cleanup?.();
5874
5955
  }, [disabled, addFiles]);
5875
- useEffect10(() => {
5956
+ useEffect11(() => {
5876
5957
  if (inputRef.current && minCount) {
5877
5958
  if (files.length < minCount) {
5878
5959
  inputRef.current.setCustomValidity(`At least ${minCount} files are required.`);
@@ -5881,14 +5962,14 @@ var Uploader = React42.memo(
5881
5962
  }
5882
5963
  }
5883
5964
  }, [inputRef, files, minCount]);
5884
- const handleFileChanged = useCallback24(
5965
+ const handleFileChanged = useCallback25(
5885
5966
  (event) => {
5886
5967
  const files2 = Array.from(event.target.files || []);
5887
5968
  addFiles(files2);
5888
5969
  },
5889
5970
  [addFiles]
5890
5971
  );
5891
- const handleDeleteFile = useCallback24(
5972
+ const handleDeleteFile = useCallback25(
5892
5973
  (deletedFile) => {
5893
5974
  if (deletedFile instanceof File) {
5894
5975
  setFiles((current) => {
@@ -5908,7 +5989,7 @@ var Uploader = React42.memo(
5908
5989
  },
5909
5990
  [name, onChange, onDelete]
5910
5991
  );
5911
- const handleUploaderButtonClick = useCallback24(() => {
5992
+ const handleUploaderButtonClick = useCallback25(() => {
5912
5993
  inputRef.current?.click();
5913
5994
  }, []);
5914
5995
  const uploader = /* @__PURE__ */ React42.createElement(
@@ -6003,16 +6084,16 @@ function IconMenuButton(props) {
6003
6084
  IconMenuButton.displayName = "IconMenuButton";
6004
6085
 
6005
6086
  // src/components/Markdown/Markdown.tsx
6006
- import React44, { lazy, Suspense, useEffect as useEffect11, useState as useState14 } from "react";
6087
+ import React44, { lazy, Suspense, useEffect as useEffect12, useState as useState15 } from "react";
6007
6088
  import { Skeleton } from "@mui/joy";
6008
6089
  import { Link as Link2 } from "@mui/joy";
6009
6090
  import remarkGfm from "remark-gfm";
6010
6091
  var LazyReactMarkdown = lazy(() => import("react-markdown"));
6011
6092
  var Markdown = (props) => {
6012
- const [rehypeAccent2, setRehypeAccent] = useState14(null);
6013
- useEffect11(() => {
6093
+ const [rehypeAccent, setRehypeAccent] = useState15(null);
6094
+ useEffect12(() => {
6014
6095
  const loadRehypeAccent = async () => {
6015
- const module = await Promise.resolve().then(() => (init_rehype_accent(), rehype_accent_exports));
6096
+ const module = await import("./chunks/rehype-accent-FZRUD7VI.js");
6016
6097
  setRehypeAccent(() => module.rehypeAccent);
6017
6098
  };
6018
6099
  loadRehypeAccent();
@@ -6029,7 +6110,7 @@ var Markdown = (props) => {
6029
6110
  fallback,
6030
6111
  ...innerProps
6031
6112
  } = props;
6032
- if (!rehypeAccent2) {
6113
+ if (!rehypeAccent) {
6033
6114
  return null;
6034
6115
  }
6035
6116
  return /* @__PURE__ */ React44.createElement(Typography, { component: "div", color, textColor, level: defaultLevel, ...innerProps }, /* @__PURE__ */ React44.createElement(
@@ -6042,7 +6123,7 @@ var Markdown = (props) => {
6042
6123
  {
6043
6124
  ...markdownOptions,
6044
6125
  children: content,
6045
- rehypePlugins: [[rehypeAccent2, { accentColor }]],
6126
+ rehypePlugins: [[rehypeAccent, { accentColor }]],
6046
6127
  remarkPlugins: [remarkGfm],
6047
6128
  components: {
6048
6129
  a: ({ children, href }) => /* @__PURE__ */ React44.createElement(Link2, { href, target: defaultLinkAction }, children),
@@ -6184,7 +6265,7 @@ function MenuButton(props) {
6184
6265
  MenuButton.displayName = "MenuButton";
6185
6266
 
6186
6267
  // src/components/MonthPicker/MonthPicker.tsx
6187
- import React46, { forwardRef as forwardRef9, useCallback as useCallback25, useEffect as useEffect12, useImperativeHandle as useImperativeHandle4, useRef as useRef10, useState as useState15 } from "react";
6268
+ import React46, { forwardRef as forwardRef9, useCallback as useCallback26, useEffect as useEffect13, useImperativeHandle as useImperativeHandle4, useRef as useRef11, useState as useState16 } from "react";
6188
6269
  import CalendarTodayIcon3 from "@mui/icons-material/CalendarToday";
6189
6270
  import { styled as styled22, useThemeProps as useThemeProps7 } from "@mui/joy";
6190
6271
  import { FocusTrap as FocusTrap3, ClickAwayListener as ClickAwayListener3, Popper as Popper4 } from "@mui/base";
@@ -6266,14 +6347,14 @@ var MonthPicker = forwardRef9((inProps, ref) => {
6266
6347
  locale,
6267
6348
  ...innerProps
6268
6349
  } = props;
6269
- const innerRef = useRef10(null);
6270
- const buttonRef = useRef10(null);
6350
+ const innerRef = useRef11(null);
6351
+ const buttonRef = useRef11(null);
6271
6352
  const [value, setValue, isControlled] = useControlledState(
6272
6353
  props.value,
6273
6354
  props.defaultValue || "",
6274
- useCallback25((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
6355
+ useCallback26((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
6275
6356
  );
6276
- const getFormattedDisplayValue = useCallback25(
6357
+ const getFormattedDisplayValue = useCallback26(
6277
6358
  (inputValue) => {
6278
6359
  if (!inputValue) return "";
6279
6360
  try {
@@ -6284,19 +6365,19 @@ var MonthPicker = forwardRef9((inProps, ref) => {
6284
6365
  },
6285
6366
  [format, displayFormat, locale]
6286
6367
  );
6287
- const [displayValue, setDisplayValue] = useState15(() => getFormattedDisplayValue(value));
6288
- const [anchorEl, setAnchorEl] = useState15(null);
6368
+ const [displayValue, setDisplayValue] = useState16(() => getFormattedDisplayValue(value));
6369
+ const [anchorEl, setAnchorEl] = useState16(null);
6289
6370
  const open = Boolean(anchorEl);
6290
- useEffect12(() => {
6371
+ useEffect13(() => {
6291
6372
  if (!anchorEl) {
6292
6373
  innerRef.current?.blur();
6293
6374
  }
6294
6375
  }, [anchorEl, innerRef]);
6295
6376
  useImperativeHandle4(ref, () => innerRef.current, [innerRef]);
6296
- useEffect12(() => {
6377
+ useEffect13(() => {
6297
6378
  setDisplayValue(getFormattedDisplayValue(value));
6298
6379
  }, [value, getFormattedDisplayValue]);
6299
- const handleChange = useCallback25(
6380
+ const handleChange = useCallback26(
6300
6381
  (event) => {
6301
6382
  const newValue = event.target.value;
6302
6383
  setValue(newValue);
@@ -6306,14 +6387,14 @@ var MonthPicker = forwardRef9((inProps, ref) => {
6306
6387
  },
6307
6388
  [setValue, getFormattedDisplayValue, isControlled]
6308
6389
  );
6309
- const handleCalendarToggle = useCallback25(
6390
+ const handleCalendarToggle = useCallback26(
6310
6391
  (event) => {
6311
6392
  setAnchorEl(anchorEl ? null : event.currentTarget);
6312
6393
  innerRef.current?.focus();
6313
6394
  },
6314
6395
  [anchorEl, setAnchorEl, innerRef]
6315
6396
  );
6316
- const handleInputMouseDown = useCallback25(
6397
+ const handleInputMouseDown = useCallback26(
6317
6398
  (event) => {
6318
6399
  event.preventDefault();
6319
6400
  buttonRef.current?.focus();
@@ -6437,7 +6518,7 @@ var MonthPicker = forwardRef9((inProps, ref) => {
6437
6518
  });
6438
6519
 
6439
6520
  // src/components/MonthRangePicker/MonthRangePicker.tsx
6440
- import React47, { forwardRef as forwardRef10, useCallback as useCallback26, useEffect as useEffect13, useImperativeHandle as useImperativeHandle5, useMemo as useMemo16, useRef as useRef11, useState as useState16 } from "react";
6521
+ import React47, { forwardRef as forwardRef10, useCallback as useCallback27, useEffect as useEffect14, useImperativeHandle as useImperativeHandle5, useMemo as useMemo16, useRef as useRef12, useState as useState17 } from "react";
6441
6522
  import { IMaskInput as IMaskInput3, IMask as IMask3 } from "react-imask";
6442
6523
  import CalendarTodayIcon4 from "@mui/icons-material/CalendarToday";
6443
6524
  import { styled as styled23, useThemeProps as useThemeProps8 } from "@mui/joy";
@@ -6545,35 +6626,35 @@ var MonthRangePicker = forwardRef10((inProps, ref) => {
6545
6626
  size,
6546
6627
  ...innerProps
6547
6628
  } = props;
6548
- const innerRef = useRef11(null);
6629
+ const innerRef = useRef12(null);
6549
6630
  const [value, setValue] = useControlledState(
6550
6631
  props.value,
6551
6632
  props.defaultValue || "",
6552
- useCallback26((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
6633
+ useCallback27((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
6553
6634
  );
6554
- const [anchorEl, setAnchorEl] = useState16(null);
6635
+ const [anchorEl, setAnchorEl] = useState17(null);
6555
6636
  const open = Boolean(anchorEl);
6556
6637
  const calendarValue = useMemo16(() => value ? parseDates2(value) : void 0, [value]);
6557
- useEffect13(() => {
6638
+ useEffect14(() => {
6558
6639
  if (!anchorEl) {
6559
6640
  innerRef.current?.blur();
6560
6641
  }
6561
6642
  }, [anchorEl, innerRef]);
6562
6643
  useImperativeHandle5(ref, () => innerRef.current, [innerRef]);
6563
- const handleChange = useCallback26(
6644
+ const handleChange = useCallback27(
6564
6645
  (event) => {
6565
6646
  setValue(event.target.value);
6566
6647
  },
6567
6648
  [setValue]
6568
6649
  );
6569
- const handleCalendarToggle = useCallback26(
6650
+ const handleCalendarToggle = useCallback27(
6570
6651
  (event) => {
6571
6652
  setAnchorEl(anchorEl ? null : event.currentTarget);
6572
6653
  innerRef.current?.focus();
6573
6654
  },
6574
6655
  [anchorEl, setAnchorEl, innerRef]
6575
6656
  );
6576
- const handleCalendarChange = useCallback26(
6657
+ const handleCalendarChange = useCallback27(
6577
6658
  ([date1, date2]) => {
6578
6659
  if (!date1 || !date2) return;
6579
6660
  setValue(formatValueString4([date1, date2], format));
@@ -6800,7 +6881,7 @@ function Navigator(props) {
6800
6881
  Navigator.displayName = "Navigator";
6801
6882
 
6802
6883
  // src/components/ProfileMenu/ProfileMenu.tsx
6803
- import React51, { useCallback as useCallback27, useMemo as useMemo17 } from "react";
6884
+ import React51, { useCallback as useCallback28, useMemo as useMemo17 } from "react";
6804
6885
  import { Dropdown as Dropdown2, ListDivider, menuItemClasses, styled as styled26, MenuButton as MenuButton2 } from "@mui/joy";
6805
6886
  import { ClickAwayListener as ClickAwayListener5 } from "@mui/base";
6806
6887
  import DropdownIcon from "@mui/icons-material/ArrowDropDown";
@@ -6852,7 +6933,7 @@ function ProfileMenu(props) {
6852
6933
  const [open, setOpen] = useControlledState(
6853
6934
  _open,
6854
6935
  defaultOpen ?? false,
6855
- useCallback27((value) => onOpenChange?.(value), [onOpenChange])
6936
+ useCallback28((value) => onOpenChange?.(value), [onOpenChange])
6856
6937
  );
6857
6938
  return /* @__PURE__ */ React51.createElement(ClickAwayListener5, { onClickAway: () => setOpen(false) }, /* @__PURE__ */ React51.createElement("div", null, /* @__PURE__ */ React51.createElement(Dropdown2, { open }, /* @__PURE__ */ React51.createElement(
6858
6939
  ProfileMenuButton,