@x-plat/design-system 0.5.11 → 0.5.13
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/Chart/index.cjs +67 -48
- package/dist/components/Chart/index.js +68 -49
- package/dist/components/DatePicker/index.cjs +398 -380
- package/dist/components/DatePicker/index.js +384 -366
- package/dist/components/Dropdown/index.cjs +34 -17
- package/dist/components/Dropdown/index.css +9 -9
- package/dist/components/Dropdown/index.js +33 -16
- package/dist/components/Modal/index.cjs +25 -9
- package/dist/components/Modal/index.d.cts +0 -3
- package/dist/components/Modal/index.d.ts +0 -3
- package/dist/components/Modal/index.js +24 -8
- package/dist/components/PopOver/index.cjs +29 -12
- package/dist/components/PopOver/index.css +6 -9
- package/dist/components/PopOver/index.js +28 -11
- package/dist/components/Select/index.cjs +348 -331
- package/dist/components/Select/index.css +12 -19
- package/dist/components/Select/index.js +346 -329
- package/dist/components/index.cjs +480 -439
- package/dist/components/index.css +27 -37
- package/dist/components/index.js +436 -395
- package/dist/index.cjs +504 -463
- package/dist/index.css +27 -37
- package/dist/index.js +458 -417
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -6121,7 +6121,7 @@ var CardTab_default = CardTab;
|
|
|
6121
6121
|
|
|
6122
6122
|
// src/components/Chart/Chart.tsx
|
|
6123
6123
|
import React5 from "react";
|
|
6124
|
-
import { jsx as jsx305, jsxs as jsxs196 } from "react/jsx-runtime";
|
|
6124
|
+
import { Fragment as Fragment2, jsx as jsx305, jsxs as jsxs196 } from "react/jsx-runtime";
|
|
6125
6125
|
var CATEGORICAL_COUNT2 = 8;
|
|
6126
6126
|
var LINE_BAR_PALETTES = Array.from({ length: CATEGORICAL_COUNT2 }, (_, i) => {
|
|
6127
6127
|
const n = i + 1;
|
|
@@ -6170,14 +6170,23 @@ var useChartSize = (ref) => {
|
|
|
6170
6170
|
React5.useEffect(() => {
|
|
6171
6171
|
const el = ref.current;
|
|
6172
6172
|
if (!el) return;
|
|
6173
|
+
let rafId = 0;
|
|
6173
6174
|
const observer = new ResizeObserver((entries) => {
|
|
6174
|
-
|
|
6175
|
-
|
|
6176
|
-
|
|
6177
|
-
|
|
6175
|
+
cancelAnimationFrame(rafId);
|
|
6176
|
+
rafId = requestAnimationFrame(() => {
|
|
6177
|
+
const entry = entries[0];
|
|
6178
|
+
if (!entry) return;
|
|
6179
|
+
const { width, height } = entry.contentRect;
|
|
6180
|
+
const w = Math.floor(width);
|
|
6181
|
+
const h = Math.floor(height);
|
|
6182
|
+
setSize((prev) => prev.width === w && prev.height === h ? prev : { width: w, height: h });
|
|
6183
|
+
});
|
|
6178
6184
|
});
|
|
6179
6185
|
observer.observe(el);
|
|
6180
|
-
return () =>
|
|
6186
|
+
return () => {
|
|
6187
|
+
cancelAnimationFrame(rafId);
|
|
6188
|
+
observer.disconnect();
|
|
6189
|
+
};
|
|
6181
6190
|
}, [ref]);
|
|
6182
6191
|
return size;
|
|
6183
6192
|
};
|
|
@@ -6189,15 +6198,21 @@ var useChartTooltip = (enabled) => {
|
|
|
6189
6198
|
content: ""
|
|
6190
6199
|
});
|
|
6191
6200
|
const containerRef = React5.useRef(null);
|
|
6201
|
+
const rafRef = React5.useRef(0);
|
|
6192
6202
|
const move = React5.useCallback((e) => {
|
|
6193
6203
|
if (!enabled) return;
|
|
6194
|
-
const
|
|
6195
|
-
|
|
6196
|
-
|
|
6197
|
-
|
|
6198
|
-
|
|
6199
|
-
|
|
6200
|
-
|
|
6204
|
+
const clientX = e.clientX;
|
|
6205
|
+
const clientY = e.clientY;
|
|
6206
|
+
cancelAnimationFrame(rafRef.current);
|
|
6207
|
+
rafRef.current = requestAnimationFrame(() => {
|
|
6208
|
+
const rect = containerRef.current?.getBoundingClientRect();
|
|
6209
|
+
if (!rect) return;
|
|
6210
|
+
setTooltip((prev) => ({
|
|
6211
|
+
...prev,
|
|
6212
|
+
x: clientX - rect.left,
|
|
6213
|
+
y: clientY - rect.top - 12
|
|
6214
|
+
}));
|
|
6215
|
+
});
|
|
6201
6216
|
}, [enabled]);
|
|
6202
6217
|
const show = React5.useCallback((e, content) => {
|
|
6203
6218
|
if (!enabled) return;
|
|
@@ -6211,10 +6226,35 @@ var useChartTooltip = (enabled) => {
|
|
|
6211
6226
|
});
|
|
6212
6227
|
}, [enabled]);
|
|
6213
6228
|
const hide = React5.useCallback(() => {
|
|
6229
|
+
cancelAnimationFrame(rafRef.current);
|
|
6214
6230
|
setTooltip((prev) => ({ ...prev, visible: false }));
|
|
6215
6231
|
}, []);
|
|
6216
6232
|
return { tooltip, show, hide, move, containerRef };
|
|
6217
6233
|
};
|
|
6234
|
+
var GridLines = React5.memo(({ width, height, chartH, maxVal }) => /* @__PURE__ */ jsx305(Fragment2, { children: [0, 0.25, 0.5, 0.75, 1].map((ratio) => {
|
|
6235
|
+
const y = PADDING.top + (1 - ratio) * chartH;
|
|
6236
|
+
const val = Math.round(maxVal * ratio);
|
|
6237
|
+
return /* @__PURE__ */ jsxs196("g", { children: [
|
|
6238
|
+
/* @__PURE__ */ jsx305("line", { x1: PADDING.left, y1: y, x2: width - PADDING.right, y2: y, className: "chart-grid" }),
|
|
6239
|
+
/* @__PURE__ */ jsx305("text", { x: PADDING.left - 8, y: y + 4, className: "chart-axis-label", textAnchor: "end", children: val })
|
|
6240
|
+
] }, ratio);
|
|
6241
|
+
}) }));
|
|
6242
|
+
GridLines.displayName = "GridLines";
|
|
6243
|
+
var getLabelStep = (count, chartW) => {
|
|
6244
|
+
const minLabelWidth = 40;
|
|
6245
|
+
const maxLabels = Math.floor(chartW / minLabelWidth);
|
|
6246
|
+
if (count <= maxLabels) return 1;
|
|
6247
|
+
return Math.ceil(count / maxLabels);
|
|
6248
|
+
};
|
|
6249
|
+
var AxisLabels = React5.memo(({ labels, count, chartW, height }) => {
|
|
6250
|
+
const step = getLabelStep(count, chartW);
|
|
6251
|
+
return /* @__PURE__ */ jsx305(Fragment2, { children: labels.map((label, i) => {
|
|
6252
|
+
if (i % step !== 0) return null;
|
|
6253
|
+
const x = PADDING.left + i / (count - 1 || 1) * chartW;
|
|
6254
|
+
return /* @__PURE__ */ jsx305("text", { x, y: height - 8, className: "chart-axis-label", textAnchor: "middle", children: label }, i);
|
|
6255
|
+
}) });
|
|
6256
|
+
});
|
|
6257
|
+
AxisLabels.displayName = "AxisLabels";
|
|
6218
6258
|
var LineChart = React5.memo(({ data, labels, width, height, onHover, onMove, onLeave }) => {
|
|
6219
6259
|
const entries = React5.useMemo(() => Object.entries(data), [data]);
|
|
6220
6260
|
const maxVal = React5.useMemo(() => {
|
|
@@ -6234,19 +6274,10 @@ var LineChart = React5.memo(({ data, labels, width, height, onHover, onMove, onL
|
|
|
6234
6274
|
),
|
|
6235
6275
|
[entries, count, chartW, chartH, maxVal]
|
|
6236
6276
|
);
|
|
6277
|
+
const showPoints = count <= 100;
|
|
6237
6278
|
return /* @__PURE__ */ jsxs196("svg", { viewBox: `0 0 ${width} ${height}`, className: "chart-svg", children: [
|
|
6238
|
-
|
|
6239
|
-
|
|
6240
|
-
const val = Math.round(maxVal * ratio);
|
|
6241
|
-
return /* @__PURE__ */ jsxs196("g", { children: [
|
|
6242
|
-
/* @__PURE__ */ jsx305("line", { x1: PADDING.left, y1: y, x2: width - PADDING.right, y2: y, className: "chart-grid" }),
|
|
6243
|
-
/* @__PURE__ */ jsx305("text", { x: PADDING.left - 8, y: y + 4, className: "chart-axis-label", textAnchor: "end", children: val })
|
|
6244
|
-
] }, ratio);
|
|
6245
|
-
}),
|
|
6246
|
-
labels.map((label, i) => {
|
|
6247
|
-
const x = PADDING.left + i / (count - 1 || 1) * chartW;
|
|
6248
|
-
return /* @__PURE__ */ jsx305("text", { x, y: height - 8, className: "chart-axis-label", textAnchor: "middle", children: label }, i);
|
|
6249
|
-
}),
|
|
6279
|
+
/* @__PURE__ */ jsx305(GridLines, { width, height, chartH, maxVal }),
|
|
6280
|
+
/* @__PURE__ */ jsx305(AxisLabels, { labels, count, chartW, height }),
|
|
6250
6281
|
entries.map(([key], di) => {
|
|
6251
6282
|
const palette = getPalette(LINE_BAR_PALETTES, di, key);
|
|
6252
6283
|
const color = palette[2];
|
|
@@ -6261,7 +6292,7 @@ var LineChart = React5.memo(({ data, labels, width, height, onHover, onMove, onL
|
|
|
6261
6292
|
strokeWidth: "2"
|
|
6262
6293
|
}
|
|
6263
6294
|
),
|
|
6264
|
-
points.map((p, i) => /* @__PURE__ */ jsx305(
|
|
6295
|
+
showPoints && points.map((p, i) => /* @__PURE__ */ jsx305(
|
|
6265
6296
|
"circle",
|
|
6266
6297
|
{
|
|
6267
6298
|
cx: p.x,
|
|
@@ -6299,19 +6330,10 @@ var CurveChart = React5.memo(({ data, labels, width, height, onHover, onMove, on
|
|
|
6299
6330
|
),
|
|
6300
6331
|
[entries, count, chartW, chartH, maxVal]
|
|
6301
6332
|
);
|
|
6333
|
+
const showPoints = count <= 100;
|
|
6302
6334
|
return /* @__PURE__ */ jsxs196("svg", { viewBox: `0 0 ${width} ${height}`, className: "chart-svg", children: [
|
|
6303
|
-
|
|
6304
|
-
|
|
6305
|
-
const val = Math.round(maxVal * ratio);
|
|
6306
|
-
return /* @__PURE__ */ jsxs196("g", { children: [
|
|
6307
|
-
/* @__PURE__ */ jsx305("line", { x1: PADDING.left, y1: y, x2: width - PADDING.right, y2: y, className: "chart-grid" }),
|
|
6308
|
-
/* @__PURE__ */ jsx305("text", { x: PADDING.left - 8, y: y + 4, className: "chart-axis-label", textAnchor: "end", children: val })
|
|
6309
|
-
] }, ratio);
|
|
6310
|
-
}),
|
|
6311
|
-
labels.map((label, i) => {
|
|
6312
|
-
const x = PADDING.left + i / (count - 1 || 1) * chartW;
|
|
6313
|
-
return /* @__PURE__ */ jsx305("text", { x, y: height - 8, className: "chart-axis-label", textAnchor: "middle", children: label }, i);
|
|
6314
|
-
}),
|
|
6335
|
+
/* @__PURE__ */ jsx305(GridLines, { width, height, chartH, maxVal }),
|
|
6336
|
+
/* @__PURE__ */ jsx305(AxisLabels, { labels, count, chartW, height }),
|
|
6315
6337
|
entries.map(([key], di) => {
|
|
6316
6338
|
const palette = getPalette(LINE_BAR_PALETTES, di, key);
|
|
6317
6339
|
const color = palette[2];
|
|
@@ -6327,7 +6349,7 @@ var CurveChart = React5.memo(({ data, labels, width, height, onHover, onMove, on
|
|
|
6327
6349
|
] }) }),
|
|
6328
6350
|
/* @__PURE__ */ jsx305("path", { d: areaPath, fill: `url(#${gradientId})` }),
|
|
6329
6351
|
/* @__PURE__ */ jsx305("path", { d: linePath, fill: "none", stroke: color, strokeWidth: "2" }),
|
|
6330
|
-
points.map((p, i) => /* @__PURE__ */ jsx305(
|
|
6352
|
+
showPoints && points.map((p, i) => /* @__PURE__ */ jsx305(
|
|
6331
6353
|
"circle",
|
|
6332
6354
|
{
|
|
6333
6355
|
cx: p.x,
|
|
@@ -6357,11 +6379,11 @@ var BarChart = React5.memo(({ data, labels, width, height, onHover, onMove, onLe
|
|
|
6357
6379
|
const chartW = width - PADDING.left - PADDING.right;
|
|
6358
6380
|
const chartH = height - PADDING.top - PADDING.bottom;
|
|
6359
6381
|
const groupW = chartW / count;
|
|
6360
|
-
const barW = Math.min(32, groupW * 0.7 / groupCount);
|
|
6382
|
+
const barW = Math.max(1, Math.min(32, groupW * 0.7 / groupCount));
|
|
6361
6383
|
const bars = React5.useMemo(
|
|
6362
6384
|
() => entries.map(
|
|
6363
6385
|
([, values], di) => values.map((v, i) => {
|
|
6364
|
-
const h = v / maxVal * chartH;
|
|
6386
|
+
const h = Math.max(0, v / maxVal * chartH);
|
|
6365
6387
|
const x = PADDING.left + groupW * i + (groupW - barW * groupCount) / 2 + barW * di;
|
|
6366
6388
|
const y = PADDING.top + chartH - h;
|
|
6367
6389
|
return { x, y, w: barW, h, v };
|
|
@@ -6369,16 +6391,13 @@ var BarChart = React5.memo(({ data, labels, width, height, onHover, onMove, onLe
|
|
|
6369
6391
|
),
|
|
6370
6392
|
[entries, maxVal, chartH, groupW, barW, groupCount]
|
|
6371
6393
|
);
|
|
6394
|
+
const barLabelStep = getLabelStep(count, chartW);
|
|
6372
6395
|
return /* @__PURE__ */ jsxs196("svg", { viewBox: `0 0 ${width} ${height}`, className: "chart-svg", children: [
|
|
6373
|
-
|
|
6374
|
-
|
|
6375
|
-
|
|
6376
|
-
return /* @__PURE__ */
|
|
6377
|
-
/* @__PURE__ */ jsx305("line", { x1: PADDING.left, y1: y, x2: width - PADDING.right, y2: y, className: "chart-grid" }),
|
|
6378
|
-
/* @__PURE__ */ jsx305("text", { x: PADDING.left - 8, y: y + 4, className: "chart-axis-label", textAnchor: "end", children: val })
|
|
6379
|
-
] }, ratio);
|
|
6396
|
+
/* @__PURE__ */ jsx305(GridLines, { width, height, chartH, maxVal }),
|
|
6397
|
+
labels.map((label, i) => {
|
|
6398
|
+
if (i % barLabelStep !== 0) return null;
|
|
6399
|
+
return /* @__PURE__ */ jsx305("text", { x: PADDING.left + groupW * i + groupW / 2, y: height - 8, className: "chart-axis-label", textAnchor: "middle", children: label }, i);
|
|
6380
6400
|
}),
|
|
6381
|
-
labels.map((label, i) => /* @__PURE__ */ jsx305("text", { x: PADDING.left + groupW * i + groupW / 2, y: height - 8, className: "chart-axis-label", textAnchor: "middle", children: label }, i)),
|
|
6382
6401
|
entries.map(([key], di) => {
|
|
6383
6402
|
const palette = getPalette(LINE_BAR_PALETTES, di, key);
|
|
6384
6403
|
const color = palette[2];
|
|
@@ -6571,7 +6590,7 @@ Chip.displayName = "Chip";
|
|
|
6571
6590
|
var Chip_default = Chip;
|
|
6572
6591
|
|
|
6573
6592
|
// src/components/DatePicker/InputDatePicker/index.tsx
|
|
6574
|
-
import
|
|
6593
|
+
import React11 from "react";
|
|
6575
6594
|
|
|
6576
6595
|
// src/components/Input/Input.tsx
|
|
6577
6596
|
import React6 from "react";
|
|
@@ -6761,15 +6780,33 @@ PasswordInput.displayName = "PasswordInput";
|
|
|
6761
6780
|
var PasswordInput_default = PasswordInput;
|
|
6762
6781
|
|
|
6763
6782
|
// src/components/Modal/Modal.tsx
|
|
6764
|
-
import
|
|
6783
|
+
import React9 from "react";
|
|
6765
6784
|
import { createPortal } from "react-dom";
|
|
6785
|
+
|
|
6786
|
+
// src/tokens/hooks/Portal.tsx
|
|
6787
|
+
import React8 from "react";
|
|
6788
|
+
import ReactDOM from "react-dom";
|
|
6766
6789
|
import { jsx as jsx311 } from "react/jsx-runtime";
|
|
6790
|
+
var PortalContainerContext = React8.createContext(null);
|
|
6791
|
+
var PortalProvider = ({ container, children }) => /* @__PURE__ */ jsx311(PortalContainerContext.Provider, { value: container, children });
|
|
6792
|
+
var Portal = ({ children }) => {
|
|
6793
|
+
const contextContainer = React8.useContext(PortalContainerContext);
|
|
6794
|
+
if (typeof document === "undefined") return null;
|
|
6795
|
+
const container = contextContainer ?? document.body;
|
|
6796
|
+
return ReactDOM.createPortal(children, container);
|
|
6797
|
+
};
|
|
6798
|
+
Portal.displayName = "Portal";
|
|
6799
|
+
var Portal_default = Portal;
|
|
6800
|
+
|
|
6801
|
+
// src/components/Modal/Modal.tsx
|
|
6802
|
+
import { jsx as jsx312 } from "react/jsx-runtime";
|
|
6767
6803
|
var ANIMATION_DURATION_MS = 200;
|
|
6768
6804
|
var Modal = (props) => {
|
|
6769
6805
|
const { isOpen, onClose, children } = props;
|
|
6770
|
-
const [mounted, setMounted] =
|
|
6771
|
-
const [visible, setVisible] =
|
|
6772
|
-
|
|
6806
|
+
const [mounted, setMounted] = React9.useState(false);
|
|
6807
|
+
const [visible, setVisible] = React9.useState(false);
|
|
6808
|
+
const boxRef = React9.useRef(null);
|
|
6809
|
+
React9.useEffect(() => {
|
|
6773
6810
|
if (isOpen) {
|
|
6774
6811
|
setMounted(true);
|
|
6775
6812
|
const t2 = setTimeout(() => setVisible(true), 1);
|
|
@@ -6783,19 +6820,20 @@ var Modal = (props) => {
|
|
|
6783
6820
|
if (!mounted) return null;
|
|
6784
6821
|
const stateClass = visible ? "enter" : "exit";
|
|
6785
6822
|
return createPortal(
|
|
6786
|
-
/* @__PURE__ */
|
|
6823
|
+
/* @__PURE__ */ jsx312(
|
|
6787
6824
|
"div",
|
|
6788
6825
|
{
|
|
6789
6826
|
className: clsx_default("lib-xplat-modal", "dim", stateClass),
|
|
6790
6827
|
onClick: onClose,
|
|
6791
|
-
children: /* @__PURE__ */
|
|
6828
|
+
children: /* @__PURE__ */ jsx312(
|
|
6792
6829
|
"div",
|
|
6793
6830
|
{
|
|
6831
|
+
ref: boxRef,
|
|
6794
6832
|
className: clsx_default("lib-xplat-modal", "modal-box", stateClass),
|
|
6795
6833
|
role: "dialog",
|
|
6796
6834
|
"aria-modal": "true",
|
|
6797
6835
|
onClick: (e) => e.stopPropagation(),
|
|
6798
|
-
children
|
|
6836
|
+
children: /* @__PURE__ */ jsx312(PortalProvider, { container: boxRef.current, children })
|
|
6799
6837
|
}
|
|
6800
6838
|
)
|
|
6801
6839
|
}
|
|
@@ -6807,9 +6845,9 @@ Modal.displayName = "Modal";
|
|
|
6807
6845
|
var Modal_default = Modal;
|
|
6808
6846
|
|
|
6809
6847
|
// src/components/DatePicker/SingleDatePicker/index.tsx
|
|
6810
|
-
import
|
|
6811
|
-
import { Fragment as
|
|
6812
|
-
var DayCell2 =
|
|
6848
|
+
import React10 from "react";
|
|
6849
|
+
import { Fragment as Fragment3, jsx as jsx313, jsxs as jsxs200 } from "react/jsx-runtime";
|
|
6850
|
+
var DayCell2 = React10.memo(
|
|
6813
6851
|
({
|
|
6814
6852
|
day,
|
|
6815
6853
|
disabled,
|
|
@@ -6819,7 +6857,7 @@ var DayCell2 = React9.memo(
|
|
|
6819
6857
|
isEnd,
|
|
6820
6858
|
inRange,
|
|
6821
6859
|
onSelect
|
|
6822
|
-
}) => /* @__PURE__ */
|
|
6860
|
+
}) => /* @__PURE__ */ jsx313(
|
|
6823
6861
|
"button",
|
|
6824
6862
|
{
|
|
6825
6863
|
type: "button",
|
|
@@ -6861,26 +6899,26 @@ var SingleDatePicker = (props) => {
|
|
|
6861
6899
|
initialYear,
|
|
6862
6900
|
initialMonth
|
|
6863
6901
|
);
|
|
6864
|
-
const [pickerMode, setPickerMode] =
|
|
6865
|
-
const [yearRangeStart, setYearRangeStart] =
|
|
6902
|
+
const [pickerMode, setPickerMode] = React10.useState("days");
|
|
6903
|
+
const [yearRangeStart, setYearRangeStart] = React10.useState(
|
|
6866
6904
|
Math.floor((initialYear ?? (/* @__PURE__ */ new Date()).getFullYear()) / 12) * 12
|
|
6867
6905
|
);
|
|
6868
|
-
const minTime =
|
|
6906
|
+
const minTime = React10.useMemo(
|
|
6869
6907
|
() => minDate ? new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate()).getTime() : -Infinity,
|
|
6870
6908
|
[minDate]
|
|
6871
6909
|
);
|
|
6872
|
-
const maxTime =
|
|
6910
|
+
const maxTime = React10.useMemo(
|
|
6873
6911
|
() => maxDate ? new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate()).getTime() : Infinity,
|
|
6874
6912
|
[maxDate]
|
|
6875
6913
|
);
|
|
6876
|
-
const highlightSet =
|
|
6914
|
+
const highlightSet = React10.useMemo(() => {
|
|
6877
6915
|
const set = /* @__PURE__ */ new Set();
|
|
6878
6916
|
for (const h of highlightDates) {
|
|
6879
6917
|
set.add(`${h.getFullYear()}-${h.getMonth()}-${h.getDate()}`);
|
|
6880
6918
|
}
|
|
6881
6919
|
return set;
|
|
6882
6920
|
}, [highlightDates]);
|
|
6883
|
-
const handleSelect =
|
|
6921
|
+
const handleSelect = React10.useCallback(
|
|
6884
6922
|
(date) => {
|
|
6885
6923
|
onChange?.(date);
|
|
6886
6924
|
},
|
|
@@ -6923,14 +6961,14 @@ var SingleDatePicker = (props) => {
|
|
|
6923
6961
|
className: clsx_default("lib-xplat-datepicker", "single"),
|
|
6924
6962
|
children: [
|
|
6925
6963
|
/* @__PURE__ */ jsxs200("div", { className: "datepicker-header", children: [
|
|
6926
|
-
/* @__PURE__ */
|
|
6927
|
-
/* @__PURE__ */
|
|
6928
|
-
/* @__PURE__ */
|
|
6964
|
+
/* @__PURE__ */ jsx313("button", { className: "datepicker-nav", onClick: handlePrev, type: "button", children: /* @__PURE__ */ jsx313(ChevronLeftIcon_default, {}) }),
|
|
6965
|
+
/* @__PURE__ */ jsx313("button", { className: "datepicker-title", onClick: handleTitleClick, type: "button", children: titleText }),
|
|
6966
|
+
/* @__PURE__ */ jsx313("button", { className: "datepicker-nav", onClick: handleNext, type: "button", children: /* @__PURE__ */ jsx313(ChevronRightIcon_default, {}) })
|
|
6929
6967
|
] }),
|
|
6930
6968
|
/* @__PURE__ */ jsxs200("div", { className: "datepicker-body", children: [
|
|
6931
|
-
pickerMode === "years" && /* @__PURE__ */
|
|
6969
|
+
pickerMode === "years" && /* @__PURE__ */ jsx313("div", { className: "datepicker-picker-grid", children: Array.from({ length: 12 }, (_, i) => {
|
|
6932
6970
|
const y = yearRangeStart + i;
|
|
6933
|
-
return /* @__PURE__ */
|
|
6971
|
+
return /* @__PURE__ */ jsx313(
|
|
6934
6972
|
"button",
|
|
6935
6973
|
{
|
|
6936
6974
|
type: "button",
|
|
@@ -6941,7 +6979,7 @@ var SingleDatePicker = (props) => {
|
|
|
6941
6979
|
y
|
|
6942
6980
|
);
|
|
6943
6981
|
}) }),
|
|
6944
|
-
pickerMode === "months" && /* @__PURE__ */
|
|
6982
|
+
pickerMode === "months" && /* @__PURE__ */ jsx313("div", { className: "datepicker-picker-grid", children: monthLabels.map((label, i) => /* @__PURE__ */ jsx313(
|
|
6945
6983
|
"button",
|
|
6946
6984
|
{
|
|
6947
6985
|
type: "button",
|
|
@@ -6951,8 +6989,8 @@ var SingleDatePicker = (props) => {
|
|
|
6951
6989
|
},
|
|
6952
6990
|
i
|
|
6953
6991
|
)) }),
|
|
6954
|
-
pickerMode === "days" && /* @__PURE__ */ jsxs200(
|
|
6955
|
-
/* @__PURE__ */
|
|
6992
|
+
pickerMode === "days" && /* @__PURE__ */ jsxs200(Fragment3, { children: [
|
|
6993
|
+
/* @__PURE__ */ jsx313("div", { className: "datepicker-weekdays", children: weekdays.map((label, i) => /* @__PURE__ */ jsx313(
|
|
6956
6994
|
"div",
|
|
6957
6995
|
{
|
|
6958
6996
|
className: clsx_default(
|
|
@@ -6964,7 +7002,7 @@ var SingleDatePicker = (props) => {
|
|
|
6964
7002
|
},
|
|
6965
7003
|
label
|
|
6966
7004
|
)) }),
|
|
6967
|
-
/* @__PURE__ */
|
|
7005
|
+
/* @__PURE__ */ jsx313("div", { className: "datepicker-grid", children: days.map((day, idx) => {
|
|
6968
7006
|
const t = day.date.getTime();
|
|
6969
7007
|
const disabled = t < minTime || t > maxTime;
|
|
6970
7008
|
const selected = value ? isSameDay(day.date, value) : false;
|
|
@@ -6974,7 +7012,7 @@ var SingleDatePicker = (props) => {
|
|
|
6974
7012
|
const isStart = hasRange ? isSameDay(day.date, rangeStart) : false;
|
|
6975
7013
|
const isEnd = hasRange ? isSameDay(day.date, rangeEnd) : false;
|
|
6976
7014
|
const inRangeVal = hasRange ? isInRange(day.date, rangeStart, rangeEnd) : false;
|
|
6977
|
-
return /* @__PURE__ */
|
|
7015
|
+
return /* @__PURE__ */ jsx313(
|
|
6978
7016
|
DayCell2,
|
|
6979
7017
|
{
|
|
6980
7018
|
day,
|
|
@@ -6999,7 +7037,7 @@ SingleDatePicker.displayName = "SingleDatePicker";
|
|
|
6999
7037
|
var SingleDatePicker_default = SingleDatePicker;
|
|
7000
7038
|
|
|
7001
7039
|
// src/components/DatePicker/InputDatePicker/index.tsx
|
|
7002
|
-
import { jsx as
|
|
7040
|
+
import { jsx as jsx314, jsxs as jsxs201 } from "react/jsx-runtime";
|
|
7003
7041
|
var formatDate = (date) => {
|
|
7004
7042
|
if (!date || !(date instanceof Date) || isNaN(date.getTime())) return "";
|
|
7005
7043
|
const y = date.getFullYear();
|
|
@@ -7009,8 +7047,8 @@ var formatDate = (date) => {
|
|
|
7009
7047
|
};
|
|
7010
7048
|
var InputDatePicker = (props) => {
|
|
7011
7049
|
const { value, onChange, minDate, maxDate, disabled, locale = "ko", placeholder } = props;
|
|
7012
|
-
const [isOpen, setIsOpen] =
|
|
7013
|
-
const [tempDate, setTempDate] =
|
|
7050
|
+
const [isOpen, setIsOpen] = React11.useState(false);
|
|
7051
|
+
const [tempDate, setTempDate] = React11.useState(value ?? /* @__PURE__ */ new Date());
|
|
7014
7052
|
const handleOpen = () => {
|
|
7015
7053
|
if (disabled) return;
|
|
7016
7054
|
setTempDate(value ?? /* @__PURE__ */ new Date());
|
|
@@ -7027,18 +7065,18 @@ var InputDatePicker = (props) => {
|
|
|
7027
7065
|
setIsOpen(false);
|
|
7028
7066
|
};
|
|
7029
7067
|
return /* @__PURE__ */ jsxs201("div", { className: clsx_default("lib-xplat-datepicker input-datepicker", disabled && "disabled"), children: [
|
|
7030
|
-
/* @__PURE__ */
|
|
7068
|
+
/* @__PURE__ */ jsx314("div", { className: "input-datepicker-trigger", onClick: handleOpen, children: /* @__PURE__ */ jsx314(
|
|
7031
7069
|
Input_default,
|
|
7032
7070
|
{
|
|
7033
7071
|
value: formatDate(value),
|
|
7034
7072
|
placeholder,
|
|
7035
|
-
suffix: /* @__PURE__ */
|
|
7073
|
+
suffix: /* @__PURE__ */ jsx314(CalenderIcon_default, {}),
|
|
7036
7074
|
disabled,
|
|
7037
7075
|
readOnly: true
|
|
7038
7076
|
}
|
|
7039
7077
|
) }),
|
|
7040
|
-
/* @__PURE__ */
|
|
7041
|
-
/* @__PURE__ */
|
|
7078
|
+
/* @__PURE__ */ jsx314(Modal_default, { isOpen, onClose: handleClose, children: /* @__PURE__ */ jsxs201("div", { className: "lib-xplat-popup-datepicker-card", children: [
|
|
7079
|
+
/* @__PURE__ */ jsx314("div", { className: "popup-datepicker-content", children: /* @__PURE__ */ jsx314(
|
|
7042
7080
|
SingleDatePicker_default,
|
|
7043
7081
|
{
|
|
7044
7082
|
value: tempDate,
|
|
@@ -7049,8 +7087,8 @@ var InputDatePicker = (props) => {
|
|
|
7049
7087
|
}
|
|
7050
7088
|
) }),
|
|
7051
7089
|
/* @__PURE__ */ jsxs201("div", { className: "popup-datepicker-footer", children: [
|
|
7052
|
-
/* @__PURE__ */
|
|
7053
|
-
/* @__PURE__ */
|
|
7090
|
+
/* @__PURE__ */ jsx314(Button_default, { type: "secondary", onClick: handleClose, children: locale === "ko" ? "\uCDE8\uC18C" : "Cancel" }),
|
|
7091
|
+
/* @__PURE__ */ jsx314(Button_default, { type: "primary", onClick: handleApply, children: locale === "ko" ? "\uC801\uC6A9" : "Apply" })
|
|
7054
7092
|
] })
|
|
7055
7093
|
] }) })
|
|
7056
7094
|
] });
|
|
@@ -7059,20 +7097,20 @@ InputDatePicker.displayName = "InputDatePicker";
|
|
|
7059
7097
|
var InputDatePicker_default = InputDatePicker;
|
|
7060
7098
|
|
|
7061
7099
|
// src/components/DatePicker/PopupPicker/index.tsx
|
|
7062
|
-
import
|
|
7100
|
+
import React15 from "react";
|
|
7063
7101
|
|
|
7064
7102
|
// src/components/DatePicker/RangePicker/index.tsx
|
|
7065
|
-
import
|
|
7103
|
+
import React14 from "react";
|
|
7066
7104
|
|
|
7067
7105
|
// src/components/Tab/Tab.tsx
|
|
7068
|
-
import
|
|
7106
|
+
import React13 from "react";
|
|
7069
7107
|
|
|
7070
7108
|
// src/components/Tab/TabItem.tsx
|
|
7071
|
-
import
|
|
7072
|
-
import { jsx as
|
|
7073
|
-
var TabItem =
|
|
7109
|
+
import React12 from "react";
|
|
7110
|
+
import { jsx as jsx315 } from "react/jsx-runtime";
|
|
7111
|
+
var TabItem = React12.forwardRef((props, ref) => {
|
|
7074
7112
|
const { isActive, title, onClick } = props;
|
|
7075
|
-
return /* @__PURE__ */
|
|
7113
|
+
return /* @__PURE__ */ jsx315(
|
|
7076
7114
|
"div",
|
|
7077
7115
|
{
|
|
7078
7116
|
ref,
|
|
@@ -7086,25 +7124,25 @@ TabItem.displayName = "TabItem";
|
|
|
7086
7124
|
var TabItem_default = TabItem;
|
|
7087
7125
|
|
|
7088
7126
|
// src/components/Tab/Tab.tsx
|
|
7089
|
-
import { jsx as
|
|
7127
|
+
import { jsx as jsx316, jsxs as jsxs202 } from "react/jsx-runtime";
|
|
7090
7128
|
var Tab = (props) => {
|
|
7091
7129
|
const { activeIndex, onChange, tabs, type, size = "md" } = props;
|
|
7092
|
-
const [underlineStyle, setUnderlineStyle] =
|
|
7130
|
+
const [underlineStyle, setUnderlineStyle] = React13.useState({
|
|
7093
7131
|
left: 0,
|
|
7094
7132
|
width: 0
|
|
7095
7133
|
});
|
|
7096
|
-
const itemRefs =
|
|
7134
|
+
const itemRefs = React13.useRef([]);
|
|
7097
7135
|
const handleChangeActiveTab = (tabItem, tabIdx) => {
|
|
7098
7136
|
onChange(tabItem, tabIdx);
|
|
7099
7137
|
};
|
|
7100
|
-
|
|
7138
|
+
React13.useEffect(() => {
|
|
7101
7139
|
const el = itemRefs.current[activeIndex];
|
|
7102
7140
|
if (el) {
|
|
7103
7141
|
setUnderlineStyle({ left: el.offsetLeft, width: el.offsetWidth });
|
|
7104
7142
|
}
|
|
7105
7143
|
}, [activeIndex, tabs.length]);
|
|
7106
7144
|
return /* @__PURE__ */ jsxs202("div", { className: clsx_default("lib-xplat-tab", `type-${type}`, size), children: [
|
|
7107
|
-
tabs.map((tab, idx) => /* @__PURE__ */
|
|
7145
|
+
tabs.map((tab, idx) => /* @__PURE__ */ jsx316(
|
|
7108
7146
|
TabItem_default,
|
|
7109
7147
|
{
|
|
7110
7148
|
onClick: () => handleChangeActiveTab(tab, idx),
|
|
@@ -7116,7 +7154,7 @@ var Tab = (props) => {
|
|
|
7116
7154
|
},
|
|
7117
7155
|
`${tab.value}_${idx}`
|
|
7118
7156
|
)),
|
|
7119
|
-
type === "toggle" && /* @__PURE__ */
|
|
7157
|
+
type === "toggle" && /* @__PURE__ */ jsx316(
|
|
7120
7158
|
"div",
|
|
7121
7159
|
{
|
|
7122
7160
|
className: "tab-toggle-underline",
|
|
@@ -7132,7 +7170,7 @@ Tab.displayName = "Tab";
|
|
|
7132
7170
|
var Tab_default = Tab;
|
|
7133
7171
|
|
|
7134
7172
|
// src/components/DatePicker/RangePicker/index.tsx
|
|
7135
|
-
import { jsx as
|
|
7173
|
+
import { jsx as jsx317, jsxs as jsxs203 } from "react/jsx-runtime";
|
|
7136
7174
|
var RangePicker = (props) => {
|
|
7137
7175
|
const {
|
|
7138
7176
|
startDate,
|
|
@@ -7142,7 +7180,7 @@ var RangePicker = (props) => {
|
|
|
7142
7180
|
maxDate,
|
|
7143
7181
|
locale = "ko"
|
|
7144
7182
|
} = props;
|
|
7145
|
-
const [activeTab, setActiveTab] =
|
|
7183
|
+
const [activeTab, setActiveTab] = React14.useState("start");
|
|
7146
7184
|
const handleStartChange = (date) => {
|
|
7147
7185
|
if (!date) return;
|
|
7148
7186
|
const newStart = date > endDate ? endDate : date;
|
|
@@ -7156,7 +7194,7 @@ var RangePicker = (props) => {
|
|
|
7156
7194
|
const startMaxDate = maxDate && endDate < maxDate ? endDate : endDate;
|
|
7157
7195
|
const endMinDate = minDate && startDate > minDate ? startDate : startDate;
|
|
7158
7196
|
return /* @__PURE__ */ jsxs203("div", { className: clsx_default("lib-xplat-datepicker", "range"), children: [
|
|
7159
|
-
/* @__PURE__ */
|
|
7197
|
+
/* @__PURE__ */ jsx317("div", { className: "datepicker-range-tabs", children: /* @__PURE__ */ jsx317(
|
|
7160
7198
|
Tab_default,
|
|
7161
7199
|
{
|
|
7162
7200
|
activeIndex: activeTab === "start" ? 0 : 1,
|
|
@@ -7170,7 +7208,7 @@ var RangePicker = (props) => {
|
|
|
7170
7208
|
}
|
|
7171
7209
|
) }),
|
|
7172
7210
|
/* @__PURE__ */ jsxs203("div", { className: "datepicker-range-panels", children: [
|
|
7173
|
-
/* @__PURE__ */
|
|
7211
|
+
/* @__PURE__ */ jsx317(
|
|
7174
7212
|
SingleDatePicker_default,
|
|
7175
7213
|
{
|
|
7176
7214
|
value: startDate,
|
|
@@ -7182,7 +7220,7 @@ var RangePicker = (props) => {
|
|
|
7182
7220
|
locale
|
|
7183
7221
|
}
|
|
7184
7222
|
),
|
|
7185
|
-
/* @__PURE__ */
|
|
7223
|
+
/* @__PURE__ */ jsx317(
|
|
7186
7224
|
SingleDatePicker_default,
|
|
7187
7225
|
{
|
|
7188
7226
|
value: endDate,
|
|
@@ -7195,7 +7233,7 @@ var RangePicker = (props) => {
|
|
|
7195
7233
|
}
|
|
7196
7234
|
)
|
|
7197
7235
|
] }),
|
|
7198
|
-
/* @__PURE__ */
|
|
7236
|
+
/* @__PURE__ */ jsx317("div", { className: "datepicker-range-mobile", children: activeTab === "start" ? /* @__PURE__ */ jsx317(
|
|
7199
7237
|
SingleDatePicker_default,
|
|
7200
7238
|
{
|
|
7201
7239
|
value: startDate,
|
|
@@ -7206,7 +7244,7 @@ var RangePicker = (props) => {
|
|
|
7206
7244
|
rangeEnd: endDate,
|
|
7207
7245
|
locale
|
|
7208
7246
|
}
|
|
7209
|
-
) : /* @__PURE__ */
|
|
7247
|
+
) : /* @__PURE__ */ jsx317(
|
|
7210
7248
|
SingleDatePicker_default,
|
|
7211
7249
|
{
|
|
7212
7250
|
value: endDate,
|
|
@@ -7224,10 +7262,10 @@ RangePicker.displayName = "RangePicker";
|
|
|
7224
7262
|
var RangePicker_default = RangePicker;
|
|
7225
7263
|
|
|
7226
7264
|
// src/components/DatePicker/PopupPicker/index.tsx
|
|
7227
|
-
import { jsx as
|
|
7265
|
+
import { jsx as jsx318, jsxs as jsxs204 } from "react/jsx-runtime";
|
|
7228
7266
|
var PopupPicker = (props) => {
|
|
7229
7267
|
const { component, type, locale } = props;
|
|
7230
|
-
const [isOpen, setIsOpen] =
|
|
7268
|
+
const [isOpen, setIsOpen] = React15.useState(false);
|
|
7231
7269
|
const handleClick = () => setIsOpen(true);
|
|
7232
7270
|
const handleClose = () => setIsOpen(false);
|
|
7233
7271
|
const handleSingleChange = (date) => {
|
|
@@ -7236,10 +7274,10 @@ var PopupPicker = (props) => {
|
|
|
7236
7274
|
handleClose();
|
|
7237
7275
|
};
|
|
7238
7276
|
return /* @__PURE__ */ jsxs204("div", { className: "lib-xplat-popup-datepicker", children: [
|
|
7239
|
-
|
|
7240
|
-
/* @__PURE__ */
|
|
7277
|
+
React15.cloneElement(component, { onClick: handleClick }),
|
|
7278
|
+
/* @__PURE__ */ jsx318(Modal_default, { isOpen, onClose: handleClose, children: /* @__PURE__ */ jsxs204("div", { className: clsx_default("lib-xplat-popup-datepicker-card", type === "range" && "range-mode"), children: [
|
|
7241
7279
|
/* @__PURE__ */ jsxs204("div", { className: "popup-datepicker-content", children: [
|
|
7242
|
-
type === "single" && /* @__PURE__ */
|
|
7280
|
+
type === "single" && /* @__PURE__ */ jsx318(
|
|
7243
7281
|
SingleDatePicker_default,
|
|
7244
7282
|
{
|
|
7245
7283
|
value: props.value,
|
|
@@ -7249,7 +7287,7 @@ var PopupPicker = (props) => {
|
|
|
7249
7287
|
locale
|
|
7250
7288
|
}
|
|
7251
7289
|
),
|
|
7252
|
-
type === "range" && /* @__PURE__ */
|
|
7290
|
+
type === "range" && /* @__PURE__ */ jsx318(
|
|
7253
7291
|
RangePicker_default,
|
|
7254
7292
|
{
|
|
7255
7293
|
startDate: props.startDate,
|
|
@@ -7262,7 +7300,7 @@ var PopupPicker = (props) => {
|
|
|
7262
7300
|
)
|
|
7263
7301
|
] }),
|
|
7264
7302
|
/* @__PURE__ */ jsxs204("div", { className: "popup-datepicker-footer", children: [
|
|
7265
|
-
/* @__PURE__ */
|
|
7303
|
+
/* @__PURE__ */ jsx318(
|
|
7266
7304
|
Button_default,
|
|
7267
7305
|
{
|
|
7268
7306
|
type: "secondary",
|
|
@@ -7270,7 +7308,7 @@ var PopupPicker = (props) => {
|
|
|
7270
7308
|
children: locale === "ko" ? "\uCDE8\uC18C" : "Cancel"
|
|
7271
7309
|
}
|
|
7272
7310
|
),
|
|
7273
|
-
/* @__PURE__ */
|
|
7311
|
+
/* @__PURE__ */ jsx318(Button_default, { type: "primary", onClick: handleClose, children: locale === "ko" ? "\uC801\uC6A9" : "Apply" })
|
|
7274
7312
|
] })
|
|
7275
7313
|
] }) })
|
|
7276
7314
|
] });
|
|
@@ -7279,10 +7317,10 @@ PopupPicker.displayName = "PopupPicker";
|
|
|
7279
7317
|
var PopupPicker_default = PopupPicker;
|
|
7280
7318
|
|
|
7281
7319
|
// src/components/Divider/Divider.tsx
|
|
7282
|
-
import { jsx as
|
|
7320
|
+
import { jsx as jsx319 } from "react/jsx-runtime";
|
|
7283
7321
|
var Divider = (props) => {
|
|
7284
7322
|
const { orientation = "horizontal" } = props;
|
|
7285
|
-
return /* @__PURE__ */
|
|
7323
|
+
return /* @__PURE__ */ jsx319(
|
|
7286
7324
|
"div",
|
|
7287
7325
|
{
|
|
7288
7326
|
className: clsx_default("lib-xplat-divider", orientation),
|
|
@@ -7295,15 +7333,15 @@ Divider.displayName = "Divider";
|
|
|
7295
7333
|
var Divider_default = Divider;
|
|
7296
7334
|
|
|
7297
7335
|
// src/components/Drawer/Drawer.tsx
|
|
7298
|
-
import
|
|
7336
|
+
import React16 from "react";
|
|
7299
7337
|
import { createPortal as createPortal2 } from "react-dom";
|
|
7300
|
-
import { jsx as
|
|
7338
|
+
import { jsx as jsx320, jsxs as jsxs205 } from "react/jsx-runtime";
|
|
7301
7339
|
var ANIMATION_DURATION_MS2 = 250;
|
|
7302
7340
|
var Drawer = (props) => {
|
|
7303
7341
|
const { isOpen, onClose, placement = "right", width = 320, title, children } = props;
|
|
7304
|
-
const [mounted, setMounted] =
|
|
7305
|
-
const [visible, setVisible] =
|
|
7306
|
-
|
|
7342
|
+
const [mounted, setMounted] = React16.useState(false);
|
|
7343
|
+
const [visible, setVisible] = React16.useState(false);
|
|
7344
|
+
React16.useEffect(() => {
|
|
7307
7345
|
if (isOpen) {
|
|
7308
7346
|
setMounted(true);
|
|
7309
7347
|
const t2 = setTimeout(() => setVisible(true), 1);
|
|
@@ -7318,7 +7356,7 @@ var Drawer = (props) => {
|
|
|
7318
7356
|
const stateClass = visible ? "enter" : "exit";
|
|
7319
7357
|
const widthValue = typeof width === "number" ? `${width}px` : width;
|
|
7320
7358
|
return createPortal2(
|
|
7321
|
-
/* @__PURE__ */
|
|
7359
|
+
/* @__PURE__ */ jsx320(
|
|
7322
7360
|
"div",
|
|
7323
7361
|
{
|
|
7324
7362
|
className: clsx_default("lib-xplat-drawer-overlay", stateClass),
|
|
@@ -7333,10 +7371,10 @@ var Drawer = (props) => {
|
|
|
7333
7371
|
onClick: (e) => e.stopPropagation(),
|
|
7334
7372
|
children: [
|
|
7335
7373
|
title && /* @__PURE__ */ jsxs205("div", { className: "drawer-header", children: [
|
|
7336
|
-
/* @__PURE__ */
|
|
7337
|
-
/* @__PURE__ */
|
|
7374
|
+
/* @__PURE__ */ jsx320("span", { className: "drawer-title", children: title }),
|
|
7375
|
+
/* @__PURE__ */ jsx320("button", { className: "close-btn", onClick: onClose, "aria-label": "\uB2EB\uAE30", children: "\xD7" })
|
|
7338
7376
|
] }),
|
|
7339
|
-
/* @__PURE__ */
|
|
7377
|
+
/* @__PURE__ */ jsx320("div", { className: "drawer-body", children })
|
|
7340
7378
|
]
|
|
7341
7379
|
}
|
|
7342
7380
|
)
|
|
@@ -7349,16 +7387,16 @@ Drawer.displayName = "Drawer";
|
|
|
7349
7387
|
var Drawer_default = Drawer;
|
|
7350
7388
|
|
|
7351
7389
|
// src/components/Dropdown/Dropdown.tsx
|
|
7352
|
-
import
|
|
7390
|
+
import React19 from "react";
|
|
7353
7391
|
|
|
7354
7392
|
// src/tokens/hooks/useAutoPosition.ts
|
|
7355
|
-
import
|
|
7393
|
+
import React17 from "react";
|
|
7356
7394
|
var useAutoPosition = (triggerRef, popRef, enabled = true) => {
|
|
7357
|
-
const [position, setPosition] =
|
|
7395
|
+
const [position, setPosition] = React17.useState({
|
|
7358
7396
|
position: {},
|
|
7359
7397
|
direction: "bottom"
|
|
7360
7398
|
});
|
|
7361
|
-
const calculatePosition =
|
|
7399
|
+
const calculatePosition = React17.useCallback(() => {
|
|
7362
7400
|
if (!triggerRef.current || !popRef.current) return;
|
|
7363
7401
|
const triggerRect = triggerRef.current.getBoundingClientRect();
|
|
7364
7402
|
const popRect = popRef.current.getBoundingClientRect();
|
|
@@ -7382,9 +7420,12 @@ var useAutoPosition = (triggerRef, popRef, enabled = true) => {
|
|
|
7382
7420
|
direction
|
|
7383
7421
|
});
|
|
7384
7422
|
}, [triggerRef, popRef]);
|
|
7385
|
-
|
|
7423
|
+
React17.useLayoutEffect(() => {
|
|
7386
7424
|
if (!enabled) return;
|
|
7387
7425
|
calculatePosition();
|
|
7426
|
+
}, [calculatePosition, enabled]);
|
|
7427
|
+
React17.useEffect(() => {
|
|
7428
|
+
if (!enabled) return;
|
|
7388
7429
|
window.addEventListener("resize", calculatePosition);
|
|
7389
7430
|
window.addEventListener("scroll", calculatePosition, true);
|
|
7390
7431
|
return () => {
|
|
@@ -7397,9 +7438,9 @@ var useAutoPosition = (triggerRef, popRef, enabled = true) => {
|
|
|
7397
7438
|
var useAutoPosition_default = useAutoPosition;
|
|
7398
7439
|
|
|
7399
7440
|
// src/tokens/hooks/useClickOutside.ts
|
|
7400
|
-
import
|
|
7441
|
+
import React18 from "react";
|
|
7401
7442
|
var useClickOutside = (refs, handler, enabled = true) => {
|
|
7402
|
-
|
|
7443
|
+
React18.useEffect(() => {
|
|
7403
7444
|
if (!enabled) return;
|
|
7404
7445
|
const refArray = Array.isArray(refs) ? refs : [refs];
|
|
7405
7446
|
const listener = (event) => {
|
|
@@ -7422,17 +7463,17 @@ var useClickOutside = (refs, handler, enabled = true) => {
|
|
|
7422
7463
|
var useClickOutside_default = useClickOutside;
|
|
7423
7464
|
|
|
7424
7465
|
// src/components/Dropdown/Dropdown.tsx
|
|
7425
|
-
import { jsx as
|
|
7466
|
+
import { jsx as jsx321, jsxs as jsxs206 } from "react/jsx-runtime";
|
|
7426
7467
|
var Dropdown = (props) => {
|
|
7427
7468
|
const { items, children } = props;
|
|
7428
|
-
const [isOpen, setIsOpen] =
|
|
7429
|
-
const [mounted, setMounted] =
|
|
7430
|
-
const [visible, setVisible] =
|
|
7431
|
-
const triggerRef =
|
|
7432
|
-
const menuRef =
|
|
7433
|
-
const { position, direction } = useAutoPosition_default(triggerRef, menuRef,
|
|
7434
|
-
useClickOutside_default([triggerRef, menuRef], () => setIsOpen(false));
|
|
7435
|
-
|
|
7469
|
+
const [isOpen, setIsOpen] = React19.useState(false);
|
|
7470
|
+
const [mounted, setMounted] = React19.useState(false);
|
|
7471
|
+
const [visible, setVisible] = React19.useState(false);
|
|
7472
|
+
const triggerRef = React19.useRef(null);
|
|
7473
|
+
const menuRef = React19.useRef(null);
|
|
7474
|
+
const { position, direction } = useAutoPosition_default(triggerRef, menuRef, mounted);
|
|
7475
|
+
useClickOutside_default([triggerRef, menuRef], () => setIsOpen(false), isOpen);
|
|
7476
|
+
React19.useEffect(() => {
|
|
7436
7477
|
if (isOpen) {
|
|
7437
7478
|
setMounted(true);
|
|
7438
7479
|
const t2 = setTimeout(() => setVisible(true), 1);
|
|
@@ -7448,7 +7489,7 @@ var Dropdown = (props) => {
|
|
|
7448
7489
|
setIsOpen(false);
|
|
7449
7490
|
};
|
|
7450
7491
|
return /* @__PURE__ */ jsxs206("div", { className: "lib-xplat-dropdown", children: [
|
|
7451
|
-
/* @__PURE__ */
|
|
7492
|
+
/* @__PURE__ */ jsx321(
|
|
7452
7493
|
"div",
|
|
7453
7494
|
{
|
|
7454
7495
|
ref: triggerRef,
|
|
@@ -7457,14 +7498,14 @@ var Dropdown = (props) => {
|
|
|
7457
7498
|
children
|
|
7458
7499
|
}
|
|
7459
7500
|
),
|
|
7460
|
-
mounted && /* @__PURE__ */
|
|
7501
|
+
mounted && /* @__PURE__ */ jsx321(Portal_default, { children: /* @__PURE__ */ jsx321(
|
|
7461
7502
|
"div",
|
|
7462
7503
|
{
|
|
7463
7504
|
ref: menuRef,
|
|
7464
|
-
className: clsx_default("dropdown-menu", direction, { visible }),
|
|
7505
|
+
className: clsx_default("lib-xplat-dropdown-menu", direction, { visible }),
|
|
7465
7506
|
style: { top: position.top, left: position.left },
|
|
7466
7507
|
role: "menu",
|
|
7467
|
-
children: items.map((item) => /* @__PURE__ */
|
|
7508
|
+
children: items.map((item) => /* @__PURE__ */ jsx321(
|
|
7468
7509
|
"button",
|
|
7469
7510
|
{
|
|
7470
7511
|
className: clsx_default("dropdown-item", {
|
|
@@ -7479,30 +7520,30 @@ var Dropdown = (props) => {
|
|
|
7479
7520
|
item.key
|
|
7480
7521
|
))
|
|
7481
7522
|
}
|
|
7482
|
-
)
|
|
7523
|
+
) })
|
|
7483
7524
|
] });
|
|
7484
7525
|
};
|
|
7485
7526
|
Dropdown.displayName = "Dropdown";
|
|
7486
7527
|
var Dropdown_default = Dropdown;
|
|
7487
7528
|
|
|
7488
7529
|
// src/components/EmptyState/EmptyState.tsx
|
|
7489
|
-
import { jsx as
|
|
7530
|
+
import { jsx as jsx322, jsxs as jsxs207 } from "react/jsx-runtime";
|
|
7490
7531
|
var EmptyState = (props) => {
|
|
7491
7532
|
const { icon, title = "\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4", description, action } = props;
|
|
7492
7533
|
return /* @__PURE__ */ jsxs207("div", { className: "lib-xplat-empty-state", children: [
|
|
7493
|
-
icon && /* @__PURE__ */
|
|
7494
|
-
!icon && /* @__PURE__ */
|
|
7495
|
-
/* @__PURE__ */
|
|
7496
|
-
description && /* @__PURE__ */
|
|
7497
|
-
action && /* @__PURE__ */
|
|
7534
|
+
icon && /* @__PURE__ */ jsx322("div", { className: "empty-icon", children: icon }),
|
|
7535
|
+
!icon && /* @__PURE__ */ jsx322("div", { className: "empty-icon", children: /* @__PURE__ */ jsx322("svg", { viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsx322("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" }) }) }),
|
|
7536
|
+
/* @__PURE__ */ jsx322("p", { className: "empty-title", children: title }),
|
|
7537
|
+
description && /* @__PURE__ */ jsx322("p", { className: "empty-description", children: description }),
|
|
7538
|
+
action && /* @__PURE__ */ jsx322("div", { className: "empty-action", children: action })
|
|
7498
7539
|
] });
|
|
7499
7540
|
};
|
|
7500
7541
|
EmptyState.displayName = "EmptyState";
|
|
7501
7542
|
var EmptyState_default = EmptyState;
|
|
7502
7543
|
|
|
7503
7544
|
// src/components/FileUpload/FileUpload.tsx
|
|
7504
|
-
import
|
|
7505
|
-
import { jsx as
|
|
7545
|
+
import React20 from "react";
|
|
7546
|
+
import { jsx as jsx323, jsxs as jsxs208 } from "react/jsx-runtime";
|
|
7506
7547
|
var FileUpload = (props) => {
|
|
7507
7548
|
const {
|
|
7508
7549
|
accept,
|
|
@@ -7512,8 +7553,8 @@ var FileUpload = (props) => {
|
|
|
7512
7553
|
label = "\uD30C\uC77C\uC744 \uB4DC\uB798\uADF8\uD558\uAC70\uB098 \uD074\uB9AD\uD558\uC5EC \uC5C5\uB85C\uB4DC",
|
|
7513
7554
|
description
|
|
7514
7555
|
} = props;
|
|
7515
|
-
const [isDragOver, setIsDragOver] =
|
|
7516
|
-
const inputRef =
|
|
7556
|
+
const [isDragOver, setIsDragOver] = React20.useState(false);
|
|
7557
|
+
const inputRef = React20.useRef(null);
|
|
7517
7558
|
const handleFiles = (fileList) => {
|
|
7518
7559
|
let files = Array.from(fileList);
|
|
7519
7560
|
if (maxSize) {
|
|
@@ -7552,7 +7593,7 @@ var FileUpload = (props) => {
|
|
|
7552
7593
|
onDragLeave: handleDragLeave,
|
|
7553
7594
|
onClick: () => inputRef.current?.click(),
|
|
7554
7595
|
children: [
|
|
7555
|
-
/* @__PURE__ */
|
|
7596
|
+
/* @__PURE__ */ jsx323(
|
|
7556
7597
|
"input",
|
|
7557
7598
|
{
|
|
7558
7599
|
ref: inputRef,
|
|
@@ -7562,9 +7603,9 @@ var FileUpload = (props) => {
|
|
|
7562
7603
|
onChange: handleChange
|
|
7563
7604
|
}
|
|
7564
7605
|
),
|
|
7565
|
-
/* @__PURE__ */
|
|
7566
|
-
/* @__PURE__ */
|
|
7567
|
-
description && /* @__PURE__ */
|
|
7606
|
+
/* @__PURE__ */ jsx323("div", { className: "upload-icon", children: /* @__PURE__ */ jsx323(UploadIcon_default, {}) }),
|
|
7607
|
+
/* @__PURE__ */ jsx323("p", { className: "upload-label", children: label }),
|
|
7608
|
+
description && /* @__PURE__ */ jsx323("p", { className: "upload-description", children: description })
|
|
7568
7609
|
]
|
|
7569
7610
|
}
|
|
7570
7611
|
);
|
|
@@ -7573,10 +7614,10 @@ FileUpload.displayName = "FileUpload";
|
|
|
7573
7614
|
var FileUpload_default = FileUpload;
|
|
7574
7615
|
|
|
7575
7616
|
// src/components/HtmlTypeWriter/HtmlTypeWriter.tsx
|
|
7576
|
-
import
|
|
7617
|
+
import React22 from "react";
|
|
7577
7618
|
|
|
7578
7619
|
// src/components/HtmlTypeWriter/utils.ts
|
|
7579
|
-
import
|
|
7620
|
+
import React21 from "react";
|
|
7580
7621
|
var voidTags = /* @__PURE__ */ new Set([
|
|
7581
7622
|
"br",
|
|
7582
7623
|
"img",
|
|
@@ -7644,41 +7685,41 @@ var convertNodeToReactWithRange = (node, typedLen, rangeMap) => {
|
|
|
7644
7685
|
props[attr.name] = attr.value;
|
|
7645
7686
|
});
|
|
7646
7687
|
if (voidTags.has(tag)) {
|
|
7647
|
-
return
|
|
7688
|
+
return React21.createElement(tag, props);
|
|
7648
7689
|
}
|
|
7649
7690
|
const children = Array.from(element.childNodes).map((child) => convertNodeToReactWithRange(child, typedLen, rangeMap)).filter((n) => n != null);
|
|
7650
|
-
return
|
|
7691
|
+
return React21.createElement(tag, props, ...children);
|
|
7651
7692
|
};
|
|
7652
7693
|
var htmlToReactProgressive = (root, typedLen, rangeMap) => {
|
|
7653
7694
|
const nodes = Array.from(root.childNodes).map((child, idx) => {
|
|
7654
7695
|
const node = convertNodeToReactWithRange(child, typedLen, rangeMap);
|
|
7655
|
-
return node == null ? null :
|
|
7696
|
+
return node == null ? null : React21.createElement(React21.Fragment, { key: idx }, node);
|
|
7656
7697
|
}).filter(Boolean);
|
|
7657
7698
|
return nodes.length === 0 ? null : nodes;
|
|
7658
7699
|
};
|
|
7659
7700
|
|
|
7660
7701
|
// src/components/HtmlTypeWriter/HtmlTypeWriter.tsx
|
|
7661
|
-
import { jsx as
|
|
7702
|
+
import { jsx as jsx324 } from "react/jsx-runtime";
|
|
7662
7703
|
var HtmlTypeWriter = ({
|
|
7663
7704
|
html,
|
|
7664
7705
|
duration = 20,
|
|
7665
7706
|
onDone,
|
|
7666
7707
|
onChange
|
|
7667
7708
|
}) => {
|
|
7668
|
-
const [typedLen, setTypedLen] =
|
|
7669
|
-
const doneCalledRef =
|
|
7670
|
-
const { doc, rangeMap, totalLength } =
|
|
7709
|
+
const [typedLen, setTypedLen] = React22.useState(0);
|
|
7710
|
+
const doneCalledRef = React22.useRef(false);
|
|
7711
|
+
const { doc, rangeMap, totalLength } = React22.useMemo(() => {
|
|
7671
7712
|
if (typeof window === "undefined") return { doc: null, rangeMap: /* @__PURE__ */ new Map(), totalLength: 0 };
|
|
7672
7713
|
const decoded = decodeHtmlEntities(html);
|
|
7673
7714
|
const doc2 = new DOMParser().parseFromString(decoded, "text/html");
|
|
7674
7715
|
const { rangeMap: rangeMap2, totalLength: totalLength2 } = buildRangeMap(doc2.body);
|
|
7675
7716
|
return { doc: doc2, rangeMap: rangeMap2, totalLength: totalLength2 };
|
|
7676
7717
|
}, [html]);
|
|
7677
|
-
|
|
7718
|
+
React22.useEffect(() => {
|
|
7678
7719
|
setTypedLen(0);
|
|
7679
7720
|
doneCalledRef.current = false;
|
|
7680
7721
|
}, [html]);
|
|
7681
|
-
|
|
7722
|
+
React22.useEffect(() => {
|
|
7682
7723
|
if (!totalLength) return;
|
|
7683
7724
|
if (typedLen >= totalLength) return;
|
|
7684
7725
|
const timer = window.setInterval(() => {
|
|
@@ -7686,33 +7727,33 @@ var HtmlTypeWriter = ({
|
|
|
7686
7727
|
}, duration);
|
|
7687
7728
|
return () => window.clearInterval(timer);
|
|
7688
7729
|
}, [typedLen, totalLength, duration]);
|
|
7689
|
-
|
|
7730
|
+
React22.useEffect(() => {
|
|
7690
7731
|
if (typedLen > 0 && typedLen < totalLength) {
|
|
7691
7732
|
onChange?.();
|
|
7692
7733
|
}
|
|
7693
7734
|
}, [typedLen, totalLength, onChange]);
|
|
7694
|
-
|
|
7735
|
+
React22.useEffect(() => {
|
|
7695
7736
|
if (typedLen === totalLength && totalLength > 0 && !doneCalledRef.current) {
|
|
7696
7737
|
doneCalledRef.current = true;
|
|
7697
7738
|
onDone?.();
|
|
7698
7739
|
}
|
|
7699
7740
|
}, [typedLen, totalLength, onDone]);
|
|
7700
|
-
const parsed =
|
|
7741
|
+
const parsed = React22.useMemo(
|
|
7701
7742
|
() => doc ? htmlToReactProgressive(doc.body, typedLen, rangeMap) : null,
|
|
7702
7743
|
[doc, typedLen, rangeMap]
|
|
7703
7744
|
);
|
|
7704
|
-
return /* @__PURE__ */
|
|
7745
|
+
return /* @__PURE__ */ jsx324("div", { className: "lib-xplat-htmlTypewriter", children: parsed });
|
|
7705
7746
|
};
|
|
7706
7747
|
HtmlTypeWriter.displayName = "HtmlTypeWriter";
|
|
7707
7748
|
var HtmlTypeWriter_default = HtmlTypeWriter;
|
|
7708
7749
|
|
|
7709
7750
|
// src/components/ImageSelector/ImageSelector.tsx
|
|
7710
|
-
import
|
|
7711
|
-
import { jsx as
|
|
7751
|
+
import React23 from "react";
|
|
7752
|
+
import { jsx as jsx325, jsxs as jsxs209 } from "react/jsx-runtime";
|
|
7712
7753
|
var ImageSelector = (props) => {
|
|
7713
7754
|
const { value, label, onChange } = props;
|
|
7714
|
-
const [previewUrl, setPreviewUrl] =
|
|
7715
|
-
|
|
7755
|
+
const [previewUrl, setPreviewUrl] = React23.useState();
|
|
7756
|
+
React23.useEffect(() => {
|
|
7716
7757
|
if (!value) {
|
|
7717
7758
|
setPreviewUrl(void 0);
|
|
7718
7759
|
return;
|
|
@@ -7721,7 +7762,7 @@ var ImageSelector = (props) => {
|
|
|
7721
7762
|
setPreviewUrl(url);
|
|
7722
7763
|
return () => URL.revokeObjectURL(url);
|
|
7723
7764
|
}, [value]);
|
|
7724
|
-
const inputRef =
|
|
7765
|
+
const inputRef = React23.useRef(null);
|
|
7725
7766
|
const handleFileChange = (e) => {
|
|
7726
7767
|
const selectedFile = e.target.files?.[0];
|
|
7727
7768
|
if (selectedFile) {
|
|
@@ -7735,7 +7776,7 @@ var ImageSelector = (props) => {
|
|
|
7735
7776
|
inputRef.current?.click();
|
|
7736
7777
|
};
|
|
7737
7778
|
return /* @__PURE__ */ jsxs209("div", { className: `lib-xplat-imageselector${value ? "" : " none-value"}`, children: [
|
|
7738
|
-
/* @__PURE__ */
|
|
7779
|
+
/* @__PURE__ */ jsx325(
|
|
7739
7780
|
"input",
|
|
7740
7781
|
{
|
|
7741
7782
|
type: "file",
|
|
@@ -7746,12 +7787,12 @@ var ImageSelector = (props) => {
|
|
|
7746
7787
|
}
|
|
7747
7788
|
),
|
|
7748
7789
|
value && /* @__PURE__ */ jsxs209("div", { className: "action-bar", children: [
|
|
7749
|
-
/* @__PURE__ */
|
|
7750
|
-
/* @__PURE__ */
|
|
7790
|
+
/* @__PURE__ */ jsx325("div", { className: "icon-wrapper", onClick: handleOpenFileDialog, children: /* @__PURE__ */ jsx325(UploadIcon_default, {}) }),
|
|
7791
|
+
/* @__PURE__ */ jsx325("div", { className: "icon-wrapper", onClick: handleDeleteFile, children: /* @__PURE__ */ jsx325(DeleteIcon_default, {}) })
|
|
7751
7792
|
] }),
|
|
7752
|
-
/* @__PURE__ */
|
|
7753
|
-
/* @__PURE__ */
|
|
7754
|
-
/* @__PURE__ */
|
|
7793
|
+
/* @__PURE__ */ jsx325("div", { className: "content", children: previewUrl ? /* @__PURE__ */ jsx325("img", { src: previewUrl, alt: "preview" }) : /* @__PURE__ */ jsxs209("div", { className: "skeleton", onClick: handleOpenFileDialog, children: [
|
|
7794
|
+
/* @__PURE__ */ jsx325("div", { className: "icon-wrapper", children: /* @__PURE__ */ jsx325(ImageIcon_default, {}) }),
|
|
7795
|
+
/* @__PURE__ */ jsx325("div", { className: "label", children: label || "\uC774\uBBF8\uC9C0 \uCD94\uAC00\uD558\uAE30" })
|
|
7755
7796
|
] }) })
|
|
7756
7797
|
] });
|
|
7757
7798
|
};
|
|
@@ -7759,7 +7800,7 @@ ImageSelector.displayName = "ImageSelector";
|
|
|
7759
7800
|
var ImageSelector_default = ImageSelector;
|
|
7760
7801
|
|
|
7761
7802
|
// src/components/Pagination/Pagination.tsx
|
|
7762
|
-
import { jsx as
|
|
7803
|
+
import { jsx as jsx326, jsxs as jsxs210 } from "react/jsx-runtime";
|
|
7763
7804
|
var getPageRange = (current, totalPages, siblingCount) => {
|
|
7764
7805
|
const totalNumbers = siblingCount * 2 + 5;
|
|
7765
7806
|
if (totalPages <= totalNumbers) {
|
|
@@ -7803,18 +7844,18 @@ var Pagination = (props) => {
|
|
|
7803
7844
|
}
|
|
7804
7845
|
};
|
|
7805
7846
|
return /* @__PURE__ */ jsxs210("nav", { className: clsx_default("lib-xplat-pagination", size, type), "aria-label": "\uD398\uC774\uC9C0 \uB124\uBE44\uAC8C\uC774\uC158", children: [
|
|
7806
|
-
/* @__PURE__ */
|
|
7847
|
+
/* @__PURE__ */ jsx326(
|
|
7807
7848
|
"button",
|
|
7808
7849
|
{
|
|
7809
7850
|
className: "page-btn prev",
|
|
7810
7851
|
disabled: current <= 1,
|
|
7811
7852
|
onClick: () => handleClick(current - 1),
|
|
7812
7853
|
"aria-label": "\uC774\uC804 \uD398\uC774\uC9C0",
|
|
7813
|
-
children: /* @__PURE__ */
|
|
7854
|
+
children: /* @__PURE__ */ jsx326(ChevronLeftIcon_default, {})
|
|
7814
7855
|
}
|
|
7815
7856
|
),
|
|
7816
7857
|
pages.map(
|
|
7817
|
-
(page, i) => page === "..." ? /* @__PURE__ */
|
|
7858
|
+
(page, i) => page === "..." ? /* @__PURE__ */ jsx326("span", { className: "dots", children: "..." }, `dots-${i}`) : /* @__PURE__ */ jsx326(
|
|
7818
7859
|
"button",
|
|
7819
7860
|
{
|
|
7820
7861
|
className: clsx_default("page-btn", { active: page === current }),
|
|
@@ -7825,14 +7866,14 @@ var Pagination = (props) => {
|
|
|
7825
7866
|
page
|
|
7826
7867
|
)
|
|
7827
7868
|
),
|
|
7828
|
-
/* @__PURE__ */
|
|
7869
|
+
/* @__PURE__ */ jsx326(
|
|
7829
7870
|
"button",
|
|
7830
7871
|
{
|
|
7831
7872
|
className: "page-btn next",
|
|
7832
7873
|
disabled: current >= totalPages,
|
|
7833
7874
|
onClick: () => handleClick(current + 1),
|
|
7834
7875
|
"aria-label": "\uB2E4\uC74C \uD398\uC774\uC9C0",
|
|
7835
|
-
children: /* @__PURE__ */
|
|
7876
|
+
children: /* @__PURE__ */ jsx326(ChevronRightIcon_default, {})
|
|
7836
7877
|
}
|
|
7837
7878
|
)
|
|
7838
7879
|
] });
|
|
@@ -7841,17 +7882,17 @@ Pagination.displayName = "Pagination";
|
|
|
7841
7882
|
var Pagination_default = Pagination;
|
|
7842
7883
|
|
|
7843
7884
|
// src/components/PopOver/PopOver.tsx
|
|
7844
|
-
import
|
|
7845
|
-
import { jsx as
|
|
7885
|
+
import React24 from "react";
|
|
7886
|
+
import { jsx as jsx327, jsxs as jsxs211 } from "react/jsx-runtime";
|
|
7846
7887
|
var PopOver = (props) => {
|
|
7847
7888
|
const { children, isOpen, onClose, PopOverEl } = props;
|
|
7848
|
-
const popRef =
|
|
7849
|
-
const triggerRef =
|
|
7850
|
-
const [localOpen, setLocalOpen] =
|
|
7851
|
-
const [eventTrigger, setEventTrigger] =
|
|
7889
|
+
const popRef = React24.useRef(null);
|
|
7890
|
+
const triggerRef = React24.useRef(null);
|
|
7891
|
+
const [localOpen, setLocalOpen] = React24.useState(false);
|
|
7892
|
+
const [eventTrigger, setEventTrigger] = React24.useState(false);
|
|
7852
7893
|
useClickOutside_default([popRef, triggerRef], onClose, isOpen);
|
|
7853
7894
|
const position = useAutoPosition_default(triggerRef, popRef, localOpen);
|
|
7854
|
-
|
|
7895
|
+
React24.useEffect(() => {
|
|
7855
7896
|
if (isOpen) {
|
|
7856
7897
|
setLocalOpen(isOpen);
|
|
7857
7898
|
setTimeout(() => {
|
|
@@ -7874,11 +7915,11 @@ var PopOver = (props) => {
|
|
|
7874
7915
|
},
|
|
7875
7916
|
children: [
|
|
7876
7917
|
children,
|
|
7877
|
-
localOpen && /* @__PURE__ */
|
|
7918
|
+
localOpen && /* @__PURE__ */ jsx327(Portal_default, { children: /* @__PURE__ */ jsx327(
|
|
7878
7919
|
"div",
|
|
7879
7920
|
{
|
|
7880
7921
|
className: clsx_default(
|
|
7881
|
-
"content
|
|
7922
|
+
"lib-xplat-pop-over-content",
|
|
7882
7923
|
position.direction,
|
|
7883
7924
|
eventTrigger && "visible"
|
|
7884
7925
|
),
|
|
@@ -7888,7 +7929,7 @@ var PopOver = (props) => {
|
|
|
7888
7929
|
},
|
|
7889
7930
|
children: PopOverEl
|
|
7890
7931
|
}
|
|
7891
|
-
)
|
|
7932
|
+
) })
|
|
7892
7933
|
]
|
|
7893
7934
|
}
|
|
7894
7935
|
);
|
|
@@ -7897,7 +7938,7 @@ PopOver.displayName = "PopOver";
|
|
|
7897
7938
|
var PopOver_default = PopOver;
|
|
7898
7939
|
|
|
7899
7940
|
// src/components/Progress/Progress.tsx
|
|
7900
|
-
import { jsx as
|
|
7941
|
+
import { jsx as jsx328, jsxs as jsxs212 } from "react/jsx-runtime";
|
|
7901
7942
|
var Progress = (props) => {
|
|
7902
7943
|
const {
|
|
7903
7944
|
value,
|
|
@@ -7908,7 +7949,7 @@ var Progress = (props) => {
|
|
|
7908
7949
|
} = props;
|
|
7909
7950
|
const percentage = Math.min(100, Math.max(0, value / max * 100));
|
|
7910
7951
|
return /* @__PURE__ */ jsxs212("div", { className: clsx_default("lib-xplat-progress", size, type), children: [
|
|
7911
|
-
/* @__PURE__ */
|
|
7952
|
+
/* @__PURE__ */ jsx328(
|
|
7912
7953
|
"div",
|
|
7913
7954
|
{
|
|
7914
7955
|
className: "track",
|
|
@@ -7916,7 +7957,7 @@ var Progress = (props) => {
|
|
|
7916
7957
|
"aria-valuenow": value,
|
|
7917
7958
|
"aria-valuemin": 0,
|
|
7918
7959
|
"aria-valuemax": max,
|
|
7919
|
-
children: /* @__PURE__ */
|
|
7960
|
+
children: /* @__PURE__ */ jsx328(
|
|
7920
7961
|
"div",
|
|
7921
7962
|
{
|
|
7922
7963
|
className: "bar",
|
|
@@ -7935,17 +7976,17 @@ Progress.displayName = "Progress";
|
|
|
7935
7976
|
var Progress_default = Progress;
|
|
7936
7977
|
|
|
7937
7978
|
// src/components/Radio/RadioGroupContext.tsx
|
|
7938
|
-
import
|
|
7939
|
-
var RadioGroupContext =
|
|
7979
|
+
import React25 from "react";
|
|
7980
|
+
var RadioGroupContext = React25.createContext(
|
|
7940
7981
|
null
|
|
7941
7982
|
);
|
|
7942
7983
|
var useRadioGroupContext = () => {
|
|
7943
|
-
return
|
|
7984
|
+
return React25.useContext(RadioGroupContext);
|
|
7944
7985
|
};
|
|
7945
7986
|
var RadioGroupContext_default = RadioGroupContext;
|
|
7946
7987
|
|
|
7947
7988
|
// src/components/Radio/Radio.tsx
|
|
7948
|
-
import { jsx as
|
|
7989
|
+
import { jsx as jsx329, jsxs as jsxs213 } from "react/jsx-runtime";
|
|
7949
7990
|
var Radio = (props) => {
|
|
7950
7991
|
const {
|
|
7951
7992
|
label,
|
|
@@ -7973,18 +8014,18 @@ var Radio = (props) => {
|
|
|
7973
8014
|
localChecked ? "checked" : void 0
|
|
7974
8015
|
),
|
|
7975
8016
|
children: [
|
|
7976
|
-
/* @__PURE__ */
|
|
7977
|
-
/* @__PURE__ */
|
|
8017
|
+
/* @__PURE__ */ jsx329("input", { ...rest, ...inputProps, checked: localChecked, type: "radio" }),
|
|
8018
|
+
/* @__PURE__ */ jsx329(
|
|
7978
8019
|
"div",
|
|
7979
8020
|
{
|
|
7980
8021
|
className: clsx_default(
|
|
7981
8022
|
"circle",
|
|
7982
8023
|
localChecked ? "checked" : void 0
|
|
7983
8024
|
),
|
|
7984
|
-
children: localChecked && /* @__PURE__ */
|
|
8025
|
+
children: localChecked && /* @__PURE__ */ jsx329("div", { className: "inner-circle" })
|
|
7985
8026
|
}
|
|
7986
8027
|
),
|
|
7987
|
-
label && /* @__PURE__ */
|
|
8028
|
+
label && /* @__PURE__ */ jsx329("span", { children: label })
|
|
7988
8029
|
]
|
|
7989
8030
|
}
|
|
7990
8031
|
);
|
|
@@ -7993,28 +8034,28 @@ Radio.displayName = "Radio";
|
|
|
7993
8034
|
var Radio_default = Radio;
|
|
7994
8035
|
|
|
7995
8036
|
// src/components/Radio/RadioGroup.tsx
|
|
7996
|
-
import { Fragment as
|
|
8037
|
+
import { Fragment as Fragment4, jsx as jsx330 } from "react/jsx-runtime";
|
|
7997
8038
|
var RadioGroup = (props) => {
|
|
7998
8039
|
const { children, ...rest } = props;
|
|
7999
|
-
return /* @__PURE__ */
|
|
8040
|
+
return /* @__PURE__ */ jsx330(Fragment4, { children: /* @__PURE__ */ jsx330(RadioGroupContext_default.Provider, { value: rest, children }) });
|
|
8000
8041
|
};
|
|
8001
8042
|
RadioGroup.displayName = "RadioGroup";
|
|
8002
8043
|
var RadioGroup_default = RadioGroup;
|
|
8003
8044
|
|
|
8004
8045
|
// src/components/Select/Select.tsx
|
|
8005
|
-
import
|
|
8046
|
+
import React28 from "react";
|
|
8006
8047
|
|
|
8007
8048
|
// src/components/Select/context.ts
|
|
8008
|
-
import
|
|
8009
|
-
var SelectContext =
|
|
8049
|
+
import React26 from "react";
|
|
8050
|
+
var SelectContext = React26.createContext(null);
|
|
8010
8051
|
var context_default = SelectContext;
|
|
8011
8052
|
|
|
8012
8053
|
// src/components/Select/SelectItem.tsx
|
|
8013
|
-
import
|
|
8014
|
-
import { jsx as
|
|
8054
|
+
import React27 from "react";
|
|
8055
|
+
import { jsx as jsx331 } from "react/jsx-runtime";
|
|
8015
8056
|
var SelectItem = (props) => {
|
|
8016
8057
|
const { children, value, onClick, disabled = false } = props;
|
|
8017
|
-
const ctx =
|
|
8058
|
+
const ctx = React27.useContext(context_default);
|
|
8018
8059
|
const handleClick = (e) => {
|
|
8019
8060
|
e.preventDefault();
|
|
8020
8061
|
e.stopPropagation();
|
|
@@ -8023,7 +8064,7 @@ var SelectItem = (props) => {
|
|
|
8023
8064
|
ctx?.close();
|
|
8024
8065
|
onClick?.();
|
|
8025
8066
|
};
|
|
8026
|
-
return /* @__PURE__ */
|
|
8067
|
+
return /* @__PURE__ */ jsx331(
|
|
8027
8068
|
"div",
|
|
8028
8069
|
{
|
|
8029
8070
|
className: clsx_default("select-item", disabled && "disabled"),
|
|
@@ -8044,7 +8085,7 @@ SelectItem.displayName = "Select.Item";
|
|
|
8044
8085
|
var SelectItem_default = SelectItem;
|
|
8045
8086
|
|
|
8046
8087
|
// src/components/Select/Select.tsx
|
|
8047
|
-
import { jsx as
|
|
8088
|
+
import { jsx as jsx332, jsxs as jsxs214 } from "react/jsx-runtime";
|
|
8048
8089
|
var ANIMATION_DURATION_MS3 = 200;
|
|
8049
8090
|
var SelectRoot = (props) => {
|
|
8050
8091
|
const {
|
|
@@ -8056,26 +8097,26 @@ var SelectRoot = (props) => {
|
|
|
8056
8097
|
error = false,
|
|
8057
8098
|
size = "md"
|
|
8058
8099
|
} = props;
|
|
8059
|
-
const itemChildren =
|
|
8060
|
-
(child) =>
|
|
8100
|
+
const itemChildren = React28.Children.toArray(children).filter(
|
|
8101
|
+
(child) => React28.isValidElement(child) && child.type === SelectItem_default
|
|
8061
8102
|
);
|
|
8062
8103
|
const isControlled = valueProp !== void 0;
|
|
8063
|
-
const [isOpen, setOpen] =
|
|
8064
|
-
const [uncontrolledLabel, setUncontrolledLabel] =
|
|
8065
|
-
const controlledLabel =
|
|
8104
|
+
const [isOpen, setOpen] = React28.useState(false);
|
|
8105
|
+
const [uncontrolledLabel, setUncontrolledLabel] = React28.useState(null);
|
|
8106
|
+
const controlledLabel = React28.useMemo(() => {
|
|
8066
8107
|
if (!isControlled) return null;
|
|
8067
8108
|
const match = itemChildren.find((child) => child.props.value === valueProp);
|
|
8068
8109
|
return match ? match.props.children : null;
|
|
8069
8110
|
}, [isControlled, valueProp, itemChildren]);
|
|
8070
8111
|
const selectedLabel = isControlled ? controlledLabel : uncontrolledLabel;
|
|
8071
|
-
const triggerRef =
|
|
8072
|
-
const contentRef =
|
|
8073
|
-
const [mounted, setMounted] =
|
|
8074
|
-
const [visible, setVisible] =
|
|
8075
|
-
|
|
8112
|
+
const triggerRef = React28.useRef(null);
|
|
8113
|
+
const contentRef = React28.useRef(null);
|
|
8114
|
+
const [mounted, setMounted] = React28.useState(false);
|
|
8115
|
+
const [visible, setVisible] = React28.useState(false);
|
|
8116
|
+
React28.useEffect(() => {
|
|
8076
8117
|
if (disabled && isOpen) setOpen(false);
|
|
8077
8118
|
}, [disabled, isOpen]);
|
|
8078
|
-
|
|
8119
|
+
React28.useEffect(() => {
|
|
8079
8120
|
if (isOpen) {
|
|
8080
8121
|
setMounted(true);
|
|
8081
8122
|
const t2 = setTimeout(() => setVisible(true), 1);
|
|
@@ -8085,12 +8126,12 @@ var SelectRoot = (props) => {
|
|
|
8085
8126
|
const t = setTimeout(() => setMounted(false), ANIMATION_DURATION_MS3);
|
|
8086
8127
|
return () => clearTimeout(t);
|
|
8087
8128
|
}, [isOpen]);
|
|
8088
|
-
const open =
|
|
8089
|
-
const close =
|
|
8090
|
-
const toggle =
|
|
8129
|
+
const open = React28.useCallback(() => setOpen(true), []);
|
|
8130
|
+
const close = React28.useCallback(() => setOpen(false), []);
|
|
8131
|
+
const toggle = React28.useCallback(() => setOpen((prev) => !prev), []);
|
|
8091
8132
|
useClickOutside_default([contentRef, triggerRef], close, isOpen);
|
|
8092
8133
|
const position = useAutoPosition_default(triggerRef, contentRef, mounted);
|
|
8093
|
-
const setSelected =
|
|
8134
|
+
const setSelected = React28.useCallback(
|
|
8094
8135
|
(label, itemValue) => {
|
|
8095
8136
|
if (!isControlled) {
|
|
8096
8137
|
setUncontrolledLabel(label);
|
|
@@ -8099,7 +8140,7 @@ var SelectRoot = (props) => {
|
|
|
8099
8140
|
},
|
|
8100
8141
|
[isControlled, onChange]
|
|
8101
8142
|
);
|
|
8102
|
-
const ctxValue =
|
|
8143
|
+
const ctxValue = React28.useMemo(
|
|
8103
8144
|
() => ({
|
|
8104
8145
|
isOpen,
|
|
8105
8146
|
mounted,
|
|
@@ -8120,7 +8161,7 @@ var SelectRoot = (props) => {
|
|
|
8120
8161
|
if (disabled) return;
|
|
8121
8162
|
toggle();
|
|
8122
8163
|
};
|
|
8123
|
-
return /* @__PURE__ */
|
|
8164
|
+
return /* @__PURE__ */ jsx332(context_default.Provider, { value: ctxValue, children: /* @__PURE__ */ jsxs214(
|
|
8124
8165
|
"div",
|
|
8125
8166
|
{
|
|
8126
8167
|
className: clsx_default(
|
|
@@ -8155,7 +8196,7 @@ var SelectRoot = (props) => {
|
|
|
8155
8196
|
}
|
|
8156
8197
|
},
|
|
8157
8198
|
children: [
|
|
8158
|
-
/* @__PURE__ */
|
|
8199
|
+
/* @__PURE__ */ jsx332(
|
|
8159
8200
|
"span",
|
|
8160
8201
|
{
|
|
8161
8202
|
className: clsx_default(
|
|
@@ -8165,27 +8206,27 @@ var SelectRoot = (props) => {
|
|
|
8165
8206
|
children: selectedLabel ?? placeholder
|
|
8166
8207
|
}
|
|
8167
8208
|
),
|
|
8168
|
-
/* @__PURE__ */
|
|
8209
|
+
/* @__PURE__ */ jsx332(
|
|
8169
8210
|
"span",
|
|
8170
8211
|
{
|
|
8171
8212
|
className: clsx_default("select-trigger-icon", isOpen && "open"),
|
|
8172
8213
|
"aria-hidden": true,
|
|
8173
|
-
children: /* @__PURE__ */
|
|
8214
|
+
children: /* @__PURE__ */ jsx332(ChevronDownIcon_default, {})
|
|
8174
8215
|
}
|
|
8175
8216
|
)
|
|
8176
8217
|
]
|
|
8177
8218
|
}
|
|
8178
8219
|
),
|
|
8179
|
-
mounted && /* @__PURE__ */
|
|
8220
|
+
mounted && /* @__PURE__ */ jsx332(Portal_default, { children: /* @__PURE__ */ jsx332(
|
|
8180
8221
|
"div",
|
|
8181
8222
|
{
|
|
8182
|
-
className: clsx_default("select-content", position.direction, stateClass),
|
|
8223
|
+
className: clsx_default("lib-xplat-select-content", position.direction, stateClass),
|
|
8183
8224
|
ref: contentRef,
|
|
8184
8225
|
style: { ...position.position, minWidth: position.position.width },
|
|
8185
8226
|
role: "listbox",
|
|
8186
|
-
children: itemChildren
|
|
8227
|
+
children: /* @__PURE__ */ jsx332(context_default.Provider, { value: ctxValue, children: itemChildren })
|
|
8187
8228
|
}
|
|
8188
|
-
)
|
|
8229
|
+
) })
|
|
8189
8230
|
]
|
|
8190
8231
|
}
|
|
8191
8232
|
) });
|
|
@@ -8197,14 +8238,14 @@ var Select = Object.assign(SelectRoot, {
|
|
|
8197
8238
|
var Select_default = Select;
|
|
8198
8239
|
|
|
8199
8240
|
// src/components/Skeleton/Skeleton.tsx
|
|
8200
|
-
import { jsx as
|
|
8241
|
+
import { jsx as jsx333 } from "react/jsx-runtime";
|
|
8201
8242
|
var Skeleton = (props) => {
|
|
8202
8243
|
const { variant = "text", width, height } = props;
|
|
8203
8244
|
const style = {
|
|
8204
8245
|
width: typeof width === "number" ? `${width}px` : width,
|
|
8205
8246
|
height: typeof height === "number" ? `${height}px` : height
|
|
8206
8247
|
};
|
|
8207
|
-
return /* @__PURE__ */
|
|
8248
|
+
return /* @__PURE__ */ jsx333(
|
|
8208
8249
|
"div",
|
|
8209
8250
|
{
|
|
8210
8251
|
className: clsx_default("lib-xplat-skeleton", variant),
|
|
@@ -8217,20 +8258,20 @@ Skeleton.displayName = "Skeleton";
|
|
|
8217
8258
|
var Skeleton_default = Skeleton;
|
|
8218
8259
|
|
|
8219
8260
|
// src/components/Spinner/Spinner.tsx
|
|
8220
|
-
import { jsx as
|
|
8261
|
+
import { jsx as jsx334, jsxs as jsxs215 } from "react/jsx-runtime";
|
|
8221
8262
|
var Spinner = (props) => {
|
|
8222
8263
|
const {
|
|
8223
8264
|
size = "md",
|
|
8224
8265
|
type = "brand"
|
|
8225
8266
|
} = props;
|
|
8226
|
-
return /* @__PURE__ */
|
|
8267
|
+
return /* @__PURE__ */ jsx334(
|
|
8227
8268
|
"div",
|
|
8228
8269
|
{
|
|
8229
8270
|
className: clsx_default("lib-xplat-spinner", size, type),
|
|
8230
8271
|
role: "status",
|
|
8231
8272
|
"aria-label": "\uB85C\uB529 \uC911",
|
|
8232
8273
|
children: /* @__PURE__ */ jsxs215("svg", { viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
|
|
8233
|
-
/* @__PURE__ */
|
|
8274
|
+
/* @__PURE__ */ jsx334(
|
|
8234
8275
|
"circle",
|
|
8235
8276
|
{
|
|
8236
8277
|
className: "track",
|
|
@@ -8240,7 +8281,7 @@ var Spinner = (props) => {
|
|
|
8240
8281
|
strokeWidth: "3"
|
|
8241
8282
|
}
|
|
8242
8283
|
),
|
|
8243
|
-
/* @__PURE__ */
|
|
8284
|
+
/* @__PURE__ */ jsx334(
|
|
8244
8285
|
"circle",
|
|
8245
8286
|
{
|
|
8246
8287
|
className: "indicator",
|
|
@@ -8259,20 +8300,20 @@ Spinner.displayName = "Spinner";
|
|
|
8259
8300
|
var Spinner_default = Spinner;
|
|
8260
8301
|
|
|
8261
8302
|
// src/components/Steps/Steps.tsx
|
|
8262
|
-
import { jsx as
|
|
8303
|
+
import { jsx as jsx335, jsxs as jsxs216 } from "react/jsx-runtime";
|
|
8263
8304
|
var Steps = (props) => {
|
|
8264
8305
|
const {
|
|
8265
8306
|
items,
|
|
8266
8307
|
current,
|
|
8267
8308
|
type = "brand"
|
|
8268
8309
|
} = props;
|
|
8269
|
-
return /* @__PURE__ */
|
|
8310
|
+
return /* @__PURE__ */ jsx335("div", { className: clsx_default("lib-xplat-steps", type), children: items.map((item, index) => {
|
|
8270
8311
|
const status = index < current ? "completed" : index === current ? "active" : "pending";
|
|
8271
8312
|
return /* @__PURE__ */ jsxs216("div", { className: clsx_default("step-item", status), children: [
|
|
8272
|
-
/* @__PURE__ */
|
|
8313
|
+
/* @__PURE__ */ jsx335("div", { className: "step-circle", children: status === "completed" ? /* @__PURE__ */ jsx335(CheckIcon_default, {}) : /* @__PURE__ */ jsx335("span", { children: index + 1 }) }),
|
|
8273
8314
|
/* @__PURE__ */ jsxs216("div", { className: "step-content", children: [
|
|
8274
|
-
/* @__PURE__ */
|
|
8275
|
-
item.description && /* @__PURE__ */
|
|
8315
|
+
/* @__PURE__ */ jsx335("span", { className: "step-title", children: item.title }),
|
|
8316
|
+
item.description && /* @__PURE__ */ jsx335("span", { className: "step-description", children: item.description })
|
|
8276
8317
|
] })
|
|
8277
8318
|
] }, index);
|
|
8278
8319
|
}) });
|
|
@@ -8281,8 +8322,8 @@ Steps.displayName = "Steps";
|
|
|
8281
8322
|
var Steps_default = Steps;
|
|
8282
8323
|
|
|
8283
8324
|
// src/components/Swiper/Swiper.tsx
|
|
8284
|
-
import
|
|
8285
|
-
import { jsx as
|
|
8325
|
+
import React29 from "react";
|
|
8326
|
+
import { jsx as jsx336, jsxs as jsxs217 } from "react/jsx-runtime";
|
|
8286
8327
|
var Swiper = (props) => {
|
|
8287
8328
|
const {
|
|
8288
8329
|
auto = false,
|
|
@@ -8305,23 +8346,23 @@ var Swiper = (props) => {
|
|
|
8305
8346
|
const maxIndex = Math.max(0, totalSlides - viewItemCount);
|
|
8306
8347
|
const useLoop = loop && canSlide;
|
|
8307
8348
|
const cloneCount = useLoop ? totalSlides : 0;
|
|
8308
|
-
const extendedItems =
|
|
8349
|
+
const extendedItems = React29.useMemo(() => {
|
|
8309
8350
|
if (!useLoop) return items;
|
|
8310
8351
|
return [...items, ...items, ...items];
|
|
8311
8352
|
}, [items, useLoop]);
|
|
8312
8353
|
const initialIdx = Math.max(0, Math.min(indexProp ?? 0, maxIndex));
|
|
8313
|
-
const [innerIndex, setInnerIndex] =
|
|
8354
|
+
const [innerIndex, setInnerIndex] = React29.useState(
|
|
8314
8355
|
useLoop ? cloneCount + initialIdx : initialIdx
|
|
8315
8356
|
);
|
|
8316
|
-
const [isDragging, setIsDragging] =
|
|
8317
|
-
const [dragOffset, setDragOffset] =
|
|
8318
|
-
const [animated, setAnimated] =
|
|
8319
|
-
const [containerWidth, setContainerWidth] =
|
|
8320
|
-
const containerRef =
|
|
8321
|
-
const startXRef =
|
|
8322
|
-
const startTimeRef =
|
|
8323
|
-
const autoplayTimerRef =
|
|
8324
|
-
|
|
8357
|
+
const [isDragging, setIsDragging] = React29.useState(false);
|
|
8358
|
+
const [dragOffset, setDragOffset] = React29.useState(0);
|
|
8359
|
+
const [animated, setAnimated] = React29.useState(true);
|
|
8360
|
+
const [containerWidth, setContainerWidth] = React29.useState(0);
|
|
8361
|
+
const containerRef = React29.useRef(null);
|
|
8362
|
+
const startXRef = React29.useRef(0);
|
|
8363
|
+
const startTimeRef = React29.useRef(0);
|
|
8364
|
+
const autoplayTimerRef = React29.useRef(null);
|
|
8365
|
+
React29.useEffect(() => {
|
|
8325
8366
|
const el = containerRef.current;
|
|
8326
8367
|
if (!el) return;
|
|
8327
8368
|
const ro = new ResizeObserver((entries) => {
|
|
@@ -8340,7 +8381,7 @@ var Swiper = (props) => {
|
|
|
8340
8381
|
return ((inner - cloneCount) % totalSlides + totalSlides) % totalSlides;
|
|
8341
8382
|
};
|
|
8342
8383
|
const realIndex = getRealIndex(innerIndex);
|
|
8343
|
-
const moveToInner =
|
|
8384
|
+
const moveToInner = React29.useCallback(
|
|
8344
8385
|
(idx, withAnim = true) => {
|
|
8345
8386
|
if (!useLoop) {
|
|
8346
8387
|
setAnimated(withAnim);
|
|
@@ -8368,7 +8409,7 @@ var Swiper = (props) => {
|
|
|
8368
8409
|
},
|
|
8369
8410
|
[useLoop, cloneCount, totalSlides]
|
|
8370
8411
|
);
|
|
8371
|
-
const handleTransitionEnd =
|
|
8412
|
+
const handleTransitionEnd = React29.useCallback(() => {
|
|
8372
8413
|
if (!useLoop) return;
|
|
8373
8414
|
const real = getRealIndex(innerIndex);
|
|
8374
8415
|
const canonical = cloneCount + real;
|
|
@@ -8378,7 +8419,7 @@ var Swiper = (props) => {
|
|
|
8378
8419
|
}
|
|
8379
8420
|
onChange?.(Math.min(real, maxIndex));
|
|
8380
8421
|
}, [useLoop, innerIndex, cloneCount, totalSlides, maxIndex, onChange]);
|
|
8381
|
-
const slideTo =
|
|
8422
|
+
const slideTo = React29.useCallback(
|
|
8382
8423
|
(logicalIndex) => {
|
|
8383
8424
|
if (!canSlide) return;
|
|
8384
8425
|
const clamped = useLoop ? logicalIndex : Math.max(0, Math.min(logicalIndex, maxIndex));
|
|
@@ -8388,7 +8429,7 @@ var Swiper = (props) => {
|
|
|
8388
8429
|
},
|
|
8389
8430
|
[canSlide, useLoop, cloneCount, maxIndex, onChange, moveToInner]
|
|
8390
8431
|
);
|
|
8391
|
-
const slideNext =
|
|
8432
|
+
const slideNext = React29.useCallback(() => {
|
|
8392
8433
|
if (!canSlide) return;
|
|
8393
8434
|
const nextInner = innerIndex + slideBy;
|
|
8394
8435
|
if (useLoop) {
|
|
@@ -8397,7 +8438,7 @@ var Swiper = (props) => {
|
|
|
8397
8438
|
moveToInner(Math.min(nextInner, maxIndex), true);
|
|
8398
8439
|
}
|
|
8399
8440
|
}, [canSlide, useLoop, innerIndex, slideBy, maxIndex, moveToInner]);
|
|
8400
|
-
const slidePrev =
|
|
8441
|
+
const slidePrev = React29.useCallback(() => {
|
|
8401
8442
|
if (!canSlide) return;
|
|
8402
8443
|
const prevInner = innerIndex - slideBy;
|
|
8403
8444
|
if (useLoop) {
|
|
@@ -8406,7 +8447,7 @@ var Swiper = (props) => {
|
|
|
8406
8447
|
moveToInner(Math.max(prevInner, 0), true);
|
|
8407
8448
|
}
|
|
8408
8449
|
}, [canSlide, useLoop, innerIndex, slideBy, moveToInner]);
|
|
8409
|
-
|
|
8450
|
+
React29.useEffect(() => {
|
|
8410
8451
|
if (indexProp === void 0) return;
|
|
8411
8452
|
const clamped = Math.max(0, Math.min(indexProp, maxIndex));
|
|
8412
8453
|
const target = useLoop ? cloneCount + clamped : clamped;
|
|
@@ -8414,12 +8455,12 @@ var Swiper = (props) => {
|
|
|
8414
8455
|
moveToInner(target, true);
|
|
8415
8456
|
}
|
|
8416
8457
|
}, [indexProp]);
|
|
8417
|
-
|
|
8458
|
+
React29.useImperativeHandle(swiperRef, () => ({
|
|
8418
8459
|
slidePrev,
|
|
8419
8460
|
slideNext,
|
|
8420
8461
|
slideTo
|
|
8421
8462
|
}));
|
|
8422
|
-
|
|
8463
|
+
React29.useEffect(() => {
|
|
8423
8464
|
if (!auto || !canSlide) return;
|
|
8424
8465
|
autoplayTimerRef.current = setInterval(slideNext, autoplayDelay);
|
|
8425
8466
|
return () => {
|
|
@@ -8442,7 +8483,7 @@ var Swiper = (props) => {
|
|
|
8442
8483
|
startXRef.current = getClientX(e);
|
|
8443
8484
|
startTimeRef.current = Date.now();
|
|
8444
8485
|
};
|
|
8445
|
-
|
|
8486
|
+
React29.useEffect(() => {
|
|
8446
8487
|
if (!isDragging) return;
|
|
8447
8488
|
const handleMove = (e) => {
|
|
8448
8489
|
setDragOffset(getClientX(e) - startXRef.current);
|
|
@@ -8480,8 +8521,8 @@ var Swiper = (props) => {
|
|
|
8480
8521
|
}, [isDragging, dragOffset, innerIndex, useLoop, maxIndex, slideStep, moveToInner]);
|
|
8481
8522
|
const slideWidthPercent = 100 / viewItemCount;
|
|
8482
8523
|
const gapAdjust = spaceBetween * (viewItemCount - 1) / viewItemCount;
|
|
8483
|
-
const slideElements =
|
|
8484
|
-
() => extendedItems.map((item, idx) => /* @__PURE__ */
|
|
8524
|
+
const slideElements = React29.useMemo(
|
|
8525
|
+
() => extendedItems.map((item, idx) => /* @__PURE__ */ jsx336(
|
|
8485
8526
|
"div",
|
|
8486
8527
|
{
|
|
8487
8528
|
className: "lib-xplat-swiper__slide",
|
|
@@ -8501,13 +8542,13 @@ var Swiper = (props) => {
|
|
|
8501
8542
|
totalSteps - 1
|
|
8502
8543
|
);
|
|
8503
8544
|
return /* @__PURE__ */ jsxs217("div", { className: "lib-xplat-swiper", ref: containerRef, children: [
|
|
8504
|
-
/* @__PURE__ */
|
|
8545
|
+
/* @__PURE__ */ jsx336(
|
|
8505
8546
|
"div",
|
|
8506
8547
|
{
|
|
8507
8548
|
className: "lib-xplat-swiper__viewport",
|
|
8508
8549
|
onMouseDown: handleDragStart,
|
|
8509
8550
|
onTouchStart: handleDragStart,
|
|
8510
|
-
children: /* @__PURE__ */
|
|
8551
|
+
children: /* @__PURE__ */ jsx336(
|
|
8511
8552
|
"div",
|
|
8512
8553
|
{
|
|
8513
8554
|
className: clsx_default(
|
|
@@ -8525,7 +8566,7 @@ var Swiper = (props) => {
|
|
|
8525
8566
|
)
|
|
8526
8567
|
}
|
|
8527
8568
|
),
|
|
8528
|
-
showProgress && canSlide && /* @__PURE__ */
|
|
8569
|
+
showProgress && canSlide && /* @__PURE__ */ jsx336("div", { className: "lib-xplat-swiper__progress", children: /* @__PURE__ */ jsx336("div", { className: "lib-xplat-swiper__progress-track", children: /* @__PURE__ */ jsx336(
|
|
8529
8570
|
"span",
|
|
8530
8571
|
{
|
|
8531
8572
|
className: "lib-xplat-swiper__progress-fill",
|
|
@@ -8535,7 +8576,7 @@ var Swiper = (props) => {
|
|
|
8535
8576
|
}
|
|
8536
8577
|
}
|
|
8537
8578
|
) }) }),
|
|
8538
|
-
canSlide && /* @__PURE__ */
|
|
8579
|
+
canSlide && /* @__PURE__ */ jsx336("div", { className: "lib-xplat-swiper__dots", children: Array.from({ length: totalSteps }, (_, i) => /* @__PURE__ */ jsx336(
|
|
8539
8580
|
"button",
|
|
8540
8581
|
{
|
|
8541
8582
|
className: clsx_default(
|
|
@@ -8553,8 +8594,8 @@ Swiper.displayName = "Swiper";
|
|
|
8553
8594
|
var Swiper_default = Swiper;
|
|
8554
8595
|
|
|
8555
8596
|
// src/components/Switch/Switch.tsx
|
|
8556
|
-
import
|
|
8557
|
-
import { jsx as
|
|
8597
|
+
import React30 from "react";
|
|
8598
|
+
import { jsx as jsx337 } from "react/jsx-runtime";
|
|
8558
8599
|
var KNOB_TRANSITION_MS = 250;
|
|
8559
8600
|
var Switch = (props) => {
|
|
8560
8601
|
const {
|
|
@@ -8564,9 +8605,9 @@ var Switch = (props) => {
|
|
|
8564
8605
|
disabled,
|
|
8565
8606
|
onChange
|
|
8566
8607
|
} = props;
|
|
8567
|
-
const [isAnimating, setIsAnimating] =
|
|
8568
|
-
const timeoutRef =
|
|
8569
|
-
|
|
8608
|
+
const [isAnimating, setIsAnimating] = React30.useState(false);
|
|
8609
|
+
const timeoutRef = React30.useRef(null);
|
|
8610
|
+
React30.useEffect(() => {
|
|
8570
8611
|
return () => {
|
|
8571
8612
|
if (timeoutRef.current) clearTimeout(timeoutRef.current);
|
|
8572
8613
|
};
|
|
@@ -8581,7 +8622,7 @@ var Switch = (props) => {
|
|
|
8581
8622
|
timeoutRef.current = null;
|
|
8582
8623
|
}, KNOB_TRANSITION_MS);
|
|
8583
8624
|
};
|
|
8584
|
-
return /* @__PURE__ */
|
|
8625
|
+
return /* @__PURE__ */ jsx337(
|
|
8585
8626
|
"div",
|
|
8586
8627
|
{
|
|
8587
8628
|
className: clsx_default(
|
|
@@ -8594,7 +8635,7 @@ var Switch = (props) => {
|
|
|
8594
8635
|
),
|
|
8595
8636
|
onClick: handleClick,
|
|
8596
8637
|
"aria-disabled": disabled || isAnimating,
|
|
8597
|
-
children: /* @__PURE__ */
|
|
8638
|
+
children: /* @__PURE__ */ jsx337("div", { className: clsx_default("knob", value ? "checked" : void 0) })
|
|
8598
8639
|
}
|
|
8599
8640
|
);
|
|
8600
8641
|
};
|
|
@@ -8602,17 +8643,17 @@ Switch.displayName = "Switch";
|
|
|
8602
8643
|
var Switch_default = Switch;
|
|
8603
8644
|
|
|
8604
8645
|
// src/components/Table/TableContext.tsx
|
|
8605
|
-
import
|
|
8606
|
-
var TableContext =
|
|
8646
|
+
import React31 from "react";
|
|
8647
|
+
var TableContext = React31.createContext(null);
|
|
8607
8648
|
var useTableContext = () => {
|
|
8608
|
-
const ctx =
|
|
8649
|
+
const ctx = React31.useContext(TableContext);
|
|
8609
8650
|
if (!ctx) throw new Error("Table components must be used inside <Table>");
|
|
8610
8651
|
return ctx;
|
|
8611
8652
|
};
|
|
8612
8653
|
var TableContext_default = TableContext;
|
|
8613
8654
|
|
|
8614
8655
|
// src/components/Table/Table.tsx
|
|
8615
|
-
import { jsx as
|
|
8656
|
+
import { jsx as jsx338 } from "react/jsx-runtime";
|
|
8616
8657
|
var Table = (props) => {
|
|
8617
8658
|
const {
|
|
8618
8659
|
children,
|
|
@@ -8621,7 +8662,7 @@ var Table = (props) => {
|
|
|
8621
8662
|
headerSticky = false,
|
|
8622
8663
|
stickyShadow = true
|
|
8623
8664
|
} = props;
|
|
8624
|
-
return /* @__PURE__ */
|
|
8665
|
+
return /* @__PURE__ */ jsx338("div", { className: "lib-xplat-table-wrapper", children: /* @__PURE__ */ jsx338(
|
|
8625
8666
|
TableContext_default.Provider,
|
|
8626
8667
|
{
|
|
8627
8668
|
value: {
|
|
@@ -8630,7 +8671,7 @@ var Table = (props) => {
|
|
|
8630
8671
|
headerSticky,
|
|
8631
8672
|
stickyShadow
|
|
8632
8673
|
},
|
|
8633
|
-
children: /* @__PURE__ */
|
|
8674
|
+
children: /* @__PURE__ */ jsx338("table", { className: "lib-xplat-table", children })
|
|
8634
8675
|
}
|
|
8635
8676
|
) });
|
|
8636
8677
|
};
|
|
@@ -8638,41 +8679,41 @@ Table.displayName = "Table";
|
|
|
8638
8679
|
var Table_default = Table;
|
|
8639
8680
|
|
|
8640
8681
|
// src/components/Table/TableBody.tsx
|
|
8641
|
-
import { jsx as
|
|
8682
|
+
import { jsx as jsx339 } from "react/jsx-runtime";
|
|
8642
8683
|
var TableBody = (props) => {
|
|
8643
8684
|
const { children } = props;
|
|
8644
|
-
return /* @__PURE__ */
|
|
8685
|
+
return /* @__PURE__ */ jsx339("tbody", { children });
|
|
8645
8686
|
};
|
|
8646
8687
|
TableBody.displayName = "TableBody";
|
|
8647
8688
|
var TableBody_default = TableBody;
|
|
8648
8689
|
|
|
8649
8690
|
// src/components/Table/TableCell.tsx
|
|
8650
|
-
import
|
|
8691
|
+
import React34 from "react";
|
|
8651
8692
|
|
|
8652
8693
|
// src/components/Table/TableHeadContext.tsx
|
|
8653
|
-
import
|
|
8654
|
-
var TableHeadContext =
|
|
8694
|
+
import React32 from "react";
|
|
8695
|
+
var TableHeadContext = React32.createContext(
|
|
8655
8696
|
null
|
|
8656
8697
|
);
|
|
8657
8698
|
var useTableHeadContext = () => {
|
|
8658
|
-
const ctx =
|
|
8699
|
+
const ctx = React32.useContext(TableHeadContext);
|
|
8659
8700
|
return ctx;
|
|
8660
8701
|
};
|
|
8661
8702
|
var TableHeadContext_default = TableHeadContext;
|
|
8662
8703
|
|
|
8663
8704
|
// src/components/Table/TableRowContext.tsx
|
|
8664
|
-
import
|
|
8665
|
-
var TableRowContext =
|
|
8705
|
+
import React33 from "react";
|
|
8706
|
+
var TableRowContext = React33.createContext(null);
|
|
8666
8707
|
var useTableRowContext = () => {
|
|
8667
|
-
const ctx =
|
|
8708
|
+
const ctx = React33.useContext(TableRowContext);
|
|
8668
8709
|
if (!ctx) throw new Error("Table components must be used inside <Table>");
|
|
8669
8710
|
return ctx;
|
|
8670
8711
|
};
|
|
8671
8712
|
var TableRowContext_default = TableRowContext;
|
|
8672
8713
|
|
|
8673
8714
|
// src/components/Table/TableCell.tsx
|
|
8674
|
-
import { jsx as
|
|
8675
|
-
var TableCell =
|
|
8715
|
+
import { jsx as jsx340 } from "react/jsx-runtime";
|
|
8716
|
+
var TableCell = React34.memo((props) => {
|
|
8676
8717
|
const {
|
|
8677
8718
|
children,
|
|
8678
8719
|
align = "center",
|
|
@@ -8684,9 +8725,9 @@ var TableCell = React33.memo((props) => {
|
|
|
8684
8725
|
const { registerStickyCell, stickyCells } = useTableRowContext();
|
|
8685
8726
|
const { stickyShadow } = useTableContext();
|
|
8686
8727
|
const headContext = useTableHeadContext();
|
|
8687
|
-
const [left, setLeft] =
|
|
8688
|
-
const cellRef =
|
|
8689
|
-
const calculateLeft =
|
|
8728
|
+
const [left, setLeft] = React34.useState(0);
|
|
8729
|
+
const cellRef = React34.useRef(null);
|
|
8730
|
+
const calculateLeft = React34.useCallback(() => {
|
|
8690
8731
|
if (!cellRef.current) return 0;
|
|
8691
8732
|
let totalLeft = 0;
|
|
8692
8733
|
for (const ref of stickyCells) {
|
|
@@ -8695,7 +8736,7 @@ var TableCell = React33.memo((props) => {
|
|
|
8695
8736
|
}
|
|
8696
8737
|
return totalLeft;
|
|
8697
8738
|
}, [stickyCells]);
|
|
8698
|
-
|
|
8739
|
+
React34.useEffect(() => {
|
|
8699
8740
|
if (!isSticky || !cellRef.current) return;
|
|
8700
8741
|
registerStickyCell(cellRef);
|
|
8701
8742
|
setLeft(calculateLeft());
|
|
@@ -8713,7 +8754,7 @@ var TableCell = React33.memo((props) => {
|
|
|
8713
8754
|
const CellTag = cellRef.current?.tagName === "TH" ? "th" : "td";
|
|
8714
8755
|
const isLastSticky = isSticky && stickyCells[stickyCells.length - 1] === cellRef;
|
|
8715
8756
|
const enableHover = headContext && headContext.cellHover;
|
|
8716
|
-
return /* @__PURE__ */
|
|
8757
|
+
return /* @__PURE__ */ jsx340(
|
|
8717
8758
|
CellTag,
|
|
8718
8759
|
{
|
|
8719
8760
|
ref: cellRef,
|
|
@@ -8738,21 +8779,21 @@ TableCell.displayName = "TableCell";
|
|
|
8738
8779
|
var TableCell_default = TableCell;
|
|
8739
8780
|
|
|
8740
8781
|
// src/components/Table/TableHead.tsx
|
|
8741
|
-
import { jsx as
|
|
8782
|
+
import { jsx as jsx341 } from "react/jsx-runtime";
|
|
8742
8783
|
var TableHead = ({
|
|
8743
8784
|
children,
|
|
8744
8785
|
cellHover = false
|
|
8745
8786
|
}) => {
|
|
8746
8787
|
const { headerSticky } = useTableContext();
|
|
8747
|
-
return /* @__PURE__ */
|
|
8788
|
+
return /* @__PURE__ */ jsx341(TableHeadContext_default.Provider, { value: { cellHover }, children: /* @__PURE__ */ jsx341("thead", { className: clsx_default(headerSticky ? "table-sticky" : null), children }) });
|
|
8748
8789
|
};
|
|
8749
8790
|
TableHead.displayName = "TableHead";
|
|
8750
8791
|
var TableHead_default = TableHead;
|
|
8751
8792
|
|
|
8752
8793
|
// src/components/Table/TableRow.tsx
|
|
8753
|
-
import
|
|
8754
|
-
import { jsx as
|
|
8755
|
-
var TableRow =
|
|
8794
|
+
import React35 from "react";
|
|
8795
|
+
import { jsx as jsx342 } from "react/jsx-runtime";
|
|
8796
|
+
var TableRow = React35.memo((props) => {
|
|
8756
8797
|
const {
|
|
8757
8798
|
children,
|
|
8758
8799
|
type = "secondary",
|
|
@@ -8760,14 +8801,14 @@ var TableRow = React34.memo((props) => {
|
|
|
8760
8801
|
onClick
|
|
8761
8802
|
} = props;
|
|
8762
8803
|
const { rowBorderUse } = useTableContext();
|
|
8763
|
-
const [stickyCells, setStickyCells] =
|
|
8804
|
+
const [stickyCells, setStickyCells] = React35.useState([]);
|
|
8764
8805
|
const registerStickyCell = (ref) => {
|
|
8765
8806
|
setStickyCells((prev) => {
|
|
8766
8807
|
if (prev.includes(ref)) return prev;
|
|
8767
8808
|
return [...prev, ref];
|
|
8768
8809
|
});
|
|
8769
8810
|
};
|
|
8770
|
-
return /* @__PURE__ */
|
|
8811
|
+
return /* @__PURE__ */ jsx342(TableRowContext_default.Provider, { value: { stickyCells, registerStickyCell }, children: /* @__PURE__ */ jsx342(
|
|
8771
8812
|
"tr",
|
|
8772
8813
|
{
|
|
8773
8814
|
className: clsx_default(
|
|
@@ -8785,7 +8826,7 @@ TableRow.displayName = "TableRow";
|
|
|
8785
8826
|
var TableRow_default = TableRow;
|
|
8786
8827
|
|
|
8787
8828
|
// src/components/Tag/Tag.tsx
|
|
8788
|
-
import { jsx as
|
|
8829
|
+
import { jsx as jsx343, jsxs as jsxs218 } from "react/jsx-runtime";
|
|
8789
8830
|
var Tag = (props) => {
|
|
8790
8831
|
const {
|
|
8791
8832
|
children,
|
|
@@ -8806,8 +8847,8 @@ var Tag = (props) => {
|
|
|
8806
8847
|
disabled && "disabled"
|
|
8807
8848
|
),
|
|
8808
8849
|
children: [
|
|
8809
|
-
/* @__PURE__ */
|
|
8810
|
-
onClose && /* @__PURE__ */
|
|
8850
|
+
/* @__PURE__ */ jsx343("span", { className: "tag-label", children }),
|
|
8851
|
+
onClose && /* @__PURE__ */ jsx343("button", { className: "tag-close", onClick: onClose, "aria-label": "\uC0AD\uC81C", disabled, children: /* @__PURE__ */ jsx343(XIcon_default, {}) })
|
|
8811
8852
|
]
|
|
8812
8853
|
}
|
|
8813
8854
|
);
|
|
@@ -8816,12 +8857,12 @@ Tag.displayName = "Tag";
|
|
|
8816
8857
|
var Tag_default = Tag;
|
|
8817
8858
|
|
|
8818
8859
|
// src/components/TextArea/TextArea.tsx
|
|
8819
|
-
import
|
|
8820
|
-
import { jsx as
|
|
8821
|
-
var TextArea =
|
|
8860
|
+
import React36 from "react";
|
|
8861
|
+
import { jsx as jsx344 } from "react/jsx-runtime";
|
|
8862
|
+
var TextArea = React36.forwardRef(
|
|
8822
8863
|
(props, ref) => {
|
|
8823
8864
|
const { value, onChange, disabled, ...textareaProps } = props;
|
|
8824
|
-
const localRef =
|
|
8865
|
+
const localRef = React36.useRef(null);
|
|
8825
8866
|
const setRefs = (el) => {
|
|
8826
8867
|
localRef.current = el;
|
|
8827
8868
|
if (!ref) return;
|
|
@@ -8841,21 +8882,21 @@ var TextArea = React35.forwardRef(
|
|
|
8841
8882
|
onChange(event);
|
|
8842
8883
|
}
|
|
8843
8884
|
};
|
|
8844
|
-
|
|
8885
|
+
React36.useEffect(() => {
|
|
8845
8886
|
const el = localRef.current;
|
|
8846
8887
|
if (!el) return;
|
|
8847
8888
|
el.style.height = "0px";
|
|
8848
8889
|
const nextHeight = Math.min(el.scrollHeight, 400);
|
|
8849
8890
|
el.style.height = `${nextHeight}px`;
|
|
8850
8891
|
}, [value]);
|
|
8851
|
-
return /* @__PURE__ */
|
|
8892
|
+
return /* @__PURE__ */ jsx344("div", { className: "lib-xplat-textarea-wrapper", children: /* @__PURE__ */ jsx344(
|
|
8852
8893
|
"div",
|
|
8853
8894
|
{
|
|
8854
8895
|
className: clsx_default(
|
|
8855
8896
|
"lib-xplat-textarea",
|
|
8856
8897
|
disabled ? "disabled" : void 0
|
|
8857
8898
|
),
|
|
8858
|
-
children: /* @__PURE__ */
|
|
8899
|
+
children: /* @__PURE__ */ jsx344(
|
|
8859
8900
|
"textarea",
|
|
8860
8901
|
{
|
|
8861
8902
|
...textareaProps,
|
|
@@ -8873,25 +8914,25 @@ TextArea.displayName = "TextArea";
|
|
|
8873
8914
|
var TextArea_default = TextArea;
|
|
8874
8915
|
|
|
8875
8916
|
// src/components/Toast/Toast.tsx
|
|
8876
|
-
import
|
|
8917
|
+
import React37 from "react";
|
|
8877
8918
|
import { createPortal as createPortal3 } from "react-dom";
|
|
8878
|
-
import { jsx as
|
|
8879
|
-
var ToastContext =
|
|
8919
|
+
import { jsx as jsx345, jsxs as jsxs219 } from "react/jsx-runtime";
|
|
8920
|
+
var ToastContext = React37.createContext(null);
|
|
8880
8921
|
var useToast = () => {
|
|
8881
|
-
const ctx =
|
|
8922
|
+
const ctx = React37.useContext(ToastContext);
|
|
8882
8923
|
if (!ctx) throw new Error("useToast must be used within ToastProvider");
|
|
8883
8924
|
return ctx;
|
|
8884
8925
|
};
|
|
8885
8926
|
var EXIT_DURATION = 300;
|
|
8886
8927
|
var ToastItemComponent = ({ item, isExiting, onClose }) => {
|
|
8887
|
-
const ref =
|
|
8888
|
-
const [height, setHeight] =
|
|
8889
|
-
|
|
8928
|
+
const ref = React37.useRef(null);
|
|
8929
|
+
const [height, setHeight] = React37.useState(void 0);
|
|
8930
|
+
React37.useEffect(() => {
|
|
8890
8931
|
if (ref.current && !isExiting) {
|
|
8891
8932
|
setHeight(ref.current.offsetHeight);
|
|
8892
8933
|
}
|
|
8893
8934
|
}, [isExiting]);
|
|
8894
|
-
return /* @__PURE__ */
|
|
8935
|
+
return /* @__PURE__ */ jsx345(
|
|
8895
8936
|
"div",
|
|
8896
8937
|
{
|
|
8897
8938
|
className: clsx_default("lib-xplat-toast-wrapper", { exit: isExiting }),
|
|
@@ -8906,8 +8947,8 @@ var ToastItemComponent = ({ item, isExiting, onClose }) => {
|
|
|
8906
8947
|
className: clsx_default("lib-xplat-toast", item.type, { exit: isExiting }),
|
|
8907
8948
|
role: "alert",
|
|
8908
8949
|
children: [
|
|
8909
|
-
/* @__PURE__ */
|
|
8910
|
-
/* @__PURE__ */
|
|
8950
|
+
/* @__PURE__ */ jsx345("span", { className: "message", children: item.message }),
|
|
8951
|
+
/* @__PURE__ */ jsx345("button", { className: "close-btn", onClick: onClose, "aria-label": "\uB2EB\uAE30", children: "\xD7" })
|
|
8911
8952
|
]
|
|
8912
8953
|
}
|
|
8913
8954
|
)
|
|
@@ -8918,13 +8959,13 @@ var ToastProvider = ({
|
|
|
8918
8959
|
children,
|
|
8919
8960
|
position = "top-right"
|
|
8920
8961
|
}) => {
|
|
8921
|
-
const [toasts, setToasts] =
|
|
8922
|
-
const [removing, setRemoving] =
|
|
8923
|
-
const [mounted, setMounted] =
|
|
8924
|
-
|
|
8962
|
+
const [toasts, setToasts] = React37.useState([]);
|
|
8963
|
+
const [removing, setRemoving] = React37.useState(/* @__PURE__ */ new Set());
|
|
8964
|
+
const [mounted, setMounted] = React37.useState(false);
|
|
8965
|
+
React37.useEffect(() => {
|
|
8925
8966
|
setMounted(true);
|
|
8926
8967
|
}, []);
|
|
8927
|
-
const remove =
|
|
8968
|
+
const remove = React37.useCallback((id) => {
|
|
8928
8969
|
setRemoving((prev) => new Set(prev).add(id));
|
|
8929
8970
|
setTimeout(() => {
|
|
8930
8971
|
setToasts((prev) => prev.filter((t) => t.id !== id));
|
|
@@ -8935,7 +8976,7 @@ var ToastProvider = ({
|
|
|
8935
8976
|
});
|
|
8936
8977
|
}, EXIT_DURATION);
|
|
8937
8978
|
}, []);
|
|
8938
|
-
const toast =
|
|
8979
|
+
const toast = React37.useCallback(
|
|
8939
8980
|
(type, message, duration = 3e3) => {
|
|
8940
8981
|
const id = `${Date.now()}-${Math.random()}`;
|
|
8941
8982
|
setToasts((prev) => [...prev, { id, type, message }]);
|
|
@@ -8948,7 +8989,7 @@ var ToastProvider = ({
|
|
|
8948
8989
|
return /* @__PURE__ */ jsxs219(ToastContext.Provider, { value: { toast }, children: [
|
|
8949
8990
|
children,
|
|
8950
8991
|
mounted && createPortal3(
|
|
8951
|
-
/* @__PURE__ */
|
|
8992
|
+
/* @__PURE__ */ jsx345("div", { className: clsx_default("lib-xplat-toast-container", position), children: toasts.map((t) => /* @__PURE__ */ jsx345(
|
|
8952
8993
|
ToastItemComponent,
|
|
8953
8994
|
{
|
|
8954
8995
|
item: t,
|
|
@@ -8964,29 +9005,29 @@ var ToastProvider = ({
|
|
|
8964
9005
|
ToastProvider.displayName = "ToastProvider";
|
|
8965
9006
|
|
|
8966
9007
|
// src/components/Tooltip/Tooltip.tsx
|
|
8967
|
-
import
|
|
8968
|
-
import { jsx as
|
|
9008
|
+
import React38 from "react";
|
|
9009
|
+
import { jsx as jsx346, jsxs as jsxs220 } from "react/jsx-runtime";
|
|
8969
9010
|
var Tooltip = (props) => {
|
|
8970
9011
|
const {
|
|
8971
9012
|
type = "primary",
|
|
8972
9013
|
description,
|
|
8973
9014
|
children
|
|
8974
9015
|
} = props;
|
|
8975
|
-
const iconRef =
|
|
9016
|
+
const iconRef = React38.useRef(null);
|
|
8976
9017
|
return /* @__PURE__ */ jsxs220("div", { className: "lib-xplat-tooltip", children: [
|
|
8977
|
-
/* @__PURE__ */
|
|
8978
|
-
/* @__PURE__ */
|
|
9018
|
+
/* @__PURE__ */ jsx346("div", { className: "tooltip-content", ref: iconRef, children: children || "Tooltip" }),
|
|
9019
|
+
/* @__PURE__ */ jsx346("div", { className: clsx_default("tooltip-wrapper", type), children: description })
|
|
8979
9020
|
] });
|
|
8980
9021
|
};
|
|
8981
9022
|
Tooltip.displayName = "Tooltip";
|
|
8982
9023
|
var Tooltip_default = Tooltip;
|
|
8983
9024
|
|
|
8984
9025
|
// src/components/Video/Video.tsx
|
|
8985
|
-
import
|
|
8986
|
-
import { jsx as
|
|
9026
|
+
import React39 from "react";
|
|
9027
|
+
import { jsx as jsx347, jsxs as jsxs221 } from "react/jsx-runtime";
|
|
8987
9028
|
var PipIcon = () => /* @__PURE__ */ jsxs221("svg", { viewBox: "0 0 24 24", width: "1em", height: "1em", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
|
|
8988
|
-
/* @__PURE__ */
|
|
8989
|
-
/* @__PURE__ */
|
|
9029
|
+
/* @__PURE__ */ jsx347("rect", { x: "3", y: "5", width: "18", height: "14", rx: "2" }),
|
|
9030
|
+
/* @__PURE__ */ jsx347("rect", { x: "12", y: "11", width: "7", height: "6", rx: "1", fill: "currentColor" })
|
|
8990
9031
|
] });
|
|
8991
9032
|
var formatTime = (sec) => {
|
|
8992
9033
|
if (!Number.isFinite(sec) || sec < 0) return "0:00";
|
|
@@ -8994,7 +9035,7 @@ var formatTime = (sec) => {
|
|
|
8994
9035
|
const s = Math.floor(sec % 60);
|
|
8995
9036
|
return `${m}:${s.toString().padStart(2, "0")}`;
|
|
8996
9037
|
};
|
|
8997
|
-
var Video =
|
|
9038
|
+
var Video = React39.forwardRef((props, ref) => {
|
|
8998
9039
|
const {
|
|
8999
9040
|
src,
|
|
9000
9041
|
poster,
|
|
@@ -9018,21 +9059,21 @@ var Video = React38.forwardRef((props, ref) => {
|
|
|
9018
9059
|
children,
|
|
9019
9060
|
...rest
|
|
9020
9061
|
} = props;
|
|
9021
|
-
const containerRef =
|
|
9022
|
-
const videoRef =
|
|
9023
|
-
const [isPlaying, setIsPlaying] =
|
|
9024
|
-
const [isLoaded, setIsLoaded] =
|
|
9025
|
-
const [currentTime, setCurrentTime] =
|
|
9026
|
-
const [duration, setDuration] =
|
|
9027
|
-
const [buffered, setBuffered] =
|
|
9028
|
-
const [volume, setVolume] =
|
|
9029
|
-
const [isMuted, setIsMuted] =
|
|
9030
|
-
const [isFullscreen, setIsFullscreen] =
|
|
9031
|
-
const [playbackRate, setPlaybackRate] =
|
|
9032
|
-
const [rateMenuOpen, setRateMenuOpen] =
|
|
9033
|
-
const [captionsOn, setCaptionsOn] =
|
|
9034
|
-
const [isPip, setIsPip] =
|
|
9035
|
-
const setRefs =
|
|
9062
|
+
const containerRef = React39.useRef(null);
|
|
9063
|
+
const videoRef = React39.useRef(null);
|
|
9064
|
+
const [isPlaying, setIsPlaying] = React39.useState(Boolean(autoPlay));
|
|
9065
|
+
const [isLoaded, setIsLoaded] = React39.useState(false);
|
|
9066
|
+
const [currentTime, setCurrentTime] = React39.useState(0);
|
|
9067
|
+
const [duration, setDuration] = React39.useState(0);
|
|
9068
|
+
const [buffered, setBuffered] = React39.useState(0);
|
|
9069
|
+
const [volume, setVolume] = React39.useState(1);
|
|
9070
|
+
const [isMuted, setIsMuted] = React39.useState(Boolean(muted));
|
|
9071
|
+
const [isFullscreen, setIsFullscreen] = React39.useState(false);
|
|
9072
|
+
const [playbackRate, setPlaybackRate] = React39.useState(1);
|
|
9073
|
+
const [rateMenuOpen, setRateMenuOpen] = React39.useState(false);
|
|
9074
|
+
const [captionsOn, setCaptionsOn] = React39.useState(false);
|
|
9075
|
+
const [isPip, setIsPip] = React39.useState(false);
|
|
9076
|
+
const setRefs = React39.useCallback(
|
|
9036
9077
|
(el) => {
|
|
9037
9078
|
videoRef.current = el;
|
|
9038
9079
|
if (typeof ref === "function") ref(el);
|
|
@@ -9040,14 +9081,14 @@ var Video = React38.forwardRef((props, ref) => {
|
|
|
9040
9081
|
},
|
|
9041
9082
|
[ref]
|
|
9042
9083
|
);
|
|
9043
|
-
|
|
9084
|
+
React39.useEffect(() => {
|
|
9044
9085
|
const onFsChange = () => {
|
|
9045
9086
|
setIsFullscreen(document.fullscreenElement === containerRef.current);
|
|
9046
9087
|
};
|
|
9047
9088
|
document.addEventListener("fullscreenchange", onFsChange);
|
|
9048
9089
|
return () => document.removeEventListener("fullscreenchange", onFsChange);
|
|
9049
9090
|
}, []);
|
|
9050
|
-
|
|
9091
|
+
React39.useEffect(() => {
|
|
9051
9092
|
const v = videoRef.current;
|
|
9052
9093
|
if (!v) return;
|
|
9053
9094
|
const onEnter = () => setIsPip(true);
|
|
@@ -9167,7 +9208,7 @@ var Video = React38.forwardRef((props, ref) => {
|
|
|
9167
9208
|
ref: containerRef,
|
|
9168
9209
|
className: clsx_default("lib-xplat-video", showControls && "has-controls"),
|
|
9169
9210
|
children: [
|
|
9170
|
-
/* @__PURE__ */
|
|
9211
|
+
/* @__PURE__ */ jsx347(
|
|
9171
9212
|
"video",
|
|
9172
9213
|
{
|
|
9173
9214
|
ref: setRefs,
|
|
@@ -9188,7 +9229,7 @@ var Video = React38.forwardRef((props, ref) => {
|
|
|
9188
9229
|
children
|
|
9189
9230
|
}
|
|
9190
9231
|
),
|
|
9191
|
-
showCenterPlay && /* @__PURE__ */
|
|
9232
|
+
showCenterPlay && /* @__PURE__ */ jsx347(
|
|
9192
9233
|
"button",
|
|
9193
9234
|
{
|
|
9194
9235
|
type: "button",
|
|
@@ -9200,11 +9241,11 @@ var Video = React38.forwardRef((props, ref) => {
|
|
|
9200
9241
|
onClick: togglePlay,
|
|
9201
9242
|
"aria-label": isPlaying ? "\uC77C\uC2DC\uC815\uC9C0" : "\uC7AC\uC0DD",
|
|
9202
9243
|
tabIndex: -1,
|
|
9203
|
-
children: /* @__PURE__ */
|
|
9244
|
+
children: /* @__PURE__ */ jsx347("span", { className: "center-play-icon", children: /* @__PURE__ */ jsx347(PlayCircleIcon_default, {}) })
|
|
9204
9245
|
}
|
|
9205
9246
|
),
|
|
9206
9247
|
showControls && /* @__PURE__ */ jsxs221("div", { className: "controls", onClick: (e) => e.stopPropagation(), children: [
|
|
9207
|
-
/* @__PURE__ */
|
|
9248
|
+
/* @__PURE__ */ jsx347(
|
|
9208
9249
|
"input",
|
|
9209
9250
|
{
|
|
9210
9251
|
type: "range",
|
|
@@ -9222,28 +9263,28 @@ var Video = React38.forwardRef((props, ref) => {
|
|
|
9222
9263
|
}
|
|
9223
9264
|
),
|
|
9224
9265
|
/* @__PURE__ */ jsxs221("div", { className: "controls-row", children: [
|
|
9225
|
-
/* @__PURE__ */
|
|
9266
|
+
/* @__PURE__ */ jsx347(
|
|
9226
9267
|
"button",
|
|
9227
9268
|
{
|
|
9228
9269
|
type: "button",
|
|
9229
9270
|
className: "control-btn",
|
|
9230
9271
|
onClick: togglePlay,
|
|
9231
9272
|
"aria-label": isPlaying ? "\uC77C\uC2DC\uC815\uC9C0" : "\uC7AC\uC0DD",
|
|
9232
|
-
children: isPlaying ? /* @__PURE__ */
|
|
9273
|
+
children: isPlaying ? /* @__PURE__ */ jsx347(PauseIcon_default, {}) : /* @__PURE__ */ jsx347(PlayIcon_default, {})
|
|
9233
9274
|
}
|
|
9234
9275
|
),
|
|
9235
9276
|
/* @__PURE__ */ jsxs221("div", { className: "volume-group", children: [
|
|
9236
|
-
/* @__PURE__ */
|
|
9277
|
+
/* @__PURE__ */ jsx347(
|
|
9237
9278
|
"button",
|
|
9238
9279
|
{
|
|
9239
9280
|
type: "button",
|
|
9240
9281
|
className: "control-btn",
|
|
9241
9282
|
onClick: toggleMute,
|
|
9242
9283
|
"aria-label": isMuted ? "\uC74C\uC18C\uAC70 \uD574\uC81C" : "\uC74C\uC18C\uAC70",
|
|
9243
|
-
children: /* @__PURE__ */
|
|
9284
|
+
children: /* @__PURE__ */ jsx347(VolumeGlyph, {})
|
|
9244
9285
|
}
|
|
9245
9286
|
),
|
|
9246
|
-
/* @__PURE__ */
|
|
9287
|
+
/* @__PURE__ */ jsx347(
|
|
9247
9288
|
"input",
|
|
9248
9289
|
{
|
|
9249
9290
|
type: "range",
|
|
@@ -9263,7 +9304,7 @@ var Video = React38.forwardRef((props, ref) => {
|
|
|
9263
9304
|
" / ",
|
|
9264
9305
|
formatTime(duration)
|
|
9265
9306
|
] }),
|
|
9266
|
-
/* @__PURE__ */
|
|
9307
|
+
/* @__PURE__ */ jsx347("div", { className: "controls-spacer" }),
|
|
9267
9308
|
playbackRates && playbackRates.length > 0 && /* @__PURE__ */ jsxs221("div", { className: clsx_default("rate-group", rateMenuOpen && "is-open"), children: [
|
|
9268
9309
|
/* @__PURE__ */ jsxs221(
|
|
9269
9310
|
"button",
|
|
@@ -9279,7 +9320,7 @@ var Video = React38.forwardRef((props, ref) => {
|
|
|
9279
9320
|
]
|
|
9280
9321
|
}
|
|
9281
9322
|
),
|
|
9282
|
-
rateMenuOpen && /* @__PURE__ */
|
|
9323
|
+
rateMenuOpen && /* @__PURE__ */ jsx347("ul", { className: "rate-menu", role: "menu", children: playbackRates.map((r2) => /* @__PURE__ */ jsx347("li", { children: /* @__PURE__ */ jsxs221(
|
|
9283
9324
|
"button",
|
|
9284
9325
|
{
|
|
9285
9326
|
type: "button",
|
|
@@ -9293,7 +9334,7 @@ var Video = React38.forwardRef((props, ref) => {
|
|
|
9293
9334
|
}
|
|
9294
9335
|
) }, r2)) })
|
|
9295
9336
|
] }),
|
|
9296
|
-
showCaptions && /* @__PURE__ */
|
|
9337
|
+
showCaptions && /* @__PURE__ */ jsx347(
|
|
9297
9338
|
"button",
|
|
9298
9339
|
{
|
|
9299
9340
|
type: "button",
|
|
@@ -9301,37 +9342,37 @@ var Video = React38.forwardRef((props, ref) => {
|
|
|
9301
9342
|
onClick: toggleCaptions,
|
|
9302
9343
|
"aria-label": captionsOn ? "\uC790\uB9C9 \uB044\uAE30" : "\uC790\uB9C9 \uCF1C\uAE30",
|
|
9303
9344
|
"aria-pressed": captionsOn,
|
|
9304
|
-
children: /* @__PURE__ */
|
|
9345
|
+
children: /* @__PURE__ */ jsx347(TypeIcon_default, {})
|
|
9305
9346
|
}
|
|
9306
9347
|
),
|
|
9307
|
-
showPip && pipSupported && /* @__PURE__ */
|
|
9348
|
+
showPip && pipSupported && /* @__PURE__ */ jsx347(
|
|
9308
9349
|
"button",
|
|
9309
9350
|
{
|
|
9310
9351
|
type: "button",
|
|
9311
9352
|
className: clsx_default("control-btn", isPip && "is-active"),
|
|
9312
9353
|
onClick: togglePip,
|
|
9313
9354
|
"aria-label": isPip ? "PIP \uC885\uB8CC" : "PIP",
|
|
9314
|
-
children: /* @__PURE__ */
|
|
9355
|
+
children: /* @__PURE__ */ jsx347(PipIcon, {})
|
|
9315
9356
|
}
|
|
9316
9357
|
),
|
|
9317
|
-
showDownload && /* @__PURE__ */
|
|
9358
|
+
showDownload && /* @__PURE__ */ jsx347(
|
|
9318
9359
|
"a",
|
|
9319
9360
|
{
|
|
9320
9361
|
className: "control-btn",
|
|
9321
9362
|
href: src,
|
|
9322
9363
|
download: downloadFileName ?? true,
|
|
9323
9364
|
"aria-label": "\uB2E4\uC6B4\uB85C\uB4DC",
|
|
9324
|
-
children: /* @__PURE__ */
|
|
9365
|
+
children: /* @__PURE__ */ jsx347(DownloadIcon_default, {})
|
|
9325
9366
|
}
|
|
9326
9367
|
),
|
|
9327
|
-
/* @__PURE__ */
|
|
9368
|
+
/* @__PURE__ */ jsx347(
|
|
9328
9369
|
"button",
|
|
9329
9370
|
{
|
|
9330
9371
|
type: "button",
|
|
9331
9372
|
className: "control-btn",
|
|
9332
9373
|
onClick: toggleFullscreen,
|
|
9333
9374
|
"aria-label": isFullscreen ? "\uC804\uCCB4\uD654\uBA74 \uC885\uB8CC" : "\uC804\uCCB4\uD654\uBA74",
|
|
9334
|
-
children: isFullscreen ? /* @__PURE__ */
|
|
9375
|
+
children: isFullscreen ? /* @__PURE__ */ jsx347(MinimizeIcon_default, {}) : /* @__PURE__ */ jsx347(MaximizeIcon_default, {})
|
|
9335
9376
|
}
|
|
9336
9377
|
)
|
|
9337
9378
|
] })
|
|
@@ -9344,10 +9385,10 @@ Video.displayName = "Video";
|
|
|
9344
9385
|
var Video_default = Video;
|
|
9345
9386
|
|
|
9346
9387
|
// src/layout/Grid/FullGrid/FullGrid.tsx
|
|
9347
|
-
import { jsx as
|
|
9388
|
+
import { jsx as jsx348 } from "react/jsx-runtime";
|
|
9348
9389
|
var FullGrid = (props) => {
|
|
9349
9390
|
const { children, gap } = props;
|
|
9350
|
-
return /* @__PURE__ */
|
|
9391
|
+
return /* @__PURE__ */ jsx348(
|
|
9351
9392
|
"div",
|
|
9352
9393
|
{
|
|
9353
9394
|
className: "lib-xplat-full-grid",
|
|
@@ -9360,10 +9401,10 @@ FullGrid.displayName = "FullGrid";
|
|
|
9360
9401
|
var FullGrid_default = FullGrid;
|
|
9361
9402
|
|
|
9362
9403
|
// src/layout/Grid/FullScreen/FullScreen.tsx
|
|
9363
|
-
import { jsx as
|
|
9404
|
+
import { jsx as jsx349 } from "react/jsx-runtime";
|
|
9364
9405
|
var FullScreen = (props) => {
|
|
9365
9406
|
const { children, gap } = props;
|
|
9366
|
-
return /* @__PURE__ */
|
|
9407
|
+
return /* @__PURE__ */ jsx349(
|
|
9367
9408
|
"div",
|
|
9368
9409
|
{
|
|
9369
9410
|
className: "lib-xplat-full-screen",
|
|
@@ -9376,7 +9417,7 @@ FullScreen.displayName = "FullScreen";
|
|
|
9376
9417
|
var FullScreen_default = FullScreen;
|
|
9377
9418
|
|
|
9378
9419
|
// src/layout/Grid/Item/Item.tsx
|
|
9379
|
-
import { jsx as
|
|
9420
|
+
import { jsx as jsx350 } from "react/jsx-runtime";
|
|
9380
9421
|
var calculateSpans = (column) => {
|
|
9381
9422
|
const spans = {};
|
|
9382
9423
|
let inherited = column.default;
|
|
@@ -9393,35 +9434,35 @@ var GridItem = ({ column, children, className }) => {
|
|
|
9393
9434
|
Object.entries(spans).forEach(([key, value]) => {
|
|
9394
9435
|
style[`--column-${key}`] = value;
|
|
9395
9436
|
});
|
|
9396
|
-
return /* @__PURE__ */
|
|
9437
|
+
return /* @__PURE__ */ jsx350("div", { className: clsx_default("lib-xplat-grid-item", className), style, children });
|
|
9397
9438
|
};
|
|
9398
9439
|
GridItem.displayName = "GridItem";
|
|
9399
9440
|
var Item_default = GridItem;
|
|
9400
9441
|
|
|
9401
9442
|
// src/layout/Header/Header.tsx
|
|
9402
|
-
import { jsx as
|
|
9443
|
+
import { jsx as jsx351, jsxs as jsxs222 } from "react/jsx-runtime";
|
|
9403
9444
|
var Header = ({
|
|
9404
9445
|
logo,
|
|
9405
9446
|
centerContent,
|
|
9406
9447
|
rightContent
|
|
9407
9448
|
}) => {
|
|
9408
9449
|
return /* @__PURE__ */ jsxs222("div", { className: "lib-xplat-layout-header", children: [
|
|
9409
|
-
/* @__PURE__ */
|
|
9410
|
-
/* @__PURE__ */
|
|
9411
|
-
/* @__PURE__ */
|
|
9450
|
+
/* @__PURE__ */ jsx351("div", { children: logo }),
|
|
9451
|
+
/* @__PURE__ */ jsx351("div", { children: centerContent }),
|
|
9452
|
+
/* @__PURE__ */ jsx351("div", { children: rightContent })
|
|
9412
9453
|
] });
|
|
9413
9454
|
};
|
|
9414
9455
|
Header.displayName = "Header";
|
|
9415
9456
|
var Header_default = Header;
|
|
9416
9457
|
|
|
9417
9458
|
// src/layout/Layout/Layout.tsx
|
|
9418
|
-
import { Fragment as
|
|
9459
|
+
import { Fragment as Fragment5, jsx as jsx352, jsxs as jsxs223 } from "react/jsx-runtime";
|
|
9419
9460
|
var Layout = (props) => {
|
|
9420
9461
|
const { header, sideBar, children } = props;
|
|
9421
|
-
return /* @__PURE__ */
|
|
9422
|
-
sideBar && /* @__PURE__ */
|
|
9462
|
+
return /* @__PURE__ */ jsx352("div", { className: "lib-xplat-layout", children: /* @__PURE__ */ jsxs223("div", { className: "lib-xplat-layout-content-wrapper", children: [
|
|
9463
|
+
sideBar && /* @__PURE__ */ jsx352(Fragment5, { children: sideBar }),
|
|
9423
9464
|
/* @__PURE__ */ jsxs223("div", { className: "lib-xplat-layout-content", children: [
|
|
9424
|
-
header && /* @__PURE__ */
|
|
9465
|
+
header && /* @__PURE__ */ jsx352("div", { className: "lib-xplat-layout-conent-header", children: header }),
|
|
9425
9466
|
children
|
|
9426
9467
|
] })
|
|
9427
9468
|
] }) });
|
|
@@ -9430,31 +9471,31 @@ Layout.displayName = "Layout";
|
|
|
9430
9471
|
var Layout_default = Layout;
|
|
9431
9472
|
|
|
9432
9473
|
// src/layout/SideBar/SideBar.tsx
|
|
9433
|
-
import
|
|
9474
|
+
import React41 from "react";
|
|
9434
9475
|
|
|
9435
9476
|
// src/layout/SideBar/SideBarContext.tsx
|
|
9436
|
-
import
|
|
9437
|
-
var SideBarContext =
|
|
9477
|
+
import React40 from "react";
|
|
9478
|
+
var SideBarContext = React40.createContext(null);
|
|
9438
9479
|
var useSideBarContext = () => {
|
|
9439
|
-
const ctx =
|
|
9480
|
+
const ctx = React40.useContext(SideBarContext);
|
|
9440
9481
|
if (!ctx) throw new Error("Error");
|
|
9441
9482
|
return ctx;
|
|
9442
9483
|
};
|
|
9443
9484
|
var SideBarContext_default = SideBarContext;
|
|
9444
9485
|
|
|
9445
9486
|
// src/layout/SideBar/SideBar.tsx
|
|
9446
|
-
import { jsx as
|
|
9487
|
+
import { jsx as jsx353 } from "react/jsx-runtime";
|
|
9447
9488
|
var SideBar = (props) => {
|
|
9448
9489
|
const { children, className } = props;
|
|
9449
|
-
const [isOpen, setIsOpen] =
|
|
9490
|
+
const [isOpen, setIsOpen] = React41.useState(true);
|
|
9450
9491
|
const handleSwitchSideBar = () => {
|
|
9451
9492
|
setIsOpen((prev) => !prev);
|
|
9452
9493
|
};
|
|
9453
|
-
return /* @__PURE__ */
|
|
9494
|
+
return /* @__PURE__ */ jsx353(
|
|
9454
9495
|
SideBarContext_default.Provider,
|
|
9455
9496
|
{
|
|
9456
9497
|
value: { isSidebarOpen: isOpen, handleSwitchSideBar },
|
|
9457
|
-
children: /* @__PURE__ */
|
|
9498
|
+
children: /* @__PURE__ */ jsx353(
|
|
9458
9499
|
"div",
|
|
9459
9500
|
{
|
|
9460
9501
|
className: clsx_default(
|