@x-plat/design-system 0.7.0 → 0.7.2

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.
Files changed (35) hide show
  1. package/dist/components/AutoResizeTextArea/index.css +1 -1
  2. package/dist/components/Badge/index.cjs +10 -7
  3. package/dist/components/Badge/index.css +13 -13
  4. package/dist/components/Badge/index.d.cts +3 -19
  5. package/dist/components/Badge/index.d.ts +3 -19
  6. package/dist/components/Badge/index.js +8 -6
  7. package/dist/components/ChatInput/index.css +2 -2
  8. package/dist/components/DatePicker/index.css +1 -1
  9. package/dist/components/Input/index.css +1 -1
  10. package/dist/components/NotificationBadge/index.cjs +68 -0
  11. package/dist/components/NotificationBadge/index.css +75 -0
  12. package/dist/components/NotificationBadge/index.d.cts +47 -0
  13. package/dist/components/NotificationBadge/index.d.ts +47 -0
  14. package/dist/components/NotificationBadge/index.js +40 -0
  15. package/dist/components/Select/index.css +4 -2
  16. package/dist/components/Table/index.cjs +2 -0
  17. package/dist/components/Table/index.d.cts +2 -0
  18. package/dist/components/Table/index.d.ts +2 -0
  19. package/dist/components/Table/index.js +2 -0
  20. package/dist/components/TextArea/index.css +1 -1
  21. package/dist/components/index.cjs +268 -264
  22. package/dist/components/index.css +84 -82
  23. package/dist/components/index.d.cts +1 -1
  24. package/dist/components/index.d.ts +1 -1
  25. package/dist/components/index.js +267 -264
  26. package/dist/index.cjs +268 -264
  27. package/dist/index.css +84 -82
  28. package/dist/index.d.cts +1 -1
  29. package/dist/index.d.ts +1 -1
  30. package/dist/index.js +267 -264
  31. package/guidelines/AGENT_PROMPT.md +1 -1
  32. package/guidelines/Guidelines.md +1 -1
  33. package/guidelines/components/feedback.md +39 -11
  34. package/guidelines/components/table.md +68 -5
  35. package/package.json +1 -1
