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