@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.
- package/dist/components/AutoResizeTextArea/index.css +1 -1
- package/dist/components/Badge/index.cjs +10 -7
- package/dist/components/Badge/index.css +13 -13
- package/dist/components/Badge/index.d.cts +3 -19
- package/dist/components/Badge/index.d.ts +3 -19
- package/dist/components/Badge/index.js +8 -6
- package/dist/components/ChatInput/index.css +2 -2
- package/dist/components/DatePicker/index.css +1 -1
- package/dist/components/Input/index.css +1 -1
- package/dist/components/NotificationBadge/index.cjs +68 -0
- package/dist/components/NotificationBadge/index.css +75 -0
- package/dist/components/NotificationBadge/index.d.cts +47 -0
- package/dist/components/NotificationBadge/index.d.ts +47 -0
- package/dist/components/NotificationBadge/index.js +40 -0
- package/dist/components/Select/index.css +4 -2
- package/dist/components/Table/index.cjs +2 -0
- package/dist/components/Table/index.d.cts +2 -0
- package/dist/components/Table/index.d.ts +2 -0
- package/dist/components/Table/index.js +2 -0
- package/dist/components/TextArea/index.css +1 -1
- package/dist/components/index.cjs +268 -264
- package/dist/components/index.css +84 -82
- package/dist/components/index.d.cts +1 -1
- package/dist/components/index.d.ts +1 -1
- package/dist/components/index.js +267 -264
- package/dist/index.cjs +268 -264
- package/dist/index.css +84 -82
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +267 -264
- package/guidelines/AGENT_PROMPT.md +1 -1
- package/guidelines/Guidelines.md +1 -1
- package/guidelines/components/feedback.md +39 -11
- package/guidelines/components/table.md +68 -5
- 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: () =>
|
|
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
|
|
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,
|
|
1713
|
-
title && /* @__PURE__ */ (0,
|
|
1714
|
-
/* @__PURE__ */ (0,
|
|
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
|
|
1701
|
+
var import_jsx_runtime300 = require("react/jsx-runtime");
|
|
1722
1702
|
var Breadcrumb = (props) => {
|
|
1723
1703
|
const { items, separator = "/" } = props;
|
|
1724
|
-
return /* @__PURE__ */ (0,
|
|
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,
|
|
1727
|
-
isLast ? /* @__PURE__ */ (0,
|
|
1728
|
-
!isLast && /* @__PURE__ */ (0,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
1908
|
-
dayEvents.length > 0 && /* @__PURE__ */ (0,
|
|
1909
|
-
dayEvents.slice(0, 3).map((event, ei) => /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
2050
|
-
/* @__PURE__ */ (0,
|
|
2051
|
-
/* @__PURE__ */ (0,
|
|
2052
|
-
/* @__PURE__ */ (0,
|
|
2053
|
-
showToday && /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
2079
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
2163
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
2328
|
-
/* @__PURE__ */ (0,
|
|
2329
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
2439
|
-
/* @__PURE__ */ (0,
|
|
2440
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
2450
|
-
/* @__PURE__ */ (0,
|
|
2451
|
-
/* @__PURE__ */ (0,
|
|
2452
|
-
/* @__PURE__ */ (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,
|
|
2455
|
-
/* @__PURE__ */ (0,
|
|
2456
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
2549
|
-
/* @__PURE__ */ (0,
|
|
2550
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
2560
|
-
/* @__PURE__ */ (0,
|
|
2561
|
-
/* @__PURE__ */ (0,
|
|
2562
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
2565
|
-
/* @__PURE__ */ (0,
|
|
2566
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
2634
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
2727
|
-
animate && /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
2783
|
-
desc && /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
2799
|
-
/* @__PURE__ */ (0,
|
|
2800
|
-
/* @__PURE__ */ (0,
|
|
2801
|
-
/* @__PURE__ */ (0,
|
|
2802
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
2818
|
-
/* @__PURE__ */ (0,
|
|
2819
|
-
/* @__PURE__ */ (0,
|
|
2820
|
-
/* @__PURE__ */ (0,
|
|
2821
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
2836
|
-
ready && type === "line" && /* @__PURE__ */ (0,
|
|
2837
|
-
ready && type === "curve" && /* @__PURE__ */ (0,
|
|
2838
|
-
ready && type === "bar" && /* @__PURE__ */ (0,
|
|
2839
|
-
ready && type === "pie" && /* @__PURE__ */ (0,
|
|
2840
|
-
ready && type === "doughnut" && /* @__PURE__ */ (0,
|
|
2841
|
-
ready && (type === "pie" || type === "doughnut") && /* @__PURE__ */ (0,
|
|
2842
|
-
tooltip.visible && tooltip.content && /* @__PURE__ */ (0,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
2907
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
2901
|
+
/* @__PURE__ */ (0, import_jsx_runtime307.jsx)(
|
|
2922
2902
|
IconButton_default,
|
|
2923
2903
|
{
|
|
2924
|
-
icon: /* @__PURE__ */ (0,
|
|
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
|
|
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,
|
|
2965
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
2976
|
-
label && /* @__PURE__ */ (0,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
3006
|
-
/* @__PURE__ */ (0,
|
|
3007
|
-
status === "default" && /* @__PURE__ */ (0,
|
|
3008
|
-
status === "success" && /* @__PURE__ */ (0,
|
|
3009
|
-
status === "warning" && /* @__PURE__ */ (0,
|
|
3010
|
-
status === "error" && /* @__PURE__ */ (0,
|
|
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,
|
|
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
|
|
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,
|
|
3130
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
3126
|
+
suffix && /* @__PURE__ */ (0, import_jsx_runtime311.jsx)("div", { className: "suffix", children: suffix })
|
|
3147
3127
|
]
|
|
3148
3128
|
}
|
|
3149
3129
|
),
|
|
3150
|
-
validations && /* @__PURE__ */ (0,
|
|
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
|
|
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,
|
|
3152
|
+
return /* @__PURE__ */ (0, import_jsx_runtime312.jsx)(
|
|
3173
3153
|
Input_default,
|
|
3174
3154
|
{
|
|
3175
3155
|
...inputProps,
|
|
3176
|
-
suffix: /* @__PURE__ */ (0,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
3368
|
-
/* @__PURE__ */ (0,
|
|
3369
|
-
/* @__PURE__ */ (0,
|
|
3370
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
3373
|
-
pickerMode === "years" && /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
3397
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
3472
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
3457
|
+
suffix: /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(CalenderIcon_default, {}),
|
|
3478
3458
|
disabled,
|
|
3479
3459
|
readOnly: true
|
|
3480
3460
|
}
|
|
3481
3461
|
) }),
|
|
3482
|
-
/* @__PURE__ */ (0,
|
|
3483
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
3494
|
-
/* @__PURE__ */ (0,
|
|
3495
|
-
/* @__PURE__ */ (0,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
3549
|
-
tabs.map((tab, idx) => /* @__PURE__ */ (0,
|
|
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,
|
|
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
|
|
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,
|
|
3601
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
3615
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
3683
|
-
/* @__PURE__ */ (0,
|
|
3684
|
-
type === "single" && /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
3707
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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
|
|
3704
|
+
var import_jsx_runtime321 = require("react/jsx-runtime");
|
|
3725
3705
|
var Divider = (props) => {
|
|
3726
3706
|
const { orientation = "horizontal" } = props;
|
|
3727
|
-
return /* @__PURE__ */ (0,
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
3776
|
-
/* @__PURE__ */ (0,
|
|
3777
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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
|
|
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,
|
|
3907
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
4467
|
-
!readOnly && /* @__PURE__ */ (0,
|
|
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,
|
|
4476
|
-
isEmpty && !isFocused && /* @__PURE__ */ (0,
|
|
4477
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
4599
|
-
item.hint && /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
4656
|
-
icon && /* @__PURE__ */ (0,
|
|
4657
|
-
!icon && /* @__PURE__ */ (0,
|
|
4658
|
-
/* @__PURE__ */ (0,
|
|
4659
|
-
description && /* @__PURE__ */ (0,
|
|
4660
|
-
action && /* @__PURE__ */ (0,
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
4729
|
-
/* @__PURE__ */ (0,
|
|
4730
|
-
description && /* @__PURE__ */ (0,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
4901
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
4912
|
-
/* @__PURE__ */ (0,
|
|
4913
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
4916
|
-
/* @__PURE__ */ (0,
|
|
4917
|
-
/* @__PURE__ */ (0,
|
|
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,
|