@@ -34,7 +34,7 @@ __export(components_exports, {
34
34
  Alert: () => Alert_default,
35
35
  AutoResizeTextArea: () => AutoResizeTextArea_default,
36
36
  Avatar: () => Avatar_default,
37
- Badge: () => Badge_default,
37
+ Badge: () => NotificationBadge_default,
38
38
  Box: () => Box_default,
39
39
  Breadcrumb: () => Breadcrumb_default,
40
40
  Button: () => Button_default,
@@ -57,6 +57,7 @@ __export(components_exports, {
57
57
  Input: () => Input_default,
58
58
  InputDatePicker: () => InputDatePicker_default,
59
59
  Modal: () => Modal_default,
60
+ NotificationBadge: () => NotificationBadge_default,
60
61
  Pagination: () => Pagination_default,
61
62
  PasswordInput: () => PasswordInput_default,
62
63
  PopOver: () => PopOver_default,
@@ -1680,52 +1681,31 @@ var Avatar = (props) => {
1680
1681
  Avatar.displayName = "Avatar";
1681
1682
  var Avatar_default = Avatar;
1682
1683
 
1683
- // src/components/Badge/Badge.tsx
1684
- var import_jsx_runtime299 = require("react/jsx-runtime");
1685
- var Badge = (props) => {
1686
- const {
1687
- children,
1688
- type = "error",
1689
- count,
1690
- maxCount = 99,
1691
- dot = false,
1692
- size = "md"
1693
- } = props;
1694
- const showBadge = dot || count !== void 0 && count > 0;
1695
- const displayCount = count !== void 0 && count > maxCount ? `${maxCount}+` : count;
1696
- return /* @__PURE__ */ (0, import_jsx_runtime299.jsxs)("div", { className: clsx_default("lib-xplat-badge", size), children: [
1697
- children,
1698
- showBadge && /* @__PURE__ */ (0, import_jsx_runtime299.jsx)("span", { className: clsx_default("badge-indicator", type, { dot }), children: !dot && displayCount })
1699
- ] });
1700
- };
1701
- Badge.displayName = "Badge";
1702
- var Badge_default = Badge;
1703
-
1704
1684
  // src/components/Box/Box.tsx
1705
- var import_jsx_runtime300 = require("react/jsx-runtime");
1685
+ var import_jsx_runtime299 = require("react/jsx-runtime");
1706
1686
  var Box = ({
1707
1687
  children,
1708
1688
  title,
1709
1689
  variant = "outlined",
1710
1690
  padding = "md"
1711
1691
  }) => {
1712
- return /* @__PURE__ */ (0, import_jsx_runtime300.jsxs)("div", { className: clsx_default("lib-xplat-box", variant, `pad-${padding}`), children: [
1713
- title && /* @__PURE__ */ (0, import_jsx_runtime300.jsx)("div", { className: "box-title", children: title }),
1714
- /* @__PURE__ */ (0, import_jsx_runtime300.jsx)("div", { className: "box-content", children })
1692
+ return /* @__PURE__ */ (0, import_jsx_runtime299.jsxs)("div", { className: clsx_default("lib-xplat-box", variant, `pad-${padding}`), children: [
1693
+ title && /* @__PURE__ */ (0, import_jsx_runtime299.jsx)("div", { className: "box-title", children: title }),
1694
+ /* @__PURE__ */ (0, import_jsx_runtime299.jsx)("div", { className: "box-content", children })
1715
1695
  ] });
1716
1696
  };
1717
1697
  Box.displayName = "Box";
1718
1698
  var Box_default = Box;
1719
1699
 
1720
1700
  // src/components/Breadcrumb/Breadcrumb.tsx
1721
- var import_jsx_runtime301 = require("react/jsx-runtime");
1701
+ var import_jsx_runtime300 = require("react/jsx-runtime");
1722
1702
  var Breadcrumb = (props) => {
1723
1703
  const { items, separator = "/" } = props;
1724
- return /* @__PURE__ */ (0, import_jsx_runtime301.jsx)("nav", { className: "lib-xplat-breadcrumb", "aria-label": "\uACBD\uB85C", children: /* @__PURE__ */ (0, import_jsx_runtime301.jsx)("ol", { children: items.map((item, index) => {
1704
+ return /* @__PURE__ */ (0, import_jsx_runtime300.jsx)("nav", { className: "lib-xplat-breadcrumb", "aria-label": "\uACBD\uB85C", children: /* @__PURE__ */ (0, import_jsx_runtime300.jsx)("ol", { children: items.map((item, index) => {
1725
1705
  const isLast = index === items.length - 1;
1726
- return /* @__PURE__ */ (0, import_jsx_runtime301.jsxs)("li", { children: [
1727
- isLast ? /* @__PURE__ */ (0, import_jsx_runtime301.jsx)("span", { className: "current", "aria-current": "page", children: item.label }) : item.href ? /* @__PURE__ */ (0, import_jsx_runtime301.jsx)("a", { href: item.href, className: "link", children: item.label }) : /* @__PURE__ */ (0, import_jsx_runtime301.jsx)("button", { className: "link", onClick: item.onClick, children: item.label }),
1728
- !isLast && /* @__PURE__ */ (0, import_jsx_runtime301.jsx)("span", { className: "separator", children: separator })
1706
+ return /* @__PURE__ */ (0, import_jsx_runtime300.jsxs)("li", { children: [
1707
+ isLast ? /* @__PURE__ */ (0, import_jsx_runtime300.jsx)("span", { className: "current", "aria-current": "page", children: item.label }) : item.href ? /* @__PURE__ */ (0, import_jsx_runtime300.jsx)("a", { href: item.href, className: "link", children: item.label }) : /* @__PURE__ */ (0, import_jsx_runtime300.jsx)("button", { className: "link", onClick: item.onClick, children: item.label }),
1708
+ !isLast && /* @__PURE__ */ (0, import_jsx_runtime300.jsx)("span", { className: "separator", children: separator })
1729
1709
  ] }, index);
1730
1710
  }) }) });
1731
1711
  };
@@ -1733,7 +1713,7 @@ Breadcrumb.displayName = "Breadcrumb";
1733
1713
  var Breadcrumb_default = Breadcrumb;
1734
1714
 
1735
1715
  // src/components/Button/Button.tsx
1736
- var import_jsx_runtime302 = require("react/jsx-runtime");
1716
+ var import_jsx_runtime301 = require("react/jsx-runtime");
1737
1717
  var Button = (props) => {
1738
1718
  const {
1739
1719
  children,
@@ -1742,7 +1722,7 @@ var Button = (props) => {
1742
1722
  disabled,
1743
1723
  ...rest
1744
1724
  } = props;
1745
- return /* @__PURE__ */ (0, import_jsx_runtime302.jsx)(
1725
+ return /* @__PURE__ */ (0, import_jsx_runtime301.jsx)(
1746
1726
  "button",
1747
1727
  {
1748
1728
  className: clsx_default("lib-xplat-button", type, size),
@@ -1859,7 +1839,7 @@ var MONTH_LABELS = {
1859
1839
  };
1860
1840
 
1861
1841
  // src/components/Calendar/Calendar.tsx
1862
- var import_jsx_runtime303 = require("react/jsx-runtime");
1842
+ var import_jsx_runtime302 = require("react/jsx-runtime");
1863
1843
  var DayCell = import_react4.default.memo(
1864
1844
  ({
1865
1845
  day,
@@ -1871,7 +1851,7 @@ var DayCell = import_react4.default.memo(
1871
1851
  onEventClick
1872
1852
  }) => {
1873
1853
  if (renderDay) {
1874
- return /* @__PURE__ */ (0, import_jsx_runtime303.jsx)(
1854
+ return /* @__PURE__ */ (0, import_jsx_runtime302.jsx)(
1875
1855
  "div",
1876
1856
  {
1877
1857
  className: clsx_default(
@@ -1888,7 +1868,7 @@ var DayCell = import_react4.default.memo(
1888
1868
  }
1889
1869
  );
1890
1870
  }
1891
- return /* @__PURE__ */ (0, import_jsx_runtime303.jsxs)(
1871
+ return /* @__PURE__ */ (0, import_jsx_runtime302.jsxs)(
1892
1872
  "div",
1893
1873
  {
1894
1874
  className: clsx_default(
@@ -1904,9 +1884,9 @@ var DayCell = import_react4.default.memo(
1904
1884
  if (!disabled && day.isCurrentMonth) onSelect?.(day.date);
1905
1885
  },
1906
1886
  children: [
1907
- /* @__PURE__ */ (0, import_jsx_runtime303.jsx)("span", { className: "calendar-day-number", children: day.day }),
1908
- dayEvents.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime303.jsxs)("div", { className: "calendar-day-events", children: [
1909
- dayEvents.slice(0, 3).map((event, ei) => /* @__PURE__ */ (0, import_jsx_runtime303.jsx)(
1887
+ /* @__PURE__ */ (0, import_jsx_runtime302.jsx)("span", { className: "calendar-day-number", children: day.day }),
1888
+ dayEvents.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime302.jsxs)("div", { className: "calendar-day-events", children: [
1889
+ dayEvents.slice(0, 3).map((event, ei) => /* @__PURE__ */ (0, import_jsx_runtime302.jsx)(
1910
1890
  "span",
1911
1891
  {
1912
1892
  className: "calendar-event-dot",
@@ -1919,7 +1899,7 @@ var DayCell = import_react4.default.memo(
1919
1899
  },
1920
1900
  ei
1921
1901
  )),
1922
- dayEvents.length > 3 && /* @__PURE__ */ (0, import_jsx_runtime303.jsxs)("span", { className: "calendar-event-more", children: [
1902
+ dayEvents.length > 3 && /* @__PURE__ */ (0, import_jsx_runtime302.jsxs)("span", { className: "calendar-event-more", children: [
1923
1903
  "+",
1924
1904
  dayEvents.length - 3
1925
1905
  ] })
@@ -2040,21 +2020,21 @@ var Calendar = (props) => {
2040
2020
  const weekdays = WEEKDAY_LABELS[locale];
2041
2021
  const monthLabels = MONTH_LABELS[locale];
2042
2022
  const titleText = pickerMode === "days" ? locale === "ko" ? `${year}\uB144 ${monthLabels[month]}` : `${monthLabels[month]} ${year}` : pickerMode === "months" ? `${year}` : `${yearRangeStart} - ${yearRangeStart + 11}`;
2043
- return /* @__PURE__ */ (0, import_jsx_runtime303.jsxs)(
2023
+ return /* @__PURE__ */ (0, import_jsx_runtime302.jsxs)(
2044
2024
  "div",
2045
2025
  {
2046
2026
  className: "lib-xplat-calendar",
2047
2027
  style: selectedColor ? { "--calendar-selected-color": `var(--${selectedColor})` } : void 0,
2048
2028
  children: [
2049
- /* @__PURE__ */ (0, import_jsx_runtime303.jsxs)("div", { className: "calendar-header", children: [
2050
- /* @__PURE__ */ (0, import_jsx_runtime303.jsx)("button", { className: "calendar-nav", onClick: handlePrev, "aria-label": "\uC774\uC804", children: /* @__PURE__ */ (0, import_jsx_runtime303.jsx)(ChevronLeftIcon_default, {}) }),
2051
- /* @__PURE__ */ (0, import_jsx_runtime303.jsx)("button", { className: "calendar-title", onClick: handleTitleClick, type: "button", children: titleText }),
2052
- /* @__PURE__ */ (0, import_jsx_runtime303.jsx)("button", { className: "calendar-nav", onClick: handleNext, "aria-label": "\uB2E4\uC74C", children: /* @__PURE__ */ (0, import_jsx_runtime303.jsx)(ChevronRightIcon_default, {}) }),
2053
- showToday && /* @__PURE__ */ (0, import_jsx_runtime303.jsx)("button", { className: "calendar-today-btn", onClick: handleToday, children: locale === "ko" ? "\uC624\uB298" : "Today" })
2029
+ /* @__PURE__ */ (0, import_jsx_runtime302.jsxs)("div", { className: "calendar-header", children: [
2030
+ /* @__PURE__ */ (0, import_jsx_runtime302.jsx)("button", { className: "calendar-nav", onClick: handlePrev, "aria-label": "\uC774\uC804", children: /* @__PURE__ */ (0, import_jsx_runtime302.jsx)(ChevronLeftIcon_default, {}) }),
2031
+ /* @__PURE__ */ (0, import_jsx_runtime302.jsx)("button", { className: "calendar-title", onClick: handleTitleClick, type: "button", children: titleText }),
2032
+ /* @__PURE__ */ (0, import_jsx_runtime302.jsx)("button", { className: "calendar-nav", onClick: handleNext, "aria-label": "\uB2E4\uC74C", children: /* @__PURE__ */ (0, import_jsx_runtime302.jsx)(ChevronRightIcon_default, {}) }),
2033
+ showToday && /* @__PURE__ */ (0, import_jsx_runtime302.jsx)("button", { className: "calendar-today-btn", onClick: handleToday, children: locale === "ko" ? "\uC624\uB298" : "Today" })
2054
2034
  ] }),
2055
- pickerMode === "years" && /* @__PURE__ */ (0, import_jsx_runtime303.jsx)("div", { className: "calendar-picker-grid", children: Array.from({ length: 12 }, (_, i) => {
2035
+ pickerMode === "years" && /* @__PURE__ */ (0, import_jsx_runtime302.jsx)("div", { className: "calendar-picker-grid", children: Array.from({ length: 12 }, (_, i) => {
2056
2036
  const y = yearRangeStart + i;
2057
- return /* @__PURE__ */ (0, import_jsx_runtime303.jsx)(
2037
+ return /* @__PURE__ */ (0, import_jsx_runtime302.jsx)(
2058
2038
  "button",
2059
2039
  {
2060
2040
  type: "button",
@@ -2065,7 +2045,7 @@ var Calendar = (props) => {
2065
2045
  y
2066
2046
  );
2067
2047
  }) }),
2068
- pickerMode === "months" && /* @__PURE__ */ (0, import_jsx_runtime303.jsx)("div", { className: "calendar-picker-grid", children: monthLabels.map((label, i) => /* @__PURE__ */ (0, import_jsx_runtime303.jsx)(
2048
+ pickerMode === "months" && /* @__PURE__ */ (0, import_jsx_runtime302.jsx)("div", { className: "calendar-picker-grid", children: monthLabels.map((label, i) => /* @__PURE__ */ (0, import_jsx_runtime302.jsx)(
2069
2049
  "button",
2070
2050
  {
2071
2051
  type: "button",
@@ -2075,8 +2055,8 @@ var Calendar = (props) => {
2075
2055
  },
2076
2056
  i
2077
2057
  )) }),
2078
- pickerMode === "days" && /* @__PURE__ */ (0, import_jsx_runtime303.jsxs)(import_jsx_runtime303.Fragment, { children: [
2079
- /* @__PURE__ */ (0, import_jsx_runtime303.jsx)("div", { className: "calendar-weekdays", children: weekdays.map((label, i) => /* @__PURE__ */ (0, import_jsx_runtime303.jsx)(
2058
+ pickerMode === "days" && /* @__PURE__ */ (0, import_jsx_runtime302.jsxs)(import_jsx_runtime302.Fragment, { children: [
2059
+ /* @__PURE__ */ (0, import_jsx_runtime302.jsx)("div", { className: "calendar-weekdays", children: weekdays.map((label, i) => /* @__PURE__ */ (0, import_jsx_runtime302.jsx)(
2080
2060
  "div",
2081
2061
  {
2082
2062
  className: clsx_default(
@@ -2088,12 +2068,12 @@ var Calendar = (props) => {
2088
2068
  },
2089
2069
  label
2090
2070
  )) }),
2091
- /* @__PURE__ */ (0, import_jsx_runtime303.jsx)("div", { className: "calendar-grid", children: days.map((day, idx) => {
2071
+ /* @__PURE__ */ (0, import_jsx_runtime302.jsx)("div", { className: "calendar-grid", children: days.map((day, idx) => {
2092
2072
  const dayEvents = getEventsForDay(day.date);
2093
2073
  const t = day.date.getTime();
2094
2074
  const disabled = t < minTime || t > maxTime;
2095
2075
  const isSelected = selectedDate ? isSameDay(day.date, selectedDate) : false;
2096
- return /* @__PURE__ */ (0, import_jsx_runtime303.jsx)(
2076
+ return /* @__PURE__ */ (0, import_jsx_runtime302.jsx)(
2097
2077
  DayCell,
2098
2078
  {
2099
2079
  day,
@@ -2119,10 +2099,10 @@ var Calendar_default = Calendar;
2119
2099
  var import_react5 = __toESM(require("react"), 1);
2120
2100
 
2121
2101
  // src/components/CardTab/CardTabPanel.tsx
2122
- var import_jsx_runtime304 = require("react/jsx-runtime");
2102
+ var import_jsx_runtime303 = require("react/jsx-runtime");
2123
2103
  var CardTabPanel = (props) => {
2124
2104
  const { children, columns = 3 } = props;
2125
- return /* @__PURE__ */ (0, import_jsx_runtime304.jsx)(
2105
+ return /* @__PURE__ */ (0, import_jsx_runtime303.jsx)(
2126
2106
  "div",
2127
2107
  {
2128
2108
  className: "card-tab-panel",
@@ -2135,7 +2115,7 @@ CardTabPanel.displayName = "CardTab.Panel";
2135
2115
  var CardTabPanel_default = CardTabPanel;
2136
2116
 
2137
2117
  // src/components/CardTab/CardTab.tsx
2138
- var import_jsx_runtime305 = require("react/jsx-runtime");
2118
+ var import_jsx_runtime304 = require("react/jsx-runtime");
2139
2119
  var CardTabRoot = (props) => {
2140
2120
  const {
2141
2121
  tabs,
@@ -2159,10 +2139,10 @@ var CardTabRoot = (props) => {
2159
2139
  const activePanel = panels.find(
2160
2140
  (panel) => panel.props.value === activeValue
2161
2141
  );
2162
- return /* @__PURE__ */ (0, import_jsx_runtime305.jsxs)("div", { className: clsx_default("lib-xplat-card-tab", size), children: [
2163
- /* @__PURE__ */ (0, import_jsx_runtime305.jsx)("div", { className: "card-tab-bar", children: tabs.map((tab) => {
2142
+ return /* @__PURE__ */ (0, import_jsx_runtime304.jsxs)("div", { className: clsx_default("lib-xplat-card-tab", size), children: [
2143
+ /* @__PURE__ */ (0, import_jsx_runtime304.jsx)("div", { className: "card-tab-bar", children: tabs.map((tab) => {
2164
2144
  const isActive2 = tab.value === activeValue;
2165
- return /* @__PURE__ */ (0, import_jsx_runtime305.jsx)(
2145
+ return /* @__PURE__ */ (0, import_jsx_runtime304.jsx)(
2166
2146
  "button",
2167
2147
  {
2168
2148
  className: clsx_default("card-tab-trigger", isActive2 && "active"),
@@ -2174,7 +2154,7 @@ var CardTabRoot = (props) => {
2174
2154
  tab.value
2175
2155
  );
2176
2156
  }) }),
2177
- /* @__PURE__ */ (0, import_jsx_runtime305.jsx)("div", { className: "card-tab-body", children: activePanel })
2157
+ /* @__PURE__ */ (0, import_jsx_runtime304.jsx)("div", { className: "card-tab-body", children: activePanel })
2178
2158
  ] });
2179
2159
  };
2180
2160
  CardTabRoot.displayName = "CardTab";
@@ -2185,7 +2165,7 @@ var CardTab_default = CardTab;
2185
2165
 
2186
2166
  // src/components/Chart/Chart.tsx
2187
2167
  var import_react6 = __toESM(require("react"), 1);
2188
- var import_jsx_runtime306 = require("react/jsx-runtime");
2168
+ var import_jsx_runtime305 = require("react/jsx-runtime");
2189
2169
  var CATEGORICAL_COUNT2 = 8;
2190
2170
  var LINE_BAR_PALETTES = Array.from({ length: CATEGORICAL_COUNT2 }, (_, i) => {
2191
2171
  const n = i + 1;
@@ -2321,12 +2301,12 @@ var useChartTooltip = (enabled) => {
2321
2301
  }, []);
2322
2302
  return { tooltip, show, hide, move, containerRef };
2323
2303
  };
2324
- var GridLines = import_react6.default.memo(({ width, height, chartH, maxVal }) => /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(import_jsx_runtime306.Fragment, { children: [0, 0.25, 0.5, 0.75, 1].map((ratio) => {
2304
+ var GridLines = import_react6.default.memo(({ width, height, chartH, maxVal }) => /* @__PURE__ */ (0, import_jsx_runtime305.jsx)(import_jsx_runtime305.Fragment, { children: [0, 0.25, 0.5, 0.75, 1].map((ratio) => {
2325
2305
  const y = PADDING.top + (1 - ratio) * chartH;
2326
2306
  const val = Math.round(maxVal * ratio);
2327
- return /* @__PURE__ */ (0, import_jsx_runtime306.jsxs)("g", { children: [
2328
- /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("line", { x1: PADDING.left, y1: y, x2: width - PADDING.right, y2: y, className: "chart-grid" }),
2329
- /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("text", { x: PADDING.left - 8, y: y + 4, className: "chart-axis-label", textAnchor: "end", children: val })
2307
+ return /* @__PURE__ */ (0, import_jsx_runtime305.jsxs)("g", { children: [
2308
+ /* @__PURE__ */ (0, import_jsx_runtime305.jsx)("line", { x1: PADDING.left, y1: y, x2: width - PADDING.right, y2: y, className: "chart-grid" }),
2309
+ /* @__PURE__ */ (0, import_jsx_runtime305.jsx)("text", { x: PADDING.left - 8, y: y + 4, className: "chart-axis-label", textAnchor: "end", children: val })
2330
2310
  ] }, ratio);
2331
2311
  }) }));
2332
2312
  GridLines.displayName = "GridLines";
@@ -2338,10 +2318,10 @@ var getLabelStep = (count, chartW) => {
2338
2318
  };
2339
2319
  var AxisLabels = import_react6.default.memo(({ labels, count, chartW, height }) => {
2340
2320
  const step = getLabelStep(count, chartW);
2341
- return /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(import_jsx_runtime306.Fragment, { children: labels.map((label, i) => {
2321
+ return /* @__PURE__ */ (0, import_jsx_runtime305.jsx)(import_jsx_runtime305.Fragment, { children: labels.map((label, i) => {
2342
2322
  if (i % step !== 0) return null;
2343
2323
  const x = PADDING.left + i / (count - 1 || 1) * chartW;
2344
- return /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("text", { x, y: height - 8, className: "chart-axis-label", textAnchor: "middle", children: label }, i);
2324
+ return /* @__PURE__ */ (0, import_jsx_runtime305.jsx)("text", { x, y: height - 8, className: "chart-axis-label", textAnchor: "middle", children: label }, i);
2345
2325
  }) });
2346
2326
  });
2347
2327
  AxisLabels.displayName = "AxisLabels";
@@ -2417,7 +2397,7 @@ var LineChart = import_react6.default.memo(({ data, labels, width, height, anima
2417
2397
  }, [animate, width]);
2418
2398
  const activeX = activeIndex !== null ? seriesPoints[0]?.[activeIndex]?.x ?? null : null;
2419
2399
  const lineClipId = "line-area-clip";
2420
- return /* @__PURE__ */ (0, import_jsx_runtime306.jsxs)(
2400
+ return /* @__PURE__ */ (0, import_jsx_runtime305.jsxs)(
2421
2401
  "svg",
2422
2402
  {
2423
2403
  viewBox: `0 0 ${width} ${height}`,
@@ -2435,9 +2415,9 @@ var LineChart = import_react6.default.memo(({ data, labels, width, height, anima
2435
2415
  onLeave();
2436
2416
  },
2437
2417
  children: [
2438
- animate && /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("clipPath", { id: lineClipId, children: /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("rect", { ref: clipRef, x: "0", y: "0", width: animate ? 0 : width, height }) }) }),
2439
- /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(GridLines, { width, height, chartH, maxVal }),
2440
- /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(AxisLabels, { labels, count, chartW, height }),
2418
+ animate && /* @__PURE__ */ (0, import_jsx_runtime305.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime305.jsx)("clipPath", { id: lineClipId, children: /* @__PURE__ */ (0, import_jsx_runtime305.jsx)("rect", { ref: clipRef, x: "0", y: "0", width: animate ? 0 : width, height }) }) }),
2419
+ /* @__PURE__ */ (0, import_jsx_runtime305.jsx)(GridLines, { width, height, chartH, maxVal }),
2420
+ /* @__PURE__ */ (0, import_jsx_runtime305.jsx)(AxisLabels, { labels, count, chartW, height }),
2441
2421
  entries.map(([key], di) => {
2442
2422
  const palette = getPalette(LINE_BAR_PALETTES, di, key);
2443
2423
  const color = palette[2];
@@ -2446,16 +2426,16 @@ var LineChart = import_react6.default.memo(({ data, labels, width, height, anima
2446
2426
  const gradientId = `line-gradient-${di}`;
2447
2427
  const polyPoints = points.map((p) => `${p.x},${p.y}`).join(" ");
2448
2428
  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`;
2449
- return /* @__PURE__ */ (0, import_jsx_runtime306.jsxs)("g", { children: [
2450
- /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime306.jsxs)("linearGradient", { id: gradientId, x1: "0", y1: "0", x2: "0", y2: "1", children: [
2451
- /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("stop", { offset: "0%", stopColor: areaColor, stopOpacity: "0.2" }),
2452
- /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("stop", { offset: "100%", stopColor: areaColor, stopOpacity: "0" })
2429
+ return /* @__PURE__ */ (0, import_jsx_runtime305.jsxs)("g", { children: [
2430
+ /* @__PURE__ */ (0, import_jsx_runtime305.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime305.jsxs)("linearGradient", { id: gradientId, x1: "0", y1: "0", x2: "0", y2: "1", children: [
2431
+ /* @__PURE__ */ (0, import_jsx_runtime305.jsx)("stop", { offset: "0%", stopColor: areaColor, stopOpacity: "0.2" }),
2432
+ /* @__PURE__ */ (0, import_jsx_runtime305.jsx)("stop", { offset: "100%", stopColor: areaColor, stopOpacity: "0" })
2453
2433
  ] }) }),
2454
- /* @__PURE__ */ (0, import_jsx_runtime306.jsxs)("g", { clipPath: animate ? `url(#${lineClipId})` : void 0, children: [
2455
- /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("path", { d: areaD, fill: `url(#${gradientId})` }),
2456
- /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("polyline", { points: polyPoints, fill: "none", stroke: color, strokeWidth: "2" })
2434
+ /* @__PURE__ */ (0, import_jsx_runtime305.jsxs)("g", { clipPath: animate ? `url(#${lineClipId})` : void 0, children: [
2435
+ /* @__PURE__ */ (0, import_jsx_runtime305.jsx)("path", { d: areaD, fill: `url(#${gradientId})` }),
2436
+ /* @__PURE__ */ (0, import_jsx_runtime305.jsx)("polyline", { points: polyPoints, fill: "none", stroke: color, strokeWidth: "2" })
2457
2437
  ] }),
2458
- activeIndex !== null && points[activeIndex] && /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(
2438
+ activeIndex !== null && points[activeIndex] && /* @__PURE__ */ (0, import_jsx_runtime305.jsx)(
2459
2439
  "circle",
2460
2440
  {
2461
2441
  cx: points[activeIndex].x,
@@ -2467,7 +2447,7 @@ var LineChart = import_react6.default.memo(({ data, labels, width, height, anima
2467
2447
  )
2468
2448
  ] }, di);
2469
2449
  }),
2470
- activeX !== null && /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(
2450
+ activeX !== null && /* @__PURE__ */ (0, import_jsx_runtime305.jsx)(
2471
2451
  "line",
2472
2452
  {
2473
2453
  x1: activeX,
@@ -2477,7 +2457,7 @@ var LineChart = import_react6.default.memo(({ data, labels, width, height, anima
2477
2457
  className: "chart-crosshair"
2478
2458
  }
2479
2459
  ),
2480
- /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(
2460
+ /* @__PURE__ */ (0, import_jsx_runtime305.jsx)(
2481
2461
  "rect",
2482
2462
  {
2483
2463
  x: PADDING.left,
@@ -2526,7 +2506,7 @@ var CurveChart = import_react6.default.memo(({ data, labels, width, height, anim
2526
2506
  }, [animate, width]);
2527
2507
  const activeX = activeIndex !== null ? seriesPoints[0]?.[activeIndex]?.x ?? null : null;
2528
2508
  const curveClipId = "curve-area-clip";
2529
- return /* @__PURE__ */ (0, import_jsx_runtime306.jsxs)(
2509
+ return /* @__PURE__ */ (0, import_jsx_runtime305.jsxs)(
2530
2510
  "svg",
2531
2511
  {
2532
2512
  viewBox: `0 0 ${width} ${height}`,
@@ -2545,9 +2525,9 @@ var CurveChart = import_react6.default.memo(({ data, labels, width, height, anim
2545
2525
  onLeave();
2546
2526
  },
2547
2527
  children: [
2548
- animate && /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("clipPath", { id: curveClipId, children: /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("rect", { ref: curveClipRef, x: "0", y: "0", width: animate ? 0 : width, height }) }) }),
2549
- /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(GridLines, { width, height, chartH, maxVal }),
2550
- /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(AxisLabels, { labels, count, chartW, height }),
2528
+ animate && /* @__PURE__ */ (0, import_jsx_runtime305.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime305.jsx)("clipPath", { id: curveClipId, children: /* @__PURE__ */ (0, import_jsx_runtime305.jsx)("rect", { ref: curveClipRef, x: "0", y: "0", width: animate ? 0 : width, height }) }) }),
2529
+ /* @__PURE__ */ (0, import_jsx_runtime305.jsx)(GridLines, { width, height, chartH, maxVal }),
2530
+ /* @__PURE__ */ (0, import_jsx_runtime305.jsx)(AxisLabels, { labels, count, chartW, height }),
2551
2531
  entries.map(([key], di) => {
2552
2532
  const palette = getPalette(LINE_BAR_PALETTES, di, key);
2553
2533
  const color = palette[2];
@@ -2556,16 +2536,16 @@ var CurveChart = import_react6.default.memo(({ data, labels, width, height, anim
2556
2536
  const gradientId = `curve-gradient-${di}`;
2557
2537
  const linePath = toSmoothPath(points);
2558
2538
  const areaPath = linePath + ` L ${points[points.length - 1].x} ${PADDING.top + chartH} L ${points[0].x} ${PADDING.top + chartH} Z`;
2559
- return /* @__PURE__ */ (0, import_jsx_runtime306.jsxs)("g", { children: [
2560
- /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime306.jsxs)("linearGradient", { id: gradientId, x1: "0", y1: "0", x2: "0", y2: "1", children: [
2561
- /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("stop", { offset: "0%", stopColor: areaColor, stopOpacity: "0.4" }),
2562
- /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("stop", { offset: "100%", stopColor: areaColor, stopOpacity: "0.02" })
2539
+ return /* @__PURE__ */ (0, import_jsx_runtime305.jsxs)("g", { children: [
2540
+ /* @__PURE__ */ (0, import_jsx_runtime305.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime305.jsxs)("linearGradient", { id: gradientId, x1: "0", y1: "0", x2: "0", y2: "1", children: [
2541
+ /* @__PURE__ */ (0, import_jsx_runtime305.jsx)("stop", { offset: "0%", stopColor: areaColor, stopOpacity: "0.4" }),
2542
+ /* @__PURE__ */ (0, import_jsx_runtime305.jsx)("stop", { offset: "100%", stopColor: areaColor, stopOpacity: "0.02" })
2563
2543
  ] }) }),
2564
- /* @__PURE__ */ (0, import_jsx_runtime306.jsxs)("g", { clipPath: animate ? `url(#${curveClipId})` : void 0, children: [
2565
- /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("path", { d: areaPath, fill: `url(#${gradientId})` }),
2566
- /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("path", { d: linePath, fill: "none", stroke: color, strokeWidth: "2" })
2544
+ /* @__PURE__ */ (0, import_jsx_runtime305.jsxs)("g", { clipPath: animate ? `url(#${curveClipId})` : void 0, children: [
2545
+ /* @__PURE__ */ (0, import_jsx_runtime305.jsx)("path", { d: areaPath, fill: `url(#${gradientId})` }),
2546
+ /* @__PURE__ */ (0, import_jsx_runtime305.jsx)("path", { d: linePath, fill: "none", stroke: color, strokeWidth: "2" })
2567
2547
  ] }),
2568
- activeIndex !== null && points[activeIndex] && /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(
2548
+ activeIndex !== null && points[activeIndex] && /* @__PURE__ */ (0, import_jsx_runtime305.jsx)(
2569
2549
  "circle",
2570
2550
  {
2571
2551
  cx: points[activeIndex].x,
@@ -2577,7 +2557,7 @@ var CurveChart = import_react6.default.memo(({ data, labels, width, height, anim
2577
2557
  )
2578
2558
  ] }, di);
2579
2559
  }),
2580
- activeX !== null && /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(
2560
+ activeX !== null && /* @__PURE__ */ (0, import_jsx_runtime305.jsx)(
2581
2561
  "line",
2582
2562
  {
2583
2563
  x1: activeX,
@@ -2587,7 +2567,7 @@ var CurveChart = import_react6.default.memo(({ data, labels, width, height, anim
2587
2567
  className: "chart-crosshair"
2588
2568
  }
2589
2569
  ),
2590
- /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(
2570
+ /* @__PURE__ */ (0, import_jsx_runtime305.jsx)(
2591
2571
  "rect",
2592
2572
  {
2593
2573
  x: PADDING.left,
@@ -2630,11 +2610,11 @@ var BarChart = import_react6.default.memo(({ data, labels, width, height, animat
2630
2610
  [entries, maxVal, chartH, groupW, barW, barGap, groupCount]
2631
2611
  );
2632
2612
  const barLabelStep = getLabelStep(count, chartW);
2633
- return /* @__PURE__ */ (0, import_jsx_runtime306.jsxs)("svg", { viewBox: `0 0 ${width} ${height}`, className: "chart-svg", children: [
2634
- /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(GridLines, { width, height, chartH, maxVal }),
2613
+ return /* @__PURE__ */ (0, import_jsx_runtime305.jsxs)("svg", { viewBox: `0 0 ${width} ${height}`, className: "chart-svg", children: [
2614
+ /* @__PURE__ */ (0, import_jsx_runtime305.jsx)(GridLines, { width, height, chartH, maxVal }),
2635
2615
  labels.map((label, i) => {
2636
2616
  if (i % barLabelStep !== 0) return null;
2637
- return /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("text", { x: PADDING.left + groupW * i + groupW / 2, y: height - 8, className: "chart-axis-label", textAnchor: "middle", children: label }, i);
2617
+ return /* @__PURE__ */ (0, import_jsx_runtime305.jsx)("text", { x: PADDING.left + groupW * i + groupW / 2, y: height - 8, className: "chart-axis-label", textAnchor: "middle", children: label }, i);
2638
2618
  }),
2639
2619
  entries.map(([key], di) => {
2640
2620
  const palette = getPalette(LINE_BAR_PALETTES, di, key);
@@ -2643,7 +2623,7 @@ var BarChart = import_react6.default.memo(({ data, labels, width, height, animat
2643
2623
  const r2 = Math.min(4, b.w / 2);
2644
2624
  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`;
2645
2625
  const delay = 100 + i * 80;
2646
- return /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(
2626
+ return /* @__PURE__ */ (0, import_jsx_runtime305.jsx)(
2647
2627
  "path",
2648
2628
  {
2649
2629
  d,
@@ -2723,8 +2703,8 @@ var PieDonutChart = import_react6.default.memo(
2723
2703
  });
2724
2704
  }, [values, total, cx, cy, r2, innerR, labels]);
2725
2705
  const maskId = `pie-mask-${isDoughnut ? "d" : "p"}`;
2726
- return /* @__PURE__ */ (0, import_jsx_runtime306.jsxs)("svg", { viewBox: `0 0 ${size} ${size}`, className: "chart-svg chart-pie", children: [
2727
- animate && /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("mask", { id: maskId, children: /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(
2706
+ return /* @__PURE__ */ (0, import_jsx_runtime305.jsxs)("svg", { viewBox: `0 0 ${size} ${size}`, className: "chart-svg chart-pie", children: [
2707
+ animate && /* @__PURE__ */ (0, import_jsx_runtime305.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime305.jsx)("mask", { id: maskId, children: /* @__PURE__ */ (0, import_jsx_runtime305.jsx)(
2728
2708
  "circle",
2729
2709
  {
2730
2710
  ref: maskRef,
@@ -2737,7 +2717,7 @@ var PieDonutChart = import_react6.default.memo(
2737
2717
  transform: `rotate(-90 ${cx} ${cy})`
2738
2718
  }
2739
2719
  ) }) }),
2740
- /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("g", { mask: animate ? `url(#${maskId})` : void 0, children: sliceData.map((s, i) => /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("g", { children: /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(
2720
+ /* @__PURE__ */ (0, import_jsx_runtime305.jsx)("g", { mask: animate ? `url(#${maskId})` : void 0, children: sliceData.map((s, i) => /* @__PURE__ */ (0, import_jsx_runtime305.jsx)("g", { children: /* @__PURE__ */ (0, import_jsx_runtime305.jsx)(
2741
2721
  "path",
2742
2722
  {
2743
2723
  d: s.d,
@@ -2772,15 +2752,15 @@ var ChartTooltip = ({ x, y, containerWidth, containerHeight, tooltipType, childr
2772
2752
  const sepIdx = content.indexOf(" \u2014 ");
2773
2753
  const title = sepIdx >= 0 ? content.slice(0, sepIdx) : content;
2774
2754
  const desc = sepIdx >= 0 ? content.slice(sepIdx + 3) : "";
2775
- return /* @__PURE__ */ (0, import_jsx_runtime306.jsxs)(
2755
+ return /* @__PURE__ */ (0, import_jsx_runtime305.jsxs)(
2776
2756
  "div",
2777
2757
  {
2778
2758
  ref,
2779
2759
  className: `lib-xplat-tooltip ${tooltipType} chart-tooltip-pos`,
2780
2760
  style: { left: pos.left, top: pos.top },
2781
2761
  children: [
2782
- title && /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("div", { className: "tooltip-title", children: title }),
2783
- desc && /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("div", { className: "tooltip-desc", children: desc })
2762
+ title && /* @__PURE__ */ (0, import_jsx_runtime305.jsx)("div", { className: "tooltip-title", children: title }),
2763
+ desc && /* @__PURE__ */ (0, import_jsx_runtime305.jsx)("div", { className: "tooltip-desc", children: desc })
2784
2764
  ]
2785
2765
  }
2786
2766
  );
@@ -2792,14 +2772,14 @@ var ChartLegend = ({ data, labels, type }) => {
2792
2772
  const total = values.reduce((a, b) => a + b, 0) || 1;
2793
2773
  const firstKey = entries[0]?.[0] ?? "";
2794
2774
  const colorOffset = hashString(firstKey);
2795
- return /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("div", { className: "chart-legend", children: values.map((v, i) => {
2775
+ return /* @__PURE__ */ (0, import_jsx_runtime305.jsx)("div", { className: "chart-legend", children: values.map((v, i) => {
2796
2776
  const pct = Math.round(v / total * 100);
2797
2777
  const color = PIE_COLORS[(i + colorOffset) % PIE_COLORS.length];
2798
- return /* @__PURE__ */ (0, import_jsx_runtime306.jsxs)("div", { className: "chart-legend-item", children: [
2799
- /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("span", { className: "chart-legend-dot", style: { backgroundColor: color } }),
2800
- /* @__PURE__ */ (0, import_jsx_runtime306.jsxs)("div", { className: "chart-legend-text", children: [
2801
- /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("span", { className: "chart-legend-label", children: labels[i] || `${i + 1}` }),
2802
- /* @__PURE__ */ (0, import_jsx_runtime306.jsxs)("span", { className: "chart-legend-value", children: [
2778
+ return /* @__PURE__ */ (0, import_jsx_runtime305.jsxs)("div", { className: "chart-legend-item", children: [
2779
+ /* @__PURE__ */ (0, import_jsx_runtime305.jsx)("span", { className: "chart-legend-dot", style: { backgroundColor: color } }),
2780
+ /* @__PURE__ */ (0, import_jsx_runtime305.jsxs)("div", { className: "chart-legend-text", children: [
2781
+ /* @__PURE__ */ (0, import_jsx_runtime305.jsx)("span", { className: "chart-legend-label", children: labels[i] || `${i + 1}` }),
2782
+ /* @__PURE__ */ (0, import_jsx_runtime305.jsxs)("span", { className: "chart-legend-value", children: [
2803
2783
  v.toLocaleString(),
2804
2784
  "(",
2805
2785
  pct,
@@ -2809,16 +2789,16 @@ var ChartLegend = ({ data, labels, type }) => {
2809
2789
  ] }, i);
2810
2790
  }) });
2811
2791
  }
2812
- return /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("div", { className: "chart-legend", children: entries.map(([key], di) => {
2792
+ return /* @__PURE__ */ (0, import_jsx_runtime305.jsx)("div", { className: "chart-legend", children: entries.map(([key], di) => {
2813
2793
  const palette = getPalette(LINE_BAR_PALETTES, di, key);
2814
2794
  const color = palette[2];
2815
2795
  const values = entries[di][1];
2816
2796
  const sum = values.reduce((a, b) => a + b, 0);
2817
- return /* @__PURE__ */ (0, import_jsx_runtime306.jsxs)("div", { className: "chart-legend-item", children: [
2818
- /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("span", { className: "chart-legend-dot", style: { backgroundColor: color } }),
2819
- /* @__PURE__ */ (0, import_jsx_runtime306.jsxs)("div", { className: "chart-legend-text", children: [
2820
- /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("span", { className: "chart-legend-label", children: key }),
2821
- /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("span", { className: "chart-legend-value", children: sum.toLocaleString() })
2797
+ return /* @__PURE__ */ (0, import_jsx_runtime305.jsxs)("div", { className: "chart-legend-item", children: [
2798
+ /* @__PURE__ */ (0, import_jsx_runtime305.jsx)("span", { className: "chart-legend-dot", style: { backgroundColor: color } }),
2799
+ /* @__PURE__ */ (0, import_jsx_runtime305.jsxs)("div", { className: "chart-legend-text", children: [
2800
+ /* @__PURE__ */ (0, import_jsx_runtime305.jsx)("span", { className: "chart-legend-label", children: key }),
2801
+ /* @__PURE__ */ (0, import_jsx_runtime305.jsx)("span", { className: "chart-legend-value", children: sum.toLocaleString() })
2822
2802
  ] })
2823
2803
  ] }, di);
2824
2804
  }) });
@@ -2832,14 +2812,14 @@ var Chart = import_react6.default.memo((props) => {
2832
2812
  const dataKey = import_react6.default.useMemo(() => JSON.stringify(labels), [labels]);
2833
2813
  const animate = useChartAnimation(containerRef, dataKey);
2834
2814
  const ready = width > 0 && height > 0;
2835
- return /* @__PURE__ */ (0, import_jsx_runtime306.jsxs)("div", { className: "lib-xplat-chart", ref: containerRef, children: [
2836
- ready && type === "line" && /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(LineChart, { data: stableData, labels: stableLabels, width, height, animate, onHover: show, onMove: move, onLeave: hide }),
2837
- ready && type === "curve" && /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(CurveChart, { data: stableData, labels: stableLabels, width, height, animate, onHover: show, onMove: move, onLeave: hide }),
2838
- ready && type === "bar" && /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(BarChart, { data: stableData, labels: stableLabels, width, height, animate, onHover: show, onMove: move, onLeave: hide }),
2839
- ready && type === "pie" && /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(PieDonutChart, { data: stableData, labels: stableLabels, width, height, animate, onHover: show, onMove: move, onLeave: hide }),
2840
- ready && type === "doughnut" && /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(PieDonutChart, { data: stableData, labels: stableLabels, width, height, animate, isDoughnut: true, onHover: show, onMove: move, onLeave: hide }),
2841
- ready && (type === "pie" || type === "doughnut") && /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(ChartLegend, { data: stableData, labels: stableLabels, type }),
2842
- tooltip.visible && tooltip.content && /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(ChartTooltip, { x: tooltip.x, y: tooltip.y, containerWidth: width, containerHeight: height, tooltipType, children: tooltip.content })
2815
+ return /* @__PURE__ */ (0, import_jsx_runtime305.jsxs)("div", { className: "lib-xplat-chart", ref: containerRef, children: [
2816
+ ready && type === "line" && /* @__PURE__ */ (0, import_jsx_runtime305.jsx)(LineChart, { data: stableData, labels: stableLabels, width, height, animate, onHover: show, onMove: move, onLeave: hide }),
2817
+ ready && type === "curve" && /* @__PURE__ */ (0, import_jsx_runtime305.jsx)(CurveChart, { data: stableData, labels: stableLabels, width, height, animate, onHover: show, onMove: move, onLeave: hide }),
2818
+ ready && type === "bar" && /* @__PURE__ */ (0, import_jsx_runtime305.jsx)(BarChart, { data: stableData, labels: stableLabels, width, height, animate, onHover: show, onMove: move, onLeave: hide }),
2819
+ ready && type === "pie" && /* @__PURE__ */ (0, import_jsx_runtime305.jsx)(PieDonutChart, { data: stableData, labels: stableLabels, width, height, animate, onHover: show, onMove: move, onLeave: hide }),
2820
+ ready && type === "doughnut" && /* @__PURE__ */ (0, import_jsx_runtime305.jsx)(PieDonutChart, { data: stableData, labels: stableLabels, width, height, animate, isDoughnut: true, onHover: show, onMove: move, onLeave: hide }),
2821
+ ready && (type === "pie" || type === "doughnut") && /* @__PURE__ */ (0, import_jsx_runtime305.jsx)(ChartLegend, { data: stableData, labels: stableLabels, type }),
2822
+ tooltip.visible && tooltip.content && /* @__PURE__ */ (0, import_jsx_runtime305.jsx)(ChartTooltip, { x: tooltip.x, y: tooltip.y, containerWidth: width, containerHeight: height, tooltipType, children: tooltip.content })
2843
2823
  ] });
2844
2824
  });
2845
2825
  Chart.displayName = "Chart";
@@ -2849,7 +2829,7 @@ var Chart_default = Chart;
2849
2829
  var import_react7 = __toESM(require("react"), 1);
2850
2830
 
2851
2831
  // src/components/IconButton/IconButton.tsx
2852
- var import_jsx_runtime307 = require("react/jsx-runtime");
2832
+ var import_jsx_runtime306 = require("react/jsx-runtime");
2853
2833
  var IconButton = (props) => {
2854
2834
  const {
2855
2835
  icon,
@@ -2858,7 +2838,7 @@ var IconButton = (props) => {
2858
2838
  disabled,
2859
2839
  ...rest
2860
2840
  } = props;
2861
- return /* @__PURE__ */ (0, import_jsx_runtime307.jsx)(
2841
+ return /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(
2862
2842
  "button",
2863
2843
  {
2864
2844
  className: clsx_default("lib-xplat-icon-button", type, size),
@@ -2872,7 +2852,7 @@ IconButton.displayName = "IconButton";
2872
2852
  var IconButton_default = IconButton;
2873
2853
 
2874
2854
  // src/components/ChatInput/ChatInput.tsx
2875
- var import_jsx_runtime308 = require("react/jsx-runtime");
2855
+ var import_jsx_runtime307 = require("react/jsx-runtime");
2876
2856
  var ChatInput = import_react7.default.forwardRef(
2877
2857
  (props, ref) => {
2878
2858
  const {
@@ -2903,8 +2883,8 @@ var ChatInput = import_react7.default.forwardRef(
2903
2883
  handleSubmit();
2904
2884
  }
2905
2885
  };
2906
- return /* @__PURE__ */ (0, import_jsx_runtime308.jsxs)("div", { className: clsx_default("lib-xplat-chat-input", disabled && "disabled"), children: [
2907
- /* @__PURE__ */ (0, import_jsx_runtime308.jsx)(
2886
+ return /* @__PURE__ */ (0, import_jsx_runtime307.jsxs)("div", { className: clsx_default("lib-xplat-chat-input", disabled && "disabled"), children: [
2887
+ /* @__PURE__ */ (0, import_jsx_runtime307.jsx)(
2908
2888
  AutoResizeTextArea_default,
2909
2889
  {
2910
2890
  ref,
@@ -2918,10 +2898,10 @@ var ChatInput = import_react7.default.forwardRef(
2918
2898
  onKeyDown: handleKeyDown
2919
2899
  }
2920
2900
  ),
2921
- /* @__PURE__ */ (0, import_jsx_runtime308.jsx)(
2901
+ /* @__PURE__ */ (0, import_jsx_runtime307.jsx)(
2922
2902
  IconButton_default,
2923
2903
  {
2924
- icon: /* @__PURE__ */ (0, import_jsx_runtime308.jsx)(MessageSquareIcon_default, {}),
2904
+ icon: /* @__PURE__ */ (0, import_jsx_runtime307.jsx)(MessageSquareIcon_default, {}),
2925
2905
  type: buttonType,
2926
2906
  size: "sm",
2927
2907
  disabled: !hasText || disabled,
@@ -2942,7 +2922,7 @@ var import_tokens_core = require("@x-plat/tokens-core");
2942
2922
  var import_tokens_core2 = require("@x-plat/tokens-core");
2943
2923
 
2944
2924
  // src/components/CheckBox/CheckBox.tsx
2945
- var import_jsx_runtime309 = require("react/jsx-runtime");
2925
+ var import_jsx_runtime308 = require("react/jsx-runtime");
2946
2926
  var CheckBox = (props) => {
2947
2927
  const {
2948
2928
  checked,
@@ -2961,8 +2941,8 @@ var CheckBox = (props) => {
2961
2941
  const checkedClasses = `checked`;
2962
2942
  const disabledClasses = "disabled";
2963
2943
  const boxClasses = disabled ? disabledClasses : checked ? checkedClasses : uncheckedClasses;
2964
- return /* @__PURE__ */ (0, import_jsx_runtime309.jsxs)("label", { className: clsx_default("lib-xplat-checkbox", size, type, className), children: [
2965
- /* @__PURE__ */ (0, import_jsx_runtime309.jsx)(
2944
+ return /* @__PURE__ */ (0, import_jsx_runtime308.jsxs)("label", { className: clsx_default("lib-xplat-checkbox", size, type, className), children: [
2945
+ /* @__PURE__ */ (0, import_jsx_runtime308.jsx)(
2966
2946
  "input",
2967
2947
  {
2968
2948
  type: "checkbox",
@@ -2972,22 +2952,22 @@ var CheckBox = (props) => {
2972
2952
  ...rest
2973
2953
  }
2974
2954
  ),
2975
- /* @__PURE__ */ (0, import_jsx_runtime309.jsx)("span", { className: clsx_default("checkbox", boxClasses), children: /* @__PURE__ */ (0, import_jsx_runtime309.jsx)("span", { className: clsx_default("check-icon", { visible: checked }), children: /* @__PURE__ */ (0, import_jsx_runtime309.jsx)(CheckIcon_default, {}) }) }),
2976
- label && /* @__PURE__ */ (0, import_jsx_runtime309.jsx)("span", { className: "label", children: label })
2955
+ /* @__PURE__ */ (0, import_jsx_runtime308.jsx)("span", { className: clsx_default("checkbox", boxClasses), children: /* @__PURE__ */ (0, import_jsx_runtime308.jsx)("span", { className: clsx_default("check-icon", { visible: checked }), children: /* @__PURE__ */ (0, import_jsx_runtime308.jsx)(CheckIcon_default, {}) }) }),
2956
+ label && /* @__PURE__ */ (0, import_jsx_runtime308.jsx)("span", { className: "label", children: label })
2977
2957
  ] });
2978
2958
  };
2979
2959
  CheckBox.displayName = "CheckBox";
2980
2960
  var CheckBox_default = CheckBox;
2981
2961
 
2982
2962
  // src/components/Chip/Chip.tsx
2983
- var import_jsx_runtime310 = require("react/jsx-runtime");
2963
+ var import_jsx_runtime309 = require("react/jsx-runtime");
2984
2964
  var Chip = (props) => {
2985
2965
  const {
2986
2966
  children,
2987
2967
  type = "primary",
2988
2968
  size = "md"
2989
2969
  } = props;
2990
- return /* @__PURE__ */ (0, import_jsx_runtime310.jsx)("div", { className: clsx_default("lib-xplat-chip", type, size), children });
2970
+ return /* @__PURE__ */ (0, import_jsx_runtime309.jsx)("div", { className: clsx_default("lib-xplat-chip", type, size), children });
2991
2971
  };
2992
2972
  Chip.displayName = "Chip";
2993
2973
  var Chip_default = Chip;
@@ -2999,17 +2979,17 @@ var import_react14 = __toESM(require("react"), 1);
2999
2979
  var import_react8 = __toESM(require("react"), 1);
3000
2980
 
3001
2981
  // src/components/Input/InputValidations.tsx
3002
- var import_jsx_runtime311 = require("react/jsx-runtime");
2982
+ var import_jsx_runtime310 = require("react/jsx-runtime");
3003
2983
  var InputValidations = (props) => {
3004
2984
  const { message, status = "default" } = props;
3005
- return /* @__PURE__ */ (0, import_jsx_runtime311.jsxs)("div", { className: clsx_default("lib-xplat-input-validation", status), children: [
3006
- /* @__PURE__ */ (0, import_jsx_runtime311.jsxs)("div", { className: "icon", children: [
3007
- status === "default" && /* @__PURE__ */ (0, import_jsx_runtime311.jsx)(InfoIcon_default, {}),
3008
- status === "success" && /* @__PURE__ */ (0, import_jsx_runtime311.jsx)(SuccessIcon_default, {}),
3009
- status === "warning" && /* @__PURE__ */ (0, import_jsx_runtime311.jsx)(InfoIcon_default, {}),
3010
- status === "error" && /* @__PURE__ */ (0, import_jsx_runtime311.jsx)(ErrorIcon_default, {})
2985
+ return /* @__PURE__ */ (0, import_jsx_runtime310.jsxs)("div", { className: clsx_default("lib-xplat-input-validation", status), children: [
2986
+ /* @__PURE__ */ (0, import_jsx_runtime310.jsxs)("div", { className: "icon", children: [
2987
+ status === "default" && /* @__PURE__ */ (0, import_jsx_runtime310.jsx)(InfoIcon_default, {}),
2988
+ status === "success" && /* @__PURE__ */ (0, import_jsx_runtime310.jsx)(SuccessIcon_default, {}),
2989
+ status === "warning" && /* @__PURE__ */ (0, import_jsx_runtime310.jsx)(InfoIcon_default, {}),
2990
+ status === "error" && /* @__PURE__ */ (0, import_jsx_runtime310.jsx)(ErrorIcon_default, {})
3011
2991
  ] }),
3012
- /* @__PURE__ */ (0, import_jsx_runtime311.jsx)("div", { className: "message", children: message })
2992
+ /* @__PURE__ */ (0, import_jsx_runtime310.jsx)("div", { className: "message", children: message })
3013
2993
  ] });
3014
2994
  };
3015
2995
  InputValidations.displayName = "InputValidations";
@@ -3050,7 +3030,7 @@ var handleTelBackspace = (prevValue, currValue) => {
3050
3030
  };
3051
3031
 
3052
3032
  // src/components/Input/Input.tsx
3053
- var import_jsx_runtime312 = require("react/jsx-runtime");
3033
+ var import_jsx_runtime311 = require("react/jsx-runtime");
3054
3034
  var import_react9 = require("react");
3055
3035
  var formatValue = (type, value) => {
3056
3036
  if (value === null || value === void 0) return "";
@@ -3126,13 +3106,13 @@ var Input = import_react8.default.forwardRef((props, ref) => {
3126
3106
  onChange(event);
3127
3107
  }
3128
3108
  };
3129
- return /* @__PURE__ */ (0, import_jsx_runtime312.jsxs)("div", { className: clsx_default("lib-xplat-input-wrap", className), children: [
3130
- /* @__PURE__ */ (0, import_jsx_runtime312.jsxs)(
3109
+ return /* @__PURE__ */ (0, import_jsx_runtime311.jsxs)("div", { className: clsx_default("lib-xplat-input-wrap", className), children: [
3110
+ /* @__PURE__ */ (0, import_jsx_runtime311.jsxs)(
3131
3111
  "div",
3132
3112
  {
3133
3113
  className: clsx_default("lib-xplat-input", size, disabled ? "disabled" : void 0),
3134
3114
  children: [
3135
- /* @__PURE__ */ (0, import_jsx_runtime312.jsx)(
3115
+ /* @__PURE__ */ (0, import_jsx_runtime311.jsx)(
3136
3116
  "input",
3137
3117
  {
3138
3118
  ...inputProps,
@@ -3143,11 +3123,11 @@ var Input = import_react8.default.forwardRef((props, ref) => {
3143
3123
  onChange: handleChange
3144
3124
  }
3145
3125
  ),
3146
- suffix && /* @__PURE__ */ (0, import_jsx_runtime312.jsx)("div", { className: "suffix", children: suffix })
3126
+ suffix && /* @__PURE__ */ (0, import_jsx_runtime311.jsx)("div", { className: "suffix", children: suffix })
3147
3127
  ]
3148
3128
  }
3149
3129
  ),
3150
- validations && /* @__PURE__ */ (0, import_jsx_runtime312.jsx)("div", { className: "lib-xplat-input-validation-wrap", children: validations?.map((validation, idx) => /* @__PURE__ */ (0, import_react9.createElement)(
3130
+ validations && /* @__PURE__ */ (0, import_jsx_runtime311.jsx)("div", { className: "lib-xplat-input-validation-wrap", children: validations?.map((validation, idx) => /* @__PURE__ */ (0, import_react9.createElement)(
3151
3131
  InputValidations_default,
3152
3132
  {
3153
3133
  ...validation,
@@ -3161,7 +3141,7 @@ var Input_default = Input;
3161
3141
 
3162
3142
  // src/components/Input/PasswordInput/PasswordInput.tsx
3163
3143
  var import_react10 = __toESM(require("react"), 1);
3164
- var import_jsx_runtime313 = require("react/jsx-runtime");
3144
+ var import_jsx_runtime312 = require("react/jsx-runtime");
3165
3145
  var PasswordInput = import_react10.default.forwardRef(
3166
3146
  (props, ref) => {
3167
3147
  const { reg: _reg, ...inputProps } = props;
@@ -3169,11 +3149,11 @@ var PasswordInput = import_react10.default.forwardRef(
3169
3149
  const handleChangeView = () => {
3170
3150
  setIsView((prev) => !prev);
3171
3151
  };
3172
- return /* @__PURE__ */ (0, import_jsx_runtime313.jsx)(
3152
+ return /* @__PURE__ */ (0, import_jsx_runtime312.jsx)(
3173
3153
  Input_default,
3174
3154
  {
3175
3155
  ...inputProps,
3176
- suffix: /* @__PURE__ */ (0, import_jsx_runtime313.jsx)("div", { className: "wrapper pointer", onClick: handleChangeView, children: isView ? /* @__PURE__ */ (0, import_jsx_runtime313.jsx)(OpenEyeIcon_default, {}) : /* @__PURE__ */ (0, import_jsx_runtime313.jsx)(CloseEyeIcon_default, {}) }),
3156
+ suffix: /* @__PURE__ */ (0, import_jsx_runtime312.jsx)("div", { className: "wrapper pointer", onClick: handleChangeView, children: isView ? /* @__PURE__ */ (0, import_jsx_runtime312.jsx)(OpenEyeIcon_default, {}) : /* @__PURE__ */ (0, import_jsx_runtime312.jsx)(CloseEyeIcon_default, {}) }),
3177
3157
  type: isView ? "text" : "password",
3178
3158
  ref
3179
3159
  }
@@ -3190,9 +3170,9 @@ var import_react_dom2 = require("react-dom");
3190
3170
  // src/tokens/hooks/Portal.tsx
3191
3171
  var import_react11 = __toESM(require("react"), 1);
3192
3172
  var import_react_dom = __toESM(require("react-dom"), 1);
3193
- var import_jsx_runtime314 = require("react/jsx-runtime");
3173
+ var import_jsx_runtime313 = require("react/jsx-runtime");
3194
3174
  var PortalContainerContext = import_react11.default.createContext(null);
3195
- var PortalProvider = ({ container, children }) => /* @__PURE__ */ (0, import_jsx_runtime314.jsx)(PortalContainerContext.Provider, { value: container, children });
3175
+ var PortalProvider = ({ container, children }) => /* @__PURE__ */ (0, import_jsx_runtime313.jsx)(PortalContainerContext.Provider, { value: container, children });
3196
3176
  var Portal = ({ children }) => {
3197
3177
  const contextContainer = import_react11.default.useContext(PortalContainerContext);
3198
3178
  if (typeof document === "undefined") return null;
@@ -3203,7 +3183,7 @@ Portal.displayName = "Portal";
3203
3183
  var Portal_default = Portal;
3204
3184
 
3205
3185
  // src/components/Modal/Modal.tsx
3206
- var import_jsx_runtime315 = require("react/jsx-runtime");
3186
+ var import_jsx_runtime314 = require("react/jsx-runtime");
3207
3187
  var ANIMATION_DURATION_MS = 200;
3208
3188
  var Modal = (props) => {
3209
3189
  const { isOpen, onClose, children } = props;
@@ -3224,12 +3204,12 @@ var Modal = (props) => {
3224
3204
  if (!mounted) return null;
3225
3205
  const stateClass = visible ? "enter" : "exit";
3226
3206
  return (0, import_react_dom2.createPortal)(
3227
- /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(
3207
+ /* @__PURE__ */ (0, import_jsx_runtime314.jsx)(
3228
3208
  "div",
3229
3209
  {
3230
3210
  className: clsx_default("lib-xplat-modal", "dim", stateClass),
3231
3211
  onClick: onClose,
3232
- children: /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(
3212
+ children: /* @__PURE__ */ (0, import_jsx_runtime314.jsx)(
3233
3213
  "div",
3234
3214
  {
3235
3215
  ref: boxRef,
@@ -3237,7 +3217,7 @@ var Modal = (props) => {
3237
3217
  role: "dialog",
3238
3218
  "aria-modal": "true",
3239
3219
  onClick: (e) => e.stopPropagation(),
3240
- children: /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(PortalProvider, { container: boxRef.current, children })
3220
+ children: /* @__PURE__ */ (0, import_jsx_runtime314.jsx)(PortalProvider, { container: boxRef.current, children })
3241
3221
  }
3242
3222
  )
3243
3223
  }
@@ -3250,7 +3230,7 @@ var Modal_default = Modal;
3250
3230
 
3251
3231
  // src/components/DatePicker/SingleDatePicker/index.tsx
3252
3232
  var import_react13 = __toESM(require("react"), 1);
3253
- var import_jsx_runtime316 = require("react/jsx-runtime");
3233
+ var import_jsx_runtime315 = require("react/jsx-runtime");
3254
3234
  var DayCell2 = import_react13.default.memo(
3255
3235
  ({
3256
3236
  day,
@@ -3261,7 +3241,7 @@ var DayCell2 = import_react13.default.memo(
3261
3241
  isEnd,
3262
3242
  inRange,
3263
3243
  onSelect
3264
- }) => /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(
3244
+ }) => /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(
3265
3245
  "button",
3266
3246
  {
3267
3247
  type: "button",
@@ -3359,20 +3339,20 @@ var SingleDatePicker = (props) => {
3359
3339
  const monthLabels = MONTH_LABELS[locale];
3360
3340
  const titleText = pickerMode === "days" ? locale === "ko" ? `${year}\uB144 ${monthLabels[month]}` : `${monthLabels[month]} ${year}` : pickerMode === "months" ? `${year}` : `${yearRangeStart} - ${yearRangeStart + 11}`;
3361
3341
  const hasRange = rangeStart != null && rangeEnd != null;
3362
- return /* @__PURE__ */ (0, import_jsx_runtime316.jsxs)(
3342
+ return /* @__PURE__ */ (0, import_jsx_runtime315.jsxs)(
3363
3343
  "div",
3364
3344
  {
3365
3345
  className: clsx_default("lib-xplat-datepicker", "single"),
3366
3346
  children: [
3367
- /* @__PURE__ */ (0, import_jsx_runtime316.jsxs)("div", { className: "datepicker-header", children: [
3368
- /* @__PURE__ */ (0, import_jsx_runtime316.jsx)("button", { className: "datepicker-nav", onClick: handlePrev, type: "button", children: /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(ChevronLeftIcon_default, {}) }),
3369
- /* @__PURE__ */ (0, import_jsx_runtime316.jsx)("button", { className: "datepicker-title", onClick: handleTitleClick, type: "button", children: titleText }),
3370
- /* @__PURE__ */ (0, import_jsx_runtime316.jsx)("button", { className: "datepicker-nav", onClick: handleNext, type: "button", children: /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(ChevronRightIcon_default, {}) })
3347
+ /* @__PURE__ */ (0, import_jsx_runtime315.jsxs)("div", { className: "datepicker-header", children: [
3348
+ /* @__PURE__ */ (0, import_jsx_runtime315.jsx)("button", { className: "datepicker-nav", onClick: handlePrev, type: "button", children: /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(ChevronLeftIcon_default, {}) }),
3349
+ /* @__PURE__ */ (0, import_jsx_runtime315.jsx)("button", { className: "datepicker-title", onClick: handleTitleClick, type: "button", children: titleText }),
3350
+ /* @__PURE__ */ (0, import_jsx_runtime315.jsx)("button", { className: "datepicker-nav", onClick: handleNext, type: "button", children: /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(ChevronRightIcon_default, {}) })
3371
3351
  ] }),
3372
- /* @__PURE__ */ (0, import_jsx_runtime316.jsxs)("div", { className: "datepicker-body", children: [
3373
- pickerMode === "years" && /* @__PURE__ */ (0, import_jsx_runtime316.jsx)("div", { className: "datepicker-picker-grid", children: Array.from({ length: 12 }, (_, i) => {
3352
+ /* @__PURE__ */ (0, import_jsx_runtime315.jsxs)("div", { className: "datepicker-body", children: [
3353
+ pickerMode === "years" && /* @__PURE__ */ (0, import_jsx_runtime315.jsx)("div", { className: "datepicker-picker-grid", children: Array.from({ length: 12 }, (_, i) => {
3374
3354
  const y = yearRangeStart + i;
3375
- return /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(
3355
+ return /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(
3376
3356
  "button",
3377
3357
  {
3378
3358
  type: "button",
@@ -3383,7 +3363,7 @@ var SingleDatePicker = (props) => {
3383
3363
  y
3384
3364
  );
3385
3365
  }) }),
3386
- pickerMode === "months" && /* @__PURE__ */ (0, import_jsx_runtime316.jsx)("div", { className: "datepicker-picker-grid", children: monthLabels.map((label, i) => /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(
3366
+ pickerMode === "months" && /* @__PURE__ */ (0, import_jsx_runtime315.jsx)("div", { className: "datepicker-picker-grid", children: monthLabels.map((label, i) => /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(
3387
3367
  "button",
3388
3368
  {
3389
3369
  type: "button",
@@ -3393,8 +3373,8 @@ var SingleDatePicker = (props) => {
3393
3373
  },
3394
3374
  i
3395
3375
  )) }),
3396
- pickerMode === "days" && /* @__PURE__ */ (0, import_jsx_runtime316.jsxs)(import_jsx_runtime316.Fragment, { children: [
3397
- /* @__PURE__ */ (0, import_jsx_runtime316.jsx)("div", { className: "datepicker-weekdays", children: weekdays.map((label, i) => /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(
3376
+ pickerMode === "days" && /* @__PURE__ */ (0, import_jsx_runtime315.jsxs)(import_jsx_runtime315.Fragment, { children: [
3377
+ /* @__PURE__ */ (0, import_jsx_runtime315.jsx)("div", { className: "datepicker-weekdays", children: weekdays.map((label, i) => /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(
3398
3378
  "div",
3399
3379
  {
3400
3380
  className: clsx_default(
@@ -3406,7 +3386,7 @@ var SingleDatePicker = (props) => {
3406
3386
  },
3407
3387
  label
3408
3388
  )) }),
3409
- /* @__PURE__ */ (0, import_jsx_runtime316.jsx)("div", { className: "datepicker-grid", children: days.map((day, idx) => {
3389
+ /* @__PURE__ */ (0, import_jsx_runtime315.jsx)("div", { className: "datepicker-grid", children: days.map((day, idx) => {
3410
3390
  const t = day.date.getTime();
3411
3391
  const disabled = t < minTime || t > maxTime;
3412
3392
  const selected = value ? isSameDay(day.date, value) : false;
@@ -3416,7 +3396,7 @@ var SingleDatePicker = (props) => {
3416
3396
  const isStart = hasRange ? isSameDay(day.date, rangeStart) : false;
3417
3397
  const isEnd = hasRange ? isSameDay(day.date, rangeEnd) : false;
3418
3398
  const inRangeVal = hasRange ? isInRange(day.date, rangeStart, rangeEnd) : false;
3419
- return /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(
3399
+ return /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(
3420
3400
  DayCell2,
3421
3401
  {
3422
3402
  day,
@@ -3441,7 +3421,7 @@ SingleDatePicker.displayName = "SingleDatePicker";
3441
3421
  var SingleDatePicker_default = SingleDatePicker;
3442
3422
 
3443
3423
  // src/components/DatePicker/InputDatePicker/index.tsx
3444
- var import_jsx_runtime317 = require("react/jsx-runtime");
3424
+ var import_jsx_runtime316 = require("react/jsx-runtime");
3445
3425
  var formatDate = (date) => {
3446
3426
  if (!date || !(date instanceof Date) || isNaN(date.getTime())) return "";
3447
3427
  const y = date.getFullYear();
@@ -3468,19 +3448,19 @@ var InputDatePicker = (props) => {
3468
3448
  const handleClose = () => {
3469
3449
  setIsOpen(false);
3470
3450
  };
3471
- return /* @__PURE__ */ (0, import_jsx_runtime317.jsxs)("div", { className: clsx_default("lib-xplat-datepicker input-datepicker", disabled && "disabled"), children: [
3472
- /* @__PURE__ */ (0, import_jsx_runtime317.jsx)("div", { className: "input-datepicker-trigger", onClick: handleOpen, children: /* @__PURE__ */ (0, import_jsx_runtime317.jsx)(
3451
+ return /* @__PURE__ */ (0, import_jsx_runtime316.jsxs)("div", { className: clsx_default("lib-xplat-datepicker input-datepicker", disabled && "disabled"), children: [
3452
+ /* @__PURE__ */ (0, import_jsx_runtime316.jsx)("div", { className: "input-datepicker-trigger", onClick: handleOpen, children: /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(
3473
3453
  Input_default,
3474
3454
  {
3475
3455
  value: formatDate(value),
3476
3456
  placeholder,
3477
- suffix: /* @__PURE__ */ (0, import_jsx_runtime317.jsx)(CalenderIcon_default, {}),
3457
+ suffix: /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(CalenderIcon_default, {}),
3478
3458
  disabled,
3479
3459
  readOnly: true
3480
3460
  }
3481
3461
  ) }),
3482
- /* @__PURE__ */ (0, import_jsx_runtime317.jsx)(Modal_default, { isOpen, onClose: handleClose, children: /* @__PURE__ */ (0, import_jsx_runtime317.jsxs)("div", { className: "lib-xplat-popup-datepicker-card", children: [
3483
- /* @__PURE__ */ (0, import_jsx_runtime317.jsx)("div", { className: "popup-datepicker-content", children: /* @__PURE__ */ (0, import_jsx_runtime317.jsx)(
3462
+ /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(Modal_default, { isOpen, onClose: handleClose, children: /* @__PURE__ */ (0, import_jsx_runtime316.jsxs)("div", { className: "lib-xplat-popup-datepicker-card", children: [
3463
+ /* @__PURE__ */ (0, import_jsx_runtime316.jsx)("div", { className: "popup-datepicker-content", children: /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(
3484
3464
  SingleDatePicker_default,
3485
3465
  {
3486
3466
  value: tempDate,
@@ -3490,9 +3470,9 @@ var InputDatePicker = (props) => {
3490
3470
  locale
3491
3471
  }
3492
3472
  ) }),
3493
- /* @__PURE__ */ (0, import_jsx_runtime317.jsxs)("div", { className: "popup-datepicker-footer", children: [
3494
- /* @__PURE__ */ (0, import_jsx_runtime317.jsx)(Button_default, { type: "secondary", onClick: handleClose, children: locale === "ko" ? "\uCDE8\uC18C" : "Cancel" }),
3495
- /* @__PURE__ */ (0, import_jsx_runtime317.jsx)(Button_default, { type: "primary", onClick: handleApply, children: locale === "ko" ? "\uC801\uC6A9" : "Apply" })
3473
+ /* @__PURE__ */ (0, import_jsx_runtime316.jsxs)("div", { className: "popup-datepicker-footer", children: [
3474
+ /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(Button_default, { type: "secondary", onClick: handleClose, children: locale === "ko" ? "\uCDE8\uC18C" : "Cancel" }),
3475
+ /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(Button_default, { type: "primary", onClick: handleApply, children: locale === "ko" ? "\uC801\uC6A9" : "Apply" })
3496
3476
  ] })
3497
3477
  ] }) })
3498
3478
  ] });
@@ -3511,10 +3491,10 @@ var import_react16 = __toESM(require("react"), 1);
3511
3491
 
3512
3492
  // src/components/Tab/TabItem.tsx
3513
3493
  var import_react15 = __toESM(require("react"), 1);
3514
- var import_jsx_runtime318 = require("react/jsx-runtime");
3494
+ var import_jsx_runtime317 = require("react/jsx-runtime");
3515
3495
  var TabItem = import_react15.default.forwardRef((props, ref) => {
3516
3496
  const { isActive: isActive2, title, onClick } = props;
3517
- return /* @__PURE__ */ (0, import_jsx_runtime318.jsx)(
3497
+ return /* @__PURE__ */ (0, import_jsx_runtime317.jsx)(
3518
3498
  "div",
3519
3499
  {
3520
3500
  ref,
@@ -3528,7 +3508,7 @@ TabItem.displayName = "TabItem";
3528
3508
  var TabItem_default = TabItem;
3529
3509
 
3530
3510
  // src/components/Tab/Tab.tsx
3531
- var import_jsx_runtime319 = require("react/jsx-runtime");
3511
+ var import_jsx_runtime318 = require("react/jsx-runtime");
3532
3512
  var Tab = (props) => {
3533
3513
  const { activeIndex, onChange, tabs, type, size = "md" } = props;
3534
3514
  const [underlineStyle, setUnderlineStyle] = import_react16.default.useState({
@@ -3545,8 +3525,8 @@ var Tab = (props) => {
3545
3525
  setUnderlineStyle({ left: el.offsetLeft, width: el.offsetWidth });
3546
3526
  }
3547
3527
  }, [activeIndex, tabs.length]);
3548
- return /* @__PURE__ */ (0, import_jsx_runtime319.jsxs)("div", { className: clsx_default("lib-xplat-tab", `type-${type}`, size), children: [
3549
- tabs.map((tab, idx) => /* @__PURE__ */ (0, import_jsx_runtime319.jsx)(
3528
+ return /* @__PURE__ */ (0, import_jsx_runtime318.jsxs)("div", { className: clsx_default("lib-xplat-tab", `type-${type}`, size), children: [
3529
+ tabs.map((tab, idx) => /* @__PURE__ */ (0, import_jsx_runtime318.jsx)(
3550
3530
  TabItem_default,
3551
3531
  {
3552
3532
  onClick: () => handleChangeActiveTab(tab, idx),
@@ -3558,7 +3538,7 @@ var Tab = (props) => {
3558
3538
  },
3559
3539
  `${tab.value}_${idx}`
3560
3540
  )),
3561
- type === "toggle" && /* @__PURE__ */ (0, import_jsx_runtime319.jsx)(
3541
+ type === "toggle" && /* @__PURE__ */ (0, import_jsx_runtime318.jsx)(
3562
3542
  "div",
3563
3543
  {
3564
3544
  className: "tab-toggle-underline",
@@ -3574,7 +3554,7 @@ Tab.displayName = "Tab";
3574
3554
  var Tab_default = Tab;
3575
3555
 
3576
3556
  // src/components/DatePicker/RangePicker/index.tsx
3577
- var import_jsx_runtime320 = require("react/jsx-runtime");
3557
+ var import_jsx_runtime319 = require("react/jsx-runtime");
3578
3558
  var RangePicker = (props) => {
3579
3559
  const {
3580
3560
  startDate,
@@ -3597,8 +3577,8 @@ var RangePicker = (props) => {
3597
3577
  };
3598
3578
  const startMaxDate = maxDate && endDate < maxDate ? endDate : endDate;
3599
3579
  const endMinDate = minDate && startDate > minDate ? startDate : startDate;
3600
- return /* @__PURE__ */ (0, import_jsx_runtime320.jsxs)("div", { className: clsx_default("lib-xplat-datepicker", "range"), children: [
3601
- /* @__PURE__ */ (0, import_jsx_runtime320.jsx)("div", { className: "datepicker-range-tabs", children: /* @__PURE__ */ (0, import_jsx_runtime320.jsx)(
3580
+ return /* @__PURE__ */ (0, import_jsx_runtime319.jsxs)("div", { className: clsx_default("lib-xplat-datepicker", "range"), children: [
3581
+ /* @__PURE__ */ (0, import_jsx_runtime319.jsx)("div", { className: "datepicker-range-tabs", children: /* @__PURE__ */ (0, import_jsx_runtime319.jsx)(
3602
3582
  Tab_default,
3603
3583
  {
3604
3584
  activeIndex: activeTab === "start" ? 0 : 1,
@@ -3611,8 +3591,8 @@ var RangePicker = (props) => {
3611
3591
  size: "sm"
3612
3592
  }
3613
3593
  ) }),
3614
- /* @__PURE__ */ (0, import_jsx_runtime320.jsxs)("div", { className: "datepicker-range-panels", children: [
3615
- /* @__PURE__ */ (0, import_jsx_runtime320.jsx)(
3594
+ /* @__PURE__ */ (0, import_jsx_runtime319.jsxs)("div", { className: "datepicker-range-panels", children: [
3595
+ /* @__PURE__ */ (0, import_jsx_runtime319.jsx)(
3616
3596
  SingleDatePicker_default,
3617
3597
  {
3618
3598
  value: startDate,
@@ -3624,7 +3604,7 @@ var RangePicker = (props) => {
3624
3604
  locale
3625
3605
  }
3626
3606
  ),
3627
- /* @__PURE__ */ (0, import_jsx_runtime320.jsx)(
3607
+ /* @__PURE__ */ (0, import_jsx_runtime319.jsx)(
3628
3608
  SingleDatePicker_default,
3629
3609
  {
3630
3610
  value: endDate,
@@ -3637,7 +3617,7 @@ var RangePicker = (props) => {
3637
3617
  }
3638
3618
  )
3639
3619
  ] }),
3640
- /* @__PURE__ */ (0, import_jsx_runtime320.jsx)("div", { className: "datepicker-range-mobile", children: activeTab === "start" ? /* @__PURE__ */ (0, import_jsx_runtime320.jsx)(
3620
+ /* @__PURE__ */ (0, import_jsx_runtime319.jsx)("div", { className: "datepicker-range-mobile", children: activeTab === "start" ? /* @__PURE__ */ (0, import_jsx_runtime319.jsx)(
3641
3621
  SingleDatePicker_default,
3642
3622
  {
3643
3623
  value: startDate,
@@ -3648,7 +3628,7 @@ var RangePicker = (props) => {
3648
3628
  rangeEnd: endDate,
3649
3629
  locale
3650
3630
  }
3651
- ) : /* @__PURE__ */ (0, import_jsx_runtime320.jsx)(
3631
+ ) : /* @__PURE__ */ (0, import_jsx_runtime319.jsx)(
3652
3632
  SingleDatePicker_default,
3653
3633
  {
3654
3634
  value: endDate,
@@ -3666,7 +3646,7 @@ RangePicker.displayName = "RangePicker";
3666
3646
  var RangePicker_default = RangePicker;
3667
3647
 
3668
3648
  // src/components/DatePicker/PopupPicker/index.tsx
3669
- var import_jsx_runtime321 = require("react/jsx-runtime");
3649
+ var import_jsx_runtime320 = require("react/jsx-runtime");
3670
3650
  var PopupPicker = (props) => {
3671
3651
  const { component, type, locale } = props;
3672
3652
  const [isOpen, setIsOpen] = import_react18.default.useState(false);
@@ -3677,11 +3657,11 @@ var PopupPicker = (props) => {
3677
3657
  props.onChange?.(date);
3678
3658
  handleClose();
3679
3659
  };
3680
- return /* @__PURE__ */ (0, import_jsx_runtime321.jsxs)("div", { className: "lib-xplat-popup-datepicker", children: [
3660
+ return /* @__PURE__ */ (0, import_jsx_runtime320.jsxs)("div", { className: "lib-xplat-popup-datepicker", children: [
3681
3661
  import_react18.default.cloneElement(component, { onClick: handleClick }),
3682
- /* @__PURE__ */ (0, import_jsx_runtime321.jsx)(Modal_default, { isOpen, onClose: handleClose, children: /* @__PURE__ */ (0, import_jsx_runtime321.jsxs)("div", { className: clsx_default("lib-xplat-popup-datepicker-card", type === "range" && "range-mode"), children: [
3683
- /* @__PURE__ */ (0, import_jsx_runtime321.jsxs)("div", { className: "popup-datepicker-content", children: [
3684
- type === "single" && /* @__PURE__ */ (0, import_jsx_runtime321.jsx)(
3662
+ /* @__PURE__ */ (0, import_jsx_runtime320.jsx)(Modal_default, { isOpen, onClose: handleClose, children: /* @__PURE__ */ (0, import_jsx_runtime320.jsxs)("div", { className: clsx_default("lib-xplat-popup-datepicker-card", type === "range" && "range-mode"), children: [
3663
+ /* @__PURE__ */ (0, import_jsx_runtime320.jsxs)("div", { className: "popup-datepicker-content", children: [
3664
+ type === "single" && /* @__PURE__ */ (0, import_jsx_runtime320.jsx)(
3685
3665
  SingleDatePicker_default,
3686
3666
  {
3687
3667
  value: props.value,
@@ -3691,7 +3671,7 @@ var PopupPicker = (props) => {
3691
3671
  locale
3692
3672
  }
3693
3673
  ),
3694
- type === "range" && /* @__PURE__ */ (0, import_jsx_runtime321.jsx)(
3674
+ type === "range" && /* @__PURE__ */ (0, import_jsx_runtime320.jsx)(
3695
3675
  RangePicker_default,
3696
3676
  {
3697
3677
  startDate: props.startDate,
@@ -3703,8 +3683,8 @@ var PopupPicker = (props) => {
3703
3683
  }
3704
3684
  )
3705
3685
  ] }),
3706
- /* @__PURE__ */ (0, import_jsx_runtime321.jsxs)("div", { className: "popup-datepicker-footer", children: [
3707
- /* @__PURE__ */ (0, import_jsx_runtime321.jsx)(
3686
+ /* @__PURE__ */ (0, import_jsx_runtime320.jsxs)("div", { className: "popup-datepicker-footer", children: [
3687
+ /* @__PURE__ */ (0, import_jsx_runtime320.jsx)(
3708
3688
  Button_default,
3709
3689
  {
3710
3690
  type: "secondary",
@@ -3712,7 +3692,7 @@ var PopupPicker = (props) => {
3712
3692
  children: locale === "ko" ? "\uCDE8\uC18C" : "Cancel"
3713
3693
  }
3714
3694
  ),
3715
- /* @__PURE__ */ (0, import_jsx_runtime321.jsx)(Button_default, { type: "primary", onClick: handleClose, children: locale === "ko" ? "\uC801\uC6A9" : "Apply" })
3695
+ /* @__PURE__ */ (0, import_jsx_runtime320.jsx)(Button_default, { type: "primary", onClick: handleClose, children: locale === "ko" ? "\uC801\uC6A9" : "Apply" })
3716
3696
  ] })
3717
3697
  ] }) })
3718
3698
  ] });
@@ -3721,10 +3701,10 @@ PopupPicker.displayName = "PopupPicker";
3721
3701
  var PopupPicker_default = PopupPicker;
3722
3702
 
3723
3703
  // src/components/Divider/Divider.tsx
3724
- var import_jsx_runtime322 = require("react/jsx-runtime");
3704
+ var import_jsx_runtime321 = require("react/jsx-runtime");
3725
3705
  var Divider = (props) => {
3726
3706
  const { orientation = "horizontal" } = props;
3727
- return /* @__PURE__ */ (0, import_jsx_runtime322.jsx)(
3707
+ return /* @__PURE__ */ (0, import_jsx_runtime321.jsx)(
3728
3708
  "div",
3729
3709
  {
3730
3710
  className: clsx_default("lib-xplat-divider", orientation),
@@ -3739,7 +3719,7 @@ var Divider_default = Divider;
3739
3719
  // src/components/Drawer/Drawer.tsx
3740
3720
  var import_react19 = __toESM(require("react"), 1);
3741
3721
  var import_react_dom3 = require("react-dom");
3742
- var import_jsx_runtime323 = require("react/jsx-runtime");
3722
+ var import_jsx_runtime322 = require("react/jsx-runtime");
3743
3723
  var ANIMATION_DURATION_MS2 = 250;
3744
3724
  var Drawer = (props) => {
3745
3725
  const { isOpen, onClose, placement = "right", size = "md", title, children } = props;
@@ -3759,12 +3739,12 @@ var Drawer = (props) => {
3759
3739
  if (!mounted) return null;
3760
3740
  const stateClass = visible ? "enter" : "exit";
3761
3741
  return (0, import_react_dom3.createPortal)(
3762
- /* @__PURE__ */ (0, import_jsx_runtime323.jsx)(
3742
+ /* @__PURE__ */ (0, import_jsx_runtime322.jsx)(
3763
3743
  "div",
3764
3744
  {
3765
3745
  className: clsx_default("lib-xplat-drawer-overlay", stateClass),
3766
3746
  onClick: onClose,
3767
- children: /* @__PURE__ */ (0, import_jsx_runtime323.jsxs)(
3747
+ children: /* @__PURE__ */ (0, import_jsx_runtime322.jsxs)(
3768
3748
  "div",
3769
3749
  {
3770
3750
  className: clsx_default("lib-xplat-drawer", placement, size, stateClass),
@@ -3772,11 +3752,11 @@ var Drawer = (props) => {
3772
3752
  "aria-modal": "true",
3773
3753
  onClick: (e) => e.stopPropagation(),
3774
3754
  children: [
3775
- title && /* @__PURE__ */ (0, import_jsx_runtime323.jsxs)("div", { className: "drawer-header", children: [
3776
- /* @__PURE__ */ (0, import_jsx_runtime323.jsx)("span", { className: "drawer-title", children: title }),
3777
- /* @__PURE__ */ (0, import_jsx_runtime323.jsx)("button", { className: "close-btn", onClick: onClose, "aria-label": "\uB2EB\uAE30", children: "\xD7" })
3755
+ title && /* @__PURE__ */ (0, import_jsx_runtime322.jsxs)("div", { className: "drawer-header", children: [
3756
+ /* @__PURE__ */ (0, import_jsx_runtime322.jsx)("span", { className: "drawer-title", children: title }),
3757
+ /* @__PURE__ */ (0, import_jsx_runtime322.jsx)("button", { className: "close-btn", onClick: onClose, "aria-label": "\uB2EB\uAE30", children: "\xD7" })
3778
3758
  ] }),
3779
- /* @__PURE__ */ (0, import_jsx_runtime323.jsx)("div", { className: "drawer-body", children })
3759
+ /* @__PURE__ */ (0, import_jsx_runtime322.jsx)("div", { className: "drawer-body", children })
3780
3760
  ]
3781
3761
  }
3782
3762
  )
@@ -3878,7 +3858,7 @@ var useClickOutside = (refs, handler, enabled = true) => {
3878
3858
  var useClickOutside_default = useClickOutside;
3879
3859
 
3880
3860
  // src/components/Dropdown/Dropdown.tsx
3881
- var import_jsx_runtime324 = require("react/jsx-runtime");
3861
+ var import_jsx_runtime323 = require("react/jsx-runtime");
3882
3862
  var Dropdown = (props) => {
3883
3863
  const { items, children } = props;
3884
3864
  const [isOpen, setIsOpen] = import_react22.default.useState(false);
@@ -3903,8 +3883,8 @@ var Dropdown = (props) => {
3903
3883
  item.onClick?.();
3904
3884
  setIsOpen(false);
3905
3885
  };
3906
- return /* @__PURE__ */ (0, import_jsx_runtime324.jsxs)("div", { className: "lib-xplat-dropdown", children: [
3907
- /* @__PURE__ */ (0, import_jsx_runtime324.jsx)(
3886
+ return /* @__PURE__ */ (0, import_jsx_runtime323.jsxs)("div", { className: "lib-xplat-dropdown", children: [
3887
+ /* @__PURE__ */ (0, import_jsx_runtime323.jsx)(
3908
3888
  "div",
3909
3889
  {
3910
3890
  ref: triggerRef,
@@ -3913,14 +3893,14 @@ var Dropdown = (props) => {
3913
3893
  children
3914
3894
  }
3915
3895
  ),
3916
- mounted && /* @__PURE__ */ (0, import_jsx_runtime324.jsx)(Portal_default, { children: /* @__PURE__ */ (0, import_jsx_runtime324.jsx)(
3896
+ mounted && /* @__PURE__ */ (0, import_jsx_runtime323.jsx)(Portal_default, { children: /* @__PURE__ */ (0, import_jsx_runtime323.jsx)(
3917
3897
  "div",
3918
3898
  {
3919
3899
  ref: menuRef,
3920
3900
  className: clsx_default("lib-xplat-dropdown-menu", direction, { visible }),
3921
3901
  style: { top: position.top, left: position.left },
3922
3902
  role: "menu",
3923
- children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime324.jsx)(
3903
+ children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime323.jsx)(
3924
3904
  "button",
3925
3905
  {
3926
3906
  className: clsx_default("dropdown-item", {
@@ -3943,7 +3923,7 @@ var Dropdown_default = Dropdown;
3943
3923
 
3944
3924
  // src/components/Editor/Editor.tsx
3945
3925
  var import_react23 = __toESM(require("react"), 1);
3946
- var import_jsx_runtime325 = require("react/jsx-runtime");
3926
+ var import_jsx_runtime324 = require("react/jsx-runtime");
3947
3927
  var DEFAULT_TOOLBAR = [
3948
3928
  "bold",
3949
3929
  "italic",
@@ -4463,8 +4443,8 @@ var Editor = (props) => {
4463
4443
  break;
4464
4444
  }
4465
4445
  };
4466
- return /* @__PURE__ */ (0, import_jsx_runtime325.jsxs)("div", { className: clsx_default("lib-xplat-editor", isFocused && "focused", readOnly && "readonly"), children: [
4467
- !readOnly && /* @__PURE__ */ (0, import_jsx_runtime325.jsx)(
4446
+ return /* @__PURE__ */ (0, import_jsx_runtime324.jsxs)("div", { className: clsx_default("lib-xplat-editor", isFocused && "focused", readOnly && "readonly"), children: [
4447
+ !readOnly && /* @__PURE__ */ (0, import_jsx_runtime324.jsx)(
4468
4448
  EditorToolbar,
4469
4449
  {
4470
4450
  items: toolbar,
@@ -4472,9 +4452,9 @@ var Editor = (props) => {
4472
4452
  onAction: onToolbarAction
4473
4453
  }
4474
4454
  ),
4475
- /* @__PURE__ */ (0, import_jsx_runtime325.jsxs)("div", { className: "lib-xplat-editor__content", style: { minHeight }, children: [
4476
- isEmpty && !isFocused && /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("div", { className: "lib-xplat-editor__placeholder", children: placeholder }),
4477
- /* @__PURE__ */ (0, import_jsx_runtime325.jsx)(
4455
+ /* @__PURE__ */ (0, import_jsx_runtime324.jsxs)("div", { className: "lib-xplat-editor__content", style: { minHeight }, children: [
4456
+ isEmpty && !isFocused && /* @__PURE__ */ (0, import_jsx_runtime324.jsx)("div", { className: "lib-xplat-editor__placeholder", children: placeholder }),
4457
+ /* @__PURE__ */ (0, import_jsx_runtime324.jsx)(
4478
4458
  "div",
4479
4459
  {
4480
4460
  ref: editorRef,
@@ -4493,7 +4473,7 @@ var Editor = (props) => {
4493
4473
  spellCheck: true
4494
4474
  }
4495
4475
  ),
4496
- slashOpen && filteredSlashItems.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime325.jsx)(
4476
+ slashOpen && filteredSlashItems.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime324.jsx)(
4497
4477
  SlashMenu,
4498
4478
  {
4499
4479
  position: slashPos,
@@ -4503,7 +4483,7 @@ var Editor = (props) => {
4503
4483
  onClose: closeSlashMenu
4504
4484
  }
4505
4485
  ),
4506
- linkOpen && /* @__PURE__ */ (0, import_jsx_runtime325.jsx)(
4486
+ linkOpen && /* @__PURE__ */ (0, import_jsx_runtime324.jsx)(
4507
4487
  LinkPopover,
4508
4488
  {
4509
4489
  position: linkPos,
@@ -4555,7 +4535,7 @@ var isActive = (item, active) => {
4555
4535
  return active.has(item);
4556
4536
  };
4557
4537
  var EditorToolbar = ({ items, active, onAction }) => {
4558
- return /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("div", { className: "lib-xplat-editor__toolbar", children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime325.jsx)(
4538
+ return /* @__PURE__ */ (0, import_jsx_runtime324.jsx)("div", { className: "lib-xplat-editor__toolbar", children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime324.jsx)(
4559
4539
  "button",
4560
4540
  {
4561
4541
  type: "button",
@@ -4580,12 +4560,12 @@ var SlashMenu = ({ position, items, activeIndex, onSelect, onClose }) => {
4580
4560
  window.addEventListener("mousedown", handleClickOutside);
4581
4561
  return () => window.removeEventListener("mousedown", handleClickOutside);
4582
4562
  }, [onClose]);
4583
- return /* @__PURE__ */ (0, import_jsx_runtime325.jsx)(
4563
+ return /* @__PURE__ */ (0, import_jsx_runtime324.jsx)(
4584
4564
  "div",
4585
4565
  {
4586
4566
  className: "lib-xplat-editor__slash-menu",
4587
4567
  style: { top: position.top, left: position.left },
4588
- children: items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime325.jsxs)(
4568
+ children: items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime324.jsxs)(
4589
4569
  "button",
4590
4570
  {
4591
4571
  type: "button",
@@ -4595,8 +4575,8 @@ var SlashMenu = ({ position, items, activeIndex, onSelect, onClose }) => {
4595
4575
  onSelect(item);
4596
4576
  },
4597
4577
  children: [
4598
- /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("span", { className: "label", children: item.label }),
4599
- item.hint && /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("span", { className: "hint", children: item.hint })
4578
+ /* @__PURE__ */ (0, import_jsx_runtime324.jsx)("span", { className: "label", children: item.label }),
4579
+ item.hint && /* @__PURE__ */ (0, import_jsx_runtime324.jsx)("span", { className: "hint", children: item.hint })
4600
4580
  ]
4601
4581
  },
4602
4582
  item.key
@@ -4609,13 +4589,13 @@ var LinkPopover = ({ position, value, onChange, onConfirm, onClose }) => {
4609
4589
  import_react23.default.useEffect(() => {
4610
4590
  inputRef.current?.focus();
4611
4591
  }, []);
4612
- return /* @__PURE__ */ (0, import_jsx_runtime325.jsxs)(
4592
+ return /* @__PURE__ */ (0, import_jsx_runtime324.jsxs)(
4613
4593
  "div",
4614
4594
  {
4615
4595
  className: "lib-xplat-editor__link-popover",
4616
4596
  style: { top: position.top, left: position.left },
4617
4597
  children: [
4618
- /* @__PURE__ */ (0, import_jsx_runtime325.jsx)(
4598
+ /* @__PURE__ */ (0, import_jsx_runtime324.jsx)(
4619
4599
  "input",
4620
4600
  {
4621
4601
  ref: inputRef,
@@ -4635,11 +4615,11 @@ var LinkPopover = ({ position, value, onChange, onConfirm, onClose }) => {
4635
4615
  }
4636
4616
  }
4637
4617
  ),
4638
- /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("button", { type: "button", onMouseDown: (e) => {
4618
+ /* @__PURE__ */ (0, import_jsx_runtime324.jsx)("button", { type: "button", onMouseDown: (e) => {
4639
4619
  e.preventDefault();
4640
4620
  onConfirm();
4641
4621
  }, children: "\uC801\uC6A9" }),
4642
- /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("button", { type: "button", onMouseDown: (e) => {
4622
+ /* @__PURE__ */ (0, import_jsx_runtime324.jsx)("button", { type: "button", onMouseDown: (e) => {
4643
4623
  e.preventDefault();
4644
4624
  onClose();
4645
4625
  }, children: "\uCDE8\uC18C" })
@@ -4649,15 +4629,15 @@ var LinkPopover = ({ position, value, onChange, onConfirm, onClose }) => {
4649
4629
  };
4650
4630
 
4651
4631
  // src/components/EmptyState/EmptyState.tsx
4652
- var import_jsx_runtime326 = require("react/jsx-runtime");
4632
+ var import_jsx_runtime325 = require("react/jsx-runtime");
4653
4633
  var EmptyState = (props) => {
4654
4634
  const { icon, title = "\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4", description, action } = props;
4655
- return /* @__PURE__ */ (0, import_jsx_runtime326.jsxs)("div", { className: "lib-xplat-empty-state", children: [
4656
- icon && /* @__PURE__ */ (0, import_jsx_runtime326.jsx)("div", { className: "empty-icon", children: icon }),
4657
- !icon && /* @__PURE__ */ (0, import_jsx_runtime326.jsx)("div", { className: "empty-icon", children: /* @__PURE__ */ (0, import_jsx_runtime326.jsx)("svg", { viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime326.jsx)("path", { d: "M20 6h-8l-2-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm0 12H4V8h16v10z" }) }) }),
4658
- /* @__PURE__ */ (0, import_jsx_runtime326.jsx)("p", { className: "empty-title", children: title }),
4659
- description && /* @__PURE__ */ (0, import_jsx_runtime326.jsx)("p", { className: "empty-description", children: description }),
4660
- action && /* @__PURE__ */ (0, import_jsx_runtime326.jsx)("div", { className: "empty-action", children: action })
4635
+ return /* @__PURE__ */ (0, import_jsx_runtime325.jsxs)("div", { className: "lib-xplat-empty-state", children: [
4636
+ icon && /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("div", { className: "empty-icon", children: icon }),
4637
+ !icon && /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("div", { className: "empty-icon", children: /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("svg", { viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("path", { d: "M20 6h-8l-2-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm0 12H4V8h16v10z" }) }) }),
4638
+ /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("p", { className: "empty-title", children: title }),
4639
+ description && /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("p", { className: "empty-description", children: description }),
4640
+ action && /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("div", { className: "empty-action", children: action })
4661
4641
  ] });
4662
4642
  };
4663
4643
  EmptyState.displayName = "EmptyState";
@@ -4665,7 +4645,7 @@ var EmptyState_default = EmptyState;
4665
4645
 
4666
4646
  // src/components/FileUpload/FileUpload.tsx
4667
4647
  var import_react24 = __toESM(require("react"), 1);
4668
- var import_jsx_runtime327 = require("react/jsx-runtime");
4648
+ var import_jsx_runtime326 = require("react/jsx-runtime");
4669
4649
  var FileUpload = (props) => {
4670
4650
  const {
4671
4651
  accept,
@@ -4706,7 +4686,7 @@ var FileUpload = (props) => {
4706
4686
  handleFiles(e.target.files);
4707
4687
  }
4708
4688
  };
4709
- return /* @__PURE__ */ (0, import_jsx_runtime327.jsxs)(
4689
+ return /* @__PURE__ */ (0, import_jsx_runtime326.jsxs)(
4710
4690
  "div",
4711
4691
  {
4712
4692
  className: clsx_default("lib-xplat-file-upload", { "drag-over": isDragOver }),
@@ -4715,7 +4695,7 @@ var FileUpload = (props) => {
4715
4695
  onDragLeave: handleDragLeave,
4716
4696
  onClick: () => inputRef.current?.click(),
4717
4697
  children: [
4718
- /* @__PURE__ */ (0, import_jsx_runtime327.jsx)(
4698
+ /* @__PURE__ */ (0, import_jsx_runtime326.jsx)(
4719
4699
  "input",
4720
4700
  {
4721
4701
  ref: inputRef,
@@ -4725,9 +4705,9 @@ var FileUpload = (props) => {
4725
4705
  onChange: handleChange
4726
4706
  }
4727
4707
  ),
4728
- /* @__PURE__ */ (0, import_jsx_runtime327.jsx)("div", { className: "upload-icon", children: /* @__PURE__ */ (0, import_jsx_runtime327.jsx)(UploadIcon_default, {}) }),
4729
- /* @__PURE__ */ (0, import_jsx_runtime327.jsx)("p", { className: "upload-label", children: label }),
4730
- description && /* @__PURE__ */ (0, import_jsx_runtime327.jsx)("p", { className: "upload-description", children: description })
4708
+ /* @__PURE__ */ (0, import_jsx_runtime326.jsx)("div", { className: "upload-icon", children: /* @__PURE__ */ (0, import_jsx_runtime326.jsx)(UploadIcon_default, {}) }),
4709
+ /* @__PURE__ */ (0, import_jsx_runtime326.jsx)("p", { className: "upload-label", children: label }),
4710
+ description && /* @__PURE__ */ (0, import_jsx_runtime326.jsx)("p", { className: "upload-description", children: description })
4731
4711
  ]
4732
4712
  }
4733
4713
  );
@@ -4821,7 +4801,7 @@ var htmlToReactProgressive = (root, typedLen, rangeMap) => {
4821
4801
  };
4822
4802
 
4823
4803
  // src/components/HtmlTypeWriter/HtmlTypeWriter.tsx
4824
- var import_jsx_runtime328 = require("react/jsx-runtime");
4804
+ var import_jsx_runtime327 = require("react/jsx-runtime");
4825
4805
  var HtmlTypeWriter = ({
4826
4806
  html,
4827
4807
  duration = 20,
@@ -4864,14 +4844,14 @@ var HtmlTypeWriter = ({
4864
4844
  () => doc ? htmlToReactProgressive(doc.body, typedLen, rangeMap) : null,
4865
4845
  [doc, typedLen, rangeMap]
4866
4846
  );
4867
- return /* @__PURE__ */ (0, import_jsx_runtime328.jsx)("div", { className: "lib-xplat-htmlTypewriter", children: parsed });
4847
+ return /* @__PURE__ */ (0, import_jsx_runtime327.jsx)("div", { className: "lib-xplat-htmlTypewriter", children: parsed });
4868
4848
  };
4869
4849
  HtmlTypeWriter.displayName = "HtmlTypeWriter";
4870
4850
  var HtmlTypeWriter_default = HtmlTypeWriter;
4871
4851
 
4872
4852
  // src/components/ImageSelector/ImageSelector.tsx
4873
4853
  var import_react27 = __toESM(require("react"), 1);
4874
- var import_jsx_runtime329 = require("react/jsx-runtime");
4854
+ var import_jsx_runtime328 = require("react/jsx-runtime");
4875
4855
  var ImageSelector = (props) => {
4876
4856
  const { value, label, onChange } = props;
4877
4857
  const [previewUrl, setPreviewUrl] = import_react27.default.useState();
@@ -4897,8 +4877,8 @@ var ImageSelector = (props) => {
4897
4877
  const handleOpenFileDialog = () => {
4898
4878
  inputRef.current?.click();
4899
4879
  };
4900
- return /* @__PURE__ */ (0, import_jsx_runtime329.jsxs)("div", { className: `lib-xplat-imageselector${value ? "" : " none-value"}`, children: [
4901
- /* @__PURE__ */ (0, import_jsx_runtime329.jsx)(
4880
+ return /* @__PURE__ */ (0, import_jsx_runtime328.jsxs)("div", { className: `lib-xplat-imageselector${value ? "" : " none-value"}`, children: [
4881
+ /* @__PURE__ */ (0, import_jsx_runtime328.jsx)(
4902
4882
  "input",
4903
4883
  {
4904
4884
  type: "file",
@@ -4908,19 +4888,40 @@ var ImageSelector = (props) => {
4908
4888
  ref: inputRef
4909
4889
  }
4910
4890
  ),
4911
- value && /* @__PURE__ */ (0, import_jsx_runtime329.jsxs)("div", { className: "action-bar", children: [
4912
- /* @__PURE__ */ (0, import_jsx_runtime329.jsx)("div", { className: "icon-wrapper", onClick: handleOpenFileDialog, children: /* @__PURE__ */ (0, import_jsx_runtime329.jsx)(UploadIcon_default, {}) }),
4913
- /* @__PURE__ */ (0, import_jsx_runtime329.jsx)("div", { className: "icon-wrapper", onClick: handleDeleteFile, children: /* @__PURE__ */ (0, import_jsx_runtime329.jsx)(DeleteIcon_default, {}) })
4891
+ value && /* @__PURE__ */ (0, import_jsx_runtime328.jsxs)("div", { className: "action-bar", children: [
4892
+ /* @__PURE__ */ (0, import_jsx_runtime328.jsx)("div", { className: "icon-wrapper", onClick: handleOpenFileDialog, children: /* @__PURE__ */ (0, import_jsx_runtime328.jsx)(UploadIcon_default, {}) }),
4893
+ /* @__PURE__ */ (0, import_jsx_runtime328.jsx)("div", { className: "icon-wrapper", onClick: handleDeleteFile, children: /* @__PURE__ */ (0, import_jsx_runtime328.jsx)(DeleteIcon_default, {}) })
4914
4894
  ] }),
4915
- /* @__PURE__ */ (0, import_jsx_runtime329.jsx)("div", { className: "content", children: previewUrl ? /* @__PURE__ */ (0, import_jsx_runtime329.jsx)("img", { src: previewUrl, alt: "preview" }) : /* @__PURE__ */ (0, import_jsx_runtime329.jsxs)("div", { className: "skeleton", onClick: handleOpenFileDialog, children: [
4916
- /* @__PURE__ */ (0, import_jsx_runtime329.jsx)("div", { className: "icon-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime329.jsx)(ImageIcon_default, {}) }),
4917
- /* @__PURE__ */ (0, import_jsx_runtime329.jsx)("div", { className: "label", children: label || "\uC774\uBBF8\uC9C0 \uCD94\uAC00\uD558\uAE30" })
4895
+ /* @__PURE__ */ (0, import_jsx_runtime328.jsx)("div", { className: "content", children: previewUrl ? /* @__PURE__ */ (0, import_jsx_runtime328.jsx)("img", { src: previewUrl, alt: "preview" }) : /* @__PURE__ */ (0, import_jsx_runtime328.jsxs)("div", { className: "skeleton", onClick: handleOpenFileDialog, children: [
4896
+ /* @__PURE__ */ (0, import_jsx_runtime328.jsx)("div", { className: "icon-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime328.jsx)(ImageIcon_default, {}) }),
4897
+ /* @__PURE__ */ (0, import_jsx_runtime328.jsx)("div", { className: "label", children: label || "\uC774\uBBF8\uC9C0 \uCD94\uAC00\uD558\uAE30" })
4918
4898
  ] }) })
4919
4899
  ] });
4920
4900
  };
4921
4901
  ImageSelector.displayName = "ImageSelector";
4922
4902
  var ImageSelector_default = ImageSelector;
4923
4903
 
4904
+ // src/components/NotificationBadge/NotificationBadge.tsx
4905
+ var import_jsx_runtime329 = require("react/jsx-runtime");
4906
+ var NotificationBadge = (props) => {
4907
+ const {
4908
+ children,
4909
+ type = "error",
4910
+ count,
4911
+ maxCount = 99,
4912
+ dot = false,
4913
+ size = "md"
4914
+ } = props;
4915
+ const showBadge = dot || count !== void 0 && count > 0;
4916
+ const displayCount = count !== void 0 && count > maxCount ? `${maxCount}+` : count;
4917
+ return /* @__PURE__ */ (0, import_jsx_runtime329.jsxs)("div", { className: clsx_default("lib-xplat-notification-badge", size), children: [
4918
+ children,
4919
+ showBadge && /* @__PURE__ */ (0, import_jsx_runtime329.jsx)("span", { className: clsx_default("badge-indicator", type, { dot }), children: !dot && displayCount })
4920
+ ] });
4921
+ };
4922
+ NotificationBadge.displayName = "NotificationBadge";
4923
+ var NotificationBadge_default = NotificationBadge;
4924
+
4924
4925
  // src/components/Pagination/Pagination.tsx
4925
4926
  var import_jsx_runtime330 = require("react/jsx-runtime");
4926
4927
  var getPageRange = (current, totalPages, siblingCount) => {
@@ -5891,6 +5892,7 @@ var TableCell = import_react38.default.memo((props) => {
5891
5892
  width,
5892
5893
  nowrap = false,
5893
5894
  scope = "col",
5895
+ colSpan,
5894
5896
  onClick
5895
5897
  } = props;
5896
5898
  const { registerStickyCell, stickyCells } = useTableRowContext();
@@ -5939,6 +5941,7 @@ var TableCell = import_react38.default.memo((props) => {
5939
5941
  nowrap && "nowrap"
5940
5942
  ),
5941
5943
  scope: isHeaderCell ? scope : void 0,
5944
+ colSpan,
5942
5945
  style: {
5943
5946
  ...isSticky ? { left } : null,
5944
5947
  ...width != null ? { width: typeof width === "number" ? `${width}px` : width } : null
@@ -6640,6 +6643,7 @@ var Video_default = Video;
6640
6643
  Input,
6641
6644
  InputDatePicker,
6642
6645
  Modal,
6646
+ NotificationBadge,
6643
6647
  Pagination,
6644
6648
  PasswordInput,
6645
6649
  PopOver,