@x-plat/design-system 0.5.21 → 0.5.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/ChatInput/index.cjs +214 -0
- package/dist/components/ChatInput/index.css +133 -0
- package/dist/components/ChatInput/index.d.cts +14 -0
- package/dist/components/ChatInput/index.d.ts +14 -0
- package/dist/components/ChatInput/index.js +177 -0
- package/dist/components/Table/index.cjs +2 -1
- package/dist/components/Table/index.css +117 -0
- package/dist/components/Table/index.d.cts +3 -1
- package/dist/components/Table/index.d.ts +3 -1
- package/dist/components/Table/index.js +2 -1
- package/dist/components/index.cjs +655 -573
- package/dist/components/index.css +251 -46
- package/dist/components/index.d.cts +1 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.js +653 -572
- package/dist/index.cjs +664 -597
- package/dist/index.css +251 -46
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +662 -596
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -6035,30 +6035,151 @@ var Calendar = (props) => {
|
|
|
6035
6035
|
Calendar.displayName = "Calendar";
|
|
6036
6036
|
var Calendar_default = Calendar;
|
|
6037
6037
|
|
|
6038
|
+
// src/components/ChatInput/ChatInput.tsx
|
|
6039
|
+
import React5 from "react";
|
|
6040
|
+
|
|
6041
|
+
// src/components/TextArea/TextArea.tsx
|
|
6042
|
+
import React4 from "react";
|
|
6043
|
+
import { jsx as jsx302 } from "react/jsx-runtime";
|
|
6044
|
+
var TextArea = React4.forwardRef(
|
|
6045
|
+
(props, ref) => {
|
|
6046
|
+
const { value, onChange, disabled, ...textareaProps } = props;
|
|
6047
|
+
const localRef = React4.useRef(null);
|
|
6048
|
+
const setRefs = (el) => {
|
|
6049
|
+
localRef.current = el;
|
|
6050
|
+
if (!ref) return;
|
|
6051
|
+
if (typeof ref === "function") {
|
|
6052
|
+
ref(el);
|
|
6053
|
+
} else if (ref && typeof ref === "object" && "current" in ref) {
|
|
6054
|
+
ref.current = el;
|
|
6055
|
+
}
|
|
6056
|
+
};
|
|
6057
|
+
const handleOnChange = (e) => {
|
|
6058
|
+
const val = e.target.value;
|
|
6059
|
+
if (onChange) {
|
|
6060
|
+
const event = {
|
|
6061
|
+
...e,
|
|
6062
|
+
target: { value: val }
|
|
6063
|
+
};
|
|
6064
|
+
onChange(event);
|
|
6065
|
+
}
|
|
6066
|
+
};
|
|
6067
|
+
React4.useEffect(() => {
|
|
6068
|
+
const el = localRef.current;
|
|
6069
|
+
if (!el) return;
|
|
6070
|
+
el.style.height = "0px";
|
|
6071
|
+
const nextHeight = Math.min(el.scrollHeight, 400);
|
|
6072
|
+
el.style.height = `${nextHeight}px`;
|
|
6073
|
+
}, [value]);
|
|
6074
|
+
return /* @__PURE__ */ jsx302("div", { className: "lib-xplat-textarea-wrapper", children: /* @__PURE__ */ jsx302(
|
|
6075
|
+
"div",
|
|
6076
|
+
{
|
|
6077
|
+
className: clsx_default(
|
|
6078
|
+
"lib-xplat-textarea",
|
|
6079
|
+
disabled ? "disabled" : void 0
|
|
6080
|
+
),
|
|
6081
|
+
children: /* @__PURE__ */ jsx302(
|
|
6082
|
+
"textarea",
|
|
6083
|
+
{
|
|
6084
|
+
...textareaProps,
|
|
6085
|
+
ref: setRefs,
|
|
6086
|
+
disabled,
|
|
6087
|
+
value,
|
|
6088
|
+
onChange: handleOnChange
|
|
6089
|
+
}
|
|
6090
|
+
)
|
|
6091
|
+
}
|
|
6092
|
+
) });
|
|
6093
|
+
}
|
|
6094
|
+
);
|
|
6095
|
+
TextArea.displayName = "TextArea";
|
|
6096
|
+
var TextArea_default = TextArea;
|
|
6097
|
+
|
|
6098
|
+
// src/components/ChatInput/ChatInput.tsx
|
|
6099
|
+
import { jsx as jsx303, jsxs as jsxs194 } from "react/jsx-runtime";
|
|
6100
|
+
var ChatInput = React5.forwardRef(
|
|
6101
|
+
(props, ref) => {
|
|
6102
|
+
const {
|
|
6103
|
+
placeholder,
|
|
6104
|
+
value: valueProp,
|
|
6105
|
+
disabled = false,
|
|
6106
|
+
buttonType = "primary",
|
|
6107
|
+
onSubmit,
|
|
6108
|
+
onChange
|
|
6109
|
+
} = props;
|
|
6110
|
+
const isControlled = valueProp !== void 0;
|
|
6111
|
+
const [internalValue, setInternalValue] = React5.useState("");
|
|
6112
|
+
const value = isControlled ? valueProp : internalValue;
|
|
6113
|
+
const hasText = value.trim().length > 0;
|
|
6114
|
+
const handleChange = (e) => {
|
|
6115
|
+
const val = e.target.value;
|
|
6116
|
+
if (!isControlled) setInternalValue(val);
|
|
6117
|
+
onChange?.(val);
|
|
6118
|
+
};
|
|
6119
|
+
const handleSubmit = () => {
|
|
6120
|
+
if (!hasText || disabled) return;
|
|
6121
|
+
onSubmit?.(value);
|
|
6122
|
+
if (!isControlled) setInternalValue("");
|
|
6123
|
+
};
|
|
6124
|
+
const handleKeyDown = (e) => {
|
|
6125
|
+
if (e.key === "Enter" && !e.shiftKey) {
|
|
6126
|
+
e.preventDefault();
|
|
6127
|
+
handleSubmit();
|
|
6128
|
+
}
|
|
6129
|
+
};
|
|
6130
|
+
return /* @__PURE__ */ jsxs194("div", { className: clsx_default("lib-xplat-chat-input", disabled && "disabled"), children: [
|
|
6131
|
+
/* @__PURE__ */ jsx303(
|
|
6132
|
+
TextArea_default,
|
|
6133
|
+
{
|
|
6134
|
+
ref,
|
|
6135
|
+
placeholder,
|
|
6136
|
+
value,
|
|
6137
|
+
disabled,
|
|
6138
|
+
onChange: handleChange,
|
|
6139
|
+
onKeyDown: handleKeyDown
|
|
6140
|
+
}
|
|
6141
|
+
),
|
|
6142
|
+
/* @__PURE__ */ jsx303(
|
|
6143
|
+
"button",
|
|
6144
|
+
{
|
|
6145
|
+
type: "button",
|
|
6146
|
+
className: clsx_default("chat-input-send", `btn-${buttonType}`),
|
|
6147
|
+
disabled: !hasText || disabled,
|
|
6148
|
+
onClick: handleSubmit,
|
|
6149
|
+
"aria-label": "\uC804\uC1A1",
|
|
6150
|
+
children: /* @__PURE__ */ jsx303(SendIcon_default, {})
|
|
6151
|
+
}
|
|
6152
|
+
)
|
|
6153
|
+
] });
|
|
6154
|
+
}
|
|
6155
|
+
);
|
|
6156
|
+
ChatInput.displayName = "ChatInput";
|
|
6157
|
+
var ChatInput_default = ChatInput;
|
|
6158
|
+
|
|
6038
6159
|
// src/components/Box/Box.tsx
|
|
6039
|
-
import { jsx as
|
|
6160
|
+
import { jsx as jsx304, jsxs as jsxs195 } from "react/jsx-runtime";
|
|
6040
6161
|
var Box = ({
|
|
6041
6162
|
children,
|
|
6042
6163
|
title,
|
|
6043
6164
|
variant = "outlined",
|
|
6044
6165
|
padding = "md"
|
|
6045
6166
|
}) => {
|
|
6046
|
-
return /* @__PURE__ */
|
|
6047
|
-
title && /* @__PURE__ */
|
|
6048
|
-
/* @__PURE__ */
|
|
6167
|
+
return /* @__PURE__ */ jsxs195("div", { className: clsx_default("lib-xplat-box", variant, `pad-${padding}`), children: [
|
|
6168
|
+
title && /* @__PURE__ */ jsx304("div", { className: "box-title", children: title }),
|
|
6169
|
+
/* @__PURE__ */ jsx304("div", { className: "box-content", children })
|
|
6049
6170
|
] });
|
|
6050
6171
|
};
|
|
6051
6172
|
Box.displayName = "Box";
|
|
6052
6173
|
var Box_default = Box;
|
|
6053
6174
|
|
|
6054
6175
|
// src/components/CardTab/CardTab.tsx
|
|
6055
|
-
import
|
|
6176
|
+
import React6 from "react";
|
|
6056
6177
|
|
|
6057
6178
|
// src/components/CardTab/CardTabPanel.tsx
|
|
6058
|
-
import { jsx as
|
|
6179
|
+
import { jsx as jsx305 } from "react/jsx-runtime";
|
|
6059
6180
|
var CardTabPanel = (props) => {
|
|
6060
6181
|
const { children, columns = 3 } = props;
|
|
6061
|
-
return /* @__PURE__ */
|
|
6182
|
+
return /* @__PURE__ */ jsx305(
|
|
6062
6183
|
"div",
|
|
6063
6184
|
{
|
|
6064
6185
|
className: "card-tab-panel",
|
|
@@ -6071,7 +6192,7 @@ CardTabPanel.displayName = "CardTab.Panel";
|
|
|
6071
6192
|
var CardTabPanel_default = CardTabPanel;
|
|
6072
6193
|
|
|
6073
6194
|
// src/components/CardTab/CardTab.tsx
|
|
6074
|
-
import { jsx as
|
|
6195
|
+
import { jsx as jsx306, jsxs as jsxs196 } from "react/jsx-runtime";
|
|
6075
6196
|
var CardTabRoot = (props) => {
|
|
6076
6197
|
const {
|
|
6077
6198
|
tabs,
|
|
@@ -6081,7 +6202,7 @@ var CardTabRoot = (props) => {
|
|
|
6081
6202
|
children
|
|
6082
6203
|
} = props;
|
|
6083
6204
|
const isControlled = activeValueProp !== void 0;
|
|
6084
|
-
const [uncontrolledValue, setUncontrolledValue] =
|
|
6205
|
+
const [uncontrolledValue, setUncontrolledValue] = React6.useState(tabs[0]?.value ?? "");
|
|
6085
6206
|
const activeValue = isControlled ? activeValueProp : uncontrolledValue;
|
|
6086
6207
|
const handleTabClick = (tab) => {
|
|
6087
6208
|
if (!isControlled) {
|
|
@@ -6089,16 +6210,16 @@ var CardTabRoot = (props) => {
|
|
|
6089
6210
|
}
|
|
6090
6211
|
onChange?.(tab);
|
|
6091
6212
|
};
|
|
6092
|
-
const panels =
|
|
6093
|
-
(child) =>
|
|
6213
|
+
const panels = React6.Children.toArray(children).filter(
|
|
6214
|
+
(child) => React6.isValidElement(child) && child.type === CardTabPanel_default
|
|
6094
6215
|
);
|
|
6095
6216
|
const activePanel = panels.find(
|
|
6096
6217
|
(panel) => panel.props.value === activeValue
|
|
6097
6218
|
);
|
|
6098
|
-
return /* @__PURE__ */
|
|
6099
|
-
/* @__PURE__ */
|
|
6219
|
+
return /* @__PURE__ */ jsxs196("div", { className: clsx_default("lib-xplat-card-tab", size), children: [
|
|
6220
|
+
/* @__PURE__ */ jsx306("div", { className: "card-tab-bar", children: tabs.map((tab) => {
|
|
6100
6221
|
const isActive = tab.value === activeValue;
|
|
6101
|
-
return /* @__PURE__ */
|
|
6222
|
+
return /* @__PURE__ */ jsx306(
|
|
6102
6223
|
"button",
|
|
6103
6224
|
{
|
|
6104
6225
|
className: clsx_default("card-tab-trigger", isActive && "active"),
|
|
@@ -6110,7 +6231,7 @@ var CardTabRoot = (props) => {
|
|
|
6110
6231
|
tab.value
|
|
6111
6232
|
);
|
|
6112
6233
|
}) }),
|
|
6113
|
-
/* @__PURE__ */
|
|
6234
|
+
/* @__PURE__ */ jsx306("div", { className: "card-tab-body", children: activePanel })
|
|
6114
6235
|
] });
|
|
6115
6236
|
};
|
|
6116
6237
|
CardTabRoot.displayName = "CardTab";
|
|
@@ -6120,8 +6241,8 @@ var CardTab = Object.assign(CardTabRoot, {
|
|
|
6120
6241
|
var CardTab_default = CardTab;
|
|
6121
6242
|
|
|
6122
6243
|
// src/components/Chart/Chart.tsx
|
|
6123
|
-
import
|
|
6124
|
-
import { Fragment as Fragment2, jsx as
|
|
6244
|
+
import React7 from "react";
|
|
6245
|
+
import { Fragment as Fragment2, jsx as jsx307, jsxs as jsxs197 } from "react/jsx-runtime";
|
|
6125
6246
|
var CATEGORICAL_COUNT2 = 8;
|
|
6126
6247
|
var LINE_BAR_PALETTES = Array.from({ length: CATEGORICAL_COUNT2 }, (_, i) => {
|
|
6127
6248
|
const n = i + 1;
|
|
@@ -6167,11 +6288,11 @@ var toSmoothPath = (points) => {
|
|
|
6167
6288
|
};
|
|
6168
6289
|
var RESIZE_SETTLE_MS = 150;
|
|
6169
6290
|
var useChartSize = (ref) => {
|
|
6170
|
-
const [size, setSize] =
|
|
6171
|
-
const settleTimer =
|
|
6172
|
-
const committedSize =
|
|
6173
|
-
const initialRef =
|
|
6174
|
-
|
|
6291
|
+
const [size, setSize] = React7.useState({ width: 0, height: 0 });
|
|
6292
|
+
const settleTimer = React7.useRef(0);
|
|
6293
|
+
const committedSize = React7.useRef({ width: 0, height: 0 });
|
|
6294
|
+
const initialRef = React7.useRef(true);
|
|
6295
|
+
React7.useEffect(() => {
|
|
6175
6296
|
const el = ref.current;
|
|
6176
6297
|
if (!el) return;
|
|
6177
6298
|
const observer = new ResizeObserver((entries) => {
|
|
@@ -6213,10 +6334,10 @@ var useChartSize = (ref) => {
|
|
|
6213
6334
|
};
|
|
6214
6335
|
var prefersReducedMotion = () => typeof window !== "undefined" && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
|
|
6215
6336
|
var useChartAnimation = (containerRef, dataKey) => {
|
|
6216
|
-
const [animate, setAnimate] =
|
|
6217
|
-
const prevDataKey =
|
|
6218
|
-
const hasAnimated =
|
|
6219
|
-
|
|
6337
|
+
const [animate, setAnimate] = React7.useState(false);
|
|
6338
|
+
const prevDataKey = React7.useRef(dataKey);
|
|
6339
|
+
const hasAnimated = React7.useRef(false);
|
|
6340
|
+
React7.useEffect(() => {
|
|
6220
6341
|
if (prefersReducedMotion()) return;
|
|
6221
6342
|
const el = containerRef.current;
|
|
6222
6343
|
if (!el) return;
|
|
@@ -6232,7 +6353,7 @@ var useChartAnimation = (containerRef, dataKey) => {
|
|
|
6232
6353
|
observer.observe(el);
|
|
6233
6354
|
return () => observer.disconnect();
|
|
6234
6355
|
}, [containerRef]);
|
|
6235
|
-
|
|
6356
|
+
React7.useEffect(() => {
|
|
6236
6357
|
if (dataKey !== prevDataKey.current) {
|
|
6237
6358
|
prevDataKey.current = dataKey;
|
|
6238
6359
|
if (prefersReducedMotion()) return;
|
|
@@ -6243,15 +6364,15 @@ var useChartAnimation = (containerRef, dataKey) => {
|
|
|
6243
6364
|
return animate || prefersReducedMotion();
|
|
6244
6365
|
};
|
|
6245
6366
|
var useChartTooltip = (enabled) => {
|
|
6246
|
-
const [tooltip, setTooltip] =
|
|
6367
|
+
const [tooltip, setTooltip] = React7.useState({
|
|
6247
6368
|
visible: false,
|
|
6248
6369
|
x: 0,
|
|
6249
6370
|
y: 0,
|
|
6250
6371
|
content: ""
|
|
6251
6372
|
});
|
|
6252
|
-
const containerRef =
|
|
6253
|
-
const rafRef =
|
|
6254
|
-
const move =
|
|
6373
|
+
const containerRef = React7.useRef(null);
|
|
6374
|
+
const rafRef = React7.useRef(0);
|
|
6375
|
+
const move = React7.useCallback((e) => {
|
|
6255
6376
|
if (!enabled) return;
|
|
6256
6377
|
const clientX = e.clientX;
|
|
6257
6378
|
const clientY = e.clientY;
|
|
@@ -6266,7 +6387,7 @@ var useChartTooltip = (enabled) => {
|
|
|
6266
6387
|
}));
|
|
6267
6388
|
});
|
|
6268
6389
|
}, [enabled]);
|
|
6269
|
-
const show =
|
|
6390
|
+
const show = React7.useCallback((e, content) => {
|
|
6270
6391
|
if (!enabled) return;
|
|
6271
6392
|
const rect = containerRef.current?.getBoundingClientRect();
|
|
6272
6393
|
if (!rect) return;
|
|
@@ -6277,18 +6398,18 @@ var useChartTooltip = (enabled) => {
|
|
|
6277
6398
|
content
|
|
6278
6399
|
});
|
|
6279
6400
|
}, [enabled]);
|
|
6280
|
-
const hide =
|
|
6401
|
+
const hide = React7.useCallback(() => {
|
|
6281
6402
|
cancelAnimationFrame(rafRef.current);
|
|
6282
6403
|
setTooltip((prev) => ({ ...prev, visible: false }));
|
|
6283
6404
|
}, []);
|
|
6284
6405
|
return { tooltip, show, hide, move, containerRef };
|
|
6285
6406
|
};
|
|
6286
|
-
var GridLines =
|
|
6407
|
+
var GridLines = React7.memo(({ width, height, chartH, maxVal }) => /* @__PURE__ */ jsx307(Fragment2, { children: [0, 0.25, 0.5, 0.75, 1].map((ratio) => {
|
|
6287
6408
|
const y = PADDING.top + (1 - ratio) * chartH;
|
|
6288
6409
|
const val = Math.round(maxVal * ratio);
|
|
6289
|
-
return /* @__PURE__ */
|
|
6290
|
-
/* @__PURE__ */
|
|
6291
|
-
/* @__PURE__ */
|
|
6410
|
+
return /* @__PURE__ */ jsxs197("g", { children: [
|
|
6411
|
+
/* @__PURE__ */ jsx307("line", { x1: PADDING.left, y1: y, x2: width - PADDING.right, y2: y, className: "chart-grid" }),
|
|
6412
|
+
/* @__PURE__ */ jsx307("text", { x: PADDING.left - 8, y: y + 4, className: "chart-axis-label", textAnchor: "end", children: val })
|
|
6292
6413
|
] }, ratio);
|
|
6293
6414
|
}) }));
|
|
6294
6415
|
GridLines.displayName = "GridLines";
|
|
@@ -6298,25 +6419,25 @@ var getLabelStep = (count, chartW) => {
|
|
|
6298
6419
|
if (count <= maxLabels) return 1;
|
|
6299
6420
|
return Math.ceil(count / maxLabels);
|
|
6300
6421
|
};
|
|
6301
|
-
var AxisLabels =
|
|
6422
|
+
var AxisLabels = React7.memo(({ labels, count, chartW, height }) => {
|
|
6302
6423
|
const step = getLabelStep(count, chartW);
|
|
6303
|
-
return /* @__PURE__ */
|
|
6424
|
+
return /* @__PURE__ */ jsx307(Fragment2, { children: labels.map((label, i) => {
|
|
6304
6425
|
if (i % step !== 0) return null;
|
|
6305
6426
|
const x = PADDING.left + i / (count - 1 || 1) * chartW;
|
|
6306
|
-
return /* @__PURE__ */
|
|
6427
|
+
return /* @__PURE__ */ jsx307("text", { x, y: height - 8, className: "chart-axis-label", textAnchor: "middle", children: label }, i);
|
|
6307
6428
|
}) });
|
|
6308
6429
|
});
|
|
6309
6430
|
AxisLabels.displayName = "AxisLabels";
|
|
6310
|
-
var LineChart =
|
|
6311
|
-
const entries =
|
|
6312
|
-
const maxVal =
|
|
6431
|
+
var LineChart = React7.memo(({ data, labels, width, height, animate, onHover, onMove, onLeave }) => {
|
|
6432
|
+
const entries = React7.useMemo(() => Object.entries(data), [data]);
|
|
6433
|
+
const maxVal = React7.useMemo(() => {
|
|
6313
6434
|
const allValues = entries.flatMap(([, v]) => v);
|
|
6314
6435
|
return Math.max(...allValues) * 1.2 || 1;
|
|
6315
6436
|
}, [entries]);
|
|
6316
6437
|
const count = labels.length;
|
|
6317
6438
|
const chartW = width - PADDING.left - PADDING.right;
|
|
6318
6439
|
const chartH = height - PADDING.top - PADDING.bottom;
|
|
6319
|
-
const seriesPoints =
|
|
6440
|
+
const seriesPoints = React7.useMemo(
|
|
6320
6441
|
() => entries.map(
|
|
6321
6442
|
([, values]) => values.map((v, i) => ({
|
|
6322
6443
|
x: PADDING.left + i / (count - 1 || 1) * chartW,
|
|
@@ -6327,8 +6448,8 @@ var LineChart = React5.memo(({ data, labels, width, height, animate, onHover, on
|
|
|
6327
6448
|
[entries, count, chartW, chartH, maxVal]
|
|
6328
6449
|
);
|
|
6329
6450
|
const showPoints = count <= 100;
|
|
6330
|
-
const lineRefs =
|
|
6331
|
-
|
|
6451
|
+
const lineRefs = React7.useRef([]);
|
|
6452
|
+
React7.useEffect(() => {
|
|
6332
6453
|
if (!animate) return;
|
|
6333
6454
|
lineRefs.current.forEach((el) => {
|
|
6334
6455
|
if (!el) return;
|
|
@@ -6341,9 +6462,9 @@ var LineChart = React5.memo(({ data, labels, width, height, animate, onHover, on
|
|
|
6341
6462
|
});
|
|
6342
6463
|
});
|
|
6343
6464
|
}, [animate, seriesPoints]);
|
|
6344
|
-
return /* @__PURE__ */
|
|
6345
|
-
/* @__PURE__ */
|
|
6346
|
-
/* @__PURE__ */
|
|
6465
|
+
return /* @__PURE__ */ jsxs197("svg", { viewBox: `0 0 ${width} ${height}`, className: "chart-svg", children: [
|
|
6466
|
+
/* @__PURE__ */ jsx307(GridLines, { width, height, chartH, maxVal }),
|
|
6467
|
+
/* @__PURE__ */ jsx307(AxisLabels, { labels, count, chartW, height }),
|
|
6347
6468
|
entries.map(([key], di) => {
|
|
6348
6469
|
const palette = getPalette(LINE_BAR_PALETTES, di, key);
|
|
6349
6470
|
const color = palette[2];
|
|
@@ -6352,12 +6473,12 @@ var LineChart = React5.memo(({ data, labels, width, height, animate, onHover, on
|
|
|
6352
6473
|
const gradientId = `line-gradient-${di}`;
|
|
6353
6474
|
const polyPoints = points.map((p) => `${p.x},${p.y}`).join(" ");
|
|
6354
6475
|
const areaD = `M ${points[0].x},${points[0].y} ${points.map((p) => `L ${p.x},${p.y}`).join(" ")} L ${points[points.length - 1].x},${PADDING.top + chartH} L ${points[0].x},${PADDING.top + chartH} Z`;
|
|
6355
|
-
return /* @__PURE__ */
|
|
6356
|
-
/* @__PURE__ */
|
|
6357
|
-
/* @__PURE__ */
|
|
6358
|
-
/* @__PURE__ */
|
|
6476
|
+
return /* @__PURE__ */ jsxs197("g", { children: [
|
|
6477
|
+
/* @__PURE__ */ jsx307("defs", { children: /* @__PURE__ */ jsxs197("linearGradient", { id: gradientId, x1: "0", y1: "0", x2: "0", y2: "1", children: [
|
|
6478
|
+
/* @__PURE__ */ jsx307("stop", { offset: "0%", stopColor: areaColor, stopOpacity: "0.2" }),
|
|
6479
|
+
/* @__PURE__ */ jsx307("stop", { offset: "100%", stopColor: areaColor, stopOpacity: "0" })
|
|
6359
6480
|
] }) }),
|
|
6360
|
-
/* @__PURE__ */
|
|
6481
|
+
/* @__PURE__ */ jsx307(
|
|
6361
6482
|
"path",
|
|
6362
6483
|
{
|
|
6363
6484
|
d: areaD,
|
|
@@ -6366,7 +6487,7 @@ var LineChart = React5.memo(({ data, labels, width, height, animate, onHover, on
|
|
|
6366
6487
|
style: animate ? { animationDelay: "600ms" } : { opacity: 1 }
|
|
6367
6488
|
}
|
|
6368
6489
|
),
|
|
6369
|
-
/* @__PURE__ */
|
|
6490
|
+
/* @__PURE__ */ jsx307(
|
|
6370
6491
|
"polyline",
|
|
6371
6492
|
{
|
|
6372
6493
|
ref: (el) => {
|
|
@@ -6378,7 +6499,7 @@ var LineChart = React5.memo(({ data, labels, width, height, animate, onHover, on
|
|
|
6378
6499
|
strokeWidth: "2"
|
|
6379
6500
|
}
|
|
6380
6501
|
),
|
|
6381
|
-
showPoints && points.map((p, i) => /* @__PURE__ */
|
|
6502
|
+
showPoints && points.map((p, i) => /* @__PURE__ */ jsx307(
|
|
6382
6503
|
"circle",
|
|
6383
6504
|
{
|
|
6384
6505
|
cx: p.x,
|
|
@@ -6397,16 +6518,16 @@ var LineChart = React5.memo(({ data, labels, width, height, animate, onHover, on
|
|
|
6397
6518
|
] });
|
|
6398
6519
|
});
|
|
6399
6520
|
LineChart.displayName = "LineChart";
|
|
6400
|
-
var CurveChart =
|
|
6401
|
-
const entries =
|
|
6402
|
-
const maxVal =
|
|
6521
|
+
var CurveChart = React7.memo(({ data, labels, width, height, animate, onHover, onMove, onLeave }) => {
|
|
6522
|
+
const entries = React7.useMemo(() => Object.entries(data), [data]);
|
|
6523
|
+
const maxVal = React7.useMemo(() => {
|
|
6403
6524
|
const allValues = entries.flatMap(([, v]) => v);
|
|
6404
6525
|
return Math.max(...allValues) * 1.2 || 1;
|
|
6405
6526
|
}, [entries]);
|
|
6406
6527
|
const count = labels.length;
|
|
6407
6528
|
const chartW = width - PADDING.left - PADDING.right;
|
|
6408
6529
|
const chartH = height - PADDING.top - PADDING.bottom;
|
|
6409
|
-
const seriesPoints =
|
|
6530
|
+
const seriesPoints = React7.useMemo(
|
|
6410
6531
|
() => entries.map(
|
|
6411
6532
|
([, values]) => values.map((v, i) => ({
|
|
6412
6533
|
x: PADDING.left + i / (count - 1 || 1) * chartW,
|
|
@@ -6417,8 +6538,8 @@ var CurveChart = React5.memo(({ data, labels, width, height, animate, onHover, o
|
|
|
6417
6538
|
[entries, count, chartW, chartH, maxVal]
|
|
6418
6539
|
);
|
|
6419
6540
|
const showPoints = count <= 100;
|
|
6420
|
-
const lineRefs =
|
|
6421
|
-
|
|
6541
|
+
const lineRefs = React7.useRef([]);
|
|
6542
|
+
React7.useEffect(() => {
|
|
6422
6543
|
if (!animate) return;
|
|
6423
6544
|
lineRefs.current.forEach((el) => {
|
|
6424
6545
|
if (!el) return;
|
|
@@ -6431,9 +6552,9 @@ var CurveChart = React5.memo(({ data, labels, width, height, animate, onHover, o
|
|
|
6431
6552
|
});
|
|
6432
6553
|
});
|
|
6433
6554
|
}, [animate, seriesPoints]);
|
|
6434
|
-
return /* @__PURE__ */
|
|
6435
|
-
/* @__PURE__ */
|
|
6436
|
-
/* @__PURE__ */
|
|
6555
|
+
return /* @__PURE__ */ jsxs197("svg", { viewBox: `0 0 ${width} ${height}`, className: "chart-svg", children: [
|
|
6556
|
+
/* @__PURE__ */ jsx307(GridLines, { width, height, chartH, maxVal }),
|
|
6557
|
+
/* @__PURE__ */ jsx307(AxisLabels, { labels, count, chartW, height }),
|
|
6437
6558
|
entries.map(([key], di) => {
|
|
6438
6559
|
const palette = getPalette(LINE_BAR_PALETTES, di, key);
|
|
6439
6560
|
const color = palette[2];
|
|
@@ -6442,12 +6563,12 @@ var CurveChart = React5.memo(({ data, labels, width, height, animate, onHover, o
|
|
|
6442
6563
|
const gradientId = `curve-gradient-${di}`;
|
|
6443
6564
|
const linePath = toSmoothPath(points);
|
|
6444
6565
|
const areaPath = linePath + ` L ${points[points.length - 1].x} ${PADDING.top + chartH} L ${points[0].x} ${PADDING.top + chartH} Z`;
|
|
6445
|
-
return /* @__PURE__ */
|
|
6446
|
-
/* @__PURE__ */
|
|
6447
|
-
/* @__PURE__ */
|
|
6448
|
-
/* @__PURE__ */
|
|
6566
|
+
return /* @__PURE__ */ jsxs197("g", { children: [
|
|
6567
|
+
/* @__PURE__ */ jsx307("defs", { children: /* @__PURE__ */ jsxs197("linearGradient", { id: gradientId, x1: "0", y1: "0", x2: "0", y2: "1", children: [
|
|
6568
|
+
/* @__PURE__ */ jsx307("stop", { offset: "0%", stopColor: areaColor, stopOpacity: "0.4" }),
|
|
6569
|
+
/* @__PURE__ */ jsx307("stop", { offset: "100%", stopColor: areaColor, stopOpacity: "0.02" })
|
|
6449
6570
|
] }) }),
|
|
6450
|
-
/* @__PURE__ */
|
|
6571
|
+
/* @__PURE__ */ jsx307(
|
|
6451
6572
|
"path",
|
|
6452
6573
|
{
|
|
6453
6574
|
d: areaPath,
|
|
@@ -6456,7 +6577,7 @@ var CurveChart = React5.memo(({ data, labels, width, height, animate, onHover, o
|
|
|
6456
6577
|
style: animate ? { animationDelay: "600ms" } : { opacity: 1 }
|
|
6457
6578
|
}
|
|
6458
6579
|
),
|
|
6459
|
-
/* @__PURE__ */
|
|
6580
|
+
/* @__PURE__ */ jsx307(
|
|
6460
6581
|
"path",
|
|
6461
6582
|
{
|
|
6462
6583
|
ref: (el) => {
|
|
@@ -6468,7 +6589,7 @@ var CurveChart = React5.memo(({ data, labels, width, height, animate, onHover, o
|
|
|
6468
6589
|
strokeWidth: "2"
|
|
6469
6590
|
}
|
|
6470
6591
|
),
|
|
6471
|
-
showPoints && points.map((p, i) => /* @__PURE__ */
|
|
6592
|
+
showPoints && points.map((p, i) => /* @__PURE__ */ jsx307(
|
|
6472
6593
|
"circle",
|
|
6473
6594
|
{
|
|
6474
6595
|
cx: p.x,
|
|
@@ -6487,9 +6608,9 @@ var CurveChart = React5.memo(({ data, labels, width, height, animate, onHover, o
|
|
|
6487
6608
|
] });
|
|
6488
6609
|
});
|
|
6489
6610
|
CurveChart.displayName = "CurveChart";
|
|
6490
|
-
var BarChart =
|
|
6491
|
-
const entries =
|
|
6492
|
-
const maxVal =
|
|
6611
|
+
var BarChart = React7.memo(({ data, labels, width, height, animate, onHover, onMove, onLeave }) => {
|
|
6612
|
+
const entries = React7.useMemo(() => Object.entries(data), [data]);
|
|
6613
|
+
const maxVal = React7.useMemo(() => {
|
|
6493
6614
|
const allValues = entries.flatMap(([, v]) => v);
|
|
6494
6615
|
return Math.max(...allValues) * 1.2 || 1;
|
|
6495
6616
|
}, [entries]);
|
|
@@ -6501,7 +6622,7 @@ var BarChart = React5.memo(({ data, labels, width, height, animate, onHover, onM
|
|
|
6501
6622
|
const barGap = groupCount > 1 ? 2 : 0;
|
|
6502
6623
|
const barW = Math.max(1, Math.min(32, (groupW * 0.7 - barGap * (groupCount - 1)) / groupCount));
|
|
6503
6624
|
const baseline = PADDING.top + chartH;
|
|
6504
|
-
const bars =
|
|
6625
|
+
const bars = React7.useMemo(
|
|
6505
6626
|
() => entries.map(
|
|
6506
6627
|
([, values], di) => values.map((v, i) => {
|
|
6507
6628
|
const totalBarsW = barW * groupCount + barGap * (groupCount - 1);
|
|
@@ -6514,11 +6635,11 @@ var BarChart = React5.memo(({ data, labels, width, height, animate, onHover, onM
|
|
|
6514
6635
|
[entries, maxVal, chartH, groupW, barW, barGap, groupCount]
|
|
6515
6636
|
);
|
|
6516
6637
|
const barLabelStep = getLabelStep(count, chartW);
|
|
6517
|
-
return /* @__PURE__ */
|
|
6518
|
-
/* @__PURE__ */
|
|
6638
|
+
return /* @__PURE__ */ jsxs197("svg", { viewBox: `0 0 ${width} ${height}`, className: "chart-svg", children: [
|
|
6639
|
+
/* @__PURE__ */ jsx307(GridLines, { width, height, chartH, maxVal }),
|
|
6519
6640
|
labels.map((label, i) => {
|
|
6520
6641
|
if (i % barLabelStep !== 0) return null;
|
|
6521
|
-
return /* @__PURE__ */
|
|
6642
|
+
return /* @__PURE__ */ jsx307("text", { x: PADDING.left + groupW * i + groupW / 2, y: height - 8, className: "chart-axis-label", textAnchor: "middle", children: label }, i);
|
|
6522
6643
|
}),
|
|
6523
6644
|
entries.map(([key], di) => {
|
|
6524
6645
|
const palette = getPalette(LINE_BAR_PALETTES, di, key);
|
|
@@ -6527,7 +6648,7 @@ var BarChart = React5.memo(({ data, labels, width, height, animate, onHover, onM
|
|
|
6527
6648
|
const r2 = Math.min(4, b.w / 2);
|
|
6528
6649
|
const d = b.h <= r2 ? `M ${b.x} ${b.y + b.h} V ${b.y} H ${b.x + b.w} V ${b.y + b.h} Z` : `M ${b.x} ${b.y + b.h} V ${b.y + r2} Q ${b.x} ${b.y} ${b.x + r2} ${b.y} H ${b.x + b.w - r2} Q ${b.x + b.w} ${b.y} ${b.x + b.w} ${b.y + r2} V ${b.y + b.h} Z`;
|
|
6529
6650
|
const delay = 100 + i * 80;
|
|
6530
|
-
return /* @__PURE__ */
|
|
6651
|
+
return /* @__PURE__ */ jsx307(
|
|
6531
6652
|
"path",
|
|
6532
6653
|
{
|
|
6533
6654
|
d,
|
|
@@ -6548,11 +6669,11 @@ var BarChart = React5.memo(({ data, labels, width, height, animate, onHover, onM
|
|
|
6548
6669
|
] });
|
|
6549
6670
|
});
|
|
6550
6671
|
BarChart.displayName = "BarChart";
|
|
6551
|
-
var PieDonutChart =
|
|
6672
|
+
var PieDonutChart = React7.memo(
|
|
6552
6673
|
({ data, labels, width, height, animate, isDoughnut, onHover, onMove, onLeave }) => {
|
|
6553
|
-
const entries =
|
|
6554
|
-
const values =
|
|
6555
|
-
const total =
|
|
6674
|
+
const entries = React7.useMemo(() => Object.entries(data), [data]);
|
|
6675
|
+
const values = React7.useMemo(() => entries.flatMap(([, v]) => v), [entries]);
|
|
6676
|
+
const total = React7.useMemo(() => values.reduce((a, b) => a + b, 0) || 1, [values]);
|
|
6556
6677
|
const size = Math.min(width, height);
|
|
6557
6678
|
const cx = size / 2;
|
|
6558
6679
|
const cy = size / 2;
|
|
@@ -6560,10 +6681,10 @@ var PieDonutChart = React5.memo(
|
|
|
6560
6681
|
const innerR = isDoughnut ? r2 * 0.5 : 0;
|
|
6561
6682
|
const firstKey = entries[0]?.[0] ?? "";
|
|
6562
6683
|
const colorOffset = hashString(firstKey);
|
|
6563
|
-
const maskRef =
|
|
6684
|
+
const maskRef = React7.useRef(null);
|
|
6564
6685
|
const maskR = r2 + 10;
|
|
6565
6686
|
const maskCircumference = 2 * Math.PI * maskR;
|
|
6566
|
-
|
|
6687
|
+
React7.useEffect(() => {
|
|
6567
6688
|
if (!animate || !maskRef.current) return;
|
|
6568
6689
|
const el = maskRef.current;
|
|
6569
6690
|
el.style.strokeDasharray = `${maskCircumference}`;
|
|
@@ -6573,7 +6694,7 @@ var PieDonutChart = React5.memo(
|
|
|
6573
6694
|
el.style.strokeDashoffset = "0";
|
|
6574
6695
|
});
|
|
6575
6696
|
}, [animate, maskCircumference]);
|
|
6576
|
-
const sliceData =
|
|
6697
|
+
const sliceData = React7.useMemo(() => {
|
|
6577
6698
|
let angle0 = -Math.PI / 2;
|
|
6578
6699
|
let cumulativeAngle = 0;
|
|
6579
6700
|
return values.map((v, i) => {
|
|
@@ -6607,8 +6728,8 @@ var PieDonutChart = React5.memo(
|
|
|
6607
6728
|
});
|
|
6608
6729
|
}, [values, total, cx, cy, r2, innerR, labels]);
|
|
6609
6730
|
const maskId = `pie-mask-${isDoughnut ? "d" : "p"}`;
|
|
6610
|
-
return /* @__PURE__ */
|
|
6611
|
-
animate && /* @__PURE__ */
|
|
6731
|
+
return /* @__PURE__ */ jsxs197("svg", { viewBox: `0 0 ${size} ${size}`, className: "chart-svg chart-pie", children: [
|
|
6732
|
+
animate && /* @__PURE__ */ jsx307("defs", { children: /* @__PURE__ */ jsx307("mask", { id: maskId, children: /* @__PURE__ */ jsx307(
|
|
6612
6733
|
"circle",
|
|
6613
6734
|
{
|
|
6614
6735
|
ref: maskRef,
|
|
@@ -6621,7 +6742,7 @@ var PieDonutChart = React5.memo(
|
|
|
6621
6742
|
transform: `rotate(-90 ${cx} ${cy})`
|
|
6622
6743
|
}
|
|
6623
6744
|
) }) }),
|
|
6624
|
-
/* @__PURE__ */
|
|
6745
|
+
/* @__PURE__ */ jsx307("g", { mask: animate ? `url(#${maskId})` : void 0, children: sliceData.map((s, i) => /* @__PURE__ */ jsx307("g", { children: /* @__PURE__ */ jsx307(
|
|
6625
6746
|
"path",
|
|
6626
6747
|
{
|
|
6627
6748
|
d: s.d,
|
|
@@ -6632,7 +6753,7 @@ var PieDonutChart = React5.memo(
|
|
|
6632
6753
|
onMouseLeave: onLeave
|
|
6633
6754
|
}
|
|
6634
6755
|
) }, i)) }),
|
|
6635
|
-
sliceData.map((s, i) => s.angle > 0.2 && /* @__PURE__ */
|
|
6756
|
+
sliceData.map((s, i) => s.angle > 0.2 && /* @__PURE__ */ jsx307(
|
|
6636
6757
|
"text",
|
|
6637
6758
|
{
|
|
6638
6759
|
x: s.lx,
|
|
@@ -6650,9 +6771,9 @@ var PieDonutChart = React5.memo(
|
|
|
6650
6771
|
);
|
|
6651
6772
|
PieDonutChart.displayName = "PieDonutChart";
|
|
6652
6773
|
var TooltipBubble = ({ x, y, containerWidth, children }) => {
|
|
6653
|
-
const ref =
|
|
6654
|
-
const [adjustedX, setAdjustedX] =
|
|
6655
|
-
|
|
6774
|
+
const ref = React7.useRef(null);
|
|
6775
|
+
const [adjustedX, setAdjustedX] = React7.useState(x);
|
|
6776
|
+
React7.useEffect(() => {
|
|
6656
6777
|
const el = ref.current;
|
|
6657
6778
|
if (!el) return;
|
|
6658
6779
|
const w = el.offsetWidth;
|
|
@@ -6663,7 +6784,7 @@ var TooltipBubble = ({ x, y, containerWidth, children }) => {
|
|
|
6663
6784
|
else if (x + half > containerWidth - margin) nx = containerWidth - half - margin;
|
|
6664
6785
|
setAdjustedX(nx);
|
|
6665
6786
|
}, [x, containerWidth]);
|
|
6666
|
-
return /* @__PURE__ */
|
|
6787
|
+
return /* @__PURE__ */ jsx307(
|
|
6667
6788
|
"div",
|
|
6668
6789
|
{
|
|
6669
6790
|
ref,
|
|
@@ -6673,22 +6794,22 @@ var TooltipBubble = ({ x, y, containerWidth, children }) => {
|
|
|
6673
6794
|
}
|
|
6674
6795
|
);
|
|
6675
6796
|
};
|
|
6676
|
-
var Chart =
|
|
6797
|
+
var Chart = React7.memo((props) => {
|
|
6677
6798
|
const { type, data, labels, tooltip: showTooltip = true } = props;
|
|
6678
6799
|
const { tooltip, show, hide, move, containerRef } = useChartTooltip(showTooltip);
|
|
6679
6800
|
const { width, height } = useChartSize(containerRef);
|
|
6680
|
-
const stableData =
|
|
6681
|
-
const stableLabels =
|
|
6682
|
-
const dataKey =
|
|
6801
|
+
const stableData = React7.useMemo(() => data, [JSON.stringify(data)]);
|
|
6802
|
+
const stableLabels = React7.useMemo(() => labels, [JSON.stringify(labels)]);
|
|
6803
|
+
const dataKey = React7.useMemo(() => JSON.stringify(labels), [labels]);
|
|
6683
6804
|
const animate = useChartAnimation(containerRef, dataKey);
|
|
6684
6805
|
const ready = width > 0 && height > 0;
|
|
6685
|
-
return /* @__PURE__ */
|
|
6686
|
-
ready && type === "line" && /* @__PURE__ */
|
|
6687
|
-
ready && type === "curve" && /* @__PURE__ */
|
|
6688
|
-
ready && type === "bar" && /* @__PURE__ */
|
|
6689
|
-
ready && type === "pie" && /* @__PURE__ */
|
|
6690
|
-
ready && type === "doughnut" && /* @__PURE__ */
|
|
6691
|
-
tooltip.visible && /* @__PURE__ */
|
|
6806
|
+
return /* @__PURE__ */ jsxs197("div", { className: "lib-xplat-chart", ref: containerRef, children: [
|
|
6807
|
+
ready && type === "line" && /* @__PURE__ */ jsx307(LineChart, { data: stableData, labels: stableLabels, width, height, animate, onHover: show, onMove: move, onLeave: hide }),
|
|
6808
|
+
ready && type === "curve" && /* @__PURE__ */ jsx307(CurveChart, { data: stableData, labels: stableLabels, width, height, animate, onHover: show, onMove: move, onLeave: hide }),
|
|
6809
|
+
ready && type === "bar" && /* @__PURE__ */ jsx307(BarChart, { data: stableData, labels: stableLabels, width, height, animate, onHover: show, onMove: move, onLeave: hide }),
|
|
6810
|
+
ready && type === "pie" && /* @__PURE__ */ jsx307(PieDonutChart, { data: stableData, labels: stableLabels, width, height, animate, onHover: show, onMove: move, onLeave: hide }),
|
|
6811
|
+
ready && type === "doughnut" && /* @__PURE__ */ jsx307(PieDonutChart, { data: stableData, labels: stableLabels, width, height, animate, isDoughnut: true, onHover: show, onMove: move, onLeave: hide }),
|
|
6812
|
+
tooltip.visible && /* @__PURE__ */ jsx307(TooltipBubble, { x: tooltip.x, y: tooltip.y, containerWidth: width, children: tooltip.content })
|
|
6692
6813
|
] });
|
|
6693
6814
|
});
|
|
6694
6815
|
Chart.displayName = "Chart";
|
|
@@ -6714,7 +6835,7 @@ import { primitive, semantic } from "@x-plat/tokens-core";
|
|
|
6714
6835
|
import { cssVar } from "@x-plat/tokens-core";
|
|
6715
6836
|
|
|
6716
6837
|
// src/components/CheckBox/CheckBox.tsx
|
|
6717
|
-
import { jsx as
|
|
6838
|
+
import { jsx as jsx308, jsxs as jsxs198 } from "react/jsx-runtime";
|
|
6718
6839
|
var CheckBox = (props) => {
|
|
6719
6840
|
const {
|
|
6720
6841
|
checked,
|
|
@@ -6732,8 +6853,8 @@ var CheckBox = (props) => {
|
|
|
6732
6853
|
const checkedClasses = `checked`;
|
|
6733
6854
|
const disabledClasses = "disabled";
|
|
6734
6855
|
const boxClasses = disabled ? disabledClasses : checked ? checkedClasses : uncheckedClasses;
|
|
6735
|
-
return /* @__PURE__ */
|
|
6736
|
-
/* @__PURE__ */
|
|
6856
|
+
return /* @__PURE__ */ jsxs198("label", { className: clsx_default("lib-xplat-checkbox", size, type), children: [
|
|
6857
|
+
/* @__PURE__ */ jsx308(
|
|
6737
6858
|
"input",
|
|
6738
6859
|
{
|
|
6739
6860
|
type: "checkbox",
|
|
@@ -6743,44 +6864,44 @@ var CheckBox = (props) => {
|
|
|
6743
6864
|
...rest
|
|
6744
6865
|
}
|
|
6745
6866
|
),
|
|
6746
|
-
/* @__PURE__ */
|
|
6747
|
-
label && /* @__PURE__ */
|
|
6867
|
+
/* @__PURE__ */ jsx308("span", { className: clsx_default("checkbox", boxClasses), children: /* @__PURE__ */ jsx308("span", { className: clsx_default("check-icon", { visible: checked }), children: /* @__PURE__ */ jsx308(CheckIcon_default, {}) }) }),
|
|
6868
|
+
label && /* @__PURE__ */ jsx308("span", { className: "label", children: label })
|
|
6748
6869
|
] });
|
|
6749
6870
|
};
|
|
6750
6871
|
CheckBox.displayName = "CheckBox";
|
|
6751
6872
|
var CheckBox_default = CheckBox;
|
|
6752
6873
|
|
|
6753
6874
|
// src/components/Chip/Chip.tsx
|
|
6754
|
-
import { jsx as
|
|
6875
|
+
import { jsx as jsx309 } from "react/jsx-runtime";
|
|
6755
6876
|
var Chip = (props) => {
|
|
6756
6877
|
const {
|
|
6757
6878
|
children,
|
|
6758
6879
|
type = "primary",
|
|
6759
6880
|
size = "md"
|
|
6760
6881
|
} = props;
|
|
6761
|
-
return /* @__PURE__ */
|
|
6882
|
+
return /* @__PURE__ */ jsx309("div", { className: clsx_default("lib-xplat-chip", type, size), children });
|
|
6762
6883
|
};
|
|
6763
6884
|
Chip.displayName = "Chip";
|
|
6764
6885
|
var Chip_default = Chip;
|
|
6765
6886
|
|
|
6766
6887
|
// src/components/DatePicker/InputDatePicker/index.tsx
|
|
6767
|
-
import
|
|
6888
|
+
import React13 from "react";
|
|
6768
6889
|
|
|
6769
6890
|
// src/components/Input/Input.tsx
|
|
6770
|
-
import
|
|
6891
|
+
import React8 from "react";
|
|
6771
6892
|
|
|
6772
6893
|
// src/components/Input/InputValidations.tsx
|
|
6773
|
-
import { jsx as
|
|
6894
|
+
import { jsx as jsx310, jsxs as jsxs199 } from "react/jsx-runtime";
|
|
6774
6895
|
var InputValidations = (props) => {
|
|
6775
6896
|
const { message, status = "default" } = props;
|
|
6776
|
-
return /* @__PURE__ */
|
|
6777
|
-
/* @__PURE__ */
|
|
6778
|
-
status === "default" && /* @__PURE__ */
|
|
6779
|
-
status === "success" && /* @__PURE__ */
|
|
6780
|
-
status === "warning" && /* @__PURE__ */
|
|
6781
|
-
status === "error" && /* @__PURE__ */
|
|
6897
|
+
return /* @__PURE__ */ jsxs199("div", { className: clsx_default("lib-xplat-input-validation", status), children: [
|
|
6898
|
+
/* @__PURE__ */ jsxs199("div", { className: "icon", children: [
|
|
6899
|
+
status === "default" && /* @__PURE__ */ jsx310(InfoIcon_default, {}),
|
|
6900
|
+
status === "success" && /* @__PURE__ */ jsx310(SuccessIcon_default, {}),
|
|
6901
|
+
status === "warning" && /* @__PURE__ */ jsx310(InfoIcon_default, {}),
|
|
6902
|
+
status === "error" && /* @__PURE__ */ jsx310(ErrorIcon_default, {})
|
|
6782
6903
|
] }),
|
|
6783
|
-
/* @__PURE__ */
|
|
6904
|
+
/* @__PURE__ */ jsx310("div", { className: "message", children: message })
|
|
6784
6905
|
] });
|
|
6785
6906
|
};
|
|
6786
6907
|
InputValidations.displayName = "InputValidations";
|
|
@@ -6821,7 +6942,7 @@ var handleTelBackspace = (prevValue, currValue) => {
|
|
|
6821
6942
|
};
|
|
6822
6943
|
|
|
6823
6944
|
// src/components/Input/Input.tsx
|
|
6824
|
-
import { jsx as
|
|
6945
|
+
import { jsx as jsx311, jsxs as jsxs200 } from "react/jsx-runtime";
|
|
6825
6946
|
import { createElement } from "react";
|
|
6826
6947
|
var formatValue = (type, value) => {
|
|
6827
6948
|
if (value === null || value === void 0) return "";
|
|
@@ -6870,7 +6991,7 @@ var parseValue = (type, value) => {
|
|
|
6870
6991
|
return value;
|
|
6871
6992
|
}
|
|
6872
6993
|
};
|
|
6873
|
-
var Input =
|
|
6994
|
+
var Input = React8.forwardRef((props, ref) => {
|
|
6874
6995
|
const {
|
|
6875
6996
|
value,
|
|
6876
6997
|
onChange,
|
|
@@ -6896,13 +7017,13 @@ var Input = React6.forwardRef((props, ref) => {
|
|
|
6896
7017
|
onChange(event);
|
|
6897
7018
|
}
|
|
6898
7019
|
};
|
|
6899
|
-
return /* @__PURE__ */
|
|
6900
|
-
/* @__PURE__ */
|
|
7020
|
+
return /* @__PURE__ */ jsxs200("div", { className: "lib-xplat-input-wrap", children: [
|
|
7021
|
+
/* @__PURE__ */ jsxs200(
|
|
6901
7022
|
"div",
|
|
6902
7023
|
{
|
|
6903
7024
|
className: clsx_default("lib-xplat-input", size, disabled ? "disabled" : void 0),
|
|
6904
7025
|
children: [
|
|
6905
|
-
/* @__PURE__ */
|
|
7026
|
+
/* @__PURE__ */ jsx311(
|
|
6906
7027
|
"input",
|
|
6907
7028
|
{
|
|
6908
7029
|
...inputProps,
|
|
@@ -6913,11 +7034,11 @@ var Input = React6.forwardRef((props, ref) => {
|
|
|
6913
7034
|
onChange: handleChange
|
|
6914
7035
|
}
|
|
6915
7036
|
),
|
|
6916
|
-
suffix && /* @__PURE__ */
|
|
7037
|
+
suffix && /* @__PURE__ */ jsx311("div", { className: "suffix", children: suffix })
|
|
6917
7038
|
]
|
|
6918
7039
|
}
|
|
6919
7040
|
),
|
|
6920
|
-
validations && /* @__PURE__ */
|
|
7041
|
+
validations && /* @__PURE__ */ jsx311("div", { className: "lib-xplat-input-validation-wrap", children: validations?.map((validation, idx) => /* @__PURE__ */ createElement(
|
|
6921
7042
|
InputValidations_default,
|
|
6922
7043
|
{
|
|
6923
7044
|
...validation,
|
|
@@ -6930,20 +7051,20 @@ Input.displayName = "Input";
|
|
|
6930
7051
|
var Input_default = Input;
|
|
6931
7052
|
|
|
6932
7053
|
// src/components/Input/PasswordInput/PasswordInput.tsx
|
|
6933
|
-
import
|
|
6934
|
-
import { jsx as
|
|
6935
|
-
var PasswordInput =
|
|
7054
|
+
import React9 from "react";
|
|
7055
|
+
import { jsx as jsx312 } from "react/jsx-runtime";
|
|
7056
|
+
var PasswordInput = React9.forwardRef(
|
|
6936
7057
|
(props, ref) => {
|
|
6937
7058
|
const { reg: _reg, ...inputProps } = props;
|
|
6938
|
-
const [isView, setIsView] =
|
|
7059
|
+
const [isView, setIsView] = React9.useState(false);
|
|
6939
7060
|
const handleChangeView = () => {
|
|
6940
7061
|
setIsView((prev) => !prev);
|
|
6941
7062
|
};
|
|
6942
|
-
return /* @__PURE__ */
|
|
7063
|
+
return /* @__PURE__ */ jsx312(
|
|
6943
7064
|
Input_default,
|
|
6944
7065
|
{
|
|
6945
7066
|
...inputProps,
|
|
6946
|
-
suffix: /* @__PURE__ */
|
|
7067
|
+
suffix: /* @__PURE__ */ jsx312("div", { className: "wrapper pointer", onClick: handleChangeView, children: isView ? /* @__PURE__ */ jsx312(OpenEyeIcon_default, {}) : /* @__PURE__ */ jsx312(CloseEyeIcon_default, {}) }),
|
|
6947
7068
|
type: isView ? "text" : "password",
|
|
6948
7069
|
ref
|
|
6949
7070
|
}
|
|
@@ -6954,17 +7075,17 @@ PasswordInput.displayName = "PasswordInput";
|
|
|
6954
7075
|
var PasswordInput_default = PasswordInput;
|
|
6955
7076
|
|
|
6956
7077
|
// src/components/Modal/Modal.tsx
|
|
6957
|
-
import
|
|
7078
|
+
import React11 from "react";
|
|
6958
7079
|
import { createPortal } from "react-dom";
|
|
6959
7080
|
|
|
6960
7081
|
// src/tokens/hooks/Portal.tsx
|
|
6961
|
-
import
|
|
7082
|
+
import React10 from "react";
|
|
6962
7083
|
import ReactDOM from "react-dom";
|
|
6963
|
-
import { jsx as
|
|
6964
|
-
var PortalContainerContext =
|
|
6965
|
-
var PortalProvider = ({ container, children }) => /* @__PURE__ */
|
|
7084
|
+
import { jsx as jsx313 } from "react/jsx-runtime";
|
|
7085
|
+
var PortalContainerContext = React10.createContext(null);
|
|
7086
|
+
var PortalProvider = ({ container, children }) => /* @__PURE__ */ jsx313(PortalContainerContext.Provider, { value: container, children });
|
|
6966
7087
|
var Portal = ({ children }) => {
|
|
6967
|
-
const contextContainer =
|
|
7088
|
+
const contextContainer = React10.useContext(PortalContainerContext);
|
|
6968
7089
|
if (typeof document === "undefined") return null;
|
|
6969
7090
|
const container = contextContainer ?? document.body;
|
|
6970
7091
|
return ReactDOM.createPortal(children, container);
|
|
@@ -6973,14 +7094,14 @@ Portal.displayName = "Portal";
|
|
|
6973
7094
|
var Portal_default = Portal;
|
|
6974
7095
|
|
|
6975
7096
|
// src/components/Modal/Modal.tsx
|
|
6976
|
-
import { jsx as
|
|
7097
|
+
import { jsx as jsx314 } from "react/jsx-runtime";
|
|
6977
7098
|
var ANIMATION_DURATION_MS = 200;
|
|
6978
7099
|
var Modal = (props) => {
|
|
6979
7100
|
const { isOpen, onClose, children } = props;
|
|
6980
|
-
const [mounted, setMounted] =
|
|
6981
|
-
const [visible, setVisible] =
|
|
6982
|
-
const boxRef =
|
|
6983
|
-
|
|
7101
|
+
const [mounted, setMounted] = React11.useState(false);
|
|
7102
|
+
const [visible, setVisible] = React11.useState(false);
|
|
7103
|
+
const boxRef = React11.useRef(null);
|
|
7104
|
+
React11.useEffect(() => {
|
|
6984
7105
|
if (isOpen) {
|
|
6985
7106
|
setMounted(true);
|
|
6986
7107
|
const t2 = setTimeout(() => setVisible(true), 1);
|
|
@@ -6994,12 +7115,12 @@ var Modal = (props) => {
|
|
|
6994
7115
|
if (!mounted) return null;
|
|
6995
7116
|
const stateClass = visible ? "enter" : "exit";
|
|
6996
7117
|
return createPortal(
|
|
6997
|
-
/* @__PURE__ */
|
|
7118
|
+
/* @__PURE__ */ jsx314(
|
|
6998
7119
|
"div",
|
|
6999
7120
|
{
|
|
7000
7121
|
className: clsx_default("lib-xplat-modal", "dim", stateClass),
|
|
7001
7122
|
onClick: onClose,
|
|
7002
|
-
children: /* @__PURE__ */
|
|
7123
|
+
children: /* @__PURE__ */ jsx314(
|
|
7003
7124
|
"div",
|
|
7004
7125
|
{
|
|
7005
7126
|
ref: boxRef,
|
|
@@ -7007,7 +7128,7 @@ var Modal = (props) => {
|
|
|
7007
7128
|
role: "dialog",
|
|
7008
7129
|
"aria-modal": "true",
|
|
7009
7130
|
onClick: (e) => e.stopPropagation(),
|
|
7010
|
-
children: /* @__PURE__ */
|
|
7131
|
+
children: /* @__PURE__ */ jsx314(PortalProvider, { container: boxRef.current, children })
|
|
7011
7132
|
}
|
|
7012
7133
|
)
|
|
7013
7134
|
}
|
|
@@ -7019,9 +7140,9 @@ Modal.displayName = "Modal";
|
|
|
7019
7140
|
var Modal_default = Modal;
|
|
7020
7141
|
|
|
7021
7142
|
// src/components/DatePicker/SingleDatePicker/index.tsx
|
|
7022
|
-
import
|
|
7023
|
-
import { Fragment as Fragment3, jsx as
|
|
7024
|
-
var DayCell2 =
|
|
7143
|
+
import React12 from "react";
|
|
7144
|
+
import { Fragment as Fragment3, jsx as jsx315, jsxs as jsxs201 } from "react/jsx-runtime";
|
|
7145
|
+
var DayCell2 = React12.memo(
|
|
7025
7146
|
({
|
|
7026
7147
|
day,
|
|
7027
7148
|
disabled,
|
|
@@ -7031,7 +7152,7 @@ var DayCell2 = React10.memo(
|
|
|
7031
7152
|
isEnd,
|
|
7032
7153
|
inRange,
|
|
7033
7154
|
onSelect
|
|
7034
|
-
}) => /* @__PURE__ */
|
|
7155
|
+
}) => /* @__PURE__ */ jsx315(
|
|
7035
7156
|
"button",
|
|
7036
7157
|
{
|
|
7037
7158
|
type: "button",
|
|
@@ -7073,26 +7194,26 @@ var SingleDatePicker = (props) => {
|
|
|
7073
7194
|
initialYear,
|
|
7074
7195
|
initialMonth
|
|
7075
7196
|
);
|
|
7076
|
-
const [pickerMode, setPickerMode] =
|
|
7077
|
-
const [yearRangeStart, setYearRangeStart] =
|
|
7197
|
+
const [pickerMode, setPickerMode] = React12.useState("days");
|
|
7198
|
+
const [yearRangeStart, setYearRangeStart] = React12.useState(
|
|
7078
7199
|
Math.floor((initialYear ?? (/* @__PURE__ */ new Date()).getFullYear()) / 12) * 12
|
|
7079
7200
|
);
|
|
7080
|
-
const minTime =
|
|
7201
|
+
const minTime = React12.useMemo(
|
|
7081
7202
|
() => minDate ? new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate()).getTime() : -Infinity,
|
|
7082
7203
|
[minDate]
|
|
7083
7204
|
);
|
|
7084
|
-
const maxTime =
|
|
7205
|
+
const maxTime = React12.useMemo(
|
|
7085
7206
|
() => maxDate ? new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate()).getTime() : Infinity,
|
|
7086
7207
|
[maxDate]
|
|
7087
7208
|
);
|
|
7088
|
-
const highlightSet =
|
|
7209
|
+
const highlightSet = React12.useMemo(() => {
|
|
7089
7210
|
const set = /* @__PURE__ */ new Set();
|
|
7090
7211
|
for (const h of highlightDates) {
|
|
7091
7212
|
set.add(`${h.getFullYear()}-${h.getMonth()}-${h.getDate()}`);
|
|
7092
7213
|
}
|
|
7093
7214
|
return set;
|
|
7094
7215
|
}, [highlightDates]);
|
|
7095
|
-
const handleSelect =
|
|
7216
|
+
const handleSelect = React12.useCallback(
|
|
7096
7217
|
(date) => {
|
|
7097
7218
|
onChange?.(date);
|
|
7098
7219
|
},
|
|
@@ -7129,20 +7250,20 @@ var SingleDatePicker = (props) => {
|
|
|
7129
7250
|
const monthLabels = MONTH_LABELS[locale];
|
|
7130
7251
|
const titleText = pickerMode === "days" ? locale === "ko" ? `${year}\uB144 ${monthLabels[month]}` : `${monthLabels[month]} ${year}` : pickerMode === "months" ? `${year}` : `${yearRangeStart} - ${yearRangeStart + 11}`;
|
|
7131
7252
|
const hasRange = rangeStart != null && rangeEnd != null;
|
|
7132
|
-
return /* @__PURE__ */
|
|
7253
|
+
return /* @__PURE__ */ jsxs201(
|
|
7133
7254
|
"div",
|
|
7134
7255
|
{
|
|
7135
7256
|
className: clsx_default("lib-xplat-datepicker", "single"),
|
|
7136
7257
|
children: [
|
|
7137
|
-
/* @__PURE__ */
|
|
7138
|
-
/* @__PURE__ */
|
|
7139
|
-
/* @__PURE__ */
|
|
7140
|
-
/* @__PURE__ */
|
|
7258
|
+
/* @__PURE__ */ jsxs201("div", { className: "datepicker-header", children: [
|
|
7259
|
+
/* @__PURE__ */ jsx315("button", { className: "datepicker-nav", onClick: handlePrev, type: "button", children: /* @__PURE__ */ jsx315(ChevronLeftIcon_default, {}) }),
|
|
7260
|
+
/* @__PURE__ */ jsx315("button", { className: "datepicker-title", onClick: handleTitleClick, type: "button", children: titleText }),
|
|
7261
|
+
/* @__PURE__ */ jsx315("button", { className: "datepicker-nav", onClick: handleNext, type: "button", children: /* @__PURE__ */ jsx315(ChevronRightIcon_default, {}) })
|
|
7141
7262
|
] }),
|
|
7142
|
-
/* @__PURE__ */
|
|
7143
|
-
pickerMode === "years" && /* @__PURE__ */
|
|
7263
|
+
/* @__PURE__ */ jsxs201("div", { className: "datepicker-body", children: [
|
|
7264
|
+
pickerMode === "years" && /* @__PURE__ */ jsx315("div", { className: "datepicker-picker-grid", children: Array.from({ length: 12 }, (_, i) => {
|
|
7144
7265
|
const y = yearRangeStart + i;
|
|
7145
|
-
return /* @__PURE__ */
|
|
7266
|
+
return /* @__PURE__ */ jsx315(
|
|
7146
7267
|
"button",
|
|
7147
7268
|
{
|
|
7148
7269
|
type: "button",
|
|
@@ -7153,7 +7274,7 @@ var SingleDatePicker = (props) => {
|
|
|
7153
7274
|
y
|
|
7154
7275
|
);
|
|
7155
7276
|
}) }),
|
|
7156
|
-
pickerMode === "months" && /* @__PURE__ */
|
|
7277
|
+
pickerMode === "months" && /* @__PURE__ */ jsx315("div", { className: "datepicker-picker-grid", children: monthLabels.map((label, i) => /* @__PURE__ */ jsx315(
|
|
7157
7278
|
"button",
|
|
7158
7279
|
{
|
|
7159
7280
|
type: "button",
|
|
@@ -7163,8 +7284,8 @@ var SingleDatePicker = (props) => {
|
|
|
7163
7284
|
},
|
|
7164
7285
|
i
|
|
7165
7286
|
)) }),
|
|
7166
|
-
pickerMode === "days" && /* @__PURE__ */
|
|
7167
|
-
/* @__PURE__ */
|
|
7287
|
+
pickerMode === "days" && /* @__PURE__ */ jsxs201(Fragment3, { children: [
|
|
7288
|
+
/* @__PURE__ */ jsx315("div", { className: "datepicker-weekdays", children: weekdays.map((label, i) => /* @__PURE__ */ jsx315(
|
|
7168
7289
|
"div",
|
|
7169
7290
|
{
|
|
7170
7291
|
className: clsx_default(
|
|
@@ -7176,7 +7297,7 @@ var SingleDatePicker = (props) => {
|
|
|
7176
7297
|
},
|
|
7177
7298
|
label
|
|
7178
7299
|
)) }),
|
|
7179
|
-
/* @__PURE__ */
|
|
7300
|
+
/* @__PURE__ */ jsx315("div", { className: "datepicker-grid", children: days.map((day, idx) => {
|
|
7180
7301
|
const t = day.date.getTime();
|
|
7181
7302
|
const disabled = t < minTime || t > maxTime;
|
|
7182
7303
|
const selected = value ? isSameDay(day.date, value) : false;
|
|
@@ -7186,7 +7307,7 @@ var SingleDatePicker = (props) => {
|
|
|
7186
7307
|
const isStart = hasRange ? isSameDay(day.date, rangeStart) : false;
|
|
7187
7308
|
const isEnd = hasRange ? isSameDay(day.date, rangeEnd) : false;
|
|
7188
7309
|
const inRangeVal = hasRange ? isInRange(day.date, rangeStart, rangeEnd) : false;
|
|
7189
|
-
return /* @__PURE__ */
|
|
7310
|
+
return /* @__PURE__ */ jsx315(
|
|
7190
7311
|
DayCell2,
|
|
7191
7312
|
{
|
|
7192
7313
|
day,
|
|
@@ -7211,7 +7332,7 @@ SingleDatePicker.displayName = "SingleDatePicker";
|
|
|
7211
7332
|
var SingleDatePicker_default = SingleDatePicker;
|
|
7212
7333
|
|
|
7213
7334
|
// src/components/DatePicker/InputDatePicker/index.tsx
|
|
7214
|
-
import { jsx as
|
|
7335
|
+
import { jsx as jsx316, jsxs as jsxs202 } from "react/jsx-runtime";
|
|
7215
7336
|
var formatDate = (date) => {
|
|
7216
7337
|
if (!date || !(date instanceof Date) || isNaN(date.getTime())) return "";
|
|
7217
7338
|
const y = date.getFullYear();
|
|
@@ -7221,8 +7342,8 @@ var formatDate = (date) => {
|
|
|
7221
7342
|
};
|
|
7222
7343
|
var InputDatePicker = (props) => {
|
|
7223
7344
|
const { value, onChange, minDate, maxDate, disabled, locale = "ko", placeholder } = props;
|
|
7224
|
-
const [isOpen, setIsOpen] =
|
|
7225
|
-
const [tempDate, setTempDate] =
|
|
7345
|
+
const [isOpen, setIsOpen] = React13.useState(false);
|
|
7346
|
+
const [tempDate, setTempDate] = React13.useState(value ?? /* @__PURE__ */ new Date());
|
|
7226
7347
|
const handleOpen = () => {
|
|
7227
7348
|
if (disabled) return;
|
|
7228
7349
|
setTempDate(value ?? /* @__PURE__ */ new Date());
|
|
@@ -7238,19 +7359,19 @@ var InputDatePicker = (props) => {
|
|
|
7238
7359
|
const handleClose = () => {
|
|
7239
7360
|
setIsOpen(false);
|
|
7240
7361
|
};
|
|
7241
|
-
return /* @__PURE__ */
|
|
7242
|
-
/* @__PURE__ */
|
|
7362
|
+
return /* @__PURE__ */ jsxs202("div", { className: clsx_default("lib-xplat-datepicker input-datepicker", disabled && "disabled"), children: [
|
|
7363
|
+
/* @__PURE__ */ jsx316("div", { className: "input-datepicker-trigger", onClick: handleOpen, children: /* @__PURE__ */ jsx316(
|
|
7243
7364
|
Input_default,
|
|
7244
7365
|
{
|
|
7245
7366
|
value: formatDate(value),
|
|
7246
7367
|
placeholder,
|
|
7247
|
-
suffix: /* @__PURE__ */
|
|
7368
|
+
suffix: /* @__PURE__ */ jsx316(CalenderIcon_default, {}),
|
|
7248
7369
|
disabled,
|
|
7249
7370
|
readOnly: true
|
|
7250
7371
|
}
|
|
7251
7372
|
) }),
|
|
7252
|
-
/* @__PURE__ */
|
|
7253
|
-
/* @__PURE__ */
|
|
7373
|
+
/* @__PURE__ */ jsx316(Modal_default, { isOpen, onClose: handleClose, children: /* @__PURE__ */ jsxs202("div", { className: "lib-xplat-popup-datepicker-card", children: [
|
|
7374
|
+
/* @__PURE__ */ jsx316("div", { className: "popup-datepicker-content", children: /* @__PURE__ */ jsx316(
|
|
7254
7375
|
SingleDatePicker_default,
|
|
7255
7376
|
{
|
|
7256
7377
|
value: tempDate,
|
|
@@ -7260,9 +7381,9 @@ var InputDatePicker = (props) => {
|
|
|
7260
7381
|
locale
|
|
7261
7382
|
}
|
|
7262
7383
|
) }),
|
|
7263
|
-
/* @__PURE__ */
|
|
7264
|
-
/* @__PURE__ */
|
|
7265
|
-
/* @__PURE__ */
|
|
7384
|
+
/* @__PURE__ */ jsxs202("div", { className: "popup-datepicker-footer", children: [
|
|
7385
|
+
/* @__PURE__ */ jsx316(Button_default, { type: "secondary", onClick: handleClose, children: locale === "ko" ? "\uCDE8\uC18C" : "Cancel" }),
|
|
7386
|
+
/* @__PURE__ */ jsx316(Button_default, { type: "primary", onClick: handleApply, children: locale === "ko" ? "\uC801\uC6A9" : "Apply" })
|
|
7266
7387
|
] })
|
|
7267
7388
|
] }) })
|
|
7268
7389
|
] });
|
|
@@ -7271,20 +7392,20 @@ InputDatePicker.displayName = "InputDatePicker";
|
|
|
7271
7392
|
var InputDatePicker_default = InputDatePicker;
|
|
7272
7393
|
|
|
7273
7394
|
// src/components/DatePicker/PopupPicker/index.tsx
|
|
7274
|
-
import
|
|
7395
|
+
import React17 from "react";
|
|
7275
7396
|
|
|
7276
7397
|
// src/components/DatePicker/RangePicker/index.tsx
|
|
7277
|
-
import
|
|
7398
|
+
import React16 from "react";
|
|
7278
7399
|
|
|
7279
7400
|
// src/components/Tab/Tab.tsx
|
|
7280
|
-
import
|
|
7401
|
+
import React15 from "react";
|
|
7281
7402
|
|
|
7282
7403
|
// src/components/Tab/TabItem.tsx
|
|
7283
|
-
import
|
|
7284
|
-
import { jsx as
|
|
7285
|
-
var TabItem =
|
|
7404
|
+
import React14 from "react";
|
|
7405
|
+
import { jsx as jsx317 } from "react/jsx-runtime";
|
|
7406
|
+
var TabItem = React14.forwardRef((props, ref) => {
|
|
7286
7407
|
const { isActive, title, onClick } = props;
|
|
7287
|
-
return /* @__PURE__ */
|
|
7408
|
+
return /* @__PURE__ */ jsx317(
|
|
7288
7409
|
"div",
|
|
7289
7410
|
{
|
|
7290
7411
|
ref,
|
|
@@ -7298,25 +7419,25 @@ TabItem.displayName = "TabItem";
|
|
|
7298
7419
|
var TabItem_default = TabItem;
|
|
7299
7420
|
|
|
7300
7421
|
// src/components/Tab/Tab.tsx
|
|
7301
|
-
import { jsx as
|
|
7422
|
+
import { jsx as jsx318, jsxs as jsxs203 } from "react/jsx-runtime";
|
|
7302
7423
|
var Tab = (props) => {
|
|
7303
7424
|
const { activeIndex, onChange, tabs, type, size = "md" } = props;
|
|
7304
|
-
const [underlineStyle, setUnderlineStyle] =
|
|
7425
|
+
const [underlineStyle, setUnderlineStyle] = React15.useState({
|
|
7305
7426
|
left: 0,
|
|
7306
7427
|
width: 0
|
|
7307
7428
|
});
|
|
7308
|
-
const itemRefs =
|
|
7429
|
+
const itemRefs = React15.useRef([]);
|
|
7309
7430
|
const handleChangeActiveTab = (tabItem, tabIdx) => {
|
|
7310
7431
|
onChange(tabItem, tabIdx);
|
|
7311
7432
|
};
|
|
7312
|
-
|
|
7433
|
+
React15.useEffect(() => {
|
|
7313
7434
|
const el = itemRefs.current[activeIndex];
|
|
7314
7435
|
if (el) {
|
|
7315
7436
|
setUnderlineStyle({ left: el.offsetLeft, width: el.offsetWidth });
|
|
7316
7437
|
}
|
|
7317
7438
|
}, [activeIndex, tabs.length]);
|
|
7318
|
-
return /* @__PURE__ */
|
|
7319
|
-
tabs.map((tab, idx) => /* @__PURE__ */
|
|
7439
|
+
return /* @__PURE__ */ jsxs203("div", { className: clsx_default("lib-xplat-tab", `type-${type}`, size), children: [
|
|
7440
|
+
tabs.map((tab, idx) => /* @__PURE__ */ jsx318(
|
|
7320
7441
|
TabItem_default,
|
|
7321
7442
|
{
|
|
7322
7443
|
onClick: () => handleChangeActiveTab(tab, idx),
|
|
@@ -7328,7 +7449,7 @@ var Tab = (props) => {
|
|
|
7328
7449
|
},
|
|
7329
7450
|
`${tab.value}_${idx}`
|
|
7330
7451
|
)),
|
|
7331
|
-
type === "toggle" && /* @__PURE__ */
|
|
7452
|
+
type === "toggle" && /* @__PURE__ */ jsx318(
|
|
7332
7453
|
"div",
|
|
7333
7454
|
{
|
|
7334
7455
|
className: "tab-toggle-underline",
|
|
@@ -7344,7 +7465,7 @@ Tab.displayName = "Tab";
|
|
|
7344
7465
|
var Tab_default = Tab;
|
|
7345
7466
|
|
|
7346
7467
|
// src/components/DatePicker/RangePicker/index.tsx
|
|
7347
|
-
import { jsx as
|
|
7468
|
+
import { jsx as jsx319, jsxs as jsxs204 } from "react/jsx-runtime";
|
|
7348
7469
|
var RangePicker = (props) => {
|
|
7349
7470
|
const {
|
|
7350
7471
|
startDate,
|
|
@@ -7354,7 +7475,7 @@ var RangePicker = (props) => {
|
|
|
7354
7475
|
maxDate,
|
|
7355
7476
|
locale = "ko"
|
|
7356
7477
|
} = props;
|
|
7357
|
-
const [activeTab, setActiveTab] =
|
|
7478
|
+
const [activeTab, setActiveTab] = React16.useState("start");
|
|
7358
7479
|
const handleStartChange = (date) => {
|
|
7359
7480
|
if (!date) return;
|
|
7360
7481
|
const newStart = date > endDate ? endDate : date;
|
|
@@ -7367,8 +7488,8 @@ var RangePicker = (props) => {
|
|
|
7367
7488
|
};
|
|
7368
7489
|
const startMaxDate = maxDate && endDate < maxDate ? endDate : endDate;
|
|
7369
7490
|
const endMinDate = minDate && startDate > minDate ? startDate : startDate;
|
|
7370
|
-
return /* @__PURE__ */
|
|
7371
|
-
/* @__PURE__ */
|
|
7491
|
+
return /* @__PURE__ */ jsxs204("div", { className: clsx_default("lib-xplat-datepicker", "range"), children: [
|
|
7492
|
+
/* @__PURE__ */ jsx319("div", { className: "datepicker-range-tabs", children: /* @__PURE__ */ jsx319(
|
|
7372
7493
|
Tab_default,
|
|
7373
7494
|
{
|
|
7374
7495
|
activeIndex: activeTab === "start" ? 0 : 1,
|
|
@@ -7381,8 +7502,8 @@ var RangePicker = (props) => {
|
|
|
7381
7502
|
size: "sm"
|
|
7382
7503
|
}
|
|
7383
7504
|
) }),
|
|
7384
|
-
/* @__PURE__ */
|
|
7385
|
-
/* @__PURE__ */
|
|
7505
|
+
/* @__PURE__ */ jsxs204("div", { className: "datepicker-range-panels", children: [
|
|
7506
|
+
/* @__PURE__ */ jsx319(
|
|
7386
7507
|
SingleDatePicker_default,
|
|
7387
7508
|
{
|
|
7388
7509
|
value: startDate,
|
|
@@ -7394,7 +7515,7 @@ var RangePicker = (props) => {
|
|
|
7394
7515
|
locale
|
|
7395
7516
|
}
|
|
7396
7517
|
),
|
|
7397
|
-
/* @__PURE__ */
|
|
7518
|
+
/* @__PURE__ */ jsx319(
|
|
7398
7519
|
SingleDatePicker_default,
|
|
7399
7520
|
{
|
|
7400
7521
|
value: endDate,
|
|
@@ -7407,7 +7528,7 @@ var RangePicker = (props) => {
|
|
|
7407
7528
|
}
|
|
7408
7529
|
)
|
|
7409
7530
|
] }),
|
|
7410
|
-
/* @__PURE__ */
|
|
7531
|
+
/* @__PURE__ */ jsx319("div", { className: "datepicker-range-mobile", children: activeTab === "start" ? /* @__PURE__ */ jsx319(
|
|
7411
7532
|
SingleDatePicker_default,
|
|
7412
7533
|
{
|
|
7413
7534
|
value: startDate,
|
|
@@ -7418,7 +7539,7 @@ var RangePicker = (props) => {
|
|
|
7418
7539
|
rangeEnd: endDate,
|
|
7419
7540
|
locale
|
|
7420
7541
|
}
|
|
7421
|
-
) : /* @__PURE__ */
|
|
7542
|
+
) : /* @__PURE__ */ jsx319(
|
|
7422
7543
|
SingleDatePicker_default,
|
|
7423
7544
|
{
|
|
7424
7545
|
value: endDate,
|
|
@@ -7436,10 +7557,10 @@ RangePicker.displayName = "RangePicker";
|
|
|
7436
7557
|
var RangePicker_default = RangePicker;
|
|
7437
7558
|
|
|
7438
7559
|
// src/components/DatePicker/PopupPicker/index.tsx
|
|
7439
|
-
import { jsx as
|
|
7560
|
+
import { jsx as jsx320, jsxs as jsxs205 } from "react/jsx-runtime";
|
|
7440
7561
|
var PopupPicker = (props) => {
|
|
7441
7562
|
const { component, type, locale } = props;
|
|
7442
|
-
const [isOpen, setIsOpen] =
|
|
7563
|
+
const [isOpen, setIsOpen] = React17.useState(false);
|
|
7443
7564
|
const handleClick = () => setIsOpen(true);
|
|
7444
7565
|
const handleClose = () => setIsOpen(false);
|
|
7445
7566
|
const handleSingleChange = (date) => {
|
|
@@ -7447,11 +7568,11 @@ var PopupPicker = (props) => {
|
|
|
7447
7568
|
props.onChange?.(date);
|
|
7448
7569
|
handleClose();
|
|
7449
7570
|
};
|
|
7450
|
-
return /* @__PURE__ */
|
|
7451
|
-
|
|
7452
|
-
/* @__PURE__ */
|
|
7453
|
-
/* @__PURE__ */
|
|
7454
|
-
type === "single" && /* @__PURE__ */
|
|
7571
|
+
return /* @__PURE__ */ jsxs205("div", { className: "lib-xplat-popup-datepicker", children: [
|
|
7572
|
+
React17.cloneElement(component, { onClick: handleClick }),
|
|
7573
|
+
/* @__PURE__ */ jsx320(Modal_default, { isOpen, onClose: handleClose, children: /* @__PURE__ */ jsxs205("div", { className: clsx_default("lib-xplat-popup-datepicker-card", type === "range" && "range-mode"), children: [
|
|
7574
|
+
/* @__PURE__ */ jsxs205("div", { className: "popup-datepicker-content", children: [
|
|
7575
|
+
type === "single" && /* @__PURE__ */ jsx320(
|
|
7455
7576
|
SingleDatePicker_default,
|
|
7456
7577
|
{
|
|
7457
7578
|
value: props.value,
|
|
@@ -7461,7 +7582,7 @@ var PopupPicker = (props) => {
|
|
|
7461
7582
|
locale
|
|
7462
7583
|
}
|
|
7463
7584
|
),
|
|
7464
|
-
type === "range" && /* @__PURE__ */
|
|
7585
|
+
type === "range" && /* @__PURE__ */ jsx320(
|
|
7465
7586
|
RangePicker_default,
|
|
7466
7587
|
{
|
|
7467
7588
|
startDate: props.startDate,
|
|
@@ -7473,8 +7594,8 @@ var PopupPicker = (props) => {
|
|
|
7473
7594
|
}
|
|
7474
7595
|
)
|
|
7475
7596
|
] }),
|
|
7476
|
-
/* @__PURE__ */
|
|
7477
|
-
/* @__PURE__ */
|
|
7597
|
+
/* @__PURE__ */ jsxs205("div", { className: "popup-datepicker-footer", children: [
|
|
7598
|
+
/* @__PURE__ */ jsx320(
|
|
7478
7599
|
Button_default,
|
|
7479
7600
|
{
|
|
7480
7601
|
type: "secondary",
|
|
@@ -7482,7 +7603,7 @@ var PopupPicker = (props) => {
|
|
|
7482
7603
|
children: locale === "ko" ? "\uCDE8\uC18C" : "Cancel"
|
|
7483
7604
|
}
|
|
7484
7605
|
),
|
|
7485
|
-
/* @__PURE__ */
|
|
7606
|
+
/* @__PURE__ */ jsx320(Button_default, { type: "primary", onClick: handleClose, children: locale === "ko" ? "\uC801\uC6A9" : "Apply" })
|
|
7486
7607
|
] })
|
|
7487
7608
|
] }) })
|
|
7488
7609
|
] });
|
|
@@ -7491,10 +7612,10 @@ PopupPicker.displayName = "PopupPicker";
|
|
|
7491
7612
|
var PopupPicker_default = PopupPicker;
|
|
7492
7613
|
|
|
7493
7614
|
// src/components/Divider/Divider.tsx
|
|
7494
|
-
import { jsx as
|
|
7615
|
+
import { jsx as jsx321 } from "react/jsx-runtime";
|
|
7495
7616
|
var Divider = (props) => {
|
|
7496
7617
|
const { orientation = "horizontal" } = props;
|
|
7497
|
-
return /* @__PURE__ */
|
|
7618
|
+
return /* @__PURE__ */ jsx321(
|
|
7498
7619
|
"div",
|
|
7499
7620
|
{
|
|
7500
7621
|
className: clsx_default("lib-xplat-divider", orientation),
|
|
@@ -7507,15 +7628,15 @@ Divider.displayName = "Divider";
|
|
|
7507
7628
|
var Divider_default = Divider;
|
|
7508
7629
|
|
|
7509
7630
|
// src/components/Drawer/Drawer.tsx
|
|
7510
|
-
import
|
|
7631
|
+
import React18 from "react";
|
|
7511
7632
|
import { createPortal as createPortal2 } from "react-dom";
|
|
7512
|
-
import { jsx as
|
|
7633
|
+
import { jsx as jsx322, jsxs as jsxs206 } from "react/jsx-runtime";
|
|
7513
7634
|
var ANIMATION_DURATION_MS2 = 250;
|
|
7514
7635
|
var Drawer = (props) => {
|
|
7515
7636
|
const { isOpen, onClose, placement = "right", size = "md", title, children } = props;
|
|
7516
|
-
const [mounted, setMounted] =
|
|
7517
|
-
const [visible, setVisible] =
|
|
7518
|
-
|
|
7637
|
+
const [mounted, setMounted] = React18.useState(false);
|
|
7638
|
+
const [visible, setVisible] = React18.useState(false);
|
|
7639
|
+
React18.useEffect(() => {
|
|
7519
7640
|
if (isOpen) {
|
|
7520
7641
|
setMounted(true);
|
|
7521
7642
|
const t2 = setTimeout(() => setVisible(true), 1);
|
|
@@ -7529,12 +7650,12 @@ var Drawer = (props) => {
|
|
|
7529
7650
|
if (!mounted) return null;
|
|
7530
7651
|
const stateClass = visible ? "enter" : "exit";
|
|
7531
7652
|
return createPortal2(
|
|
7532
|
-
/* @__PURE__ */
|
|
7653
|
+
/* @__PURE__ */ jsx322(
|
|
7533
7654
|
"div",
|
|
7534
7655
|
{
|
|
7535
7656
|
className: clsx_default("lib-xplat-drawer-overlay", stateClass),
|
|
7536
7657
|
onClick: onClose,
|
|
7537
|
-
children: /* @__PURE__ */
|
|
7658
|
+
children: /* @__PURE__ */ jsxs206(
|
|
7538
7659
|
"div",
|
|
7539
7660
|
{
|
|
7540
7661
|
className: clsx_default("lib-xplat-drawer", placement, size, stateClass),
|
|
@@ -7542,11 +7663,11 @@ var Drawer = (props) => {
|
|
|
7542
7663
|
"aria-modal": "true",
|
|
7543
7664
|
onClick: (e) => e.stopPropagation(),
|
|
7544
7665
|
children: [
|
|
7545
|
-
title && /* @__PURE__ */
|
|
7546
|
-
/* @__PURE__ */
|
|
7547
|
-
/* @__PURE__ */
|
|
7666
|
+
title && /* @__PURE__ */ jsxs206("div", { className: "drawer-header", children: [
|
|
7667
|
+
/* @__PURE__ */ jsx322("span", { className: "drawer-title", children: title }),
|
|
7668
|
+
/* @__PURE__ */ jsx322("button", { className: "close-btn", onClick: onClose, "aria-label": "\uB2EB\uAE30", children: "\xD7" })
|
|
7548
7669
|
] }),
|
|
7549
|
-
/* @__PURE__ */
|
|
7670
|
+
/* @__PURE__ */ jsx322("div", { className: "drawer-body", children })
|
|
7550
7671
|
]
|
|
7551
7672
|
}
|
|
7552
7673
|
)
|
|
@@ -7559,16 +7680,16 @@ Drawer.displayName = "Drawer";
|
|
|
7559
7680
|
var Drawer_default = Drawer;
|
|
7560
7681
|
|
|
7561
7682
|
// src/components/Dropdown/Dropdown.tsx
|
|
7562
|
-
import
|
|
7683
|
+
import React21 from "react";
|
|
7563
7684
|
|
|
7564
7685
|
// src/tokens/hooks/useAutoPosition.ts
|
|
7565
|
-
import
|
|
7686
|
+
import React19 from "react";
|
|
7566
7687
|
var useAutoPosition = (triggerRef, popRef, enabled = true) => {
|
|
7567
|
-
const [position, setPosition] =
|
|
7688
|
+
const [position, setPosition] = React19.useState({
|
|
7568
7689
|
position: {},
|
|
7569
7690
|
direction: "bottom"
|
|
7570
7691
|
});
|
|
7571
|
-
const calculatePosition =
|
|
7692
|
+
const calculatePosition = React19.useCallback(() => {
|
|
7572
7693
|
if (!triggerRef.current || !popRef.current) return;
|
|
7573
7694
|
const triggerRect = triggerRef.current.getBoundingClientRect();
|
|
7574
7695
|
const popW = popRef.current.offsetWidth;
|
|
@@ -7595,13 +7716,13 @@ var useAutoPosition = (triggerRef, popRef, enabled = true) => {
|
|
|
7595
7716
|
direction
|
|
7596
7717
|
});
|
|
7597
7718
|
}, [triggerRef, popRef]);
|
|
7598
|
-
|
|
7719
|
+
React19.useLayoutEffect(() => {
|
|
7599
7720
|
if (!enabled) return;
|
|
7600
7721
|
calculatePosition();
|
|
7601
7722
|
const raf = requestAnimationFrame(calculatePosition);
|
|
7602
7723
|
return () => cancelAnimationFrame(raf);
|
|
7603
7724
|
}, [calculatePosition, enabled]);
|
|
7604
|
-
|
|
7725
|
+
React19.useEffect(() => {
|
|
7605
7726
|
if (!enabled || !popRef.current) return;
|
|
7606
7727
|
const observer = new ResizeObserver(() => {
|
|
7607
7728
|
calculatePosition();
|
|
@@ -7609,7 +7730,7 @@ var useAutoPosition = (triggerRef, popRef, enabled = true) => {
|
|
|
7609
7730
|
observer.observe(popRef.current);
|
|
7610
7731
|
return () => observer.disconnect();
|
|
7611
7732
|
}, [calculatePosition, enabled, popRef]);
|
|
7612
|
-
|
|
7733
|
+
React19.useEffect(() => {
|
|
7613
7734
|
if (!enabled) return;
|
|
7614
7735
|
window.addEventListener("resize", calculatePosition);
|
|
7615
7736
|
window.addEventListener("scroll", calculatePosition, true);
|
|
@@ -7623,9 +7744,9 @@ var useAutoPosition = (triggerRef, popRef, enabled = true) => {
|
|
|
7623
7744
|
var useAutoPosition_default = useAutoPosition;
|
|
7624
7745
|
|
|
7625
7746
|
// src/tokens/hooks/useClickOutside.ts
|
|
7626
|
-
import
|
|
7747
|
+
import React20 from "react";
|
|
7627
7748
|
var useClickOutside = (refs, handler, enabled = true) => {
|
|
7628
|
-
|
|
7749
|
+
React20.useEffect(() => {
|
|
7629
7750
|
if (!enabled) return;
|
|
7630
7751
|
const refArray = Array.isArray(refs) ? refs : [refs];
|
|
7631
7752
|
const listener = (event) => {
|
|
@@ -7648,17 +7769,17 @@ var useClickOutside = (refs, handler, enabled = true) => {
|
|
|
7648
7769
|
var useClickOutside_default = useClickOutside;
|
|
7649
7770
|
|
|
7650
7771
|
// src/components/Dropdown/Dropdown.tsx
|
|
7651
|
-
import { jsx as
|
|
7772
|
+
import { jsx as jsx323, jsxs as jsxs207 } from "react/jsx-runtime";
|
|
7652
7773
|
var Dropdown = (props) => {
|
|
7653
7774
|
const { items, children } = props;
|
|
7654
|
-
const [isOpen, setIsOpen] =
|
|
7655
|
-
const [mounted, setMounted] =
|
|
7656
|
-
const [visible, setVisible] =
|
|
7657
|
-
const triggerRef =
|
|
7658
|
-
const menuRef =
|
|
7775
|
+
const [isOpen, setIsOpen] = React21.useState(false);
|
|
7776
|
+
const [mounted, setMounted] = React21.useState(false);
|
|
7777
|
+
const [visible, setVisible] = React21.useState(false);
|
|
7778
|
+
const triggerRef = React21.useRef(null);
|
|
7779
|
+
const menuRef = React21.useRef(null);
|
|
7659
7780
|
const { position, direction } = useAutoPosition_default(triggerRef, menuRef, mounted);
|
|
7660
7781
|
useClickOutside_default([triggerRef, menuRef], () => setIsOpen(false), isOpen);
|
|
7661
|
-
|
|
7782
|
+
React21.useEffect(() => {
|
|
7662
7783
|
if (isOpen) {
|
|
7663
7784
|
setMounted(true);
|
|
7664
7785
|
const t2 = setTimeout(() => setVisible(true), 1);
|
|
@@ -7673,8 +7794,8 @@ var Dropdown = (props) => {
|
|
|
7673
7794
|
item.onClick?.();
|
|
7674
7795
|
setIsOpen(false);
|
|
7675
7796
|
};
|
|
7676
|
-
return /* @__PURE__ */
|
|
7677
|
-
/* @__PURE__ */
|
|
7797
|
+
return /* @__PURE__ */ jsxs207("div", { className: "lib-xplat-dropdown", children: [
|
|
7798
|
+
/* @__PURE__ */ jsx323(
|
|
7678
7799
|
"div",
|
|
7679
7800
|
{
|
|
7680
7801
|
ref: triggerRef,
|
|
@@ -7683,14 +7804,14 @@ var Dropdown = (props) => {
|
|
|
7683
7804
|
children
|
|
7684
7805
|
}
|
|
7685
7806
|
),
|
|
7686
|
-
mounted && /* @__PURE__ */
|
|
7807
|
+
mounted && /* @__PURE__ */ jsx323(Portal_default, { children: /* @__PURE__ */ jsx323(
|
|
7687
7808
|
"div",
|
|
7688
7809
|
{
|
|
7689
7810
|
ref: menuRef,
|
|
7690
7811
|
className: clsx_default("lib-xplat-dropdown-menu", direction, { visible }),
|
|
7691
7812
|
style: { top: position.top, left: position.left },
|
|
7692
7813
|
role: "menu",
|
|
7693
|
-
children: items.map((item) => /* @__PURE__ */
|
|
7814
|
+
children: items.map((item) => /* @__PURE__ */ jsx323(
|
|
7694
7815
|
"button",
|
|
7695
7816
|
{
|
|
7696
7817
|
className: clsx_default("dropdown-item", {
|
|
@@ -7712,23 +7833,23 @@ Dropdown.displayName = "Dropdown";
|
|
|
7712
7833
|
var Dropdown_default = Dropdown;
|
|
7713
7834
|
|
|
7714
7835
|
// src/components/EmptyState/EmptyState.tsx
|
|
7715
|
-
import { jsx as
|
|
7836
|
+
import { jsx as jsx324, jsxs as jsxs208 } from "react/jsx-runtime";
|
|
7716
7837
|
var EmptyState = (props) => {
|
|
7717
7838
|
const { icon, title = "\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4", description, action } = props;
|
|
7718
|
-
return /* @__PURE__ */
|
|
7719
|
-
icon && /* @__PURE__ */
|
|
7720
|
-
!icon && /* @__PURE__ */
|
|
7721
|
-
/* @__PURE__ */
|
|
7722
|
-
description && /* @__PURE__ */
|
|
7723
|
-
action && /* @__PURE__ */
|
|
7839
|
+
return /* @__PURE__ */ jsxs208("div", { className: "lib-xplat-empty-state", children: [
|
|
7840
|
+
icon && /* @__PURE__ */ jsx324("div", { className: "empty-icon", children: icon }),
|
|
7841
|
+
!icon && /* @__PURE__ */ jsx324("div", { className: "empty-icon", children: /* @__PURE__ */ jsx324("svg", { viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsx324("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" }) }) }),
|
|
7842
|
+
/* @__PURE__ */ jsx324("p", { className: "empty-title", children: title }),
|
|
7843
|
+
description && /* @__PURE__ */ jsx324("p", { className: "empty-description", children: description }),
|
|
7844
|
+
action && /* @__PURE__ */ jsx324("div", { className: "empty-action", children: action })
|
|
7724
7845
|
] });
|
|
7725
7846
|
};
|
|
7726
7847
|
EmptyState.displayName = "EmptyState";
|
|
7727
7848
|
var EmptyState_default = EmptyState;
|
|
7728
7849
|
|
|
7729
7850
|
// src/components/FileUpload/FileUpload.tsx
|
|
7730
|
-
import
|
|
7731
|
-
import { jsx as
|
|
7851
|
+
import React22 from "react";
|
|
7852
|
+
import { jsx as jsx325, jsxs as jsxs209 } from "react/jsx-runtime";
|
|
7732
7853
|
var FileUpload = (props) => {
|
|
7733
7854
|
const {
|
|
7734
7855
|
accept,
|
|
@@ -7738,8 +7859,8 @@ var FileUpload = (props) => {
|
|
|
7738
7859
|
label = "\uD30C\uC77C\uC744 \uB4DC\uB798\uADF8\uD558\uAC70\uB098 \uD074\uB9AD\uD558\uC5EC \uC5C5\uB85C\uB4DC",
|
|
7739
7860
|
description
|
|
7740
7861
|
} = props;
|
|
7741
|
-
const [isDragOver, setIsDragOver] =
|
|
7742
|
-
const inputRef =
|
|
7862
|
+
const [isDragOver, setIsDragOver] = React22.useState(false);
|
|
7863
|
+
const inputRef = React22.useRef(null);
|
|
7743
7864
|
const handleFiles = (fileList) => {
|
|
7744
7865
|
let files = Array.from(fileList);
|
|
7745
7866
|
if (maxSize) {
|
|
@@ -7769,7 +7890,7 @@ var FileUpload = (props) => {
|
|
|
7769
7890
|
handleFiles(e.target.files);
|
|
7770
7891
|
}
|
|
7771
7892
|
};
|
|
7772
|
-
return /* @__PURE__ */
|
|
7893
|
+
return /* @__PURE__ */ jsxs209(
|
|
7773
7894
|
"div",
|
|
7774
7895
|
{
|
|
7775
7896
|
className: clsx_default("lib-xplat-file-upload", { "drag-over": isDragOver }),
|
|
@@ -7778,7 +7899,7 @@ var FileUpload = (props) => {
|
|
|
7778
7899
|
onDragLeave: handleDragLeave,
|
|
7779
7900
|
onClick: () => inputRef.current?.click(),
|
|
7780
7901
|
children: [
|
|
7781
|
-
/* @__PURE__ */
|
|
7902
|
+
/* @__PURE__ */ jsx325(
|
|
7782
7903
|
"input",
|
|
7783
7904
|
{
|
|
7784
7905
|
ref: inputRef,
|
|
@@ -7788,9 +7909,9 @@ var FileUpload = (props) => {
|
|
|
7788
7909
|
onChange: handleChange
|
|
7789
7910
|
}
|
|
7790
7911
|
),
|
|
7791
|
-
/* @__PURE__ */
|
|
7792
|
-
/* @__PURE__ */
|
|
7793
|
-
description && /* @__PURE__ */
|
|
7912
|
+
/* @__PURE__ */ jsx325("div", { className: "upload-icon", children: /* @__PURE__ */ jsx325(UploadIcon_default, {}) }),
|
|
7913
|
+
/* @__PURE__ */ jsx325("p", { className: "upload-label", children: label }),
|
|
7914
|
+
description && /* @__PURE__ */ jsx325("p", { className: "upload-description", children: description })
|
|
7794
7915
|
]
|
|
7795
7916
|
}
|
|
7796
7917
|
);
|
|
@@ -7799,10 +7920,10 @@ FileUpload.displayName = "FileUpload";
|
|
|
7799
7920
|
var FileUpload_default = FileUpload;
|
|
7800
7921
|
|
|
7801
7922
|
// src/components/HtmlTypeWriter/HtmlTypeWriter.tsx
|
|
7802
|
-
import
|
|
7923
|
+
import React24 from "react";
|
|
7803
7924
|
|
|
7804
7925
|
// src/components/HtmlTypeWriter/utils.ts
|
|
7805
|
-
import
|
|
7926
|
+
import React23 from "react";
|
|
7806
7927
|
var voidTags = /* @__PURE__ */ new Set([
|
|
7807
7928
|
"br",
|
|
7808
7929
|
"img",
|
|
@@ -7870,41 +7991,41 @@ var convertNodeToReactWithRange = (node, typedLen, rangeMap) => {
|
|
|
7870
7991
|
props[attr.name] = attr.value;
|
|
7871
7992
|
});
|
|
7872
7993
|
if (voidTags.has(tag)) {
|
|
7873
|
-
return
|
|
7994
|
+
return React23.createElement(tag, props);
|
|
7874
7995
|
}
|
|
7875
7996
|
const children = Array.from(element.childNodes).map((child) => convertNodeToReactWithRange(child, typedLen, rangeMap)).filter((n) => n != null);
|
|
7876
|
-
return
|
|
7997
|
+
return React23.createElement(tag, props, ...children);
|
|
7877
7998
|
};
|
|
7878
7999
|
var htmlToReactProgressive = (root, typedLen, rangeMap) => {
|
|
7879
8000
|
const nodes = Array.from(root.childNodes).map((child, idx) => {
|
|
7880
8001
|
const node = convertNodeToReactWithRange(child, typedLen, rangeMap);
|
|
7881
|
-
return node == null ? null :
|
|
8002
|
+
return node == null ? null : React23.createElement(React23.Fragment, { key: idx }, node);
|
|
7882
8003
|
}).filter(Boolean);
|
|
7883
8004
|
return nodes.length === 0 ? null : nodes;
|
|
7884
8005
|
};
|
|
7885
8006
|
|
|
7886
8007
|
// src/components/HtmlTypeWriter/HtmlTypeWriter.tsx
|
|
7887
|
-
import { jsx as
|
|
8008
|
+
import { jsx as jsx326 } from "react/jsx-runtime";
|
|
7888
8009
|
var HtmlTypeWriter = ({
|
|
7889
8010
|
html,
|
|
7890
8011
|
duration = 20,
|
|
7891
8012
|
onDone,
|
|
7892
8013
|
onChange
|
|
7893
8014
|
}) => {
|
|
7894
|
-
const [typedLen, setTypedLen] =
|
|
7895
|
-
const doneCalledRef =
|
|
7896
|
-
const { doc, rangeMap, totalLength } =
|
|
8015
|
+
const [typedLen, setTypedLen] = React24.useState(0);
|
|
8016
|
+
const doneCalledRef = React24.useRef(false);
|
|
8017
|
+
const { doc, rangeMap, totalLength } = React24.useMemo(() => {
|
|
7897
8018
|
if (typeof window === "undefined") return { doc: null, rangeMap: /* @__PURE__ */ new Map(), totalLength: 0 };
|
|
7898
8019
|
const decoded = decodeHtmlEntities(html);
|
|
7899
8020
|
const doc2 = new DOMParser().parseFromString(decoded, "text/html");
|
|
7900
8021
|
const { rangeMap: rangeMap2, totalLength: totalLength2 } = buildRangeMap(doc2.body);
|
|
7901
8022
|
return { doc: doc2, rangeMap: rangeMap2, totalLength: totalLength2 };
|
|
7902
8023
|
}, [html]);
|
|
7903
|
-
|
|
8024
|
+
React24.useEffect(() => {
|
|
7904
8025
|
setTypedLen(0);
|
|
7905
8026
|
doneCalledRef.current = false;
|
|
7906
8027
|
}, [html]);
|
|
7907
|
-
|
|
8028
|
+
React24.useEffect(() => {
|
|
7908
8029
|
if (!totalLength) return;
|
|
7909
8030
|
if (typedLen >= totalLength) return;
|
|
7910
8031
|
const timer = window.setInterval(() => {
|
|
@@ -7912,33 +8033,33 @@ var HtmlTypeWriter = ({
|
|
|
7912
8033
|
}, duration);
|
|
7913
8034
|
return () => window.clearInterval(timer);
|
|
7914
8035
|
}, [typedLen, totalLength, duration]);
|
|
7915
|
-
|
|
8036
|
+
React24.useEffect(() => {
|
|
7916
8037
|
if (typedLen > 0 && typedLen < totalLength) {
|
|
7917
8038
|
onChange?.();
|
|
7918
8039
|
}
|
|
7919
8040
|
}, [typedLen, totalLength, onChange]);
|
|
7920
|
-
|
|
8041
|
+
React24.useEffect(() => {
|
|
7921
8042
|
if (typedLen === totalLength && totalLength > 0 && !doneCalledRef.current) {
|
|
7922
8043
|
doneCalledRef.current = true;
|
|
7923
8044
|
onDone?.();
|
|
7924
8045
|
}
|
|
7925
8046
|
}, [typedLen, totalLength, onDone]);
|
|
7926
|
-
const parsed =
|
|
8047
|
+
const parsed = React24.useMemo(
|
|
7927
8048
|
() => doc ? htmlToReactProgressive(doc.body, typedLen, rangeMap) : null,
|
|
7928
8049
|
[doc, typedLen, rangeMap]
|
|
7929
8050
|
);
|
|
7930
|
-
return /* @__PURE__ */
|
|
8051
|
+
return /* @__PURE__ */ jsx326("div", { className: "lib-xplat-htmlTypewriter", children: parsed });
|
|
7931
8052
|
};
|
|
7932
8053
|
HtmlTypeWriter.displayName = "HtmlTypeWriter";
|
|
7933
8054
|
var HtmlTypeWriter_default = HtmlTypeWriter;
|
|
7934
8055
|
|
|
7935
8056
|
// src/components/ImageSelector/ImageSelector.tsx
|
|
7936
|
-
import
|
|
7937
|
-
import { jsx as
|
|
8057
|
+
import React25 from "react";
|
|
8058
|
+
import { jsx as jsx327, jsxs as jsxs210 } from "react/jsx-runtime";
|
|
7938
8059
|
var ImageSelector = (props) => {
|
|
7939
8060
|
const { value, label, onChange } = props;
|
|
7940
|
-
const [previewUrl, setPreviewUrl] =
|
|
7941
|
-
|
|
8061
|
+
const [previewUrl, setPreviewUrl] = React25.useState();
|
|
8062
|
+
React25.useEffect(() => {
|
|
7942
8063
|
if (!value) {
|
|
7943
8064
|
setPreviewUrl(void 0);
|
|
7944
8065
|
return;
|
|
@@ -7947,7 +8068,7 @@ var ImageSelector = (props) => {
|
|
|
7947
8068
|
setPreviewUrl(url);
|
|
7948
8069
|
return () => URL.revokeObjectURL(url);
|
|
7949
8070
|
}, [value]);
|
|
7950
|
-
const inputRef =
|
|
8071
|
+
const inputRef = React25.useRef(null);
|
|
7951
8072
|
const handleFileChange = (e) => {
|
|
7952
8073
|
const selectedFile = e.target.files?.[0];
|
|
7953
8074
|
if (selectedFile) {
|
|
@@ -7960,8 +8081,8 @@ var ImageSelector = (props) => {
|
|
|
7960
8081
|
const handleOpenFileDialog = () => {
|
|
7961
8082
|
inputRef.current?.click();
|
|
7962
8083
|
};
|
|
7963
|
-
return /* @__PURE__ */
|
|
7964
|
-
/* @__PURE__ */
|
|
8084
|
+
return /* @__PURE__ */ jsxs210("div", { className: `lib-xplat-imageselector${value ? "" : " none-value"}`, children: [
|
|
8085
|
+
/* @__PURE__ */ jsx327(
|
|
7965
8086
|
"input",
|
|
7966
8087
|
{
|
|
7967
8088
|
type: "file",
|
|
@@ -7971,13 +8092,13 @@ var ImageSelector = (props) => {
|
|
|
7971
8092
|
ref: inputRef
|
|
7972
8093
|
}
|
|
7973
8094
|
),
|
|
7974
|
-
value && /* @__PURE__ */
|
|
7975
|
-
/* @__PURE__ */
|
|
7976
|
-
/* @__PURE__ */
|
|
8095
|
+
value && /* @__PURE__ */ jsxs210("div", { className: "action-bar", children: [
|
|
8096
|
+
/* @__PURE__ */ jsx327("div", { className: "icon-wrapper", onClick: handleOpenFileDialog, children: /* @__PURE__ */ jsx327(UploadIcon_default, {}) }),
|
|
8097
|
+
/* @__PURE__ */ jsx327("div", { className: "icon-wrapper", onClick: handleDeleteFile, children: /* @__PURE__ */ jsx327(DeleteIcon_default, {}) })
|
|
7977
8098
|
] }),
|
|
7978
|
-
/* @__PURE__ */
|
|
7979
|
-
/* @__PURE__ */
|
|
7980
|
-
/* @__PURE__ */
|
|
8099
|
+
/* @__PURE__ */ jsx327("div", { className: "content", children: previewUrl ? /* @__PURE__ */ jsx327("img", { src: previewUrl, alt: "preview" }) : /* @__PURE__ */ jsxs210("div", { className: "skeleton", onClick: handleOpenFileDialog, children: [
|
|
8100
|
+
/* @__PURE__ */ jsx327("div", { className: "icon-wrapper", children: /* @__PURE__ */ jsx327(ImageIcon_default, {}) }),
|
|
8101
|
+
/* @__PURE__ */ jsx327("div", { className: "label", children: label || "\uC774\uBBF8\uC9C0 \uCD94\uAC00\uD558\uAE30" })
|
|
7981
8102
|
] }) })
|
|
7982
8103
|
] });
|
|
7983
8104
|
};
|
|
@@ -7985,7 +8106,7 @@ ImageSelector.displayName = "ImageSelector";
|
|
|
7985
8106
|
var ImageSelector_default = ImageSelector;
|
|
7986
8107
|
|
|
7987
8108
|
// src/components/Pagination/Pagination.tsx
|
|
7988
|
-
import { jsx as
|
|
8109
|
+
import { jsx as jsx328, jsxs as jsxs211 } from "react/jsx-runtime";
|
|
7989
8110
|
var getPageRange = (current, totalPages, siblingCount) => {
|
|
7990
8111
|
const totalNumbers = siblingCount * 2 + 5;
|
|
7991
8112
|
if (totalPages <= totalNumbers) {
|
|
@@ -8028,19 +8149,19 @@ var Pagination = (props) => {
|
|
|
8028
8149
|
onChange?.(page);
|
|
8029
8150
|
}
|
|
8030
8151
|
};
|
|
8031
|
-
return /* @__PURE__ */
|
|
8032
|
-
/* @__PURE__ */
|
|
8152
|
+
return /* @__PURE__ */ jsxs211("nav", { className: clsx_default("lib-xplat-pagination", size, type), "aria-label": "\uD398\uC774\uC9C0 \uB124\uBE44\uAC8C\uC774\uC158", children: [
|
|
8153
|
+
/* @__PURE__ */ jsx328(
|
|
8033
8154
|
"button",
|
|
8034
8155
|
{
|
|
8035
8156
|
className: "page-btn prev",
|
|
8036
8157
|
disabled: current <= 1,
|
|
8037
8158
|
onClick: () => handleClick(current - 1),
|
|
8038
8159
|
"aria-label": "\uC774\uC804 \uD398\uC774\uC9C0",
|
|
8039
|
-
children: /* @__PURE__ */
|
|
8160
|
+
children: /* @__PURE__ */ jsx328(ChevronLeftIcon_default, {})
|
|
8040
8161
|
}
|
|
8041
8162
|
),
|
|
8042
8163
|
pages.map(
|
|
8043
|
-
(page, i) => page === "..." ? /* @__PURE__ */
|
|
8164
|
+
(page, i) => page === "..." ? /* @__PURE__ */ jsx328("span", { className: "dots", children: "..." }, `dots-${i}`) : /* @__PURE__ */ jsx328(
|
|
8044
8165
|
"button",
|
|
8045
8166
|
{
|
|
8046
8167
|
className: clsx_default("page-btn", { active: page === current }),
|
|
@@ -8051,14 +8172,14 @@ var Pagination = (props) => {
|
|
|
8051
8172
|
page
|
|
8052
8173
|
)
|
|
8053
8174
|
),
|
|
8054
|
-
/* @__PURE__ */
|
|
8175
|
+
/* @__PURE__ */ jsx328(
|
|
8055
8176
|
"button",
|
|
8056
8177
|
{
|
|
8057
8178
|
className: "page-btn next",
|
|
8058
8179
|
disabled: current >= totalPages,
|
|
8059
8180
|
onClick: () => handleClick(current + 1),
|
|
8060
8181
|
"aria-label": "\uB2E4\uC74C \uD398\uC774\uC9C0",
|
|
8061
|
-
children: /* @__PURE__ */
|
|
8182
|
+
children: /* @__PURE__ */ jsx328(ChevronRightIcon_default, {})
|
|
8062
8183
|
}
|
|
8063
8184
|
)
|
|
8064
8185
|
] });
|
|
@@ -8067,17 +8188,17 @@ Pagination.displayName = "Pagination";
|
|
|
8067
8188
|
var Pagination_default = Pagination;
|
|
8068
8189
|
|
|
8069
8190
|
// src/components/PopOver/PopOver.tsx
|
|
8070
|
-
import
|
|
8071
|
-
import { jsx as
|
|
8191
|
+
import React26 from "react";
|
|
8192
|
+
import { jsx as jsx329, jsxs as jsxs212 } from "react/jsx-runtime";
|
|
8072
8193
|
var PopOver = (props) => {
|
|
8073
8194
|
const { children, isOpen, onClose, PopOverEl } = props;
|
|
8074
|
-
const popRef =
|
|
8075
|
-
const triggerRef =
|
|
8076
|
-
const [localOpen, setLocalOpen] =
|
|
8077
|
-
const [eventTrigger, setEventTrigger] =
|
|
8195
|
+
const popRef = React26.useRef(null);
|
|
8196
|
+
const triggerRef = React26.useRef(null);
|
|
8197
|
+
const [localOpen, setLocalOpen] = React26.useState(false);
|
|
8198
|
+
const [eventTrigger, setEventTrigger] = React26.useState(false);
|
|
8078
8199
|
useClickOutside_default([popRef, triggerRef], onClose, isOpen);
|
|
8079
8200
|
const position = useAutoPosition_default(triggerRef, popRef, localOpen);
|
|
8080
|
-
|
|
8201
|
+
React26.useEffect(() => {
|
|
8081
8202
|
if (isOpen) {
|
|
8082
8203
|
setLocalOpen(isOpen);
|
|
8083
8204
|
setTimeout(() => {
|
|
@@ -8090,7 +8211,7 @@ var PopOver = (props) => {
|
|
|
8090
8211
|
}, 200);
|
|
8091
8212
|
}
|
|
8092
8213
|
}, [isOpen]);
|
|
8093
|
-
return /* @__PURE__ */
|
|
8214
|
+
return /* @__PURE__ */ jsxs212(
|
|
8094
8215
|
"div",
|
|
8095
8216
|
{
|
|
8096
8217
|
className: "lib-xplat-pop-over",
|
|
@@ -8100,7 +8221,7 @@ var PopOver = (props) => {
|
|
|
8100
8221
|
},
|
|
8101
8222
|
children: [
|
|
8102
8223
|
children,
|
|
8103
|
-
localOpen && /* @__PURE__ */
|
|
8224
|
+
localOpen && /* @__PURE__ */ jsx329(Portal_default, { children: /* @__PURE__ */ jsx329(
|
|
8104
8225
|
"div",
|
|
8105
8226
|
{
|
|
8106
8227
|
className: clsx_default(
|
|
@@ -8123,7 +8244,7 @@ PopOver.displayName = "PopOver";
|
|
|
8123
8244
|
var PopOver_default = PopOver;
|
|
8124
8245
|
|
|
8125
8246
|
// src/components/Progress/Progress.tsx
|
|
8126
|
-
import { jsx as
|
|
8247
|
+
import { jsx as jsx330, jsxs as jsxs213 } from "react/jsx-runtime";
|
|
8127
8248
|
var Progress = (props) => {
|
|
8128
8249
|
const {
|
|
8129
8250
|
value,
|
|
@@ -8133,8 +8254,8 @@ var Progress = (props) => {
|
|
|
8133
8254
|
showLabel = false
|
|
8134
8255
|
} = props;
|
|
8135
8256
|
const percentage = Math.min(100, Math.max(0, value / max * 100));
|
|
8136
|
-
return /* @__PURE__ */
|
|
8137
|
-
/* @__PURE__ */
|
|
8257
|
+
return /* @__PURE__ */ jsxs213("div", { className: clsx_default("lib-xplat-progress", size, type), children: [
|
|
8258
|
+
/* @__PURE__ */ jsx330(
|
|
8138
8259
|
"div",
|
|
8139
8260
|
{
|
|
8140
8261
|
className: "track",
|
|
@@ -8142,7 +8263,7 @@ var Progress = (props) => {
|
|
|
8142
8263
|
"aria-valuenow": value,
|
|
8143
8264
|
"aria-valuemin": 0,
|
|
8144
8265
|
"aria-valuemax": max,
|
|
8145
|
-
children: /* @__PURE__ */
|
|
8266
|
+
children: /* @__PURE__ */ jsx330(
|
|
8146
8267
|
"div",
|
|
8147
8268
|
{
|
|
8148
8269
|
className: "bar",
|
|
@@ -8151,7 +8272,7 @@ var Progress = (props) => {
|
|
|
8151
8272
|
)
|
|
8152
8273
|
}
|
|
8153
8274
|
),
|
|
8154
|
-
showLabel && /* @__PURE__ */
|
|
8275
|
+
showLabel && /* @__PURE__ */ jsxs213("span", { className: "label", children: [
|
|
8155
8276
|
Math.round(percentage),
|
|
8156
8277
|
"%"
|
|
8157
8278
|
] })
|
|
@@ -8161,17 +8282,17 @@ Progress.displayName = "Progress";
|
|
|
8161
8282
|
var Progress_default = Progress;
|
|
8162
8283
|
|
|
8163
8284
|
// src/components/Radio/RadioGroupContext.tsx
|
|
8164
|
-
import
|
|
8165
|
-
var RadioGroupContext =
|
|
8285
|
+
import React27 from "react";
|
|
8286
|
+
var RadioGroupContext = React27.createContext(
|
|
8166
8287
|
null
|
|
8167
8288
|
);
|
|
8168
8289
|
var useRadioGroupContext = () => {
|
|
8169
|
-
return
|
|
8290
|
+
return React27.useContext(RadioGroupContext);
|
|
8170
8291
|
};
|
|
8171
8292
|
var RadioGroupContext_default = RadioGroupContext;
|
|
8172
8293
|
|
|
8173
8294
|
// src/components/Radio/Radio.tsx
|
|
8174
|
-
import { jsx as
|
|
8295
|
+
import { jsx as jsx331, jsxs as jsxs214 } from "react/jsx-runtime";
|
|
8175
8296
|
var Radio = (props) => {
|
|
8176
8297
|
const {
|
|
8177
8298
|
label,
|
|
@@ -8189,7 +8310,7 @@ var Radio = (props) => {
|
|
|
8189
8310
|
value,
|
|
8190
8311
|
onChange: rest.onChange
|
|
8191
8312
|
};
|
|
8192
|
-
return /* @__PURE__ */
|
|
8313
|
+
return /* @__PURE__ */ jsxs214(
|
|
8193
8314
|
"label",
|
|
8194
8315
|
{
|
|
8195
8316
|
className: clsx_default(
|
|
@@ -8199,18 +8320,18 @@ var Radio = (props) => {
|
|
|
8199
8320
|
localChecked ? "checked" : void 0
|
|
8200
8321
|
),
|
|
8201
8322
|
children: [
|
|
8202
|
-
/* @__PURE__ */
|
|
8203
|
-
/* @__PURE__ */
|
|
8323
|
+
/* @__PURE__ */ jsx331("input", { ...rest, ...inputProps, checked: localChecked, type: "radio" }),
|
|
8324
|
+
/* @__PURE__ */ jsx331(
|
|
8204
8325
|
"div",
|
|
8205
8326
|
{
|
|
8206
8327
|
className: clsx_default(
|
|
8207
8328
|
"circle",
|
|
8208
8329
|
localChecked ? "checked" : void 0
|
|
8209
8330
|
),
|
|
8210
|
-
children: localChecked && /* @__PURE__ */
|
|
8331
|
+
children: localChecked && /* @__PURE__ */ jsx331("div", { className: "inner-circle" })
|
|
8211
8332
|
}
|
|
8212
8333
|
),
|
|
8213
|
-
label && /* @__PURE__ */
|
|
8334
|
+
label && /* @__PURE__ */ jsx331("span", { children: label })
|
|
8214
8335
|
]
|
|
8215
8336
|
}
|
|
8216
8337
|
);
|
|
@@ -8219,28 +8340,28 @@ Radio.displayName = "Radio";
|
|
|
8219
8340
|
var Radio_default = Radio;
|
|
8220
8341
|
|
|
8221
8342
|
// src/components/Radio/RadioGroup.tsx
|
|
8222
|
-
import { Fragment as Fragment4, jsx as
|
|
8343
|
+
import { Fragment as Fragment4, jsx as jsx332 } from "react/jsx-runtime";
|
|
8223
8344
|
var RadioGroup = (props) => {
|
|
8224
8345
|
const { children, ...rest } = props;
|
|
8225
|
-
return /* @__PURE__ */
|
|
8346
|
+
return /* @__PURE__ */ jsx332(Fragment4, { children: /* @__PURE__ */ jsx332(RadioGroupContext_default.Provider, { value: rest, children }) });
|
|
8226
8347
|
};
|
|
8227
8348
|
RadioGroup.displayName = "RadioGroup";
|
|
8228
8349
|
var RadioGroup_default = RadioGroup;
|
|
8229
8350
|
|
|
8230
8351
|
// src/components/Select/Select.tsx
|
|
8231
|
-
import
|
|
8352
|
+
import React30 from "react";
|
|
8232
8353
|
|
|
8233
8354
|
// src/components/Select/context.ts
|
|
8234
|
-
import
|
|
8235
|
-
var SelectContext =
|
|
8355
|
+
import React28 from "react";
|
|
8356
|
+
var SelectContext = React28.createContext(null);
|
|
8236
8357
|
var context_default = SelectContext;
|
|
8237
8358
|
|
|
8238
8359
|
// src/components/Select/SelectItem.tsx
|
|
8239
|
-
import
|
|
8240
|
-
import { jsx as
|
|
8360
|
+
import React29 from "react";
|
|
8361
|
+
import { jsx as jsx333 } from "react/jsx-runtime";
|
|
8241
8362
|
var SelectItem = (props) => {
|
|
8242
8363
|
const { children, value, onClick, disabled = false } = props;
|
|
8243
|
-
const ctx =
|
|
8364
|
+
const ctx = React29.useContext(context_default);
|
|
8244
8365
|
const handleClick = (e) => {
|
|
8245
8366
|
e.preventDefault();
|
|
8246
8367
|
e.stopPropagation();
|
|
@@ -8249,7 +8370,7 @@ var SelectItem = (props) => {
|
|
|
8249
8370
|
ctx?.close();
|
|
8250
8371
|
onClick?.();
|
|
8251
8372
|
};
|
|
8252
|
-
return /* @__PURE__ */
|
|
8373
|
+
return /* @__PURE__ */ jsx333(
|
|
8253
8374
|
"div",
|
|
8254
8375
|
{
|
|
8255
8376
|
className: clsx_default("select-item", disabled && "disabled"),
|
|
@@ -8270,7 +8391,7 @@ SelectItem.displayName = "Select.Item";
|
|
|
8270
8391
|
var SelectItem_default = SelectItem;
|
|
8271
8392
|
|
|
8272
8393
|
// src/components/Select/Select.tsx
|
|
8273
|
-
import { jsx as
|
|
8394
|
+
import { jsx as jsx334, jsxs as jsxs215 } from "react/jsx-runtime";
|
|
8274
8395
|
var ANIMATION_DURATION_MS3 = 200;
|
|
8275
8396
|
var SelectRoot = (props) => {
|
|
8276
8397
|
const {
|
|
@@ -8282,26 +8403,26 @@ var SelectRoot = (props) => {
|
|
|
8282
8403
|
error = false,
|
|
8283
8404
|
size = "md"
|
|
8284
8405
|
} = props;
|
|
8285
|
-
const itemChildren =
|
|
8286
|
-
(child) =>
|
|
8406
|
+
const itemChildren = React30.Children.toArray(children).filter(
|
|
8407
|
+
(child) => React30.isValidElement(child) && child.type === SelectItem_default
|
|
8287
8408
|
);
|
|
8288
8409
|
const isControlled = valueProp !== void 0;
|
|
8289
|
-
const [isOpen, setOpen] =
|
|
8290
|
-
const [uncontrolledLabel, setUncontrolledLabel] =
|
|
8291
|
-
const controlledLabel =
|
|
8410
|
+
const [isOpen, setOpen] = React30.useState(false);
|
|
8411
|
+
const [uncontrolledLabel, setUncontrolledLabel] = React30.useState(null);
|
|
8412
|
+
const controlledLabel = React30.useMemo(() => {
|
|
8292
8413
|
if (!isControlled) return null;
|
|
8293
8414
|
const match = itemChildren.find((child) => child.props.value === valueProp);
|
|
8294
8415
|
return match ? match.props.children : null;
|
|
8295
8416
|
}, [isControlled, valueProp, itemChildren]);
|
|
8296
8417
|
const selectedLabel = isControlled ? controlledLabel : uncontrolledLabel;
|
|
8297
|
-
const triggerRef =
|
|
8298
|
-
const contentRef =
|
|
8299
|
-
const [mounted, setMounted] =
|
|
8300
|
-
const [visible, setVisible] =
|
|
8301
|
-
|
|
8418
|
+
const triggerRef = React30.useRef(null);
|
|
8419
|
+
const contentRef = React30.useRef(null);
|
|
8420
|
+
const [mounted, setMounted] = React30.useState(false);
|
|
8421
|
+
const [visible, setVisible] = React30.useState(false);
|
|
8422
|
+
React30.useEffect(() => {
|
|
8302
8423
|
if (disabled && isOpen) setOpen(false);
|
|
8303
8424
|
}, [disabled, isOpen]);
|
|
8304
|
-
|
|
8425
|
+
React30.useEffect(() => {
|
|
8305
8426
|
if (isOpen) {
|
|
8306
8427
|
setMounted(true);
|
|
8307
8428
|
const t2 = setTimeout(() => setVisible(true), 1);
|
|
@@ -8311,12 +8432,12 @@ var SelectRoot = (props) => {
|
|
|
8311
8432
|
const t = setTimeout(() => setMounted(false), ANIMATION_DURATION_MS3);
|
|
8312
8433
|
return () => clearTimeout(t);
|
|
8313
8434
|
}, [isOpen]);
|
|
8314
|
-
const open =
|
|
8315
|
-
const close =
|
|
8316
|
-
const toggle =
|
|
8435
|
+
const open = React30.useCallback(() => setOpen(true), []);
|
|
8436
|
+
const close = React30.useCallback(() => setOpen(false), []);
|
|
8437
|
+
const toggle = React30.useCallback(() => setOpen((prev) => !prev), []);
|
|
8317
8438
|
useClickOutside_default([contentRef, triggerRef], close, isOpen);
|
|
8318
8439
|
const position = useAutoPosition_default(triggerRef, contentRef, mounted);
|
|
8319
|
-
const setSelected =
|
|
8440
|
+
const setSelected = React30.useCallback(
|
|
8320
8441
|
(label, itemValue) => {
|
|
8321
8442
|
if (!isControlled) {
|
|
8322
8443
|
setUncontrolledLabel(label);
|
|
@@ -8325,7 +8446,7 @@ var SelectRoot = (props) => {
|
|
|
8325
8446
|
},
|
|
8326
8447
|
[isControlled, onChange]
|
|
8327
8448
|
);
|
|
8328
|
-
const ctxValue =
|
|
8449
|
+
const ctxValue = React30.useMemo(
|
|
8329
8450
|
() => ({
|
|
8330
8451
|
isOpen,
|
|
8331
8452
|
mounted,
|
|
@@ -8346,7 +8467,7 @@ var SelectRoot = (props) => {
|
|
|
8346
8467
|
if (disabled) return;
|
|
8347
8468
|
toggle();
|
|
8348
8469
|
};
|
|
8349
|
-
return /* @__PURE__ */
|
|
8470
|
+
return /* @__PURE__ */ jsx334(context_default.Provider, { value: ctxValue, children: /* @__PURE__ */ jsxs215(
|
|
8350
8471
|
"div",
|
|
8351
8472
|
{
|
|
8352
8473
|
className: clsx_default(
|
|
@@ -8357,7 +8478,7 @@ var SelectRoot = (props) => {
|
|
|
8357
8478
|
mounted && "is-open"
|
|
8358
8479
|
),
|
|
8359
8480
|
children: [
|
|
8360
|
-
/* @__PURE__ */
|
|
8481
|
+
/* @__PURE__ */ jsxs215(
|
|
8361
8482
|
"div",
|
|
8362
8483
|
{
|
|
8363
8484
|
ref: triggerRef,
|
|
@@ -8381,7 +8502,7 @@ var SelectRoot = (props) => {
|
|
|
8381
8502
|
}
|
|
8382
8503
|
},
|
|
8383
8504
|
children: [
|
|
8384
|
-
/* @__PURE__ */
|
|
8505
|
+
/* @__PURE__ */ jsx334(
|
|
8385
8506
|
"span",
|
|
8386
8507
|
{
|
|
8387
8508
|
className: clsx_default(
|
|
@@ -8391,25 +8512,25 @@ var SelectRoot = (props) => {
|
|
|
8391
8512
|
children: selectedLabel ?? placeholder
|
|
8392
8513
|
}
|
|
8393
8514
|
),
|
|
8394
|
-
/* @__PURE__ */
|
|
8515
|
+
/* @__PURE__ */ jsx334(
|
|
8395
8516
|
"span",
|
|
8396
8517
|
{
|
|
8397
8518
|
className: clsx_default("select-trigger-icon", isOpen && "open"),
|
|
8398
8519
|
"aria-hidden": true,
|
|
8399
|
-
children: /* @__PURE__ */
|
|
8520
|
+
children: /* @__PURE__ */ jsx334(ChevronDownIcon_default, {})
|
|
8400
8521
|
}
|
|
8401
8522
|
)
|
|
8402
8523
|
]
|
|
8403
8524
|
}
|
|
8404
8525
|
),
|
|
8405
|
-
mounted && /* @__PURE__ */
|
|
8526
|
+
mounted && /* @__PURE__ */ jsx334(Portal_default, { children: /* @__PURE__ */ jsx334(
|
|
8406
8527
|
"div",
|
|
8407
8528
|
{
|
|
8408
8529
|
className: clsx_default("lib-xplat-select-content", position.direction, stateClass),
|
|
8409
8530
|
ref: contentRef,
|
|
8410
8531
|
style: { ...position.position, width: triggerRef.current?.offsetWidth },
|
|
8411
8532
|
role: "listbox",
|
|
8412
|
-
children: /* @__PURE__ */
|
|
8533
|
+
children: /* @__PURE__ */ jsx334(context_default.Provider, { value: ctxValue, children: itemChildren })
|
|
8413
8534
|
}
|
|
8414
8535
|
) })
|
|
8415
8536
|
]
|
|
@@ -8423,7 +8544,7 @@ var Select = Object.assign(SelectRoot, {
|
|
|
8423
8544
|
var Select_default = Select;
|
|
8424
8545
|
|
|
8425
8546
|
// src/components/Skeleton/Skeleton.tsx
|
|
8426
|
-
import { jsx as
|
|
8547
|
+
import { jsx as jsx335 } from "react/jsx-runtime";
|
|
8427
8548
|
var SIZE_MAP = {
|
|
8428
8549
|
xs: "var(--spacing-size-1)",
|
|
8429
8550
|
sm: "var(--spacing-size-2)",
|
|
@@ -8439,7 +8560,7 @@ var Skeleton = (props) => {
|
|
|
8439
8560
|
...width != null && { width: SIZE_MAP[width] },
|
|
8440
8561
|
...height != null && { height: SIZE_MAP[height] }
|
|
8441
8562
|
};
|
|
8442
|
-
return /* @__PURE__ */
|
|
8563
|
+
return /* @__PURE__ */ jsx335(
|
|
8443
8564
|
"div",
|
|
8444
8565
|
{
|
|
8445
8566
|
className: clsx_default("lib-xplat-skeleton", variant),
|
|
@@ -8452,20 +8573,20 @@ Skeleton.displayName = "Skeleton";
|
|
|
8452
8573
|
var Skeleton_default = Skeleton;
|
|
8453
8574
|
|
|
8454
8575
|
// src/components/Spinner/Spinner.tsx
|
|
8455
|
-
import { jsx as
|
|
8576
|
+
import { jsx as jsx336, jsxs as jsxs216 } from "react/jsx-runtime";
|
|
8456
8577
|
var Spinner = (props) => {
|
|
8457
8578
|
const {
|
|
8458
8579
|
size = "md",
|
|
8459
8580
|
type = "brand"
|
|
8460
8581
|
} = props;
|
|
8461
|
-
return /* @__PURE__ */
|
|
8582
|
+
return /* @__PURE__ */ jsx336(
|
|
8462
8583
|
"div",
|
|
8463
8584
|
{
|
|
8464
8585
|
className: clsx_default("lib-xplat-spinner", size, type),
|
|
8465
8586
|
role: "status",
|
|
8466
8587
|
"aria-label": "\uB85C\uB529 \uC911",
|
|
8467
|
-
children: /* @__PURE__ */
|
|
8468
|
-
/* @__PURE__ */
|
|
8588
|
+
children: /* @__PURE__ */ jsxs216("svg", { viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
|
|
8589
|
+
/* @__PURE__ */ jsx336(
|
|
8469
8590
|
"circle",
|
|
8470
8591
|
{
|
|
8471
8592
|
className: "track",
|
|
@@ -8475,7 +8596,7 @@ var Spinner = (props) => {
|
|
|
8475
8596
|
strokeWidth: "3"
|
|
8476
8597
|
}
|
|
8477
8598
|
),
|
|
8478
|
-
/* @__PURE__ */
|
|
8599
|
+
/* @__PURE__ */ jsx336(
|
|
8479
8600
|
"circle",
|
|
8480
8601
|
{
|
|
8481
8602
|
className: "indicator",
|
|
@@ -8494,20 +8615,20 @@ Spinner.displayName = "Spinner";
|
|
|
8494
8615
|
var Spinner_default = Spinner;
|
|
8495
8616
|
|
|
8496
8617
|
// src/components/Steps/Steps.tsx
|
|
8497
|
-
import { jsx as
|
|
8618
|
+
import { jsx as jsx337, jsxs as jsxs217 } from "react/jsx-runtime";
|
|
8498
8619
|
var Steps = (props) => {
|
|
8499
8620
|
const {
|
|
8500
8621
|
items,
|
|
8501
8622
|
current,
|
|
8502
8623
|
type = "brand"
|
|
8503
8624
|
} = props;
|
|
8504
|
-
return /* @__PURE__ */
|
|
8625
|
+
return /* @__PURE__ */ jsx337("div", { className: clsx_default("lib-xplat-steps", type), children: items.map((item, index) => {
|
|
8505
8626
|
const status = index < current ? "completed" : index === current ? "active" : "pending";
|
|
8506
|
-
return /* @__PURE__ */
|
|
8507
|
-
/* @__PURE__ */
|
|
8508
|
-
/* @__PURE__ */
|
|
8509
|
-
/* @__PURE__ */
|
|
8510
|
-
item.description && /* @__PURE__ */
|
|
8627
|
+
return /* @__PURE__ */ jsxs217("div", { className: clsx_default("step-item", status), children: [
|
|
8628
|
+
/* @__PURE__ */ jsx337("div", { className: "step-circle", children: status === "completed" ? /* @__PURE__ */ jsx337(CheckIcon_default, {}) : /* @__PURE__ */ jsx337("span", { children: index + 1 }) }),
|
|
8629
|
+
/* @__PURE__ */ jsxs217("div", { className: "step-content", children: [
|
|
8630
|
+
/* @__PURE__ */ jsx337("span", { className: "step-title", children: item.title }),
|
|
8631
|
+
item.description && /* @__PURE__ */ jsx337("span", { className: "step-description", children: item.description })
|
|
8511
8632
|
] })
|
|
8512
8633
|
] }, index);
|
|
8513
8634
|
}) });
|
|
@@ -8516,8 +8637,8 @@ Steps.displayName = "Steps";
|
|
|
8516
8637
|
var Steps_default = Steps;
|
|
8517
8638
|
|
|
8518
8639
|
// src/components/Swiper/Swiper.tsx
|
|
8519
|
-
import
|
|
8520
|
-
import { jsx as
|
|
8640
|
+
import React31 from "react";
|
|
8641
|
+
import { jsx as jsx338, jsxs as jsxs218 } from "react/jsx-runtime";
|
|
8521
8642
|
var Swiper = (props) => {
|
|
8522
8643
|
const {
|
|
8523
8644
|
auto = false,
|
|
@@ -8540,23 +8661,23 @@ var Swiper = (props) => {
|
|
|
8540
8661
|
const maxIndex = Math.max(0, totalSlides - viewItemCount);
|
|
8541
8662
|
const useLoop = loop && canSlide;
|
|
8542
8663
|
const cloneCount = useLoop ? totalSlides : 0;
|
|
8543
|
-
const extendedItems =
|
|
8664
|
+
const extendedItems = React31.useMemo(() => {
|
|
8544
8665
|
if (!useLoop) return items;
|
|
8545
8666
|
return [...items, ...items, ...items];
|
|
8546
8667
|
}, [items, useLoop]);
|
|
8547
8668
|
const initialIdx = Math.max(0, Math.min(indexProp ?? 0, maxIndex));
|
|
8548
|
-
const [innerIndex, setInnerIndex] =
|
|
8669
|
+
const [innerIndex, setInnerIndex] = React31.useState(
|
|
8549
8670
|
useLoop ? cloneCount + initialIdx : initialIdx
|
|
8550
8671
|
);
|
|
8551
|
-
const [isDragging, setIsDragging] =
|
|
8552
|
-
const [dragOffset, setDragOffset] =
|
|
8553
|
-
const [animated, setAnimated] =
|
|
8554
|
-
const [containerWidth, setContainerWidth] =
|
|
8555
|
-
const containerRef =
|
|
8556
|
-
const startXRef =
|
|
8557
|
-
const startTimeRef =
|
|
8558
|
-
const autoplayTimerRef =
|
|
8559
|
-
|
|
8672
|
+
const [isDragging, setIsDragging] = React31.useState(false);
|
|
8673
|
+
const [dragOffset, setDragOffset] = React31.useState(0);
|
|
8674
|
+
const [animated, setAnimated] = React31.useState(true);
|
|
8675
|
+
const [containerWidth, setContainerWidth] = React31.useState(0);
|
|
8676
|
+
const containerRef = React31.useRef(null);
|
|
8677
|
+
const startXRef = React31.useRef(0);
|
|
8678
|
+
const startTimeRef = React31.useRef(0);
|
|
8679
|
+
const autoplayTimerRef = React31.useRef(null);
|
|
8680
|
+
React31.useEffect(() => {
|
|
8560
8681
|
const el = containerRef.current;
|
|
8561
8682
|
if (!el) return;
|
|
8562
8683
|
const ro = new ResizeObserver((entries) => {
|
|
@@ -8575,7 +8696,7 @@ var Swiper = (props) => {
|
|
|
8575
8696
|
return ((inner - cloneCount) % totalSlides + totalSlides) % totalSlides;
|
|
8576
8697
|
};
|
|
8577
8698
|
const realIndex = getRealIndex(innerIndex);
|
|
8578
|
-
const moveToInner =
|
|
8699
|
+
const moveToInner = React31.useCallback(
|
|
8579
8700
|
(idx, withAnim = true) => {
|
|
8580
8701
|
if (!useLoop) {
|
|
8581
8702
|
setAnimated(withAnim);
|
|
@@ -8603,7 +8724,7 @@ var Swiper = (props) => {
|
|
|
8603
8724
|
},
|
|
8604
8725
|
[useLoop, cloneCount, totalSlides]
|
|
8605
8726
|
);
|
|
8606
|
-
const handleTransitionEnd =
|
|
8727
|
+
const handleTransitionEnd = React31.useCallback(() => {
|
|
8607
8728
|
if (!useLoop) return;
|
|
8608
8729
|
const real = getRealIndex(innerIndex);
|
|
8609
8730
|
const canonical = cloneCount + real;
|
|
@@ -8613,7 +8734,7 @@ var Swiper = (props) => {
|
|
|
8613
8734
|
}
|
|
8614
8735
|
onChange?.(Math.min(real, maxIndex));
|
|
8615
8736
|
}, [useLoop, innerIndex, cloneCount, totalSlides, maxIndex, onChange]);
|
|
8616
|
-
const slideTo =
|
|
8737
|
+
const slideTo = React31.useCallback(
|
|
8617
8738
|
(logicalIndex) => {
|
|
8618
8739
|
if (!canSlide) return;
|
|
8619
8740
|
const clamped = useLoop ? logicalIndex : Math.max(0, Math.min(logicalIndex, maxIndex));
|
|
@@ -8623,7 +8744,7 @@ var Swiper = (props) => {
|
|
|
8623
8744
|
},
|
|
8624
8745
|
[canSlide, useLoop, cloneCount, maxIndex, onChange, moveToInner]
|
|
8625
8746
|
);
|
|
8626
|
-
const slideNext =
|
|
8747
|
+
const slideNext = React31.useCallback(() => {
|
|
8627
8748
|
if (!canSlide) return;
|
|
8628
8749
|
const nextInner = innerIndex + slideBy;
|
|
8629
8750
|
if (useLoop) {
|
|
@@ -8632,7 +8753,7 @@ var Swiper = (props) => {
|
|
|
8632
8753
|
moveToInner(Math.min(nextInner, maxIndex), true);
|
|
8633
8754
|
}
|
|
8634
8755
|
}, [canSlide, useLoop, innerIndex, slideBy, maxIndex, moveToInner]);
|
|
8635
|
-
const slidePrev =
|
|
8756
|
+
const slidePrev = React31.useCallback(() => {
|
|
8636
8757
|
if (!canSlide) return;
|
|
8637
8758
|
const prevInner = innerIndex - slideBy;
|
|
8638
8759
|
if (useLoop) {
|
|
@@ -8641,7 +8762,7 @@ var Swiper = (props) => {
|
|
|
8641
8762
|
moveToInner(Math.max(prevInner, 0), true);
|
|
8642
8763
|
}
|
|
8643
8764
|
}, [canSlide, useLoop, innerIndex, slideBy, moveToInner]);
|
|
8644
|
-
|
|
8765
|
+
React31.useEffect(() => {
|
|
8645
8766
|
if (indexProp === void 0) return;
|
|
8646
8767
|
const clamped = Math.max(0, Math.min(indexProp, maxIndex));
|
|
8647
8768
|
const target = useLoop ? cloneCount + clamped : clamped;
|
|
@@ -8649,12 +8770,12 @@ var Swiper = (props) => {
|
|
|
8649
8770
|
moveToInner(target, true);
|
|
8650
8771
|
}
|
|
8651
8772
|
}, [indexProp]);
|
|
8652
|
-
|
|
8773
|
+
React31.useImperativeHandle(swiperRef, () => ({
|
|
8653
8774
|
slidePrev,
|
|
8654
8775
|
slideNext,
|
|
8655
8776
|
slideTo
|
|
8656
8777
|
}));
|
|
8657
|
-
|
|
8778
|
+
React31.useEffect(() => {
|
|
8658
8779
|
if (!auto || !canSlide) return;
|
|
8659
8780
|
autoplayTimerRef.current = setInterval(slideNext, autoplayDelay);
|
|
8660
8781
|
return () => {
|
|
@@ -8677,7 +8798,7 @@ var Swiper = (props) => {
|
|
|
8677
8798
|
startXRef.current = getClientX(e);
|
|
8678
8799
|
startTimeRef.current = Date.now();
|
|
8679
8800
|
};
|
|
8680
|
-
|
|
8801
|
+
React31.useEffect(() => {
|
|
8681
8802
|
if (!isDragging) return;
|
|
8682
8803
|
const handleMove = (e) => {
|
|
8683
8804
|
setDragOffset(getClientX(e) - startXRef.current);
|
|
@@ -8715,8 +8836,8 @@ var Swiper = (props) => {
|
|
|
8715
8836
|
}, [isDragging, dragOffset, innerIndex, useLoop, maxIndex, slideStep, moveToInner]);
|
|
8716
8837
|
const slideWidthPercent = 100 / viewItemCount;
|
|
8717
8838
|
const gapAdjust = spaceBetween * (viewItemCount - 1) / viewItemCount;
|
|
8718
|
-
const slideElements =
|
|
8719
|
-
() => extendedItems.map((item, idx) => /* @__PURE__ */
|
|
8839
|
+
const slideElements = React31.useMemo(
|
|
8840
|
+
() => extendedItems.map((item, idx) => /* @__PURE__ */ jsx338(
|
|
8720
8841
|
"div",
|
|
8721
8842
|
{
|
|
8722
8843
|
className: "lib-xplat-swiper__slide",
|
|
@@ -8735,14 +8856,14 @@ var Swiper = (props) => {
|
|
|
8735
8856
|
Math.floor(realIndex / slideBy),
|
|
8736
8857
|
totalSteps - 1
|
|
8737
8858
|
);
|
|
8738
|
-
return /* @__PURE__ */
|
|
8739
|
-
/* @__PURE__ */
|
|
8859
|
+
return /* @__PURE__ */ jsxs218("div", { className: "lib-xplat-swiper", ref: containerRef, children: [
|
|
8860
|
+
/* @__PURE__ */ jsx338(
|
|
8740
8861
|
"div",
|
|
8741
8862
|
{
|
|
8742
8863
|
className: "lib-xplat-swiper__viewport",
|
|
8743
8864
|
onMouseDown: handleDragStart,
|
|
8744
8865
|
onTouchStart: handleDragStart,
|
|
8745
|
-
children: /* @__PURE__ */
|
|
8866
|
+
children: /* @__PURE__ */ jsx338(
|
|
8746
8867
|
"div",
|
|
8747
8868
|
{
|
|
8748
8869
|
className: clsx_default(
|
|
@@ -8760,7 +8881,7 @@ var Swiper = (props) => {
|
|
|
8760
8881
|
)
|
|
8761
8882
|
}
|
|
8762
8883
|
),
|
|
8763
|
-
showProgress && canSlide && /* @__PURE__ */
|
|
8884
|
+
showProgress && canSlide && /* @__PURE__ */ jsx338("div", { className: "lib-xplat-swiper__progress", children: /* @__PURE__ */ jsx338("div", { className: "lib-xplat-swiper__progress-track", children: /* @__PURE__ */ jsx338(
|
|
8764
8885
|
"span",
|
|
8765
8886
|
{
|
|
8766
8887
|
className: "lib-xplat-swiper__progress-fill",
|
|
@@ -8770,7 +8891,7 @@ var Swiper = (props) => {
|
|
|
8770
8891
|
}
|
|
8771
8892
|
}
|
|
8772
8893
|
) }) }),
|
|
8773
|
-
canSlide && /* @__PURE__ */
|
|
8894
|
+
canSlide && /* @__PURE__ */ jsx338("div", { className: "lib-xplat-swiper__dots", children: Array.from({ length: totalSteps }, (_, i) => /* @__PURE__ */ jsx338(
|
|
8774
8895
|
"button",
|
|
8775
8896
|
{
|
|
8776
8897
|
className: clsx_default(
|
|
@@ -8788,8 +8909,8 @@ Swiper.displayName = "Swiper";
|
|
|
8788
8909
|
var Swiper_default = Swiper;
|
|
8789
8910
|
|
|
8790
8911
|
// src/components/Switch/Switch.tsx
|
|
8791
|
-
import
|
|
8792
|
-
import { jsx as
|
|
8912
|
+
import React32 from "react";
|
|
8913
|
+
import { jsx as jsx339 } from "react/jsx-runtime";
|
|
8793
8914
|
var KNOB_TRANSITION_MS = 250;
|
|
8794
8915
|
var Switch = (props) => {
|
|
8795
8916
|
const {
|
|
@@ -8799,9 +8920,9 @@ var Switch = (props) => {
|
|
|
8799
8920
|
disabled,
|
|
8800
8921
|
onChange
|
|
8801
8922
|
} = props;
|
|
8802
|
-
const [isAnimating, setIsAnimating] =
|
|
8803
|
-
const timeoutRef =
|
|
8804
|
-
|
|
8923
|
+
const [isAnimating, setIsAnimating] = React32.useState(false);
|
|
8924
|
+
const timeoutRef = React32.useRef(null);
|
|
8925
|
+
React32.useEffect(() => {
|
|
8805
8926
|
return () => {
|
|
8806
8927
|
if (timeoutRef.current) clearTimeout(timeoutRef.current);
|
|
8807
8928
|
};
|
|
@@ -8816,7 +8937,7 @@ var Switch = (props) => {
|
|
|
8816
8937
|
timeoutRef.current = null;
|
|
8817
8938
|
}, KNOB_TRANSITION_MS);
|
|
8818
8939
|
};
|
|
8819
|
-
return /* @__PURE__ */
|
|
8940
|
+
return /* @__PURE__ */ jsx339(
|
|
8820
8941
|
"div",
|
|
8821
8942
|
{
|
|
8822
8943
|
className: clsx_default(
|
|
@@ -8829,7 +8950,7 @@ var Switch = (props) => {
|
|
|
8829
8950
|
),
|
|
8830
8951
|
onClick: handleClick,
|
|
8831
8952
|
"aria-disabled": disabled || isAnimating,
|
|
8832
|
-
children: /* @__PURE__ */
|
|
8953
|
+
children: /* @__PURE__ */ jsx339("div", { className: clsx_default("knob", value ? "checked" : void 0) })
|
|
8833
8954
|
}
|
|
8834
8955
|
);
|
|
8835
8956
|
};
|
|
@@ -8837,26 +8958,27 @@ Switch.displayName = "Switch";
|
|
|
8837
8958
|
var Switch_default = Switch;
|
|
8838
8959
|
|
|
8839
8960
|
// src/components/Table/TableContext.tsx
|
|
8840
|
-
import
|
|
8841
|
-
var TableContext =
|
|
8961
|
+
import React33 from "react";
|
|
8962
|
+
var TableContext = React33.createContext(null);
|
|
8842
8963
|
var useTableContext = () => {
|
|
8843
|
-
const ctx =
|
|
8964
|
+
const ctx = React33.useContext(TableContext);
|
|
8844
8965
|
if (!ctx) throw new Error("Table components must be used inside <Table>");
|
|
8845
8966
|
return ctx;
|
|
8846
8967
|
};
|
|
8847
8968
|
var TableContext_default = TableContext;
|
|
8848
8969
|
|
|
8849
8970
|
// src/components/Table/Table.tsx
|
|
8850
|
-
import { jsx as
|
|
8971
|
+
import { jsx as jsx340 } from "react/jsx-runtime";
|
|
8851
8972
|
var Table = (props) => {
|
|
8852
8973
|
const {
|
|
8853
8974
|
children,
|
|
8975
|
+
size = "md",
|
|
8854
8976
|
rowBorderUse = true,
|
|
8855
8977
|
colBorderUse = true,
|
|
8856
8978
|
headerSticky = false,
|
|
8857
8979
|
stickyShadow = true
|
|
8858
8980
|
} = props;
|
|
8859
|
-
return /* @__PURE__ */
|
|
8981
|
+
return /* @__PURE__ */ jsx340("div", { className: `lib-xplat-table-wrapper ${size}`, children: /* @__PURE__ */ jsx340(
|
|
8860
8982
|
TableContext_default.Provider,
|
|
8861
8983
|
{
|
|
8862
8984
|
value: {
|
|
@@ -8865,7 +8987,7 @@ var Table = (props) => {
|
|
|
8865
8987
|
headerSticky,
|
|
8866
8988
|
stickyShadow
|
|
8867
8989
|
},
|
|
8868
|
-
children: /* @__PURE__ */
|
|
8990
|
+
children: /* @__PURE__ */ jsx340("table", { className: "lib-xplat-table", children })
|
|
8869
8991
|
}
|
|
8870
8992
|
) });
|
|
8871
8993
|
};
|
|
@@ -8873,41 +8995,41 @@ Table.displayName = "Table";
|
|
|
8873
8995
|
var Table_default = Table;
|
|
8874
8996
|
|
|
8875
8997
|
// src/components/Table/TableBody.tsx
|
|
8876
|
-
import { jsx as
|
|
8998
|
+
import { jsx as jsx341 } from "react/jsx-runtime";
|
|
8877
8999
|
var TableBody = (props) => {
|
|
8878
9000
|
const { children } = props;
|
|
8879
|
-
return /* @__PURE__ */
|
|
9001
|
+
return /* @__PURE__ */ jsx341("tbody", { children });
|
|
8880
9002
|
};
|
|
8881
9003
|
TableBody.displayName = "TableBody";
|
|
8882
9004
|
var TableBody_default = TableBody;
|
|
8883
9005
|
|
|
8884
9006
|
// src/components/Table/TableCell.tsx
|
|
8885
|
-
import
|
|
9007
|
+
import React36 from "react";
|
|
8886
9008
|
|
|
8887
9009
|
// src/components/Table/TableHeadContext.tsx
|
|
8888
|
-
import
|
|
8889
|
-
var TableHeadContext =
|
|
9010
|
+
import React34 from "react";
|
|
9011
|
+
var TableHeadContext = React34.createContext(
|
|
8890
9012
|
null
|
|
8891
9013
|
);
|
|
8892
9014
|
var useTableHeadContext = () => {
|
|
8893
|
-
const ctx =
|
|
9015
|
+
const ctx = React34.useContext(TableHeadContext);
|
|
8894
9016
|
return ctx;
|
|
8895
9017
|
};
|
|
8896
9018
|
var TableHeadContext_default = TableHeadContext;
|
|
8897
9019
|
|
|
8898
9020
|
// src/components/Table/TableRowContext.tsx
|
|
8899
|
-
import
|
|
8900
|
-
var TableRowContext =
|
|
9021
|
+
import React35 from "react";
|
|
9022
|
+
var TableRowContext = React35.createContext(null);
|
|
8901
9023
|
var useTableRowContext = () => {
|
|
8902
|
-
const ctx =
|
|
9024
|
+
const ctx = React35.useContext(TableRowContext);
|
|
8903
9025
|
if (!ctx) throw new Error("Table components must be used inside <Table>");
|
|
8904
9026
|
return ctx;
|
|
8905
9027
|
};
|
|
8906
9028
|
var TableRowContext_default = TableRowContext;
|
|
8907
9029
|
|
|
8908
9030
|
// src/components/Table/TableCell.tsx
|
|
8909
|
-
import { jsx as
|
|
8910
|
-
var TableCell =
|
|
9031
|
+
import { jsx as jsx342 } from "react/jsx-runtime";
|
|
9032
|
+
var TableCell = React36.memo((props) => {
|
|
8911
9033
|
const {
|
|
8912
9034
|
children,
|
|
8913
9035
|
align = "center",
|
|
@@ -8919,9 +9041,9 @@ var TableCell = React34.memo((props) => {
|
|
|
8919
9041
|
const { registerStickyCell, stickyCells } = useTableRowContext();
|
|
8920
9042
|
const { stickyShadow } = useTableContext();
|
|
8921
9043
|
const headContext = useTableHeadContext();
|
|
8922
|
-
const [left, setLeft] =
|
|
8923
|
-
const cellRef =
|
|
8924
|
-
const calculateLeft =
|
|
9044
|
+
const [left, setLeft] = React36.useState(0);
|
|
9045
|
+
const cellRef = React36.useRef(null);
|
|
9046
|
+
const calculateLeft = React36.useCallback(() => {
|
|
8925
9047
|
if (!cellRef.current) return 0;
|
|
8926
9048
|
let totalLeft = 0;
|
|
8927
9049
|
for (const ref of stickyCells) {
|
|
@@ -8930,7 +9052,7 @@ var TableCell = React34.memo((props) => {
|
|
|
8930
9052
|
}
|
|
8931
9053
|
return totalLeft;
|
|
8932
9054
|
}, [stickyCells]);
|
|
8933
|
-
|
|
9055
|
+
React36.useEffect(() => {
|
|
8934
9056
|
if (!isSticky || !cellRef.current) return;
|
|
8935
9057
|
registerStickyCell(cellRef);
|
|
8936
9058
|
setLeft(calculateLeft());
|
|
@@ -8948,7 +9070,7 @@ var TableCell = React34.memo((props) => {
|
|
|
8948
9070
|
const CellTag = cellRef.current?.tagName === "TH" ? "th" : "td";
|
|
8949
9071
|
const isLastSticky = isSticky && stickyCells[stickyCells.length - 1] === cellRef;
|
|
8950
9072
|
const enableHover = headContext && headContext.cellHover;
|
|
8951
|
-
return /* @__PURE__ */
|
|
9073
|
+
return /* @__PURE__ */ jsx342(
|
|
8952
9074
|
CellTag,
|
|
8953
9075
|
{
|
|
8954
9076
|
ref: cellRef,
|
|
@@ -8973,21 +9095,21 @@ TableCell.displayName = "TableCell";
|
|
|
8973
9095
|
var TableCell_default = TableCell;
|
|
8974
9096
|
|
|
8975
9097
|
// src/components/Table/TableHead.tsx
|
|
8976
|
-
import { jsx as
|
|
9098
|
+
import { jsx as jsx343 } from "react/jsx-runtime";
|
|
8977
9099
|
var TableHead = ({
|
|
8978
9100
|
children,
|
|
8979
9101
|
cellHover = false
|
|
8980
9102
|
}) => {
|
|
8981
9103
|
const { headerSticky } = useTableContext();
|
|
8982
|
-
return /* @__PURE__ */
|
|
9104
|
+
return /* @__PURE__ */ jsx343(TableHeadContext_default.Provider, { value: { cellHover }, children: /* @__PURE__ */ jsx343("thead", { className: clsx_default(headerSticky ? "table-sticky" : null), children }) });
|
|
8983
9105
|
};
|
|
8984
9106
|
TableHead.displayName = "TableHead";
|
|
8985
9107
|
var TableHead_default = TableHead;
|
|
8986
9108
|
|
|
8987
9109
|
// src/components/Table/TableRow.tsx
|
|
8988
|
-
import
|
|
8989
|
-
import { jsx as
|
|
8990
|
-
var TableRow =
|
|
9110
|
+
import React37 from "react";
|
|
9111
|
+
import { jsx as jsx344 } from "react/jsx-runtime";
|
|
9112
|
+
var TableRow = React37.memo((props) => {
|
|
8991
9113
|
const {
|
|
8992
9114
|
children,
|
|
8993
9115
|
type = "secondary",
|
|
@@ -8995,14 +9117,14 @@ var TableRow = React35.memo((props) => {
|
|
|
8995
9117
|
onClick
|
|
8996
9118
|
} = props;
|
|
8997
9119
|
const { rowBorderUse } = useTableContext();
|
|
8998
|
-
const [stickyCells, setStickyCells] =
|
|
9120
|
+
const [stickyCells, setStickyCells] = React37.useState([]);
|
|
8999
9121
|
const registerStickyCell = (ref) => {
|
|
9000
9122
|
setStickyCells((prev) => {
|
|
9001
9123
|
if (prev.includes(ref)) return prev;
|
|
9002
9124
|
return [...prev, ref];
|
|
9003
9125
|
});
|
|
9004
9126
|
};
|
|
9005
|
-
return /* @__PURE__ */
|
|
9127
|
+
return /* @__PURE__ */ jsx344(TableRowContext_default.Provider, { value: { stickyCells, registerStickyCell }, children: /* @__PURE__ */ jsx344(
|
|
9006
9128
|
"tr",
|
|
9007
9129
|
{
|
|
9008
9130
|
className: clsx_default(
|
|
@@ -9020,7 +9142,7 @@ TableRow.displayName = "TableRow";
|
|
|
9020
9142
|
var TableRow_default = TableRow;
|
|
9021
9143
|
|
|
9022
9144
|
// src/components/Tag/Tag.tsx
|
|
9023
|
-
import { jsx as
|
|
9145
|
+
import { jsx as jsx345, jsxs as jsxs219 } from "react/jsx-runtime";
|
|
9024
9146
|
var Tag = (props) => {
|
|
9025
9147
|
const {
|
|
9026
9148
|
children,
|
|
@@ -9030,7 +9152,7 @@ var Tag = (props) => {
|
|
|
9030
9152
|
disabled = false,
|
|
9031
9153
|
colorIndex
|
|
9032
9154
|
} = props;
|
|
9033
|
-
return /* @__PURE__ */
|
|
9155
|
+
return /* @__PURE__ */ jsxs219(
|
|
9034
9156
|
"span",
|
|
9035
9157
|
{
|
|
9036
9158
|
className: clsx_default(
|
|
@@ -9041,8 +9163,8 @@ var Tag = (props) => {
|
|
|
9041
9163
|
disabled && "disabled"
|
|
9042
9164
|
),
|
|
9043
9165
|
children: [
|
|
9044
|
-
/* @__PURE__ */
|
|
9045
|
-
onClose && /* @__PURE__ */
|
|
9166
|
+
/* @__PURE__ */ jsx345("span", { className: "tag-label", children }),
|
|
9167
|
+
onClose && /* @__PURE__ */ jsx345("button", { className: "tag-close", onClick: onClose, "aria-label": "\uC0AD\uC81C", disabled, children: /* @__PURE__ */ jsx345(XIcon_default, {}) })
|
|
9046
9168
|
]
|
|
9047
9169
|
}
|
|
9048
9170
|
);
|
|
@@ -9050,83 +9172,26 @@ var Tag = (props) => {
|
|
|
9050
9172
|
Tag.displayName = "Tag";
|
|
9051
9173
|
var Tag_default = Tag;
|
|
9052
9174
|
|
|
9053
|
-
// src/components/TextArea/TextArea.tsx
|
|
9054
|
-
import React36 from "react";
|
|
9055
|
-
import { jsx as jsx344 } from "react/jsx-runtime";
|
|
9056
|
-
var TextArea = React36.forwardRef(
|
|
9057
|
-
(props, ref) => {
|
|
9058
|
-
const { value, onChange, disabled, ...textareaProps } = props;
|
|
9059
|
-
const localRef = React36.useRef(null);
|
|
9060
|
-
const setRefs = (el) => {
|
|
9061
|
-
localRef.current = el;
|
|
9062
|
-
if (!ref) return;
|
|
9063
|
-
if (typeof ref === "function") {
|
|
9064
|
-
ref(el);
|
|
9065
|
-
} else if (ref && typeof ref === "object" && "current" in ref) {
|
|
9066
|
-
ref.current = el;
|
|
9067
|
-
}
|
|
9068
|
-
};
|
|
9069
|
-
const handleOnChange = (e) => {
|
|
9070
|
-
const val = e.target.value;
|
|
9071
|
-
if (onChange) {
|
|
9072
|
-
const event = {
|
|
9073
|
-
...e,
|
|
9074
|
-
target: { value: val }
|
|
9075
|
-
};
|
|
9076
|
-
onChange(event);
|
|
9077
|
-
}
|
|
9078
|
-
};
|
|
9079
|
-
React36.useEffect(() => {
|
|
9080
|
-
const el = localRef.current;
|
|
9081
|
-
if (!el) return;
|
|
9082
|
-
el.style.height = "0px";
|
|
9083
|
-
const nextHeight = Math.min(el.scrollHeight, 400);
|
|
9084
|
-
el.style.height = `${nextHeight}px`;
|
|
9085
|
-
}, [value]);
|
|
9086
|
-
return /* @__PURE__ */ jsx344("div", { className: "lib-xplat-textarea-wrapper", children: /* @__PURE__ */ jsx344(
|
|
9087
|
-
"div",
|
|
9088
|
-
{
|
|
9089
|
-
className: clsx_default(
|
|
9090
|
-
"lib-xplat-textarea",
|
|
9091
|
-
disabled ? "disabled" : void 0
|
|
9092
|
-
),
|
|
9093
|
-
children: /* @__PURE__ */ jsx344(
|
|
9094
|
-
"textarea",
|
|
9095
|
-
{
|
|
9096
|
-
...textareaProps,
|
|
9097
|
-
ref: setRefs,
|
|
9098
|
-
disabled,
|
|
9099
|
-
value,
|
|
9100
|
-
onChange: handleOnChange
|
|
9101
|
-
}
|
|
9102
|
-
)
|
|
9103
|
-
}
|
|
9104
|
-
) });
|
|
9105
|
-
}
|
|
9106
|
-
);
|
|
9107
|
-
TextArea.displayName = "TextArea";
|
|
9108
|
-
var TextArea_default = TextArea;
|
|
9109
|
-
|
|
9110
9175
|
// src/components/Toast/Toast.tsx
|
|
9111
|
-
import
|
|
9176
|
+
import React38 from "react";
|
|
9112
9177
|
import { createPortal as createPortal3 } from "react-dom";
|
|
9113
|
-
import { jsx as
|
|
9114
|
-
var ToastContext =
|
|
9178
|
+
import { jsx as jsx346, jsxs as jsxs220 } from "react/jsx-runtime";
|
|
9179
|
+
var ToastContext = React38.createContext(null);
|
|
9115
9180
|
var useToast = () => {
|
|
9116
|
-
const ctx =
|
|
9181
|
+
const ctx = React38.useContext(ToastContext);
|
|
9117
9182
|
if (!ctx) throw new Error("useToast must be used within ToastProvider");
|
|
9118
9183
|
return ctx;
|
|
9119
9184
|
};
|
|
9120
9185
|
var EXIT_DURATION = 300;
|
|
9121
9186
|
var ToastItemComponent = ({ item, isExiting, onClose }) => {
|
|
9122
|
-
const ref =
|
|
9123
|
-
const [height, setHeight] =
|
|
9124
|
-
|
|
9187
|
+
const ref = React38.useRef(null);
|
|
9188
|
+
const [height, setHeight] = React38.useState(void 0);
|
|
9189
|
+
React38.useEffect(() => {
|
|
9125
9190
|
if (ref.current && !isExiting) {
|
|
9126
9191
|
setHeight(ref.current.offsetHeight);
|
|
9127
9192
|
}
|
|
9128
9193
|
}, [isExiting]);
|
|
9129
|
-
return /* @__PURE__ */
|
|
9194
|
+
return /* @__PURE__ */ jsx346(
|
|
9130
9195
|
"div",
|
|
9131
9196
|
{
|
|
9132
9197
|
className: clsx_default("lib-xplat-toast-wrapper", { exit: isExiting }),
|
|
@@ -9134,15 +9199,15 @@ var ToastItemComponent = ({ item, isExiting, onClose }) => {
|
|
|
9134
9199
|
maxHeight: isExiting ? 0 : height ?? "none",
|
|
9135
9200
|
marginBottom: isExiting ? 0 : void 0
|
|
9136
9201
|
},
|
|
9137
|
-
children: /* @__PURE__ */
|
|
9202
|
+
children: /* @__PURE__ */ jsxs220(
|
|
9138
9203
|
"div",
|
|
9139
9204
|
{
|
|
9140
9205
|
ref,
|
|
9141
9206
|
className: clsx_default("lib-xplat-toast", item.type, { exit: isExiting }),
|
|
9142
9207
|
role: "alert",
|
|
9143
9208
|
children: [
|
|
9144
|
-
/* @__PURE__ */
|
|
9145
|
-
/* @__PURE__ */
|
|
9209
|
+
/* @__PURE__ */ jsx346("span", { className: "message", children: item.message }),
|
|
9210
|
+
/* @__PURE__ */ jsx346("button", { className: "close-btn", onClick: onClose, "aria-label": "\uB2EB\uAE30", children: "\xD7" })
|
|
9146
9211
|
]
|
|
9147
9212
|
}
|
|
9148
9213
|
)
|
|
@@ -9153,13 +9218,13 @@ var ToastProvider = ({
|
|
|
9153
9218
|
children,
|
|
9154
9219
|
position = "top-right"
|
|
9155
9220
|
}) => {
|
|
9156
|
-
const [toasts, setToasts] =
|
|
9157
|
-
const [removing, setRemoving] =
|
|
9158
|
-
const [mounted, setMounted] =
|
|
9159
|
-
|
|
9221
|
+
const [toasts, setToasts] = React38.useState([]);
|
|
9222
|
+
const [removing, setRemoving] = React38.useState(/* @__PURE__ */ new Set());
|
|
9223
|
+
const [mounted, setMounted] = React38.useState(false);
|
|
9224
|
+
React38.useEffect(() => {
|
|
9160
9225
|
setMounted(true);
|
|
9161
9226
|
}, []);
|
|
9162
|
-
const remove =
|
|
9227
|
+
const remove = React38.useCallback((id) => {
|
|
9163
9228
|
setRemoving((prev) => new Set(prev).add(id));
|
|
9164
9229
|
setTimeout(() => {
|
|
9165
9230
|
setToasts((prev) => prev.filter((t) => t.id !== id));
|
|
@@ -9170,7 +9235,7 @@ var ToastProvider = ({
|
|
|
9170
9235
|
});
|
|
9171
9236
|
}, EXIT_DURATION);
|
|
9172
9237
|
}, []);
|
|
9173
|
-
const toast =
|
|
9238
|
+
const toast = React38.useCallback(
|
|
9174
9239
|
(type, message, duration = 3e3) => {
|
|
9175
9240
|
const id = `${Date.now()}-${Math.random()}`;
|
|
9176
9241
|
setToasts((prev) => [...prev, { id, type, message }]);
|
|
@@ -9180,10 +9245,10 @@ var ToastProvider = ({
|
|
|
9180
9245
|
},
|
|
9181
9246
|
[remove]
|
|
9182
9247
|
);
|
|
9183
|
-
return /* @__PURE__ */
|
|
9248
|
+
return /* @__PURE__ */ jsxs220(ToastContext.Provider, { value: { toast }, children: [
|
|
9184
9249
|
children,
|
|
9185
9250
|
mounted && createPortal3(
|
|
9186
|
-
/* @__PURE__ */
|
|
9251
|
+
/* @__PURE__ */ jsx346("div", { className: clsx_default("lib-xplat-toast-container", position), children: toasts.map((t) => /* @__PURE__ */ jsx346(
|
|
9187
9252
|
ToastItemComponent,
|
|
9188
9253
|
{
|
|
9189
9254
|
item: t,
|
|
@@ -9199,29 +9264,29 @@ var ToastProvider = ({
|
|
|
9199
9264
|
ToastProvider.displayName = "ToastProvider";
|
|
9200
9265
|
|
|
9201
9266
|
// src/components/Tooltip/Tooltip.tsx
|
|
9202
|
-
import
|
|
9203
|
-
import { jsx as
|
|
9267
|
+
import React39 from "react";
|
|
9268
|
+
import { jsx as jsx347, jsxs as jsxs221 } from "react/jsx-runtime";
|
|
9204
9269
|
var Tooltip = (props) => {
|
|
9205
9270
|
const {
|
|
9206
9271
|
type = "primary",
|
|
9207
9272
|
description,
|
|
9208
9273
|
children
|
|
9209
9274
|
} = props;
|
|
9210
|
-
const iconRef =
|
|
9211
|
-
return /* @__PURE__ */
|
|
9212
|
-
/* @__PURE__ */
|
|
9213
|
-
/* @__PURE__ */
|
|
9275
|
+
const iconRef = React39.useRef(null);
|
|
9276
|
+
return /* @__PURE__ */ jsxs221("div", { className: "lib-xplat-tooltip", children: [
|
|
9277
|
+
/* @__PURE__ */ jsx347("div", { className: "tooltip-content", ref: iconRef, children: children || "Tooltip" }),
|
|
9278
|
+
/* @__PURE__ */ jsx347("div", { className: clsx_default("tooltip-wrapper", type), children: description })
|
|
9214
9279
|
] });
|
|
9215
9280
|
};
|
|
9216
9281
|
Tooltip.displayName = "Tooltip";
|
|
9217
9282
|
var Tooltip_default = Tooltip;
|
|
9218
9283
|
|
|
9219
9284
|
// src/components/Video/Video.tsx
|
|
9220
|
-
import
|
|
9221
|
-
import { jsx as
|
|
9222
|
-
var PipIcon = () => /* @__PURE__ */
|
|
9223
|
-
/* @__PURE__ */
|
|
9224
|
-
/* @__PURE__ */
|
|
9285
|
+
import React40 from "react";
|
|
9286
|
+
import { jsx as jsx348, jsxs as jsxs222 } from "react/jsx-runtime";
|
|
9287
|
+
var PipIcon = () => /* @__PURE__ */ jsxs222("svg", { viewBox: "0 0 24 24", width: "1em", height: "1em", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
|
|
9288
|
+
/* @__PURE__ */ jsx348("rect", { x: "3", y: "5", width: "18", height: "14", rx: "2" }),
|
|
9289
|
+
/* @__PURE__ */ jsx348("rect", { x: "12", y: "11", width: "7", height: "6", rx: "1", fill: "currentColor" })
|
|
9225
9290
|
] });
|
|
9226
9291
|
var formatTime = (sec) => {
|
|
9227
9292
|
if (!Number.isFinite(sec) || sec < 0) return "0:00";
|
|
@@ -9229,7 +9294,7 @@ var formatTime = (sec) => {
|
|
|
9229
9294
|
const s = Math.floor(sec % 60);
|
|
9230
9295
|
return `${m}:${s.toString().padStart(2, "0")}`;
|
|
9231
9296
|
};
|
|
9232
|
-
var Video =
|
|
9297
|
+
var Video = React40.forwardRef((props, ref) => {
|
|
9233
9298
|
const {
|
|
9234
9299
|
src,
|
|
9235
9300
|
poster,
|
|
@@ -9253,21 +9318,21 @@ var Video = React39.forwardRef((props, ref) => {
|
|
|
9253
9318
|
children,
|
|
9254
9319
|
...rest
|
|
9255
9320
|
} = props;
|
|
9256
|
-
const containerRef =
|
|
9257
|
-
const videoRef =
|
|
9258
|
-
const [isPlaying, setIsPlaying] =
|
|
9259
|
-
const [isLoaded, setIsLoaded] =
|
|
9260
|
-
const [currentTime, setCurrentTime] =
|
|
9261
|
-
const [duration, setDuration] =
|
|
9262
|
-
const [buffered, setBuffered] =
|
|
9263
|
-
const [volume, setVolume] =
|
|
9264
|
-
const [isMuted, setIsMuted] =
|
|
9265
|
-
const [isFullscreen, setIsFullscreen] =
|
|
9266
|
-
const [playbackRate, setPlaybackRate] =
|
|
9267
|
-
const [rateMenuOpen, setRateMenuOpen] =
|
|
9268
|
-
const [captionsOn, setCaptionsOn] =
|
|
9269
|
-
const [isPip, setIsPip] =
|
|
9270
|
-
const setRefs =
|
|
9321
|
+
const containerRef = React40.useRef(null);
|
|
9322
|
+
const videoRef = React40.useRef(null);
|
|
9323
|
+
const [isPlaying, setIsPlaying] = React40.useState(Boolean(autoPlay));
|
|
9324
|
+
const [isLoaded, setIsLoaded] = React40.useState(false);
|
|
9325
|
+
const [currentTime, setCurrentTime] = React40.useState(0);
|
|
9326
|
+
const [duration, setDuration] = React40.useState(0);
|
|
9327
|
+
const [buffered, setBuffered] = React40.useState(0);
|
|
9328
|
+
const [volume, setVolume] = React40.useState(1);
|
|
9329
|
+
const [isMuted, setIsMuted] = React40.useState(Boolean(muted));
|
|
9330
|
+
const [isFullscreen, setIsFullscreen] = React40.useState(false);
|
|
9331
|
+
const [playbackRate, setPlaybackRate] = React40.useState(1);
|
|
9332
|
+
const [rateMenuOpen, setRateMenuOpen] = React40.useState(false);
|
|
9333
|
+
const [captionsOn, setCaptionsOn] = React40.useState(false);
|
|
9334
|
+
const [isPip, setIsPip] = React40.useState(false);
|
|
9335
|
+
const setRefs = React40.useCallback(
|
|
9271
9336
|
(el) => {
|
|
9272
9337
|
videoRef.current = el;
|
|
9273
9338
|
if (typeof ref === "function") ref(el);
|
|
@@ -9275,14 +9340,14 @@ var Video = React39.forwardRef((props, ref) => {
|
|
|
9275
9340
|
},
|
|
9276
9341
|
[ref]
|
|
9277
9342
|
);
|
|
9278
|
-
|
|
9343
|
+
React40.useEffect(() => {
|
|
9279
9344
|
const onFsChange = () => {
|
|
9280
9345
|
setIsFullscreen(document.fullscreenElement === containerRef.current);
|
|
9281
9346
|
};
|
|
9282
9347
|
document.addEventListener("fullscreenchange", onFsChange);
|
|
9283
9348
|
return () => document.removeEventListener("fullscreenchange", onFsChange);
|
|
9284
9349
|
}, []);
|
|
9285
|
-
|
|
9350
|
+
React40.useEffect(() => {
|
|
9286
9351
|
const v = videoRef.current;
|
|
9287
9352
|
if (!v) return;
|
|
9288
9353
|
const onEnter = () => setIsPip(true);
|
|
@@ -9396,13 +9461,13 @@ var Video = React39.forwardRef((props, ref) => {
|
|
|
9396
9461
|
const volumePct = (isMuted ? 0 : volume) * 100;
|
|
9397
9462
|
const VolumeGlyph = isMuted || volume === 0 ? VolumeXIcon_default : volume < 0.5 ? VolumeIcon_default : Volume2Icon_default;
|
|
9398
9463
|
const pipSupported = typeof document !== "undefined" && "pictureInPictureEnabled" in document && document.pictureInPictureEnabled;
|
|
9399
|
-
return /* @__PURE__ */
|
|
9464
|
+
return /* @__PURE__ */ jsxs222(
|
|
9400
9465
|
"div",
|
|
9401
9466
|
{
|
|
9402
9467
|
ref: containerRef,
|
|
9403
9468
|
className: clsx_default("lib-xplat-video", showControls && "has-controls"),
|
|
9404
9469
|
children: [
|
|
9405
|
-
/* @__PURE__ */
|
|
9470
|
+
/* @__PURE__ */ jsx348(
|
|
9406
9471
|
"video",
|
|
9407
9472
|
{
|
|
9408
9473
|
ref: setRefs,
|
|
@@ -9423,7 +9488,7 @@ var Video = React39.forwardRef((props, ref) => {
|
|
|
9423
9488
|
children
|
|
9424
9489
|
}
|
|
9425
9490
|
),
|
|
9426
|
-
showCenterPlay && /* @__PURE__ */
|
|
9491
|
+
showCenterPlay && /* @__PURE__ */ jsx348(
|
|
9427
9492
|
"button",
|
|
9428
9493
|
{
|
|
9429
9494
|
type: "button",
|
|
@@ -9435,11 +9500,11 @@ var Video = React39.forwardRef((props, ref) => {
|
|
|
9435
9500
|
onClick: togglePlay,
|
|
9436
9501
|
"aria-label": isPlaying ? "\uC77C\uC2DC\uC815\uC9C0" : "\uC7AC\uC0DD",
|
|
9437
9502
|
tabIndex: -1,
|
|
9438
|
-
children: /* @__PURE__ */
|
|
9503
|
+
children: /* @__PURE__ */ jsx348("span", { className: "center-play-icon", children: /* @__PURE__ */ jsx348(PlayCircleIcon_default, {}) })
|
|
9439
9504
|
}
|
|
9440
9505
|
),
|
|
9441
|
-
showControls && /* @__PURE__ */
|
|
9442
|
-
/* @__PURE__ */
|
|
9506
|
+
showControls && /* @__PURE__ */ jsxs222("div", { className: "controls", onClick: (e) => e.stopPropagation(), children: [
|
|
9507
|
+
/* @__PURE__ */ jsx348(
|
|
9443
9508
|
"input",
|
|
9444
9509
|
{
|
|
9445
9510
|
type: "range",
|
|
@@ -9456,29 +9521,29 @@ var Video = React39.forwardRef((props, ref) => {
|
|
|
9456
9521
|
}
|
|
9457
9522
|
}
|
|
9458
9523
|
),
|
|
9459
|
-
/* @__PURE__ */
|
|
9460
|
-
/* @__PURE__ */
|
|
9524
|
+
/* @__PURE__ */ jsxs222("div", { className: "controls-row", children: [
|
|
9525
|
+
/* @__PURE__ */ jsx348(
|
|
9461
9526
|
"button",
|
|
9462
9527
|
{
|
|
9463
9528
|
type: "button",
|
|
9464
9529
|
className: "control-btn",
|
|
9465
9530
|
onClick: togglePlay,
|
|
9466
9531
|
"aria-label": isPlaying ? "\uC77C\uC2DC\uC815\uC9C0" : "\uC7AC\uC0DD",
|
|
9467
|
-
children: isPlaying ? /* @__PURE__ */
|
|
9532
|
+
children: isPlaying ? /* @__PURE__ */ jsx348(PauseIcon_default, {}) : /* @__PURE__ */ jsx348(PlayIcon_default, {})
|
|
9468
9533
|
}
|
|
9469
9534
|
),
|
|
9470
|
-
/* @__PURE__ */
|
|
9471
|
-
/* @__PURE__ */
|
|
9535
|
+
/* @__PURE__ */ jsxs222("div", { className: "volume-group", children: [
|
|
9536
|
+
/* @__PURE__ */ jsx348(
|
|
9472
9537
|
"button",
|
|
9473
9538
|
{
|
|
9474
9539
|
type: "button",
|
|
9475
9540
|
className: "control-btn",
|
|
9476
9541
|
onClick: toggleMute,
|
|
9477
9542
|
"aria-label": isMuted ? "\uC74C\uC18C\uAC70 \uD574\uC81C" : "\uC74C\uC18C\uAC70",
|
|
9478
|
-
children: /* @__PURE__ */
|
|
9543
|
+
children: /* @__PURE__ */ jsx348(VolumeGlyph, {})
|
|
9479
9544
|
}
|
|
9480
9545
|
),
|
|
9481
|
-
/* @__PURE__ */
|
|
9546
|
+
/* @__PURE__ */ jsx348(
|
|
9482
9547
|
"input",
|
|
9483
9548
|
{
|
|
9484
9549
|
type: "range",
|
|
@@ -9493,14 +9558,14 @@ var Video = React39.forwardRef((props, ref) => {
|
|
|
9493
9558
|
}
|
|
9494
9559
|
)
|
|
9495
9560
|
] }),
|
|
9496
|
-
/* @__PURE__ */
|
|
9561
|
+
/* @__PURE__ */ jsxs222("span", { className: "time", children: [
|
|
9497
9562
|
formatTime(currentTime),
|
|
9498
9563
|
" / ",
|
|
9499
9564
|
formatTime(duration)
|
|
9500
9565
|
] }),
|
|
9501
|
-
/* @__PURE__ */
|
|
9502
|
-
playbackRates && playbackRates.length > 0 && /* @__PURE__ */
|
|
9503
|
-
/* @__PURE__ */
|
|
9566
|
+
/* @__PURE__ */ jsx348("div", { className: "controls-spacer" }),
|
|
9567
|
+
playbackRates && playbackRates.length > 0 && /* @__PURE__ */ jsxs222("div", { className: clsx_default("rate-group", rateMenuOpen && "is-open"), children: [
|
|
9568
|
+
/* @__PURE__ */ jsxs222(
|
|
9504
9569
|
"button",
|
|
9505
9570
|
{
|
|
9506
9571
|
type: "button",
|
|
@@ -9514,7 +9579,7 @@ var Video = React39.forwardRef((props, ref) => {
|
|
|
9514
9579
|
]
|
|
9515
9580
|
}
|
|
9516
9581
|
),
|
|
9517
|
-
rateMenuOpen && /* @__PURE__ */
|
|
9582
|
+
rateMenuOpen && /* @__PURE__ */ jsx348("ul", { className: "rate-menu", role: "menu", children: playbackRates.map((r2) => /* @__PURE__ */ jsx348("li", { children: /* @__PURE__ */ jsxs222(
|
|
9518
9583
|
"button",
|
|
9519
9584
|
{
|
|
9520
9585
|
type: "button",
|
|
@@ -9528,7 +9593,7 @@ var Video = React39.forwardRef((props, ref) => {
|
|
|
9528
9593
|
}
|
|
9529
9594
|
) }, r2)) })
|
|
9530
9595
|
] }),
|
|
9531
|
-
showCaptions && /* @__PURE__ */
|
|
9596
|
+
showCaptions && /* @__PURE__ */ jsx348(
|
|
9532
9597
|
"button",
|
|
9533
9598
|
{
|
|
9534
9599
|
type: "button",
|
|
@@ -9536,37 +9601,37 @@ var Video = React39.forwardRef((props, ref) => {
|
|
|
9536
9601
|
onClick: toggleCaptions,
|
|
9537
9602
|
"aria-label": captionsOn ? "\uC790\uB9C9 \uB044\uAE30" : "\uC790\uB9C9 \uCF1C\uAE30",
|
|
9538
9603
|
"aria-pressed": captionsOn,
|
|
9539
|
-
children: /* @__PURE__ */
|
|
9604
|
+
children: /* @__PURE__ */ jsx348(TypeIcon_default, {})
|
|
9540
9605
|
}
|
|
9541
9606
|
),
|
|
9542
|
-
showPip && pipSupported && /* @__PURE__ */
|
|
9607
|
+
showPip && pipSupported && /* @__PURE__ */ jsx348(
|
|
9543
9608
|
"button",
|
|
9544
9609
|
{
|
|
9545
9610
|
type: "button",
|
|
9546
9611
|
className: clsx_default("control-btn", isPip && "is-active"),
|
|
9547
9612
|
onClick: togglePip,
|
|
9548
9613
|
"aria-label": isPip ? "PIP \uC885\uB8CC" : "PIP",
|
|
9549
|
-
children: /* @__PURE__ */
|
|
9614
|
+
children: /* @__PURE__ */ jsx348(PipIcon, {})
|
|
9550
9615
|
}
|
|
9551
9616
|
),
|
|
9552
|
-
showDownload && /* @__PURE__ */
|
|
9617
|
+
showDownload && /* @__PURE__ */ jsx348(
|
|
9553
9618
|
"a",
|
|
9554
9619
|
{
|
|
9555
9620
|
className: "control-btn",
|
|
9556
9621
|
href: src,
|
|
9557
9622
|
download: downloadFileName ?? true,
|
|
9558
9623
|
"aria-label": "\uB2E4\uC6B4\uB85C\uB4DC",
|
|
9559
|
-
children: /* @__PURE__ */
|
|
9624
|
+
children: /* @__PURE__ */ jsx348(DownloadIcon_default, {})
|
|
9560
9625
|
}
|
|
9561
9626
|
),
|
|
9562
|
-
/* @__PURE__ */
|
|
9627
|
+
/* @__PURE__ */ jsx348(
|
|
9563
9628
|
"button",
|
|
9564
9629
|
{
|
|
9565
9630
|
type: "button",
|
|
9566
9631
|
className: "control-btn",
|
|
9567
9632
|
onClick: toggleFullscreen,
|
|
9568
9633
|
"aria-label": isFullscreen ? "\uC804\uCCB4\uD654\uBA74 \uC885\uB8CC" : "\uC804\uCCB4\uD654\uBA74",
|
|
9569
|
-
children: isFullscreen ? /* @__PURE__ */
|
|
9634
|
+
children: isFullscreen ? /* @__PURE__ */ jsx348(MinimizeIcon_default, {}) : /* @__PURE__ */ jsx348(MaximizeIcon_default, {})
|
|
9570
9635
|
}
|
|
9571
9636
|
)
|
|
9572
9637
|
] })
|
|
@@ -9579,7 +9644,7 @@ Video.displayName = "Video";
|
|
|
9579
9644
|
var Video_default = Video;
|
|
9580
9645
|
|
|
9581
9646
|
// src/layout/Grid/FullGrid/FullGrid.tsx
|
|
9582
|
-
import { jsx as
|
|
9647
|
+
import { jsx as jsx349 } from "react/jsx-runtime";
|
|
9583
9648
|
var GAP_MAP = {
|
|
9584
9649
|
none: "var(--spacing-space-none)",
|
|
9585
9650
|
xs: "var(--spacing-space-1)",
|
|
@@ -9592,13 +9657,13 @@ var GAP_MAP = {
|
|
|
9592
9657
|
var FullGrid = (props) => {
|
|
9593
9658
|
const { children, gap } = props;
|
|
9594
9659
|
const style = gap != null ? { gap: GAP_MAP[gap] } : void 0;
|
|
9595
|
-
return /* @__PURE__ */
|
|
9660
|
+
return /* @__PURE__ */ jsx349("div", { className: "lib-xplat-full-grid", style, children });
|
|
9596
9661
|
};
|
|
9597
9662
|
FullGrid.displayName = "FullGrid";
|
|
9598
9663
|
var FullGrid_default = FullGrid;
|
|
9599
9664
|
|
|
9600
9665
|
// src/layout/Grid/FullScreen/FullScreen.tsx
|
|
9601
|
-
import { jsx as
|
|
9666
|
+
import { jsx as jsx350 } from "react/jsx-runtime";
|
|
9602
9667
|
var GAP_MAP2 = {
|
|
9603
9668
|
none: "var(--spacing-space-none)",
|
|
9604
9669
|
xs: "var(--spacing-space-1)",
|
|
@@ -9611,13 +9676,13 @@ var GAP_MAP2 = {
|
|
|
9611
9676
|
var FullScreen = (props) => {
|
|
9612
9677
|
const { children, gap } = props;
|
|
9613
9678
|
const style = gap != null ? { gap: GAP_MAP2[gap] } : void 0;
|
|
9614
|
-
return /* @__PURE__ */
|
|
9679
|
+
return /* @__PURE__ */ jsx350("div", { className: "lib-xplat-full-screen", style, children });
|
|
9615
9680
|
};
|
|
9616
9681
|
FullScreen.displayName = "FullScreen";
|
|
9617
9682
|
var FullScreen_default = FullScreen;
|
|
9618
9683
|
|
|
9619
9684
|
// src/layout/Grid/Item/Item.tsx
|
|
9620
|
-
import { jsx as
|
|
9685
|
+
import { jsx as jsx351 } from "react/jsx-runtime";
|
|
9621
9686
|
var calculateSpans = (column) => {
|
|
9622
9687
|
const spans = {};
|
|
9623
9688
|
let inherited = column.default;
|
|
@@ -9634,35 +9699,35 @@ var GridItem = ({ column, children, className }) => {
|
|
|
9634
9699
|
Object.entries(spans).forEach(([key, value]) => {
|
|
9635
9700
|
style[`--column-${key}`] = value;
|
|
9636
9701
|
});
|
|
9637
|
-
return /* @__PURE__ */
|
|
9702
|
+
return /* @__PURE__ */ jsx351("div", { className: clsx_default("lib-xplat-grid-item", className), style, children });
|
|
9638
9703
|
};
|
|
9639
9704
|
GridItem.displayName = "GridItem";
|
|
9640
9705
|
var Item_default = GridItem;
|
|
9641
9706
|
|
|
9642
9707
|
// src/layout/Header/Header.tsx
|
|
9643
|
-
import { jsx as
|
|
9708
|
+
import { jsx as jsx352, jsxs as jsxs223 } from "react/jsx-runtime";
|
|
9644
9709
|
var Header = ({
|
|
9645
9710
|
logo,
|
|
9646
9711
|
centerContent,
|
|
9647
9712
|
rightContent
|
|
9648
9713
|
}) => {
|
|
9649
|
-
return /* @__PURE__ */
|
|
9650
|
-
/* @__PURE__ */
|
|
9651
|
-
/* @__PURE__ */
|
|
9652
|
-
/* @__PURE__ */
|
|
9714
|
+
return /* @__PURE__ */ jsxs223("div", { className: "lib-xplat-layout-header", children: [
|
|
9715
|
+
/* @__PURE__ */ jsx352("div", { children: logo }),
|
|
9716
|
+
/* @__PURE__ */ jsx352("div", { children: centerContent }),
|
|
9717
|
+
/* @__PURE__ */ jsx352("div", { children: rightContent })
|
|
9653
9718
|
] });
|
|
9654
9719
|
};
|
|
9655
9720
|
Header.displayName = "Header";
|
|
9656
9721
|
var Header_default = Header;
|
|
9657
9722
|
|
|
9658
9723
|
// src/layout/Layout/Layout.tsx
|
|
9659
|
-
import { Fragment as Fragment5, jsx as
|
|
9724
|
+
import { Fragment as Fragment5, jsx as jsx353, jsxs as jsxs224 } from "react/jsx-runtime";
|
|
9660
9725
|
var Layout = (props) => {
|
|
9661
9726
|
const { header, sideBar, children } = props;
|
|
9662
|
-
return /* @__PURE__ */
|
|
9663
|
-
sideBar && /* @__PURE__ */
|
|
9664
|
-
/* @__PURE__ */
|
|
9665
|
-
header && /* @__PURE__ */
|
|
9727
|
+
return /* @__PURE__ */ jsx353("div", { className: "lib-xplat-layout", children: /* @__PURE__ */ jsxs224("div", { className: "lib-xplat-layout-content-wrapper", children: [
|
|
9728
|
+
sideBar && /* @__PURE__ */ jsx353(Fragment5, { children: sideBar }),
|
|
9729
|
+
/* @__PURE__ */ jsxs224("div", { className: "lib-xplat-layout-content", children: [
|
|
9730
|
+
header && /* @__PURE__ */ jsx353("div", { className: "lib-xplat-layout-conent-header", children: header }),
|
|
9666
9731
|
children
|
|
9667
9732
|
] })
|
|
9668
9733
|
] }) });
|
|
@@ -9671,31 +9736,31 @@ Layout.displayName = "Layout";
|
|
|
9671
9736
|
var Layout_default = Layout;
|
|
9672
9737
|
|
|
9673
9738
|
// src/layout/SideBar/SideBar.tsx
|
|
9674
|
-
import
|
|
9739
|
+
import React42 from "react";
|
|
9675
9740
|
|
|
9676
9741
|
// src/layout/SideBar/SideBarContext.tsx
|
|
9677
|
-
import
|
|
9678
|
-
var SideBarContext =
|
|
9742
|
+
import React41 from "react";
|
|
9743
|
+
var SideBarContext = React41.createContext(null);
|
|
9679
9744
|
var useSideBarContext = () => {
|
|
9680
|
-
const ctx =
|
|
9745
|
+
const ctx = React41.useContext(SideBarContext);
|
|
9681
9746
|
if (!ctx) throw new Error("Error");
|
|
9682
9747
|
return ctx;
|
|
9683
9748
|
};
|
|
9684
9749
|
var SideBarContext_default = SideBarContext;
|
|
9685
9750
|
|
|
9686
9751
|
// src/layout/SideBar/SideBar.tsx
|
|
9687
|
-
import { jsx as
|
|
9752
|
+
import { jsx as jsx354 } from "react/jsx-runtime";
|
|
9688
9753
|
var SideBar = (props) => {
|
|
9689
9754
|
const { children, className } = props;
|
|
9690
|
-
const [isOpen, setIsOpen] =
|
|
9755
|
+
const [isOpen, setIsOpen] = React42.useState(true);
|
|
9691
9756
|
const handleSwitchSideBar = () => {
|
|
9692
9757
|
setIsOpen((prev) => !prev);
|
|
9693
9758
|
};
|
|
9694
|
-
return /* @__PURE__ */
|
|
9759
|
+
return /* @__PURE__ */ jsx354(
|
|
9695
9760
|
SideBarContext_default.Provider,
|
|
9696
9761
|
{
|
|
9697
9762
|
value: { isSidebarOpen: isOpen, handleSwitchSideBar },
|
|
9698
|
-
children: /* @__PURE__ */
|
|
9763
|
+
children: /* @__PURE__ */ jsx354(
|
|
9699
9764
|
"div",
|
|
9700
9765
|
{
|
|
9701
9766
|
className: clsx_default(
|
|
@@ -9774,6 +9839,7 @@ export {
|
|
|
9774
9839
|
CardTab_default as CardTab,
|
|
9775
9840
|
CastIcon_default as CastIcon,
|
|
9776
9841
|
Chart_default as Chart,
|
|
9842
|
+
ChatInput_default as ChatInput,
|
|
9777
9843
|
CheckBox_default as CheckBox,
|
|
9778
9844
|
CheckCircleIcon_default as CheckCircleIcon,
|
|
9779
9845
|
CheckIcon_default as CheckIcon,
|