@x-plat/design-system 0.5.21 → 0.5.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -387,6 +387,21 @@ import { jsx as jsx88 } from "react/jsx-runtime";
387
387
 
388
388
  // src/tokens/svg/communication/SendIcon.tsx
389
389
  import { jsx as jsx89, jsxs as jsxs47 } from "react/jsx-runtime";
390
+ var SendIcon = () => /* @__PURE__ */ jsxs47(
391
+ "svg",
392
+ {
393
+ xmlns: "http://www.w3.org/2000/svg",
394
+ width: "1em",
395
+ height: "1em",
396
+ viewBox: "0 0 20 20",
397
+ fill: "none",
398
+ children: [
399
+ /* @__PURE__ */ jsx89("g", { clipPath: "url(#send-clip)", children: /* @__PURE__ */ jsx89("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M18.3558 0.918873C18.3887 0.919879 18.4212 0.9224 18.4535 0.927663C18.4642 0.929393 18.4751 0.930348 18.4857 0.932545C18.527 0.941123 18.5675 0.953269 18.6068 0.968678C18.6178 0.972968 18.6282 0.978499 18.639 0.983327C18.6672 0.995914 18.6945 1.01021 18.7211 1.0263C18.7403 1.03794 18.7594 1.04988 18.7777 1.0634C18.7803 1.06534 18.7829 1.0673 18.7855 1.06926C18.8126 1.08979 18.839 1.11195 18.8637 1.13665C18.8872 1.16018 18.9084 1.18517 18.9281 1.21087C18.9322 1.21625 18.9359 1.22198 18.9398 1.22747C18.9501 1.24168 18.959 1.25667 18.9681 1.27141C18.9866 1.30108 19.0029 1.33154 19.017 1.36321C19.0214 1.37309 19.0267 1.38248 19.0306 1.39251C19.0461 1.43186 19.0581 1.47231 19.0668 1.5136C19.069 1.52426 19.0699 1.5351 19.0717 1.54583C19.077 1.57815 19.0794 1.61062 19.0805 1.64348C19.0808 1.65621 19.0817 1.66884 19.0814 1.68157C19.0799 1.75981 19.0681 1.83872 19.0414 1.91497L13.2074 18.581C13.1058 18.871 12.8377 19.0703 12.5306 19.0829C12.2237 19.0954 11.9398 18.9192 11.8148 18.6386L8.59706 11.4003L1.3617 8.18547C1.08085 8.06057 0.90492 7.77678 0.917368 7.46965C0.929915 7.16252 1.12827 6.89358 1.41834 6.79192L18.0853 0.958913C18.1613 0.932334 18.2398 0.919479 18.3178 0.917897C18.3305 0.91763 18.3431 0.918498 18.3558 0.918873ZM10.0609 10.999L12.4164 16.2997L16.5375 4.52239L10.0609 10.999ZM3.69862 7.58294L9.00038 9.93841L15.4808 3.45794L3.69862 7.58294Z", fill: "currentColor" }) }),
400
+ /* @__PURE__ */ jsx89("defs", { children: /* @__PURE__ */ jsx89("clipPath", { id: "send-clip", children: /* @__PURE__ */ jsx89("rect", { width: "20", height: "20", fill: "currentColor" }) }) })
401
+ ]
402
+ }
403
+ );
404
+ var SendIcon_default = SendIcon;
390
405
 
391
406
  // src/tokens/svg/date/CalendarIcon.tsx
392
407
  import { jsx as jsx90 } from "react/jsx-runtime";
