@x-plat/design-system 0.5.21 → 0.5.23
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/components/ChatInput/index.cjs +177 -0
- package/dist/components/ChatInput/index.css +87 -0
- package/dist/components/ChatInput/index.d.cts +14 -0
- package/dist/components/ChatInput/index.d.ts +14 -0
- package/dist/components/ChatInput/index.js +140 -0
- package/dist/components/Table/index.cjs +2 -1
- package/dist/components/Table/index.css +117 -0
- package/dist/components/Table/index.d.cts +3 -1
- package/dist/components/Table/index.d.ts +3 -1
- package/dist/components/Table/index.js +2 -1
- package/dist/components/index.cjs +625 -523
- package/dist/components/index.css +205 -0
- package/dist/components/index.d.cts +1 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.js +623 -522
- package/dist/index.cjs +634 -547
- package/dist/index.css +205 -0
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +632 -546
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -92,6 +92,7 @@ __export(index_exports, {
|
|
|
92
92
|
CardTab: () => CardTab_default,
|
|
93
93
|
CastIcon: () => CastIcon_default,
|
|
94
94
|
Chart: () => Chart_default,
|
|
95
|
+
ChatInput: () => ChatInput_default,
|
|
95
96
|
CheckBox: () => CheckBox_default,
|
|
96
97
|
CheckCircleIcon: () => CheckCircleIcon_default,
|
|
97
98
|
CheckIcon: () => CheckIcon_default,
|
|
@@ -6432,30 +6433,114 @@ var Calendar = (props) => {
|
|
|
6432
6433
|
Calendar.displayName = "Calendar";
|
|
6433
6434
|
var Calendar_default = Calendar;
|
|
6434
6435
|
|
|
6435
|
-
// src/components/
|
|
6436
|
+
// src/components/ChatInput/ChatInput.tsx
|
|
6437
|
+
var import_react4 = __toESM(require("react"), 1);
|
|
6436
6438
|
var import_jsx_runtime302 = require("react/jsx-runtime");
|
|
6439
|
+
var MAX_HEIGHT = 200;
|
|
6440
|
+
var ChatInput = import_react4.default.forwardRef(
|
|
6441
|
+
(props, ref) => {
|
|
6442
|
+
const {
|
|
6443
|
+
placeholder,
|
|
6444
|
+
value: valueProp,
|
|
6445
|
+
disabled = false,
|
|
6446
|
+
buttonType = "primary",
|
|
6447
|
+
onSubmit,
|
|
6448
|
+
onChange
|
|
6449
|
+
} = props;
|
|
6450
|
+
const isControlled = valueProp !== void 0;
|
|
6451
|
+
const [internalValue, setInternalValue] = import_react4.default.useState("");
|
|
6452
|
+
const value = isControlled ? valueProp : internalValue;
|
|
6453
|
+
const hasText = value.trim().length > 0;
|
|
6454
|
+
const textareaRef = import_react4.default.useRef(null);
|
|
6455
|
+
const setRefs = import_react4.default.useCallback(
|
|
6456
|
+
(el) => {
|
|
6457
|
+
textareaRef.current = el;
|
|
6458
|
+
if (typeof ref === "function") ref(el);
|
|
6459
|
+
else if (ref) ref.current = el;
|
|
6460
|
+
},
|
|
6461
|
+
[ref]
|
|
6462
|
+
);
|
|
6463
|
+
const updateHeight = import_react4.default.useCallback(() => {
|
|
6464
|
+
const el = textareaRef.current;
|
|
6465
|
+
if (!el) return;
|
|
6466
|
+
el.style.height = "0px";
|
|
6467
|
+
el.style.height = `${Math.min(el.scrollHeight, MAX_HEIGHT)}px`;
|
|
6468
|
+
}, []);
|
|
6469
|
+
const handleChange = (e) => {
|
|
6470
|
+
const val = e.target.value;
|
|
6471
|
+
if (!isControlled) setInternalValue(val);
|
|
6472
|
+
onChange?.(val);
|
|
6473
|
+
};
|
|
6474
|
+
const handleSubmit = () => {
|
|
6475
|
+
if (!hasText || disabled) return;
|
|
6476
|
+
onSubmit?.(value);
|
|
6477
|
+
if (!isControlled) setInternalValue("");
|
|
6478
|
+
requestAnimationFrame(updateHeight);
|
|
6479
|
+
};
|
|
6480
|
+
const handleKeyDown = (e) => {
|
|
6481
|
+
if (e.key === "Enter" && !e.shiftKey) {
|
|
6482
|
+
e.preventDefault();
|
|
6483
|
+
handleSubmit();
|
|
6484
|
+
}
|
|
6485
|
+
};
|
|
6486
|
+
import_react4.default.useEffect(() => {
|
|
6487
|
+
updateHeight();
|
|
6488
|
+
}, [value, updateHeight]);
|
|
6489
|
+
return /* @__PURE__ */ (0, import_jsx_runtime302.jsxs)("div", { className: clsx_default("lib-xplat-chat-input", disabled && "disabled"), children: [
|
|
6490
|
+
/* @__PURE__ */ (0, import_jsx_runtime302.jsx)(
|
|
6491
|
+
"textarea",
|
|
6492
|
+
{
|
|
6493
|
+
ref: setRefs,
|
|
6494
|
+
className: "chat-input-textarea",
|
|
6495
|
+
placeholder,
|
|
6496
|
+
value,
|
|
6497
|
+
disabled,
|
|
6498
|
+
rows: 1,
|
|
6499
|
+
onChange: handleChange,
|
|
6500
|
+
onKeyDown: handleKeyDown
|
|
6501
|
+
}
|
|
6502
|
+
),
|
|
6503
|
+
/* @__PURE__ */ (0, import_jsx_runtime302.jsx)(
|
|
6504
|
+
"button",
|
|
6505
|
+
{
|
|
6506
|
+
type: "button",
|
|
6507
|
+
className: clsx_default("chat-input-send", `btn-${buttonType}`),
|
|
6508
|
+
disabled: !hasText || disabled,
|
|
6509
|
+
onClick: handleSubmit,
|
|
6510
|
+
"aria-label": "\uC804\uC1A1",
|
|
6511
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime302.jsx)(SendIcon_default, {})
|
|
6512
|
+
}
|
|
6513
|
+
)
|
|
6514
|
+
] });
|
|
6515
|
+
}
|
|
6516
|
+
);
|
|
6517
|
+
ChatInput.displayName = "ChatInput";
|
|
6518
|
+
var ChatInput_default = ChatInput;
|
|
6519
|
+
|
|
6520
|
+
// src/components/Box/Box.tsx
|
|
6521
|
+
var import_jsx_runtime303 = require("react/jsx-runtime");
|
|
6437
6522
|
var Box = ({
|
|
6438
6523
|
children,
|
|
6439
6524
|
title,
|
|
6440
6525
|
variant = "outlined",
|
|
6441
6526
|
padding = "md"
|
|
6442
6527
|
}) => {
|
|
6443
|
-
return /* @__PURE__ */ (0,
|
|
6444
|
-
title && /* @__PURE__ */ (0,
|
|
6445
|
-
/* @__PURE__ */ (0,
|
|
6528
|
+
return /* @__PURE__ */ (0, import_jsx_runtime303.jsxs)("div", { className: clsx_default("lib-xplat-box", variant, `pad-${padding}`), children: [
|
|
6529
|
+
title && /* @__PURE__ */ (0, import_jsx_runtime303.jsx)("div", { className: "box-title", children: title }),
|
|
6530
|
+
/* @__PURE__ */ (0, import_jsx_runtime303.jsx)("div", { className: "box-content", children })
|
|
6446
6531
|
] });
|
|
6447
6532
|
};
|
|
6448
6533
|
Box.displayName = "Box";
|
|
6449
6534
|
var Box_default = Box;
|
|
6450
6535
|
|
|
6451
6536
|
// src/components/CardTab/CardTab.tsx
|
|
6452
|
-
var
|
|
6537
|
+
var import_react5 = __toESM(require("react"), 1);
|
|
6453
6538
|
|
|
6454
6539
|
// src/components/CardTab/CardTabPanel.tsx
|
|
6455
|
-
var
|
|
6540
|
+
var import_jsx_runtime304 = require("react/jsx-runtime");
|
|
6456
6541
|
var CardTabPanel = (props) => {
|
|
6457
6542
|
const { children, columns = 3 } = props;
|
|
6458
|
-
return /* @__PURE__ */ (0,
|
|
6543
|
+
return /* @__PURE__ */ (0, import_jsx_runtime304.jsx)(
|
|
6459
6544
|
"div",
|
|
6460
6545
|
{
|
|
6461
6546
|
className: "card-tab-panel",
|
|
@@ -6468,7 +6553,7 @@ CardTabPanel.displayName = "CardTab.Panel";
|
|
|
6468
6553
|
var CardTabPanel_default = CardTabPanel;
|
|
6469
6554
|
|
|
6470
6555
|
// src/components/CardTab/CardTab.tsx
|
|
6471
|
-
var
|
|
6556
|
+
var import_jsx_runtime305 = require("react/jsx-runtime");
|
|
6472
6557
|
var CardTabRoot = (props) => {
|
|
6473
6558
|
const {
|
|
6474
6559
|
tabs,
|
|
@@ -6478,7 +6563,7 @@ var CardTabRoot = (props) => {
|
|
|
6478
6563
|
children
|
|
6479
6564
|
} = props;
|
|
6480
6565
|
const isControlled = activeValueProp !== void 0;
|
|
6481
|
-
const [uncontrolledValue, setUncontrolledValue] =
|
|
6566
|
+
const [uncontrolledValue, setUncontrolledValue] = import_react5.default.useState(tabs[0]?.value ?? "");
|
|
6482
6567
|
const activeValue = isControlled ? activeValueProp : uncontrolledValue;
|
|
6483
6568
|
const handleTabClick = (tab) => {
|
|
6484
6569
|
if (!isControlled) {
|
|
@@ -6486,16 +6571,16 @@ var CardTabRoot = (props) => {
|
|
|
6486
6571
|
}
|
|
6487
6572
|
onChange?.(tab);
|
|
6488
6573
|
};
|
|
6489
|
-
const panels =
|
|
6490
|
-
(child) =>
|
|
6574
|
+
const panels = import_react5.default.Children.toArray(children).filter(
|
|
6575
|
+
(child) => import_react5.default.isValidElement(child) && child.type === CardTabPanel_default
|
|
6491
6576
|
);
|
|
6492
6577
|
const activePanel = panels.find(
|
|
6493
6578
|
(panel) => panel.props.value === activeValue
|
|
6494
6579
|
);
|
|
6495
|
-
return /* @__PURE__ */ (0,
|
|
6496
|
-
/* @__PURE__ */ (0,
|
|
6580
|
+
return /* @__PURE__ */ (0, import_jsx_runtime305.jsxs)("div", { className: clsx_default("lib-xplat-card-tab", size), children: [
|
|
6581
|
+
/* @__PURE__ */ (0, import_jsx_runtime305.jsx)("div", { className: "card-tab-bar", children: tabs.map((tab) => {
|
|
6497
6582
|
const isActive = tab.value === activeValue;
|
|
6498
|
-
return /* @__PURE__ */ (0,
|
|
6583
|
+
return /* @__PURE__ */ (0, import_jsx_runtime305.jsx)(
|
|
6499
6584
|
"button",
|
|
6500
6585
|
{
|
|
6501
6586
|
className: clsx_default("card-tab-trigger", isActive && "active"),
|
|
@@ -6507,7 +6592,7 @@ var CardTabRoot = (props) => {
|
|
|
6507
6592
|
tab.value
|
|
6508
6593
|
);
|
|
6509
6594
|
}) }),
|
|
6510
|
-
/* @__PURE__ */ (0,
|
|
6595
|
+
/* @__PURE__ */ (0, import_jsx_runtime305.jsx)("div", { className: "card-tab-body", children: activePanel })
|
|
6511
6596
|
] });
|
|
6512
6597
|
};
|
|
6513
6598
|
CardTabRoot.displayName = "CardTab";
|
|
@@ -6517,8 +6602,8 @@ var CardTab = Object.assign(CardTabRoot, {
|
|
|
6517
6602
|
var CardTab_default = CardTab;
|
|
6518
6603
|
|
|
6519
6604
|
// src/components/Chart/Chart.tsx
|
|
6520
|
-
var
|
|
6521
|
-
var
|
|
6605
|
+
var import_react6 = __toESM(require("react"), 1);
|
|
6606
|
+
var import_jsx_runtime306 = require("react/jsx-runtime");
|
|
6522
6607
|
var CATEGORICAL_COUNT2 = 8;
|
|
6523
6608
|
var LINE_BAR_PALETTES = Array.from({ length: CATEGORICAL_COUNT2 }, (_, i) => {
|
|
6524
6609
|
const n = i + 1;
|
|
@@ -6564,11 +6649,11 @@ var toSmoothPath = (points) => {
|
|
|
6564
6649
|
};
|
|
6565
6650
|
var RESIZE_SETTLE_MS = 150;
|
|
6566
6651
|
var useChartSize = (ref) => {
|
|
6567
|
-
const [size, setSize] =
|
|
6568
|
-
const settleTimer =
|
|
6569
|
-
const committedSize =
|
|
6570
|
-
const initialRef =
|
|
6571
|
-
|
|
6652
|
+
const [size, setSize] = import_react6.default.useState({ width: 0, height: 0 });
|
|
6653
|
+
const settleTimer = import_react6.default.useRef(0);
|
|
6654
|
+
const committedSize = import_react6.default.useRef({ width: 0, height: 0 });
|
|
6655
|
+
const initialRef = import_react6.default.useRef(true);
|
|
6656
|
+
import_react6.default.useEffect(() => {
|
|
6572
6657
|
const el = ref.current;
|
|
6573
6658
|
if (!el) return;
|
|
6574
6659
|
const observer = new ResizeObserver((entries) => {
|
|
@@ -6610,10 +6695,10 @@ var useChartSize = (ref) => {
|
|
|
6610
6695
|
};
|
|
6611
6696
|
var prefersReducedMotion = () => typeof window !== "undefined" && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
|
|
6612
6697
|
var useChartAnimation = (containerRef, dataKey) => {
|
|
6613
|
-
const [animate, setAnimate] =
|
|
6614
|
-
const prevDataKey =
|
|
6615
|
-
const hasAnimated =
|
|
6616
|
-
|
|
6698
|
+
const [animate, setAnimate] = import_react6.default.useState(false);
|
|
6699
|
+
const prevDataKey = import_react6.default.useRef(dataKey);
|
|
6700
|
+
const hasAnimated = import_react6.default.useRef(false);
|
|
6701
|
+
import_react6.default.useEffect(() => {
|
|
6617
6702
|
if (prefersReducedMotion()) return;
|
|
6618
6703
|
const el = containerRef.current;
|
|
6619
6704
|
if (!el) return;
|
|
@@ -6629,7 +6714,7 @@ var useChartAnimation = (containerRef, dataKey) => {
|
|
|
6629
6714
|
observer.observe(el);
|
|
6630
6715
|
return () => observer.disconnect();
|
|
6631
6716
|
}, [containerRef]);
|
|
6632
|
-
|
|
6717
|
+
import_react6.default.useEffect(() => {
|
|
6633
6718
|
if (dataKey !== prevDataKey.current) {
|
|
6634
6719
|
prevDataKey.current = dataKey;
|
|
6635
6720
|
if (prefersReducedMotion()) return;
|
|
@@ -6640,15 +6725,15 @@ var useChartAnimation = (containerRef, dataKey) => {
|
|
|
6640
6725
|
return animate || prefersReducedMotion();
|
|
6641
6726
|
};
|
|
6642
6727
|
var useChartTooltip = (enabled) => {
|
|
6643
|
-
const [tooltip, setTooltip] =
|
|
6728
|
+
const [tooltip, setTooltip] = import_react6.default.useState({
|
|
6644
6729
|
visible: false,
|
|
6645
6730
|
x: 0,
|
|
6646
6731
|
y: 0,
|
|
6647
6732
|
content: ""
|
|
6648
6733
|
});
|
|
6649
|
-
const containerRef =
|
|
6650
|
-
const rafRef =
|
|
6651
|
-
const move =
|
|
6734
|
+
const containerRef = import_react6.default.useRef(null);
|
|
6735
|
+
const rafRef = import_react6.default.useRef(0);
|
|
6736
|
+
const move = import_react6.default.useCallback((e) => {
|
|
6652
6737
|
if (!enabled) return;
|
|
6653
6738
|
const clientX = e.clientX;
|
|
6654
6739
|
const clientY = e.clientY;
|
|
@@ -6663,7 +6748,7 @@ var useChartTooltip = (enabled) => {
|
|
|
6663
6748
|
}));
|
|
6664
6749
|
});
|
|
6665
6750
|
}, [enabled]);
|
|
6666
|
-
const show =
|
|
6751
|
+
const show = import_react6.default.useCallback((e, content) => {
|
|
6667
6752
|
if (!enabled) return;
|
|
6668
6753
|
const rect = containerRef.current?.getBoundingClientRect();
|
|
6669
6754
|
if (!rect) return;
|
|
@@ -6674,18 +6759,18 @@ var useChartTooltip = (enabled) => {
|
|
|
6674
6759
|
content
|
|
6675
6760
|
});
|
|
6676
6761
|
}, [enabled]);
|
|
6677
|
-
const hide =
|
|
6762
|
+
const hide = import_react6.default.useCallback(() => {
|
|
6678
6763
|
cancelAnimationFrame(rafRef.current);
|
|
6679
6764
|
setTooltip((prev) => ({ ...prev, visible: false }));
|
|
6680
6765
|
}, []);
|
|
6681
6766
|
return { tooltip, show, hide, move, containerRef };
|
|
6682
6767
|
};
|
|
6683
|
-
var GridLines =
|
|
6768
|
+
var GridLines = import_react6.default.memo(({ width, height, chartH, maxVal }) => /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(import_jsx_runtime306.Fragment, { children: [0, 0.25, 0.5, 0.75, 1].map((ratio) => {
|
|
6684
6769
|
const y = PADDING.top + (1 - ratio) * chartH;
|
|
6685
6770
|
const val = Math.round(maxVal * ratio);
|
|
6686
|
-
return /* @__PURE__ */ (0,
|
|
6687
|
-
/* @__PURE__ */ (0,
|
|
6688
|
-
/* @__PURE__ */ (0,
|
|
6771
|
+
return /* @__PURE__ */ (0, import_jsx_runtime306.jsxs)("g", { children: [
|
|
6772
|
+
/* @__PURE__ */ (0, import_jsx_runtime306.jsx)("line", { x1: PADDING.left, y1: y, x2: width - PADDING.right, y2: y, className: "chart-grid" }),
|
|
6773
|
+
/* @__PURE__ */ (0, import_jsx_runtime306.jsx)("text", { x: PADDING.left - 8, y: y + 4, className: "chart-axis-label", textAnchor: "end", children: val })
|
|
6689
6774
|
] }, ratio);
|
|
6690
6775
|
}) }));
|
|
6691
6776
|
GridLines.displayName = "GridLines";
|
|
@@ -6695,25 +6780,25 @@ var getLabelStep = (count, chartW) => {
|
|
|
6695
6780
|
if (count <= maxLabels) return 1;
|
|
6696
6781
|
return Math.ceil(count / maxLabels);
|
|
6697
6782
|
};
|
|
6698
|
-
var AxisLabels =
|
|
6783
|
+
var AxisLabels = import_react6.default.memo(({ labels, count, chartW, height }) => {
|
|
6699
6784
|
const step = getLabelStep(count, chartW);
|
|
6700
|
-
return /* @__PURE__ */ (0,
|
|
6785
|
+
return /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(import_jsx_runtime306.Fragment, { children: labels.map((label, i) => {
|
|
6701
6786
|
if (i % step !== 0) return null;
|
|
6702
6787
|
const x = PADDING.left + i / (count - 1 || 1) * chartW;
|
|
6703
|
-
return /* @__PURE__ */ (0,
|
|
6788
|
+
return /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("text", { x, y: height - 8, className: "chart-axis-label", textAnchor: "middle", children: label }, i);
|
|
6704
6789
|
}) });
|
|
6705
6790
|
});
|
|
6706
6791
|
AxisLabels.displayName = "AxisLabels";
|
|
6707
|
-
var LineChart =
|
|
6708
|
-
const entries =
|
|
6709
|
-
const maxVal =
|
|
6792
|
+
var LineChart = import_react6.default.memo(({ data, labels, width, height, animate, onHover, onMove, onLeave }) => {
|
|
6793
|
+
const entries = import_react6.default.useMemo(() => Object.entries(data), [data]);
|
|
6794
|
+
const maxVal = import_react6.default.useMemo(() => {
|
|
6710
6795
|
const allValues = entries.flatMap(([, v]) => v);
|
|
6711
6796
|
return Math.max(...allValues) * 1.2 || 1;
|
|
6712
6797
|
}, [entries]);
|
|
6713
6798
|
const count = labels.length;
|
|
6714
6799
|
const chartW = width - PADDING.left - PADDING.right;
|
|
6715
6800
|
const chartH = height - PADDING.top - PADDING.bottom;
|
|
6716
|
-
const seriesPoints =
|
|
6801
|
+
const seriesPoints = import_react6.default.useMemo(
|
|
6717
6802
|
() => entries.map(
|
|
6718
6803
|
([, values]) => values.map((v, i) => ({
|
|
6719
6804
|
x: PADDING.left + i / (count - 1 || 1) * chartW,
|
|
@@ -6724,8 +6809,8 @@ var LineChart = import_react5.default.memo(({ data, labels, width, height, anima
|
|
|
6724
6809
|
[entries, count, chartW, chartH, maxVal]
|
|
6725
6810
|
);
|
|
6726
6811
|
const showPoints = count <= 100;
|
|
6727
|
-
const lineRefs =
|
|
6728
|
-
|
|
6812
|
+
const lineRefs = import_react6.default.useRef([]);
|
|
6813
|
+
import_react6.default.useEffect(() => {
|
|
6729
6814
|
if (!animate) return;
|
|
6730
6815
|
lineRefs.current.forEach((el) => {
|
|
6731
6816
|
if (!el) return;
|
|
@@ -6738,9 +6823,9 @@ var LineChart = import_react5.default.memo(({ data, labels, width, height, anima
|
|
|
6738
6823
|
});
|
|
6739
6824
|
});
|
|
6740
6825
|
}, [animate, seriesPoints]);
|
|
6741
|
-
return /* @__PURE__ */ (0,
|
|
6742
|
-
/* @__PURE__ */ (0,
|
|
6743
|
-
/* @__PURE__ */ (0,
|
|
6826
|
+
return /* @__PURE__ */ (0, import_jsx_runtime306.jsxs)("svg", { viewBox: `0 0 ${width} ${height}`, className: "chart-svg", children: [
|
|
6827
|
+
/* @__PURE__ */ (0, import_jsx_runtime306.jsx)(GridLines, { width, height, chartH, maxVal }),
|
|
6828
|
+
/* @__PURE__ */ (0, import_jsx_runtime306.jsx)(AxisLabels, { labels, count, chartW, height }),
|
|
6744
6829
|
entries.map(([key], di) => {
|
|
6745
6830
|
const palette = getPalette(LINE_BAR_PALETTES, di, key);
|
|
6746
6831
|
const color = palette[2];
|
|
@@ -6749,12 +6834,12 @@ var LineChart = import_react5.default.memo(({ data, labels, width, height, anima
|
|
|
6749
6834
|
const gradientId = `line-gradient-${di}`;
|
|
6750
6835
|
const polyPoints = points.map((p) => `${p.x},${p.y}`).join(" ");
|
|
6751
6836
|
const areaD = `M ${points[0].x},${points[0].y} ${points.map((p) => `L ${p.x},${p.y}`).join(" ")} L ${points[points.length - 1].x},${PADDING.top + chartH} L ${points[0].x},${PADDING.top + chartH} Z`;
|
|
6752
|
-
return /* @__PURE__ */ (0,
|
|
6753
|
-
/* @__PURE__ */ (0,
|
|
6754
|
-
/* @__PURE__ */ (0,
|
|
6755
|
-
/* @__PURE__ */ (0,
|
|
6837
|
+
return /* @__PURE__ */ (0, import_jsx_runtime306.jsxs)("g", { children: [
|
|
6838
|
+
/* @__PURE__ */ (0, import_jsx_runtime306.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime306.jsxs)("linearGradient", { id: gradientId, x1: "0", y1: "0", x2: "0", y2: "1", children: [
|
|
6839
|
+
/* @__PURE__ */ (0, import_jsx_runtime306.jsx)("stop", { offset: "0%", stopColor: areaColor, stopOpacity: "0.2" }),
|
|
6840
|
+
/* @__PURE__ */ (0, import_jsx_runtime306.jsx)("stop", { offset: "100%", stopColor: areaColor, stopOpacity: "0" })
|
|
6756
6841
|
] }) }),
|
|
6757
|
-
/* @__PURE__ */ (0,
|
|
6842
|
+
/* @__PURE__ */ (0, import_jsx_runtime306.jsx)(
|
|
6758
6843
|
"path",
|
|
6759
6844
|
{
|
|
6760
6845
|
d: areaD,
|
|
@@ -6763,7 +6848,7 @@ var LineChart = import_react5.default.memo(({ data, labels, width, height, anima
|
|
|
6763
6848
|
style: animate ? { animationDelay: "600ms" } : { opacity: 1 }
|
|
6764
6849
|
}
|
|
6765
6850
|
),
|
|
6766
|
-
/* @__PURE__ */ (0,
|
|
6851
|
+
/* @__PURE__ */ (0, import_jsx_runtime306.jsx)(
|
|
6767
6852
|
"polyline",
|
|
6768
6853
|
{
|
|
6769
6854
|
ref: (el) => {
|
|
@@ -6775,7 +6860,7 @@ var LineChart = import_react5.default.memo(({ data, labels, width, height, anima
|
|
|
6775
6860
|
strokeWidth: "2"
|
|
6776
6861
|
}
|
|
6777
6862
|
),
|
|
6778
|
-
showPoints && points.map((p, i) => /* @__PURE__ */ (0,
|
|
6863
|
+
showPoints && points.map((p, i) => /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(
|
|
6779
6864
|
"circle",
|
|
6780
6865
|
{
|
|
6781
6866
|
cx: p.x,
|
|
@@ -6794,16 +6879,16 @@ var LineChart = import_react5.default.memo(({ data, labels, width, height, anima
|
|
|
6794
6879
|
] });
|
|
6795
6880
|
});
|
|
6796
6881
|
LineChart.displayName = "LineChart";
|
|
6797
|
-
var CurveChart =
|
|
6798
|
-
const entries =
|
|
6799
|
-
const maxVal =
|
|
6882
|
+
var CurveChart = import_react6.default.memo(({ data, labels, width, height, animate, onHover, onMove, onLeave }) => {
|
|
6883
|
+
const entries = import_react6.default.useMemo(() => Object.entries(data), [data]);
|
|
6884
|
+
const maxVal = import_react6.default.useMemo(() => {
|
|
6800
6885
|
const allValues = entries.flatMap(([, v]) => v);
|
|
6801
6886
|
return Math.max(...allValues) * 1.2 || 1;
|
|
6802
6887
|
}, [entries]);
|
|
6803
6888
|
const count = labels.length;
|
|
6804
6889
|
const chartW = width - PADDING.left - PADDING.right;
|
|
6805
6890
|
const chartH = height - PADDING.top - PADDING.bottom;
|
|
6806
|
-
const seriesPoints =
|
|
6891
|
+
const seriesPoints = import_react6.default.useMemo(
|
|
6807
6892
|
() => entries.map(
|
|
6808
6893
|
([, values]) => values.map((v, i) => ({
|
|
6809
6894
|
x: PADDING.left + i / (count - 1 || 1) * chartW,
|
|
@@ -6814,8 +6899,8 @@ var CurveChart = import_react5.default.memo(({ data, labels, width, height, anim
|
|
|
6814
6899
|
[entries, count, chartW, chartH, maxVal]
|
|
6815
6900
|
);
|
|
6816
6901
|
const showPoints = count <= 100;
|
|
6817
|
-
const lineRefs =
|
|
6818
|
-
|
|
6902
|
+
const lineRefs = import_react6.default.useRef([]);
|
|
6903
|
+
import_react6.default.useEffect(() => {
|
|
6819
6904
|
if (!animate) return;
|
|
6820
6905
|
lineRefs.current.forEach((el) => {
|
|
6821
6906
|
if (!el) return;
|
|
@@ -6828,9 +6913,9 @@ var CurveChart = import_react5.default.memo(({ data, labels, width, height, anim
|
|
|
6828
6913
|
});
|
|
6829
6914
|
});
|
|
6830
6915
|
}, [animate, seriesPoints]);
|
|
6831
|
-
return /* @__PURE__ */ (0,
|
|
6832
|
-
/* @__PURE__ */ (0,
|
|
6833
|
-
/* @__PURE__ */ (0,
|
|
6916
|
+
return /* @__PURE__ */ (0, import_jsx_runtime306.jsxs)("svg", { viewBox: `0 0 ${width} ${height}`, className: "chart-svg", children: [
|
|
6917
|
+
/* @__PURE__ */ (0, import_jsx_runtime306.jsx)(GridLines, { width, height, chartH, maxVal }),
|
|
6918
|
+
/* @__PURE__ */ (0, import_jsx_runtime306.jsx)(AxisLabels, { labels, count, chartW, height }),
|
|
6834
6919
|
entries.map(([key], di) => {
|
|
6835
6920
|
const palette = getPalette(LINE_BAR_PALETTES, di, key);
|
|
6836
6921
|
const color = palette[2];
|
|
@@ -6839,12 +6924,12 @@ var CurveChart = import_react5.default.memo(({ data, labels, width, height, anim
|
|
|
6839
6924
|
const gradientId = `curve-gradient-${di}`;
|
|
6840
6925
|
const linePath = toSmoothPath(points);
|
|
6841
6926
|
const areaPath = linePath + ` L ${points[points.length - 1].x} ${PADDING.top + chartH} L ${points[0].x} ${PADDING.top + chartH} Z`;
|
|
6842
|
-
return /* @__PURE__ */ (0,
|
|
6843
|
-
/* @__PURE__ */ (0,
|
|
6844
|
-
/* @__PURE__ */ (0,
|
|
6845
|
-
/* @__PURE__ */ (0,
|
|
6927
|
+
return /* @__PURE__ */ (0, import_jsx_runtime306.jsxs)("g", { children: [
|
|
6928
|
+
/* @__PURE__ */ (0, import_jsx_runtime306.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime306.jsxs)("linearGradient", { id: gradientId, x1: "0", y1: "0", x2: "0", y2: "1", children: [
|
|
6929
|
+
/* @__PURE__ */ (0, import_jsx_runtime306.jsx)("stop", { offset: "0%", stopColor: areaColor, stopOpacity: "0.4" }),
|
|
6930
|
+
/* @__PURE__ */ (0, import_jsx_runtime306.jsx)("stop", { offset: "100%", stopColor: areaColor, stopOpacity: "0.02" })
|
|
6846
6931
|
] }) }),
|
|
6847
|
-
/* @__PURE__ */ (0,
|
|
6932
|
+
/* @__PURE__ */ (0, import_jsx_runtime306.jsx)(
|
|
6848
6933
|
"path",
|
|
6849
6934
|
{
|
|
6850
6935
|
d: areaPath,
|
|
@@ -6853,7 +6938,7 @@ var CurveChart = import_react5.default.memo(({ data, labels, width, height, anim
|
|
|
6853
6938
|
style: animate ? { animationDelay: "600ms" } : { opacity: 1 }
|
|
6854
6939
|
}
|
|
6855
6940
|
),
|
|
6856
|
-
/* @__PURE__ */ (0,
|
|
6941
|
+
/* @__PURE__ */ (0, import_jsx_runtime306.jsx)(
|
|
6857
6942
|
"path",
|
|
6858
6943
|
{
|
|
6859
6944
|
ref: (el) => {
|
|
@@ -6865,7 +6950,7 @@ var CurveChart = import_react5.default.memo(({ data, labels, width, height, anim
|
|
|
6865
6950
|
strokeWidth: "2"
|
|
6866
6951
|
}
|
|
6867
6952
|
),
|
|
6868
|
-
showPoints && points.map((p, i) => /* @__PURE__ */ (0,
|
|
6953
|
+
showPoints && points.map((p, i) => /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(
|
|
6869
6954
|
"circle",
|
|
6870
6955
|
{
|
|
6871
6956
|
cx: p.x,
|
|
@@ -6884,9 +6969,9 @@ var CurveChart = import_react5.default.memo(({ data, labels, width, height, anim
|
|
|
6884
6969
|
] });
|
|
6885
6970
|
});
|
|
6886
6971
|
CurveChart.displayName = "CurveChart";
|
|
6887
|
-
var BarChart =
|
|
6888
|
-
const entries =
|
|
6889
|
-
const maxVal =
|
|
6972
|
+
var BarChart = import_react6.default.memo(({ data, labels, width, height, animate, onHover, onMove, onLeave }) => {
|
|
6973
|
+
const entries = import_react6.default.useMemo(() => Object.entries(data), [data]);
|
|
6974
|
+
const maxVal = import_react6.default.useMemo(() => {
|
|
6890
6975
|
const allValues = entries.flatMap(([, v]) => v);
|
|
6891
6976
|
return Math.max(...allValues) * 1.2 || 1;
|
|
6892
6977
|
}, [entries]);
|
|
@@ -6898,7 +6983,7 @@ var BarChart = import_react5.default.memo(({ data, labels, width, height, animat
|
|
|
6898
6983
|
const barGap = groupCount > 1 ? 2 : 0;
|
|
6899
6984
|
const barW = Math.max(1, Math.min(32, (groupW * 0.7 - barGap * (groupCount - 1)) / groupCount));
|
|
6900
6985
|
const baseline = PADDING.top + chartH;
|
|
6901
|
-
const bars =
|
|
6986
|
+
const bars = import_react6.default.useMemo(
|
|
6902
6987
|
() => entries.map(
|
|
6903
6988
|
([, values], di) => values.map((v, i) => {
|
|
6904
6989
|
const totalBarsW = barW * groupCount + barGap * (groupCount - 1);
|
|
@@ -6911,11 +6996,11 @@ var BarChart = import_react5.default.memo(({ data, labels, width, height, animat
|
|
|
6911
6996
|
[entries, maxVal, chartH, groupW, barW, barGap, groupCount]
|
|
6912
6997
|
);
|
|
6913
6998
|
const barLabelStep = getLabelStep(count, chartW);
|
|
6914
|
-
return /* @__PURE__ */ (0,
|
|
6915
|
-
/* @__PURE__ */ (0,
|
|
6999
|
+
return /* @__PURE__ */ (0, import_jsx_runtime306.jsxs)("svg", { viewBox: `0 0 ${width} ${height}`, className: "chart-svg", children: [
|
|
7000
|
+
/* @__PURE__ */ (0, import_jsx_runtime306.jsx)(GridLines, { width, height, chartH, maxVal }),
|
|
6916
7001
|
labels.map((label, i) => {
|
|
6917
7002
|
if (i % barLabelStep !== 0) return null;
|
|
6918
|
-
return /* @__PURE__ */ (0,
|
|
7003
|
+
return /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("text", { x: PADDING.left + groupW * i + groupW / 2, y: height - 8, className: "chart-axis-label", textAnchor: "middle", children: label }, i);
|
|
6919
7004
|
}),
|
|
6920
7005
|
entries.map(([key], di) => {
|
|
6921
7006
|
const palette = getPalette(LINE_BAR_PALETTES, di, key);
|
|
@@ -6924,7 +7009,7 @@ var BarChart = import_react5.default.memo(({ data, labels, width, height, animat
|
|
|
6924
7009
|
const r2 = Math.min(4, b.w / 2);
|
|
6925
7010
|
const d = b.h <= r2 ? `M ${b.x} ${b.y + b.h} V ${b.y} H ${b.x + b.w} V ${b.y + b.h} Z` : `M ${b.x} ${b.y + b.h} V ${b.y + r2} Q ${b.x} ${b.y} ${b.x + r2} ${b.y} H ${b.x + b.w - r2} Q ${b.x + b.w} ${b.y} ${b.x + b.w} ${b.y + r2} V ${b.y + b.h} Z`;
|
|
6926
7011
|
const delay = 100 + i * 80;
|
|
6927
|
-
return /* @__PURE__ */ (0,
|
|
7012
|
+
return /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(
|
|
6928
7013
|
"path",
|
|
6929
7014
|
{
|
|
6930
7015
|
d,
|
|
@@ -6945,11 +7030,11 @@ var BarChart = import_react5.default.memo(({ data, labels, width, height, animat
|
|
|
6945
7030
|
] });
|
|
6946
7031
|
});
|
|
6947
7032
|
BarChart.displayName = "BarChart";
|
|
6948
|
-
var PieDonutChart =
|
|
7033
|
+
var PieDonutChart = import_react6.default.memo(
|
|
6949
7034
|
({ data, labels, width, height, animate, isDoughnut, onHover, onMove, onLeave }) => {
|
|
6950
|
-
const entries =
|
|
6951
|
-
const values =
|
|
6952
|
-
const total =
|
|
7035
|
+
const entries = import_react6.default.useMemo(() => Object.entries(data), [data]);
|
|
7036
|
+
const values = import_react6.default.useMemo(() => entries.flatMap(([, v]) => v), [entries]);
|
|
7037
|
+
const total = import_react6.default.useMemo(() => values.reduce((a, b) => a + b, 0) || 1, [values]);
|
|
6953
7038
|
const size = Math.min(width, height);
|
|
6954
7039
|
const cx = size / 2;
|
|
6955
7040
|
const cy = size / 2;
|
|
@@ -6957,10 +7042,10 @@ var PieDonutChart = import_react5.default.memo(
|
|
|
6957
7042
|
const innerR = isDoughnut ? r2 * 0.5 : 0;
|
|
6958
7043
|
const firstKey = entries[0]?.[0] ?? "";
|
|
6959
7044
|
const colorOffset = hashString(firstKey);
|
|
6960
|
-
const maskRef =
|
|
7045
|
+
const maskRef = import_react6.default.useRef(null);
|
|
6961
7046
|
const maskR = r2 + 10;
|
|
6962
7047
|
const maskCircumference = 2 * Math.PI * maskR;
|
|
6963
|
-
|
|
7048
|
+
import_react6.default.useEffect(() => {
|
|
6964
7049
|
if (!animate || !maskRef.current) return;
|
|
6965
7050
|
const el = maskRef.current;
|
|
6966
7051
|
el.style.strokeDasharray = `${maskCircumference}`;
|
|
@@ -6970,7 +7055,7 @@ var PieDonutChart = import_react5.default.memo(
|
|
|
6970
7055
|
el.style.strokeDashoffset = "0";
|
|
6971
7056
|
});
|
|
6972
7057
|
}, [animate, maskCircumference]);
|
|
6973
|
-
const sliceData =
|
|
7058
|
+
const sliceData = import_react6.default.useMemo(() => {
|
|
6974
7059
|
let angle0 = -Math.PI / 2;
|
|
6975
7060
|
let cumulativeAngle = 0;
|
|
6976
7061
|
return values.map((v, i) => {
|
|
@@ -7004,8 +7089,8 @@ var PieDonutChart = import_react5.default.memo(
|
|
|
7004
7089
|
});
|
|
7005
7090
|
}, [values, total, cx, cy, r2, innerR, labels]);
|
|
7006
7091
|
const maskId = `pie-mask-${isDoughnut ? "d" : "p"}`;
|
|
7007
|
-
return /* @__PURE__ */ (0,
|
|
7008
|
-
animate && /* @__PURE__ */ (0,
|
|
7092
|
+
return /* @__PURE__ */ (0, import_jsx_runtime306.jsxs)("svg", { viewBox: `0 0 ${size} ${size}`, className: "chart-svg chart-pie", children: [
|
|
7093
|
+
animate && /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("mask", { id: maskId, children: /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(
|
|
7009
7094
|
"circle",
|
|
7010
7095
|
{
|
|
7011
7096
|
ref: maskRef,
|
|
@@ -7018,7 +7103,7 @@ var PieDonutChart = import_react5.default.memo(
|
|
|
7018
7103
|
transform: `rotate(-90 ${cx} ${cy})`
|
|
7019
7104
|
}
|
|
7020
7105
|
) }) }),
|
|
7021
|
-
/* @__PURE__ */ (0,
|
|
7106
|
+
/* @__PURE__ */ (0, import_jsx_runtime306.jsx)("g", { mask: animate ? `url(#${maskId})` : void 0, children: sliceData.map((s, i) => /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("g", { children: /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(
|
|
7022
7107
|
"path",
|
|
7023
7108
|
{
|
|
7024
7109
|
d: s.d,
|
|
@@ -7029,7 +7114,7 @@ var PieDonutChart = import_react5.default.memo(
|
|
|
7029
7114
|
onMouseLeave: onLeave
|
|
7030
7115
|
}
|
|
7031
7116
|
) }, i)) }),
|
|
7032
|
-
sliceData.map((s, i) => s.angle > 0.2 && /* @__PURE__ */ (0,
|
|
7117
|
+
sliceData.map((s, i) => s.angle > 0.2 && /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(
|
|
7033
7118
|
"text",
|
|
7034
7119
|
{
|
|
7035
7120
|
x: s.lx,
|
|
@@ -7047,9 +7132,9 @@ var PieDonutChart = import_react5.default.memo(
|
|
|
7047
7132
|
);
|
|
7048
7133
|
PieDonutChart.displayName = "PieDonutChart";
|
|
7049
7134
|
var TooltipBubble = ({ x, y, containerWidth, children }) => {
|
|
7050
|
-
const ref =
|
|
7051
|
-
const [adjustedX, setAdjustedX] =
|
|
7052
|
-
|
|
7135
|
+
const ref = import_react6.default.useRef(null);
|
|
7136
|
+
const [adjustedX, setAdjustedX] = import_react6.default.useState(x);
|
|
7137
|
+
import_react6.default.useEffect(() => {
|
|
7053
7138
|
const el = ref.current;
|
|
7054
7139
|
if (!el) return;
|
|
7055
7140
|
const w = el.offsetWidth;
|
|
@@ -7060,7 +7145,7 @@ var TooltipBubble = ({ x, y, containerWidth, children }) => {
|
|
|
7060
7145
|
else if (x + half > containerWidth - margin) nx = containerWidth - half - margin;
|
|
7061
7146
|
setAdjustedX(nx);
|
|
7062
7147
|
}, [x, containerWidth]);
|
|
7063
|
-
return /* @__PURE__ */ (0,
|
|
7148
|
+
return /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(
|
|
7064
7149
|
"div",
|
|
7065
7150
|
{
|
|
7066
7151
|
ref,
|
|
@@ -7070,22 +7155,22 @@ var TooltipBubble = ({ x, y, containerWidth, children }) => {
|
|
|
7070
7155
|
}
|
|
7071
7156
|
);
|
|
7072
7157
|
};
|
|
7073
|
-
var Chart =
|
|
7158
|
+
var Chart = import_react6.default.memo((props) => {
|
|
7074
7159
|
const { type, data, labels, tooltip: showTooltip = true } = props;
|
|
7075
7160
|
const { tooltip, show, hide, move, containerRef } = useChartTooltip(showTooltip);
|
|
7076
7161
|
const { width, height } = useChartSize(containerRef);
|
|
7077
|
-
const stableData =
|
|
7078
|
-
const stableLabels =
|
|
7079
|
-
const dataKey =
|
|
7162
|
+
const stableData = import_react6.default.useMemo(() => data, [JSON.stringify(data)]);
|
|
7163
|
+
const stableLabels = import_react6.default.useMemo(() => labels, [JSON.stringify(labels)]);
|
|
7164
|
+
const dataKey = import_react6.default.useMemo(() => JSON.stringify(labels), [labels]);
|
|
7080
7165
|
const animate = useChartAnimation(containerRef, dataKey);
|
|
7081
7166
|
const ready = width > 0 && height > 0;
|
|
7082
|
-
return /* @__PURE__ */ (0,
|
|
7083
|
-
ready && type === "line" && /* @__PURE__ */ (0,
|
|
7084
|
-
ready && type === "curve" && /* @__PURE__ */ (0,
|
|
7085
|
-
ready && type === "bar" && /* @__PURE__ */ (0,
|
|
7086
|
-
ready && type === "pie" && /* @__PURE__ */ (0,
|
|
7087
|
-
ready && type === "doughnut" && /* @__PURE__ */ (0,
|
|
7088
|
-
tooltip.visible && /* @__PURE__ */ (0,
|
|
7167
|
+
return /* @__PURE__ */ (0, import_jsx_runtime306.jsxs)("div", { className: "lib-xplat-chart", ref: containerRef, children: [
|
|
7168
|
+
ready && type === "line" && /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(LineChart, { data: stableData, labels: stableLabels, width, height, animate, onHover: show, onMove: move, onLeave: hide }),
|
|
7169
|
+
ready && type === "curve" && /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(CurveChart, { data: stableData, labels: stableLabels, width, height, animate, onHover: show, onMove: move, onLeave: hide }),
|
|
7170
|
+
ready && type === "bar" && /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(BarChart, { data: stableData, labels: stableLabels, width, height, animate, onHover: show, onMove: move, onLeave: hide }),
|
|
7171
|
+
ready && type === "pie" && /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(PieDonutChart, { data: stableData, labels: stableLabels, width, height, animate, onHover: show, onMove: move, onLeave: hide }),
|
|
7172
|
+
ready && type === "doughnut" && /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(PieDonutChart, { data: stableData, labels: stableLabels, width, height, animate, isDoughnut: true, onHover: show, onMove: move, onLeave: hide }),
|
|
7173
|
+
tooltip.visible && /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(TooltipBubble, { x: tooltip.x, y: tooltip.y, containerWidth: width, children: tooltip.content })
|
|
7089
7174
|
] });
|
|
7090
7175
|
});
|
|
7091
7176
|
Chart.displayName = "Chart";
|
|
@@ -7111,7 +7196,7 @@ var import_tokens_core = require("@x-plat/tokens-core");
|
|
|
7111
7196
|
var import_tokens_core2 = require("@x-plat/tokens-core");
|
|
7112
7197
|
|
|
7113
7198
|
// src/components/CheckBox/CheckBox.tsx
|
|
7114
|
-
var
|
|
7199
|
+
var import_jsx_runtime307 = require("react/jsx-runtime");
|
|
7115
7200
|
var CheckBox = (props) => {
|
|
7116
7201
|
const {
|
|
7117
7202
|
checked,
|
|
@@ -7129,8 +7214,8 @@ var CheckBox = (props) => {
|
|
|
7129
7214
|
const checkedClasses = `checked`;
|
|
7130
7215
|
const disabledClasses = "disabled";
|
|
7131
7216
|
const boxClasses = disabled ? disabledClasses : checked ? checkedClasses : uncheckedClasses;
|
|
7132
|
-
return /* @__PURE__ */ (0,
|
|
7133
|
-
/* @__PURE__ */ (0,
|
|
7217
|
+
return /* @__PURE__ */ (0, import_jsx_runtime307.jsxs)("label", { className: clsx_default("lib-xplat-checkbox", size, type), children: [
|
|
7218
|
+
/* @__PURE__ */ (0, import_jsx_runtime307.jsx)(
|
|
7134
7219
|
"input",
|
|
7135
7220
|
{
|
|
7136
7221
|
type: "checkbox",
|
|
@@ -7140,44 +7225,44 @@ var CheckBox = (props) => {
|
|
|
7140
7225
|
...rest
|
|
7141
7226
|
}
|
|
7142
7227
|
),
|
|
7143
|
-
/* @__PURE__ */ (0,
|
|
7144
|
-
label && /* @__PURE__ */ (0,
|
|
7228
|
+
/* @__PURE__ */ (0, import_jsx_runtime307.jsx)("span", { className: clsx_default("checkbox", boxClasses), children: /* @__PURE__ */ (0, import_jsx_runtime307.jsx)("span", { className: clsx_default("check-icon", { visible: checked }), children: /* @__PURE__ */ (0, import_jsx_runtime307.jsx)(CheckIcon_default, {}) }) }),
|
|
7229
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime307.jsx)("span", { className: "label", children: label })
|
|
7145
7230
|
] });
|
|
7146
7231
|
};
|
|
7147
7232
|
CheckBox.displayName = "CheckBox";
|
|
7148
7233
|
var CheckBox_default = CheckBox;
|
|
7149
7234
|
|
|
7150
7235
|
// src/components/Chip/Chip.tsx
|
|
7151
|
-
var
|
|
7236
|
+
var import_jsx_runtime308 = require("react/jsx-runtime");
|
|
7152
7237
|
var Chip = (props) => {
|
|
7153
7238
|
const {
|
|
7154
7239
|
children,
|
|
7155
7240
|
type = "primary",
|
|
7156
7241
|
size = "md"
|
|
7157
7242
|
} = props;
|
|
7158
|
-
return /* @__PURE__ */ (0,
|
|
7243
|
+
return /* @__PURE__ */ (0, import_jsx_runtime308.jsx)("div", { className: clsx_default("lib-xplat-chip", type, size), children });
|
|
7159
7244
|
};
|
|
7160
7245
|
Chip.displayName = "Chip";
|
|
7161
7246
|
var Chip_default = Chip;
|
|
7162
7247
|
|
|
7163
7248
|
// src/components/DatePicker/InputDatePicker/index.tsx
|
|
7164
|
-
var
|
|
7249
|
+
var import_react13 = __toESM(require("react"), 1);
|
|
7165
7250
|
|
|
7166
7251
|
// src/components/Input/Input.tsx
|
|
7167
|
-
var
|
|
7252
|
+
var import_react7 = __toESM(require("react"), 1);
|
|
7168
7253
|
|
|
7169
7254
|
// src/components/Input/InputValidations.tsx
|
|
7170
|
-
var
|
|
7255
|
+
var import_jsx_runtime309 = require("react/jsx-runtime");
|
|
7171
7256
|
var InputValidations = (props) => {
|
|
7172
7257
|
const { message, status = "default" } = props;
|
|
7173
|
-
return /* @__PURE__ */ (0,
|
|
7174
|
-
/* @__PURE__ */ (0,
|
|
7175
|
-
status === "default" && /* @__PURE__ */ (0,
|
|
7176
|
-
status === "success" && /* @__PURE__ */ (0,
|
|
7177
|
-
status === "warning" && /* @__PURE__ */ (0,
|
|
7178
|
-
status === "error" && /* @__PURE__ */ (0,
|
|
7258
|
+
return /* @__PURE__ */ (0, import_jsx_runtime309.jsxs)("div", { className: clsx_default("lib-xplat-input-validation", status), children: [
|
|
7259
|
+
/* @__PURE__ */ (0, import_jsx_runtime309.jsxs)("div", { className: "icon", children: [
|
|
7260
|
+
status === "default" && /* @__PURE__ */ (0, import_jsx_runtime309.jsx)(InfoIcon_default, {}),
|
|
7261
|
+
status === "success" && /* @__PURE__ */ (0, import_jsx_runtime309.jsx)(SuccessIcon_default, {}),
|
|
7262
|
+
status === "warning" && /* @__PURE__ */ (0, import_jsx_runtime309.jsx)(InfoIcon_default, {}),
|
|
7263
|
+
status === "error" && /* @__PURE__ */ (0, import_jsx_runtime309.jsx)(ErrorIcon_default, {})
|
|
7179
7264
|
] }),
|
|
7180
|
-
/* @__PURE__ */ (0,
|
|
7265
|
+
/* @__PURE__ */ (0, import_jsx_runtime309.jsx)("div", { className: "message", children: message })
|
|
7181
7266
|
] });
|
|
7182
7267
|
};
|
|
7183
7268
|
InputValidations.displayName = "InputValidations";
|
|
@@ -7218,8 +7303,8 @@ var handleTelBackspace = (prevValue, currValue) => {
|
|
|
7218
7303
|
};
|
|
7219
7304
|
|
|
7220
7305
|
// src/components/Input/Input.tsx
|
|
7221
|
-
var
|
|
7222
|
-
var
|
|
7306
|
+
var import_jsx_runtime310 = require("react/jsx-runtime");
|
|
7307
|
+
var import_react8 = require("react");
|
|
7223
7308
|
var formatValue = (type, value) => {
|
|
7224
7309
|
if (value === null || value === void 0) return "";
|
|
7225
7310
|
const strValue = Array.isArray(value) ? String(value[0] ?? "") : String(value);
|
|
@@ -7267,7 +7352,7 @@ var parseValue = (type, value) => {
|
|
|
7267
7352
|
return value;
|
|
7268
7353
|
}
|
|
7269
7354
|
};
|
|
7270
|
-
var Input =
|
|
7355
|
+
var Input = import_react7.default.forwardRef((props, ref) => {
|
|
7271
7356
|
const {
|
|
7272
7357
|
value,
|
|
7273
7358
|
onChange,
|
|
@@ -7293,13 +7378,13 @@ var Input = import_react6.default.forwardRef((props, ref) => {
|
|
|
7293
7378
|
onChange(event);
|
|
7294
7379
|
}
|
|
7295
7380
|
};
|
|
7296
|
-
return /* @__PURE__ */ (0,
|
|
7297
|
-
/* @__PURE__ */ (0,
|
|
7381
|
+
return /* @__PURE__ */ (0, import_jsx_runtime310.jsxs)("div", { className: "lib-xplat-input-wrap", children: [
|
|
7382
|
+
/* @__PURE__ */ (0, import_jsx_runtime310.jsxs)(
|
|
7298
7383
|
"div",
|
|
7299
7384
|
{
|
|
7300
7385
|
className: clsx_default("lib-xplat-input", size, disabled ? "disabled" : void 0),
|
|
7301
7386
|
children: [
|
|
7302
|
-
/* @__PURE__ */ (0,
|
|
7387
|
+
/* @__PURE__ */ (0, import_jsx_runtime310.jsx)(
|
|
7303
7388
|
"input",
|
|
7304
7389
|
{
|
|
7305
7390
|
...inputProps,
|
|
@@ -7310,11 +7395,11 @@ var Input = import_react6.default.forwardRef((props, ref) => {
|
|
|
7310
7395
|
onChange: handleChange
|
|
7311
7396
|
}
|
|
7312
7397
|
),
|
|
7313
|
-
suffix && /* @__PURE__ */ (0,
|
|
7398
|
+
suffix && /* @__PURE__ */ (0, import_jsx_runtime310.jsx)("div", { className: "suffix", children: suffix })
|
|
7314
7399
|
]
|
|
7315
7400
|
}
|
|
7316
7401
|
),
|
|
7317
|
-
validations && /* @__PURE__ */ (0,
|
|
7402
|
+
validations && /* @__PURE__ */ (0, import_jsx_runtime310.jsx)("div", { className: "lib-xplat-input-validation-wrap", children: validations?.map((validation, idx) => /* @__PURE__ */ (0, import_react8.createElement)(
|
|
7318
7403
|
InputValidations_default,
|
|
7319
7404
|
{
|
|
7320
7405
|
...validation,
|
|
@@ -7327,20 +7412,20 @@ Input.displayName = "Input";
|
|
|
7327
7412
|
var Input_default = Input;
|
|
7328
7413
|
|
|
7329
7414
|
// src/components/Input/PasswordInput/PasswordInput.tsx
|
|
7330
|
-
var
|
|
7331
|
-
var
|
|
7332
|
-
var PasswordInput =
|
|
7415
|
+
var import_react9 = __toESM(require("react"), 1);
|
|
7416
|
+
var import_jsx_runtime311 = require("react/jsx-runtime");
|
|
7417
|
+
var PasswordInput = import_react9.default.forwardRef(
|
|
7333
7418
|
(props, ref) => {
|
|
7334
7419
|
const { reg: _reg, ...inputProps } = props;
|
|
7335
|
-
const [isView, setIsView] =
|
|
7420
|
+
const [isView, setIsView] = import_react9.default.useState(false);
|
|
7336
7421
|
const handleChangeView = () => {
|
|
7337
7422
|
setIsView((prev) => !prev);
|
|
7338
7423
|
};
|
|
7339
|
-
return /* @__PURE__ */ (0,
|
|
7424
|
+
return /* @__PURE__ */ (0, import_jsx_runtime311.jsx)(
|
|
7340
7425
|
Input_default,
|
|
7341
7426
|
{
|
|
7342
7427
|
...inputProps,
|
|
7343
|
-
suffix: /* @__PURE__ */ (0,
|
|
7428
|
+
suffix: /* @__PURE__ */ (0, import_jsx_runtime311.jsx)("div", { className: "wrapper pointer", onClick: handleChangeView, children: isView ? /* @__PURE__ */ (0, import_jsx_runtime311.jsx)(OpenEyeIcon_default, {}) : /* @__PURE__ */ (0, import_jsx_runtime311.jsx)(CloseEyeIcon_default, {}) }),
|
|
7344
7429
|
type: isView ? "text" : "password",
|
|
7345
7430
|
ref
|
|
7346
7431
|
}
|
|
@@ -7351,17 +7436,17 @@ PasswordInput.displayName = "PasswordInput";
|
|
|
7351
7436
|
var PasswordInput_default = PasswordInput;
|
|
7352
7437
|
|
|
7353
7438
|
// src/components/Modal/Modal.tsx
|
|
7354
|
-
var
|
|
7439
|
+
var import_react11 = __toESM(require("react"), 1);
|
|
7355
7440
|
var import_react_dom2 = require("react-dom");
|
|
7356
7441
|
|
|
7357
7442
|
// src/tokens/hooks/Portal.tsx
|
|
7358
|
-
var
|
|
7443
|
+
var import_react10 = __toESM(require("react"), 1);
|
|
7359
7444
|
var import_react_dom = __toESM(require("react-dom"), 1);
|
|
7360
|
-
var
|
|
7361
|
-
var PortalContainerContext =
|
|
7362
|
-
var PortalProvider = ({ container, children }) => /* @__PURE__ */ (0,
|
|
7445
|
+
var import_jsx_runtime312 = require("react/jsx-runtime");
|
|
7446
|
+
var PortalContainerContext = import_react10.default.createContext(null);
|
|
7447
|
+
var PortalProvider = ({ container, children }) => /* @__PURE__ */ (0, import_jsx_runtime312.jsx)(PortalContainerContext.Provider, { value: container, children });
|
|
7363
7448
|
var Portal = ({ children }) => {
|
|
7364
|
-
const contextContainer =
|
|
7449
|
+
const contextContainer = import_react10.default.useContext(PortalContainerContext);
|
|
7365
7450
|
if (typeof document === "undefined") return null;
|
|
7366
7451
|
const container = contextContainer ?? document.body;
|
|
7367
7452
|
return import_react_dom.default.createPortal(children, container);
|
|
@@ -7370,14 +7455,14 @@ Portal.displayName = "Portal";
|
|
|
7370
7455
|
var Portal_default = Portal;
|
|
7371
7456
|
|
|
7372
7457
|
// src/components/Modal/Modal.tsx
|
|
7373
|
-
var
|
|
7458
|
+
var import_jsx_runtime313 = require("react/jsx-runtime");
|
|
7374
7459
|
var ANIMATION_DURATION_MS = 200;
|
|
7375
7460
|
var Modal = (props) => {
|
|
7376
7461
|
const { isOpen, onClose, children } = props;
|
|
7377
|
-
const [mounted, setMounted] =
|
|
7378
|
-
const [visible, setVisible] =
|
|
7379
|
-
const boxRef =
|
|
7380
|
-
|
|
7462
|
+
const [mounted, setMounted] = import_react11.default.useState(false);
|
|
7463
|
+
const [visible, setVisible] = import_react11.default.useState(false);
|
|
7464
|
+
const boxRef = import_react11.default.useRef(null);
|
|
7465
|
+
import_react11.default.useEffect(() => {
|
|
7381
7466
|
if (isOpen) {
|
|
7382
7467
|
setMounted(true);
|
|
7383
7468
|
const t2 = setTimeout(() => setVisible(true), 1);
|
|
@@ -7391,12 +7476,12 @@ var Modal = (props) => {
|
|
|
7391
7476
|
if (!mounted) return null;
|
|
7392
7477
|
const stateClass = visible ? "enter" : "exit";
|
|
7393
7478
|
return (0, import_react_dom2.createPortal)(
|
|
7394
|
-
/* @__PURE__ */ (0,
|
|
7479
|
+
/* @__PURE__ */ (0, import_jsx_runtime313.jsx)(
|
|
7395
7480
|
"div",
|
|
7396
7481
|
{
|
|
7397
7482
|
className: clsx_default("lib-xplat-modal", "dim", stateClass),
|
|
7398
7483
|
onClick: onClose,
|
|
7399
|
-
children: /* @__PURE__ */ (0,
|
|
7484
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime313.jsx)(
|
|
7400
7485
|
"div",
|
|
7401
7486
|
{
|
|
7402
7487
|
ref: boxRef,
|
|
@@ -7404,7 +7489,7 @@ var Modal = (props) => {
|
|
|
7404
7489
|
role: "dialog",
|
|
7405
7490
|
"aria-modal": "true",
|
|
7406
7491
|
onClick: (e) => e.stopPropagation(),
|
|
7407
|
-
children: /* @__PURE__ */ (0,
|
|
7492
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime313.jsx)(PortalProvider, { container: boxRef.current, children })
|
|
7408
7493
|
}
|
|
7409
7494
|
)
|
|
7410
7495
|
}
|
|
@@ -7416,9 +7501,9 @@ Modal.displayName = "Modal";
|
|
|
7416
7501
|
var Modal_default = Modal;
|
|
7417
7502
|
|
|
7418
7503
|
// src/components/DatePicker/SingleDatePicker/index.tsx
|
|
7419
|
-
var
|
|
7420
|
-
var
|
|
7421
|
-
var DayCell2 =
|
|
7504
|
+
var import_react12 = __toESM(require("react"), 1);
|
|
7505
|
+
var import_jsx_runtime314 = require("react/jsx-runtime");
|
|
7506
|
+
var DayCell2 = import_react12.default.memo(
|
|
7422
7507
|
({
|
|
7423
7508
|
day,
|
|
7424
7509
|
disabled,
|
|
@@ -7428,7 +7513,7 @@ var DayCell2 = import_react11.default.memo(
|
|
|
7428
7513
|
isEnd,
|
|
7429
7514
|
inRange,
|
|
7430
7515
|
onSelect
|
|
7431
|
-
}) => /* @__PURE__ */ (0,
|
|
7516
|
+
}) => /* @__PURE__ */ (0, import_jsx_runtime314.jsx)(
|
|
7432
7517
|
"button",
|
|
7433
7518
|
{
|
|
7434
7519
|
type: "button",
|
|
@@ -7470,26 +7555,26 @@ var SingleDatePicker = (props) => {
|
|
|
7470
7555
|
initialYear,
|
|
7471
7556
|
initialMonth
|
|
7472
7557
|
);
|
|
7473
|
-
const [pickerMode, setPickerMode] =
|
|
7474
|
-
const [yearRangeStart, setYearRangeStart] =
|
|
7558
|
+
const [pickerMode, setPickerMode] = import_react12.default.useState("days");
|
|
7559
|
+
const [yearRangeStart, setYearRangeStart] = import_react12.default.useState(
|
|
7475
7560
|
Math.floor((initialYear ?? (/* @__PURE__ */ new Date()).getFullYear()) / 12) * 12
|
|
7476
7561
|
);
|
|
7477
|
-
const minTime =
|
|
7562
|
+
const minTime = import_react12.default.useMemo(
|
|
7478
7563
|
() => minDate ? new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate()).getTime() : -Infinity,
|
|
7479
7564
|
[minDate]
|
|
7480
7565
|
);
|
|
7481
|
-
const maxTime =
|
|
7566
|
+
const maxTime = import_react12.default.useMemo(
|
|
7482
7567
|
() => maxDate ? new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate()).getTime() : Infinity,
|
|
7483
7568
|
[maxDate]
|
|
7484
7569
|
);
|
|
7485
|
-
const highlightSet =
|
|
7570
|
+
const highlightSet = import_react12.default.useMemo(() => {
|
|
7486
7571
|
const set = /* @__PURE__ */ new Set();
|
|
7487
7572
|
for (const h of highlightDates) {
|
|
7488
7573
|
set.add(`${h.getFullYear()}-${h.getMonth()}-${h.getDate()}`);
|
|
7489
7574
|
}
|
|
7490
7575
|
return set;
|
|
7491
7576
|
}, [highlightDates]);
|
|
7492
|
-
const handleSelect =
|
|
7577
|
+
const handleSelect = import_react12.default.useCallback(
|
|
7493
7578
|
(date) => {
|
|
7494
7579
|
onChange?.(date);
|
|
7495
7580
|
},
|
|
@@ -7526,20 +7611,20 @@ var SingleDatePicker = (props) => {
|
|
|
7526
7611
|
const monthLabels = MONTH_LABELS[locale];
|
|
7527
7612
|
const titleText = pickerMode === "days" ? locale === "ko" ? `${year}\uB144 ${monthLabels[month]}` : `${monthLabels[month]} ${year}` : pickerMode === "months" ? `${year}` : `${yearRangeStart} - ${yearRangeStart + 11}`;
|
|
7528
7613
|
const hasRange = rangeStart != null && rangeEnd != null;
|
|
7529
|
-
return /* @__PURE__ */ (0,
|
|
7614
|
+
return /* @__PURE__ */ (0, import_jsx_runtime314.jsxs)(
|
|
7530
7615
|
"div",
|
|
7531
7616
|
{
|
|
7532
7617
|
className: clsx_default("lib-xplat-datepicker", "single"),
|
|
7533
7618
|
children: [
|
|
7534
|
-
/* @__PURE__ */ (0,
|
|
7535
|
-
/* @__PURE__ */ (0,
|
|
7536
|
-
/* @__PURE__ */ (0,
|
|
7537
|
-
/* @__PURE__ */ (0,
|
|
7619
|
+
/* @__PURE__ */ (0, import_jsx_runtime314.jsxs)("div", { className: "datepicker-header", children: [
|
|
7620
|
+
/* @__PURE__ */ (0, import_jsx_runtime314.jsx)("button", { className: "datepicker-nav", onClick: handlePrev, type: "button", children: /* @__PURE__ */ (0, import_jsx_runtime314.jsx)(ChevronLeftIcon_default, {}) }),
|
|
7621
|
+
/* @__PURE__ */ (0, import_jsx_runtime314.jsx)("button", { className: "datepicker-title", onClick: handleTitleClick, type: "button", children: titleText }),
|
|
7622
|
+
/* @__PURE__ */ (0, import_jsx_runtime314.jsx)("button", { className: "datepicker-nav", onClick: handleNext, type: "button", children: /* @__PURE__ */ (0, import_jsx_runtime314.jsx)(ChevronRightIcon_default, {}) })
|
|
7538
7623
|
] }),
|
|
7539
|
-
/* @__PURE__ */ (0,
|
|
7540
|
-
pickerMode === "years" && /* @__PURE__ */ (0,
|
|
7624
|
+
/* @__PURE__ */ (0, import_jsx_runtime314.jsxs)("div", { className: "datepicker-body", children: [
|
|
7625
|
+
pickerMode === "years" && /* @__PURE__ */ (0, import_jsx_runtime314.jsx)("div", { className: "datepicker-picker-grid", children: Array.from({ length: 12 }, (_, i) => {
|
|
7541
7626
|
const y = yearRangeStart + i;
|
|
7542
|
-
return /* @__PURE__ */ (0,
|
|
7627
|
+
return /* @__PURE__ */ (0, import_jsx_runtime314.jsx)(
|
|
7543
7628
|
"button",
|
|
7544
7629
|
{
|
|
7545
7630
|
type: "button",
|
|
@@ -7550,7 +7635,7 @@ var SingleDatePicker = (props) => {
|
|
|
7550
7635
|
y
|
|
7551
7636
|
);
|
|
7552
7637
|
}) }),
|
|
7553
|
-
pickerMode === "months" && /* @__PURE__ */ (0,
|
|
7638
|
+
pickerMode === "months" && /* @__PURE__ */ (0, import_jsx_runtime314.jsx)("div", { className: "datepicker-picker-grid", children: monthLabels.map((label, i) => /* @__PURE__ */ (0, import_jsx_runtime314.jsx)(
|
|
7554
7639
|
"button",
|
|
7555
7640
|
{
|
|
7556
7641
|
type: "button",
|
|
@@ -7560,8 +7645,8 @@ var SingleDatePicker = (props) => {
|
|
|
7560
7645
|
},
|
|
7561
7646
|
i
|
|
7562
7647
|
)) }),
|
|
7563
|
-
pickerMode === "days" && /* @__PURE__ */ (0,
|
|
7564
|
-
/* @__PURE__ */ (0,
|
|
7648
|
+
pickerMode === "days" && /* @__PURE__ */ (0, import_jsx_runtime314.jsxs)(import_jsx_runtime314.Fragment, { children: [
|
|
7649
|
+
/* @__PURE__ */ (0, import_jsx_runtime314.jsx)("div", { className: "datepicker-weekdays", children: weekdays.map((label, i) => /* @__PURE__ */ (0, import_jsx_runtime314.jsx)(
|
|
7565
7650
|
"div",
|
|
7566
7651
|
{
|
|
7567
7652
|
className: clsx_default(
|
|
@@ -7573,7 +7658,7 @@ var SingleDatePicker = (props) => {
|
|
|
7573
7658
|
},
|
|
7574
7659
|
label
|
|
7575
7660
|
)) }),
|
|
7576
|
-
/* @__PURE__ */ (0,
|
|
7661
|
+
/* @__PURE__ */ (0, import_jsx_runtime314.jsx)("div", { className: "datepicker-grid", children: days.map((day, idx) => {
|
|
7577
7662
|
const t = day.date.getTime();
|
|
7578
7663
|
const disabled = t < minTime || t > maxTime;
|
|
7579
7664
|
const selected = value ? isSameDay(day.date, value) : false;
|
|
@@ -7583,7 +7668,7 @@ var SingleDatePicker = (props) => {
|
|
|
7583
7668
|
const isStart = hasRange ? isSameDay(day.date, rangeStart) : false;
|
|
7584
7669
|
const isEnd = hasRange ? isSameDay(day.date, rangeEnd) : false;
|
|
7585
7670
|
const inRangeVal = hasRange ? isInRange(day.date, rangeStart, rangeEnd) : false;
|
|
7586
|
-
return /* @__PURE__ */ (0,
|
|
7671
|
+
return /* @__PURE__ */ (0, import_jsx_runtime314.jsx)(
|
|
7587
7672
|
DayCell2,
|
|
7588
7673
|
{
|
|
7589
7674
|
day,
|
|
@@ -7608,7 +7693,7 @@ SingleDatePicker.displayName = "SingleDatePicker";
|
|
|
7608
7693
|
var SingleDatePicker_default = SingleDatePicker;
|
|
7609
7694
|
|
|
7610
7695
|
// src/components/DatePicker/InputDatePicker/index.tsx
|
|
7611
|
-
var
|
|
7696
|
+
var import_jsx_runtime315 = require("react/jsx-runtime");
|
|
7612
7697
|
var formatDate = (date) => {
|
|
7613
7698
|
if (!date || !(date instanceof Date) || isNaN(date.getTime())) return "";
|
|
7614
7699
|
const y = date.getFullYear();
|
|
@@ -7618,8 +7703,8 @@ var formatDate = (date) => {
|
|
|
7618
7703
|
};
|
|
7619
7704
|
var InputDatePicker = (props) => {
|
|
7620
7705
|
const { value, onChange, minDate, maxDate, disabled, locale = "ko", placeholder } = props;
|
|
7621
|
-
const [isOpen, setIsOpen] =
|
|
7622
|
-
const [tempDate, setTempDate] =
|
|
7706
|
+
const [isOpen, setIsOpen] = import_react13.default.useState(false);
|
|
7707
|
+
const [tempDate, setTempDate] = import_react13.default.useState(value ?? /* @__PURE__ */ new Date());
|
|
7623
7708
|
const handleOpen = () => {
|
|
7624
7709
|
if (disabled) return;
|
|
7625
7710
|
setTempDate(value ?? /* @__PURE__ */ new Date());
|
|
@@ -7635,19 +7720,19 @@ var InputDatePicker = (props) => {
|
|
|
7635
7720
|
const handleClose = () => {
|
|
7636
7721
|
setIsOpen(false);
|
|
7637
7722
|
};
|
|
7638
|
-
return /* @__PURE__ */ (0,
|
|
7639
|
-
/* @__PURE__ */ (0,
|
|
7723
|
+
return /* @__PURE__ */ (0, import_jsx_runtime315.jsxs)("div", { className: clsx_default("lib-xplat-datepicker input-datepicker", disabled && "disabled"), children: [
|
|
7724
|
+
/* @__PURE__ */ (0, import_jsx_runtime315.jsx)("div", { className: "input-datepicker-trigger", onClick: handleOpen, children: /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(
|
|
7640
7725
|
Input_default,
|
|
7641
7726
|
{
|
|
7642
7727
|
value: formatDate(value),
|
|
7643
7728
|
placeholder,
|
|
7644
|
-
suffix: /* @__PURE__ */ (0,
|
|
7729
|
+
suffix: /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(CalenderIcon_default, {}),
|
|
7645
7730
|
disabled,
|
|
7646
7731
|
readOnly: true
|
|
7647
7732
|
}
|
|
7648
7733
|
) }),
|
|
7649
|
-
/* @__PURE__ */ (0,
|
|
7650
|
-
/* @__PURE__ */ (0,
|
|
7734
|
+
/* @__PURE__ */ (0, import_jsx_runtime315.jsx)(Modal_default, { isOpen, onClose: handleClose, children: /* @__PURE__ */ (0, import_jsx_runtime315.jsxs)("div", { className: "lib-xplat-popup-datepicker-card", children: [
|
|
7735
|
+
/* @__PURE__ */ (0, import_jsx_runtime315.jsx)("div", { className: "popup-datepicker-content", children: /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(
|
|
7651
7736
|
SingleDatePicker_default,
|
|
7652
7737
|
{
|
|
7653
7738
|
value: tempDate,
|
|
@@ -7657,9 +7742,9 @@ var InputDatePicker = (props) => {
|
|
|
7657
7742
|
locale
|
|
7658
7743
|
}
|
|
7659
7744
|
) }),
|
|
7660
|
-
/* @__PURE__ */ (0,
|
|
7661
|
-
/* @__PURE__ */ (0,
|
|
7662
|
-
/* @__PURE__ */ (0,
|
|
7745
|
+
/* @__PURE__ */ (0, import_jsx_runtime315.jsxs)("div", { className: "popup-datepicker-footer", children: [
|
|
7746
|
+
/* @__PURE__ */ (0, import_jsx_runtime315.jsx)(Button_default, { type: "secondary", onClick: handleClose, children: locale === "ko" ? "\uCDE8\uC18C" : "Cancel" }),
|
|
7747
|
+
/* @__PURE__ */ (0, import_jsx_runtime315.jsx)(Button_default, { type: "primary", onClick: handleApply, children: locale === "ko" ? "\uC801\uC6A9" : "Apply" })
|
|
7663
7748
|
] })
|
|
7664
7749
|
] }) })
|
|
7665
7750
|
] });
|
|
@@ -7668,20 +7753,20 @@ InputDatePicker.displayName = "InputDatePicker";
|
|
|
7668
7753
|
var InputDatePicker_default = InputDatePicker;
|
|
7669
7754
|
|
|
7670
7755
|
// src/components/DatePicker/PopupPicker/index.tsx
|
|
7671
|
-
var
|
|
7756
|
+
var import_react17 = __toESM(require("react"), 1);
|
|
7672
7757
|
|
|
7673
7758
|
// src/components/DatePicker/RangePicker/index.tsx
|
|
7674
|
-
var
|
|
7759
|
+
var import_react16 = __toESM(require("react"), 1);
|
|
7675
7760
|
|
|
7676
7761
|
// src/components/Tab/Tab.tsx
|
|
7677
|
-
var
|
|
7762
|
+
var import_react15 = __toESM(require("react"), 1);
|
|
7678
7763
|
|
|
7679
7764
|
// src/components/Tab/TabItem.tsx
|
|
7680
|
-
var
|
|
7681
|
-
var
|
|
7682
|
-
var TabItem =
|
|
7765
|
+
var import_react14 = __toESM(require("react"), 1);
|
|
7766
|
+
var import_jsx_runtime316 = require("react/jsx-runtime");
|
|
7767
|
+
var TabItem = import_react14.default.forwardRef((props, ref) => {
|
|
7683
7768
|
const { isActive, title, onClick } = props;
|
|
7684
|
-
return /* @__PURE__ */ (0,
|
|
7769
|
+
return /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(
|
|
7685
7770
|
"div",
|
|
7686
7771
|
{
|
|
7687
7772
|
ref,
|
|
@@ -7695,25 +7780,25 @@ TabItem.displayName = "TabItem";
|
|
|
7695
7780
|
var TabItem_default = TabItem;
|
|
7696
7781
|
|
|
7697
7782
|
// src/components/Tab/Tab.tsx
|
|
7698
|
-
var
|
|
7783
|
+
var import_jsx_runtime317 = require("react/jsx-runtime");
|
|
7699
7784
|
var Tab = (props) => {
|
|
7700
7785
|
const { activeIndex, onChange, tabs, type, size = "md" } = props;
|
|
7701
|
-
const [underlineStyle, setUnderlineStyle] =
|
|
7786
|
+
const [underlineStyle, setUnderlineStyle] = import_react15.default.useState({
|
|
7702
7787
|
left: 0,
|
|
7703
7788
|
width: 0
|
|
7704
7789
|
});
|
|
7705
|
-
const itemRefs =
|
|
7790
|
+
const itemRefs = import_react15.default.useRef([]);
|
|
7706
7791
|
const handleChangeActiveTab = (tabItem, tabIdx) => {
|
|
7707
7792
|
onChange(tabItem, tabIdx);
|
|
7708
7793
|
};
|
|
7709
|
-
|
|
7794
|
+
import_react15.default.useEffect(() => {
|
|
7710
7795
|
const el = itemRefs.current[activeIndex];
|
|
7711
7796
|
if (el) {
|
|
7712
7797
|
setUnderlineStyle({ left: el.offsetLeft, width: el.offsetWidth });
|
|
7713
7798
|
}
|
|
7714
7799
|
}, [activeIndex, tabs.length]);
|
|
7715
|
-
return /* @__PURE__ */ (0,
|
|
7716
|
-
tabs.map((tab, idx) => /* @__PURE__ */ (0,
|
|
7800
|
+
return /* @__PURE__ */ (0, import_jsx_runtime317.jsxs)("div", { className: clsx_default("lib-xplat-tab", `type-${type}`, size), children: [
|
|
7801
|
+
tabs.map((tab, idx) => /* @__PURE__ */ (0, import_jsx_runtime317.jsx)(
|
|
7717
7802
|
TabItem_default,
|
|
7718
7803
|
{
|
|
7719
7804
|
onClick: () => handleChangeActiveTab(tab, idx),
|
|
@@ -7725,7 +7810,7 @@ var Tab = (props) => {
|
|
|
7725
7810
|
},
|
|
7726
7811
|
`${tab.value}_${idx}`
|
|
7727
7812
|
)),
|
|
7728
|
-
type === "toggle" && /* @__PURE__ */ (0,
|
|
7813
|
+
type === "toggle" && /* @__PURE__ */ (0, import_jsx_runtime317.jsx)(
|
|
7729
7814
|
"div",
|
|
7730
7815
|
{
|
|
7731
7816
|
className: "tab-toggle-underline",
|
|
@@ -7741,7 +7826,7 @@ Tab.displayName = "Tab";
|
|
|
7741
7826
|
var Tab_default = Tab;
|
|
7742
7827
|
|
|
7743
7828
|
// src/components/DatePicker/RangePicker/index.tsx
|
|
7744
|
-
var
|
|
7829
|
+
var import_jsx_runtime318 = require("react/jsx-runtime");
|
|
7745
7830
|
var RangePicker = (props) => {
|
|
7746
7831
|
const {
|
|
7747
7832
|
startDate,
|
|
@@ -7751,7 +7836,7 @@ var RangePicker = (props) => {
|
|
|
7751
7836
|
maxDate,
|
|
7752
7837
|
locale = "ko"
|
|
7753
7838
|
} = props;
|
|
7754
|
-
const [activeTab, setActiveTab] =
|
|
7839
|
+
const [activeTab, setActiveTab] = import_react16.default.useState("start");
|
|
7755
7840
|
const handleStartChange = (date) => {
|
|
7756
7841
|
if (!date) return;
|
|
7757
7842
|
const newStart = date > endDate ? endDate : date;
|
|
@@ -7764,8 +7849,8 @@ var RangePicker = (props) => {
|
|
|
7764
7849
|
};
|
|
7765
7850
|
const startMaxDate = maxDate && endDate < maxDate ? endDate : endDate;
|
|
7766
7851
|
const endMinDate = minDate && startDate > minDate ? startDate : startDate;
|
|
7767
|
-
return /* @__PURE__ */ (0,
|
|
7768
|
-
/* @__PURE__ */ (0,
|
|
7852
|
+
return /* @__PURE__ */ (0, import_jsx_runtime318.jsxs)("div", { className: clsx_default("lib-xplat-datepicker", "range"), children: [
|
|
7853
|
+
/* @__PURE__ */ (0, import_jsx_runtime318.jsx)("div", { className: "datepicker-range-tabs", children: /* @__PURE__ */ (0, import_jsx_runtime318.jsx)(
|
|
7769
7854
|
Tab_default,
|
|
7770
7855
|
{
|
|
7771
7856
|
activeIndex: activeTab === "start" ? 0 : 1,
|
|
@@ -7778,8 +7863,8 @@ var RangePicker = (props) => {
|
|
|
7778
7863
|
size: "sm"
|
|
7779
7864
|
}
|
|
7780
7865
|
) }),
|
|
7781
|
-
/* @__PURE__ */ (0,
|
|
7782
|
-
/* @__PURE__ */ (0,
|
|
7866
|
+
/* @__PURE__ */ (0, import_jsx_runtime318.jsxs)("div", { className: "datepicker-range-panels", children: [
|
|
7867
|
+
/* @__PURE__ */ (0, import_jsx_runtime318.jsx)(
|
|
7783
7868
|
SingleDatePicker_default,
|
|
7784
7869
|
{
|
|
7785
7870
|
value: startDate,
|
|
@@ -7791,7 +7876,7 @@ var RangePicker = (props) => {
|
|
|
7791
7876
|
locale
|
|
7792
7877
|
}
|
|
7793
7878
|
),
|
|
7794
|
-
/* @__PURE__ */ (0,
|
|
7879
|
+
/* @__PURE__ */ (0, import_jsx_runtime318.jsx)(
|
|
7795
7880
|
SingleDatePicker_default,
|
|
7796
7881
|
{
|
|
7797
7882
|
value: endDate,
|
|
@@ -7804,7 +7889,7 @@ var RangePicker = (props) => {
|
|
|
7804
7889
|
}
|
|
7805
7890
|
)
|
|
7806
7891
|
] }),
|
|
7807
|
-
/* @__PURE__ */ (0,
|
|
7892
|
+
/* @__PURE__ */ (0, import_jsx_runtime318.jsx)("div", { className: "datepicker-range-mobile", children: activeTab === "start" ? /* @__PURE__ */ (0, import_jsx_runtime318.jsx)(
|
|
7808
7893
|
SingleDatePicker_default,
|
|
7809
7894
|
{
|
|
7810
7895
|
value: startDate,
|
|
@@ -7815,7 +7900,7 @@ var RangePicker = (props) => {
|
|
|
7815
7900
|
rangeEnd: endDate,
|
|
7816
7901
|
locale
|
|
7817
7902
|
}
|
|
7818
|
-
) : /* @__PURE__ */ (0,
|
|
7903
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime318.jsx)(
|
|
7819
7904
|
SingleDatePicker_default,
|
|
7820
7905
|
{
|
|
7821
7906
|
value: endDate,
|
|
@@ -7833,10 +7918,10 @@ RangePicker.displayName = "RangePicker";
|
|
|
7833
7918
|
var RangePicker_default = RangePicker;
|
|
7834
7919
|
|
|
7835
7920
|
// src/components/DatePicker/PopupPicker/index.tsx
|
|
7836
|
-
var
|
|
7921
|
+
var import_jsx_runtime319 = require("react/jsx-runtime");
|
|
7837
7922
|
var PopupPicker = (props) => {
|
|
7838
7923
|
const { component, type, locale } = props;
|
|
7839
|
-
const [isOpen, setIsOpen] =
|
|
7924
|
+
const [isOpen, setIsOpen] = import_react17.default.useState(false);
|
|
7840
7925
|
const handleClick = () => setIsOpen(true);
|
|
7841
7926
|
const handleClose = () => setIsOpen(false);
|
|
7842
7927
|
const handleSingleChange = (date) => {
|
|
@@ -7844,11 +7929,11 @@ var PopupPicker = (props) => {
|
|
|
7844
7929
|
props.onChange?.(date);
|
|
7845
7930
|
handleClose();
|
|
7846
7931
|
};
|
|
7847
|
-
return /* @__PURE__ */ (0,
|
|
7848
|
-
|
|
7849
|
-
/* @__PURE__ */ (0,
|
|
7850
|
-
/* @__PURE__ */ (0,
|
|
7851
|
-
type === "single" && /* @__PURE__ */ (0,
|
|
7932
|
+
return /* @__PURE__ */ (0, import_jsx_runtime319.jsxs)("div", { className: "lib-xplat-popup-datepicker", children: [
|
|
7933
|
+
import_react17.default.cloneElement(component, { onClick: handleClick }),
|
|
7934
|
+
/* @__PURE__ */ (0, import_jsx_runtime319.jsx)(Modal_default, { isOpen, onClose: handleClose, children: /* @__PURE__ */ (0, import_jsx_runtime319.jsxs)("div", { className: clsx_default("lib-xplat-popup-datepicker-card", type === "range" && "range-mode"), children: [
|
|
7935
|
+
/* @__PURE__ */ (0, import_jsx_runtime319.jsxs)("div", { className: "popup-datepicker-content", children: [
|
|
7936
|
+
type === "single" && /* @__PURE__ */ (0, import_jsx_runtime319.jsx)(
|
|
7852
7937
|
SingleDatePicker_default,
|
|
7853
7938
|
{
|
|
7854
7939
|
value: props.value,
|
|
@@ -7858,7 +7943,7 @@ var PopupPicker = (props) => {
|
|
|
7858
7943
|
locale
|
|
7859
7944
|
}
|
|
7860
7945
|
),
|
|
7861
|
-
type === "range" && /* @__PURE__ */ (0,
|
|
7946
|
+
type === "range" && /* @__PURE__ */ (0, import_jsx_runtime319.jsx)(
|
|
7862
7947
|
RangePicker_default,
|
|
7863
7948
|
{
|
|
7864
7949
|
startDate: props.startDate,
|
|
@@ -7870,8 +7955,8 @@ var PopupPicker = (props) => {
|
|
|
7870
7955
|
}
|
|
7871
7956
|
)
|
|
7872
7957
|
] }),
|
|
7873
|
-
/* @__PURE__ */ (0,
|
|
7874
|
-
/* @__PURE__ */ (0,
|
|
7958
|
+
/* @__PURE__ */ (0, import_jsx_runtime319.jsxs)("div", { className: "popup-datepicker-footer", children: [
|
|
7959
|
+
/* @__PURE__ */ (0, import_jsx_runtime319.jsx)(
|
|
7875
7960
|
Button_default,
|
|
7876
7961
|
{
|
|
7877
7962
|
type: "secondary",
|
|
@@ -7879,7 +7964,7 @@ var PopupPicker = (props) => {
|
|
|
7879
7964
|
children: locale === "ko" ? "\uCDE8\uC18C" : "Cancel"
|
|
7880
7965
|
}
|
|
7881
7966
|
),
|
|
7882
|
-
/* @__PURE__ */ (0,
|
|
7967
|
+
/* @__PURE__ */ (0, import_jsx_runtime319.jsx)(Button_default, { type: "primary", onClick: handleClose, children: locale === "ko" ? "\uC801\uC6A9" : "Apply" })
|
|
7883
7968
|
] })
|
|
7884
7969
|
] }) })
|
|
7885
7970
|
] });
|
|
@@ -7888,10 +7973,10 @@ PopupPicker.displayName = "PopupPicker";
|
|
|
7888
7973
|
var PopupPicker_default = PopupPicker;
|
|
7889
7974
|
|
|
7890
7975
|
// src/components/Divider/Divider.tsx
|
|
7891
|
-
var
|
|
7976
|
+
var import_jsx_runtime320 = require("react/jsx-runtime");
|
|
7892
7977
|
var Divider = (props) => {
|
|
7893
7978
|
const { orientation = "horizontal" } = props;
|
|
7894
|
-
return /* @__PURE__ */ (0,
|
|
7979
|
+
return /* @__PURE__ */ (0, import_jsx_runtime320.jsx)(
|
|
7895
7980
|
"div",
|
|
7896
7981
|
{
|
|
7897
7982
|
className: clsx_default("lib-xplat-divider", orientation),
|
|
@@ -7904,15 +7989,15 @@ Divider.displayName = "Divider";
|
|
|
7904
7989
|
var Divider_default = Divider;
|
|
7905
7990
|
|
|
7906
7991
|
// src/components/Drawer/Drawer.tsx
|
|
7907
|
-
var
|
|
7992
|
+
var import_react18 = __toESM(require("react"), 1);
|
|
7908
7993
|
var import_react_dom3 = require("react-dom");
|
|
7909
|
-
var
|
|
7994
|
+
var import_jsx_runtime321 = require("react/jsx-runtime");
|
|
7910
7995
|
var ANIMATION_DURATION_MS2 = 250;
|
|
7911
7996
|
var Drawer = (props) => {
|
|
7912
7997
|
const { isOpen, onClose, placement = "right", size = "md", title, children } = props;
|
|
7913
|
-
const [mounted, setMounted] =
|
|
7914
|
-
const [visible, setVisible] =
|
|
7915
|
-
|
|
7998
|
+
const [mounted, setMounted] = import_react18.default.useState(false);
|
|
7999
|
+
const [visible, setVisible] = import_react18.default.useState(false);
|
|
8000
|
+
import_react18.default.useEffect(() => {
|
|
7916
8001
|
if (isOpen) {
|
|
7917
8002
|
setMounted(true);
|
|
7918
8003
|
const t2 = setTimeout(() => setVisible(true), 1);
|
|
@@ -7926,12 +8011,12 @@ var Drawer = (props) => {
|
|
|
7926
8011
|
if (!mounted) return null;
|
|
7927
8012
|
const stateClass = visible ? "enter" : "exit";
|
|
7928
8013
|
return (0, import_react_dom3.createPortal)(
|
|
7929
|
-
/* @__PURE__ */ (0,
|
|
8014
|
+
/* @__PURE__ */ (0, import_jsx_runtime321.jsx)(
|
|
7930
8015
|
"div",
|
|
7931
8016
|
{
|
|
7932
8017
|
className: clsx_default("lib-xplat-drawer-overlay", stateClass),
|
|
7933
8018
|
onClick: onClose,
|
|
7934
|
-
children: /* @__PURE__ */ (0,
|
|
8019
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime321.jsxs)(
|
|
7935
8020
|
"div",
|
|
7936
8021
|
{
|
|
7937
8022
|
className: clsx_default("lib-xplat-drawer", placement, size, stateClass),
|
|
@@ -7939,11 +8024,11 @@ var Drawer = (props) => {
|
|
|
7939
8024
|
"aria-modal": "true",
|
|
7940
8025
|
onClick: (e) => e.stopPropagation(),
|
|
7941
8026
|
children: [
|
|
7942
|
-
title && /* @__PURE__ */ (0,
|
|
7943
|
-
/* @__PURE__ */ (0,
|
|
7944
|
-
/* @__PURE__ */ (0,
|
|
8027
|
+
title && /* @__PURE__ */ (0, import_jsx_runtime321.jsxs)("div", { className: "drawer-header", children: [
|
|
8028
|
+
/* @__PURE__ */ (0, import_jsx_runtime321.jsx)("span", { className: "drawer-title", children: title }),
|
|
8029
|
+
/* @__PURE__ */ (0, import_jsx_runtime321.jsx)("button", { className: "close-btn", onClick: onClose, "aria-label": "\uB2EB\uAE30", children: "\xD7" })
|
|
7945
8030
|
] }),
|
|
7946
|
-
/* @__PURE__ */ (0,
|
|
8031
|
+
/* @__PURE__ */ (0, import_jsx_runtime321.jsx)("div", { className: "drawer-body", children })
|
|
7947
8032
|
]
|
|
7948
8033
|
}
|
|
7949
8034
|
)
|
|
@@ -7956,16 +8041,16 @@ Drawer.displayName = "Drawer";
|
|
|
7956
8041
|
var Drawer_default = Drawer;
|
|
7957
8042
|
|
|
7958
8043
|
// src/components/Dropdown/Dropdown.tsx
|
|
7959
|
-
var
|
|
8044
|
+
var import_react21 = __toESM(require("react"), 1);
|
|
7960
8045
|
|
|
7961
8046
|
// src/tokens/hooks/useAutoPosition.ts
|
|
7962
|
-
var
|
|
8047
|
+
var import_react19 = __toESM(require("react"), 1);
|
|
7963
8048
|
var useAutoPosition = (triggerRef, popRef, enabled = true) => {
|
|
7964
|
-
const [position, setPosition] =
|
|
8049
|
+
const [position, setPosition] = import_react19.default.useState({
|
|
7965
8050
|
position: {},
|
|
7966
8051
|
direction: "bottom"
|
|
7967
8052
|
});
|
|
7968
|
-
const calculatePosition =
|
|
8053
|
+
const calculatePosition = import_react19.default.useCallback(() => {
|
|
7969
8054
|
if (!triggerRef.current || !popRef.current) return;
|
|
7970
8055
|
const triggerRect = triggerRef.current.getBoundingClientRect();
|
|
7971
8056
|
const popW = popRef.current.offsetWidth;
|
|
@@ -7992,13 +8077,13 @@ var useAutoPosition = (triggerRef, popRef, enabled = true) => {
|
|
|
7992
8077
|
direction
|
|
7993
8078
|
});
|
|
7994
8079
|
}, [triggerRef, popRef]);
|
|
7995
|
-
|
|
8080
|
+
import_react19.default.useLayoutEffect(() => {
|
|
7996
8081
|
if (!enabled) return;
|
|
7997
8082
|
calculatePosition();
|
|
7998
8083
|
const raf = requestAnimationFrame(calculatePosition);
|
|
7999
8084
|
return () => cancelAnimationFrame(raf);
|
|
8000
8085
|
}, [calculatePosition, enabled]);
|
|
8001
|
-
|
|
8086
|
+
import_react19.default.useEffect(() => {
|
|
8002
8087
|
if (!enabled || !popRef.current) return;
|
|
8003
8088
|
const observer = new ResizeObserver(() => {
|
|
8004
8089
|
calculatePosition();
|
|
@@ -8006,7 +8091,7 @@ var useAutoPosition = (triggerRef, popRef, enabled = true) => {
|
|
|
8006
8091
|
observer.observe(popRef.current);
|
|
8007
8092
|
return () => observer.disconnect();
|
|
8008
8093
|
}, [calculatePosition, enabled, popRef]);
|
|
8009
|
-
|
|
8094
|
+
import_react19.default.useEffect(() => {
|
|
8010
8095
|
if (!enabled) return;
|
|
8011
8096
|
window.addEventListener("resize", calculatePosition);
|
|
8012
8097
|
window.addEventListener("scroll", calculatePosition, true);
|
|
@@ -8020,9 +8105,9 @@ var useAutoPosition = (triggerRef, popRef, enabled = true) => {
|
|
|
8020
8105
|
var useAutoPosition_default = useAutoPosition;
|
|
8021
8106
|
|
|
8022
8107
|
// src/tokens/hooks/useClickOutside.ts
|
|
8023
|
-
var
|
|
8108
|
+
var import_react20 = __toESM(require("react"), 1);
|
|
8024
8109
|
var useClickOutside = (refs, handler, enabled = true) => {
|
|
8025
|
-
|
|
8110
|
+
import_react20.default.useEffect(() => {
|
|
8026
8111
|
if (!enabled) return;
|
|
8027
8112
|
const refArray = Array.isArray(refs) ? refs : [refs];
|
|
8028
8113
|
const listener = (event) => {
|
|
@@ -8045,17 +8130,17 @@ var useClickOutside = (refs, handler, enabled = true) => {
|
|
|
8045
8130
|
var useClickOutside_default = useClickOutside;
|
|
8046
8131
|
|
|
8047
8132
|
// src/components/Dropdown/Dropdown.tsx
|
|
8048
|
-
var
|
|
8133
|
+
var import_jsx_runtime322 = require("react/jsx-runtime");
|
|
8049
8134
|
var Dropdown = (props) => {
|
|
8050
8135
|
const { items, children } = props;
|
|
8051
|
-
const [isOpen, setIsOpen] =
|
|
8052
|
-
const [mounted, setMounted] =
|
|
8053
|
-
const [visible, setVisible] =
|
|
8054
|
-
const triggerRef =
|
|
8055
|
-
const menuRef =
|
|
8136
|
+
const [isOpen, setIsOpen] = import_react21.default.useState(false);
|
|
8137
|
+
const [mounted, setMounted] = import_react21.default.useState(false);
|
|
8138
|
+
const [visible, setVisible] = import_react21.default.useState(false);
|
|
8139
|
+
const triggerRef = import_react21.default.useRef(null);
|
|
8140
|
+
const menuRef = import_react21.default.useRef(null);
|
|
8056
8141
|
const { position, direction } = useAutoPosition_default(triggerRef, menuRef, mounted);
|
|
8057
8142
|
useClickOutside_default([triggerRef, menuRef], () => setIsOpen(false), isOpen);
|
|
8058
|
-
|
|
8143
|
+
import_react21.default.useEffect(() => {
|
|
8059
8144
|
if (isOpen) {
|
|
8060
8145
|
setMounted(true);
|
|
8061
8146
|
const t2 = setTimeout(() => setVisible(true), 1);
|
|
@@ -8070,8 +8155,8 @@ var Dropdown = (props) => {
|
|
|
8070
8155
|
item.onClick?.();
|
|
8071
8156
|
setIsOpen(false);
|
|
8072
8157
|
};
|
|
8073
|
-
return /* @__PURE__ */ (0,
|
|
8074
|
-
/* @__PURE__ */ (0,
|
|
8158
|
+
return /* @__PURE__ */ (0, import_jsx_runtime322.jsxs)("div", { className: "lib-xplat-dropdown", children: [
|
|
8159
|
+
/* @__PURE__ */ (0, import_jsx_runtime322.jsx)(
|
|
8075
8160
|
"div",
|
|
8076
8161
|
{
|
|
8077
8162
|
ref: triggerRef,
|
|
@@ -8080,14 +8165,14 @@ var Dropdown = (props) => {
|
|
|
8080
8165
|
children
|
|
8081
8166
|
}
|
|
8082
8167
|
),
|
|
8083
|
-
mounted && /* @__PURE__ */ (0,
|
|
8168
|
+
mounted && /* @__PURE__ */ (0, import_jsx_runtime322.jsx)(Portal_default, { children: /* @__PURE__ */ (0, import_jsx_runtime322.jsx)(
|
|
8084
8169
|
"div",
|
|
8085
8170
|
{
|
|
8086
8171
|
ref: menuRef,
|
|
8087
8172
|
className: clsx_default("lib-xplat-dropdown-menu", direction, { visible }),
|
|
8088
8173
|
style: { top: position.top, left: position.left },
|
|
8089
8174
|
role: "menu",
|
|
8090
|
-
children: items.map((item) => /* @__PURE__ */ (0,
|
|
8175
|
+
children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime322.jsx)(
|
|
8091
8176
|
"button",
|
|
8092
8177
|
{
|
|
8093
8178
|
className: clsx_default("dropdown-item", {
|
|
@@ -8109,23 +8194,23 @@ Dropdown.displayName = "Dropdown";
|
|
|
8109
8194
|
var Dropdown_default = Dropdown;
|
|
8110
8195
|
|
|
8111
8196
|
// src/components/EmptyState/EmptyState.tsx
|
|
8112
|
-
var
|
|
8197
|
+
var import_jsx_runtime323 = require("react/jsx-runtime");
|
|
8113
8198
|
var EmptyState = (props) => {
|
|
8114
8199
|
const { icon, title = "\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4", description, action } = props;
|
|
8115
|
-
return /* @__PURE__ */ (0,
|
|
8116
|
-
icon && /* @__PURE__ */ (0,
|
|
8117
|
-
!icon && /* @__PURE__ */ (0,
|
|
8118
|
-
/* @__PURE__ */ (0,
|
|
8119
|
-
description && /* @__PURE__ */ (0,
|
|
8120
|
-
action && /* @__PURE__ */ (0,
|
|
8200
|
+
return /* @__PURE__ */ (0, import_jsx_runtime323.jsxs)("div", { className: "lib-xplat-empty-state", children: [
|
|
8201
|
+
icon && /* @__PURE__ */ (0, import_jsx_runtime323.jsx)("div", { className: "empty-icon", children: icon }),
|
|
8202
|
+
!icon && /* @__PURE__ */ (0, import_jsx_runtime323.jsx)("div", { className: "empty-icon", children: /* @__PURE__ */ (0, import_jsx_runtime323.jsx)("svg", { viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime323.jsx)("path", { d: "M20 6h-8l-2-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm0 12H4V8h16v10z" }) }) }),
|
|
8203
|
+
/* @__PURE__ */ (0, import_jsx_runtime323.jsx)("p", { className: "empty-title", children: title }),
|
|
8204
|
+
description && /* @__PURE__ */ (0, import_jsx_runtime323.jsx)("p", { className: "empty-description", children: description }),
|
|
8205
|
+
action && /* @__PURE__ */ (0, import_jsx_runtime323.jsx)("div", { className: "empty-action", children: action })
|
|
8121
8206
|
] });
|
|
8122
8207
|
};
|
|
8123
8208
|
EmptyState.displayName = "EmptyState";
|
|
8124
8209
|
var EmptyState_default = EmptyState;
|
|
8125
8210
|
|
|
8126
8211
|
// src/components/FileUpload/FileUpload.tsx
|
|
8127
|
-
var
|
|
8128
|
-
var
|
|
8212
|
+
var import_react22 = __toESM(require("react"), 1);
|
|
8213
|
+
var import_jsx_runtime324 = require("react/jsx-runtime");
|
|
8129
8214
|
var FileUpload = (props) => {
|
|
8130
8215
|
const {
|
|
8131
8216
|
accept,
|
|
@@ -8135,8 +8220,8 @@ var FileUpload = (props) => {
|
|
|
8135
8220
|
label = "\uD30C\uC77C\uC744 \uB4DC\uB798\uADF8\uD558\uAC70\uB098 \uD074\uB9AD\uD558\uC5EC \uC5C5\uB85C\uB4DC",
|
|
8136
8221
|
description
|
|
8137
8222
|
} = props;
|
|
8138
|
-
const [isDragOver, setIsDragOver] =
|
|
8139
|
-
const inputRef =
|
|
8223
|
+
const [isDragOver, setIsDragOver] = import_react22.default.useState(false);
|
|
8224
|
+
const inputRef = import_react22.default.useRef(null);
|
|
8140
8225
|
const handleFiles = (fileList) => {
|
|
8141
8226
|
let files = Array.from(fileList);
|
|
8142
8227
|
if (maxSize) {
|
|
@@ -8166,7 +8251,7 @@ var FileUpload = (props) => {
|
|
|
8166
8251
|
handleFiles(e.target.files);
|
|
8167
8252
|
}
|
|
8168
8253
|
};
|
|
8169
|
-
return /* @__PURE__ */ (0,
|
|
8254
|
+
return /* @__PURE__ */ (0, import_jsx_runtime324.jsxs)(
|
|
8170
8255
|
"div",
|
|
8171
8256
|
{
|
|
8172
8257
|
className: clsx_default("lib-xplat-file-upload", { "drag-over": isDragOver }),
|
|
@@ -8175,7 +8260,7 @@ var FileUpload = (props) => {
|
|
|
8175
8260
|
onDragLeave: handleDragLeave,
|
|
8176
8261
|
onClick: () => inputRef.current?.click(),
|
|
8177
8262
|
children: [
|
|
8178
|
-
/* @__PURE__ */ (0,
|
|
8263
|
+
/* @__PURE__ */ (0, import_jsx_runtime324.jsx)(
|
|
8179
8264
|
"input",
|
|
8180
8265
|
{
|
|
8181
8266
|
ref: inputRef,
|
|
@@ -8185,9 +8270,9 @@ var FileUpload = (props) => {
|
|
|
8185
8270
|
onChange: handleChange
|
|
8186
8271
|
}
|
|
8187
8272
|
),
|
|
8188
|
-
/* @__PURE__ */ (0,
|
|
8189
|
-
/* @__PURE__ */ (0,
|
|
8190
|
-
description && /* @__PURE__ */ (0,
|
|
8273
|
+
/* @__PURE__ */ (0, import_jsx_runtime324.jsx)("div", { className: "upload-icon", children: /* @__PURE__ */ (0, import_jsx_runtime324.jsx)(UploadIcon_default, {}) }),
|
|
8274
|
+
/* @__PURE__ */ (0, import_jsx_runtime324.jsx)("p", { className: "upload-label", children: label }),
|
|
8275
|
+
description && /* @__PURE__ */ (0, import_jsx_runtime324.jsx)("p", { className: "upload-description", children: description })
|
|
8191
8276
|
]
|
|
8192
8277
|
}
|
|
8193
8278
|
);
|
|
@@ -8196,10 +8281,10 @@ FileUpload.displayName = "FileUpload";
|
|
|
8196
8281
|
var FileUpload_default = FileUpload;
|
|
8197
8282
|
|
|
8198
8283
|
// src/components/HtmlTypeWriter/HtmlTypeWriter.tsx
|
|
8199
|
-
var
|
|
8284
|
+
var import_react24 = __toESM(require("react"), 1);
|
|
8200
8285
|
|
|
8201
8286
|
// src/components/HtmlTypeWriter/utils.ts
|
|
8202
|
-
var
|
|
8287
|
+
var import_react23 = __toESM(require("react"), 1);
|
|
8203
8288
|
var voidTags = /* @__PURE__ */ new Set([
|
|
8204
8289
|
"br",
|
|
8205
8290
|
"img",
|
|
@@ -8267,41 +8352,41 @@ var convertNodeToReactWithRange = (node, typedLen, rangeMap) => {
|
|
|
8267
8352
|
props[attr.name] = attr.value;
|
|
8268
8353
|
});
|
|
8269
8354
|
if (voidTags.has(tag)) {
|
|
8270
|
-
return
|
|
8355
|
+
return import_react23.default.createElement(tag, props);
|
|
8271
8356
|
}
|
|
8272
8357
|
const children = Array.from(element.childNodes).map((child) => convertNodeToReactWithRange(child, typedLen, rangeMap)).filter((n) => n != null);
|
|
8273
|
-
return
|
|
8358
|
+
return import_react23.default.createElement(tag, props, ...children);
|
|
8274
8359
|
};
|
|
8275
8360
|
var htmlToReactProgressive = (root, typedLen, rangeMap) => {
|
|
8276
8361
|
const nodes = Array.from(root.childNodes).map((child, idx) => {
|
|
8277
8362
|
const node = convertNodeToReactWithRange(child, typedLen, rangeMap);
|
|
8278
|
-
return node == null ? null :
|
|
8363
|
+
return node == null ? null : import_react23.default.createElement(import_react23.default.Fragment, { key: idx }, node);
|
|
8279
8364
|
}).filter(Boolean);
|
|
8280
8365
|
return nodes.length === 0 ? null : nodes;
|
|
8281
8366
|
};
|
|
8282
8367
|
|
|
8283
8368
|
// src/components/HtmlTypeWriter/HtmlTypeWriter.tsx
|
|
8284
|
-
var
|
|
8369
|
+
var import_jsx_runtime325 = require("react/jsx-runtime");
|
|
8285
8370
|
var HtmlTypeWriter = ({
|
|
8286
8371
|
html,
|
|
8287
8372
|
duration = 20,
|
|
8288
8373
|
onDone,
|
|
8289
8374
|
onChange
|
|
8290
8375
|
}) => {
|
|
8291
|
-
const [typedLen, setTypedLen] =
|
|
8292
|
-
const doneCalledRef =
|
|
8293
|
-
const { doc, rangeMap, totalLength } =
|
|
8376
|
+
const [typedLen, setTypedLen] = import_react24.default.useState(0);
|
|
8377
|
+
const doneCalledRef = import_react24.default.useRef(false);
|
|
8378
|
+
const { doc, rangeMap, totalLength } = import_react24.default.useMemo(() => {
|
|
8294
8379
|
if (typeof window === "undefined") return { doc: null, rangeMap: /* @__PURE__ */ new Map(), totalLength: 0 };
|
|
8295
8380
|
const decoded = decodeHtmlEntities(html);
|
|
8296
8381
|
const doc2 = new DOMParser().parseFromString(decoded, "text/html");
|
|
8297
8382
|
const { rangeMap: rangeMap2, totalLength: totalLength2 } = buildRangeMap(doc2.body);
|
|
8298
8383
|
return { doc: doc2, rangeMap: rangeMap2, totalLength: totalLength2 };
|
|
8299
8384
|
}, [html]);
|
|
8300
|
-
|
|
8385
|
+
import_react24.default.useEffect(() => {
|
|
8301
8386
|
setTypedLen(0);
|
|
8302
8387
|
doneCalledRef.current = false;
|
|
8303
8388
|
}, [html]);
|
|
8304
|
-
|
|
8389
|
+
import_react24.default.useEffect(() => {
|
|
8305
8390
|
if (!totalLength) return;
|
|
8306
8391
|
if (typedLen >= totalLength) return;
|
|
8307
8392
|
const timer = window.setInterval(() => {
|
|
@@ -8309,33 +8394,33 @@ var HtmlTypeWriter = ({
|
|
|
8309
8394
|
}, duration);
|
|
8310
8395
|
return () => window.clearInterval(timer);
|
|
8311
8396
|
}, [typedLen, totalLength, duration]);
|
|
8312
|
-
|
|
8397
|
+
import_react24.default.useEffect(() => {
|
|
8313
8398
|
if (typedLen > 0 && typedLen < totalLength) {
|
|
8314
8399
|
onChange?.();
|
|
8315
8400
|
}
|
|
8316
8401
|
}, [typedLen, totalLength, onChange]);
|
|
8317
|
-
|
|
8402
|
+
import_react24.default.useEffect(() => {
|
|
8318
8403
|
if (typedLen === totalLength && totalLength > 0 && !doneCalledRef.current) {
|
|
8319
8404
|
doneCalledRef.current = true;
|
|
8320
8405
|
onDone?.();
|
|
8321
8406
|
}
|
|
8322
8407
|
}, [typedLen, totalLength, onDone]);
|
|
8323
|
-
const parsed =
|
|
8408
|
+
const parsed = import_react24.default.useMemo(
|
|
8324
8409
|
() => doc ? htmlToReactProgressive(doc.body, typedLen, rangeMap) : null,
|
|
8325
8410
|
[doc, typedLen, rangeMap]
|
|
8326
8411
|
);
|
|
8327
|
-
return /* @__PURE__ */ (0,
|
|
8412
|
+
return /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("div", { className: "lib-xplat-htmlTypewriter", children: parsed });
|
|
8328
8413
|
};
|
|
8329
8414
|
HtmlTypeWriter.displayName = "HtmlTypeWriter";
|
|
8330
8415
|
var HtmlTypeWriter_default = HtmlTypeWriter;
|
|
8331
8416
|
|
|
8332
8417
|
// src/components/ImageSelector/ImageSelector.tsx
|
|
8333
|
-
var
|
|
8334
|
-
var
|
|
8418
|
+
var import_react25 = __toESM(require("react"), 1);
|
|
8419
|
+
var import_jsx_runtime326 = require("react/jsx-runtime");
|
|
8335
8420
|
var ImageSelector = (props) => {
|
|
8336
8421
|
const { value, label, onChange } = props;
|
|
8337
|
-
const [previewUrl, setPreviewUrl] =
|
|
8338
|
-
|
|
8422
|
+
const [previewUrl, setPreviewUrl] = import_react25.default.useState();
|
|
8423
|
+
import_react25.default.useEffect(() => {
|
|
8339
8424
|
if (!value) {
|
|
8340
8425
|
setPreviewUrl(void 0);
|
|
8341
8426
|
return;
|
|
@@ -8344,7 +8429,7 @@ var ImageSelector = (props) => {
|
|
|
8344
8429
|
setPreviewUrl(url);
|
|
8345
8430
|
return () => URL.revokeObjectURL(url);
|
|
8346
8431
|
}, [value]);
|
|
8347
|
-
const inputRef =
|
|
8432
|
+
const inputRef = import_react25.default.useRef(null);
|
|
8348
8433
|
const handleFileChange = (e) => {
|
|
8349
8434
|
const selectedFile = e.target.files?.[0];
|
|
8350
8435
|
if (selectedFile) {
|
|
@@ -8357,8 +8442,8 @@ var ImageSelector = (props) => {
|
|
|
8357
8442
|
const handleOpenFileDialog = () => {
|
|
8358
8443
|
inputRef.current?.click();
|
|
8359
8444
|
};
|
|
8360
|
-
return /* @__PURE__ */ (0,
|
|
8361
|
-
/* @__PURE__ */ (0,
|
|
8445
|
+
return /* @__PURE__ */ (0, import_jsx_runtime326.jsxs)("div", { className: `lib-xplat-imageselector${value ? "" : " none-value"}`, children: [
|
|
8446
|
+
/* @__PURE__ */ (0, import_jsx_runtime326.jsx)(
|
|
8362
8447
|
"input",
|
|
8363
8448
|
{
|
|
8364
8449
|
type: "file",
|
|
@@ -8368,13 +8453,13 @@ var ImageSelector = (props) => {
|
|
|
8368
8453
|
ref: inputRef
|
|
8369
8454
|
}
|
|
8370
8455
|
),
|
|
8371
|
-
value && /* @__PURE__ */ (0,
|
|
8372
|
-
/* @__PURE__ */ (0,
|
|
8373
|
-
/* @__PURE__ */ (0,
|
|
8456
|
+
value && /* @__PURE__ */ (0, import_jsx_runtime326.jsxs)("div", { className: "action-bar", children: [
|
|
8457
|
+
/* @__PURE__ */ (0, import_jsx_runtime326.jsx)("div", { className: "icon-wrapper", onClick: handleOpenFileDialog, children: /* @__PURE__ */ (0, import_jsx_runtime326.jsx)(UploadIcon_default, {}) }),
|
|
8458
|
+
/* @__PURE__ */ (0, import_jsx_runtime326.jsx)("div", { className: "icon-wrapper", onClick: handleDeleteFile, children: /* @__PURE__ */ (0, import_jsx_runtime326.jsx)(DeleteIcon_default, {}) })
|
|
8374
8459
|
] }),
|
|
8375
|
-
/* @__PURE__ */ (0,
|
|
8376
|
-
/* @__PURE__ */ (0,
|
|
8377
|
-
/* @__PURE__ */ (0,
|
|
8460
|
+
/* @__PURE__ */ (0, import_jsx_runtime326.jsx)("div", { className: "content", children: previewUrl ? /* @__PURE__ */ (0, import_jsx_runtime326.jsx)("img", { src: previewUrl, alt: "preview" }) : /* @__PURE__ */ (0, import_jsx_runtime326.jsxs)("div", { className: "skeleton", onClick: handleOpenFileDialog, children: [
|
|
8461
|
+
/* @__PURE__ */ (0, import_jsx_runtime326.jsx)("div", { className: "icon-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime326.jsx)(ImageIcon_default, {}) }),
|
|
8462
|
+
/* @__PURE__ */ (0, import_jsx_runtime326.jsx)("div", { className: "label", children: label || "\uC774\uBBF8\uC9C0 \uCD94\uAC00\uD558\uAE30" })
|
|
8378
8463
|
] }) })
|
|
8379
8464
|
] });
|
|
8380
8465
|
};
|
|
@@ -8382,7 +8467,7 @@ ImageSelector.displayName = "ImageSelector";
|
|
|
8382
8467
|
var ImageSelector_default = ImageSelector;
|
|
8383
8468
|
|
|
8384
8469
|
// src/components/Pagination/Pagination.tsx
|
|
8385
|
-
var
|
|
8470
|
+
var import_jsx_runtime327 = require("react/jsx-runtime");
|
|
8386
8471
|
var getPageRange = (current, totalPages, siblingCount) => {
|
|
8387
8472
|
const totalNumbers = siblingCount * 2 + 5;
|
|
8388
8473
|
if (totalPages <= totalNumbers) {
|
|
@@ -8425,19 +8510,19 @@ var Pagination = (props) => {
|
|
|
8425
8510
|
onChange?.(page);
|
|
8426
8511
|
}
|
|
8427
8512
|
};
|
|
8428
|
-
return /* @__PURE__ */ (0,
|
|
8429
|
-
/* @__PURE__ */ (0,
|
|
8513
|
+
return /* @__PURE__ */ (0, import_jsx_runtime327.jsxs)("nav", { className: clsx_default("lib-xplat-pagination", size, type), "aria-label": "\uD398\uC774\uC9C0 \uB124\uBE44\uAC8C\uC774\uC158", children: [
|
|
8514
|
+
/* @__PURE__ */ (0, import_jsx_runtime327.jsx)(
|
|
8430
8515
|
"button",
|
|
8431
8516
|
{
|
|
8432
8517
|
className: "page-btn prev",
|
|
8433
8518
|
disabled: current <= 1,
|
|
8434
8519
|
onClick: () => handleClick(current - 1),
|
|
8435
8520
|
"aria-label": "\uC774\uC804 \uD398\uC774\uC9C0",
|
|
8436
|
-
children: /* @__PURE__ */ (0,
|
|
8521
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime327.jsx)(ChevronLeftIcon_default, {})
|
|
8437
8522
|
}
|
|
8438
8523
|
),
|
|
8439
8524
|
pages.map(
|
|
8440
|
-
(page, i) => page === "..." ? /* @__PURE__ */ (0,
|
|
8525
|
+
(page, i) => page === "..." ? /* @__PURE__ */ (0, import_jsx_runtime327.jsx)("span", { className: "dots", children: "..." }, `dots-${i}`) : /* @__PURE__ */ (0, import_jsx_runtime327.jsx)(
|
|
8441
8526
|
"button",
|
|
8442
8527
|
{
|
|
8443
8528
|
className: clsx_default("page-btn", { active: page === current }),
|
|
@@ -8448,14 +8533,14 @@ var Pagination = (props) => {
|
|
|
8448
8533
|
page
|
|
8449
8534
|
)
|
|
8450
8535
|
),
|
|
8451
|
-
/* @__PURE__ */ (0,
|
|
8536
|
+
/* @__PURE__ */ (0, import_jsx_runtime327.jsx)(
|
|
8452
8537
|
"button",
|
|
8453
8538
|
{
|
|
8454
8539
|
className: "page-btn next",
|
|
8455
8540
|
disabled: current >= totalPages,
|
|
8456
8541
|
onClick: () => handleClick(current + 1),
|
|
8457
8542
|
"aria-label": "\uB2E4\uC74C \uD398\uC774\uC9C0",
|
|
8458
|
-
children: /* @__PURE__ */ (0,
|
|
8543
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime327.jsx)(ChevronRightIcon_default, {})
|
|
8459
8544
|
}
|
|
8460
8545
|
)
|
|
8461
8546
|
] });
|
|
@@ -8464,17 +8549,17 @@ Pagination.displayName = "Pagination";
|
|
|
8464
8549
|
var Pagination_default = Pagination;
|
|
8465
8550
|
|
|
8466
8551
|
// src/components/PopOver/PopOver.tsx
|
|
8467
|
-
var
|
|
8468
|
-
var
|
|
8552
|
+
var import_react26 = __toESM(require("react"), 1);
|
|
8553
|
+
var import_jsx_runtime328 = require("react/jsx-runtime");
|
|
8469
8554
|
var PopOver = (props) => {
|
|
8470
8555
|
const { children, isOpen, onClose, PopOverEl } = props;
|
|
8471
|
-
const popRef =
|
|
8472
|
-
const triggerRef =
|
|
8473
|
-
const [localOpen, setLocalOpen] =
|
|
8474
|
-
const [eventTrigger, setEventTrigger] =
|
|
8556
|
+
const popRef = import_react26.default.useRef(null);
|
|
8557
|
+
const triggerRef = import_react26.default.useRef(null);
|
|
8558
|
+
const [localOpen, setLocalOpen] = import_react26.default.useState(false);
|
|
8559
|
+
const [eventTrigger, setEventTrigger] = import_react26.default.useState(false);
|
|
8475
8560
|
useClickOutside_default([popRef, triggerRef], onClose, isOpen);
|
|
8476
8561
|
const position = useAutoPosition_default(triggerRef, popRef, localOpen);
|
|
8477
|
-
|
|
8562
|
+
import_react26.default.useEffect(() => {
|
|
8478
8563
|
if (isOpen) {
|
|
8479
8564
|
setLocalOpen(isOpen);
|
|
8480
8565
|
setTimeout(() => {
|
|
@@ -8487,7 +8572,7 @@ var PopOver = (props) => {
|
|
|
8487
8572
|
}, 200);
|
|
8488
8573
|
}
|
|
8489
8574
|
}, [isOpen]);
|
|
8490
|
-
return /* @__PURE__ */ (0,
|
|
8575
|
+
return /* @__PURE__ */ (0, import_jsx_runtime328.jsxs)(
|
|
8491
8576
|
"div",
|
|
8492
8577
|
{
|
|
8493
8578
|
className: "lib-xplat-pop-over",
|
|
@@ -8497,7 +8582,7 @@ var PopOver = (props) => {
|
|
|
8497
8582
|
},
|
|
8498
8583
|
children: [
|
|
8499
8584
|
children,
|
|
8500
|
-
localOpen && /* @__PURE__ */ (0,
|
|
8585
|
+
localOpen && /* @__PURE__ */ (0, import_jsx_runtime328.jsx)(Portal_default, { children: /* @__PURE__ */ (0, import_jsx_runtime328.jsx)(
|
|
8501
8586
|
"div",
|
|
8502
8587
|
{
|
|
8503
8588
|
className: clsx_default(
|
|
@@ -8520,7 +8605,7 @@ PopOver.displayName = "PopOver";
|
|
|
8520
8605
|
var PopOver_default = PopOver;
|
|
8521
8606
|
|
|
8522
8607
|
// src/components/Progress/Progress.tsx
|
|
8523
|
-
var
|
|
8608
|
+
var import_jsx_runtime329 = require("react/jsx-runtime");
|
|
8524
8609
|
var Progress = (props) => {
|
|
8525
8610
|
const {
|
|
8526
8611
|
value,
|
|
@@ -8530,8 +8615,8 @@ var Progress = (props) => {
|
|
|
8530
8615
|
showLabel = false
|
|
8531
8616
|
} = props;
|
|
8532
8617
|
const percentage = Math.min(100, Math.max(0, value / max * 100));
|
|
8533
|
-
return /* @__PURE__ */ (0,
|
|
8534
|
-
/* @__PURE__ */ (0,
|
|
8618
|
+
return /* @__PURE__ */ (0, import_jsx_runtime329.jsxs)("div", { className: clsx_default("lib-xplat-progress", size, type), children: [
|
|
8619
|
+
/* @__PURE__ */ (0, import_jsx_runtime329.jsx)(
|
|
8535
8620
|
"div",
|
|
8536
8621
|
{
|
|
8537
8622
|
className: "track",
|
|
@@ -8539,7 +8624,7 @@ var Progress = (props) => {
|
|
|
8539
8624
|
"aria-valuenow": value,
|
|
8540
8625
|
"aria-valuemin": 0,
|
|
8541
8626
|
"aria-valuemax": max,
|
|
8542
|
-
children: /* @__PURE__ */ (0,
|
|
8627
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime329.jsx)(
|
|
8543
8628
|
"div",
|
|
8544
8629
|
{
|
|
8545
8630
|
className: "bar",
|
|
@@ -8548,7 +8633,7 @@ var Progress = (props) => {
|
|
|
8548
8633
|
)
|
|
8549
8634
|
}
|
|
8550
8635
|
),
|
|
8551
|
-
showLabel && /* @__PURE__ */ (0,
|
|
8636
|
+
showLabel && /* @__PURE__ */ (0, import_jsx_runtime329.jsxs)("span", { className: "label", children: [
|
|
8552
8637
|
Math.round(percentage),
|
|
8553
8638
|
"%"
|
|
8554
8639
|
] })
|
|
@@ -8558,17 +8643,17 @@ Progress.displayName = "Progress";
|
|
|
8558
8643
|
var Progress_default = Progress;
|
|
8559
8644
|
|
|
8560
8645
|
// src/components/Radio/RadioGroupContext.tsx
|
|
8561
|
-
var
|
|
8562
|
-
var RadioGroupContext =
|
|
8646
|
+
var import_react27 = __toESM(require("react"), 1);
|
|
8647
|
+
var RadioGroupContext = import_react27.default.createContext(
|
|
8563
8648
|
null
|
|
8564
8649
|
);
|
|
8565
8650
|
var useRadioGroupContext = () => {
|
|
8566
|
-
return
|
|
8651
|
+
return import_react27.default.useContext(RadioGroupContext);
|
|
8567
8652
|
};
|
|
8568
8653
|
var RadioGroupContext_default = RadioGroupContext;
|
|
8569
8654
|
|
|
8570
8655
|
// src/components/Radio/Radio.tsx
|
|
8571
|
-
var
|
|
8656
|
+
var import_jsx_runtime330 = require("react/jsx-runtime");
|
|
8572
8657
|
var Radio = (props) => {
|
|
8573
8658
|
const {
|
|
8574
8659
|
label,
|
|
@@ -8586,7 +8671,7 @@ var Radio = (props) => {
|
|
|
8586
8671
|
value,
|
|
8587
8672
|
onChange: rest.onChange
|
|
8588
8673
|
};
|
|
8589
|
-
return /* @__PURE__ */ (0,
|
|
8674
|
+
return /* @__PURE__ */ (0, import_jsx_runtime330.jsxs)(
|
|
8590
8675
|
"label",
|
|
8591
8676
|
{
|
|
8592
8677
|
className: clsx_default(
|
|
@@ -8596,18 +8681,18 @@ var Radio = (props) => {
|
|
|
8596
8681
|
localChecked ? "checked" : void 0
|
|
8597
8682
|
),
|
|
8598
8683
|
children: [
|
|
8599
|
-
/* @__PURE__ */ (0,
|
|
8600
|
-
/* @__PURE__ */ (0,
|
|
8684
|
+
/* @__PURE__ */ (0, import_jsx_runtime330.jsx)("input", { ...rest, ...inputProps, checked: localChecked, type: "radio" }),
|
|
8685
|
+
/* @__PURE__ */ (0, import_jsx_runtime330.jsx)(
|
|
8601
8686
|
"div",
|
|
8602
8687
|
{
|
|
8603
8688
|
className: clsx_default(
|
|
8604
8689
|
"circle",
|
|
8605
8690
|
localChecked ? "checked" : void 0
|
|
8606
8691
|
),
|
|
8607
|
-
children: localChecked && /* @__PURE__ */ (0,
|
|
8692
|
+
children: localChecked && /* @__PURE__ */ (0, import_jsx_runtime330.jsx)("div", { className: "inner-circle" })
|
|
8608
8693
|
}
|
|
8609
8694
|
),
|
|
8610
|
-
label && /* @__PURE__ */ (0,
|
|
8695
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime330.jsx)("span", { children: label })
|
|
8611
8696
|
]
|
|
8612
8697
|
}
|
|
8613
8698
|
);
|
|
@@ -8616,28 +8701,28 @@ Radio.displayName = "Radio";
|
|
|
8616
8701
|
var Radio_default = Radio;
|
|
8617
8702
|
|
|
8618
8703
|
// src/components/Radio/RadioGroup.tsx
|
|
8619
|
-
var
|
|
8704
|
+
var import_jsx_runtime331 = require("react/jsx-runtime");
|
|
8620
8705
|
var RadioGroup = (props) => {
|
|
8621
8706
|
const { children, ...rest } = props;
|
|
8622
|
-
return /* @__PURE__ */ (0,
|
|
8707
|
+
return /* @__PURE__ */ (0, import_jsx_runtime331.jsx)(import_jsx_runtime331.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime331.jsx)(RadioGroupContext_default.Provider, { value: rest, children }) });
|
|
8623
8708
|
};
|
|
8624
8709
|
RadioGroup.displayName = "RadioGroup";
|
|
8625
8710
|
var RadioGroup_default = RadioGroup;
|
|
8626
8711
|
|
|
8627
8712
|
// src/components/Select/Select.tsx
|
|
8628
|
-
var
|
|
8713
|
+
var import_react30 = __toESM(require("react"), 1);
|
|
8629
8714
|
|
|
8630
8715
|
// src/components/Select/context.ts
|
|
8631
|
-
var
|
|
8632
|
-
var SelectContext =
|
|
8716
|
+
var import_react28 = __toESM(require("react"), 1);
|
|
8717
|
+
var SelectContext = import_react28.default.createContext(null);
|
|
8633
8718
|
var context_default = SelectContext;
|
|
8634
8719
|
|
|
8635
8720
|
// src/components/Select/SelectItem.tsx
|
|
8636
|
-
var
|
|
8637
|
-
var
|
|
8721
|
+
var import_react29 = __toESM(require("react"), 1);
|
|
8722
|
+
var import_jsx_runtime332 = require("react/jsx-runtime");
|
|
8638
8723
|
var SelectItem = (props) => {
|
|
8639
8724
|
const { children, value, onClick, disabled = false } = props;
|
|
8640
|
-
const ctx =
|
|
8725
|
+
const ctx = import_react29.default.useContext(context_default);
|
|
8641
8726
|
const handleClick = (e) => {
|
|
8642
8727
|
e.preventDefault();
|
|
8643
8728
|
e.stopPropagation();
|
|
@@ -8646,7 +8731,7 @@ var SelectItem = (props) => {
|
|
|
8646
8731
|
ctx?.close();
|
|
8647
8732
|
onClick?.();
|
|
8648
8733
|
};
|
|
8649
|
-
return /* @__PURE__ */ (0,
|
|
8734
|
+
return /* @__PURE__ */ (0, import_jsx_runtime332.jsx)(
|
|
8650
8735
|
"div",
|
|
8651
8736
|
{
|
|
8652
8737
|
className: clsx_default("select-item", disabled && "disabled"),
|
|
@@ -8667,7 +8752,7 @@ SelectItem.displayName = "Select.Item";
|
|
|
8667
8752
|
var SelectItem_default = SelectItem;
|
|
8668
8753
|
|
|
8669
8754
|
// src/components/Select/Select.tsx
|
|
8670
|
-
var
|
|
8755
|
+
var import_jsx_runtime333 = require("react/jsx-runtime");
|
|
8671
8756
|
var ANIMATION_DURATION_MS3 = 200;
|
|
8672
8757
|
var SelectRoot = (props) => {
|
|
8673
8758
|
const {
|
|
@@ -8679,26 +8764,26 @@ var SelectRoot = (props) => {
|
|
|
8679
8764
|
error = false,
|
|
8680
8765
|
size = "md"
|
|
8681
8766
|
} = props;
|
|
8682
|
-
const itemChildren =
|
|
8683
|
-
(child) =>
|
|
8767
|
+
const itemChildren = import_react30.default.Children.toArray(children).filter(
|
|
8768
|
+
(child) => import_react30.default.isValidElement(child) && child.type === SelectItem_default
|
|
8684
8769
|
);
|
|
8685
8770
|
const isControlled = valueProp !== void 0;
|
|
8686
|
-
const [isOpen, setOpen] =
|
|
8687
|
-
const [uncontrolledLabel, setUncontrolledLabel] =
|
|
8688
|
-
const controlledLabel =
|
|
8771
|
+
const [isOpen, setOpen] = import_react30.default.useState(false);
|
|
8772
|
+
const [uncontrolledLabel, setUncontrolledLabel] = import_react30.default.useState(null);
|
|
8773
|
+
const controlledLabel = import_react30.default.useMemo(() => {
|
|
8689
8774
|
if (!isControlled) return null;
|
|
8690
8775
|
const match = itemChildren.find((child) => child.props.value === valueProp);
|
|
8691
8776
|
return match ? match.props.children : null;
|
|
8692
8777
|
}, [isControlled, valueProp, itemChildren]);
|
|
8693
8778
|
const selectedLabel = isControlled ? controlledLabel : uncontrolledLabel;
|
|
8694
|
-
const triggerRef =
|
|
8695
|
-
const contentRef =
|
|
8696
|
-
const [mounted, setMounted] =
|
|
8697
|
-
const [visible, setVisible] =
|
|
8698
|
-
|
|
8779
|
+
const triggerRef = import_react30.default.useRef(null);
|
|
8780
|
+
const contentRef = import_react30.default.useRef(null);
|
|
8781
|
+
const [mounted, setMounted] = import_react30.default.useState(false);
|
|
8782
|
+
const [visible, setVisible] = import_react30.default.useState(false);
|
|
8783
|
+
import_react30.default.useEffect(() => {
|
|
8699
8784
|
if (disabled && isOpen) setOpen(false);
|
|
8700
8785
|
}, [disabled, isOpen]);
|
|
8701
|
-
|
|
8786
|
+
import_react30.default.useEffect(() => {
|
|
8702
8787
|
if (isOpen) {
|
|
8703
8788
|
setMounted(true);
|
|
8704
8789
|
const t2 = setTimeout(() => setVisible(true), 1);
|
|
@@ -8708,12 +8793,12 @@ var SelectRoot = (props) => {
|
|
|
8708
8793
|
const t = setTimeout(() => setMounted(false), ANIMATION_DURATION_MS3);
|
|
8709
8794
|
return () => clearTimeout(t);
|
|
8710
8795
|
}, [isOpen]);
|
|
8711
|
-
const open =
|
|
8712
|
-
const close =
|
|
8713
|
-
const toggle =
|
|
8796
|
+
const open = import_react30.default.useCallback(() => setOpen(true), []);
|
|
8797
|
+
const close = import_react30.default.useCallback(() => setOpen(false), []);
|
|
8798
|
+
const toggle = import_react30.default.useCallback(() => setOpen((prev) => !prev), []);
|
|
8714
8799
|
useClickOutside_default([contentRef, triggerRef], close, isOpen);
|
|
8715
8800
|
const position = useAutoPosition_default(triggerRef, contentRef, mounted);
|
|
8716
|
-
const setSelected =
|
|
8801
|
+
const setSelected = import_react30.default.useCallback(
|
|
8717
8802
|
(label, itemValue) => {
|
|
8718
8803
|
if (!isControlled) {
|
|
8719
8804
|
setUncontrolledLabel(label);
|
|
@@ -8722,7 +8807,7 @@ var SelectRoot = (props) => {
|
|
|
8722
8807
|
},
|
|
8723
8808
|
[isControlled, onChange]
|
|
8724
8809
|
);
|
|
8725
|
-
const ctxValue =
|
|
8810
|
+
const ctxValue = import_react30.default.useMemo(
|
|
8726
8811
|
() => ({
|
|
8727
8812
|
isOpen,
|
|
8728
8813
|
mounted,
|
|
@@ -8743,7 +8828,7 @@ var SelectRoot = (props) => {
|
|
|
8743
8828
|
if (disabled) return;
|
|
8744
8829
|
toggle();
|
|
8745
8830
|
};
|
|
8746
|
-
return /* @__PURE__ */ (0,
|
|
8831
|
+
return /* @__PURE__ */ (0, import_jsx_runtime333.jsx)(context_default.Provider, { value: ctxValue, children: /* @__PURE__ */ (0, import_jsx_runtime333.jsxs)(
|
|
8747
8832
|
"div",
|
|
8748
8833
|
{
|
|
8749
8834
|
className: clsx_default(
|
|
@@ -8754,7 +8839,7 @@ var SelectRoot = (props) => {
|
|
|
8754
8839
|
mounted && "is-open"
|
|
8755
8840
|
),
|
|
8756
8841
|
children: [
|
|
8757
|
-
/* @__PURE__ */ (0,
|
|
8842
|
+
/* @__PURE__ */ (0, import_jsx_runtime333.jsxs)(
|
|
8758
8843
|
"div",
|
|
8759
8844
|
{
|
|
8760
8845
|
ref: triggerRef,
|
|
@@ -8778,7 +8863,7 @@ var SelectRoot = (props) => {
|
|
|
8778
8863
|
}
|
|
8779
8864
|
},
|
|
8780
8865
|
children: [
|
|
8781
|
-
/* @__PURE__ */ (0,
|
|
8866
|
+
/* @__PURE__ */ (0, import_jsx_runtime333.jsx)(
|
|
8782
8867
|
"span",
|
|
8783
8868
|
{
|
|
8784
8869
|
className: clsx_default(
|
|
@@ -8788,25 +8873,25 @@ var SelectRoot = (props) => {
|
|
|
8788
8873
|
children: selectedLabel ?? placeholder
|
|
8789
8874
|
}
|
|
8790
8875
|
),
|
|
8791
|
-
/* @__PURE__ */ (0,
|
|
8876
|
+
/* @__PURE__ */ (0, import_jsx_runtime333.jsx)(
|
|
8792
8877
|
"span",
|
|
8793
8878
|
{
|
|
8794
8879
|
className: clsx_default("select-trigger-icon", isOpen && "open"),
|
|
8795
8880
|
"aria-hidden": true,
|
|
8796
|
-
children: /* @__PURE__ */ (0,
|
|
8881
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime333.jsx)(ChevronDownIcon_default, {})
|
|
8797
8882
|
}
|
|
8798
8883
|
)
|
|
8799
8884
|
]
|
|
8800
8885
|
}
|
|
8801
8886
|
),
|
|
8802
|
-
mounted && /* @__PURE__ */ (0,
|
|
8887
|
+
mounted && /* @__PURE__ */ (0, import_jsx_runtime333.jsx)(Portal_default, { children: /* @__PURE__ */ (0, import_jsx_runtime333.jsx)(
|
|
8803
8888
|
"div",
|
|
8804
8889
|
{
|
|
8805
8890
|
className: clsx_default("lib-xplat-select-content", position.direction, stateClass),
|
|
8806
8891
|
ref: contentRef,
|
|
8807
8892
|
style: { ...position.position, width: triggerRef.current?.offsetWidth },
|
|
8808
8893
|
role: "listbox",
|
|
8809
|
-
children: /* @__PURE__ */ (0,
|
|
8894
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime333.jsx)(context_default.Provider, { value: ctxValue, children: itemChildren })
|
|
8810
8895
|
}
|
|
8811
8896
|
) })
|
|
8812
8897
|
]
|
|
@@ -8820,7 +8905,7 @@ var Select = Object.assign(SelectRoot, {
|
|
|
8820
8905
|
var Select_default = Select;
|
|
8821
8906
|
|
|
8822
8907
|
// src/components/Skeleton/Skeleton.tsx
|
|
8823
|
-
var
|
|
8908
|
+
var import_jsx_runtime334 = require("react/jsx-runtime");
|
|
8824
8909
|
var SIZE_MAP = {
|
|
8825
8910
|
xs: "var(--spacing-size-1)",
|
|
8826
8911
|
sm: "var(--spacing-size-2)",
|
|
@@ -8836,7 +8921,7 @@ var Skeleton = (props) => {
|
|
|
8836
8921
|
...width != null && { width: SIZE_MAP[width] },
|
|
8837
8922
|
...height != null && { height: SIZE_MAP[height] }
|
|
8838
8923
|
};
|
|
8839
|
-
return /* @__PURE__ */ (0,
|
|
8924
|
+
return /* @__PURE__ */ (0, import_jsx_runtime334.jsx)(
|
|
8840
8925
|
"div",
|
|
8841
8926
|
{
|
|
8842
8927
|
className: clsx_default("lib-xplat-skeleton", variant),
|
|
@@ -8849,20 +8934,20 @@ Skeleton.displayName = "Skeleton";
|
|
|
8849
8934
|
var Skeleton_default = Skeleton;
|
|
8850
8935
|
|
|
8851
8936
|
// src/components/Spinner/Spinner.tsx
|
|
8852
|
-
var
|
|
8937
|
+
var import_jsx_runtime335 = require("react/jsx-runtime");
|
|
8853
8938
|
var Spinner = (props) => {
|
|
8854
8939
|
const {
|
|
8855
8940
|
size = "md",
|
|
8856
8941
|
type = "brand"
|
|
8857
8942
|
} = props;
|
|
8858
|
-
return /* @__PURE__ */ (0,
|
|
8943
|
+
return /* @__PURE__ */ (0, import_jsx_runtime335.jsx)(
|
|
8859
8944
|
"div",
|
|
8860
8945
|
{
|
|
8861
8946
|
className: clsx_default("lib-xplat-spinner", size, type),
|
|
8862
8947
|
role: "status",
|
|
8863
8948
|
"aria-label": "\uB85C\uB529 \uC911",
|
|
8864
|
-
children: /* @__PURE__ */ (0,
|
|
8865
|
-
/* @__PURE__ */ (0,
|
|
8949
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime335.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
|
|
8950
|
+
/* @__PURE__ */ (0, import_jsx_runtime335.jsx)(
|
|
8866
8951
|
"circle",
|
|
8867
8952
|
{
|
|
8868
8953
|
className: "track",
|
|
@@ -8872,7 +8957,7 @@ var Spinner = (props) => {
|
|
|
8872
8957
|
strokeWidth: "3"
|
|
8873
8958
|
}
|
|
8874
8959
|
),
|
|
8875
|
-
/* @__PURE__ */ (0,
|
|
8960
|
+
/* @__PURE__ */ (0, import_jsx_runtime335.jsx)(
|
|
8876
8961
|
"circle",
|
|
8877
8962
|
{
|
|
8878
8963
|
className: "indicator",
|
|
@@ -8891,20 +8976,20 @@ Spinner.displayName = "Spinner";
|
|
|
8891
8976
|
var Spinner_default = Spinner;
|
|
8892
8977
|
|
|
8893
8978
|
// src/components/Steps/Steps.tsx
|
|
8894
|
-
var
|
|
8979
|
+
var import_jsx_runtime336 = require("react/jsx-runtime");
|
|
8895
8980
|
var Steps = (props) => {
|
|
8896
8981
|
const {
|
|
8897
8982
|
items,
|
|
8898
8983
|
current,
|
|
8899
8984
|
type = "brand"
|
|
8900
8985
|
} = props;
|
|
8901
|
-
return /* @__PURE__ */ (0,
|
|
8986
|
+
return /* @__PURE__ */ (0, import_jsx_runtime336.jsx)("div", { className: clsx_default("lib-xplat-steps", type), children: items.map((item, index) => {
|
|
8902
8987
|
const status = index < current ? "completed" : index === current ? "active" : "pending";
|
|
8903
|
-
return /* @__PURE__ */ (0,
|
|
8904
|
-
/* @__PURE__ */ (0,
|
|
8905
|
-
/* @__PURE__ */ (0,
|
|
8906
|
-
/* @__PURE__ */ (0,
|
|
8907
|
-
item.description && /* @__PURE__ */ (0,
|
|
8988
|
+
return /* @__PURE__ */ (0, import_jsx_runtime336.jsxs)("div", { className: clsx_default("step-item", status), children: [
|
|
8989
|
+
/* @__PURE__ */ (0, import_jsx_runtime336.jsx)("div", { className: "step-circle", children: status === "completed" ? /* @__PURE__ */ (0, import_jsx_runtime336.jsx)(CheckIcon_default, {}) : /* @__PURE__ */ (0, import_jsx_runtime336.jsx)("span", { children: index + 1 }) }),
|
|
8990
|
+
/* @__PURE__ */ (0, import_jsx_runtime336.jsxs)("div", { className: "step-content", children: [
|
|
8991
|
+
/* @__PURE__ */ (0, import_jsx_runtime336.jsx)("span", { className: "step-title", children: item.title }),
|
|
8992
|
+
item.description && /* @__PURE__ */ (0, import_jsx_runtime336.jsx)("span", { className: "step-description", children: item.description })
|
|
8908
8993
|
] })
|
|
8909
8994
|
] }, index);
|
|
8910
8995
|
}) });
|
|
@@ -8913,8 +8998,8 @@ Steps.displayName = "Steps";
|
|
|
8913
8998
|
var Steps_default = Steps;
|
|
8914
8999
|
|
|
8915
9000
|
// src/components/Swiper/Swiper.tsx
|
|
8916
|
-
var
|
|
8917
|
-
var
|
|
9001
|
+
var import_react31 = __toESM(require("react"), 1);
|
|
9002
|
+
var import_jsx_runtime337 = require("react/jsx-runtime");
|
|
8918
9003
|
var Swiper = (props) => {
|
|
8919
9004
|
const {
|
|
8920
9005
|
auto = false,
|
|
@@ -8937,23 +9022,23 @@ var Swiper = (props) => {
|
|
|
8937
9022
|
const maxIndex = Math.max(0, totalSlides - viewItemCount);
|
|
8938
9023
|
const useLoop = loop && canSlide;
|
|
8939
9024
|
const cloneCount = useLoop ? totalSlides : 0;
|
|
8940
|
-
const extendedItems =
|
|
9025
|
+
const extendedItems = import_react31.default.useMemo(() => {
|
|
8941
9026
|
if (!useLoop) return items;
|
|
8942
9027
|
return [...items, ...items, ...items];
|
|
8943
9028
|
}, [items, useLoop]);
|
|
8944
9029
|
const initialIdx = Math.max(0, Math.min(indexProp ?? 0, maxIndex));
|
|
8945
|
-
const [innerIndex, setInnerIndex] =
|
|
9030
|
+
const [innerIndex, setInnerIndex] = import_react31.default.useState(
|
|
8946
9031
|
useLoop ? cloneCount + initialIdx : initialIdx
|
|
8947
9032
|
);
|
|
8948
|
-
const [isDragging, setIsDragging] =
|
|
8949
|
-
const [dragOffset, setDragOffset] =
|
|
8950
|
-
const [animated, setAnimated] =
|
|
8951
|
-
const [containerWidth, setContainerWidth] =
|
|
8952
|
-
const containerRef =
|
|
8953
|
-
const startXRef =
|
|
8954
|
-
const startTimeRef =
|
|
8955
|
-
const autoplayTimerRef =
|
|
8956
|
-
|
|
9033
|
+
const [isDragging, setIsDragging] = import_react31.default.useState(false);
|
|
9034
|
+
const [dragOffset, setDragOffset] = import_react31.default.useState(0);
|
|
9035
|
+
const [animated, setAnimated] = import_react31.default.useState(true);
|
|
9036
|
+
const [containerWidth, setContainerWidth] = import_react31.default.useState(0);
|
|
9037
|
+
const containerRef = import_react31.default.useRef(null);
|
|
9038
|
+
const startXRef = import_react31.default.useRef(0);
|
|
9039
|
+
const startTimeRef = import_react31.default.useRef(0);
|
|
9040
|
+
const autoplayTimerRef = import_react31.default.useRef(null);
|
|
9041
|
+
import_react31.default.useEffect(() => {
|
|
8957
9042
|
const el = containerRef.current;
|
|
8958
9043
|
if (!el) return;
|
|
8959
9044
|
const ro = new ResizeObserver((entries) => {
|
|
@@ -8972,7 +9057,7 @@ var Swiper = (props) => {
|
|
|
8972
9057
|
return ((inner - cloneCount) % totalSlides + totalSlides) % totalSlides;
|
|
8973
9058
|
};
|
|
8974
9059
|
const realIndex = getRealIndex(innerIndex);
|
|
8975
|
-
const moveToInner =
|
|
9060
|
+
const moveToInner = import_react31.default.useCallback(
|
|
8976
9061
|
(idx, withAnim = true) => {
|
|
8977
9062
|
if (!useLoop) {
|
|
8978
9063
|
setAnimated(withAnim);
|
|
@@ -9000,7 +9085,7 @@ var Swiper = (props) => {
|
|
|
9000
9085
|
},
|
|
9001
9086
|
[useLoop, cloneCount, totalSlides]
|
|
9002
9087
|
);
|
|
9003
|
-
const handleTransitionEnd =
|
|
9088
|
+
const handleTransitionEnd = import_react31.default.useCallback(() => {
|
|
9004
9089
|
if (!useLoop) return;
|
|
9005
9090
|
const real = getRealIndex(innerIndex);
|
|
9006
9091
|
const canonical = cloneCount + real;
|
|
@@ -9010,7 +9095,7 @@ var Swiper = (props) => {
|
|
|
9010
9095
|
}
|
|
9011
9096
|
onChange?.(Math.min(real, maxIndex));
|
|
9012
9097
|
}, [useLoop, innerIndex, cloneCount, totalSlides, maxIndex, onChange]);
|
|
9013
|
-
const slideTo =
|
|
9098
|
+
const slideTo = import_react31.default.useCallback(
|
|
9014
9099
|
(logicalIndex) => {
|
|
9015
9100
|
if (!canSlide) return;
|
|
9016
9101
|
const clamped = useLoop ? logicalIndex : Math.max(0, Math.min(logicalIndex, maxIndex));
|
|
@@ -9020,7 +9105,7 @@ var Swiper = (props) => {
|
|
|
9020
9105
|
},
|
|
9021
9106
|
[canSlide, useLoop, cloneCount, maxIndex, onChange, moveToInner]
|
|
9022
9107
|
);
|
|
9023
|
-
const slideNext =
|
|
9108
|
+
const slideNext = import_react31.default.useCallback(() => {
|
|
9024
9109
|
if (!canSlide) return;
|
|
9025
9110
|
const nextInner = innerIndex + slideBy;
|
|
9026
9111
|
if (useLoop) {
|
|
@@ -9029,7 +9114,7 @@ var Swiper = (props) => {
|
|
|
9029
9114
|
moveToInner(Math.min(nextInner, maxIndex), true);
|
|
9030
9115
|
}
|
|
9031
9116
|
}, [canSlide, useLoop, innerIndex, slideBy, maxIndex, moveToInner]);
|
|
9032
|
-
const slidePrev =
|
|
9117
|
+
const slidePrev = import_react31.default.useCallback(() => {
|
|
9033
9118
|
if (!canSlide) return;
|
|
9034
9119
|
const prevInner = innerIndex - slideBy;
|
|
9035
9120
|
if (useLoop) {
|
|
@@ -9038,7 +9123,7 @@ var Swiper = (props) => {
|
|
|
9038
9123
|
moveToInner(Math.max(prevInner, 0), true);
|
|
9039
9124
|
}
|
|
9040
9125
|
}, [canSlide, useLoop, innerIndex, slideBy, moveToInner]);
|
|
9041
|
-
|
|
9126
|
+
import_react31.default.useEffect(() => {
|
|
9042
9127
|
if (indexProp === void 0) return;
|
|
9043
9128
|
const clamped = Math.max(0, Math.min(indexProp, maxIndex));
|
|
9044
9129
|
const target = useLoop ? cloneCount + clamped : clamped;
|
|
@@ -9046,12 +9131,12 @@ var Swiper = (props) => {
|
|
|
9046
9131
|
moveToInner(target, true);
|
|
9047
9132
|
}
|
|
9048
9133
|
}, [indexProp]);
|
|
9049
|
-
|
|
9134
|
+
import_react31.default.useImperativeHandle(swiperRef, () => ({
|
|
9050
9135
|
slidePrev,
|
|
9051
9136
|
slideNext,
|
|
9052
9137
|
slideTo
|
|
9053
9138
|
}));
|
|
9054
|
-
|
|
9139
|
+
import_react31.default.useEffect(() => {
|
|
9055
9140
|
if (!auto || !canSlide) return;
|
|
9056
9141
|
autoplayTimerRef.current = setInterval(slideNext, autoplayDelay);
|
|
9057
9142
|
return () => {
|
|
@@ -9074,7 +9159,7 @@ var Swiper = (props) => {
|
|
|
9074
9159
|
startXRef.current = getClientX(e);
|
|
9075
9160
|
startTimeRef.current = Date.now();
|
|
9076
9161
|
};
|
|
9077
|
-
|
|
9162
|
+
import_react31.default.useEffect(() => {
|
|
9078
9163
|
if (!isDragging) return;
|
|
9079
9164
|
const handleMove = (e) => {
|
|
9080
9165
|
setDragOffset(getClientX(e) - startXRef.current);
|
|
@@ -9112,8 +9197,8 @@ var Swiper = (props) => {
|
|
|
9112
9197
|
}, [isDragging, dragOffset, innerIndex, useLoop, maxIndex, slideStep, moveToInner]);
|
|
9113
9198
|
const slideWidthPercent = 100 / viewItemCount;
|
|
9114
9199
|
const gapAdjust = spaceBetween * (viewItemCount - 1) / viewItemCount;
|
|
9115
|
-
const slideElements =
|
|
9116
|
-
() => extendedItems.map((item, idx) => /* @__PURE__ */ (0,
|
|
9200
|
+
const slideElements = import_react31.default.useMemo(
|
|
9201
|
+
() => extendedItems.map((item, idx) => /* @__PURE__ */ (0, import_jsx_runtime337.jsx)(
|
|
9117
9202
|
"div",
|
|
9118
9203
|
{
|
|
9119
9204
|
className: "lib-xplat-swiper__slide",
|
|
@@ -9132,14 +9217,14 @@ var Swiper = (props) => {
|
|
|
9132
9217
|
Math.floor(realIndex / slideBy),
|
|
9133
9218
|
totalSteps - 1
|
|
9134
9219
|
);
|
|
9135
|
-
return /* @__PURE__ */ (0,
|
|
9136
|
-
/* @__PURE__ */ (0,
|
|
9220
|
+
return /* @__PURE__ */ (0, import_jsx_runtime337.jsxs)("div", { className: "lib-xplat-swiper", ref: containerRef, children: [
|
|
9221
|
+
/* @__PURE__ */ (0, import_jsx_runtime337.jsx)(
|
|
9137
9222
|
"div",
|
|
9138
9223
|
{
|
|
9139
9224
|
className: "lib-xplat-swiper__viewport",
|
|
9140
9225
|
onMouseDown: handleDragStart,
|
|
9141
9226
|
onTouchStart: handleDragStart,
|
|
9142
|
-
children: /* @__PURE__ */ (0,
|
|
9227
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime337.jsx)(
|
|
9143
9228
|
"div",
|
|
9144
9229
|
{
|
|
9145
9230
|
className: clsx_default(
|
|
@@ -9157,7 +9242,7 @@ var Swiper = (props) => {
|
|
|
9157
9242
|
)
|
|
9158
9243
|
}
|
|
9159
9244
|
),
|
|
9160
|
-
showProgress && canSlide && /* @__PURE__ */ (0,
|
|
9245
|
+
showProgress && canSlide && /* @__PURE__ */ (0, import_jsx_runtime337.jsx)("div", { className: "lib-xplat-swiper__progress", children: /* @__PURE__ */ (0, import_jsx_runtime337.jsx)("div", { className: "lib-xplat-swiper__progress-track", children: /* @__PURE__ */ (0, import_jsx_runtime337.jsx)(
|
|
9161
9246
|
"span",
|
|
9162
9247
|
{
|
|
9163
9248
|
className: "lib-xplat-swiper__progress-fill",
|
|
@@ -9167,7 +9252,7 @@ var Swiper = (props) => {
|
|
|
9167
9252
|
}
|
|
9168
9253
|
}
|
|
9169
9254
|
) }) }),
|
|
9170
|
-
canSlide && /* @__PURE__ */ (0,
|
|
9255
|
+
canSlide && /* @__PURE__ */ (0, import_jsx_runtime337.jsx)("div", { className: "lib-xplat-swiper__dots", children: Array.from({ length: totalSteps }, (_, i) => /* @__PURE__ */ (0, import_jsx_runtime337.jsx)(
|
|
9171
9256
|
"button",
|
|
9172
9257
|
{
|
|
9173
9258
|
className: clsx_default(
|
|
@@ -9185,8 +9270,8 @@ Swiper.displayName = "Swiper";
|
|
|
9185
9270
|
var Swiper_default = Swiper;
|
|
9186
9271
|
|
|
9187
9272
|
// src/components/Switch/Switch.tsx
|
|
9188
|
-
var
|
|
9189
|
-
var
|
|
9273
|
+
var import_react32 = __toESM(require("react"), 1);
|
|
9274
|
+
var import_jsx_runtime338 = require("react/jsx-runtime");
|
|
9190
9275
|
var KNOB_TRANSITION_MS = 250;
|
|
9191
9276
|
var Switch = (props) => {
|
|
9192
9277
|
const {
|
|
@@ -9196,9 +9281,9 @@ var Switch = (props) => {
|
|
|
9196
9281
|
disabled,
|
|
9197
9282
|
onChange
|
|
9198
9283
|
} = props;
|
|
9199
|
-
const [isAnimating, setIsAnimating] =
|
|
9200
|
-
const timeoutRef =
|
|
9201
|
-
|
|
9284
|
+
const [isAnimating, setIsAnimating] = import_react32.default.useState(false);
|
|
9285
|
+
const timeoutRef = import_react32.default.useRef(null);
|
|
9286
|
+
import_react32.default.useEffect(() => {
|
|
9202
9287
|
return () => {
|
|
9203
9288
|
if (timeoutRef.current) clearTimeout(timeoutRef.current);
|
|
9204
9289
|
};
|
|
@@ -9213,7 +9298,7 @@ var Switch = (props) => {
|
|
|
9213
9298
|
timeoutRef.current = null;
|
|
9214
9299
|
}, KNOB_TRANSITION_MS);
|
|
9215
9300
|
};
|
|
9216
|
-
return /* @__PURE__ */ (0,
|
|
9301
|
+
return /* @__PURE__ */ (0, import_jsx_runtime338.jsx)(
|
|
9217
9302
|
"div",
|
|
9218
9303
|
{
|
|
9219
9304
|
className: clsx_default(
|
|
@@ -9226,7 +9311,7 @@ var Switch = (props) => {
|
|
|
9226
9311
|
),
|
|
9227
9312
|
onClick: handleClick,
|
|
9228
9313
|
"aria-disabled": disabled || isAnimating,
|
|
9229
|
-
children: /* @__PURE__ */ (0,
|
|
9314
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime338.jsx)("div", { className: clsx_default("knob", value ? "checked" : void 0) })
|
|
9230
9315
|
}
|
|
9231
9316
|
);
|
|
9232
9317
|
};
|
|
@@ -9234,26 +9319,27 @@ Switch.displayName = "Switch";
|
|
|
9234
9319
|
var Switch_default = Switch;
|
|
9235
9320
|
|
|
9236
9321
|
// src/components/Table/TableContext.tsx
|
|
9237
|
-
var
|
|
9238
|
-
var TableContext =
|
|
9322
|
+
var import_react33 = __toESM(require("react"), 1);
|
|
9323
|
+
var TableContext = import_react33.default.createContext(null);
|
|
9239
9324
|
var useTableContext = () => {
|
|
9240
|
-
const ctx =
|
|
9325
|
+
const ctx = import_react33.default.useContext(TableContext);
|
|
9241
9326
|
if (!ctx) throw new Error("Table components must be used inside <Table>");
|
|
9242
9327
|
return ctx;
|
|
9243
9328
|
};
|
|
9244
9329
|
var TableContext_default = TableContext;
|
|
9245
9330
|
|
|
9246
9331
|
// src/components/Table/Table.tsx
|
|
9247
|
-
var
|
|
9332
|
+
var import_jsx_runtime339 = require("react/jsx-runtime");
|
|
9248
9333
|
var Table = (props) => {
|
|
9249
9334
|
const {
|
|
9250
9335
|
children,
|
|
9336
|
+
size = "md",
|
|
9251
9337
|
rowBorderUse = true,
|
|
9252
9338
|
colBorderUse = true,
|
|
9253
9339
|
headerSticky = false,
|
|
9254
9340
|
stickyShadow = true
|
|
9255
9341
|
} = props;
|
|
9256
|
-
return /* @__PURE__ */ (0,
|
|
9342
|
+
return /* @__PURE__ */ (0, import_jsx_runtime339.jsx)("div", { className: `lib-xplat-table-wrapper ${size}`, children: /* @__PURE__ */ (0, import_jsx_runtime339.jsx)(
|
|
9257
9343
|
TableContext_default.Provider,
|
|
9258
9344
|
{
|
|
9259
9345
|
value: {
|
|
@@ -9262,7 +9348,7 @@ var Table = (props) => {
|
|
|
9262
9348
|
headerSticky,
|
|
9263
9349
|
stickyShadow
|
|
9264
9350
|
},
|
|
9265
|
-
children: /* @__PURE__ */ (0,
|
|
9351
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime339.jsx)("table", { className: "lib-xplat-table", children })
|
|
9266
9352
|
}
|
|
9267
9353
|
) });
|
|
9268
9354
|
};
|
|
@@ -9270,41 +9356,41 @@ Table.displayName = "Table";
|
|
|
9270
9356
|
var Table_default = Table;
|
|
9271
9357
|
|
|
9272
9358
|
// src/components/Table/TableBody.tsx
|
|
9273
|
-
var
|
|
9359
|
+
var import_jsx_runtime340 = require("react/jsx-runtime");
|
|
9274
9360
|
var TableBody = (props) => {
|
|
9275
9361
|
const { children } = props;
|
|
9276
|
-
return /* @__PURE__ */ (0,
|
|
9362
|
+
return /* @__PURE__ */ (0, import_jsx_runtime340.jsx)("tbody", { children });
|
|
9277
9363
|
};
|
|
9278
9364
|
TableBody.displayName = "TableBody";
|
|
9279
9365
|
var TableBody_default = TableBody;
|
|
9280
9366
|
|
|
9281
9367
|
// src/components/Table/TableCell.tsx
|
|
9282
|
-
var
|
|
9368
|
+
var import_react36 = __toESM(require("react"), 1);
|
|
9283
9369
|
|
|
9284
9370
|
// src/components/Table/TableHeadContext.tsx
|
|
9285
|
-
var
|
|
9286
|
-
var TableHeadContext =
|
|
9371
|
+
var import_react34 = __toESM(require("react"), 1);
|
|
9372
|
+
var TableHeadContext = import_react34.default.createContext(
|
|
9287
9373
|
null
|
|
9288
9374
|
);
|
|
9289
9375
|
var useTableHeadContext = () => {
|
|
9290
|
-
const ctx =
|
|
9376
|
+
const ctx = import_react34.default.useContext(TableHeadContext);
|
|
9291
9377
|
return ctx;
|
|
9292
9378
|
};
|
|
9293
9379
|
var TableHeadContext_default = TableHeadContext;
|
|
9294
9380
|
|
|
9295
9381
|
// src/components/Table/TableRowContext.tsx
|
|
9296
|
-
var
|
|
9297
|
-
var TableRowContext =
|
|
9382
|
+
var import_react35 = __toESM(require("react"), 1);
|
|
9383
|
+
var TableRowContext = import_react35.default.createContext(null);
|
|
9298
9384
|
var useTableRowContext = () => {
|
|
9299
|
-
const ctx =
|
|
9385
|
+
const ctx = import_react35.default.useContext(TableRowContext);
|
|
9300
9386
|
if (!ctx) throw new Error("Table components must be used inside <Table>");
|
|
9301
9387
|
return ctx;
|
|
9302
9388
|
};
|
|
9303
9389
|
var TableRowContext_default = TableRowContext;
|
|
9304
9390
|
|
|
9305
9391
|
// src/components/Table/TableCell.tsx
|
|
9306
|
-
var
|
|
9307
|
-
var TableCell =
|
|
9392
|
+
var import_jsx_runtime341 = require("react/jsx-runtime");
|
|
9393
|
+
var TableCell = import_react36.default.memo((props) => {
|
|
9308
9394
|
const {
|
|
9309
9395
|
children,
|
|
9310
9396
|
align = "center",
|
|
@@ -9316,9 +9402,9 @@ var TableCell = import_react35.default.memo((props) => {
|
|
|
9316
9402
|
const { registerStickyCell, stickyCells } = useTableRowContext();
|
|
9317
9403
|
const { stickyShadow } = useTableContext();
|
|
9318
9404
|
const headContext = useTableHeadContext();
|
|
9319
|
-
const [left, setLeft] =
|
|
9320
|
-
const cellRef =
|
|
9321
|
-
const calculateLeft =
|
|
9405
|
+
const [left, setLeft] = import_react36.default.useState(0);
|
|
9406
|
+
const cellRef = import_react36.default.useRef(null);
|
|
9407
|
+
const calculateLeft = import_react36.default.useCallback(() => {
|
|
9322
9408
|
if (!cellRef.current) return 0;
|
|
9323
9409
|
let totalLeft = 0;
|
|
9324
9410
|
for (const ref of stickyCells) {
|
|
@@ -9327,7 +9413,7 @@ var TableCell = import_react35.default.memo((props) => {
|
|
|
9327
9413
|
}
|
|
9328
9414
|
return totalLeft;
|
|
9329
9415
|
}, [stickyCells]);
|
|
9330
|
-
|
|
9416
|
+
import_react36.default.useEffect(() => {
|
|
9331
9417
|
if (!isSticky || !cellRef.current) return;
|
|
9332
9418
|
registerStickyCell(cellRef);
|
|
9333
9419
|
setLeft(calculateLeft());
|
|
@@ -9345,7 +9431,7 @@ var TableCell = import_react35.default.memo((props) => {
|
|
|
9345
9431
|
const CellTag = cellRef.current?.tagName === "TH" ? "th" : "td";
|
|
9346
9432
|
const isLastSticky = isSticky && stickyCells[stickyCells.length - 1] === cellRef;
|
|
9347
9433
|
const enableHover = headContext && headContext.cellHover;
|
|
9348
|
-
return /* @__PURE__ */ (0,
|
|
9434
|
+
return /* @__PURE__ */ (0, import_jsx_runtime341.jsx)(
|
|
9349
9435
|
CellTag,
|
|
9350
9436
|
{
|
|
9351
9437
|
ref: cellRef,
|
|
@@ -9370,21 +9456,21 @@ TableCell.displayName = "TableCell";
|
|
|
9370
9456
|
var TableCell_default = TableCell;
|
|
9371
9457
|
|
|
9372
9458
|
// src/components/Table/TableHead.tsx
|
|
9373
|
-
var
|
|
9459
|
+
var import_jsx_runtime342 = require("react/jsx-runtime");
|
|
9374
9460
|
var TableHead = ({
|
|
9375
9461
|
children,
|
|
9376
9462
|
cellHover = false
|
|
9377
9463
|
}) => {
|
|
9378
9464
|
const { headerSticky } = useTableContext();
|
|
9379
|
-
return /* @__PURE__ */ (0,
|
|
9465
|
+
return /* @__PURE__ */ (0, import_jsx_runtime342.jsx)(TableHeadContext_default.Provider, { value: { cellHover }, children: /* @__PURE__ */ (0, import_jsx_runtime342.jsx)("thead", { className: clsx_default(headerSticky ? "table-sticky" : null), children }) });
|
|
9380
9466
|
};
|
|
9381
9467
|
TableHead.displayName = "TableHead";
|
|
9382
9468
|
var TableHead_default = TableHead;
|
|
9383
9469
|
|
|
9384
9470
|
// src/components/Table/TableRow.tsx
|
|
9385
|
-
var
|
|
9386
|
-
var
|
|
9387
|
-
var TableRow =
|
|
9471
|
+
var import_react37 = __toESM(require("react"), 1);
|
|
9472
|
+
var import_jsx_runtime343 = require("react/jsx-runtime");
|
|
9473
|
+
var TableRow = import_react37.default.memo((props) => {
|
|
9388
9474
|
const {
|
|
9389
9475
|
children,
|
|
9390
9476
|
type = "secondary",
|
|
@@ -9392,14 +9478,14 @@ var TableRow = import_react36.default.memo((props) => {
|
|
|
9392
9478
|
onClick
|
|
9393
9479
|
} = props;
|
|
9394
9480
|
const { rowBorderUse } = useTableContext();
|
|
9395
|
-
const [stickyCells, setStickyCells] =
|
|
9481
|
+
const [stickyCells, setStickyCells] = import_react37.default.useState([]);
|
|
9396
9482
|
const registerStickyCell = (ref) => {
|
|
9397
9483
|
setStickyCells((prev) => {
|
|
9398
9484
|
if (prev.includes(ref)) return prev;
|
|
9399
9485
|
return [...prev, ref];
|
|
9400
9486
|
});
|
|
9401
9487
|
};
|
|
9402
|
-
return /* @__PURE__ */ (0,
|
|
9488
|
+
return /* @__PURE__ */ (0, import_jsx_runtime343.jsx)(TableRowContext_default.Provider, { value: { stickyCells, registerStickyCell }, children: /* @__PURE__ */ (0, import_jsx_runtime343.jsx)(
|
|
9403
9489
|
"tr",
|
|
9404
9490
|
{
|
|
9405
9491
|
className: clsx_default(
|
|
@@ -9417,7 +9503,7 @@ TableRow.displayName = "TableRow";
|
|
|
9417
9503
|
var TableRow_default = TableRow;
|
|
9418
9504
|
|
|
9419
9505
|
// src/components/Tag/Tag.tsx
|
|
9420
|
-
var
|
|
9506
|
+
var import_jsx_runtime344 = require("react/jsx-runtime");
|
|
9421
9507
|
var Tag = (props) => {
|
|
9422
9508
|
const {
|
|
9423
9509
|
children,
|
|
@@ -9427,7 +9513,7 @@ var Tag = (props) => {
|
|
|
9427
9513
|
disabled = false,
|
|
9428
9514
|
colorIndex
|
|
9429
9515
|
} = props;
|
|
9430
|
-
return /* @__PURE__ */ (0,
|
|
9516
|
+
return /* @__PURE__ */ (0, import_jsx_runtime344.jsxs)(
|
|
9431
9517
|
"span",
|
|
9432
9518
|
{
|
|
9433
9519
|
className: clsx_default(
|
|
@@ -9438,8 +9524,8 @@ var Tag = (props) => {
|
|
|
9438
9524
|
disabled && "disabled"
|
|
9439
9525
|
),
|
|
9440
9526
|
children: [
|
|
9441
|
-
/* @__PURE__ */ (0,
|
|
9442
|
-
onClose && /* @__PURE__ */ (0,
|
|
9527
|
+
/* @__PURE__ */ (0, import_jsx_runtime344.jsx)("span", { className: "tag-label", children }),
|
|
9528
|
+
onClose && /* @__PURE__ */ (0, import_jsx_runtime344.jsx)("button", { className: "tag-close", onClick: onClose, "aria-label": "\uC0AD\uC81C", disabled, children: /* @__PURE__ */ (0, import_jsx_runtime344.jsx)(XIcon_default, {}) })
|
|
9443
9529
|
]
|
|
9444
9530
|
}
|
|
9445
9531
|
);
|
|
@@ -9448,12 +9534,12 @@ Tag.displayName = "Tag";
|
|
|
9448
9534
|
var Tag_default = Tag;
|
|
9449
9535
|
|
|
9450
9536
|
// src/components/TextArea/TextArea.tsx
|
|
9451
|
-
var
|
|
9452
|
-
var
|
|
9453
|
-
var TextArea =
|
|
9537
|
+
var import_react38 = __toESM(require("react"), 1);
|
|
9538
|
+
var import_jsx_runtime345 = require("react/jsx-runtime");
|
|
9539
|
+
var TextArea = import_react38.default.forwardRef(
|
|
9454
9540
|
(props, ref) => {
|
|
9455
9541
|
const { value, onChange, disabled, ...textareaProps } = props;
|
|
9456
|
-
const localRef =
|
|
9542
|
+
const localRef = import_react38.default.useRef(null);
|
|
9457
9543
|
const setRefs = (el) => {
|
|
9458
9544
|
localRef.current = el;
|
|
9459
9545
|
if (!ref) return;
|
|
@@ -9473,21 +9559,21 @@ var TextArea = import_react37.default.forwardRef(
|
|
|
9473
9559
|
onChange(event);
|
|
9474
9560
|
}
|
|
9475
9561
|
};
|
|
9476
|
-
|
|
9562
|
+
import_react38.default.useEffect(() => {
|
|
9477
9563
|
const el = localRef.current;
|
|
9478
9564
|
if (!el) return;
|
|
9479
9565
|
el.style.height = "0px";
|
|
9480
9566
|
const nextHeight = Math.min(el.scrollHeight, 400);
|
|
9481
9567
|
el.style.height = `${nextHeight}px`;
|
|
9482
9568
|
}, [value]);
|
|
9483
|
-
return /* @__PURE__ */ (0,
|
|
9569
|
+
return /* @__PURE__ */ (0, import_jsx_runtime345.jsx)("div", { className: "lib-xplat-textarea-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime345.jsx)(
|
|
9484
9570
|
"div",
|
|
9485
9571
|
{
|
|
9486
9572
|
className: clsx_default(
|
|
9487
9573
|
"lib-xplat-textarea",
|
|
9488
9574
|
disabled ? "disabled" : void 0
|
|
9489
9575
|
),
|
|
9490
|
-
children: /* @__PURE__ */ (0,
|
|
9576
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime345.jsx)(
|
|
9491
9577
|
"textarea",
|
|
9492
9578
|
{
|
|
9493
9579
|
...textareaProps,
|
|
@@ -9505,25 +9591,25 @@ TextArea.displayName = "TextArea";
|
|
|
9505
9591
|
var TextArea_default = TextArea;
|
|
9506
9592
|
|
|
9507
9593
|
// src/components/Toast/Toast.tsx
|
|
9508
|
-
var
|
|
9594
|
+
var import_react39 = __toESM(require("react"), 1);
|
|
9509
9595
|
var import_react_dom4 = require("react-dom");
|
|
9510
|
-
var
|
|
9511
|
-
var ToastContext =
|
|
9596
|
+
var import_jsx_runtime346 = require("react/jsx-runtime");
|
|
9597
|
+
var ToastContext = import_react39.default.createContext(null);
|
|
9512
9598
|
var useToast = () => {
|
|
9513
|
-
const ctx =
|
|
9599
|
+
const ctx = import_react39.default.useContext(ToastContext);
|
|
9514
9600
|
if (!ctx) throw new Error("useToast must be used within ToastProvider");
|
|
9515
9601
|
return ctx;
|
|
9516
9602
|
};
|
|
9517
9603
|
var EXIT_DURATION = 300;
|
|
9518
9604
|
var ToastItemComponent = ({ item, isExiting, onClose }) => {
|
|
9519
|
-
const ref =
|
|
9520
|
-
const [height, setHeight] =
|
|
9521
|
-
|
|
9605
|
+
const ref = import_react39.default.useRef(null);
|
|
9606
|
+
const [height, setHeight] = import_react39.default.useState(void 0);
|
|
9607
|
+
import_react39.default.useEffect(() => {
|
|
9522
9608
|
if (ref.current && !isExiting) {
|
|
9523
9609
|
setHeight(ref.current.offsetHeight);
|
|
9524
9610
|
}
|
|
9525
9611
|
}, [isExiting]);
|
|
9526
|
-
return /* @__PURE__ */ (0,
|
|
9612
|
+
return /* @__PURE__ */ (0, import_jsx_runtime346.jsx)(
|
|
9527
9613
|
"div",
|
|
9528
9614
|
{
|
|
9529
9615
|
className: clsx_default("lib-xplat-toast-wrapper", { exit: isExiting }),
|
|
@@ -9531,15 +9617,15 @@ var ToastItemComponent = ({ item, isExiting, onClose }) => {
|
|
|
9531
9617
|
maxHeight: isExiting ? 0 : height ?? "none",
|
|
9532
9618
|
marginBottom: isExiting ? 0 : void 0
|
|
9533
9619
|
},
|
|
9534
|
-
children: /* @__PURE__ */ (0,
|
|
9620
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime346.jsxs)(
|
|
9535
9621
|
"div",
|
|
9536
9622
|
{
|
|
9537
9623
|
ref,
|
|
9538
9624
|
className: clsx_default("lib-xplat-toast", item.type, { exit: isExiting }),
|
|
9539
9625
|
role: "alert",
|
|
9540
9626
|
children: [
|
|
9541
|
-
/* @__PURE__ */ (0,
|
|
9542
|
-
/* @__PURE__ */ (0,
|
|
9627
|
+
/* @__PURE__ */ (0, import_jsx_runtime346.jsx)("span", { className: "message", children: item.message }),
|
|
9628
|
+
/* @__PURE__ */ (0, import_jsx_runtime346.jsx)("button", { className: "close-btn", onClick: onClose, "aria-label": "\uB2EB\uAE30", children: "\xD7" })
|
|
9543
9629
|
]
|
|
9544
9630
|
}
|
|
9545
9631
|
)
|
|
@@ -9550,13 +9636,13 @@ var ToastProvider = ({
|
|
|
9550
9636
|
children,
|
|
9551
9637
|
position = "top-right"
|
|
9552
9638
|
}) => {
|
|
9553
|
-
const [toasts, setToasts] =
|
|
9554
|
-
const [removing, setRemoving] =
|
|
9555
|
-
const [mounted, setMounted] =
|
|
9556
|
-
|
|
9639
|
+
const [toasts, setToasts] = import_react39.default.useState([]);
|
|
9640
|
+
const [removing, setRemoving] = import_react39.default.useState(/* @__PURE__ */ new Set());
|
|
9641
|
+
const [mounted, setMounted] = import_react39.default.useState(false);
|
|
9642
|
+
import_react39.default.useEffect(() => {
|
|
9557
9643
|
setMounted(true);
|
|
9558
9644
|
}, []);
|
|
9559
|
-
const remove =
|
|
9645
|
+
const remove = import_react39.default.useCallback((id) => {
|
|
9560
9646
|
setRemoving((prev) => new Set(prev).add(id));
|
|
9561
9647
|
setTimeout(() => {
|
|
9562
9648
|
setToasts((prev) => prev.filter((t) => t.id !== id));
|
|
@@ -9567,7 +9653,7 @@ var ToastProvider = ({
|
|
|
9567
9653
|
});
|
|
9568
9654
|
}, EXIT_DURATION);
|
|
9569
9655
|
}, []);
|
|
9570
|
-
const toast =
|
|
9656
|
+
const toast = import_react39.default.useCallback(
|
|
9571
9657
|
(type, message, duration = 3e3) => {
|
|
9572
9658
|
const id = `${Date.now()}-${Math.random()}`;
|
|
9573
9659
|
setToasts((prev) => [...prev, { id, type, message }]);
|
|
@@ -9577,10 +9663,10 @@ var ToastProvider = ({
|
|
|
9577
9663
|
},
|
|
9578
9664
|
[remove]
|
|
9579
9665
|
);
|
|
9580
|
-
return /* @__PURE__ */ (0,
|
|
9666
|
+
return /* @__PURE__ */ (0, import_jsx_runtime346.jsxs)(ToastContext.Provider, { value: { toast }, children: [
|
|
9581
9667
|
children,
|
|
9582
9668
|
mounted && (0, import_react_dom4.createPortal)(
|
|
9583
|
-
/* @__PURE__ */ (0,
|
|
9669
|
+
/* @__PURE__ */ (0, import_jsx_runtime346.jsx)("div", { className: clsx_default("lib-xplat-toast-container", position), children: toasts.map((t) => /* @__PURE__ */ (0, import_jsx_runtime346.jsx)(
|
|
9584
9670
|
ToastItemComponent,
|
|
9585
9671
|
{
|
|
9586
9672
|
item: t,
|
|
@@ -9596,29 +9682,29 @@ var ToastProvider = ({
|
|
|
9596
9682
|
ToastProvider.displayName = "ToastProvider";
|
|
9597
9683
|
|
|
9598
9684
|
// src/components/Tooltip/Tooltip.tsx
|
|
9599
|
-
var
|
|
9600
|
-
var
|
|
9685
|
+
var import_react40 = __toESM(require("react"), 1);
|
|
9686
|
+
var import_jsx_runtime347 = require("react/jsx-runtime");
|
|
9601
9687
|
var Tooltip = (props) => {
|
|
9602
9688
|
const {
|
|
9603
9689
|
type = "primary",
|
|
9604
9690
|
description,
|
|
9605
9691
|
children
|
|
9606
9692
|
} = props;
|
|
9607
|
-
const iconRef =
|
|
9608
|
-
return /* @__PURE__ */ (0,
|
|
9609
|
-
/* @__PURE__ */ (0,
|
|
9610
|
-
/* @__PURE__ */ (0,
|
|
9693
|
+
const iconRef = import_react40.default.useRef(null);
|
|
9694
|
+
return /* @__PURE__ */ (0, import_jsx_runtime347.jsxs)("div", { className: "lib-xplat-tooltip", children: [
|
|
9695
|
+
/* @__PURE__ */ (0, import_jsx_runtime347.jsx)("div", { className: "tooltip-content", ref: iconRef, children: children || "Tooltip" }),
|
|
9696
|
+
/* @__PURE__ */ (0, import_jsx_runtime347.jsx)("div", { className: clsx_default("tooltip-wrapper", type), children: description })
|
|
9611
9697
|
] });
|
|
9612
9698
|
};
|
|
9613
9699
|
Tooltip.displayName = "Tooltip";
|
|
9614
9700
|
var Tooltip_default = Tooltip;
|
|
9615
9701
|
|
|
9616
9702
|
// src/components/Video/Video.tsx
|
|
9617
|
-
var
|
|
9618
|
-
var
|
|
9619
|
-
var PipIcon = () => /* @__PURE__ */ (0,
|
|
9620
|
-
/* @__PURE__ */ (0,
|
|
9621
|
-
/* @__PURE__ */ (0,
|
|
9703
|
+
var import_react41 = __toESM(require("react"), 1);
|
|
9704
|
+
var import_jsx_runtime348 = require("react/jsx-runtime");
|
|
9705
|
+
var PipIcon = () => /* @__PURE__ */ (0, import_jsx_runtime348.jsxs)("svg", { viewBox: "0 0 24 24", width: "1em", height: "1em", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
|
|
9706
|
+
/* @__PURE__ */ (0, import_jsx_runtime348.jsx)("rect", { x: "3", y: "5", width: "18", height: "14", rx: "2" }),
|
|
9707
|
+
/* @__PURE__ */ (0, import_jsx_runtime348.jsx)("rect", { x: "12", y: "11", width: "7", height: "6", rx: "1", fill: "currentColor" })
|
|
9622
9708
|
] });
|
|
9623
9709
|
var formatTime = (sec) => {
|
|
9624
9710
|
if (!Number.isFinite(sec) || sec < 0) return "0:00";
|
|
@@ -9626,7 +9712,7 @@ var formatTime = (sec) => {
|
|
|
9626
9712
|
const s = Math.floor(sec % 60);
|
|
9627
9713
|
return `${m}:${s.toString().padStart(2, "0")}`;
|
|
9628
9714
|
};
|
|
9629
|
-
var Video =
|
|
9715
|
+
var Video = import_react41.default.forwardRef((props, ref) => {
|
|
9630
9716
|
const {
|
|
9631
9717
|
src,
|
|
9632
9718
|
poster,
|
|
@@ -9650,21 +9736,21 @@ var Video = import_react40.default.forwardRef((props, ref) => {
|
|
|
9650
9736
|
children,
|
|
9651
9737
|
...rest
|
|
9652
9738
|
} = props;
|
|
9653
|
-
const containerRef =
|
|
9654
|
-
const videoRef =
|
|
9655
|
-
const [isPlaying, setIsPlaying] =
|
|
9656
|
-
const [isLoaded, setIsLoaded] =
|
|
9657
|
-
const [currentTime, setCurrentTime] =
|
|
9658
|
-
const [duration, setDuration] =
|
|
9659
|
-
const [buffered, setBuffered] =
|
|
9660
|
-
const [volume, setVolume] =
|
|
9661
|
-
const [isMuted, setIsMuted] =
|
|
9662
|
-
const [isFullscreen, setIsFullscreen] =
|
|
9663
|
-
const [playbackRate, setPlaybackRate] =
|
|
9664
|
-
const [rateMenuOpen, setRateMenuOpen] =
|
|
9665
|
-
const [captionsOn, setCaptionsOn] =
|
|
9666
|
-
const [isPip, setIsPip] =
|
|
9667
|
-
const setRefs =
|
|
9739
|
+
const containerRef = import_react41.default.useRef(null);
|
|
9740
|
+
const videoRef = import_react41.default.useRef(null);
|
|
9741
|
+
const [isPlaying, setIsPlaying] = import_react41.default.useState(Boolean(autoPlay));
|
|
9742
|
+
const [isLoaded, setIsLoaded] = import_react41.default.useState(false);
|
|
9743
|
+
const [currentTime, setCurrentTime] = import_react41.default.useState(0);
|
|
9744
|
+
const [duration, setDuration] = import_react41.default.useState(0);
|
|
9745
|
+
const [buffered, setBuffered] = import_react41.default.useState(0);
|
|
9746
|
+
const [volume, setVolume] = import_react41.default.useState(1);
|
|
9747
|
+
const [isMuted, setIsMuted] = import_react41.default.useState(Boolean(muted));
|
|
9748
|
+
const [isFullscreen, setIsFullscreen] = import_react41.default.useState(false);
|
|
9749
|
+
const [playbackRate, setPlaybackRate] = import_react41.default.useState(1);
|
|
9750
|
+
const [rateMenuOpen, setRateMenuOpen] = import_react41.default.useState(false);
|
|
9751
|
+
const [captionsOn, setCaptionsOn] = import_react41.default.useState(false);
|
|
9752
|
+
const [isPip, setIsPip] = import_react41.default.useState(false);
|
|
9753
|
+
const setRefs = import_react41.default.useCallback(
|
|
9668
9754
|
(el) => {
|
|
9669
9755
|
videoRef.current = el;
|
|
9670
9756
|
if (typeof ref === "function") ref(el);
|
|
@@ -9672,14 +9758,14 @@ var Video = import_react40.default.forwardRef((props, ref) => {
|
|
|
9672
9758
|
},
|
|
9673
9759
|
[ref]
|
|
9674
9760
|
);
|
|
9675
|
-
|
|
9761
|
+
import_react41.default.useEffect(() => {
|
|
9676
9762
|
const onFsChange = () => {
|
|
9677
9763
|
setIsFullscreen(document.fullscreenElement === containerRef.current);
|
|
9678
9764
|
};
|
|
9679
9765
|
document.addEventListener("fullscreenchange", onFsChange);
|
|
9680
9766
|
return () => document.removeEventListener("fullscreenchange", onFsChange);
|
|
9681
9767
|
}, []);
|
|
9682
|
-
|
|
9768
|
+
import_react41.default.useEffect(() => {
|
|
9683
9769
|
const v = videoRef.current;
|
|
9684
9770
|
if (!v) return;
|
|
9685
9771
|
const onEnter = () => setIsPip(true);
|
|
@@ -9793,13 +9879,13 @@ var Video = import_react40.default.forwardRef((props, ref) => {
|
|
|
9793
9879
|
const volumePct = (isMuted ? 0 : volume) * 100;
|
|
9794
9880
|
const VolumeGlyph = isMuted || volume === 0 ? VolumeXIcon_default : volume < 0.5 ? VolumeIcon_default : Volume2Icon_default;
|
|
9795
9881
|
const pipSupported = typeof document !== "undefined" && "pictureInPictureEnabled" in document && document.pictureInPictureEnabled;
|
|
9796
|
-
return /* @__PURE__ */ (0,
|
|
9882
|
+
return /* @__PURE__ */ (0, import_jsx_runtime348.jsxs)(
|
|
9797
9883
|
"div",
|
|
9798
9884
|
{
|
|
9799
9885
|
ref: containerRef,
|
|
9800
9886
|
className: clsx_default("lib-xplat-video", showControls && "has-controls"),
|
|
9801
9887
|
children: [
|
|
9802
|
-
/* @__PURE__ */ (0,
|
|
9888
|
+
/* @__PURE__ */ (0, import_jsx_runtime348.jsx)(
|
|
9803
9889
|
"video",
|
|
9804
9890
|
{
|
|
9805
9891
|
ref: setRefs,
|
|
@@ -9820,7 +9906,7 @@ var Video = import_react40.default.forwardRef((props, ref) => {
|
|
|
9820
9906
|
children
|
|
9821
9907
|
}
|
|
9822
9908
|
),
|
|
9823
|
-
showCenterPlay && /* @__PURE__ */ (0,
|
|
9909
|
+
showCenterPlay && /* @__PURE__ */ (0, import_jsx_runtime348.jsx)(
|
|
9824
9910
|
"button",
|
|
9825
9911
|
{
|
|
9826
9912
|
type: "button",
|
|
@@ -9832,11 +9918,11 @@ var Video = import_react40.default.forwardRef((props, ref) => {
|
|
|
9832
9918
|
onClick: togglePlay,
|
|
9833
9919
|
"aria-label": isPlaying ? "\uC77C\uC2DC\uC815\uC9C0" : "\uC7AC\uC0DD",
|
|
9834
9920
|
tabIndex: -1,
|
|
9835
|
-
children: /* @__PURE__ */ (0,
|
|
9921
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime348.jsx)("span", { className: "center-play-icon", children: /* @__PURE__ */ (0, import_jsx_runtime348.jsx)(PlayCircleIcon_default, {}) })
|
|
9836
9922
|
}
|
|
9837
9923
|
),
|
|
9838
|
-
showControls && /* @__PURE__ */ (0,
|
|
9839
|
-
/* @__PURE__ */ (0,
|
|
9924
|
+
showControls && /* @__PURE__ */ (0, import_jsx_runtime348.jsxs)("div", { className: "controls", onClick: (e) => e.stopPropagation(), children: [
|
|
9925
|
+
/* @__PURE__ */ (0, import_jsx_runtime348.jsx)(
|
|
9840
9926
|
"input",
|
|
9841
9927
|
{
|
|
9842
9928
|
type: "range",
|
|
@@ -9853,29 +9939,29 @@ var Video = import_react40.default.forwardRef((props, ref) => {
|
|
|
9853
9939
|
}
|
|
9854
9940
|
}
|
|
9855
9941
|
),
|
|
9856
|
-
/* @__PURE__ */ (0,
|
|
9857
|
-
/* @__PURE__ */ (0,
|
|
9942
|
+
/* @__PURE__ */ (0, import_jsx_runtime348.jsxs)("div", { className: "controls-row", children: [
|
|
9943
|
+
/* @__PURE__ */ (0, import_jsx_runtime348.jsx)(
|
|
9858
9944
|
"button",
|
|
9859
9945
|
{
|
|
9860
9946
|
type: "button",
|
|
9861
9947
|
className: "control-btn",
|
|
9862
9948
|
onClick: togglePlay,
|
|
9863
9949
|
"aria-label": isPlaying ? "\uC77C\uC2DC\uC815\uC9C0" : "\uC7AC\uC0DD",
|
|
9864
|
-
children: isPlaying ? /* @__PURE__ */ (0,
|
|
9950
|
+
children: isPlaying ? /* @__PURE__ */ (0, import_jsx_runtime348.jsx)(PauseIcon_default, {}) : /* @__PURE__ */ (0, import_jsx_runtime348.jsx)(PlayIcon_default, {})
|
|
9865
9951
|
}
|
|
9866
9952
|
),
|
|
9867
|
-
/* @__PURE__ */ (0,
|
|
9868
|
-
/* @__PURE__ */ (0,
|
|
9953
|
+
/* @__PURE__ */ (0, import_jsx_runtime348.jsxs)("div", { className: "volume-group", children: [
|
|
9954
|
+
/* @__PURE__ */ (0, import_jsx_runtime348.jsx)(
|
|
9869
9955
|
"button",
|
|
9870
9956
|
{
|
|
9871
9957
|
type: "button",
|
|
9872
9958
|
className: "control-btn",
|
|
9873
9959
|
onClick: toggleMute,
|
|
9874
9960
|
"aria-label": isMuted ? "\uC74C\uC18C\uAC70 \uD574\uC81C" : "\uC74C\uC18C\uAC70",
|
|
9875
|
-
children: /* @__PURE__ */ (0,
|
|
9961
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime348.jsx)(VolumeGlyph, {})
|
|
9876
9962
|
}
|
|
9877
9963
|
),
|
|
9878
|
-
/* @__PURE__ */ (0,
|
|
9964
|
+
/* @__PURE__ */ (0, import_jsx_runtime348.jsx)(
|
|
9879
9965
|
"input",
|
|
9880
9966
|
{
|
|
9881
9967
|
type: "range",
|
|
@@ -9890,14 +9976,14 @@ var Video = import_react40.default.forwardRef((props, ref) => {
|
|
|
9890
9976
|
}
|
|
9891
9977
|
)
|
|
9892
9978
|
] }),
|
|
9893
|
-
/* @__PURE__ */ (0,
|
|
9979
|
+
/* @__PURE__ */ (0, import_jsx_runtime348.jsxs)("span", { className: "time", children: [
|
|
9894
9980
|
formatTime(currentTime),
|
|
9895
9981
|
" / ",
|
|
9896
9982
|
formatTime(duration)
|
|
9897
9983
|
] }),
|
|
9898
|
-
/* @__PURE__ */ (0,
|
|
9899
|
-
playbackRates && playbackRates.length > 0 && /* @__PURE__ */ (0,
|
|
9900
|
-
/* @__PURE__ */ (0,
|
|
9984
|
+
/* @__PURE__ */ (0, import_jsx_runtime348.jsx)("div", { className: "controls-spacer" }),
|
|
9985
|
+
playbackRates && playbackRates.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime348.jsxs)("div", { className: clsx_default("rate-group", rateMenuOpen && "is-open"), children: [
|
|
9986
|
+
/* @__PURE__ */ (0, import_jsx_runtime348.jsxs)(
|
|
9901
9987
|
"button",
|
|
9902
9988
|
{
|
|
9903
9989
|
type: "button",
|
|
@@ -9911,7 +9997,7 @@ var Video = import_react40.default.forwardRef((props, ref) => {
|
|
|
9911
9997
|
]
|
|
9912
9998
|
}
|
|
9913
9999
|
),
|
|
9914
|
-
rateMenuOpen && /* @__PURE__ */ (0,
|
|
10000
|
+
rateMenuOpen && /* @__PURE__ */ (0, import_jsx_runtime348.jsx)("ul", { className: "rate-menu", role: "menu", children: playbackRates.map((r2) => /* @__PURE__ */ (0, import_jsx_runtime348.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime348.jsxs)(
|
|
9915
10001
|
"button",
|
|
9916
10002
|
{
|
|
9917
10003
|
type: "button",
|
|
@@ -9925,7 +10011,7 @@ var Video = import_react40.default.forwardRef((props, ref) => {
|
|
|
9925
10011
|
}
|
|
9926
10012
|
) }, r2)) })
|
|
9927
10013
|
] }),
|
|
9928
|
-
showCaptions && /* @__PURE__ */ (0,
|
|
10014
|
+
showCaptions && /* @__PURE__ */ (0, import_jsx_runtime348.jsx)(
|
|
9929
10015
|
"button",
|
|
9930
10016
|
{
|
|
9931
10017
|
type: "button",
|
|
@@ -9933,37 +10019,37 @@ var Video = import_react40.default.forwardRef((props, ref) => {
|
|
|
9933
10019
|
onClick: toggleCaptions,
|
|
9934
10020
|
"aria-label": captionsOn ? "\uC790\uB9C9 \uB044\uAE30" : "\uC790\uB9C9 \uCF1C\uAE30",
|
|
9935
10021
|
"aria-pressed": captionsOn,
|
|
9936
|
-
children: /* @__PURE__ */ (0,
|
|
10022
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime348.jsx)(TypeIcon_default, {})
|
|
9937
10023
|
}
|
|
9938
10024
|
),
|
|
9939
|
-
showPip && pipSupported && /* @__PURE__ */ (0,
|
|
10025
|
+
showPip && pipSupported && /* @__PURE__ */ (0, import_jsx_runtime348.jsx)(
|
|
9940
10026
|
"button",
|
|
9941
10027
|
{
|
|
9942
10028
|
type: "button",
|
|
9943
10029
|
className: clsx_default("control-btn", isPip && "is-active"),
|
|
9944
10030
|
onClick: togglePip,
|
|
9945
10031
|
"aria-label": isPip ? "PIP \uC885\uB8CC" : "PIP",
|
|
9946
|
-
children: /* @__PURE__ */ (0,
|
|
10032
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime348.jsx)(PipIcon, {})
|
|
9947
10033
|
}
|
|
9948
10034
|
),
|
|
9949
|
-
showDownload && /* @__PURE__ */ (0,
|
|
10035
|
+
showDownload && /* @__PURE__ */ (0, import_jsx_runtime348.jsx)(
|
|
9950
10036
|
"a",
|
|
9951
10037
|
{
|
|
9952
10038
|
className: "control-btn",
|
|
9953
10039
|
href: src,
|
|
9954
10040
|
download: downloadFileName ?? true,
|
|
9955
10041
|
"aria-label": "\uB2E4\uC6B4\uB85C\uB4DC",
|
|
9956
|
-
children: /* @__PURE__ */ (0,
|
|
10042
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime348.jsx)(DownloadIcon_default, {})
|
|
9957
10043
|
}
|
|
9958
10044
|
),
|
|
9959
|
-
/* @__PURE__ */ (0,
|
|
10045
|
+
/* @__PURE__ */ (0, import_jsx_runtime348.jsx)(
|
|
9960
10046
|
"button",
|
|
9961
10047
|
{
|
|
9962
10048
|
type: "button",
|
|
9963
10049
|
className: "control-btn",
|
|
9964
10050
|
onClick: toggleFullscreen,
|
|
9965
10051
|
"aria-label": isFullscreen ? "\uC804\uCCB4\uD654\uBA74 \uC885\uB8CC" : "\uC804\uCCB4\uD654\uBA74",
|
|
9966
|
-
children: isFullscreen ? /* @__PURE__ */ (0,
|
|
10052
|
+
children: isFullscreen ? /* @__PURE__ */ (0, import_jsx_runtime348.jsx)(MinimizeIcon_default, {}) : /* @__PURE__ */ (0, import_jsx_runtime348.jsx)(MaximizeIcon_default, {})
|
|
9967
10053
|
}
|
|
9968
10054
|
)
|
|
9969
10055
|
] })
|
|
@@ -9976,7 +10062,7 @@ Video.displayName = "Video";
|
|
|
9976
10062
|
var Video_default = Video;
|
|
9977
10063
|
|
|
9978
10064
|
// src/layout/Grid/FullGrid/FullGrid.tsx
|
|
9979
|
-
var
|
|
10065
|
+
var import_jsx_runtime349 = require("react/jsx-runtime");
|
|
9980
10066
|
var GAP_MAP = {
|
|
9981
10067
|
none: "var(--spacing-space-none)",
|
|
9982
10068
|
xs: "var(--spacing-space-1)",
|
|
@@ -9989,13 +10075,13 @@ var GAP_MAP = {
|
|
|
9989
10075
|
var FullGrid = (props) => {
|
|
9990
10076
|
const { children, gap } = props;
|
|
9991
10077
|
const style = gap != null ? { gap: GAP_MAP[gap] } : void 0;
|
|
9992
|
-
return /* @__PURE__ */ (0,
|
|
10078
|
+
return /* @__PURE__ */ (0, import_jsx_runtime349.jsx)("div", { className: "lib-xplat-full-grid", style, children });
|
|
9993
10079
|
};
|
|
9994
10080
|
FullGrid.displayName = "FullGrid";
|
|
9995
10081
|
var FullGrid_default = FullGrid;
|
|
9996
10082
|
|
|
9997
10083
|
// src/layout/Grid/FullScreen/FullScreen.tsx
|
|
9998
|
-
var
|
|
10084
|
+
var import_jsx_runtime350 = require("react/jsx-runtime");
|
|
9999
10085
|
var GAP_MAP2 = {
|
|
10000
10086
|
none: "var(--spacing-space-none)",
|
|
10001
10087
|
xs: "var(--spacing-space-1)",
|
|
@@ -10008,13 +10094,13 @@ var GAP_MAP2 = {
|
|
|
10008
10094
|
var FullScreen = (props) => {
|
|
10009
10095
|
const { children, gap } = props;
|
|
10010
10096
|
const style = gap != null ? { gap: GAP_MAP2[gap] } : void 0;
|
|
10011
|
-
return /* @__PURE__ */ (0,
|
|
10097
|
+
return /* @__PURE__ */ (0, import_jsx_runtime350.jsx)("div", { className: "lib-xplat-full-screen", style, children });
|
|
10012
10098
|
};
|
|
10013
10099
|
FullScreen.displayName = "FullScreen";
|
|
10014
10100
|
var FullScreen_default = FullScreen;
|
|
10015
10101
|
|
|
10016
10102
|
// src/layout/Grid/Item/Item.tsx
|
|
10017
|
-
var
|
|
10103
|
+
var import_jsx_runtime351 = require("react/jsx-runtime");
|
|
10018
10104
|
var calculateSpans = (column) => {
|
|
10019
10105
|
const spans = {};
|
|
10020
10106
|
let inherited = column.default;
|
|
@@ -10031,35 +10117,35 @@ var GridItem = ({ column, children, className }) => {
|
|
|
10031
10117
|
Object.entries(spans).forEach(([key, value]) => {
|
|
10032
10118
|
style[`--column-${key}`] = value;
|
|
10033
10119
|
});
|
|
10034
|
-
return /* @__PURE__ */ (0,
|
|
10120
|
+
return /* @__PURE__ */ (0, import_jsx_runtime351.jsx)("div", { className: clsx_default("lib-xplat-grid-item", className), style, children });
|
|
10035
10121
|
};
|
|
10036
10122
|
GridItem.displayName = "GridItem";
|
|
10037
10123
|
var Item_default = GridItem;
|
|
10038
10124
|
|
|
10039
10125
|
// src/layout/Header/Header.tsx
|
|
10040
|
-
var
|
|
10126
|
+
var import_jsx_runtime352 = require("react/jsx-runtime");
|
|
10041
10127
|
var Header = ({
|
|
10042
10128
|
logo,
|
|
10043
10129
|
centerContent,
|
|
10044
10130
|
rightContent
|
|
10045
10131
|
}) => {
|
|
10046
|
-
return /* @__PURE__ */ (0,
|
|
10047
|
-
/* @__PURE__ */ (0,
|
|
10048
|
-
/* @__PURE__ */ (0,
|
|
10049
|
-
/* @__PURE__ */ (0,
|
|
10132
|
+
return /* @__PURE__ */ (0, import_jsx_runtime352.jsxs)("div", { className: "lib-xplat-layout-header", children: [
|
|
10133
|
+
/* @__PURE__ */ (0, import_jsx_runtime352.jsx)("div", { children: logo }),
|
|
10134
|
+
/* @__PURE__ */ (0, import_jsx_runtime352.jsx)("div", { children: centerContent }),
|
|
10135
|
+
/* @__PURE__ */ (0, import_jsx_runtime352.jsx)("div", { children: rightContent })
|
|
10050
10136
|
] });
|
|
10051
10137
|
};
|
|
10052
10138
|
Header.displayName = "Header";
|
|
10053
10139
|
var Header_default = Header;
|
|
10054
10140
|
|
|
10055
10141
|
// src/layout/Layout/Layout.tsx
|
|
10056
|
-
var
|
|
10142
|
+
var import_jsx_runtime353 = require("react/jsx-runtime");
|
|
10057
10143
|
var Layout = (props) => {
|
|
10058
10144
|
const { header, sideBar, children } = props;
|
|
10059
|
-
return /* @__PURE__ */ (0,
|
|
10060
|
-
sideBar && /* @__PURE__ */ (0,
|
|
10061
|
-
/* @__PURE__ */ (0,
|
|
10062
|
-
header && /* @__PURE__ */ (0,
|
|
10145
|
+
return /* @__PURE__ */ (0, import_jsx_runtime353.jsx)("div", { className: "lib-xplat-layout", children: /* @__PURE__ */ (0, import_jsx_runtime353.jsxs)("div", { className: "lib-xplat-layout-content-wrapper", children: [
|
|
10146
|
+
sideBar && /* @__PURE__ */ (0, import_jsx_runtime353.jsx)(import_jsx_runtime353.Fragment, { children: sideBar }),
|
|
10147
|
+
/* @__PURE__ */ (0, import_jsx_runtime353.jsxs)("div", { className: "lib-xplat-layout-content", children: [
|
|
10148
|
+
header && /* @__PURE__ */ (0, import_jsx_runtime353.jsx)("div", { className: "lib-xplat-layout-conent-header", children: header }),
|
|
10063
10149
|
children
|
|
10064
10150
|
] })
|
|
10065
10151
|
] }) });
|
|
@@ -10068,31 +10154,31 @@ Layout.displayName = "Layout";
|
|
|
10068
10154
|
var Layout_default = Layout;
|
|
10069
10155
|
|
|
10070
10156
|
// src/layout/SideBar/SideBar.tsx
|
|
10071
|
-
var
|
|
10157
|
+
var import_react43 = __toESM(require("react"), 1);
|
|
10072
10158
|
|
|
10073
10159
|
// src/layout/SideBar/SideBarContext.tsx
|
|
10074
|
-
var
|
|
10075
|
-
var SideBarContext =
|
|
10160
|
+
var import_react42 = __toESM(require("react"), 1);
|
|
10161
|
+
var SideBarContext = import_react42.default.createContext(null);
|
|
10076
10162
|
var useSideBarContext = () => {
|
|
10077
|
-
const ctx =
|
|
10163
|
+
const ctx = import_react42.default.useContext(SideBarContext);
|
|
10078
10164
|
if (!ctx) throw new Error("Error");
|
|
10079
10165
|
return ctx;
|
|
10080
10166
|
};
|
|
10081
10167
|
var SideBarContext_default = SideBarContext;
|
|
10082
10168
|
|
|
10083
10169
|
// src/layout/SideBar/SideBar.tsx
|
|
10084
|
-
var
|
|
10170
|
+
var import_jsx_runtime354 = require("react/jsx-runtime");
|
|
10085
10171
|
var SideBar = (props) => {
|
|
10086
10172
|
const { children, className } = props;
|
|
10087
|
-
const [isOpen, setIsOpen] =
|
|
10173
|
+
const [isOpen, setIsOpen] = import_react43.default.useState(true);
|
|
10088
10174
|
const handleSwitchSideBar = () => {
|
|
10089
10175
|
setIsOpen((prev) => !prev);
|
|
10090
10176
|
};
|
|
10091
|
-
return /* @__PURE__ */ (0,
|
|
10177
|
+
return /* @__PURE__ */ (0, import_jsx_runtime354.jsx)(
|
|
10092
10178
|
SideBarContext_default.Provider,
|
|
10093
10179
|
{
|
|
10094
10180
|
value: { isSidebarOpen: isOpen, handleSwitchSideBar },
|
|
10095
|
-
children: /* @__PURE__ */ (0,
|
|
10181
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime354.jsx)(
|
|
10096
10182
|
"div",
|
|
10097
10183
|
{
|
|
10098
10184
|
className: clsx_default(
|
|
@@ -10172,6 +10258,7 @@ var SideBar_default = SideBar;
|
|
|
10172
10258
|
CardTab,
|
|
10173
10259
|
CastIcon,
|
|
10174
10260
|
Chart,
|
|
10261
|
+
ChatInput,
|
|
10175
10262
|
CheckBox,
|
|
10176
10263
|
CheckCircleIcon,
|
|
10177
10264
|
CheckIcon,
|