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