@@ -1933,30 +1948,151 @@ var Calendar = (props) => {
1933
1948
  Calendar.displayName = "Calendar";
1934
1949
  var Calendar_default = Calendar;
1935
1950
 
1951
+ // src/components/ChatInput/ChatInput.tsx
1952
+ import React5 from "react";
1953
+
1954
+ // src/components/TextArea/TextArea.tsx
1955
+ import React4 from "react";
1956
+ import { jsx as jsx302 } from "react/jsx-runtime";
1957
+ var TextArea = React4.forwardRef(
1958
+ (props, ref) => {
1959
+ const { value, onChange, disabled, ...textareaProps } = props;
1960
+ const localRef = React4.useRef(null);
1961
+ const setRefs = (el) => {
1962
+ localRef.current = el;
1963
+ if (!ref) return;
1964
+ if (typeof ref === "function") {
1965
+ ref(el);
1966
+ } else if (ref && typeof ref === "object" && "current" in ref) {
1967
+ ref.current = el;
1968
+ }
1969
+ };
1970
+ const handleOnChange = (e) => {
1971
+ const val = e.target.value;
1972
+ if (onChange) {
1973
+ const event = {
1974
+ ...e,
1975
+ target: { value: val }
1976
+ };
1977
+ onChange(event);
1978
+ }
1979
+ };
1980
+ React4.useEffect(() => {
1981
+ const el = localRef.current;
1982
+ if (!el) return;
1983
+ el.style.height = "0px";
1984
+ const nextHeight = Math.min(el.scrollHeight, 400);
1985
+ el.style.height = `${nextHeight}px`;
1986
+ }, [value]);
1987
+ return /* @__PURE__ */ jsx302("div", { className: "lib-xplat-textarea-wrapper", children: /* @__PURE__ */ jsx302(
1988
+ "div",
1989
+ {
1990
+ className: clsx_default(
1991
+ "lib-xplat-textarea",
1992
+ disabled ? "disabled" : void 0
1993
+ ),
1994
+ children: /* @__PURE__ */ jsx302(
1995
+ "textarea",
1996
+ {
1997
+ ...textareaProps,
1998
+ ref: setRefs,
1999
+ disabled,
2000
+ value,
2001
+ onChange: handleOnChange
2002
+ }
2003
+ )
2004
+ }
2005
+ ) });
2006
+ }
2007
+ );
2008
+ TextArea.displayName = "TextArea";
2009
+ var TextArea_default = TextArea;
2010
+
2011
+ // src/components/ChatInput/ChatInput.tsx
2012
+ import { jsx as jsx303, jsxs as jsxs194 } from "react/jsx-runtime";
2013
+ var ChatInput = React5.forwardRef(
2014
+ (props, ref) => {
2015
+ const {
2016
+ placeholder,
2017
+ value: valueProp,
2018
+ disabled = false,
2019
+ buttonType = "primary",
2020
+ onSubmit,
2021
+ onChange
2022
+ } = props;
2023
+ const isControlled = valueProp !== void 0;
2024
+ const [internalValue, setInternalValue] = React5.useState("");
2025
+ const value = isControlled ? valueProp : internalValue;
2026
+ const hasText = value.trim().length > 0;
2027
+ const handleChange = (e) => {
2028
+ const val = e.target.value;
2029
+ if (!isControlled) setInternalValue(val);
2030
+ onChange?.(val);
2031
+ };
2032
+ const handleSubmit = () => {
2033
+ if (!hasText || disabled) return;
2034
+ onSubmit?.(value);
2035
+ if (!isControlled) setInternalValue("");
2036
+ };
2037
+ const handleKeyDown = (e) => {
2038
+ if (e.key === "Enter" && !e.shiftKey) {
2039
+ e.preventDefault();
2040
+ handleSubmit();
2041
+ }
2042
+ };
2043
+ return /* @__PURE__ */ jsxs194("div", { className: clsx_default("lib-xplat-chat-input", disabled && "disabled"), children: [
2044
+ /* @__PURE__ */ jsx303(
2045
+ TextArea_default,
2046
+ {
2047
+ ref,
2048
+ placeholder,
2049
+ value,
2050
+ disabled,
2051
+ onChange: handleChange,
2052
+ onKeyDown: handleKeyDown
2053
+ }
2054
+ ),
2055
+ /* @__PURE__ */ jsx303(
2056
+ "button",
2057
+ {
2058
+ type: "button",
2059
+ className: clsx_default("chat-input-send", `btn-${buttonType}`),
2060
+ disabled: !hasText || disabled,
2061
+ onClick: handleSubmit,
2062
+ "aria-label": "\uC804\uC1A1",
2063
+ children: /* @__PURE__ */ jsx303(SendIcon_default, {})
2064
+ }
2065
+ )
2066
+ ] });
2067
+ }
2068
+ );
2069
+ ChatInput.displayName = "ChatInput";
2070
+ var ChatInput_default = ChatInput;
2071
+
1936
2072
  // src/components/Box/Box.tsx
1937
- import { jsx as jsx302, jsxs as jsxs194 } from "react/jsx-runtime";
2073
+ import { jsx as jsx304, jsxs as jsxs195 } from "react/jsx-runtime";
1938
2074
  var Box = ({
1939
2075
  children,
1940
2076
  title,
1941
2077
  variant = "outlined",
1942
2078
  padding = "md"
1943
2079
  }) => {
1944
- return /* @__PURE__ */ jsxs194("div", { className: clsx_default("lib-xplat-box", variant, `pad-${padding}`), children: [
1945
- title && /* @__PURE__ */ jsx302("div", { className: "box-title", children: title }),
1946
- /* @__PURE__ */ jsx302("div", { className: "box-content", children })
2080
+ return /* @__PURE__ */ jsxs195("div", { className: clsx_default("lib-xplat-box", variant, `pad-${padding}`), children: [
2081
+ title && /* @__PURE__ */ jsx304("div", { className: "box-title", children: title }),
2082
+ /* @__PURE__ */ jsx304("div", { className: "box-content", children })
1947
2083
  ] });
1948
2084
  };
1949
2085
  Box.displayName = "Box";
1950
2086
  var Box_default = Box;
1951
2087
 
1952
2088
  // src/components/CardTab/CardTab.tsx
1953
- import React4 from "react";
2089
+ import React6 from "react";
1954
2090
 
1955
2091
  // src/components/CardTab/CardTabPanel.tsx
1956
- import { jsx as jsx303 } from "react/jsx-runtime";
2092
+ import { jsx as jsx305 } from "react/jsx-runtime";
1957
2093
  var CardTabPanel = (props) => {
1958
2094
  const { children, columns = 3 } = props;
1959
- return /* @__PURE__ */ jsx303(
2095
+ return /* @__PURE__ */ jsx305(
1960
2096
  "div",
1961
2097
  {
1962
2098
  className: "card-tab-panel",
@@ -1969,7 +2105,7 @@ CardTabPanel.displayName = "CardTab.Panel";
1969
2105
  var CardTabPanel_default = CardTabPanel;
1970
2106
 
1971
2107
  // src/components/CardTab/CardTab.tsx
1972
- import { jsx as jsx304, jsxs as jsxs195 } from "react/jsx-runtime";
2108
+ import { jsx as jsx306, jsxs as jsxs196 } from "react/jsx-runtime";
1973
2109
  var CardTabRoot = (props) => {
1974
2110
  const {
1975
2111
  tabs,
@@ -1979,7 +2115,7 @@ var CardTabRoot = (props) => {
1979
2115
  children
1980
2116
  } = props;
1981
2117
  const isControlled = activeValueProp !== void 0;
1982
- const [uncontrolledValue, setUncontrolledValue] = React4.useState(tabs[0]?.value ?? "");
2118
+ const [uncontrolledValue, setUncontrolledValue] = React6.useState(tabs[0]?.value ?? "");
1983
2119
  const activeValue = isControlled ? activeValueProp : uncontrolledValue;
1984
2120
  const handleTabClick = (tab) => {
1985
2121
  if (!isControlled) {
@@ -1987,16 +2123,16 @@ var CardTabRoot = (props) => {
1987
2123
  }
1988
2124
  onChange?.(tab);
1989
2125
  };
1990
- const panels = React4.Children.toArray(children).filter(
1991
- (child) => React4.isValidElement(child) && child.type === CardTabPanel_default
2126
+ const panels = React6.Children.toArray(children).filter(
2127
+ (child) => React6.isValidElement(child) && child.type === CardTabPanel_default
1992
2128
  );
1993
2129
  const activePanel = panels.find(
1994
2130
  (panel) => panel.props.value === activeValue
1995
2131
  );
1996
- return /* @__PURE__ */ jsxs195("div", { className: clsx_default("lib-xplat-card-tab", size), children: [
1997
- /* @__PURE__ */ jsx304("div", { className: "card-tab-bar", children: tabs.map((tab) => {
2132
+ return /* @__PURE__ */ jsxs196("div", { className: clsx_default("lib-xplat-card-tab", size), children: [
2133
+ /* @__PURE__ */ jsx306("div", { className: "card-tab-bar", children: tabs.map((tab) => {
1998
2134
  const isActive = tab.value === activeValue;
1999
- return /* @__PURE__ */ jsx304(
2135
+ return /* @__PURE__ */ jsx306(
2000
2136
  "button",
2001
2137
  {
2002
2138
  className: clsx_default("card-tab-trigger", isActive && "active"),
@@ -2008,7 +2144,7 @@ var CardTabRoot = (props) => {
2008
2144
  tab.value
2009
2145
  );
2010
2146
  }) }),
2011
- /* @__PURE__ */ jsx304("div", { className: "card-tab-body", children: activePanel })
2147
+ /* @__PURE__ */ jsx306("div", { className: "card-tab-body", children: activePanel })
2012
2148
  ] });
2013
2149
  };
2014
2150
  CardTabRoot.displayName = "CardTab";
@@ -2018,8 +2154,8 @@ var CardTab = Object.assign(CardTabRoot, {
2018
2154
  var CardTab_default = CardTab;
2019
2155
 
2020
2156
  // src/components/Chart/Chart.tsx
2021
- import React5 from "react";
2022
- import { Fragment as Fragment2, jsx as jsx305, jsxs as jsxs196 } from "react/jsx-runtime";
2157
+ import React7 from "react";
2158
+ import { Fragment as Fragment2, jsx as jsx307, jsxs as jsxs197 } from "react/jsx-runtime";
2023
2159
  var CATEGORICAL_COUNT2 = 8;
2024
2160
  var LINE_BAR_PALETTES = Array.from({ length: CATEGORICAL_COUNT2 }, (_, i) => {
2025
2161
  const n = i + 1;
@@ -2065,11 +2201,11 @@ var toSmoothPath = (points) => {
2065
2201
  };
2066
2202
  var RESIZE_SETTLE_MS = 150;
2067
2203
  var useChartSize = (ref) => {
2068
- const [size, setSize] = React5.useState({ width: 0, height: 0 });
2069
- const settleTimer = React5.useRef(0);
2070
- const committedSize = React5.useRef({ width: 0, height: 0 });
2071
- const initialRef = React5.useRef(true);
2072
- React5.useEffect(() => {
2204
+ const [size, setSize] = React7.useState({ width: 0, height: 0 });
2205
+ const settleTimer = React7.useRef(0);
2206
+ const committedSize = React7.useRef({ width: 0, height: 0 });
2207
+ const initialRef = React7.useRef(true);
2208
+ React7.useEffect(() => {
2073
2209
  const el = ref.current;
2074
2210
  if (!el) return;
2075
2211
  const observer = new ResizeObserver((entries) => {
@@ -2111,10 +2247,10 @@ var useChartSize = (ref) => {
2111
2247
  };
2112
2248
  var prefersReducedMotion = () => typeof window !== "undefined" && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
2113
2249
  var useChartAnimation = (containerRef, dataKey) => {
2114
- const [animate, setAnimate] = React5.useState(false);
2115
- const prevDataKey = React5.useRef(dataKey);
2116
- const hasAnimated = React5.useRef(false);
2117
- React5.useEffect(() => {
2250
+ const [animate, setAnimate] = React7.useState(false);
2251
+ const prevDataKey = React7.useRef(dataKey);
2252
+ const hasAnimated = React7.useRef(false);
2253
+ React7.useEffect(() => {
2118
2254
  if (prefersReducedMotion()) return;
2119
2255
  const el = containerRef.current;
2120
2256
  if (!el) return;
@@ -2130,7 +2266,7 @@ var useChartAnimation = (containerRef, dataKey) => {
2130
2266
  observer.observe(el);
2131
2267
  return () => observer.disconnect();
2132
2268
  }, [containerRef]);
2133
- React5.useEffect(() => {
2269
+ React7.useEffect(() => {
2134
2270
  if (dataKey !== prevDataKey.current) {
2135
2271
  prevDataKey.current = dataKey;
2136
2272
  if (prefersReducedMotion()) return;
@@ -2141,15 +2277,15 @@ var useChartAnimation = (containerRef, dataKey) => {
2141
2277
  return animate || prefersReducedMotion();
2142
2278
  };
2143
2279
  var useChartTooltip = (enabled) => {
2144
- const [tooltip, setTooltip] = React5.useState({
2280
+ const [tooltip, setTooltip] = React7.useState({
2145
2281
  visible: false,
2146
2282
  x: 0,
2147
2283
  y: 0,
2148
2284
  content: ""
2149
2285
  });
2150
- const containerRef = React5.useRef(null);
2151
- const rafRef = React5.useRef(0);
2152
- const move = React5.useCallback((e) => {
2286
+ const containerRef = React7.useRef(null);
2287
+ const rafRef = React7.useRef(0);
2288
+ const move = React7.useCallback((e) => {
2153
2289
  if (!enabled) return;
2154
2290
  const clientX = e.clientX;
2155
2291
  const clientY = e.clientY;
@@ -2164,7 +2300,7 @@ var useChartTooltip = (enabled) => {
2164
2300
  }));
2165
2301
  });
2166
2302
  }, [enabled]);
2167
- const show = React5.useCallback((e, content) => {
2303
+ const show = React7.useCallback((e, content) => {
2168
2304
  if (!enabled) return;
2169
2305
  const rect = containerRef.current?.getBoundingClientRect();
2170
2306
  if (!rect) return;
@@ -2175,18 +2311,18 @@ var useChartTooltip = (enabled) => {
2175
2311
  content
2176
2312
  });
2177
2313
  }, [enabled]);
2178
- const hide = React5.useCallback(() => {
2314
+ const hide = React7.useCallback(() => {
2179
2315
  cancelAnimationFrame(rafRef.current);
2180
2316
  setTooltip((prev) => ({ ...prev, visible: false }));
2181
2317
  }, []);
2182
2318
  return { tooltip, show, hide, move, containerRef };
2183
2319
  };
2184
- var GridLines = React5.memo(({ width, height, chartH, maxVal }) => /* @__PURE__ */ jsx305(Fragment2, { children: [0, 0.25, 0.5, 0.75, 1].map((ratio) => {
2320
+ var GridLines = React7.memo(({ width, height, chartH, maxVal }) => /* @__PURE__ */ jsx307(Fragment2, { children: [0, 0.25, 0.5, 0.75, 1].map((ratio) => {
2185
2321
  const y = PADDING.top + (1 - ratio) * chartH;
2186
2322
  const val = Math.round(maxVal * ratio);
2187
- return /* @__PURE__ */ jsxs196("g", { children: [
2188
- /* @__PURE__ */ jsx305("line", { x1: PADDING.left, y1: y, x2: width - PADDING.right, y2: y, className: "chart-grid" }),
2189
- /* @__PURE__ */ jsx305("text", { x: PADDING.left - 8, y: y + 4, className: "chart-axis-label", textAnchor: "end", children: val })
2323
+ return /* @__PURE__ */ jsxs197("g", { children: [
2324
+ /* @__PURE__ */ jsx307("line", { x1: PADDING.left, y1: y, x2: width - PADDING.right, y2: y, className: "chart-grid" }),
2325
+ /* @__PURE__ */ jsx307("text", { x: PADDING.left - 8, y: y + 4, className: "chart-axis-label", textAnchor: "end", children: val })
2190
2326
  ] }, ratio);
2191
2327
  }) }));
2192
2328
  GridLines.displayName = "GridLines";
@@ -2196,25 +2332,25 @@ var getLabelStep = (count, chartW) => {
2196
2332
  if (count <= maxLabels) return 1;
2197
2333
  return Math.ceil(count / maxLabels);
2198
2334
  };
2199
- var AxisLabels = React5.memo(({ labels, count, chartW, height }) => {
2335
+ var AxisLabels = React7.memo(({ labels, count, chartW, height }) => {
2200
2336
  const step = getLabelStep(count, chartW);
2201
- return /* @__PURE__ */ jsx305(Fragment2, { children: labels.map((label, i) => {
2337
+ return /* @__PURE__ */ jsx307(Fragment2, { children: labels.map((label, i) => {
2202
2338
  if (i % step !== 0) return null;
2203
2339
  const x = PADDING.left + i / (count - 1 || 1) * chartW;
2204
- return /* @__PURE__ */ jsx305("text", { x, y: height - 8, className: "chart-axis-label", textAnchor: "middle", children: label }, i);
2340
+ return /* @__PURE__ */ jsx307("text", { x, y: height - 8, className: "chart-axis-label", textAnchor: "middle", children: label }, i);
2205
2341
  }) });
2206
2342
  });
2207
2343
  AxisLabels.displayName = "AxisLabels";
2208
- var LineChart = React5.memo(({ data, labels, width, height, animate, onHover, onMove, onLeave }) => {
2209
- const entries = React5.useMemo(() => Object.entries(data), [data]);
2210
- const maxVal = React5.useMemo(() => {
2344
+ var LineChart = React7.memo(({ data, labels, width, height, animate, onHover, onMove, onLeave }) => {
2345
+ const entries = React7.useMemo(() => Object.entries(data), [data]);
2346
+ const maxVal = React7.useMemo(() => {
2211
2347
  const allValues = entries.flatMap(([, v]) => v);
2212
2348
  return Math.max(...allValues) * 1.2 || 1;
2213
2349
  }, [entries]);
2214
2350
  const count = labels.length;
2215
2351
  const chartW = width - PADDING.left - PADDING.right;
2216
2352
  const chartH = height - PADDING.top - PADDING.bottom;
2217
- const seriesPoints = React5.useMemo(
2353
+ const seriesPoints = React7.useMemo(
2218
2354
  () => entries.map(
2219
2355
  ([, values]) => values.map((v, i) => ({
2220
2356
  x: PADDING.left + i / (count - 1 || 1) * chartW,
@@ -2225,8 +2361,8 @@ var LineChart = React5.memo(({ data, labels, width, height, animate, onHover, on
2225
2361
  [entries, count, chartW, chartH, maxVal]
2226
2362
  );
2227
2363
  const showPoints = count <= 100;
2228
- const lineRefs = React5.useRef([]);
2229
- React5.useEffect(() => {
2364
+ const lineRefs = React7.useRef([]);
2365
+ React7.useEffect(() => {
2230
2366
  if (!animate) return;
2231
2367
  lineRefs.current.forEach((el) => {
2232
2368
  if (!el) return;
@@ -2239,9 +2375,9 @@ var LineChart = React5.memo(({ data, labels, width, height, animate, onHover, on
2239
2375
  });
2240
2376
  });
2241
2377
  }, [animate, seriesPoints]);
2242
- return /* @__PURE__ */ jsxs196("svg", { viewBox: `0 0 ${width} ${height}`, className: "chart-svg", children: [
2243
- /* @__PURE__ */ jsx305(GridLines, { width, height, chartH, maxVal }),
2244
- /* @__PURE__ */ jsx305(AxisLabels, { labels, count, chartW, height }),
2378
+ return /* @__PURE__ */ jsxs197("svg", { viewBox: `0 0 ${width} ${height}`, className: "chart-svg", children: [
2379
+ /* @__PURE__ */ jsx307(GridLines, { width, height, chartH, maxVal }),
2380
+ /* @__PURE__ */ jsx307(AxisLabels, { labels, count, chartW, height }),
2245
2381
  entries.map(([key], di) => {
2246
2382
  const palette = getPalette(LINE_BAR_PALETTES, di, key);
2247
2383
  const color = palette[2];
@@ -2250,12 +2386,12 @@ var LineChart = React5.memo(({ data, labels, width, height, animate, onHover, on
2250
2386
  const gradientId = `line-gradient-${di}`;
2251
2387
  const polyPoints = points.map((p) => `${p.x},${p.y}`).join(" ");
2252
2388
  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`;
2253
- return /* @__PURE__ */ jsxs196("g", { children: [
2254
- /* @__PURE__ */ jsx305("defs", { children: /* @__PURE__ */ jsxs196("linearGradient", { id: gradientId, x1: "0", y1: "0", x2: "0", y2: "1", children: [
2255
- /* @__PURE__ */ jsx305("stop", { offset: "0%", stopColor: areaColor, stopOpacity: "0.2" }),
2256
- /* @__PURE__ */ jsx305("stop", { offset: "100%", stopColor: areaColor, stopOpacity: "0" })
2389
+ return /* @__PURE__ */ jsxs197("g", { children: [
2390
+ /* @__PURE__ */ jsx307("defs", { children: /* @__PURE__ */ jsxs197("linearGradient", { id: gradientId, x1: "0", y1: "0", x2: "0", y2: "1", children: [
2391
+ /* @__PURE__ */ jsx307("stop", { offset: "0%", stopColor: areaColor, stopOpacity: "0.2" }),
2392
+ /* @__PURE__ */ jsx307("stop", { offset: "100%", stopColor: areaColor, stopOpacity: "0" })
2257
2393
  ] }) }),
2258
- /* @__PURE__ */ jsx305(
2394
+ /* @__PURE__ */ jsx307(
2259
2395
  "path",
2260
2396
  {
2261
2397
  d: areaD,
@@ -2264,7 +2400,7 @@ var LineChart = React5.memo(({ data, labels, width, height, animate, onHover, on
2264
2400
  style: animate ? { animationDelay: "600ms" } : { opacity: 1 }
2265
2401
  }
2266
2402
  ),
2267
- /* @__PURE__ */ jsx305(
2403
+ /* @__PURE__ */ jsx307(
2268
2404
  "polyline",
2269
2405
  {
2270
2406
  ref: (el) => {
@@ -2276,7 +2412,7 @@ var LineChart = React5.memo(({ data, labels, width, height, animate, onHover, on
2276
2412
  strokeWidth: "2"
2277
2413
  }
2278
2414
  ),
2279
- showPoints && points.map((p, i) => /* @__PURE__ */ jsx305(
2415
+ showPoints && points.map((p, i) => /* @__PURE__ */ jsx307(
2280
2416
  "circle",
2281
2417
  {
2282
2418
  cx: p.x,
@@ -2295,16 +2431,16 @@ var LineChart = React5.memo(({ data, labels, width, height, animate, onHover, on
2295
2431
  ] });
2296
2432
  });
2297
2433
  LineChart.displayName = "LineChart";
2298
- var CurveChart = React5.memo(({ data, labels, width, height, animate, onHover, onMove, onLeave }) => {
2299
- const entries = React5.useMemo(() => Object.entries(data), [data]);
2300
- const maxVal = React5.useMemo(() => {
2434
+ var CurveChart = React7.memo(({ data, labels, width, height, animate, onHover, onMove, onLeave }) => {
2435
+ const entries = React7.useMemo(() => Object.entries(data), [data]);
2436
+ const maxVal = React7.useMemo(() => {
2301
2437
  const allValues = entries.flatMap(([, v]) => v);
2302
2438
  return Math.max(...allValues) * 1.2 || 1;
2303
2439
  }, [entries]);
2304
2440
  const count = labels.length;
2305
2441
  const chartW = width - PADDING.left - PADDING.right;
2306
2442
  const chartH = height - PADDING.top - PADDING.bottom;
2307
- const seriesPoints = React5.useMemo(
2443
+ const seriesPoints = React7.useMemo(
2308
2444
  () => entries.map(
2309
2445
  ([, values]) => values.map((v, i) => ({
2310
2446
  x: PADDING.left + i / (count - 1 || 1) * chartW,
@@ -2315,8 +2451,8 @@ var CurveChart = React5.memo(({ data, labels, width, height, animate, onHover, o
2315
2451
  [entries, count, chartW, chartH, maxVal]
2316
2452
  );
2317
2453
  const showPoints = count <= 100;
2318
- const lineRefs = React5.useRef([]);
2319
- React5.useEffect(() => {
2454
+ const lineRefs = React7.useRef([]);
2455
+ React7.useEffect(() => {
2320
2456
  if (!animate) return;
2321
2457
  lineRefs.current.forEach((el) => {
2322
2458
  if (!el) return;
@@ -2329,9 +2465,9 @@ var CurveChart = React5.memo(({ data, labels, width, height, animate, onHover, o
2329
2465
  });
2330
2466
  });
2331
2467
  }, [animate, seriesPoints]);
2332
- return /* @__PURE__ */ jsxs196("svg", { viewBox: `0 0 ${width} ${height}`, className: "chart-svg", children: [
2333
- /* @__PURE__ */ jsx305(GridLines, { width, height, chartH, maxVal }),
2334
- /* @__PURE__ */ jsx305(AxisLabels, { labels, count, chartW, height }),
2468
+ return /* @__PURE__ */ jsxs197("svg", { viewBox: `0 0 ${width} ${height}`, className: "chart-svg", children: [
2469
+ /* @__PURE__ */ jsx307(GridLines, { width, height, chartH, maxVal }),
2470
+ /* @__PURE__ */ jsx307(AxisLabels, { labels, count, chartW, height }),
2335
2471
  entries.map(([key], di) => {
2336
2472
  const palette = getPalette(LINE_BAR_PALETTES, di, key);
2337
2473
  const color = palette[2];
@@ -2340,12 +2476,12 @@ var CurveChart = React5.memo(({ data, labels, width, height, animate, onHover, o
2340
2476
  const gradientId = `curve-gradient-${di}`;
2341
2477
  const linePath = toSmoothPath(points);
2342
2478
  const areaPath = linePath + ` L ${points[points.length - 1].x} ${PADDING.top + chartH} L ${points[0].x} ${PADDING.top + chartH} Z`;
2343
- return /* @__PURE__ */ jsxs196("g", { children: [
2344
- /* @__PURE__ */ jsx305("defs", { children: /* @__PURE__ */ jsxs196("linearGradient", { id: gradientId, x1: "0", y1: "0", x2: "0", y2: "1", children: [
2345
- /* @__PURE__ */ jsx305("stop", { offset: "0%", stopColor: areaColor, stopOpacity: "0.4" }),
2346
- /* @__PURE__ */ jsx305("stop", { offset: "100%", stopColor: areaColor, stopOpacity: "0.02" })
2479
+ return /* @__PURE__ */ jsxs197("g", { children: [
2480
+ /* @__PURE__ */ jsx307("defs", { children: /* @__PURE__ */ jsxs197("linearGradient", { id: gradientId, x1: "0", y1: "0", x2: "0", y2: "1", children: [
2481
+ /* @__PURE__ */ jsx307("stop", { offset: "0%", stopColor: areaColor, stopOpacity: "0.4" }),
2482
+ /* @__PURE__ */ jsx307("stop", { offset: "100%", stopColor: areaColor, stopOpacity: "0.02" })
2347
2483
  ] }) }),
2348
- /* @__PURE__ */ jsx305(
2484
+ /* @__PURE__ */ jsx307(
2349
2485
  "path",
2350
2486
  {
2351
2487
  d: areaPath,
@@ -2354,7 +2490,7 @@ var CurveChart = React5.memo(({ data, labels, width, height, animate, onHover, o
2354
2490
  style: animate ? { animationDelay: "600ms" } : { opacity: 1 }
2355
2491
  }
2356
2492
  ),
2357
- /* @__PURE__ */ jsx305(
2493
+ /* @__PURE__ */ jsx307(
2358
2494
  "path",
2359
2495
  {
2360
2496
  ref: (el) => {
@@ -2366,7 +2502,7 @@ var CurveChart = React5.memo(({ data, labels, width, height, animate, onHover, o
2366
2502
  strokeWidth: "2"
2367
2503
  }
2368
2504
  ),
2369
- showPoints && points.map((p, i) => /* @__PURE__ */ jsx305(
2505
+ showPoints && points.map((p, i) => /* @__PURE__ */ jsx307(
2370
2506
  "circle",
2371
2507
  {
2372
2508
  cx: p.x,
@@ -2385,9 +2521,9 @@ var CurveChart = React5.memo(({ data, labels, width, height, animate, onHover, o
2385
2521
  ] });
2386
2522
  });
2387
2523
  CurveChart.displayName = "CurveChart";
2388
- var BarChart = React5.memo(({ data, labels, width, height, animate, onHover, onMove, onLeave }) => {
2389
- const entries = React5.useMemo(() => Object.entries(data), [data]);
2390
- const maxVal = React5.useMemo(() => {
2524
+ var BarChart = React7.memo(({ data, labels, width, height, animate, onHover, onMove, onLeave }) => {
2525
+ const entries = React7.useMemo(() => Object.entries(data), [data]);
2526
+ const maxVal = React7.useMemo(() => {
2391
2527
  const allValues = entries.flatMap(([, v]) => v);
2392
2528
  return Math.max(...allValues) * 1.2 || 1;
2393
2529
  }, [entries]);
@@ -2399,7 +2535,7 @@ var BarChart = React5.memo(({ data, labels, width, height, animate, onHover, onM
2399
2535
  const barGap = groupCount > 1 ? 2 : 0;
2400
2536
  const barW = Math.max(1, Math.min(32, (groupW * 0.7 - barGap * (groupCount - 1)) / groupCount));
2401
2537
  const baseline = PADDING.top + chartH;
2402
- const bars = React5.useMemo(
2538
+ const bars = React7.useMemo(
2403
2539
  () => entries.map(
2404
2540
  ([, values], di) => values.map((v, i) => {
2405
2541
  const totalBarsW = barW * groupCount + barGap * (groupCount - 1);
@@ -2412,11 +2548,11 @@ var BarChart = React5.memo(({ data, labels, width, height, animate, onHover, onM
2412
2548
  [entries, maxVal, chartH, groupW, barW, barGap, groupCount]
2413
2549
  );
2414
2550
  const barLabelStep = getLabelStep(count, chartW);
2415
- return /* @__PURE__ */ jsxs196("svg", { viewBox: `0 0 ${width} ${height}`, className: "chart-svg", children: [
2416
- /* @__PURE__ */ jsx305(GridLines, { width, height, chartH, maxVal }),
2551
+ return /* @__PURE__ */ jsxs197("svg", { viewBox: `0 0 ${width} ${height}`, className: "chart-svg", children: [
2552
+ /* @__PURE__ */ jsx307(GridLines, { width, height, chartH, maxVal }),
2417
2553
  labels.map((label, i) => {
2418
2554
  if (i % barLabelStep !== 0) return null;
2419
- return /* @__PURE__ */ jsx305("text", { x: PADDING.left + groupW * i + groupW / 2, y: height - 8, className: "chart-axis-label", textAnchor: "middle", children: label }, i);
2555
+ return /* @__PURE__ */ jsx307("text", { x: PADDING.left + groupW * i + groupW / 2, y: height - 8, className: "chart-axis-label", textAnchor: "middle", children: label }, i);
2420
2556
  }),
2421
2557
  entries.map(([key], di) => {
2422
2558
  const palette = getPalette(LINE_BAR_PALETTES, di, key);
@@ -2425,7 +2561,7 @@ var BarChart = React5.memo(({ data, labels, width, height, animate, onHover, onM
2425
2561
  const r2 = Math.min(4, b.w / 2);
2426
2562
  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`;
2427
2563
  const delay = 100 + i * 80;
2428
- return /* @__PURE__ */ jsx305(
2564
+ return /* @__PURE__ */ jsx307(
2429
2565
  "path",
2430
2566
  {
2431
2567
  d,
@@ -2446,11 +2582,11 @@ var BarChart = React5.memo(({ data, labels, width, height, animate, onHover, onM
2446
2582
  ] });
2447
2583
  });
2448
2584
  BarChart.displayName = "BarChart";
2449
- var PieDonutChart = React5.memo(
2585
+ var PieDonutChart = React7.memo(
2450
2586
  ({ data, labels, width, height, animate, isDoughnut, onHover, onMove, onLeave }) => {
2451
- const entries = React5.useMemo(() => Object.entries(data), [data]);
2452
- const values = React5.useMemo(() => entries.flatMap(([, v]) => v), [entries]);
2453
- const total = React5.useMemo(() => values.reduce((a, b) => a + b, 0) || 1, [values]);
2587
+ const entries = React7.useMemo(() => Object.entries(data), [data]);
2588
+ const values = React7.useMemo(() => entries.flatMap(([, v]) => v), [entries]);
2589
+ const total = React7.useMemo(() => values.reduce((a, b) => a + b, 0) || 1, [values]);
2454
2590
  const size = Math.min(width, height);
2455
2591
  const cx = size / 2;
2456
2592
  const cy = size / 2;
@@ -2458,10 +2594,10 @@ var PieDonutChart = React5.memo(
2458
2594
  const innerR = isDoughnut ? r2 * 0.5 : 0;
2459
2595
  const firstKey = entries[0]?.[0] ?? "";
2460
2596
  const colorOffset = hashString(firstKey);
2461
- const maskRef = React5.useRef(null);
2597
+ const maskRef = React7.useRef(null);
2462
2598
  const maskR = r2 + 10;
2463
2599
  const maskCircumference = 2 * Math.PI * maskR;
2464
- React5.useEffect(() => {
2600
+ React7.useEffect(() => {
2465
2601
  if (!animate || !maskRef.current) return;
2466
2602
  const el = maskRef.current;
2467
2603
  el.style.strokeDasharray = `${maskCircumference}`;
@@ -2471,7 +2607,7 @@ var PieDonutChart = React5.memo(
2471
2607
  el.style.strokeDashoffset = "0";
2472
2608
  });
2473
2609
  }, [animate, maskCircumference]);
2474
- const sliceData = React5.useMemo(() => {
2610
+ const sliceData = React7.useMemo(() => {
2475
2611
  let angle0 = -Math.PI / 2;
2476
2612
  let cumulativeAngle = 0;
2477
2613
  return values.map((v, i) => {
@@ -2505,8 +2641,8 @@ var PieDonutChart = React5.memo(
2505
2641
  });
2506
2642
  }, [values, total, cx, cy, r2, innerR, labels]);
2507
2643
  const maskId = `pie-mask-${isDoughnut ? "d" : "p"}`;
2508
- return /* @__PURE__ */ jsxs196("svg", { viewBox: `0 0 ${size} ${size}`, className: "chart-svg chart-pie", children: [
2509
- animate && /* @__PURE__ */ jsx305("defs", { children: /* @__PURE__ */ jsx305("mask", { id: maskId, children: /* @__PURE__ */ jsx305(
2644
+ return /* @__PURE__ */ jsxs197("svg", { viewBox: `0 0 ${size} ${size}`, className: "chart-svg chart-pie", children: [
2645
+ animate && /* @__PURE__ */ jsx307("defs", { children: /* @__PURE__ */ jsx307("mask", { id: maskId, children: /* @__PURE__ */ jsx307(
2510
2646
  "circle",
2511
2647
  {
2512
2648
  ref: maskRef,
@@ -2519,7 +2655,7 @@ var PieDonutChart = React5.memo(
2519
2655
  transform: `rotate(-90 ${cx} ${cy})`
2520
2656
  }
2521
2657
  ) }) }),
2522
- /* @__PURE__ */ jsx305("g", { mask: animate ? `url(#${maskId})` : void 0, children: sliceData.map((s, i) => /* @__PURE__ */ jsx305("g", { children: /* @__PURE__ */ jsx305(
2658
+ /* @__PURE__ */ jsx307("g", { mask: animate ? `url(#${maskId})` : void 0, children: sliceData.map((s, i) => /* @__PURE__ */ jsx307("g", { children: /* @__PURE__ */ jsx307(
2523
2659
  "path",
2524
2660
  {
2525
2661
  d: s.d,
@@ -2530,7 +2666,7 @@ var PieDonutChart = React5.memo(
2530
2666
  onMouseLeave: onLeave
2531
2667
  }
2532
2668
  ) }, i)) }),
2533
- sliceData.map((s, i) => s.angle > 0.2 && /* @__PURE__ */ jsx305(
2669
+ sliceData.map((s, i) => s.angle > 0.2 && /* @__PURE__ */ jsx307(
2534
2670
  "text",
2535
2671
  {
2536
2672
  x: s.lx,
@@ -2548,9 +2684,9 @@ var PieDonutChart = React5.memo(
2548
2684
  );
2549
2685
  PieDonutChart.displayName = "PieDonutChart";
2550
2686
  var TooltipBubble = ({ x, y, containerWidth, children }) => {
2551
- const ref = React5.useRef(null);
2552
- const [adjustedX, setAdjustedX] = React5.useState(x);
2553
- React5.useEffect(() => {
2687
+ const ref = React7.useRef(null);
2688
+ const [adjustedX, setAdjustedX] = React7.useState(x);
2689
+ React7.useEffect(() => {
2554
2690
  const el = ref.current;
2555
2691
  if (!el) return;
2556
2692
  const w = el.offsetWidth;
@@ -2561,7 +2697,7 @@ var TooltipBubble = ({ x, y, containerWidth, children }) => {
2561
2697
  else if (x + half > containerWidth - margin) nx = containerWidth - half - margin;
2562
2698
  setAdjustedX(nx);
2563
2699
  }, [x, containerWidth]);
2564
- return /* @__PURE__ */ jsx305(
2700
+ return /* @__PURE__ */ jsx307(
2565
2701
  "div",
2566
2702
  {
2567
2703
  ref,
@@ -2571,22 +2707,22 @@ var TooltipBubble = ({ x, y, containerWidth, children }) => {
2571
2707
  }
2572
2708
  );
2573
2709
  };
2574
- var Chart = React5.memo((props) => {
2710
+ var Chart = React7.memo((props) => {
2575
2711
  const { type, data, labels, tooltip: showTooltip = true } = props;
2576
2712
  const { tooltip, show, hide, move, containerRef } = useChartTooltip(showTooltip);
2577
2713
  const { width, height } = useChartSize(containerRef);
2578
- const stableData = React5.useMemo(() => data, [JSON.stringify(data)]);
2579
- const stableLabels = React5.useMemo(() => labels, [JSON.stringify(labels)]);
2580
- const dataKey = React5.useMemo(() => JSON.stringify(labels), [labels]);
2714
+ const stableData = React7.useMemo(() => data, [JSON.stringify(data)]);
2715
+ const stableLabels = React7.useMemo(() => labels, [JSON.stringify(labels)]);
2716
+ const dataKey = React7.useMemo(() => JSON.stringify(labels), [labels]);
2581
2717
  const animate = useChartAnimation(containerRef, dataKey);
2582
2718
  const ready = width > 0 && height > 0;
2583
- return /* @__PURE__ */ jsxs196("div", { className: "lib-xplat-chart", ref: containerRef, children: [
2584
- ready && type === "line" && /* @__PURE__ */ jsx305(LineChart, { data: stableData, labels: stableLabels, width, height, animate, onHover: show, onMove: move, onLeave: hide }),
2585
- ready && type === "curve" && /* @__PURE__ */ jsx305(CurveChart, { data: stableData, labels: stableLabels, width, height, animate, onHover: show, onMove: move, onLeave: hide }),
2586
- ready && type === "bar" && /* @__PURE__ */ jsx305(BarChart, { data: stableData, labels: stableLabels, width, height, animate, onHover: show, onMove: move, onLeave: hide }),
2587
- ready && type === "pie" && /* @__PURE__ */ jsx305(PieDonutChart, { data: stableData, labels: stableLabels, width, height, animate, onHover: show, onMove: move, onLeave: hide }),
2588
- ready && type === "doughnut" && /* @__PURE__ */ jsx305(PieDonutChart, { data: stableData, labels: stableLabels, width, height, animate, isDoughnut: true, onHover: show, onMove: move, onLeave: hide }),
2589
- tooltip.visible && /* @__PURE__ */ jsx305(TooltipBubble, { x: tooltip.x, y: tooltip.y, containerWidth: width, children: tooltip.content })
2719
+ return /* @__PURE__ */ jsxs197("div", { className: "lib-xplat-chart", ref: containerRef, children: [
2720
+ ready && type === "line" && /* @__PURE__ */ jsx307(LineChart, { data: stableData, labels: stableLabels, width, height, animate, onHover: show, onMove: move, onLeave: hide }),
2721
+ ready && type === "curve" && /* @__PURE__ */ jsx307(CurveChart, { data: stableData, labels: stableLabels, width, height, animate, onHover: show, onMove: move, onLeave: hide }),
2722
+ ready && type === "bar" && /* @__PURE__ */ jsx307(BarChart, { data: stableData, labels: stableLabels, width, height, animate, onHover: show, onMove: move, onLeave: hide }),
2723
+ ready && type === "pie" && /* @__PURE__ */ jsx307(PieDonutChart, { data: stableData, labels: stableLabels, width, height, animate, onHover: show, onMove: move, onLeave: hide }),
2724
+ ready && type === "doughnut" && /* @__PURE__ */ jsx307(PieDonutChart, { data: stableData, labels: stableLabels, width, height, animate, isDoughnut: true, onHover: show, onMove: move, onLeave: hide }),
2725
+ tooltip.visible && /* @__PURE__ */ jsx307(TooltipBubble, { x: tooltip.x, y: tooltip.y, containerWidth: width, children: tooltip.content })
2590
2726
  ] });
2591
2727
  });
2592
2728
  Chart.displayName = "Chart";
@@ -2599,7 +2735,7 @@ import { primitive, semantic } from "@x-plat/tokens-core";
2599
2735
  import { cssVar } from "@x-plat/tokens-core";
2600
2736
 
2601
2737
  // src/components/CheckBox/CheckBox.tsx
2602
- import { jsx as jsx306, jsxs as jsxs197 } from "react/jsx-runtime";
2738
+ import { jsx as jsx308, jsxs as jsxs198 } from "react/jsx-runtime";
2603
2739
  var CheckBox = (props) => {
2604
2740
  const {
2605
2741
  checked,
@@ -2617,8 +2753,8 @@ var CheckBox = (props) => {
2617
2753
  const checkedClasses = `checked`;
2618
2754
  const disabledClasses = "disabled";
2619
2755
  const boxClasses = disabled ? disabledClasses : checked ? checkedClasses : uncheckedClasses;
2620
- return /* @__PURE__ */ jsxs197("label", { className: clsx_default("lib-xplat-checkbox", size, type), children: [
2621
- /* @__PURE__ */ jsx306(
2756
+ return /* @__PURE__ */ jsxs198("label", { className: clsx_default("lib-xplat-checkbox", size, type), children: [
2757
+ /* @__PURE__ */ jsx308(
2622
2758
  "input",
2623
2759
  {
2624
2760
  type: "checkbox",
@@ -2628,44 +2764,44 @@ var CheckBox = (props) => {
2628
2764
  ...rest
2629
2765
  }
2630
2766
  ),
2631
- /* @__PURE__ */ jsx306("span", { className: clsx_default("checkbox", boxClasses), children: /* @__PURE__ */ jsx306("span", { className: clsx_default("check-icon", { visible: checked }), children: /* @__PURE__ */ jsx306(CheckIcon_default, {}) }) }),
2632
- label && /* @__PURE__ */ jsx306("span", { className: "label", children: label })
2767
+ /* @__PURE__ */ jsx308("span", { className: clsx_default("checkbox", boxClasses), children: /* @__PURE__ */ jsx308("span", { className: clsx_default("check-icon", { visible: checked }), children: /* @__PURE__ */ jsx308(CheckIcon_default, {}) }) }),
2768
+ label && /* @__PURE__ */ jsx308("span", { className: "label", children: label })
2633
2769
  ] });
2634
2770
  };
2635
2771
  CheckBox.displayName = "CheckBox";
2636
2772
  var CheckBox_default = CheckBox;
2637
2773
 
2638
2774
  // src/components/Chip/Chip.tsx
2639
- import { jsx as jsx307 } from "react/jsx-runtime";
2775
+ import { jsx as jsx309 } from "react/jsx-runtime";
2640
2776
  var Chip = (props) => {
2641
2777
  const {
2642
2778
  children,
2643
2779
  type = "primary",
2644
2780
  size = "md"
2645
2781
  } = props;
2646
- return /* @__PURE__ */ jsx307("div", { className: clsx_default("lib-xplat-chip", type, size), children });
2782
+ return /* @__PURE__ */ jsx309("div", { className: clsx_default("lib-xplat-chip", type, size), children });
2647
2783
  };
2648
2784
  Chip.displayName = "Chip";
2649
2785
  var Chip_default = Chip;
2650
2786
 
2651
2787
  // src/components/DatePicker/InputDatePicker/index.tsx
2652
- import React11 from "react";
2788
+ import React13 from "react";
2653
2789
 
2654
2790
  // src/components/Input/Input.tsx
2655
- import React6 from "react";
2791
+ import React8 from "react";
2656
2792
 
2657
2793
  // src/components/Input/InputValidations.tsx
2658
- import { jsx as jsx308, jsxs as jsxs198 } from "react/jsx-runtime";
2794
+ import { jsx as jsx310, jsxs as jsxs199 } from "react/jsx-runtime";
2659
2795
  var InputValidations = (props) => {
2660
2796
  const { message, status = "default" } = props;
2661
- return /* @__PURE__ */ jsxs198("div", { className: clsx_default("lib-xplat-input-validation", status), children: [
2662
- /* @__PURE__ */ jsxs198("div", { className: "icon", children: [
2663
- status === "default" && /* @__PURE__ */ jsx308(InfoIcon_default, {}),
2664
- status === "success" && /* @__PURE__ */ jsx308(SuccessIcon_default, {}),
2665
- status === "warning" && /* @__PURE__ */ jsx308(InfoIcon_default, {}),
2666
- status === "error" && /* @__PURE__ */ jsx308(ErrorIcon_default, {})
2797
+ return /* @__PURE__ */ jsxs199("div", { className: clsx_default("lib-xplat-input-validation", status), children: [
2798
+ /* @__PURE__ */ jsxs199("div", { className: "icon", children: [
2799
+ status === "default" && /* @__PURE__ */ jsx310(InfoIcon_default, {}),
2800
+ status === "success" && /* @__PURE__ */ jsx310(SuccessIcon_default, {}),
2801
+ status === "warning" && /* @__PURE__ */ jsx310(InfoIcon_default, {}),
2802
+ status === "error" && /* @__PURE__ */ jsx310(ErrorIcon_default, {})
2667
2803
  ] }),
2668
- /* @__PURE__ */ jsx308("div", { className: "message", children: message })
2804
+ /* @__PURE__ */ jsx310("div", { className: "message", children: message })
2669
2805
  ] });
2670
2806
  };
2671
2807
  InputValidations.displayName = "InputValidations";
@@ -2706,7 +2842,7 @@ var handleTelBackspace = (prevValue, currValue) => {
2706
2842
  };
2707
2843
 
2708
2844
  // src/components/Input/Input.tsx
2709
- import { jsx as jsx309, jsxs as jsxs199 } from "react/jsx-runtime";
2845
+ import { jsx as jsx311, jsxs as jsxs200 } from "react/jsx-runtime";
2710
2846
  import { createElement } from "react";
2711
2847
  var formatValue = (type, value) => {
2712
2848
  if (value === null || value === void 0) return "";
@@ -2755,7 +2891,7 @@ var parseValue = (type, value) => {
2755
2891
  return value;
2756
2892
  }
2757
2893
  };
2758
- var Input = React6.forwardRef((props, ref) => {
2894
+ var Input = React8.forwardRef((props, ref) => {
2759
2895
  const {
2760
2896
  value,
2761
2897
  onChange,
@@ -2781,13 +2917,13 @@ var Input = React6.forwardRef((props, ref) => {
2781
2917
  onChange(event);
2782
2918
  }
2783
2919
  };
2784
- return /* @__PURE__ */ jsxs199("div", { className: "lib-xplat-input-wrap", children: [
2785
- /* @__PURE__ */ jsxs199(
2920
+ return /* @__PURE__ */ jsxs200("div", { className: "lib-xplat-input-wrap", children: [
2921
+ /* @__PURE__ */ jsxs200(
2786
2922
  "div",
2787
2923
  {
2788
2924
  className: clsx_default("lib-xplat-input", size, disabled ? "disabled" : void 0),
2789
2925
  children: [
2790
- /* @__PURE__ */ jsx309(
2926
+ /* @__PURE__ */ jsx311(
2791
2927
  "input",
2792
2928
  {
2793
2929
  ...inputProps,
@@ -2798,11 +2934,11 @@ var Input = React6.forwardRef((props, ref) => {
2798
2934
  onChange: handleChange
2799
2935
  }
2800
2936
  ),
2801
- suffix && /* @__PURE__ */ jsx309("div", { className: "suffix", children: suffix })
2937
+ suffix && /* @__PURE__ */ jsx311("div", { className: "suffix", children: suffix })
2802
2938
  ]
2803
2939
  }
2804
2940
  ),
2805
- validations && /* @__PURE__ */ jsx309("div", { className: "lib-xplat-input-validation-wrap", children: validations?.map((validation, idx) => /* @__PURE__ */ createElement(
2941
+ validations && /* @__PURE__ */ jsx311("div", { className: "lib-xplat-input-validation-wrap", children: validations?.map((validation, idx) => /* @__PURE__ */ createElement(
2806
2942
  InputValidations_default,
2807
2943
  {
2808
2944
  ...validation,
@@ -2815,20 +2951,20 @@ Input.displayName = "Input";
2815
2951
  var Input_default = Input;
2816
2952
 
2817
2953
  // src/components/Input/PasswordInput/PasswordInput.tsx
2818
- import React7 from "react";
2819
- import { jsx as jsx310 } from "react/jsx-runtime";
2820
- var PasswordInput = React7.forwardRef(
2954
+ import React9 from "react";
2955
+ import { jsx as jsx312 } from "react/jsx-runtime";
2956
+ var PasswordInput = React9.forwardRef(
2821
2957
  (props, ref) => {
2822
2958
  const { reg: _reg, ...inputProps } = props;
2823
- const [isView, setIsView] = React7.useState(false);
2959
+ const [isView, setIsView] = React9.useState(false);
2824
2960
  const handleChangeView = () => {
2825
2961
  setIsView((prev) => !prev);
2826
2962
  };
2827
- return /* @__PURE__ */ jsx310(
2963
+ return /* @__PURE__ */ jsx312(
2828
2964
  Input_default,
2829
2965
  {
2830
2966
  ...inputProps,
2831
- suffix: /* @__PURE__ */ jsx310("div", { className: "wrapper pointer", onClick: handleChangeView, children: isView ? /* @__PURE__ */ jsx310(OpenEyeIcon_default, {}) : /* @__PURE__ */ jsx310(CloseEyeIcon_default, {}) }),
2967
+ suffix: /* @__PURE__ */ jsx312("div", { className: "wrapper pointer", onClick: handleChangeView, children: isView ? /* @__PURE__ */ jsx312(OpenEyeIcon_default, {}) : /* @__PURE__ */ jsx312(CloseEyeIcon_default, {}) }),
2832
2968
  type: isView ? "text" : "password",
2833
2969
  ref
2834
2970
  }
@@ -2839,17 +2975,17 @@ PasswordInput.displayName = "PasswordInput";
2839
2975
  var PasswordInput_default = PasswordInput;
2840
2976
 
2841
2977
  // src/components/Modal/Modal.tsx
2842
- import React9 from "react";
2978
+ import React11 from "react";
2843
2979
  import { createPortal } from "react-dom";
2844
2980
 
2845
2981
  // src/tokens/hooks/Portal.tsx
2846
- import React8 from "react";
2982
+ import React10 from "react";
2847
2983
  import ReactDOM from "react-dom";
2848
- import { jsx as jsx311 } from "react/jsx-runtime";
2849
- var PortalContainerContext = React8.createContext(null);
2850
- var PortalProvider = ({ container, children }) => /* @__PURE__ */ jsx311(PortalContainerContext.Provider, { value: container, children });
2984
+ import { jsx as jsx313 } from "react/jsx-runtime";
2985
+ var PortalContainerContext = React10.createContext(null);
2986
+ var PortalProvider = ({ container, children }) => /* @__PURE__ */ jsx313(PortalContainerContext.Provider, { value: container, children });
2851
2987
  var Portal = ({ children }) => {
2852
- const contextContainer = React8.useContext(PortalContainerContext);
2988
+ const contextContainer = React10.useContext(PortalContainerContext);
2853
2989
  if (typeof document === "undefined") return null;
2854
2990
  const container = contextContainer ?? document.body;
2855
2991
  return ReactDOM.createPortal(children, container);
@@ -2858,14 +2994,14 @@ Portal.displayName = "Portal";
2858
2994
  var Portal_default = Portal;
2859
2995
 
2860
2996
  // src/components/Modal/Modal.tsx
2861
- import { jsx as jsx312 } from "react/jsx-runtime";
2997
+ import { jsx as jsx314 } from "react/jsx-runtime";
2862
2998
  var ANIMATION_DURATION_MS = 200;
2863
2999
  var Modal = (props) => {
2864
3000
  const { isOpen, onClose, children } = props;
2865
- const [mounted, setMounted] = React9.useState(false);
2866
- const [visible, setVisible] = React9.useState(false);
2867
- const boxRef = React9.useRef(null);
2868
- React9.useEffect(() => {
3001
+ const [mounted, setMounted] = React11.useState(false);
3002
+ const [visible, setVisible] = React11.useState(false);
3003
+ const boxRef = React11.useRef(null);
3004
+ React11.useEffect(() => {
2869
3005
  if (isOpen) {
2870
3006
  setMounted(true);
2871
3007
  const t2 = setTimeout(() => setVisible(true), 1);
@@ -2879,12 +3015,12 @@ var Modal = (props) => {
2879
3015
  if (!mounted) return null;
2880
3016
  const stateClass = visible ? "enter" : "exit";
2881
3017
  return createPortal(
2882
- /* @__PURE__ */ jsx312(
3018
+ /* @__PURE__ */ jsx314(
2883
3019
  "div",
2884
3020
  {
2885
3021
  className: clsx_default("lib-xplat-modal", "dim", stateClass),
2886
3022
  onClick: onClose,
2887
- children: /* @__PURE__ */ jsx312(
3023
+ children: /* @__PURE__ */ jsx314(
2888
3024
  "div",
2889
3025
  {
2890
3026
  ref: boxRef,
@@ -2892,7 +3028,7 @@ var Modal = (props) => {
2892
3028
  role: "dialog",
2893
3029
  "aria-modal": "true",
2894
3030
  onClick: (e) => e.stopPropagation(),
2895
- children: /* @__PURE__ */ jsx312(PortalProvider, { container: boxRef.current, children })
3031
+ children: /* @__PURE__ */ jsx314(PortalProvider, { container: boxRef.current, children })
2896
3032
  }
2897
3033
  )
2898
3034
  }
@@ -2904,9 +3040,9 @@ Modal.displayName = "Modal";
2904
3040
  var Modal_default = Modal;
2905
3041
 
2906
3042
  // src/components/DatePicker/SingleDatePicker/index.tsx
2907
- import React10 from "react";
2908
- import { Fragment as Fragment3, jsx as jsx313, jsxs as jsxs200 } from "react/jsx-runtime";
2909
- var DayCell2 = React10.memo(
3043
+ import React12 from "react";
3044
+ import { Fragment as Fragment3, jsx as jsx315, jsxs as jsxs201 } from "react/jsx-runtime";
3045
+ var DayCell2 = React12.memo(
2910
3046
  ({
2911
3047
  day,
2912
3048
  disabled,
@@ -2916,7 +3052,7 @@ var DayCell2 = React10.memo(
2916
3052
  isEnd,
2917
3053
  inRange,
2918
3054
  onSelect
2919
- }) => /* @__PURE__ */ jsx313(
3055
+ }) => /* @__PURE__ */ jsx315(
2920
3056
  "button",
2921
3057
  {
2922
3058
  type: "button",
@@ -2958,26 +3094,26 @@ var SingleDatePicker = (props) => {
2958
3094
  initialYear,
2959
3095
  initialMonth
2960
3096
  );
2961
- const [pickerMode, setPickerMode] = React10.useState("days");
2962
- const [yearRangeStart, setYearRangeStart] = React10.useState(
3097
+ const [pickerMode, setPickerMode] = React12.useState("days");
3098
+ const [yearRangeStart, setYearRangeStart] = React12.useState(
2963
3099
  Math.floor((initialYear ?? (/* @__PURE__ */ new Date()).getFullYear()) / 12) * 12
2964
3100
  );
2965
- const minTime = React10.useMemo(
3101
+ const minTime = React12.useMemo(
2966
3102
  () => minDate ? new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate()).getTime() : -Infinity,
2967
3103
  [minDate]
2968
3104
  );
2969
- const maxTime = React10.useMemo(
3105
+ const maxTime = React12.useMemo(
2970
3106
  () => maxDate ? new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate()).getTime() : Infinity,
2971
3107
  [maxDate]
2972
3108
  );
2973
- const highlightSet = React10.useMemo(() => {
3109
+ const highlightSet = React12.useMemo(() => {
2974
3110
  const set = /* @__PURE__ */ new Set();
2975
3111
  for (const h of highlightDates) {
2976
3112
  set.add(`${h.getFullYear()}-${h.getMonth()}-${h.getDate()}`);
2977
3113
  }
2978
3114
  return set;
2979
3115
  }, [highlightDates]);
2980
- const handleSelect = React10.useCallback(
3116
+ const handleSelect = React12.useCallback(
2981
3117
  (date) => {
2982
3118
  onChange?.(date);
2983
3119
  },
@@ -3014,20 +3150,20 @@ var SingleDatePicker = (props) => {
3014
3150
  const monthLabels = MONTH_LABELS[locale];
3015
3151
  const titleText = pickerMode === "days" ? locale === "ko" ? `${year}\uB144 ${monthLabels[month]}` : `${monthLabels[month]} ${year}` : pickerMode === "months" ? `${year}` : `${yearRangeStart} - ${yearRangeStart + 11}`;
3016
3152
  const hasRange = rangeStart != null && rangeEnd != null;
3017
- return /* @__PURE__ */ jsxs200(
3153
+ return /* @__PURE__ */ jsxs201(
3018
3154
  "div",
3019
3155
  {
3020
3156
  className: clsx_default("lib-xplat-datepicker", "single"),
3021
3157
  children: [
3022
- /* @__PURE__ */ jsxs200("div", { className: "datepicker-header", children: [
3023
- /* @__PURE__ */ jsx313("button", { className: "datepicker-nav", onClick: handlePrev, type: "button", children: /* @__PURE__ */ jsx313(ChevronLeftIcon_default, {}) }),
3024
- /* @__PURE__ */ jsx313("button", { className: "datepicker-title", onClick: handleTitleClick, type: "button", children: titleText }),
3025
- /* @__PURE__ */ jsx313("button", { className: "datepicker-nav", onClick: handleNext, type: "button", children: /* @__PURE__ */ jsx313(ChevronRightIcon_default, {}) })
3158
+ /* @__PURE__ */ jsxs201("div", { className: "datepicker-header", children: [
3159
+ /* @__PURE__ */ jsx315("button", { className: "datepicker-nav", onClick: handlePrev, type: "button", children: /* @__PURE__ */ jsx315(ChevronLeftIcon_default, {}) }),
3160
+ /* @__PURE__ */ jsx315("button", { className: "datepicker-title", onClick: handleTitleClick, type: "button", children: titleText }),
3161
+ /* @__PURE__ */ jsx315("button", { className: "datepicker-nav", onClick: handleNext, type: "button", children: /* @__PURE__ */ jsx315(ChevronRightIcon_default, {}) })
3026
3162
  ] }),
3027
- /* @__PURE__ */ jsxs200("div", { className: "datepicker-body", children: [
3028
- pickerMode === "years" && /* @__PURE__ */ jsx313("div", { className: "datepicker-picker-grid", children: Array.from({ length: 12 }, (_, i) => {
3163
+ /* @__PURE__ */ jsxs201("div", { className: "datepicker-body", children: [
3164
+ pickerMode === "years" && /* @__PURE__ */ jsx315("div", { className: "datepicker-picker-grid", children: Array.from({ length: 12 }, (_, i) => {
3029
3165
  const y = yearRangeStart + i;
3030
- return /* @__PURE__ */ jsx313(
3166
+ return /* @__PURE__ */ jsx315(
3031
3167
  "button",
3032
3168
  {
3033
3169
  type: "button",
@@ -3038,7 +3174,7 @@ var SingleDatePicker = (props) => {
3038
3174
  y
3039
3175
  );
3040
3176
  }) }),
3041
- pickerMode === "months" && /* @__PURE__ */ jsx313("div", { className: "datepicker-picker-grid", children: monthLabels.map((label, i) => /* @__PURE__ */ jsx313(
3177
+ pickerMode === "months" && /* @__PURE__ */ jsx315("div", { className: "datepicker-picker-grid", children: monthLabels.map((label, i) => /* @__PURE__ */ jsx315(
3042
3178
  "button",
3043
3179
  {
3044
3180
  type: "button",
@@ -3048,8 +3184,8 @@ var SingleDatePicker = (props) => {
3048
3184
  },
3049
3185
  i
3050
3186
  )) }),
3051
- pickerMode === "days" && /* @__PURE__ */ jsxs200(Fragment3, { children: [
3052
- /* @__PURE__ */ jsx313("div", { className: "datepicker-weekdays", children: weekdays.map((label, i) => /* @__PURE__ */ jsx313(
3187
+ pickerMode === "days" && /* @__PURE__ */ jsxs201(Fragment3, { children: [
3188
+ /* @__PURE__ */ jsx315("div", { className: "datepicker-weekdays", children: weekdays.map((label, i) => /* @__PURE__ */ jsx315(
3053
3189
  "div",
3054
3190
  {
3055
3191
  className: clsx_default(
@@ -3061,7 +3197,7 @@ var SingleDatePicker = (props) => {
3061
3197
  },
3062
3198
  label
3063
3199
  )) }),
3064
- /* @__PURE__ */ jsx313("div", { className: "datepicker-grid", children: days.map((day, idx) => {
3200
+ /* @__PURE__ */ jsx315("div", { className: "datepicker-grid", children: days.map((day, idx) => {
3065
3201
  const t = day.date.getTime();
3066
3202
  const disabled = t < minTime || t > maxTime;
3067
3203
  const selected = value ? isSameDay(day.date, value) : false;
@@ -3071,7 +3207,7 @@ var SingleDatePicker = (props) => {
3071
3207
  const isStart = hasRange ? isSameDay(day.date, rangeStart) : false;
3072
3208
  const isEnd = hasRange ? isSameDay(day.date, rangeEnd) : false;
3073
3209
  const inRangeVal = hasRange ? isInRange(day.date, rangeStart, rangeEnd) : false;
3074
- return /* @__PURE__ */ jsx313(
3210
+ return /* @__PURE__ */ jsx315(
3075
3211
  DayCell2,
3076
3212
  {
3077
3213
  day,
@@ -3096,7 +3232,7 @@ SingleDatePicker.displayName = "SingleDatePicker";
3096
3232
  var SingleDatePicker_default = SingleDatePicker;
3097
3233
 
3098
3234
  // src/components/DatePicker/InputDatePicker/index.tsx
3099
- import { jsx as jsx314, jsxs as jsxs201 } from "react/jsx-runtime";
3235
+ import { jsx as jsx316, jsxs as jsxs202 } from "react/jsx-runtime";
3100
3236
  var formatDate = (date) => {
3101
3237
  if (!date || !(date instanceof Date) || isNaN(date.getTime())) return "";
3102
3238
  const y = date.getFullYear();
@@ -3106,8 +3242,8 @@ var formatDate = (date) => {
3106
3242
  };
3107
3243
  var InputDatePicker = (props) => {
3108
3244
  const { value, onChange, minDate, maxDate, disabled, locale = "ko", placeholder } = props;
3109
- const [isOpen, setIsOpen] = React11.useState(false);
3110
- const [tempDate, setTempDate] = React11.useState(value ?? /* @__PURE__ */ new Date());
3245
+ const [isOpen, setIsOpen] = React13.useState(false);
3246
+ const [tempDate, setTempDate] = React13.useState(value ?? /* @__PURE__ */ new Date());
3111
3247
  const handleOpen = () => {
3112
3248
  if (disabled) return;
3113
3249
  setTempDate(value ?? /* @__PURE__ */ new Date());
@@ -3123,19 +3259,19 @@ var InputDatePicker = (props) => {
3123
3259
  const handleClose = () => {
3124
3260
  setIsOpen(false);
3125
3261
  };
3126
- return /* @__PURE__ */ jsxs201("div", { className: clsx_default("lib-xplat-datepicker input-datepicker", disabled && "disabled"), children: [
3127
- /* @__PURE__ */ jsx314("div", { className: "input-datepicker-trigger", onClick: handleOpen, children: /* @__PURE__ */ jsx314(
3262
+ return /* @__PURE__ */ jsxs202("div", { className: clsx_default("lib-xplat-datepicker input-datepicker", disabled && "disabled"), children: [
3263
+ /* @__PURE__ */ jsx316("div", { className: "input-datepicker-trigger", onClick: handleOpen, children: /* @__PURE__ */ jsx316(
3128
3264
  Input_default,
3129
3265
  {
3130
3266
  value: formatDate(value),
3131
3267
  placeholder,
3132
- suffix: /* @__PURE__ */ jsx314(CalenderIcon_default, {}),
3268
+ suffix: /* @__PURE__ */ jsx316(CalenderIcon_default, {}),
3133
3269
  disabled,
3134
3270
  readOnly: true
3135
3271
  }
3136
3272
  ) }),
3137
- /* @__PURE__ */ jsx314(Modal_default, { isOpen, onClose: handleClose, children: /* @__PURE__ */ jsxs201("div", { className: "lib-xplat-popup-datepicker-card", children: [
3138
- /* @__PURE__ */ jsx314("div", { className: "popup-datepicker-content", children: /* @__PURE__ */ jsx314(
3273
+ /* @__PURE__ */ jsx316(Modal_default, { isOpen, onClose: handleClose, children: /* @__PURE__ */ jsxs202("div", { className: "lib-xplat-popup-datepicker-card", children: [
3274
+ /* @__PURE__ */ jsx316("div", { className: "popup-datepicker-content", children: /* @__PURE__ */ jsx316(
3139
3275
  SingleDatePicker_default,
3140
3276
  {
3141
3277
  value: tempDate,
@@ -3145,9 +3281,9 @@ var InputDatePicker = (props) => {
3145
3281
  locale
3146
3282
  }
3147
3283
  ) }),
3148
- /* @__PURE__ */ jsxs201("div", { className: "popup-datepicker-footer", children: [
3149
- /* @__PURE__ */ jsx314(Button_default, { type: "secondary", onClick: handleClose, children: locale === "ko" ? "\uCDE8\uC18C" : "Cancel" }),
3150
- /* @__PURE__ */ jsx314(Button_default, { type: "primary", onClick: handleApply, children: locale === "ko" ? "\uC801\uC6A9" : "Apply" })
3284
+ /* @__PURE__ */ jsxs202("div", { className: "popup-datepicker-footer", children: [
3285
+ /* @__PURE__ */ jsx316(Button_default, { type: "secondary", onClick: handleClose, children: locale === "ko" ? "\uCDE8\uC18C" : "Cancel" }),
3286
+ /* @__PURE__ */ jsx316(Button_default, { type: "primary", onClick: handleApply, children: locale === "ko" ? "\uC801\uC6A9" : "Apply" })
3151
3287
  ] })
3152
3288
  ] }) })
3153
3289
  ] });
@@ -3156,20 +3292,20 @@ InputDatePicker.displayName = "InputDatePicker";
3156
3292
  var InputDatePicker_default = InputDatePicker;
3157
3293
 
3158
3294
  // src/components/DatePicker/PopupPicker/index.tsx
3159
- import React15 from "react";
3295
+ import React17 from "react";
3160
3296
 
3161
3297
  // src/components/DatePicker/RangePicker/index.tsx
3162
- import React14 from "react";
3298
+ import React16 from "react";
3163
3299
 
3164
3300
  // src/components/Tab/Tab.tsx
3165
- import React13 from "react";
3301
+ import React15 from "react";
3166
3302
 
3167
3303
  // src/components/Tab/TabItem.tsx
3168
- import React12 from "react";
3169
- import { jsx as jsx315 } from "react/jsx-runtime";
3170
- var TabItem = React12.forwardRef((props, ref) => {
3304
+ import React14 from "react";
3305
+ import { jsx as jsx317 } from "react/jsx-runtime";
3306
+ var TabItem = React14.forwardRef((props, ref) => {
3171
3307
  const { isActive, title, onClick } = props;
3172
- return /* @__PURE__ */ jsx315(
3308
+ return /* @__PURE__ */ jsx317(
3173
3309
  "div",
3174
3310
  {
3175
3311
  ref,
@@ -3183,25 +3319,25 @@ TabItem.displayName = "TabItem";
3183
3319
  var TabItem_default = TabItem;
3184
3320
 
3185
3321
  // src/components/Tab/Tab.tsx
3186
- import { jsx as jsx316, jsxs as jsxs202 } from "react/jsx-runtime";
3322
+ import { jsx as jsx318, jsxs as jsxs203 } from "react/jsx-runtime";
3187
3323
  var Tab = (props) => {
3188
3324
  const { activeIndex, onChange, tabs, type, size = "md" } = props;
3189
- const [underlineStyle, setUnderlineStyle] = React13.useState({
3325
+ const [underlineStyle, setUnderlineStyle] = React15.useState({
3190
3326
  left: 0,
3191
3327
  width: 0
3192
3328
  });
3193
- const itemRefs = React13.useRef([]);
3329
+ const itemRefs = React15.useRef([]);
3194
3330
  const handleChangeActiveTab = (tabItem, tabIdx) => {
3195
3331
  onChange(tabItem, tabIdx);
3196
3332
  };
3197
- React13.useEffect(() => {
3333
+ React15.useEffect(() => {
3198
3334
  const el = itemRefs.current[activeIndex];
3199
3335
  if (el) {
3200
3336
  setUnderlineStyle({ left: el.offsetLeft, width: el.offsetWidth });
3201
3337
  }
3202
3338
  }, [activeIndex, tabs.length]);
3203
- return /* @__PURE__ */ jsxs202("div", { className: clsx_default("lib-xplat-tab", `type-${type}`, size), children: [
3204
- tabs.map((tab, idx) => /* @__PURE__ */ jsx316(
3339
+ return /* @__PURE__ */ jsxs203("div", { className: clsx_default("lib-xplat-tab", `type-${type}`, size), children: [
3340
+ tabs.map((tab, idx) => /* @__PURE__ */ jsx318(
3205
3341
  TabItem_default,
3206
3342
  {
3207
3343
  onClick: () => handleChangeActiveTab(tab, idx),
@@ -3213,7 +3349,7 @@ var Tab = (props) => {
3213
3349
  },
3214
3350
  `${tab.value}_${idx}`
3215
3351
  )),
3216
- type === "toggle" && /* @__PURE__ */ jsx316(
3352
+ type === "toggle" && /* @__PURE__ */ jsx318(
3217
3353
  "div",
3218
3354
  {
3219
3355
  className: "tab-toggle-underline",
@@ -3229,7 +3365,7 @@ Tab.displayName = "Tab";
3229
3365
  var Tab_default = Tab;
3230
3366
 
3231
3367
  // src/components/DatePicker/RangePicker/index.tsx
3232
- import { jsx as jsx317, jsxs as jsxs203 } from "react/jsx-runtime";
3368
+ import { jsx as jsx319, jsxs as jsxs204 } from "react/jsx-runtime";
3233
3369
  var RangePicker = (props) => {
3234
3370
  const {
3235
3371
  startDate,
@@ -3239,7 +3375,7 @@ var RangePicker = (props) => {
3239
3375
  maxDate,
3240
3376
  locale = "ko"
3241
3377
  } = props;
3242
- const [activeTab, setActiveTab] = React14.useState("start");
3378
+ const [activeTab, setActiveTab] = React16.useState("start");
3243
3379
  const handleStartChange = (date) => {
3244
3380
  if (!date) return;
3245
3381
  const newStart = date > endDate ? endDate : date;
@@ -3252,8 +3388,8 @@ var RangePicker = (props) => {
3252
3388
  };
3253
3389
  const startMaxDate = maxDate && endDate < maxDate ? endDate : endDate;
3254
3390
  const endMinDate = minDate && startDate > minDate ? startDate : startDate;
3255
- return /* @__PURE__ */ jsxs203("div", { className: clsx_default("lib-xplat-datepicker", "range"), children: [
3256
- /* @__PURE__ */ jsx317("div", { className: "datepicker-range-tabs", children: /* @__PURE__ */ jsx317(
3391
+ return /* @__PURE__ */ jsxs204("div", { className: clsx_default("lib-xplat-datepicker", "range"), children: [
3392
+ /* @__PURE__ */ jsx319("div", { className: "datepicker-range-tabs", children: /* @__PURE__ */ jsx319(
3257
3393
  Tab_default,
3258
3394
  {
3259
3395
  activeIndex: activeTab === "start" ? 0 : 1,
@@ -3266,8 +3402,8 @@ var RangePicker = (props) => {
3266
3402
  size: "sm"
3267
3403
  }
3268
3404
  ) }),
3269
- /* @__PURE__ */ jsxs203("div", { className: "datepicker-range-panels", children: [
3270
- /* @__PURE__ */ jsx317(
3405
+ /* @__PURE__ */ jsxs204("div", { className: "datepicker-range-panels", children: [
3406
+ /* @__PURE__ */ jsx319(
3271
3407
  SingleDatePicker_default,
3272
3408
  {
3273
3409
  value: startDate,
@@ -3279,7 +3415,7 @@ var RangePicker = (props) => {
3279
3415
  locale
3280
3416
  }
3281
3417
  ),
3282
- /* @__PURE__ */ jsx317(
3418
+ /* @__PURE__ */ jsx319(
3283
3419
  SingleDatePicker_default,
3284
3420
  {
3285
3421
  value: endDate,
@@ -3292,7 +3428,7 @@ var RangePicker = (props) => {
3292
3428
  }
3293
3429
  )
3294
3430
  ] }),
3295
- /* @__PURE__ */ jsx317("div", { className: "datepicker-range-mobile", children: activeTab === "start" ? /* @__PURE__ */ jsx317(
3431
+ /* @__PURE__ */ jsx319("div", { className: "datepicker-range-mobile", children: activeTab === "start" ? /* @__PURE__ */ jsx319(
3296
3432
  SingleDatePicker_default,
3297
3433
  {
3298
3434
  value: startDate,
@@ -3303,7 +3439,7 @@ var RangePicker = (props) => {
3303
3439
  rangeEnd: endDate,
3304
3440
  locale
3305
3441
  }
3306
- ) : /* @__PURE__ */ jsx317(
3442
+ ) : /* @__PURE__ */ jsx319(
3307
3443
  SingleDatePicker_default,
3308
3444
  {
3309
3445
  value: endDate,
@@ -3321,10 +3457,10 @@ RangePicker.displayName = "RangePicker";
3321
3457
  var RangePicker_default = RangePicker;
3322
3458
 
3323
3459
  // src/components/DatePicker/PopupPicker/index.tsx
3324
- import { jsx as jsx318, jsxs as jsxs204 } from "react/jsx-runtime";
3460
+ import { jsx as jsx320, jsxs as jsxs205 } from "react/jsx-runtime";
3325
3461
  var PopupPicker = (props) => {
3326
3462
  const { component, type, locale } = props;
3327
- const [isOpen, setIsOpen] = React15.useState(false);
3463
+ const [isOpen, setIsOpen] = React17.useState(false);
3328
3464
  const handleClick = () => setIsOpen(true);
3329
3465
  const handleClose = () => setIsOpen(false);
3330
3466
  const handleSingleChange = (date) => {
@@ -3332,11 +3468,11 @@ var PopupPicker = (props) => {
3332
3468
  props.onChange?.(date);
3333
3469
  handleClose();
3334
3470
  };
3335
- return /* @__PURE__ */ jsxs204("div", { className: "lib-xplat-popup-datepicker", children: [
3336
- React15.cloneElement(component, { onClick: handleClick }),
3337
- /* @__PURE__ */ jsx318(Modal_default, { isOpen, onClose: handleClose, children: /* @__PURE__ */ jsxs204("div", { className: clsx_default("lib-xplat-popup-datepicker-card", type === "range" && "range-mode"), children: [
3338
- /* @__PURE__ */ jsxs204("div", { className: "popup-datepicker-content", children: [
3339
- type === "single" && /* @__PURE__ */ jsx318(
3471
+ return /* @__PURE__ */ jsxs205("div", { className: "lib-xplat-popup-datepicker", children: [
3472
+ React17.cloneElement(component, { onClick: handleClick }),
3473
+ /* @__PURE__ */ jsx320(Modal_default, { isOpen, onClose: handleClose, children: /* @__PURE__ */ jsxs205("div", { className: clsx_default("lib-xplat-popup-datepicker-card", type === "range" && "range-mode"), children: [
3474
+ /* @__PURE__ */ jsxs205("div", { className: "popup-datepicker-content", children: [
3475
+ type === "single" && /* @__PURE__ */ jsx320(
3340
3476
  SingleDatePicker_default,
3341
3477
  {
3342
3478
  value: props.value,
@@ -3346,7 +3482,7 @@ var PopupPicker = (props) => {
3346
3482
  locale
3347
3483
  }
3348
3484
  ),
3349
- type === "range" && /* @__PURE__ */ jsx318(
3485
+ type === "range" && /* @__PURE__ */ jsx320(
3350
3486
  RangePicker_default,
3351
3487
  {
3352
3488
  startDate: props.startDate,
@@ -3358,8 +3494,8 @@ var PopupPicker = (props) => {
3358
3494
  }
3359
3495
  )
3360
3496
  ] }),
3361
- /* @__PURE__ */ jsxs204("div", { className: "popup-datepicker-footer", children: [
3362
- /* @__PURE__ */ jsx318(
3497
+ /* @__PURE__ */ jsxs205("div", { className: "popup-datepicker-footer", children: [
3498
+ /* @__PURE__ */ jsx320(
3363
3499
  Button_default,
3364
3500
  {
3365
3501
  type: "secondary",
@@ -3367,7 +3503,7 @@ var PopupPicker = (props) => {
3367
3503
  children: locale === "ko" ? "\uCDE8\uC18C" : "Cancel"
3368
3504
  }
3369
3505
  ),
3370
- /* @__PURE__ */ jsx318(Button_default, { type: "primary", onClick: handleClose, children: locale === "ko" ? "\uC801\uC6A9" : "Apply" })
3506
+ /* @__PURE__ */ jsx320(Button_default, { type: "primary", onClick: handleClose, children: locale === "ko" ? "\uC801\uC6A9" : "Apply" })
3371
3507
  ] })
3372
3508
  ] }) })
3373
3509
  ] });
@@ -3376,10 +3512,10 @@ PopupPicker.displayName = "PopupPicker";
3376
3512
  var PopupPicker_default = PopupPicker;
3377
3513
 
3378
3514
  // src/components/Divider/Divider.tsx
3379
- import { jsx as jsx319 } from "react/jsx-runtime";
3515
+ import { jsx as jsx321 } from "react/jsx-runtime";
3380
3516
  var Divider = (props) => {
3381
3517
  const { orientation = "horizontal" } = props;
3382
- return /* @__PURE__ */ jsx319(
3518
+ return /* @__PURE__ */ jsx321(
3383
3519
  "div",
3384
3520
  {
3385
3521
  className: clsx_default("lib-xplat-divider", orientation),
@@ -3392,15 +3528,15 @@ Divider.displayName = "Divider";
3392
3528
  var Divider_default = Divider;
3393
3529
 
3394
3530
  // src/components/Drawer/Drawer.tsx
3395
- import React16 from "react";
3531
+ import React18 from "react";
3396
3532
  import { createPortal as createPortal2 } from "react-dom";
3397
- import { jsx as jsx320, jsxs as jsxs205 } from "react/jsx-runtime";
3533
+ import { jsx as jsx322, jsxs as jsxs206 } from "react/jsx-runtime";
3398
3534
  var ANIMATION_DURATION_MS2 = 250;
3399
3535
  var Drawer = (props) => {
3400
3536
  const { isOpen, onClose, placement = "right", size = "md", title, children } = props;
3401
- const [mounted, setMounted] = React16.useState(false);
3402
- const [visible, setVisible] = React16.useState(false);
3403
- React16.useEffect(() => {
3537
+ const [mounted, setMounted] = React18.useState(false);
3538
+ const [visible, setVisible] = React18.useState(false);
3539
+ React18.useEffect(() => {
3404
3540
  if (isOpen) {
3405
3541
  setMounted(true);
3406
3542
  const t2 = setTimeout(() => setVisible(true), 1);
@@ -3414,12 +3550,12 @@ var Drawer = (props) => {
3414
3550
  if (!mounted) return null;
3415
3551
  const stateClass = visible ? "enter" : "exit";
3416
3552
  return createPortal2(
3417
- /* @__PURE__ */ jsx320(
3553
+ /* @__PURE__ */ jsx322(
3418
3554
  "div",
3419
3555
  {
3420
3556
  className: clsx_default("lib-xplat-drawer-overlay", stateClass),
3421
3557
  onClick: onClose,
3422
- children: /* @__PURE__ */ jsxs205(
3558
+ children: /* @__PURE__ */ jsxs206(
3423
3559
  "div",
3424
3560
  {
3425
3561
  className: clsx_default("lib-xplat-drawer", placement, size, stateClass),
@@ -3427,11 +3563,11 @@ var Drawer = (props) => {
3427
3563
  "aria-modal": "true",
3428
3564
  onClick: (e) => e.stopPropagation(),
3429
3565
  children: [
3430
- title && /* @__PURE__ */ jsxs205("div", { className: "drawer-header", children: [
3431
- /* @__PURE__ */ jsx320("span", { className: "drawer-title", children: title }),
3432
- /* @__PURE__ */ jsx320("button", { className: "close-btn", onClick: onClose, "aria-label": "\uB2EB\uAE30", children: "\xD7" })
3566
+ title && /* @__PURE__ */ jsxs206("div", { className: "drawer-header", children: [
3567
+ /* @__PURE__ */ jsx322("span", { className: "drawer-title", children: title }),
3568
+ /* @__PURE__ */ jsx322("button", { className: "close-btn", onClick: onClose, "aria-label": "\uB2EB\uAE30", children: "\xD7" })
3433
3569
  ] }),
3434
- /* @__PURE__ */ jsx320("div", { className: "drawer-body", children })
3570
+ /* @__PURE__ */ jsx322("div", { className: "drawer-body", children })
3435
3571
  ]
3436
3572
  }
3437
3573
  )
@@ -3444,16 +3580,16 @@ Drawer.displayName = "Drawer";
3444
3580
  var Drawer_default = Drawer;
3445
3581
 
3446
3582
  // src/components/Dropdown/Dropdown.tsx
3447
- import React19 from "react";
3583
+ import React21 from "react";
3448
3584
 
3449
3585
  // src/tokens/hooks/useAutoPosition.ts
3450
- import React17 from "react";
3586
+ import React19 from "react";
3451
3587
  var useAutoPosition = (triggerRef, popRef, enabled = true) => {
3452
- const [position, setPosition] = React17.useState({
3588
+ const [position, setPosition] = React19.useState({
3453
3589
  position: {},
3454
3590
  direction: "bottom"
3455
3591
  });
3456
- const calculatePosition = React17.useCallback(() => {
3592
+ const calculatePosition = React19.useCallback(() => {
3457
3593
  if (!triggerRef.current || !popRef.current) return;
3458
3594
  const triggerRect = triggerRef.current.getBoundingClientRect();
3459
3595
  const popW = popRef.current.offsetWidth;
@@ -3480,13 +3616,13 @@ var useAutoPosition = (triggerRef, popRef, enabled = true) => {
3480
3616
  direction
3481
3617
  });
3482
3618
  }, [triggerRef, popRef]);
3483
- React17.useLayoutEffect(() => {
3619
+ React19.useLayoutEffect(() => {
3484
3620
  if (!enabled) return;
3485
3621
  calculatePosition();
3486
3622
  const raf = requestAnimationFrame(calculatePosition);
3487
3623
  return () => cancelAnimationFrame(raf);
3488
3624
  }, [calculatePosition, enabled]);
3489
- React17.useEffect(() => {
3625
+ React19.useEffect(() => {
3490
3626
  if (!enabled || !popRef.current) return;
3491
3627
  const observer = new ResizeObserver(() => {
3492
3628
  calculatePosition();
@@ -3494,7 +3630,7 @@ var useAutoPosition = (triggerRef, popRef, enabled = true) => {
3494
3630
  observer.observe(popRef.current);
3495
3631
  return () => observer.disconnect();
3496
3632
  }, [calculatePosition, enabled, popRef]);
3497
- React17.useEffect(() => {
3633
+ React19.useEffect(() => {
3498
3634
  if (!enabled) return;
3499
3635
  window.addEventListener("resize", calculatePosition);
3500
3636
  window.addEventListener("scroll", calculatePosition, true);
@@ -3508,9 +3644,9 @@ var useAutoPosition = (triggerRef, popRef, enabled = true) => {
3508
3644
  var useAutoPosition_default = useAutoPosition;
3509
3645
 
3510
3646
  // src/tokens/hooks/useClickOutside.ts
3511
- import React18 from "react";
3647
+ import React20 from "react";
3512
3648
  var useClickOutside = (refs, handler, enabled = true) => {
3513
- React18.useEffect(() => {
3649
+ React20.useEffect(() => {
3514
3650
  if (!enabled) return;
3515
3651
  const refArray = Array.isArray(refs) ? refs : [refs];
3516
3652
  const listener = (event) => {
@@ -3533,17 +3669,17 @@ var useClickOutside = (refs, handler, enabled = true) => {
3533
3669
  var useClickOutside_default = useClickOutside;
3534
3670
 
3535
3671
  // src/components/Dropdown/Dropdown.tsx
3536
- import { jsx as jsx321, jsxs as jsxs206 } from "react/jsx-runtime";
3672
+ import { jsx as jsx323, jsxs as jsxs207 } from "react/jsx-runtime";
3537
3673
  var Dropdown = (props) => {
3538
3674
  const { items, children } = props;
3539
- const [isOpen, setIsOpen] = React19.useState(false);
3540
- const [mounted, setMounted] = React19.useState(false);
3541
- const [visible, setVisible] = React19.useState(false);
3542
- const triggerRef = React19.useRef(null);
3543
- const menuRef = React19.useRef(null);
3675
+ const [isOpen, setIsOpen] = React21.useState(false);
3676
+ const [mounted, setMounted] = React21.useState(false);
3677
+ const [visible, setVisible] = React21.useState(false);
3678
+ const triggerRef = React21.useRef(null);
3679
+ const menuRef = React21.useRef(null);
3544
3680
  const { position, direction } = useAutoPosition_default(triggerRef, menuRef, mounted);
3545
3681
  useClickOutside_default([triggerRef, menuRef], () => setIsOpen(false), isOpen);
3546
- React19.useEffect(() => {
3682
+ React21.useEffect(() => {
3547
3683
  if (isOpen) {
3548
3684
  setMounted(true);
3549
3685
  const t2 = setTimeout(() => setVisible(true), 1);
@@ -3558,8 +3694,8 @@ var Dropdown = (props) => {
3558
3694
  item.onClick?.();
3559
3695
  setIsOpen(false);
3560
3696
  };
3561
- return /* @__PURE__ */ jsxs206("div", { className: "lib-xplat-dropdown", children: [
3562
- /* @__PURE__ */ jsx321(
3697
+ return /* @__PURE__ */ jsxs207("div", { className: "lib-xplat-dropdown", children: [
3698
+ /* @__PURE__ */ jsx323(
3563
3699
  "div",
3564
3700
  {
3565
3701
  ref: triggerRef,
@@ -3568,14 +3704,14 @@ var Dropdown = (props) => {
3568
3704
  children
3569
3705
  }
3570
3706
  ),
3571
- mounted && /* @__PURE__ */ jsx321(Portal_default, { children: /* @__PURE__ */ jsx321(
3707
+ mounted && /* @__PURE__ */ jsx323(Portal_default, { children: /* @__PURE__ */ jsx323(
3572
3708
  "div",
3573
3709
  {
3574
3710
  ref: menuRef,
3575
3711
  className: clsx_default("lib-xplat-dropdown-menu", direction, { visible }),
3576
3712
  style: { top: position.top, left: position.left },
3577
3713
  role: "menu",
3578
- children: items.map((item) => /* @__PURE__ */ jsx321(
3714
+ children: items.map((item) => /* @__PURE__ */ jsx323(
3579
3715
  "button",
3580
3716
  {
3581
3717
  className: clsx_default("dropdown-item", {
@@ -3597,23 +3733,23 @@ Dropdown.displayName = "Dropdown";
3597
3733
  var Dropdown_default = Dropdown;
3598
3734
 
3599
3735
  // src/components/EmptyState/EmptyState.tsx
3600
- import { jsx as jsx322, jsxs as jsxs207 } from "react/jsx-runtime";
3736
+ import { jsx as jsx324, jsxs as jsxs208 } from "react/jsx-runtime";
3601
3737
  var EmptyState = (props) => {
3602
3738
  const { icon, title = "\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4", description, action } = props;
3603
- return /* @__PURE__ */ jsxs207("div", { className: "lib-xplat-empty-state", children: [
3604
- icon && /* @__PURE__ */ jsx322("div", { className: "empty-icon", children: icon }),
3605
- !icon && /* @__PURE__ */ jsx322("div", { className: "empty-icon", children: /* @__PURE__ */ jsx322("svg", { viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsx322("path", { d: "M20 6h-8l-2-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm0 12H4V8h16v10z" }) }) }),
3606
- /* @__PURE__ */ jsx322("p", { className: "empty-title", children: title }),
3607
- description && /* @__PURE__ */ jsx322("p", { className: "empty-description", children: description }),
3608
- action && /* @__PURE__ */ jsx322("div", { className: "empty-action", children: action })
3739
+ return /* @__PURE__ */ jsxs208("div", { className: "lib-xplat-empty-state", children: [
3740
+ icon && /* @__PURE__ */ jsx324("div", { className: "empty-icon", children: icon }),
3741
+ !icon && /* @__PURE__ */ jsx324("div", { className: "empty-icon", children: /* @__PURE__ */ jsx324("svg", { viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsx324("path", { d: "M20 6h-8l-2-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm0 12H4V8h16v10z" }) }) }),
3742
+ /* @__PURE__ */ jsx324("p", { className: "empty-title", children: title }),
3743
+ description && /* @__PURE__ */ jsx324("p", { className: "empty-description", children: description }),
3744
+ action && /* @__PURE__ */ jsx324("div", { className: "empty-action", children: action })
3609
3745
  ] });
3610
3746
  };
3611
3747
  EmptyState.displayName = "EmptyState";
3612
3748
  var EmptyState_default = EmptyState;
3613
3749
 
3614
3750
  // src/components/FileUpload/FileUpload.tsx
3615
- import React20 from "react";
3616
- import { jsx as jsx323, jsxs as jsxs208 } from "react/jsx-runtime";
3751
+ import React22 from "react";
3752
+ import { jsx as jsx325, jsxs as jsxs209 } from "react/jsx-runtime";
3617
3753
  var FileUpload = (props) => {
3618
3754
  const {
3619
3755
  accept,
@@ -3623,8 +3759,8 @@ var FileUpload = (props) => {
3623
3759
  label = "\uD30C\uC77C\uC744 \uB4DC\uB798\uADF8\uD558\uAC70\uB098 \uD074\uB9AD\uD558\uC5EC \uC5C5\uB85C\uB4DC",
3624
3760
  description
3625
3761
  } = props;
3626
- const [isDragOver, setIsDragOver] = React20.useState(false);
3627
- const inputRef = React20.useRef(null);
3762
+ const [isDragOver, setIsDragOver] = React22.useState(false);
3763
+ const inputRef = React22.useRef(null);
3628
3764
  const handleFiles = (fileList) => {
3629
3765
  let files = Array.from(fileList);
3630
3766
  if (maxSize) {
@@ -3654,7 +3790,7 @@ var FileUpload = (props) => {
3654
3790
  handleFiles(e.target.files);
3655
3791
  }
3656
3792
  };
3657
- return /* @__PURE__ */ jsxs208(
3793
+ return /* @__PURE__ */ jsxs209(
3658
3794
  "div",
3659
3795
  {
3660
3796
  className: clsx_default("lib-xplat-file-upload", { "drag-over": isDragOver }),
@@ -3663,7 +3799,7 @@ var FileUpload = (props) => {
3663
3799
  onDragLeave: handleDragLeave,
3664
3800
  onClick: () => inputRef.current?.click(),
3665
3801
  children: [
3666
- /* @__PURE__ */ jsx323(
3802
+ /* @__PURE__ */ jsx325(
3667
3803
  "input",
3668
3804
  {
3669
3805
  ref: inputRef,
@@ -3673,9 +3809,9 @@ var FileUpload = (props) => {
3673
3809
  onChange: handleChange
3674
3810
  }
3675
3811
  ),
3676
- /* @__PURE__ */ jsx323("div", { className: "upload-icon", children: /* @__PURE__ */ jsx323(UploadIcon_default, {}) }),
3677
- /* @__PURE__ */ jsx323("p", { className: "upload-label", children: label }),
3678
- description && /* @__PURE__ */ jsx323("p", { className: "upload-description", children: description })
3812
+ /* @__PURE__ */ jsx325("div", { className: "upload-icon", children: /* @__PURE__ */ jsx325(UploadIcon_default, {}) }),
3813
+ /* @__PURE__ */ jsx325("p", { className: "upload-label", children: label }),
3814
+ description && /* @__PURE__ */ jsx325("p", { className: "upload-description", children: description })
3679
3815
  ]
3680
3816
  }
3681
3817
  );
@@ -3684,10 +3820,10 @@ FileUpload.displayName = "FileUpload";
3684
3820
  var FileUpload_default = FileUpload;
3685
3821
 
3686
3822
  // src/components/HtmlTypeWriter/HtmlTypeWriter.tsx
3687
- import React22 from "react";
3823
+ import React24 from "react";
3688
3824
 
3689
3825
  // src/components/HtmlTypeWriter/utils.ts
3690
- import React21 from "react";
3826
+ import React23 from "react";
3691
3827
  var voidTags = /* @__PURE__ */ new Set([
3692
3828
  "br",
3693
3829
  "img",
@@ -3755,41 +3891,41 @@ var convertNodeToReactWithRange = (node, typedLen, rangeMap) => {
3755
3891
  props[attr.name] = attr.value;
3756
3892
  });
3757
3893
  if (voidTags.has(tag)) {
3758
- return React21.createElement(tag, props);
3894
+ return React23.createElement(tag, props);
3759
3895
  }
3760
3896
  const children = Array.from(element.childNodes).map((child) => convertNodeToReactWithRange(child, typedLen, rangeMap)).filter((n) => n != null);
3761
- return React21.createElement(tag, props, ...children);
3897
+ return React23.createElement(tag, props, ...children);
3762
3898
  };
3763
3899
  var htmlToReactProgressive = (root, typedLen, rangeMap) => {
3764
3900
  const nodes = Array.from(root.childNodes).map((child, idx) => {
3765
3901
  const node = convertNodeToReactWithRange(child, typedLen, rangeMap);
3766
- return node == null ? null : React21.createElement(React21.Fragment, { key: idx }, node);
3902
+ return node == null ? null : React23.createElement(React23.Fragment, { key: idx }, node);
3767
3903
  }).filter(Boolean);
3768
3904
  return nodes.length === 0 ? null : nodes;
3769
3905
  };
3770
3906
 
3771
3907
  // src/components/HtmlTypeWriter/HtmlTypeWriter.tsx
3772
- import { jsx as jsx324 } from "react/jsx-runtime";
3908
+ import { jsx as jsx326 } from "react/jsx-runtime";
3773
3909
  var HtmlTypeWriter = ({
3774
3910
  html,
3775
3911
  duration = 20,
3776
3912
  onDone,
3777
3913
  onChange
3778
3914
  }) => {
3779
- const [typedLen, setTypedLen] = React22.useState(0);
3780
- const doneCalledRef = React22.useRef(false);
3781
- const { doc, rangeMap, totalLength } = React22.useMemo(() => {
3915
+ const [typedLen, setTypedLen] = React24.useState(0);
3916
+ const doneCalledRef = React24.useRef(false);
3917
+ const { doc, rangeMap, totalLength } = React24.useMemo(() => {
3782
3918
  if (typeof window === "undefined") return { doc: null, rangeMap: /* @__PURE__ */ new Map(), totalLength: 0 };
3783
3919
  const decoded = decodeHtmlEntities(html);
3784
3920
  const doc2 = new DOMParser().parseFromString(decoded, "text/html");
3785
3921
  const { rangeMap: rangeMap2, totalLength: totalLength2 } = buildRangeMap(doc2.body);
3786
3922
  return { doc: doc2, rangeMap: rangeMap2, totalLength: totalLength2 };
3787
3923
  }, [html]);
3788
- React22.useEffect(() => {
3924
+ React24.useEffect(() => {
3789
3925
  setTypedLen(0);
3790
3926
  doneCalledRef.current = false;
3791
3927
  }, [html]);
3792
- React22.useEffect(() => {
3928
+ React24.useEffect(() => {
3793
3929
  if (!totalLength) return;
3794
3930
  if (typedLen >= totalLength) return;
3795
3931
  const timer = window.setInterval(() => {
@@ -3797,33 +3933,33 @@ var HtmlTypeWriter = ({
3797
3933
  }, duration);
3798
3934
  return () => window.clearInterval(timer);
3799
3935
  }, [typedLen, totalLength, duration]);
3800
- React22.useEffect(() => {
3936
+ React24.useEffect(() => {
3801
3937
  if (typedLen > 0 && typedLen < totalLength) {
3802
3938
  onChange?.();
3803
3939
  }
3804
3940
  }, [typedLen, totalLength, onChange]);
3805
- React22.useEffect(() => {
3941
+ React24.useEffect(() => {
3806
3942
  if (typedLen === totalLength && totalLength > 0 && !doneCalledRef.current) {
3807
3943
  doneCalledRef.current = true;
3808
3944
  onDone?.();
3809
3945
  }
3810
3946
  }, [typedLen, totalLength, onDone]);
3811
- const parsed = React22.useMemo(
3947
+ const parsed = React24.useMemo(
3812
3948
  () => doc ? htmlToReactProgressive(doc.body, typedLen, rangeMap) : null,
3813
3949
  [doc, typedLen, rangeMap]
3814
3950
  );
3815
- return /* @__PURE__ */ jsx324("div", { className: "lib-xplat-htmlTypewriter", children: parsed });
3951
+ return /* @__PURE__ */ jsx326("div", { className: "lib-xplat-htmlTypewriter", children: parsed });
3816
3952
  };
3817
3953
  HtmlTypeWriter.displayName = "HtmlTypeWriter";
3818
3954
  var HtmlTypeWriter_default = HtmlTypeWriter;
3819
3955
 
3820
3956
  // src/components/ImageSelector/ImageSelector.tsx
3821
- import React23 from "react";
3822
- import { jsx as jsx325, jsxs as jsxs209 } from "react/jsx-runtime";
3957
+ import React25 from "react";
3958
+ import { jsx as jsx327, jsxs as jsxs210 } from "react/jsx-runtime";
3823
3959
  var ImageSelector = (props) => {
3824
3960
  const { value, label, onChange } = props;
3825
- const [previewUrl, setPreviewUrl] = React23.useState();
3826
- React23.useEffect(() => {
3961
+ const [previewUrl, setPreviewUrl] = React25.useState();
3962
+ React25.useEffect(() => {
3827
3963
  if (!value) {
3828
3964
  setPreviewUrl(void 0);
3829
3965
  return;
@@ -3832,7 +3968,7 @@ var ImageSelector = (props) => {
3832
3968
  setPreviewUrl(url);
3833
3969
  return () => URL.revokeObjectURL(url);
3834
3970
  }, [value]);
3835
- const inputRef = React23.useRef(null);
3971
+ const inputRef = React25.useRef(null);
3836
3972
  const handleFileChange = (e) => {
3837
3973
  const selectedFile = e.target.files?.[0];
3838
3974
  if (selectedFile) {
@@ -3845,8 +3981,8 @@ var ImageSelector = (props) => {
3845
3981
  const handleOpenFileDialog = () => {
3846
3982
  inputRef.current?.click();
3847
3983
  };
3848
- return /* @__PURE__ */ jsxs209("div", { className: `lib-xplat-imageselector${value ? "" : " none-value"}`, children: [
3849
- /* @__PURE__ */ jsx325(
3984
+ return /* @__PURE__ */ jsxs210("div", { className: `lib-xplat-imageselector${value ? "" : " none-value"}`, children: [
3985
+ /* @__PURE__ */ jsx327(
3850
3986
  "input",
3851
3987
  {
3852
3988
  type: "file",
@@ -3856,13 +3992,13 @@ var ImageSelector = (props) => {
3856
3992
  ref: inputRef
3857
3993
  }
3858
3994
  ),
3859
- value && /* @__PURE__ */ jsxs209("div", { className: "action-bar", children: [
3860
- /* @__PURE__ */ jsx325("div", { className: "icon-wrapper", onClick: handleOpenFileDialog, children: /* @__PURE__ */ jsx325(UploadIcon_default, {}) }),
3861
- /* @__PURE__ */ jsx325("div", { className: "icon-wrapper", onClick: handleDeleteFile, children: /* @__PURE__ */ jsx325(DeleteIcon_default, {}) })
3995
+ value && /* @__PURE__ */ jsxs210("div", { className: "action-bar", children: [
3996
+ /* @__PURE__ */ jsx327("div", { className: "icon-wrapper", onClick: handleOpenFileDialog, children: /* @__PURE__ */ jsx327(UploadIcon_default, {}) }),
3997
+ /* @__PURE__ */ jsx327("div", { className: "icon-wrapper", onClick: handleDeleteFile, children: /* @__PURE__ */ jsx327(DeleteIcon_default, {}) })
3862
3998
  ] }),
3863
- /* @__PURE__ */ jsx325("div", { className: "content", children: previewUrl ? /* @__PURE__ */ jsx325("img", { src: previewUrl, alt: "preview" }) : /* @__PURE__ */ jsxs209("div", { className: "skeleton", onClick: handleOpenFileDialog, children: [
3864
- /* @__PURE__ */ jsx325("div", { className: "icon-wrapper", children: /* @__PURE__ */ jsx325(ImageIcon_default, {}) }),
3865
- /* @__PURE__ */ jsx325("div", { className: "label", children: label || "\uC774\uBBF8\uC9C0 \uCD94\uAC00\uD558\uAE30" })
3999
+ /* @__PURE__ */ jsx327("div", { className: "content", children: previewUrl ? /* @__PURE__ */ jsx327("img", { src: previewUrl, alt: "preview" }) : /* @__PURE__ */ jsxs210("div", { className: "skeleton", onClick: handleOpenFileDialog, children: [
4000
+ /* @__PURE__ */ jsx327("div", { className: "icon-wrapper", children: /* @__PURE__ */ jsx327(ImageIcon_default, {}) }),
4001
+ /* @__PURE__ */ jsx327("div", { className: "label", children: label || "\uC774\uBBF8\uC9C0 \uCD94\uAC00\uD558\uAE30" })
3866
4002
  ] }) })
3867
4003
  ] });
3868
4004
  };
@@ -3870,7 +4006,7 @@ ImageSelector.displayName = "ImageSelector";
3870
4006
  var ImageSelector_default = ImageSelector;
3871
4007
 
3872
4008
  // src/components/Pagination/Pagination.tsx
3873
- import { jsx as jsx326, jsxs as jsxs210 } from "react/jsx-runtime";
4009
+ import { jsx as jsx328, jsxs as jsxs211 } from "react/jsx-runtime";
3874
4010
  var getPageRange = (current, totalPages, siblingCount) => {
3875
4011
  const totalNumbers = siblingCount * 2 + 5;
3876
4012
  if (totalPages <= totalNumbers) {
@@ -3913,19 +4049,19 @@ var Pagination = (props) => {
3913
4049
  onChange?.(page);
3914
4050
  }
3915
4051
  };
3916
- return /* @__PURE__ */ jsxs210("nav", { className: clsx_default("lib-xplat-pagination", size, type), "aria-label": "\uD398\uC774\uC9C0 \uB124\uBE44\uAC8C\uC774\uC158", children: [
3917
- /* @__PURE__ */ jsx326(
4052
+ return /* @__PURE__ */ jsxs211("nav", { className: clsx_default("lib-xplat-pagination", size, type), "aria-label": "\uD398\uC774\uC9C0 \uB124\uBE44\uAC8C\uC774\uC158", children: [
4053
+ /* @__PURE__ */ jsx328(
3918
4054
  "button",
3919
4055
  {
3920
4056
  className: "page-btn prev",
3921
4057
  disabled: current <= 1,
3922
4058
  onClick: () => handleClick(current - 1),
3923
4059
  "aria-label": "\uC774\uC804 \uD398\uC774\uC9C0",
3924
- children: /* @__PURE__ */ jsx326(ChevronLeftIcon_default, {})
4060
+ children: /* @__PURE__ */ jsx328(ChevronLeftIcon_default, {})
3925
4061
  }
3926
4062
  ),
3927
4063
  pages.map(
3928
- (page, i) => page === "..." ? /* @__PURE__ */ jsx326("span", { className: "dots", children: "..." }, `dots-${i}`) : /* @__PURE__ */ jsx326(
4064
+ (page, i) => page === "..." ? /* @__PURE__ */ jsx328("span", { className: "dots", children: "..." }, `dots-${i}`) : /* @__PURE__ */ jsx328(
3929
4065
  "button",
3930
4066
  {
3931
4067
  className: clsx_default("page-btn", { active: page === current }),
@@ -3936,14 +4072,14 @@ var Pagination = (props) => {
3936
4072
  page
3937
4073
  )
3938
4074
  ),
3939
- /* @__PURE__ */ jsx326(
4075
+ /* @__PURE__ */ jsx328(
3940
4076
  "button",
3941
4077
  {
3942
4078
  className: "page-btn next",
3943
4079
  disabled: current >= totalPages,
3944
4080
  onClick: () => handleClick(current + 1),
3945
4081
  "aria-label": "\uB2E4\uC74C \uD398\uC774\uC9C0",
3946
- children: /* @__PURE__ */ jsx326(ChevronRightIcon_default, {})
4082
+ children: /* @__PURE__ */ jsx328(ChevronRightIcon_default, {})
3947
4083
  }
3948
4084
  )
3949
4085
  ] });
@@ -3952,17 +4088,17 @@ Pagination.displayName = "Pagination";
3952
4088
  var Pagination_default = Pagination;
3953
4089
 
3954
4090
  // src/components/PopOver/PopOver.tsx
3955
- import React24 from "react";
3956
- import { jsx as jsx327, jsxs as jsxs211 } from "react/jsx-runtime";
4091
+ import React26 from "react";
4092
+ import { jsx as jsx329, jsxs as jsxs212 } from "react/jsx-runtime";
3957
4093
  var PopOver = (props) => {
3958
4094
  const { children, isOpen, onClose, PopOverEl } = props;
3959
- const popRef = React24.useRef(null);
3960
- const triggerRef = React24.useRef(null);
3961
- const [localOpen, setLocalOpen] = React24.useState(false);
3962
- const [eventTrigger, setEventTrigger] = React24.useState(false);
4095
+ const popRef = React26.useRef(null);
4096
+ const triggerRef = React26.useRef(null);
4097
+ const [localOpen, setLocalOpen] = React26.useState(false);
4098
+ const [eventTrigger, setEventTrigger] = React26.useState(false);
3963
4099
  useClickOutside_default([popRef, triggerRef], onClose, isOpen);
3964
4100
  const position = useAutoPosition_default(triggerRef, popRef, localOpen);
3965
- React24.useEffect(() => {
4101
+ React26.useEffect(() => {
3966
4102
  if (isOpen) {
3967
4103
  setLocalOpen(isOpen);
3968
4104
  setTimeout(() => {
@@ -3975,7 +4111,7 @@ var PopOver = (props) => {
3975
4111
  }, 200);
3976
4112
  }
3977
4113
  }, [isOpen]);
3978
- return /* @__PURE__ */ jsxs211(
4114
+ return /* @__PURE__ */ jsxs212(
3979
4115
  "div",
3980
4116
  {
3981
4117
  className: "lib-xplat-pop-over",
@@ -3985,7 +4121,7 @@ var PopOver = (props) => {
3985
4121
  },
3986
4122
  children: [
3987
4123
  children,
3988
- localOpen && /* @__PURE__ */ jsx327(Portal_default, { children: /* @__PURE__ */ jsx327(
4124
+ localOpen && /* @__PURE__ */ jsx329(Portal_default, { children: /* @__PURE__ */ jsx329(
3989
4125
  "div",
3990
4126
  {
3991
4127
  className: clsx_default(
@@ -4008,7 +4144,7 @@ PopOver.displayName = "PopOver";
4008
4144
  var PopOver_default = PopOver;
4009
4145
 
4010
4146
  // src/components/Progress/Progress.tsx
4011
- import { jsx as jsx328, jsxs as jsxs212 } from "react/jsx-runtime";
4147
+ import { jsx as jsx330, jsxs as jsxs213 } from "react/jsx-runtime";
4012
4148
  var Progress = (props) => {
4013
4149
  const {
4014
4150
  value,
@@ -4018,8 +4154,8 @@ var Progress = (props) => {
4018
4154
  showLabel = false
4019
4155
  } = props;
4020
4156
  const percentage = Math.min(100, Math.max(0, value / max * 100));
4021
- return /* @__PURE__ */ jsxs212("div", { className: clsx_default("lib-xplat-progress", size, type), children: [
4022
- /* @__PURE__ */ jsx328(
4157
+ return /* @__PURE__ */ jsxs213("div", { className: clsx_default("lib-xplat-progress", size, type), children: [
4158
+ /* @__PURE__ */ jsx330(
4023
4159
  "div",
4024
4160
  {
4025
4161
  className: "track",
@@ -4027,7 +4163,7 @@ var Progress = (props) => {
4027
4163
  "aria-valuenow": value,
4028
4164
  "aria-valuemin": 0,
4029
4165
  "aria-valuemax": max,
4030
- children: /* @__PURE__ */ jsx328(
4166
+ children: /* @__PURE__ */ jsx330(
4031
4167
  "div",
4032
4168
  {
4033
4169
  className: "bar",
@@ -4036,7 +4172,7 @@ var Progress = (props) => {
4036
4172
  )
4037
4173
  }
4038
4174
  ),
4039
- showLabel && /* @__PURE__ */ jsxs212("span", { className: "label", children: [
4175
+ showLabel && /* @__PURE__ */ jsxs213("span", { className: "label", children: [
4040
4176
  Math.round(percentage),
4041
4177
  "%"
4042
4178
  ] })
@@ -4046,17 +4182,17 @@ Progress.displayName = "Progress";
4046
4182
  var Progress_default = Progress;
4047
4183
 
4048
4184
  // src/components/Radio/RadioGroupContext.tsx
4049
- import React25 from "react";
4050
- var RadioGroupContext = React25.createContext(
4185
+ import React27 from "react";
4186
+ var RadioGroupContext = React27.createContext(
4051
4187
  null
4052
4188
  );
4053
4189
  var useRadioGroupContext = () => {
4054
- return React25.useContext(RadioGroupContext);
4190
+ return React27.useContext(RadioGroupContext);
4055
4191
  };
4056
4192
  var RadioGroupContext_default = RadioGroupContext;
4057
4193
 
4058
4194
  // src/components/Radio/Radio.tsx
4059
- import { jsx as jsx329, jsxs as jsxs213 } from "react/jsx-runtime";
4195
+ import { jsx as jsx331, jsxs as jsxs214 } from "react/jsx-runtime";
4060
4196
  var Radio = (props) => {
4061
4197
  const {
4062
4198
  label,
@@ -4074,7 +4210,7 @@ var Radio = (props) => {
4074
4210
  value,
4075
4211
  onChange: rest.onChange
4076
4212
  };
4077
- return /* @__PURE__ */ jsxs213(
4213
+ return /* @__PURE__ */ jsxs214(
4078
4214
  "label",
4079
4215
  {
4080
4216
  className: clsx_default(
@@ -4084,18 +4220,18 @@ var Radio = (props) => {
4084
4220
  localChecked ? "checked" : void 0
4085
4221
  ),
4086
4222
  children: [
4087
- /* @__PURE__ */ jsx329("input", { ...rest, ...inputProps, checked: localChecked, type: "radio" }),
4088
- /* @__PURE__ */ jsx329(
4223
+ /* @__PURE__ */ jsx331("input", { ...rest, ...inputProps, checked: localChecked, type: "radio" }),
4224
+ /* @__PURE__ */ jsx331(
4089
4225
  "div",
4090
4226
  {
4091
4227
  className: clsx_default(
4092
4228
  "circle",
4093
4229
  localChecked ? "checked" : void 0
4094
4230
  ),
4095
- children: localChecked && /* @__PURE__ */ jsx329("div", { className: "inner-circle" })
4231
+ children: localChecked && /* @__PURE__ */ jsx331("div", { className: "inner-circle" })
4096
4232
  }
4097
4233
  ),
4098
- label && /* @__PURE__ */ jsx329("span", { children: label })
4234
+ label && /* @__PURE__ */ jsx331("span", { children: label })
4099
4235
  ]
4100
4236
  }
4101
4237
  );
@@ -4104,28 +4240,28 @@ Radio.displayName = "Radio";
4104
4240
  var Radio_default = Radio;
4105
4241
 
4106
4242
  // src/components/Radio/RadioGroup.tsx
4107
- import { Fragment as Fragment4, jsx as jsx330 } from "react/jsx-runtime";
4243
+ import { Fragment as Fragment4, jsx as jsx332 } from "react/jsx-runtime";
4108
4244
  var RadioGroup = (props) => {
4109
4245
  const { children, ...rest } = props;
4110
- return /* @__PURE__ */ jsx330(Fragment4, { children: /* @__PURE__ */ jsx330(RadioGroupContext_default.Provider, { value: rest, children }) });
4246
+ return /* @__PURE__ */ jsx332(Fragment4, { children: /* @__PURE__ */ jsx332(RadioGroupContext_default.Provider, { value: rest, children }) });
4111
4247
  };
4112
4248
  RadioGroup.displayName = "RadioGroup";
4113
4249
  var RadioGroup_default = RadioGroup;
4114
4250
 
4115
4251
  // src/components/Select/Select.tsx
4116
- import React28 from "react";
4252
+ import React30 from "react";
4117
4253
 
4118
4254
  // src/components/Select/context.ts
4119
- import React26 from "react";
4120
- var SelectContext = React26.createContext(null);
4255
+ import React28 from "react";
4256
+ var SelectContext = React28.createContext(null);
4121
4257
  var context_default = SelectContext;
4122
4258
 
4123
4259
  // src/components/Select/SelectItem.tsx
4124
- import React27 from "react";
4125
- import { jsx as jsx331 } from "react/jsx-runtime";
4260
+ import React29 from "react";
4261
+ import { jsx as jsx333 } from "react/jsx-runtime";
4126
4262
  var SelectItem = (props) => {
4127
4263
  const { children, value, onClick, disabled = false } = props;
4128
- const ctx = React27.useContext(context_default);
4264
+ const ctx = React29.useContext(context_default);
4129
4265
  const handleClick = (e) => {
4130
4266
  e.preventDefault();
4131
4267
  e.stopPropagation();
@@ -4134,7 +4270,7 @@ var SelectItem = (props) => {
4134
4270
  ctx?.close();
4135
4271
  onClick?.();
4136
4272
  };
4137
- return /* @__PURE__ */ jsx331(
4273
+ return /* @__PURE__ */ jsx333(
4138
4274
  "div",
4139
4275
  {
4140
4276
  className: clsx_default("select-item", disabled && "disabled"),
@@ -4155,7 +4291,7 @@ SelectItem.displayName = "Select.Item";
4155
4291
  var SelectItem_default = SelectItem;
4156
4292
 
4157
4293
  // src/components/Select/Select.tsx
4158
- import { jsx as jsx332, jsxs as jsxs214 } from "react/jsx-runtime";
4294
+ import { jsx as jsx334, jsxs as jsxs215 } from "react/jsx-runtime";
4159
4295
  var ANIMATION_DURATION_MS3 = 200;
4160
4296
  var SelectRoot = (props) => {
4161
4297
  const {
@@ -4167,26 +4303,26 @@ var SelectRoot = (props) => {
4167
4303
  error = false,
4168
4304
  size = "md"
4169
4305
  } = props;
4170
- const itemChildren = React28.Children.toArray(children).filter(
4171
- (child) => React28.isValidElement(child) && child.type === SelectItem_default
4306
+ const itemChildren = React30.Children.toArray(children).filter(
4307
+ (child) => React30.isValidElement(child) && child.type === SelectItem_default
4172
4308
  );
4173
4309
  const isControlled = valueProp !== void 0;
4174
- const [isOpen, setOpen] = React28.useState(false);
4175
- const [uncontrolledLabel, setUncontrolledLabel] = React28.useState(null);
4176
- const controlledLabel = React28.useMemo(() => {
4310
+ const [isOpen, setOpen] = React30.useState(false);
4311
+ const [uncontrolledLabel, setUncontrolledLabel] = React30.useState(null);
4312
+ const controlledLabel = React30.useMemo(() => {
4177
4313
  if (!isControlled) return null;
4178
4314
  const match = itemChildren.find((child) => child.props.value === valueProp);
4179
4315
  return match ? match.props.children : null;
4180
4316
  }, [isControlled, valueProp, itemChildren]);
4181
4317
  const selectedLabel = isControlled ? controlledLabel : uncontrolledLabel;
4182
- const triggerRef = React28.useRef(null);
4183
- const contentRef = React28.useRef(null);
4184
- const [mounted, setMounted] = React28.useState(false);
4185
- const [visible, setVisible] = React28.useState(false);
4186
- React28.useEffect(() => {
4318
+ const triggerRef = React30.useRef(null);
4319
+ const contentRef = React30.useRef(null);
4320
+ const [mounted, setMounted] = React30.useState(false);
4321
+ const [visible, setVisible] = React30.useState(false);
4322
+ React30.useEffect(() => {
4187
4323
  if (disabled && isOpen) setOpen(false);
4188
4324
  }, [disabled, isOpen]);
4189
- React28.useEffect(() => {
4325
+ React30.useEffect(() => {
4190
4326
  if (isOpen) {
4191
4327
  setMounted(true);
4192
4328
  const t2 = setTimeout(() => setVisible(true), 1);
@@ -4196,12 +4332,12 @@ var SelectRoot = (props) => {
4196
4332
  const t = setTimeout(() => setMounted(false), ANIMATION_DURATION_MS3);
4197
4333
  return () => clearTimeout(t);
4198
4334
  }, [isOpen]);
4199
- const open = React28.useCallback(() => setOpen(true), []);
4200
- const close = React28.useCallback(() => setOpen(false), []);
4201
- const toggle = React28.useCallback(() => setOpen((prev) => !prev), []);
4335
+ const open = React30.useCallback(() => setOpen(true), []);
4336
+ const close = React30.useCallback(() => setOpen(false), []);
4337
+ const toggle = React30.useCallback(() => setOpen((prev) => !prev), []);
4202
4338
  useClickOutside_default([contentRef, triggerRef], close, isOpen);
4203
4339
  const position = useAutoPosition_default(triggerRef, contentRef, mounted);
4204
- const setSelected = React28.useCallback(
4340
+ const setSelected = React30.useCallback(
4205
4341
  (label, itemValue) => {
4206
4342
  if (!isControlled) {
4207
4343
  setUncontrolledLabel(label);
@@ -4210,7 +4346,7 @@ var SelectRoot = (props) => {
4210
4346
  },
4211
4347
  [isControlled, onChange]
4212
4348
  );
4213
- const ctxValue = React28.useMemo(
4349
+ const ctxValue = React30.useMemo(
4214
4350
  () => ({
4215
4351
  isOpen,
4216
4352
  mounted,
@@ -4231,7 +4367,7 @@ var SelectRoot = (props) => {
4231
4367
  if (disabled) return;
4232
4368
  toggle();
4233
4369
  };
4234
- return /* @__PURE__ */ jsx332(context_default.Provider, { value: ctxValue, children: /* @__PURE__ */ jsxs214(
4370
+ return /* @__PURE__ */ jsx334(context_default.Provider, { value: ctxValue, children: /* @__PURE__ */ jsxs215(
4235
4371
  "div",
4236
4372
  {
4237
4373
  className: clsx_default(
@@ -4242,7 +4378,7 @@ var SelectRoot = (props) => {
4242
4378
  mounted && "is-open"
4243
4379
  ),
4244
4380
  children: [
4245
- /* @__PURE__ */ jsxs214(
4381
+ /* @__PURE__ */ jsxs215(
4246
4382
  "div",
4247
4383
  {
4248
4384
  ref: triggerRef,
@@ -4266,7 +4402,7 @@ var SelectRoot = (props) => {
4266
4402
  }
4267
4403
  },
4268
4404
  children: [
4269
- /* @__PURE__ */ jsx332(
4405
+ /* @__PURE__ */ jsx334(
4270
4406
  "span",
4271
4407
  {
4272
4408
  className: clsx_default(
@@ -4276,25 +4412,25 @@ var SelectRoot = (props) => {
4276
4412
  children: selectedLabel ?? placeholder
4277
4413
  }
4278
4414
  ),
4279
- /* @__PURE__ */ jsx332(
4415
+ /* @__PURE__ */ jsx334(
4280
4416
  "span",
4281
4417
  {
4282
4418
  className: clsx_default("select-trigger-icon", isOpen && "open"),
4283
4419
  "aria-hidden": true,
4284
- children: /* @__PURE__ */ jsx332(ChevronDownIcon_default, {})
4420
+ children: /* @__PURE__ */ jsx334(ChevronDownIcon_default, {})
4285
4421
  }
4286
4422
  )
4287
4423
  ]
4288
4424
  }
4289
4425
  ),
4290
- mounted && /* @__PURE__ */ jsx332(Portal_default, { children: /* @__PURE__ */ jsx332(
4426
+ mounted && /* @__PURE__ */ jsx334(Portal_default, { children: /* @__PURE__ */ jsx334(
4291
4427
  "div",
4292
4428
  {
4293
4429
  className: clsx_default("lib-xplat-select-content", position.direction, stateClass),
4294
4430
  ref: contentRef,
4295
4431
  style: { ...position.position, width: triggerRef.current?.offsetWidth },
4296
4432
  role: "listbox",
4297
- children: /* @__PURE__ */ jsx332(context_default.Provider, { value: ctxValue, children: itemChildren })
4433
+ children: /* @__PURE__ */ jsx334(context_default.Provider, { value: ctxValue, children: itemChildren })
4298
4434
  }
4299
4435
  ) })
4300
4436
  ]
@@ -4308,7 +4444,7 @@ var Select = Object.assign(SelectRoot, {
4308
4444
  var Select_default = Select;
4309
4445
 
4310
4446
  // src/components/Skeleton/Skeleton.tsx
4311
- import { jsx as jsx333 } from "react/jsx-runtime";
4447
+ import { jsx as jsx335 } from "react/jsx-runtime";
4312
4448
  var SIZE_MAP = {
4313
4449
  xs: "var(--spacing-size-1)",
4314
4450
  sm: "var(--spacing-size-2)",
@@ -4324,7 +4460,7 @@ var Skeleton = (props) => {
4324
4460
  ...width != null && { width: SIZE_MAP[width] },
4325
4461
  ...height != null && { height: SIZE_MAP[height] }
4326
4462
  };
4327
- return /* @__PURE__ */ jsx333(
4463
+ return /* @__PURE__ */ jsx335(
4328
4464
  "div",
4329
4465
  {
4330
4466
  className: clsx_default("lib-xplat-skeleton", variant),
@@ -4337,20 +4473,20 @@ Skeleton.displayName = "Skeleton";
4337
4473
  var Skeleton_default = Skeleton;
4338
4474
 
4339
4475
  // src/components/Spinner/Spinner.tsx
4340
- import { jsx as jsx334, jsxs as jsxs215 } from "react/jsx-runtime";
4476
+ import { jsx as jsx336, jsxs as jsxs216 } from "react/jsx-runtime";
4341
4477
  var Spinner = (props) => {
4342
4478
  const {
4343
4479
  size = "md",
4344
4480
  type = "brand"
4345
4481
  } = props;
4346
- return /* @__PURE__ */ jsx334(
4482
+ return /* @__PURE__ */ jsx336(
4347
4483
  "div",
4348
4484
  {
4349
4485
  className: clsx_default("lib-xplat-spinner", size, type),
4350
4486
  role: "status",
4351
4487
  "aria-label": "\uB85C\uB529 \uC911",
4352
- children: /* @__PURE__ */ jsxs215("svg", { viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
4353
- /* @__PURE__ */ jsx334(
4488
+ children: /* @__PURE__ */ jsxs216("svg", { viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
4489
+ /* @__PURE__ */ jsx336(
4354
4490
  "circle",
4355
4491
  {
4356
4492
  className: "track",
@@ -4360,7 +4496,7 @@ var Spinner = (props) => {
4360
4496
  strokeWidth: "3"
4361
4497
  }
4362
4498
  ),
4363
- /* @__PURE__ */ jsx334(
4499
+ /* @__PURE__ */ jsx336(
4364
4500
  "circle",
4365
4501
  {
4366
4502
  className: "indicator",
@@ -4379,20 +4515,20 @@ Spinner.displayName = "Spinner";
4379
4515
  var Spinner_default = Spinner;
4380
4516
 
4381
4517
  // src/components/Steps/Steps.tsx
4382
- import { jsx as jsx335, jsxs as jsxs216 } from "react/jsx-runtime";
4518
+ import { jsx as jsx337, jsxs as jsxs217 } from "react/jsx-runtime";
4383
4519
  var Steps = (props) => {
4384
4520
  const {
4385
4521
  items,
4386
4522
  current,
4387
4523
  type = "brand"
4388
4524
  } = props;
4389
- return /* @__PURE__ */ jsx335("div", { className: clsx_default("lib-xplat-steps", type), children: items.map((item, index) => {
4525
+ return /* @__PURE__ */ jsx337("div", { className: clsx_default("lib-xplat-steps", type), children: items.map((item, index) => {
4390
4526
  const status = index < current ? "completed" : index === current ? "active" : "pending";
4391
- return /* @__PURE__ */ jsxs216("div", { className: clsx_default("step-item", status), children: [
4392
- /* @__PURE__ */ jsx335("div", { className: "step-circle", children: status === "completed" ? /* @__PURE__ */ jsx335(CheckIcon_default, {}) : /* @__PURE__ */ jsx335("span", { children: index + 1 }) }),
4393
- /* @__PURE__ */ jsxs216("div", { className: "step-content", children: [
4394
- /* @__PURE__ */ jsx335("span", { className: "step-title", children: item.title }),
4395
- item.description && /* @__PURE__ */ jsx335("span", { className: "step-description", children: item.description })
4527
+ return /* @__PURE__ */ jsxs217("div", { className: clsx_default("step-item", status), children: [
4528
+ /* @__PURE__ */ jsx337("div", { className: "step-circle", children: status === "completed" ? /* @__PURE__ */ jsx337(CheckIcon_default, {}) : /* @__PURE__ */ jsx337("span", { children: index + 1 }) }),
4529
+ /* @__PURE__ */ jsxs217("div", { className: "step-content", children: [
4530
+ /* @__PURE__ */ jsx337("span", { className: "step-title", children: item.title }),
4531
+ item.description && /* @__PURE__ */ jsx337("span", { className: "step-description", children: item.description })
4396
4532
  ] })
4397
4533
  ] }, index);
4398
4534
  }) });
@@ -4401,8 +4537,8 @@ Steps.displayName = "Steps";
4401
4537
  var Steps_default = Steps;
4402
4538
 
4403
4539
  // src/components/Swiper/Swiper.tsx
4404
- import React29 from "react";
4405
- import { jsx as jsx336, jsxs as jsxs217 } from "react/jsx-runtime";
4540
+ import React31 from "react";
4541
+ import { jsx as jsx338, jsxs as jsxs218 } from "react/jsx-runtime";
4406
4542
  var Swiper = (props) => {
4407
4543
  const {
4408
4544
  auto = false,
@@ -4425,23 +4561,23 @@ var Swiper = (props) => {
4425
4561
  const maxIndex = Math.max(0, totalSlides - viewItemCount);
4426
4562
  const useLoop = loop && canSlide;
4427
4563
  const cloneCount = useLoop ? totalSlides : 0;
4428
- const extendedItems = React29.useMemo(() => {
4564
+ const extendedItems = React31.useMemo(() => {
4429
4565
  if (!useLoop) return items;
4430
4566
  return [...items, ...items, ...items];
4431
4567
  }, [items, useLoop]);
4432
4568
  const initialIdx = Math.max(0, Math.min(indexProp ?? 0, maxIndex));
4433
- const [innerIndex, setInnerIndex] = React29.useState(
4569
+ const [innerIndex, setInnerIndex] = React31.useState(
4434
4570
  useLoop ? cloneCount + initialIdx : initialIdx
4435
4571
  );
4436
- const [isDragging, setIsDragging] = React29.useState(false);
4437
- const [dragOffset, setDragOffset] = React29.useState(0);
4438
- const [animated, setAnimated] = React29.useState(true);
4439
- const [containerWidth, setContainerWidth] = React29.useState(0);
4440
- const containerRef = React29.useRef(null);
4441
- const startXRef = React29.useRef(0);
4442
- const startTimeRef = React29.useRef(0);
4443
- const autoplayTimerRef = React29.useRef(null);
4444
- React29.useEffect(() => {
4572
+ const [isDragging, setIsDragging] = React31.useState(false);
4573
+ const [dragOffset, setDragOffset] = React31.useState(0);
4574
+ const [animated, setAnimated] = React31.useState(true);
4575
+ const [containerWidth, setContainerWidth] = React31.useState(0);
4576
+ const containerRef = React31.useRef(null);
4577
+ const startXRef = React31.useRef(0);
4578
+ const startTimeRef = React31.useRef(0);
4579
+ const autoplayTimerRef = React31.useRef(null);
4580
+ React31.useEffect(() => {
4445
4581
  const el = containerRef.current;
4446
4582
  if (!el) return;
4447
4583
  const ro = new ResizeObserver((entries) => {
@@ -4460,7 +4596,7 @@ var Swiper = (props) => {
4460
4596
  return ((inner - cloneCount) % totalSlides + totalSlides) % totalSlides;
4461
4597
  };
4462
4598
  const realIndex = getRealIndex(innerIndex);
4463
- const moveToInner = React29.useCallback(
4599
+ const moveToInner = React31.useCallback(
4464
4600
  (idx, withAnim = true) => {
4465
4601
  if (!useLoop) {
4466
4602
  setAnimated(withAnim);
@@ -4488,7 +4624,7 @@ var Swiper = (props) => {
4488
4624
  },
4489
4625
  [useLoop, cloneCount, totalSlides]
4490
4626
  );
4491
- const handleTransitionEnd = React29.useCallback(() => {
4627
+ const handleTransitionEnd = React31.useCallback(() => {
4492
4628
  if (!useLoop) return;
4493
4629
  const real = getRealIndex(innerIndex);
4494
4630
  const canonical = cloneCount + real;
@@ -4498,7 +4634,7 @@ var Swiper = (props) => {
4498
4634
  }
4499
4635
  onChange?.(Math.min(real, maxIndex));
4500
4636
  }, [useLoop, innerIndex, cloneCount, totalSlides, maxIndex, onChange]);
4501
- const slideTo = React29.useCallback(
4637
+ const slideTo = React31.useCallback(
4502
4638
  (logicalIndex) => {
4503
4639
  if (!canSlide) return;
4504
4640
  const clamped = useLoop ? logicalIndex : Math.max(0, Math.min(logicalIndex, maxIndex));
@@ -4508,7 +4644,7 @@ var Swiper = (props) => {
4508
4644
  },
4509
4645
  [canSlide, useLoop, cloneCount, maxIndex, onChange, moveToInner]
4510
4646
  );
4511
- const slideNext = React29.useCallback(() => {
4647
+ const slideNext = React31.useCallback(() => {
4512
4648
  if (!canSlide) return;
4513
4649
  const nextInner = innerIndex + slideBy;
4514
4650
  if (useLoop) {
@@ -4517,7 +4653,7 @@ var Swiper = (props) => {
4517
4653
  moveToInner(Math.min(nextInner, maxIndex), true);
4518
4654
  }
4519
4655
  }, [canSlide, useLoop, innerIndex, slideBy, maxIndex, moveToInner]);
4520
- const slidePrev = React29.useCallback(() => {
4656
+ const slidePrev = React31.useCallback(() => {
4521
4657
  if (!canSlide) return;
4522
4658
  const prevInner = innerIndex - slideBy;
4523
4659
  if (useLoop) {
@@ -4526,7 +4662,7 @@ var Swiper = (props) => {
4526
4662
  moveToInner(Math.max(prevInner, 0), true);
4527
4663
  }
4528
4664
  }, [canSlide, useLoop, innerIndex, slideBy, moveToInner]);
4529
- React29.useEffect(() => {
4665
+ React31.useEffect(() => {
4530
4666
  if (indexProp === void 0) return;
4531
4667
  const clamped = Math.max(0, Math.min(indexProp, maxIndex));
4532
4668
  const target = useLoop ? cloneCount + clamped : clamped;
@@ -4534,12 +4670,12 @@ var Swiper = (props) => {
4534
4670
  moveToInner(target, true);
4535
4671
  }
4536
4672
  }, [indexProp]);
4537
- React29.useImperativeHandle(swiperRef, () => ({
4673
+ React31.useImperativeHandle(swiperRef, () => ({
4538
4674
  slidePrev,
4539
4675
  slideNext,
4540
4676
  slideTo
4541
4677
  }));
4542
- React29.useEffect(() => {
4678
+ React31.useEffect(() => {
4543
4679
  if (!auto || !canSlide) return;
4544
4680
  autoplayTimerRef.current = setInterval(slideNext, autoplayDelay);
4545
4681
  return () => {
@@ -4562,7 +4698,7 @@ var Swiper = (props) => {
4562
4698
  startXRef.current = getClientX(e);
4563
4699
  startTimeRef.current = Date.now();
4564
4700
  };
4565
- React29.useEffect(() => {
4701
+ React31.useEffect(() => {
4566
4702
  if (!isDragging) return;
4567
4703
  const handleMove = (e) => {
4568
4704
  setDragOffset(getClientX(e) - startXRef.current);
@@ -4600,8 +4736,8 @@ var Swiper = (props) => {
4600
4736
  }, [isDragging, dragOffset, innerIndex, useLoop, maxIndex, slideStep, moveToInner]);
4601
4737
  const slideWidthPercent = 100 / viewItemCount;
4602
4738
  const gapAdjust = spaceBetween * (viewItemCount - 1) / viewItemCount;
4603
- const slideElements = React29.useMemo(
4604
- () => extendedItems.map((item, idx) => /* @__PURE__ */ jsx336(
4739
+ const slideElements = React31.useMemo(
4740
+ () => extendedItems.map((item, idx) => /* @__PURE__ */ jsx338(
4605
4741
  "div",
4606
4742
  {
4607
4743
  className: "lib-xplat-swiper__slide",
@@ -4620,14 +4756,14 @@ var Swiper = (props) => {
4620
4756
  Math.floor(realIndex / slideBy),
4621
4757
  totalSteps - 1
4622
4758
  );
4623
- return /* @__PURE__ */ jsxs217("div", { className: "lib-xplat-swiper", ref: containerRef, children: [
4624
- /* @__PURE__ */ jsx336(
4759
+ return /* @__PURE__ */ jsxs218("div", { className: "lib-xplat-swiper", ref: containerRef, children: [
4760
+ /* @__PURE__ */ jsx338(
4625
4761
  "div",
4626
4762
  {
4627
4763
  className: "lib-xplat-swiper__viewport",
4628
4764
  onMouseDown: handleDragStart,
4629
4765
  onTouchStart: handleDragStart,
4630
- children: /* @__PURE__ */ jsx336(
4766
+ children: /* @__PURE__ */ jsx338(
4631
4767
  "div",
4632
4768
  {
4633
4769
  className: clsx_default(
@@ -4645,7 +4781,7 @@ var Swiper = (props) => {
4645
4781
  )
4646
4782
  }
4647
4783
  ),
4648
- showProgress && canSlide && /* @__PURE__ */ jsx336("div", { className: "lib-xplat-swiper__progress", children: /* @__PURE__ */ jsx336("div", { className: "lib-xplat-swiper__progress-track", children: /* @__PURE__ */ jsx336(
4784
+ showProgress && canSlide && /* @__PURE__ */ jsx338("div", { className: "lib-xplat-swiper__progress", children: /* @__PURE__ */ jsx338("div", { className: "lib-xplat-swiper__progress-track", children: /* @__PURE__ */ jsx338(
4649
4785
  "span",
4650
4786
  {
4651
4787
  className: "lib-xplat-swiper__progress-fill",
@@ -4655,7 +4791,7 @@ var Swiper = (props) => {
4655
4791
  }
4656
4792
  }
4657
4793
  ) }) }),
4658
- canSlide && /* @__PURE__ */ jsx336("div", { className: "lib-xplat-swiper__dots", children: Array.from({ length: totalSteps }, (_, i) => /* @__PURE__ */ jsx336(
4794
+ canSlide && /* @__PURE__ */ jsx338("div", { className: "lib-xplat-swiper__dots", children: Array.from({ length: totalSteps }, (_, i) => /* @__PURE__ */ jsx338(
4659
4795
  "button",
4660
4796
  {
4661
4797
  className: clsx_default(
@@ -4673,8 +4809,8 @@ Swiper.displayName = "Swiper";
4673
4809
  var Swiper_default = Swiper;
4674
4810
 
4675
4811
  // src/components/Switch/Switch.tsx
4676
- import React30 from "react";
4677
- import { jsx as jsx337 } from "react/jsx-runtime";
4812
+ import React32 from "react";
4813
+ import { jsx as jsx339 } from "react/jsx-runtime";
4678
4814
  var KNOB_TRANSITION_MS = 250;
4679
4815
  var Switch = (props) => {
4680
4816
  const {
@@ -4684,9 +4820,9 @@ var Switch = (props) => {
4684
4820
  disabled,
4685
4821
  onChange
4686
4822
  } = props;
4687
- const [isAnimating, setIsAnimating] = React30.useState(false);
4688
- const timeoutRef = React30.useRef(null);
4689
- React30.useEffect(() => {
4823
+ const [isAnimating, setIsAnimating] = React32.useState(false);
4824
+ const timeoutRef = React32.useRef(null);
4825
+ React32.useEffect(() => {
4690
4826
  return () => {
4691
4827
  if (timeoutRef.current) clearTimeout(timeoutRef.current);
4692
4828
  };
@@ -4701,7 +4837,7 @@ var Switch = (props) => {
4701
4837
  timeoutRef.current = null;
4702
4838
  }, KNOB_TRANSITION_MS);
4703
4839
  };
4704
- return /* @__PURE__ */ jsx337(
4840
+ return /* @__PURE__ */ jsx339(
4705
4841
  "div",
4706
4842
  {
4707
4843
  className: clsx_default(
@@ -4714,7 +4850,7 @@ var Switch = (props) => {
4714
4850
  ),
4715
4851
  onClick: handleClick,
4716
4852
  "aria-disabled": disabled || isAnimating,
4717
- children: /* @__PURE__ */ jsx337("div", { className: clsx_default("knob", value ? "checked" : void 0) })
4853
+ children: /* @__PURE__ */ jsx339("div", { className: clsx_default("knob", value ? "checked" : void 0) })
4718
4854
  }
4719
4855
  );
4720
4856
  };
@@ -4722,26 +4858,27 @@ Switch.displayName = "Switch";
4722
4858
  var Switch_default = Switch;
4723
4859
 
4724
4860
  // src/components/Table/TableContext.tsx
4725
- import React31 from "react";
4726
- var TableContext = React31.createContext(null);
4861
+ import React33 from "react";
4862
+ var TableContext = React33.createContext(null);
4727
4863
  var useTableContext = () => {
4728
- const ctx = React31.useContext(TableContext);
4864
+ const ctx = React33.useContext(TableContext);
4729
4865
  if (!ctx) throw new Error("Table components must be used inside <Table>");
4730
4866
  return ctx;
4731
4867
  };
4732
4868
  var TableContext_default = TableContext;
4733
4869
 
4734
4870
  // src/components/Table/Table.tsx
4735
- import { jsx as jsx338 } from "react/jsx-runtime";
4871
+ import { jsx as jsx340 } from "react/jsx-runtime";
4736
4872
  var Table = (props) => {
4737
4873
  const {
4738
4874
  children,
4875
+ size = "md",
4739
4876
  rowBorderUse = true,
4740
4877
  colBorderUse = true,
4741
4878
  headerSticky = false,
4742
4879
  stickyShadow = true
4743
4880
  } = props;
4744
- return /* @__PURE__ */ jsx338("div", { className: "lib-xplat-table-wrapper", children: /* @__PURE__ */ jsx338(
4881
+ return /* @__PURE__ */ jsx340("div", { className: `lib-xplat-table-wrapper ${size}`, children: /* @__PURE__ */ jsx340(
4745
4882
  TableContext_default.Provider,
4746
4883
  {
4747
4884
  value: {
@@ -4750,7 +4887,7 @@ var Table = (props) => {
4750
4887
  headerSticky,
4751
4888
  stickyShadow
4752
4889
  },
4753
- children: /* @__PURE__ */ jsx338("table", { className: "lib-xplat-table", children })
4890
+ children: /* @__PURE__ */ jsx340("table", { className: "lib-xplat-table", children })
4754
4891
  }
4755
4892
  ) });
4756
4893
  };
@@ -4758,41 +4895,41 @@ Table.displayName = "Table";
4758
4895
  var Table_default = Table;
4759
4896
 
4760
4897
  // src/components/Table/TableBody.tsx
4761
- import { jsx as jsx339 } from "react/jsx-runtime";
4898
+ import { jsx as jsx341 } from "react/jsx-runtime";
4762
4899
  var TableBody = (props) => {
4763
4900
  const { children } = props;
4764
- return /* @__PURE__ */ jsx339("tbody", { children });
4901
+ return /* @__PURE__ */ jsx341("tbody", { children });
4765
4902
  };
4766
4903
  TableBody.displayName = "TableBody";
4767
4904
  var TableBody_default = TableBody;
4768
4905
 
4769
4906
  // src/components/Table/TableCell.tsx
4770
- import React34 from "react";
4907
+ import React36 from "react";
4771
4908
 
4772
4909
  // src/components/Table/TableHeadContext.tsx
4773
- import React32 from "react";
4774
- var TableHeadContext = React32.createContext(
4910
+ import React34 from "react";
4911
+ var TableHeadContext = React34.createContext(
4775
4912
  null
4776
4913
  );
4777
4914
  var useTableHeadContext = () => {
4778
- const ctx = React32.useContext(TableHeadContext);
4915
+ const ctx = React34.useContext(TableHeadContext);
4779
4916
  return ctx;
4780
4917
  };
4781
4918
  var TableHeadContext_default = TableHeadContext;
4782
4919
 
4783
4920
  // src/components/Table/TableRowContext.tsx
4784
- import React33 from "react";
4785
- var TableRowContext = React33.createContext(null);
4921
+ import React35 from "react";
4922
+ var TableRowContext = React35.createContext(null);
4786
4923
  var useTableRowContext = () => {
4787
- const ctx = React33.useContext(TableRowContext);
4924
+ const ctx = React35.useContext(TableRowContext);
4788
4925
  if (!ctx) throw new Error("Table components must be used inside <Table>");
4789
4926
  return ctx;
4790
4927
  };
4791
4928
  var TableRowContext_default = TableRowContext;
4792
4929
 
4793
4930
  // src/components/Table/TableCell.tsx
4794
- import { jsx as jsx340 } from "react/jsx-runtime";
4795
- var TableCell = React34.memo((props) => {
4931
+ import { jsx as jsx342 } from "react/jsx-runtime";
4932
+ var TableCell = React36.memo((props) => {
4796
4933
  const {
4797
4934
  children,
4798
4935
  align = "center",
@@ -4804,9 +4941,9 @@ var TableCell = React34.memo((props) => {
4804
4941
  const { registerStickyCell, stickyCells } = useTableRowContext();
4805
4942
  const { stickyShadow } = useTableContext();
4806
4943
  const headContext = useTableHeadContext();
4807
- const [left, setLeft] = React34.useState(0);
4808
- const cellRef = React34.useRef(null);
4809
- const calculateLeft = React34.useCallback(() => {
4944
+ const [left, setLeft] = React36.useState(0);
4945
+ const cellRef = React36.useRef(null);
4946
+ const calculateLeft = React36.useCallback(() => {
4810
4947
  if (!cellRef.current) return 0;
4811
4948
  let totalLeft = 0;
4812
4949
  for (const ref of stickyCells) {
@@ -4815,7 +4952,7 @@ var TableCell = React34.memo((props) => {
4815
4952
  }
4816
4953
  return totalLeft;
4817
4954
  }, [stickyCells]);
4818
- React34.useEffect(() => {
4955
+ React36.useEffect(() => {
4819
4956
  if (!isSticky || !cellRef.current) return;
4820
4957
  registerStickyCell(cellRef);
4821
4958
  setLeft(calculateLeft());
@@ -4833,7 +4970,7 @@ var TableCell = React34.memo((props) => {
4833
4970
  const CellTag = cellRef.current?.tagName === "TH" ? "th" : "td";
4834
4971
  const isLastSticky = isSticky && stickyCells[stickyCells.length - 1] === cellRef;
4835
4972
  const enableHover = headContext && headContext.cellHover;
4836
- return /* @__PURE__ */ jsx340(
4973
+ return /* @__PURE__ */ jsx342(
4837
4974
  CellTag,
4838
4975
  {
4839
4976
  ref: cellRef,
@@ -4858,21 +4995,21 @@ TableCell.displayName = "TableCell";
4858
4995
  var TableCell_default = TableCell;
4859
4996
 
4860
4997
  // src/components/Table/TableHead.tsx
4861
- import { jsx as jsx341 } from "react/jsx-runtime";
4998
+ import { jsx as jsx343 } from "react/jsx-runtime";
4862
4999
  var TableHead = ({
4863
5000
  children,
4864
5001
  cellHover = false
4865
5002
  }) => {
4866
5003
  const { headerSticky } = useTableContext();
4867
- return /* @__PURE__ */ jsx341(TableHeadContext_default.Provider, { value: { cellHover }, children: /* @__PURE__ */ jsx341("thead", { className: clsx_default(headerSticky ? "table-sticky" : null), children }) });
5004
+ return /* @__PURE__ */ jsx343(TableHeadContext_default.Provider, { value: { cellHover }, children: /* @__PURE__ */ jsx343("thead", { className: clsx_default(headerSticky ? "table-sticky" : null), children }) });
4868
5005
  };
4869
5006
  TableHead.displayName = "TableHead";
4870
5007
  var TableHead_default = TableHead;
4871
5008
 
4872
5009
  // src/components/Table/TableRow.tsx
4873
- import React35 from "react";
4874
- import { jsx as jsx342 } from "react/jsx-runtime";
4875
- var TableRow = React35.memo((props) => {
5010
+ import React37 from "react";
5011
+ import { jsx as jsx344 } from "react/jsx-runtime";
5012
+ var TableRow = React37.memo((props) => {
4876
5013
  const {
4877
5014
  children,
4878
5015
  type = "secondary",
@@ -4880,14 +5017,14 @@ var TableRow = React35.memo((props) => {
4880
5017
  onClick
4881
5018
  } = props;
4882
5019
  const { rowBorderUse } = useTableContext();
4883
- const [stickyCells, setStickyCells] = React35.useState([]);
5020
+ const [stickyCells, setStickyCells] = React37.useState([]);
4884
5021
  const registerStickyCell = (ref) => {
4885
5022
  setStickyCells((prev) => {
4886
5023
  if (prev.includes(ref)) return prev;
4887
5024
  return [...prev, ref];
4888
5025
  });
4889
5026
  };
4890
- return /* @__PURE__ */ jsx342(TableRowContext_default.Provider, { value: { stickyCells, registerStickyCell }, children: /* @__PURE__ */ jsx342(
5027
+ return /* @__PURE__ */ jsx344(TableRowContext_default.Provider, { value: { stickyCells, registerStickyCell }, children: /* @__PURE__ */ jsx344(
4891
5028
  "tr",
4892
5029
  {
4893
5030
  className: clsx_default(
@@ -4905,7 +5042,7 @@ TableRow.displayName = "TableRow";
4905
5042
  var TableRow_default = TableRow;
4906
5043
 
4907
5044
  // src/components/Tag/Tag.tsx
4908
- import { jsx as jsx343, jsxs as jsxs218 } from "react/jsx-runtime";
5045
+ import { jsx as jsx345, jsxs as jsxs219 } from "react/jsx-runtime";
4909
5046
  var Tag = (props) => {
4910
5047
  const {
4911
5048
  children,
@@ -4915,7 +5052,7 @@ var Tag = (props) => {
4915
5052
  disabled = false,
4916
5053
  colorIndex
4917
5054
  } = props;
4918
- return /* @__PURE__ */ jsxs218(
5055
+ return /* @__PURE__ */ jsxs219(
4919
5056
  "span",
4920
5057
  {
4921
5058
  className: clsx_default(
@@ -4926,8 +5063,8 @@ var Tag = (props) => {
4926
5063
  disabled && "disabled"
4927
5064
  ),
4928
5065
  children: [
4929
- /* @__PURE__ */ jsx343("span", { className: "tag-label", children }),
4930
- onClose && /* @__PURE__ */ jsx343("button", { className: "tag-close", onClick: onClose, "aria-label": "\uC0AD\uC81C", disabled, children: /* @__PURE__ */ jsx343(XIcon_default, {}) })
5066
+ /* @__PURE__ */ jsx345("span", { className: "tag-label", children }),
5067
+ onClose && /* @__PURE__ */ jsx345("button", { className: "tag-close", onClick: onClose, "aria-label": "\uC0AD\uC81C", disabled, children: /* @__PURE__ */ jsx345(XIcon_default, {}) })
4931
5068
  ]
4932
5069
  }
4933
5070
  );
@@ -4935,83 +5072,26 @@ var Tag = (props) => {
4935
5072
  Tag.displayName = "Tag";
4936
5073
  var Tag_default = Tag;
4937
5074
 
4938
- // src/components/TextArea/TextArea.tsx
4939
- import React36 from "react";
4940
- import { jsx as jsx344 } from "react/jsx-runtime";
4941
- var TextArea = React36.forwardRef(
4942
- (props, ref) => {
4943
- const { value, onChange, disabled, ...textareaProps } = props;
4944
- const localRef = React36.useRef(null);
4945
- const setRefs = (el) => {
4946
- localRef.current = el;
4947
- if (!ref) return;
4948
- if (typeof ref === "function") {
4949
- ref(el);
4950
- } else if (ref && typeof ref === "object" && "current" in ref) {
4951
- ref.current = el;
4952
- }
4953
- };
4954
- const handleOnChange = (e) => {
4955
- const val = e.target.value;
4956
- if (onChange) {
4957
- const event = {
4958
- ...e,
4959
- target: { value: val }
4960
- };
4961
- onChange(event);
4962
- }
4963
- };
4964
- React36.useEffect(() => {
4965
- const el = localRef.current;
4966
- if (!el) return;
4967
- el.style.height = "0px";
4968
- const nextHeight = Math.min(el.scrollHeight, 400);
4969
- el.style.height = `${nextHeight}px`;
4970
- }, [value]);
4971
- return /* @__PURE__ */ jsx344("div", { className: "lib-xplat-textarea-wrapper", children: /* @__PURE__ */ jsx344(
4972
- "div",
4973
- {
4974
- className: clsx_default(
4975
- "lib-xplat-textarea",
4976
- disabled ? "disabled" : void 0
4977
- ),
4978
- children: /* @__PURE__ */ jsx344(
4979
- "textarea",
4980
- {
4981
- ...textareaProps,
4982
- ref: setRefs,
4983
- disabled,
4984
- value,
4985
- onChange: handleOnChange
4986
- }
4987
- )
4988
- }
4989
- ) });
4990
- }
4991
- );
4992
- TextArea.displayName = "TextArea";
4993
- var TextArea_default = TextArea;
4994
-
4995
5075
  // src/components/Toast/Toast.tsx
4996
- import React37 from "react";
5076
+ import React38 from "react";
4997
5077
  import { createPortal as createPortal3 } from "react-dom";
4998
- import { jsx as jsx345, jsxs as jsxs219 } from "react/jsx-runtime";
4999
- var ToastContext = React37.createContext(null);
5078
+ import { jsx as jsx346, jsxs as jsxs220 } from "react/jsx-runtime";
5079
+ var ToastContext = React38.createContext(null);
5000
5080
  var useToast = () => {
5001
- const ctx = React37.useContext(ToastContext);
5081
+ const ctx = React38.useContext(ToastContext);
5002
5082
  if (!ctx) throw new Error("useToast must be used within ToastProvider");
5003
5083
  return ctx;
5004
5084
  };
5005
5085
  var EXIT_DURATION = 300;
5006
5086
  var ToastItemComponent = ({ item, isExiting, onClose }) => {
5007
- const ref = React37.useRef(null);
5008
- const [height, setHeight] = React37.useState(void 0);
5009
- React37.useEffect(() => {
5087
+ const ref = React38.useRef(null);
5088
+ const [height, setHeight] = React38.useState(void 0);
5089
+ React38.useEffect(() => {
5010
5090
  if (ref.current && !isExiting) {
5011
5091
  setHeight(ref.current.offsetHeight);
5012
5092
  }
5013
5093
  }, [isExiting]);
5014
- return /* @__PURE__ */ jsx345(
5094
+ return /* @__PURE__ */ jsx346(
5015
5095
  "div",
5016
5096
  {
5017
5097
  className: clsx_default("lib-xplat-toast-wrapper", { exit: isExiting }),
@@ -5019,15 +5099,15 @@ var ToastItemComponent = ({ item, isExiting, onClose }) => {
5019
5099
  maxHeight: isExiting ? 0 : height ?? "none",
5020
5100
  marginBottom: isExiting ? 0 : void 0
5021
5101
  },
5022
- children: /* @__PURE__ */ jsxs219(
5102
+ children: /* @__PURE__ */ jsxs220(
5023
5103
  "div",
5024
5104
  {
5025
5105
  ref,
5026
5106
  className: clsx_default("lib-xplat-toast", item.type, { exit: isExiting }),
5027
5107
  role: "alert",
5028
5108
  children: [
5029
- /* @__PURE__ */ jsx345("span", { className: "message", children: item.message }),
5030
- /* @__PURE__ */ jsx345("button", { className: "close-btn", onClick: onClose, "aria-label": "\uB2EB\uAE30", children: "\xD7" })
5109
+ /* @__PURE__ */ jsx346("span", { className: "message", children: item.message }),
5110
+ /* @__PURE__ */ jsx346("button", { className: "close-btn", onClick: onClose, "aria-label": "\uB2EB\uAE30", children: "\xD7" })
5031
5111
  ]
5032
5112
  }
5033
5113
  )
@@ -5038,13 +5118,13 @@ var ToastProvider = ({
5038
5118
  children,
5039
5119
  position = "top-right"
5040
5120
  }) => {
5041
- const [toasts, setToasts] = React37.useState([]);
5042
- const [removing, setRemoving] = React37.useState(/* @__PURE__ */ new Set());
5043
- const [mounted, setMounted] = React37.useState(false);
5044
- React37.useEffect(() => {
5121
+ const [toasts, setToasts] = React38.useState([]);
5122
+ const [removing, setRemoving] = React38.useState(/* @__PURE__ */ new Set());
5123
+ const [mounted, setMounted] = React38.useState(false);
5124
+ React38.useEffect(() => {
5045
5125
  setMounted(true);
5046
5126
  }, []);
5047
- const remove = React37.useCallback((id) => {
5127
+ const remove = React38.useCallback((id) => {
5048
5128
  setRemoving((prev) => new Set(prev).add(id));
5049
5129
  setTimeout(() => {
5050
5130
  setToasts((prev) => prev.filter((t) => t.id !== id));
@@ -5055,7 +5135,7 @@ var ToastProvider = ({
5055
5135
  });
5056
5136
  }, EXIT_DURATION);
5057
5137
  }, []);
5058
- const toast = React37.useCallback(
5138
+ const toast = React38.useCallback(
5059
5139
  (type, message, duration = 3e3) => {
5060
5140
  const id = `${Date.now()}-${Math.random()}`;
5061
5141
  setToasts((prev) => [...prev, { id, type, message }]);
@@ -5065,10 +5145,10 @@ var ToastProvider = ({
5065
5145
  },
5066
5146
  [remove]
5067
5147
  );
5068
- return /* @__PURE__ */ jsxs219(ToastContext.Provider, { value: { toast }, children: [
5148
+ return /* @__PURE__ */ jsxs220(ToastContext.Provider, { value: { toast }, children: [
5069
5149
  children,
5070
5150
  mounted && createPortal3(
5071
- /* @__PURE__ */ jsx345("div", { className: clsx_default("lib-xplat-toast-container", position), children: toasts.map((t) => /* @__PURE__ */ jsx345(
5151
+ /* @__PURE__ */ jsx346("div", { className: clsx_default("lib-xplat-toast-container", position), children: toasts.map((t) => /* @__PURE__ */ jsx346(
5072
5152
  ToastItemComponent,
5073
5153
  {
5074
5154
  item: t,
@@ -5084,29 +5164,29 @@ var ToastProvider = ({
5084
5164
  ToastProvider.displayName = "ToastProvider";
5085
5165
 
5086
5166
  // src/components/Tooltip/Tooltip.tsx
5087
- import React38 from "react";
5088
- import { jsx as jsx346, jsxs as jsxs220 } from "react/jsx-runtime";
5167
+ import React39 from "react";
5168
+ import { jsx as jsx347, jsxs as jsxs221 } from "react/jsx-runtime";
5089
5169
  var Tooltip = (props) => {
5090
5170
  const {
5091
5171
  type = "primary",
5092
5172
  description,
5093
5173
  children
5094
5174
  } = props;
5095
- const iconRef = React38.useRef(null);
5096
- return /* @__PURE__ */ jsxs220("div", { className: "lib-xplat-tooltip", children: [
5097
- /* @__PURE__ */ jsx346("div", { className: "tooltip-content", ref: iconRef, children: children || "Tooltip" }),
5098
- /* @__PURE__ */ jsx346("div", { className: clsx_default("tooltip-wrapper", type), children: description })
5175
+ const iconRef = React39.useRef(null);
5176
+ return /* @__PURE__ */ jsxs221("div", { className: "lib-xplat-tooltip", children: [
5177
+ /* @__PURE__ */ jsx347("div", { className: "tooltip-content", ref: iconRef, children: children || "Tooltip" }),
5178
+ /* @__PURE__ */ jsx347("div", { className: clsx_default("tooltip-wrapper", type), children: description })
5099
5179
  ] });
5100
5180
  };
5101
5181
  Tooltip.displayName = "Tooltip";
5102
5182
  var Tooltip_default = Tooltip;
5103
5183
 
5104
5184
  // src/components/Video/Video.tsx
5105
- import React39 from "react";
5106
- import { jsx as jsx347, jsxs as jsxs221 } from "react/jsx-runtime";
5107
- var PipIcon = () => /* @__PURE__ */ jsxs221("svg", { viewBox: "0 0 24 24", width: "1em", height: "1em", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
5108
- /* @__PURE__ */ jsx347("rect", { x: "3", y: "5", width: "18", height: "14", rx: "2" }),
5109
- /* @__PURE__ */ jsx347("rect", { x: "12", y: "11", width: "7", height: "6", rx: "1", fill: "currentColor" })
5185
+ import React40 from "react";
5186
+ import { jsx as jsx348, jsxs as jsxs222 } from "react/jsx-runtime";
5187
+ var PipIcon = () => /* @__PURE__ */ jsxs222("svg", { viewBox: "0 0 24 24", width: "1em", height: "1em", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
5188
+ /* @__PURE__ */ jsx348("rect", { x: "3", y: "5", width: "18", height: "14", rx: "2" }),
5189
+ /* @__PURE__ */ jsx348("rect", { x: "12", y: "11", width: "7", height: "6", rx: "1", fill: "currentColor" })
5110
5190
  ] });
5111
5191
  var formatTime = (sec) => {
5112
5192
  if (!Number.isFinite(sec) || sec < 0) return "0:00";
@@ -5114,7 +5194,7 @@ var formatTime = (sec) => {
5114
5194
  const s = Math.floor(sec % 60);
5115
5195
  return `${m}:${s.toString().padStart(2, "0")}`;
5116
5196
  };
5117
- var Video = React39.forwardRef((props, ref) => {
5197
+ var Video = React40.forwardRef((props, ref) => {
5118
5198
  const {
5119
5199
  src,
5120
5200
  poster,
@@ -5138,21 +5218,21 @@ var Video = React39.forwardRef((props, ref) => {
5138
5218
  children,
5139
5219
  ...rest
5140
5220
  } = props;
5141
- const containerRef = React39.useRef(null);
5142
- const videoRef = React39.useRef(null);
5143
- const [isPlaying, setIsPlaying] = React39.useState(Boolean(autoPlay));
5144
- const [isLoaded, setIsLoaded] = React39.useState(false);
5145
- const [currentTime, setCurrentTime] = React39.useState(0);
5146
- const [duration, setDuration] = React39.useState(0);
5147
- const [buffered, setBuffered] = React39.useState(0);
5148
- const [volume, setVolume] = React39.useState(1);
5149
- const [isMuted, setIsMuted] = React39.useState(Boolean(muted));
5150
- const [isFullscreen, setIsFullscreen] = React39.useState(false);
5151
- const [playbackRate, setPlaybackRate] = React39.useState(1);
5152
- const [rateMenuOpen, setRateMenuOpen] = React39.useState(false);
5153
- const [captionsOn, setCaptionsOn] = React39.useState(false);
5154
- const [isPip, setIsPip] = React39.useState(false);
5155
- const setRefs = React39.useCallback(
5221
+ const containerRef = React40.useRef(null);
5222
+ const videoRef = React40.useRef(null);
5223
+ const [isPlaying, setIsPlaying] = React40.useState(Boolean(autoPlay));
5224
+ const [isLoaded, setIsLoaded] = React40.useState(false);
5225
+ const [currentTime, setCurrentTime] = React40.useState(0);
5226
+ const [duration, setDuration] = React40.useState(0);
5227
+ const [buffered, setBuffered] = React40.useState(0);
5228
+ const [volume, setVolume] = React40.useState(1);
5229
+ const [isMuted, setIsMuted] = React40.useState(Boolean(muted));
5230
+ const [isFullscreen, setIsFullscreen] = React40.useState(false);
5231
+ const [playbackRate, setPlaybackRate] = React40.useState(1);
5232
+ const [rateMenuOpen, setRateMenuOpen] = React40.useState(false);
5233
+ const [captionsOn, setCaptionsOn] = React40.useState(false);
5234
+ const [isPip, setIsPip] = React40.useState(false);
5235
+ const setRefs = React40.useCallback(
5156
5236
  (el) => {
5157
5237
  videoRef.current = el;
5158
5238
  if (typeof ref === "function") ref(el);
@@ -5160,14 +5240,14 @@ var Video = React39.forwardRef((props, ref) => {
5160
5240
  },
5161
5241
  [ref]
5162
5242
  );
5163
- React39.useEffect(() => {
5243
+ React40.useEffect(() => {
5164
5244
  const onFsChange = () => {
5165
5245
  setIsFullscreen(document.fullscreenElement === containerRef.current);
5166
5246
  };
5167
5247
  document.addEventListener("fullscreenchange", onFsChange);
5168
5248
  return () => document.removeEventListener("fullscreenchange", onFsChange);
5169
5249
  }, []);
5170
- React39.useEffect(() => {
5250
+ React40.useEffect(() => {
5171
5251
  const v = videoRef.current;
5172
5252
  if (!v) return;
5173
5253
  const onEnter = () => setIsPip(true);
@@ -5281,13 +5361,13 @@ var Video = React39.forwardRef((props, ref) => {
5281
5361
  const volumePct = (isMuted ? 0 : volume) * 100;
5282
5362
  const VolumeGlyph = isMuted || volume === 0 ? VolumeXIcon_default : volume < 0.5 ? VolumeIcon_default : Volume2Icon_default;
5283
5363
  const pipSupported = typeof document !== "undefined" && "pictureInPictureEnabled" in document && document.pictureInPictureEnabled;
5284
- return /* @__PURE__ */ jsxs221(
5364
+ return /* @__PURE__ */ jsxs222(
5285
5365
  "div",
5286
5366
  {
5287
5367
  ref: containerRef,
5288
5368
  className: clsx_default("lib-xplat-video", showControls && "has-controls"),
5289
5369
  children: [
5290
- /* @__PURE__ */ jsx347(
5370
+ /* @__PURE__ */ jsx348(
5291
5371
  "video",
5292
5372
  {
5293
5373
  ref: setRefs,
@@ -5308,7 +5388,7 @@ var Video = React39.forwardRef((props, ref) => {
5308
5388
  children
5309
5389
  }
5310
5390
  ),
5311
- showCenterPlay && /* @__PURE__ */ jsx347(
5391
+ showCenterPlay && /* @__PURE__ */ jsx348(
5312
5392
  "button",
5313
5393
  {
5314
5394
  type: "button",
@@ -5320,11 +5400,11 @@ var Video = React39.forwardRef((props, ref) => {
5320
5400
  onClick: togglePlay,
5321
5401
  "aria-label": isPlaying ? "\uC77C\uC2DC\uC815\uC9C0" : "\uC7AC\uC0DD",
5322
5402
  tabIndex: -1,
5323
- children: /* @__PURE__ */ jsx347("span", { className: "center-play-icon", children: /* @__PURE__ */ jsx347(PlayCircleIcon_default, {}) })
5403
+ children: /* @__PURE__ */ jsx348("span", { className: "center-play-icon", children: /* @__PURE__ */ jsx348(PlayCircleIcon_default, {}) })
5324
5404
  }
5325
5405
  ),
5326
- showControls && /* @__PURE__ */ jsxs221("div", { className: "controls", onClick: (e) => e.stopPropagation(), children: [
5327
- /* @__PURE__ */ jsx347(
5406
+ showControls && /* @__PURE__ */ jsxs222("div", { className: "controls", onClick: (e) => e.stopPropagation(), children: [
5407
+ /* @__PURE__ */ jsx348(
5328
5408
  "input",
5329
5409
  {
5330
5410
  type: "range",
@@ -5341,29 +5421,29 @@ var Video = React39.forwardRef((props, ref) => {
5341
5421
  }
5342
5422
  }
5343
5423
  ),
5344
- /* @__PURE__ */ jsxs221("div", { className: "controls-row", children: [
5345
- /* @__PURE__ */ jsx347(
5424
+ /* @__PURE__ */ jsxs222("div", { className: "controls-row", children: [
5425
+ /* @__PURE__ */ jsx348(
5346
5426
  "button",
5347
5427
  {
5348
5428
  type: "button",
5349
5429
  className: "control-btn",
5350
5430
  onClick: togglePlay,
5351
5431
  "aria-label": isPlaying ? "\uC77C\uC2DC\uC815\uC9C0" : "\uC7AC\uC0DD",
5352
- children: isPlaying ? /* @__PURE__ */ jsx347(PauseIcon_default, {}) : /* @__PURE__ */ jsx347(PlayIcon_default, {})
5432
+ children: isPlaying ? /* @__PURE__ */ jsx348(PauseIcon_default, {}) : /* @__PURE__ */ jsx348(PlayIcon_default, {})
5353
5433
  }
5354
5434
  ),
5355
- /* @__PURE__ */ jsxs221("div", { className: "volume-group", children: [
5356
- /* @__PURE__ */ jsx347(
5435
+ /* @__PURE__ */ jsxs222("div", { className: "volume-group", children: [
5436
+ /* @__PURE__ */ jsx348(
5357
5437
  "button",
5358
5438
  {
5359
5439
  type: "button",
5360
5440
  className: "control-btn",
5361
5441
  onClick: toggleMute,
5362
5442
  "aria-label": isMuted ? "\uC74C\uC18C\uAC70 \uD574\uC81C" : "\uC74C\uC18C\uAC70",
5363
- children: /* @__PURE__ */ jsx347(VolumeGlyph, {})
5443
+ children: /* @__PURE__ */ jsx348(VolumeGlyph, {})
5364
5444
  }
5365
5445
  ),
5366
- /* @__PURE__ */ jsx347(
5446
+ /* @__PURE__ */ jsx348(
5367
5447
  "input",
5368
5448
  {
5369
5449
  type: "range",
@@ -5378,14 +5458,14 @@ var Video = React39.forwardRef((props, ref) => {
5378
5458
  }
5379
5459
  )
5380
5460
  ] }),
5381
- /* @__PURE__ */ jsxs221("span", { className: "time", children: [
5461
+ /* @__PURE__ */ jsxs222("span", { className: "time", children: [
5382
5462
  formatTime(currentTime),
5383
5463
  " / ",
5384
5464
  formatTime(duration)
5385
5465
  ] }),
5386
- /* @__PURE__ */ jsx347("div", { className: "controls-spacer" }),
5387
- playbackRates && playbackRates.length > 0 && /* @__PURE__ */ jsxs221("div", { className: clsx_default("rate-group", rateMenuOpen && "is-open"), children: [
5388
- /* @__PURE__ */ jsxs221(
5466
+ /* @__PURE__ */ jsx348("div", { className: "controls-spacer" }),
5467
+ playbackRates && playbackRates.length > 0 && /* @__PURE__ */ jsxs222("div", { className: clsx_default("rate-group", rateMenuOpen && "is-open"), children: [
5468
+ /* @__PURE__ */ jsxs222(
5389
5469
  "button",
5390
5470
  {
5391
5471
  type: "button",
@@ -5399,7 +5479,7 @@ var Video = React39.forwardRef((props, ref) => {
5399
5479
  ]
5400
5480
  }
5401
5481
  ),
5402
- rateMenuOpen && /* @__PURE__ */ jsx347("ul", { className: "rate-menu", role: "menu", children: playbackRates.map((r2) => /* @__PURE__ */ jsx347("li", { children: /* @__PURE__ */ jsxs221(
5482
+ rateMenuOpen && /* @__PURE__ */ jsx348("ul", { className: "rate-menu", role: "menu", children: playbackRates.map((r2) => /* @__PURE__ */ jsx348("li", { children: /* @__PURE__ */ jsxs222(
5403
5483
  "button",
5404
5484
  {
5405
5485
  type: "button",
@@ -5413,7 +5493,7 @@ var Video = React39.forwardRef((props, ref) => {
5413
5493
  }
5414
5494
  ) }, r2)) })
5415
5495
  ] }),
5416
- showCaptions && /* @__PURE__ */ jsx347(
5496
+ showCaptions && /* @__PURE__ */ jsx348(
5417
5497
  "button",
5418
5498
  {
5419
5499
  type: "button",
@@ -5421,37 +5501,37 @@ var Video = React39.forwardRef((props, ref) => {
5421
5501
  onClick: toggleCaptions,
5422
5502
  "aria-label": captionsOn ? "\uC790\uB9C9 \uB044\uAE30" : "\uC790\uB9C9 \uCF1C\uAE30",
5423
5503
  "aria-pressed": captionsOn,
5424
- children: /* @__PURE__ */ jsx347(TypeIcon_default, {})
5504
+ children: /* @__PURE__ */ jsx348(TypeIcon_default, {})
5425
5505
  }
5426
5506
  ),
5427
- showPip && pipSupported && /* @__PURE__ */ jsx347(
5507
+ showPip && pipSupported && /* @__PURE__ */ jsx348(
5428
5508
  "button",
5429
5509
  {
5430
5510
  type: "button",
5431
5511
  className: clsx_default("control-btn", isPip && "is-active"),
5432
5512
  onClick: togglePip,
5433
5513
  "aria-label": isPip ? "PIP \uC885\uB8CC" : "PIP",
5434
- children: /* @__PURE__ */ jsx347(PipIcon, {})
5514
+ children: /* @__PURE__ */ jsx348(PipIcon, {})
5435
5515
  }
5436
5516
  ),
5437
- showDownload && /* @__PURE__ */ jsx347(
5517
+ showDownload && /* @__PURE__ */ jsx348(
5438
5518
  "a",
5439
5519
  {
5440
5520
  className: "control-btn",
5441
5521
  href: src,
5442
5522
  download: downloadFileName ?? true,
5443
5523
  "aria-label": "\uB2E4\uC6B4\uB85C\uB4DC",
5444
- children: /* @__PURE__ */ jsx347(DownloadIcon_default, {})
5524
+ children: /* @__PURE__ */ jsx348(DownloadIcon_default, {})
5445
5525
  }
5446
5526
  ),
5447
- /* @__PURE__ */ jsx347(
5527
+ /* @__PURE__ */ jsx348(
5448
5528
  "button",
5449
5529
  {
5450
5530
  type: "button",
5451
5531
  className: "control-btn",
5452
5532
  onClick: toggleFullscreen,
5453
5533
  "aria-label": isFullscreen ? "\uC804\uCCB4\uD654\uBA74 \uC885\uB8CC" : "\uC804\uCCB4\uD654\uBA74",
5454
- children: isFullscreen ? /* @__PURE__ */ jsx347(MinimizeIcon_default, {}) : /* @__PURE__ */ jsx347(MaximizeIcon_default, {})
5534
+ children: isFullscreen ? /* @__PURE__ */ jsx348(MinimizeIcon_default, {}) : /* @__PURE__ */ jsx348(MaximizeIcon_default, {})
5455
5535
  }
5456
5536
  )
5457
5537
  ] })
@@ -5473,6 +5553,7 @@ export {
5473
5553
  Calendar_default as Calendar,
5474
5554
  CardTab_default as CardTab,
5475
5555
  Chart_default as Chart,
5556
+ ChatInput_default as ChatInput,
5476
5557
  CheckBox_default as CheckBox,
5477
5558
  Chip_default as Chip,
5478
5559
  Divider_default as Divider,