@x-plat/design-system 0.5.21 → 0.5.23

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