@x-plat/design-system 0.5.66 → 0.6.1
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/Accordion/index.css +6 -6
- package/dist/components/AutoResizeTextArea/index.css +5 -5
- package/dist/components/Avatar/index.css +2 -2
- package/dist/components/Badge/index.css +1 -1
- package/dist/components/Box/index.css +5 -5
- package/dist/components/Breadcrumb/index.css +4 -4
- package/dist/components/Button/index.cjs +1 -2
- package/dist/components/Button/index.css +6 -6
- package/dist/components/Button/index.d.cts +1 -1
- package/dist/components/Button/index.d.ts +1 -1
- package/dist/components/Button/index.js +1 -2
- package/dist/components/Calendar/index.cjs +1 -1
- package/dist/components/Calendar/index.css +18 -18
- package/dist/components/Calendar/index.js +1 -1
- package/dist/components/CardTab/index.css +8 -8
- package/dist/components/Chart/index.css +11 -11
- package/dist/components/ChatInput/index.cjs +1 -2
- package/dist/components/ChatInput/index.css +16 -16
- package/dist/components/ChatInput/index.js +1 -2
- package/dist/components/CheckBox/index.css +2 -2
- package/dist/components/CheckBox/index.js +1 -1
- package/dist/components/Chip/index.css +5 -5
- package/dist/components/DatePicker/index.cjs +1 -2
- package/dist/components/DatePicker/index.css +36 -36
- package/dist/components/DatePicker/index.js +1 -2
- package/dist/components/Divider/index.css +2 -2
- package/dist/components/Drawer/index.css +5 -5
- package/dist/components/Dropdown/index.css +4 -4
- package/dist/components/Editor/index.css +36 -36
- package/dist/components/EmptyState/index.css +2 -2
- package/dist/components/FileUpload/index.css +4 -4
- package/dist/components/HtmlTypeWriter/index.css +1 -1
- package/dist/components/IconButton/index.cjs +1 -2
- package/dist/components/IconButton/index.css +5 -5
- package/dist/components/IconButton/index.d.cts +1 -1
- package/dist/components/IconButton/index.d.ts +1 -1
- package/dist/components/IconButton/index.js +1 -2
- package/dist/components/ImageSelector/index.css +7 -7
- package/dist/components/Input/index.css +7 -7
- package/dist/components/Modal/index.css +1 -1
- package/dist/components/Pagination/index.css +3 -3
- package/dist/components/PopOver/index.css +1 -1
- package/dist/components/Progress/index.css +1 -1
- package/dist/components/Radio/index.css +5 -5
- package/dist/components/Select/index.css +9 -9
- package/dist/components/Skeleton/index.cjs +6 -6
- package/dist/components/Skeleton/index.js +6 -6
- package/dist/components/Spinner/index.css +1 -1
- package/dist/components/Steps/index.css +3 -3
- package/dist/components/Swiper/index.css +3 -3
- package/dist/components/Switch/index.css +3 -3
- package/dist/components/Tab/index.css +4 -4
- package/dist/components/Table/index.css +10 -10
- package/dist/components/Tag/index.css +3 -3
- package/dist/components/TextArea/index.css +5 -5
- package/dist/components/Tooltip/index.css +4 -4
- package/dist/components/Video/index.css +2 -2
- package/dist/components/index.cjs +249 -251
- package/dist/components/index.css +667 -1059
- package/dist/components/index.d.cts +2 -2
- package/dist/components/index.d.ts +2 -2
- package/dist/components/index.js +224 -226
- package/dist/index.cjs +249 -253
- package/dist/index.css +670 -1062
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +224 -227
- package/dist/layout/Header/index.css +2 -2
- package/dist/layout/Layout/index.css +1 -1
- package/dist/layout/index.css +404 -796
- package/dist/tokens/index.cjs +0 -2
- package/dist/tokens/index.d.cts +9 -10
- package/dist/tokens/index.d.ts +9 -10
- package/dist/tokens/index.js +1 -2
- package/guidelines/AGENT_PROMPT.md +8 -9
- package/guidelines/Guidelines.md +1 -1
- package/guidelines/components/chart.md +1 -1
- package/guidelines/foundations/color.md +22 -23
- package/guidelines/foundations/typography.md +86 -36
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -5593,8 +5593,69 @@ var Alert = (props) => {
|
|
|
5593
5593
|
Alert.displayName = "Alert";
|
|
5594
5594
|
var Alert_default = Alert;
|
|
5595
5595
|
|
|
5596
|
-
// src/components/
|
|
5596
|
+
// src/components/AutoResizeTextArea/AutoResizeTextArea.tsx
|
|
5597
|
+
import React2 from "react";
|
|
5597
5598
|
import { jsx as jsx297 } from "react/jsx-runtime";
|
|
5599
|
+
var MAX_HEIGHT = 400;
|
|
5600
|
+
var AutoResizeTextArea = React2.forwardRef(
|
|
5601
|
+
(props, ref) => {
|
|
5602
|
+
const { value, className, onChange, disabled, bare = false, ...textareaProps } = props;
|
|
5603
|
+
const localRef = React2.useRef(null);
|
|
5604
|
+
const setRefs = (el) => {
|
|
5605
|
+
localRef.current = el;
|
|
5606
|
+
if (!ref) return;
|
|
5607
|
+
if (typeof ref === "function") ref(el);
|
|
5608
|
+
else if (ref && "current" in ref)
|
|
5609
|
+
ref.current = el;
|
|
5610
|
+
};
|
|
5611
|
+
const updateHeight = () => {
|
|
5612
|
+
const el = localRef.current;
|
|
5613
|
+
if (!el) return;
|
|
5614
|
+
el.style.height = "0px";
|
|
5615
|
+
el.style.height = `${Math.min(el.scrollHeight, MAX_HEIGHT)}px`;
|
|
5616
|
+
};
|
|
5617
|
+
const handleChange = (e) => {
|
|
5618
|
+
if (onChange) {
|
|
5619
|
+
const event = {
|
|
5620
|
+
...e,
|
|
5621
|
+
target: { value: e.target.value }
|
|
5622
|
+
};
|
|
5623
|
+
onChange(event);
|
|
5624
|
+
}
|
|
5625
|
+
};
|
|
5626
|
+
React2.useEffect(() => {
|
|
5627
|
+
updateHeight();
|
|
5628
|
+
}, [value]);
|
|
5629
|
+
if (bare) {
|
|
5630
|
+
return /* @__PURE__ */ jsx297(
|
|
5631
|
+
"textarea",
|
|
5632
|
+
{
|
|
5633
|
+
...textareaProps,
|
|
5634
|
+
ref: setRefs,
|
|
5635
|
+
className,
|
|
5636
|
+
disabled,
|
|
5637
|
+
value,
|
|
5638
|
+
onChange: handleChange
|
|
5639
|
+
}
|
|
5640
|
+
);
|
|
5641
|
+
}
|
|
5642
|
+
return /* @__PURE__ */ jsx297("div", { className: clsx_default("lib-xplat-auto-resize-textarea-wrapper", className), children: /* @__PURE__ */ jsx297("div", { className: clsx_default("lib-xplat-auto-resize-textarea", disabled && "disabled"), children: /* @__PURE__ */ jsx297(
|
|
5643
|
+
"textarea",
|
|
5644
|
+
{
|
|
5645
|
+
...textareaProps,
|
|
5646
|
+
ref: setRefs,
|
|
5647
|
+
disabled,
|
|
5648
|
+
value,
|
|
5649
|
+
onChange: handleChange
|
|
5650
|
+
}
|
|
5651
|
+
) }) });
|
|
5652
|
+
}
|
|
5653
|
+
);
|
|
5654
|
+
AutoResizeTextArea.displayName = "AutoResizeTextArea";
|
|
5655
|
+
var AutoResizeTextArea_default = AutoResizeTextArea;
|
|
5656
|
+
|
|
5657
|
+
// src/components/Avatar/Avatar.tsx
|
|
5658
|
+
import { jsx as jsx298 } from "react/jsx-runtime";
|
|
5598
5659
|
var CATEGORICAL_COUNT = 8;
|
|
5599
5660
|
var getColorIndex = (name) => {
|
|
5600
5661
|
if (!name) return 1;
|
|
@@ -5611,13 +5672,13 @@ var Avatar = (props) => {
|
|
|
5611
5672
|
const fullInitials = name ? name.split(" ").map((s) => s[0]).join("").slice(0, 2).toUpperCase() : "";
|
|
5612
5673
|
const initials = size === "sm" ? fullInitials.slice(0, 1) : fullInitials;
|
|
5613
5674
|
const catIndex = getColorIndex(name || "");
|
|
5614
|
-
return /* @__PURE__ */
|
|
5675
|
+
return /* @__PURE__ */ jsx298("div", { className: clsx_default("lib-xplat-avatar", size), children: src ? /* @__PURE__ */ jsx298("img", { src, alt: alt || name || "avatar" }) : /* @__PURE__ */ jsx298("div", { className: clsx_default("fallback", `cat-${catIndex}`), children: initials || /* @__PURE__ */ jsx298("svg", { viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsx298("path", { d: "M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z" }) }) }) });
|
|
5615
5676
|
};
|
|
5616
5677
|
Avatar.displayName = "Avatar";
|
|
5617
5678
|
var Avatar_default = Avatar;
|
|
5618
5679
|
|
|
5619
5680
|
// src/components/Badge/Badge.tsx
|
|
5620
|
-
import { jsx as
|
|
5681
|
+
import { jsx as jsx299, jsxs as jsxs191 } from "react/jsx-runtime";
|
|
5621
5682
|
var Badge = (props) => {
|
|
5622
5683
|
const {
|
|
5623
5684
|
children,
|
|
@@ -5631,14 +5692,14 @@ var Badge = (props) => {
|
|
|
5631
5692
|
const displayCount = count !== void 0 && count > maxCount ? `${maxCount}+` : count;
|
|
5632
5693
|
return /* @__PURE__ */ jsxs191("div", { className: clsx_default("lib-xplat-badge", size), children: [
|
|
5633
5694
|
children,
|
|
5634
|
-
showBadge && /* @__PURE__ */
|
|
5695
|
+
showBadge && /* @__PURE__ */ jsx299("span", { className: clsx_default("badge-indicator", type, { dot }), children: !dot && displayCount })
|
|
5635
5696
|
] });
|
|
5636
5697
|
};
|
|
5637
5698
|
Badge.displayName = "Badge";
|
|
5638
5699
|
var Badge_default = Badge;
|
|
5639
5700
|
|
|
5640
5701
|
// src/components/Box/Box.tsx
|
|
5641
|
-
import { jsx as
|
|
5702
|
+
import { jsx as jsx300, jsxs as jsxs192 } from "react/jsx-runtime";
|
|
5642
5703
|
var Box = ({
|
|
5643
5704
|
children,
|
|
5644
5705
|
title,
|
|
@@ -5646,22 +5707,22 @@ var Box = ({
|
|
|
5646
5707
|
padding = "md"
|
|
5647
5708
|
}) => {
|
|
5648
5709
|
return /* @__PURE__ */ jsxs192("div", { className: clsx_default("lib-xplat-box", variant, `pad-${padding}`), children: [
|
|
5649
|
-
title && /* @__PURE__ */
|
|
5650
|
-
/* @__PURE__ */
|
|
5710
|
+
title && /* @__PURE__ */ jsx300("div", { className: "box-title", children: title }),
|
|
5711
|
+
/* @__PURE__ */ jsx300("div", { className: "box-content", children })
|
|
5651
5712
|
] });
|
|
5652
5713
|
};
|
|
5653
5714
|
Box.displayName = "Box";
|
|
5654
5715
|
var Box_default = Box;
|
|
5655
5716
|
|
|
5656
5717
|
// src/components/Breadcrumb/Breadcrumb.tsx
|
|
5657
|
-
import { jsx as
|
|
5718
|
+
import { jsx as jsx301, jsxs as jsxs193 } from "react/jsx-runtime";
|
|
5658
5719
|
var Breadcrumb = (props) => {
|
|
5659
5720
|
const { items, separator = "/" } = props;
|
|
5660
|
-
return /* @__PURE__ */
|
|
5721
|
+
return /* @__PURE__ */ jsx301("nav", { className: "lib-xplat-breadcrumb", "aria-label": "\uACBD\uB85C", children: /* @__PURE__ */ jsx301("ol", { children: items.map((item, index) => {
|
|
5661
5722
|
const isLast = index === items.length - 1;
|
|
5662
5723
|
return /* @__PURE__ */ jsxs193("li", { children: [
|
|
5663
|
-
isLast ? /* @__PURE__ */
|
|
5664
|
-
!isLast && /* @__PURE__ */
|
|
5724
|
+
isLast ? /* @__PURE__ */ jsx301("span", { className: "current", "aria-current": "page", children: item.label }) : item.href ? /* @__PURE__ */ jsx301("a", { href: item.href, className: "link", children: item.label }) : /* @__PURE__ */ jsx301("button", { className: "link", onClick: item.onClick, children: item.label }),
|
|
5725
|
+
!isLast && /* @__PURE__ */ jsx301("span", { className: "separator", children: separator })
|
|
5665
5726
|
] }, index);
|
|
5666
5727
|
}) }) });
|
|
5667
5728
|
};
|
|
@@ -5669,20 +5730,19 @@ Breadcrumb.displayName = "Breadcrumb";
|
|
|
5669
5730
|
var Breadcrumb_default = Breadcrumb;
|
|
5670
5731
|
|
|
5671
5732
|
// src/components/Button/Button.tsx
|
|
5672
|
-
import { jsx as
|
|
5733
|
+
import { jsx as jsx302 } from "react/jsx-runtime";
|
|
5673
5734
|
var Button = (props) => {
|
|
5674
5735
|
const {
|
|
5675
5736
|
children,
|
|
5676
|
-
className,
|
|
5677
5737
|
type = "primary",
|
|
5678
5738
|
size = "md",
|
|
5679
5739
|
disabled,
|
|
5680
5740
|
...rest
|
|
5681
5741
|
} = props;
|
|
5682
|
-
return /* @__PURE__ */
|
|
5742
|
+
return /* @__PURE__ */ jsx302(
|
|
5683
5743
|
"button",
|
|
5684
5744
|
{
|
|
5685
|
-
className: clsx_default("lib-xplat-button", type, size
|
|
5745
|
+
className: clsx_default("lib-xplat-button", type, size),
|
|
5686
5746
|
disabled,
|
|
5687
5747
|
...rest,
|
|
5688
5748
|
children
|
|
@@ -5693,15 +5753,15 @@ Button.displayName = "Button";
|
|
|
5693
5753
|
var Button_default = Button;
|
|
5694
5754
|
|
|
5695
5755
|
// src/components/Calendar/Calendar.tsx
|
|
5696
|
-
import
|
|
5756
|
+
import React4 from "react";
|
|
5697
5757
|
|
|
5698
5758
|
// src/components/Calendar/useCalendar.ts
|
|
5699
|
-
import
|
|
5759
|
+
import React3 from "react";
|
|
5700
5760
|
var useCalendar = (initialYear, initialMonth) => {
|
|
5701
5761
|
const today = /* @__PURE__ */ new Date();
|
|
5702
|
-
const [year, setYear] =
|
|
5703
|
-
const [month, setMonth] =
|
|
5704
|
-
const days =
|
|
5762
|
+
const [year, setYear] = React3.useState(initialYear ?? today.getFullYear());
|
|
5763
|
+
const [month, setMonth] = React3.useState(initialMonth ?? today.getMonth());
|
|
5764
|
+
const days = React3.useMemo(() => {
|
|
5705
5765
|
const firstDay = new Date(year, month, 1);
|
|
5706
5766
|
const lastDay = new Date(year, month + 1, 0);
|
|
5707
5767
|
const startDayOfWeek = firstDay.getDay();
|
|
@@ -5744,7 +5804,7 @@ var useCalendar = (initialYear, initialMonth) => {
|
|
|
5744
5804
|
}
|
|
5745
5805
|
return result;
|
|
5746
5806
|
}, [year, month]);
|
|
5747
|
-
const goToPrevMonth =
|
|
5807
|
+
const goToPrevMonth = React3.useCallback(() => {
|
|
5748
5808
|
setMonth((prev) => {
|
|
5749
5809
|
if (prev === 0) {
|
|
5750
5810
|
setYear((y) => y - 1);
|
|
@@ -5753,7 +5813,7 @@ var useCalendar = (initialYear, initialMonth) => {
|
|
|
5753
5813
|
return prev - 1;
|
|
5754
5814
|
});
|
|
5755
5815
|
}, []);
|
|
5756
|
-
const goToNextMonth =
|
|
5816
|
+
const goToNextMonth = React3.useCallback(() => {
|
|
5757
5817
|
setMonth((prev) => {
|
|
5758
5818
|
if (prev === 11) {
|
|
5759
5819
|
setYear((y) => y + 1);
|
|
@@ -5762,7 +5822,7 @@ var useCalendar = (initialYear, initialMonth) => {
|
|
|
5762
5822
|
return prev + 1;
|
|
5763
5823
|
});
|
|
5764
5824
|
}, []);
|
|
5765
|
-
const goToToday =
|
|
5825
|
+
const goToToday = React3.useCallback(() => {
|
|
5766
5826
|
setYear(today.getFullYear());
|
|
5767
5827
|
setMonth(today.getMonth());
|
|
5768
5828
|
}, []);
|
|
@@ -5796,8 +5856,8 @@ var MONTH_LABELS = {
|
|
|
5796
5856
|
};
|
|
5797
5857
|
|
|
5798
5858
|
// src/components/Calendar/Calendar.tsx
|
|
5799
|
-
import { Fragment, jsx as
|
|
5800
|
-
var DayCell =
|
|
5859
|
+
import { Fragment, jsx as jsx303, jsxs as jsxs194 } from "react/jsx-runtime";
|
|
5860
|
+
var DayCell = React4.memo(
|
|
5801
5861
|
({
|
|
5802
5862
|
day,
|
|
5803
5863
|
disabled,
|
|
@@ -5808,7 +5868,7 @@ var DayCell = React3.memo(
|
|
|
5808
5868
|
onEventClick
|
|
5809
5869
|
}) => {
|
|
5810
5870
|
if (renderDay) {
|
|
5811
|
-
return /* @__PURE__ */
|
|
5871
|
+
return /* @__PURE__ */ jsx303(
|
|
5812
5872
|
"div",
|
|
5813
5873
|
{
|
|
5814
5874
|
className: clsx_default(
|
|
@@ -5841,13 +5901,13 @@ var DayCell = React3.memo(
|
|
|
5841
5901
|
if (!disabled && day.isCurrentMonth) onSelect?.(day.date);
|
|
5842
5902
|
},
|
|
5843
5903
|
children: [
|
|
5844
|
-
/* @__PURE__ */
|
|
5904
|
+
/* @__PURE__ */ jsx303("span", { className: "calendar-day-number", children: day.day }),
|
|
5845
5905
|
dayEvents.length > 0 && /* @__PURE__ */ jsxs194("div", { className: "calendar-day-events", children: [
|
|
5846
|
-
dayEvents.slice(0, 3).map((event, ei) => /* @__PURE__ */
|
|
5906
|
+
dayEvents.slice(0, 3).map((event, ei) => /* @__PURE__ */ jsx303(
|
|
5847
5907
|
"span",
|
|
5848
5908
|
{
|
|
5849
5909
|
className: "calendar-event-dot",
|
|
5850
|
-
style: { backgroundColor: event.color ?? "var(--
|
|
5910
|
+
style: { backgroundColor: event.color ?? "var(--semantic-surface-brand-default)" },
|
|
5851
5911
|
title: event.label,
|
|
5852
5912
|
onClick: (e) => {
|
|
5853
5913
|
e.stopPropagation();
|
|
@@ -5893,14 +5953,14 @@ var Calendar = (props) => {
|
|
|
5893
5953
|
setYear,
|
|
5894
5954
|
setMonth
|
|
5895
5955
|
} = useCalendar(yearProp, monthProp);
|
|
5896
|
-
const [pickerMode, setPickerMode] =
|
|
5897
|
-
const [yearRangeStart, setYearRangeStart] =
|
|
5956
|
+
const [pickerMode, setPickerMode] = React4.useState("days");
|
|
5957
|
+
const [yearRangeStart, setYearRangeStart] = React4.useState(
|
|
5898
5958
|
Math.floor(year / 12) * 12
|
|
5899
5959
|
);
|
|
5900
|
-
|
|
5960
|
+
React4.useEffect(() => {
|
|
5901
5961
|
if (yearProp !== void 0) setYear(yearProp);
|
|
5902
5962
|
}, [yearProp, setYear]);
|
|
5903
|
-
|
|
5963
|
+
React4.useEffect(() => {
|
|
5904
5964
|
if (monthProp !== void 0) setMonth(monthProp);
|
|
5905
5965
|
}, [monthProp, setMonth]);
|
|
5906
5966
|
const handlePrev = () => {
|
|
@@ -5952,15 +6012,15 @@ var Calendar = (props) => {
|
|
|
5952
6012
|
setPickerMode("months");
|
|
5953
6013
|
onMonthChange?.(y, month);
|
|
5954
6014
|
};
|
|
5955
|
-
const minTime =
|
|
6015
|
+
const minTime = React4.useMemo(
|
|
5956
6016
|
() => minDate ? new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate()).getTime() : -Infinity,
|
|
5957
6017
|
[minDate]
|
|
5958
6018
|
);
|
|
5959
|
-
const maxTime =
|
|
6019
|
+
const maxTime = React4.useMemo(
|
|
5960
6020
|
() => maxDate ? new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate()).getTime() : Infinity,
|
|
5961
6021
|
[maxDate]
|
|
5962
6022
|
);
|
|
5963
|
-
const eventsMap =
|
|
6023
|
+
const eventsMap = React4.useMemo(() => {
|
|
5964
6024
|
const map = /* @__PURE__ */ new Map();
|
|
5965
6025
|
for (const e of events) {
|
|
5966
6026
|
const key = `${e.date.getFullYear()}-${e.date.getMonth()}-${e.date.getDate()}`;
|
|
@@ -5970,7 +6030,7 @@ var Calendar = (props) => {
|
|
|
5970
6030
|
}
|
|
5971
6031
|
return map;
|
|
5972
6032
|
}, [events]);
|
|
5973
|
-
const getEventsForDay =
|
|
6033
|
+
const getEventsForDay = React4.useCallback(
|
|
5974
6034
|
(date) => eventsMap.get(`${date.getFullYear()}-${date.getMonth()}-${date.getDate()}`) ?? [],
|
|
5975
6035
|
[eventsMap]
|
|
5976
6036
|
);
|
|
@@ -5984,14 +6044,14 @@ var Calendar = (props) => {
|
|
|
5984
6044
|
style: selectedColor ? { "--calendar-selected-color": `var(--${selectedColor})` } : void 0,
|
|
5985
6045
|
children: [
|
|
5986
6046
|
/* @__PURE__ */ jsxs194("div", { className: "calendar-header", children: [
|
|
5987
|
-
/* @__PURE__ */
|
|
5988
|
-
/* @__PURE__ */
|
|
5989
|
-
/* @__PURE__ */
|
|
5990
|
-
showToday && /* @__PURE__ */
|
|
6047
|
+
/* @__PURE__ */ jsx303("button", { className: "calendar-nav", onClick: handlePrev, "aria-label": "\uC774\uC804", children: /* @__PURE__ */ jsx303(ChevronLeftIcon_default, {}) }),
|
|
6048
|
+
/* @__PURE__ */ jsx303("button", { className: "calendar-title", onClick: handleTitleClick, type: "button", children: titleText }),
|
|
6049
|
+
/* @__PURE__ */ jsx303("button", { className: "calendar-nav", onClick: handleNext, "aria-label": "\uB2E4\uC74C", children: /* @__PURE__ */ jsx303(ChevronRightIcon_default, {}) }),
|
|
6050
|
+
showToday && /* @__PURE__ */ jsx303("button", { className: "calendar-today-btn", onClick: handleToday, children: locale === "ko" ? "\uC624\uB298" : "Today" })
|
|
5991
6051
|
] }),
|
|
5992
|
-
pickerMode === "years" && /* @__PURE__ */
|
|
6052
|
+
pickerMode === "years" && /* @__PURE__ */ jsx303("div", { className: "calendar-picker-grid", children: Array.from({ length: 12 }, (_, i) => {
|
|
5993
6053
|
const y = yearRangeStart + i;
|
|
5994
|
-
return /* @__PURE__ */
|
|
6054
|
+
return /* @__PURE__ */ jsx303(
|
|
5995
6055
|
"button",
|
|
5996
6056
|
{
|
|
5997
6057
|
type: "button",
|
|
@@ -6002,7 +6062,7 @@ var Calendar = (props) => {
|
|
|
6002
6062
|
y
|
|
6003
6063
|
);
|
|
6004
6064
|
}) }),
|
|
6005
|
-
pickerMode === "months" && /* @__PURE__ */
|
|
6065
|
+
pickerMode === "months" && /* @__PURE__ */ jsx303("div", { className: "calendar-picker-grid", children: monthLabels.map((label, i) => /* @__PURE__ */ jsx303(
|
|
6006
6066
|
"button",
|
|
6007
6067
|
{
|
|
6008
6068
|
type: "button",
|
|
@@ -6013,7 +6073,7 @@ var Calendar = (props) => {
|
|
|
6013
6073
|
i
|
|
6014
6074
|
)) }),
|
|
6015
6075
|
pickerMode === "days" && /* @__PURE__ */ jsxs194(Fragment, { children: [
|
|
6016
|
-
/* @__PURE__ */
|
|
6076
|
+
/* @__PURE__ */ jsx303("div", { className: "calendar-weekdays", children: weekdays.map((label, i) => /* @__PURE__ */ jsx303(
|
|
6017
6077
|
"div",
|
|
6018
6078
|
{
|
|
6019
6079
|
className: clsx_default(
|
|
@@ -6025,12 +6085,12 @@ var Calendar = (props) => {
|
|
|
6025
6085
|
},
|
|
6026
6086
|
label
|
|
6027
6087
|
)) }),
|
|
6028
|
-
/* @__PURE__ */
|
|
6088
|
+
/* @__PURE__ */ jsx303("div", { className: "calendar-grid", children: days.map((day, idx) => {
|
|
6029
6089
|
const dayEvents = getEventsForDay(day.date);
|
|
6030
6090
|
const t = day.date.getTime();
|
|
6031
6091
|
const disabled = t < minTime || t > maxTime;
|
|
6032
6092
|
const isSelected = selectedDate ? isSameDay(day.date, selectedDate) : false;
|
|
6033
|
-
return /* @__PURE__ */
|
|
6093
|
+
return /* @__PURE__ */ jsx303(
|
|
6034
6094
|
DayCell,
|
|
6035
6095
|
{
|
|
6036
6096
|
day,
|
|
@@ -6053,13 +6113,13 @@ Calendar.displayName = "Calendar";
|
|
|
6053
6113
|
var Calendar_default = Calendar;
|
|
6054
6114
|
|
|
6055
6115
|
// src/components/CardTab/CardTab.tsx
|
|
6056
|
-
import
|
|
6116
|
+
import React5 from "react";
|
|
6057
6117
|
|
|
6058
6118
|
// src/components/CardTab/CardTabPanel.tsx
|
|
6059
|
-
import { jsx as
|
|
6119
|
+
import { jsx as jsx304 } from "react/jsx-runtime";
|
|
6060
6120
|
var CardTabPanel = (props) => {
|
|
6061
6121
|
const { children, columns = 3 } = props;
|
|
6062
|
-
return /* @__PURE__ */
|
|
6122
|
+
return /* @__PURE__ */ jsx304(
|
|
6063
6123
|
"div",
|
|
6064
6124
|
{
|
|
6065
6125
|
className: "card-tab-panel",
|
|
@@ -6072,7 +6132,7 @@ CardTabPanel.displayName = "CardTab.Panel";
|
|
|
6072
6132
|
var CardTabPanel_default = CardTabPanel;
|
|
6073
6133
|
|
|
6074
6134
|
// src/components/CardTab/CardTab.tsx
|
|
6075
|
-
import { jsx as
|
|
6135
|
+
import { jsx as jsx305, jsxs as jsxs195 } from "react/jsx-runtime";
|
|
6076
6136
|
var CardTabRoot = (props) => {
|
|
6077
6137
|
const {
|
|
6078
6138
|
tabs,
|
|
@@ -6082,7 +6142,7 @@ var CardTabRoot = (props) => {
|
|
|
6082
6142
|
children
|
|
6083
6143
|
} = props;
|
|
6084
6144
|
const isControlled = activeValueProp !== void 0;
|
|
6085
|
-
const [uncontrolledValue, setUncontrolledValue] =
|
|
6145
|
+
const [uncontrolledValue, setUncontrolledValue] = React5.useState(tabs[0]?.value ?? "");
|
|
6086
6146
|
const activeValue = isControlled ? activeValueProp : uncontrolledValue;
|
|
6087
6147
|
const handleTabClick = (tab) => {
|
|
6088
6148
|
if (!isControlled) {
|
|
@@ -6090,16 +6150,16 @@ var CardTabRoot = (props) => {
|
|
|
6090
6150
|
}
|
|
6091
6151
|
onChange?.(tab);
|
|
6092
6152
|
};
|
|
6093
|
-
const panels =
|
|
6094
|
-
(child) =>
|
|
6153
|
+
const panels = React5.Children.toArray(children).filter(
|
|
6154
|
+
(child) => React5.isValidElement(child) && child.type === CardTabPanel_default
|
|
6095
6155
|
);
|
|
6096
6156
|
const activePanel = panels.find(
|
|
6097
6157
|
(panel) => panel.props.value === activeValue
|
|
6098
6158
|
);
|
|
6099
6159
|
return /* @__PURE__ */ jsxs195("div", { className: clsx_default("lib-xplat-card-tab", size), children: [
|
|
6100
|
-
/* @__PURE__ */
|
|
6160
|
+
/* @__PURE__ */ jsx305("div", { className: "card-tab-bar", children: tabs.map((tab) => {
|
|
6101
6161
|
const isActive2 = tab.value === activeValue;
|
|
6102
|
-
return /* @__PURE__ */
|
|
6162
|
+
return /* @__PURE__ */ jsx305(
|
|
6103
6163
|
"button",
|
|
6104
6164
|
{
|
|
6105
6165
|
className: clsx_default("card-tab-trigger", isActive2 && "active"),
|
|
@@ -6111,7 +6171,7 @@ var CardTabRoot = (props) => {
|
|
|
6111
6171
|
tab.value
|
|
6112
6172
|
);
|
|
6113
6173
|
}) }),
|
|
6114
|
-
/* @__PURE__ */
|
|
6174
|
+
/* @__PURE__ */ jsx305("div", { className: "card-tab-body", children: activePanel })
|
|
6115
6175
|
] });
|
|
6116
6176
|
};
|
|
6117
6177
|
CardTabRoot.displayName = "CardTab";
|
|
@@ -6121,8 +6181,8 @@ var CardTab = Object.assign(CardTabRoot, {
|
|
|
6121
6181
|
var CardTab_default = CardTab;
|
|
6122
6182
|
|
|
6123
6183
|
// src/components/Chart/Chart.tsx
|
|
6124
|
-
import
|
|
6125
|
-
import { Fragment as Fragment2, jsx as
|
|
6184
|
+
import React6 from "react";
|
|
6185
|
+
import { Fragment as Fragment2, jsx as jsx306, jsxs as jsxs196 } from "react/jsx-runtime";
|
|
6126
6186
|
var CATEGORICAL_COUNT2 = 8;
|
|
6127
6187
|
var LINE_BAR_PALETTES = Array.from({ length: CATEGORICAL_COUNT2 }, (_, i) => {
|
|
6128
6188
|
const n = i + 1;
|
|
@@ -6167,8 +6227,8 @@ var toSmoothPath = (points) => {
|
|
|
6167
6227
|
return d;
|
|
6168
6228
|
};
|
|
6169
6229
|
var useChartSize = (ref) => {
|
|
6170
|
-
const [size, setSize] =
|
|
6171
|
-
|
|
6230
|
+
const [size, setSize] = React6.useState({ width: 0, height: 0 });
|
|
6231
|
+
React6.useEffect(() => {
|
|
6172
6232
|
const el = ref.current;
|
|
6173
6233
|
if (!el) return;
|
|
6174
6234
|
let rafId = 0;
|
|
@@ -6194,10 +6254,10 @@ var useChartSize = (ref) => {
|
|
|
6194
6254
|
};
|
|
6195
6255
|
var prefersReducedMotion = () => typeof window !== "undefined" && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
|
|
6196
6256
|
var useChartAnimation = (containerRef, dataKey) => {
|
|
6197
|
-
const [animate, setAnimate] =
|
|
6198
|
-
const prevDataKey =
|
|
6199
|
-
const hasAnimated =
|
|
6200
|
-
|
|
6257
|
+
const [animate, setAnimate] = React6.useState(false);
|
|
6258
|
+
const prevDataKey = React6.useRef(dataKey);
|
|
6259
|
+
const hasAnimated = React6.useRef(false);
|
|
6260
|
+
React6.useEffect(() => {
|
|
6201
6261
|
if (prefersReducedMotion()) return;
|
|
6202
6262
|
const el = containerRef.current;
|
|
6203
6263
|
if (!el) return;
|
|
@@ -6213,7 +6273,7 @@ var useChartAnimation = (containerRef, dataKey) => {
|
|
|
6213
6273
|
observer.observe(el);
|
|
6214
6274
|
return () => observer.disconnect();
|
|
6215
6275
|
}, [containerRef]);
|
|
6216
|
-
|
|
6276
|
+
React6.useEffect(() => {
|
|
6217
6277
|
if (dataKey !== prevDataKey.current) {
|
|
6218
6278
|
prevDataKey.current = dataKey;
|
|
6219
6279
|
if (prefersReducedMotion()) return;
|
|
@@ -6227,15 +6287,15 @@ var useChartAnimation = (containerRef, dataKey) => {
|
|
|
6227
6287
|
};
|
|
6228
6288
|
var TOOLTIP_OFFSET = 12;
|
|
6229
6289
|
var useChartTooltip = (enabled) => {
|
|
6230
|
-
const [tooltip, setTooltip] =
|
|
6290
|
+
const [tooltip, setTooltip] = React6.useState({
|
|
6231
6291
|
visible: false,
|
|
6232
6292
|
x: 0,
|
|
6233
6293
|
y: 0,
|
|
6234
6294
|
content: ""
|
|
6235
6295
|
});
|
|
6236
|
-
const containerRef =
|
|
6237
|
-
const rafRef =
|
|
6238
|
-
const move =
|
|
6296
|
+
const containerRef = React6.useRef(null);
|
|
6297
|
+
const rafRef = React6.useRef(0);
|
|
6298
|
+
const move = React6.useCallback((e) => {
|
|
6239
6299
|
if (!enabled) return;
|
|
6240
6300
|
const cx = e.clientX;
|
|
6241
6301
|
const cy = e.clientY;
|
|
@@ -6246,24 +6306,24 @@ var useChartTooltip = (enabled) => {
|
|
|
6246
6306
|
setTooltip((prev) => ({ ...prev, x: cx - rect.left, y: cy - rect.top }));
|
|
6247
6307
|
});
|
|
6248
6308
|
}, [enabled]);
|
|
6249
|
-
const show =
|
|
6309
|
+
const show = React6.useCallback((e, content) => {
|
|
6250
6310
|
if (!enabled) return;
|
|
6251
6311
|
const rect = containerRef.current?.getBoundingClientRect();
|
|
6252
6312
|
if (!rect) return;
|
|
6253
6313
|
setTooltip({ visible: true, x: e.clientX - rect.left, y: e.clientY - rect.top, content });
|
|
6254
6314
|
}, [enabled]);
|
|
6255
|
-
const hide =
|
|
6315
|
+
const hide = React6.useCallback(() => {
|
|
6256
6316
|
cancelAnimationFrame(rafRef.current);
|
|
6257
6317
|
setTooltip((prev) => ({ ...prev, visible: false }));
|
|
6258
6318
|
}, []);
|
|
6259
6319
|
return { tooltip, show, hide, move, containerRef };
|
|
6260
6320
|
};
|
|
6261
|
-
var GridLines =
|
|
6321
|
+
var GridLines = React6.memo(({ width, height, chartH, maxVal }) => /* @__PURE__ */ jsx306(Fragment2, { children: [0, 0.25, 0.5, 0.75, 1].map((ratio) => {
|
|
6262
6322
|
const y = PADDING.top + (1 - ratio) * chartH;
|
|
6263
6323
|
const val = Math.round(maxVal * ratio);
|
|
6264
6324
|
return /* @__PURE__ */ jsxs196("g", { children: [
|
|
6265
|
-
/* @__PURE__ */
|
|
6266
|
-
/* @__PURE__ */
|
|
6325
|
+
/* @__PURE__ */ jsx306("line", { x1: PADDING.left, y1: y, x2: width - PADDING.right, y2: y, className: "chart-grid" }),
|
|
6326
|
+
/* @__PURE__ */ jsx306("text", { x: PADDING.left - 8, y: y + 4, className: "chart-axis-label", textAnchor: "end", children: val })
|
|
6267
6327
|
] }, ratio);
|
|
6268
6328
|
}) }));
|
|
6269
6329
|
GridLines.displayName = "GridLines";
|
|
@@ -6273,18 +6333,18 @@ var getLabelStep = (count, chartW) => {
|
|
|
6273
6333
|
if (count <= maxLabels) return 1;
|
|
6274
6334
|
return Math.ceil(count / maxLabels);
|
|
6275
6335
|
};
|
|
6276
|
-
var AxisLabels =
|
|
6336
|
+
var AxisLabels = React6.memo(({ labels, count, chartW, height }) => {
|
|
6277
6337
|
const step = getLabelStep(count, chartW);
|
|
6278
|
-
return /* @__PURE__ */
|
|
6338
|
+
return /* @__PURE__ */ jsx306(Fragment2, { children: labels.map((label, i) => {
|
|
6279
6339
|
if (i % step !== 0) return null;
|
|
6280
6340
|
const x = PADDING.left + i / (count - 1 || 1) * chartW;
|
|
6281
|
-
return /* @__PURE__ */
|
|
6341
|
+
return /* @__PURE__ */ jsx306("text", { x, y: height - 8, className: "chart-axis-label", textAnchor: "middle", children: label }, i);
|
|
6282
6342
|
}) });
|
|
6283
6343
|
});
|
|
6284
6344
|
AxisLabels.displayName = "AxisLabels";
|
|
6285
6345
|
var useCrosshair = (seriesPoints, entries, labels, chartH) => {
|
|
6286
|
-
const [activeIndex, setActiveIndex] =
|
|
6287
|
-
const handleMouseMove =
|
|
6346
|
+
const [activeIndex, setActiveIndex] = React6.useState(null);
|
|
6347
|
+
const handleMouseMove = React6.useCallback((e) => {
|
|
6288
6348
|
const svg = e.currentTarget;
|
|
6289
6349
|
const rect = svg.getBoundingClientRect();
|
|
6290
6350
|
const mx = (e.clientX - rect.left) / rect.width * svg.viewBox.baseVal.width;
|
|
@@ -6303,17 +6363,17 @@ var useCrosshair = (seriesPoints, entries, labels, chartH) => {
|
|
|
6303
6363
|
}
|
|
6304
6364
|
setActiveIndex(minDist <= threshold ? closest : null);
|
|
6305
6365
|
}, [seriesPoints]);
|
|
6306
|
-
const handleMouseLeave =
|
|
6366
|
+
const handleMouseLeave = React6.useCallback(() => {
|
|
6307
6367
|
setActiveIndex(null);
|
|
6308
6368
|
}, []);
|
|
6309
|
-
const tooltipContent =
|
|
6369
|
+
const tooltipContent = React6.useMemo(() => {
|
|
6310
6370
|
if (activeIndex === null) return "";
|
|
6311
6371
|
return entries.map(([key], di) => {
|
|
6312
6372
|
const p = seriesPoints[di]?.[activeIndex];
|
|
6313
6373
|
return p ? `${key}: ${p.v}` : "";
|
|
6314
6374
|
}).filter(Boolean).join(" / ");
|
|
6315
6375
|
}, [activeIndex, entries, seriesPoints]);
|
|
6316
|
-
const getTooltipAt =
|
|
6376
|
+
const getTooltipAt = React6.useCallback((idx) => {
|
|
6317
6377
|
return entries.map(([key], di) => {
|
|
6318
6378
|
const p = seriesPoints[di]?.[idx];
|
|
6319
6379
|
return p ? `${key}: ${p.v}` : "";
|
|
@@ -6321,16 +6381,16 @@ var useCrosshair = (seriesPoints, entries, labels, chartH) => {
|
|
|
6321
6381
|
}, [entries, seriesPoints]);
|
|
6322
6382
|
return { activeIndex, handleMouseMove, handleMouseLeave, tooltipContent, getTooltipAt };
|
|
6323
6383
|
};
|
|
6324
|
-
var LineChart =
|
|
6325
|
-
const entries =
|
|
6326
|
-
const maxVal =
|
|
6384
|
+
var LineChart = React6.memo(({ data, labels, width, height, animate, onHover, onMove, onLeave }) => {
|
|
6385
|
+
const entries = React6.useMemo(() => Object.entries(data), [data]);
|
|
6386
|
+
const maxVal = React6.useMemo(() => {
|
|
6327
6387
|
const allValues = entries.flatMap(([, v]) => v);
|
|
6328
6388
|
return Math.max(...allValues) * 1.2 || 1;
|
|
6329
6389
|
}, [entries]);
|
|
6330
6390
|
const count = labels.length;
|
|
6331
6391
|
const chartW = width - PADDING.left - PADDING.right;
|
|
6332
6392
|
const chartH = height - PADDING.top - PADDING.bottom;
|
|
6333
|
-
const seriesPoints =
|
|
6393
|
+
const seriesPoints = React6.useMemo(
|
|
6334
6394
|
() => entries.map(
|
|
6335
6395
|
([, values]) => values.map((v, i) => ({
|
|
6336
6396
|
x: PADDING.left + i / (count - 1 || 1) * chartW,
|
|
@@ -6340,9 +6400,9 @@ var LineChart = React5.memo(({ data, labels, width, height, animate, onHover, on
|
|
|
6340
6400
|
),
|
|
6341
6401
|
[entries, count, chartW, chartH, maxVal]
|
|
6342
6402
|
);
|
|
6343
|
-
const clipRef =
|
|
6403
|
+
const clipRef = React6.useRef(null);
|
|
6344
6404
|
const { activeIndex, handleMouseMove, handleMouseLeave, getTooltipAt } = useCrosshair(seriesPoints, entries, labels, chartH);
|
|
6345
|
-
|
|
6405
|
+
React6.useEffect(() => {
|
|
6346
6406
|
if (!animate || !clipRef.current) return;
|
|
6347
6407
|
clipRef.current.setAttribute("width", "0");
|
|
6348
6408
|
requestAnimationFrame(() => {
|
|
@@ -6372,9 +6432,9 @@ var LineChart = React5.memo(({ data, labels, width, height, animate, onHover, on
|
|
|
6372
6432
|
onLeave();
|
|
6373
6433
|
},
|
|
6374
6434
|
children: [
|
|
6375
|
-
animate && /* @__PURE__ */
|
|
6376
|
-
/* @__PURE__ */
|
|
6377
|
-
/* @__PURE__ */
|
|
6435
|
+
animate && /* @__PURE__ */ jsx306("defs", { children: /* @__PURE__ */ jsx306("clipPath", { id: lineClipId, children: /* @__PURE__ */ jsx306("rect", { ref: clipRef, x: "0", y: "0", width: animate ? 0 : width, height }) }) }),
|
|
6436
|
+
/* @__PURE__ */ jsx306(GridLines, { width, height, chartH, maxVal }),
|
|
6437
|
+
/* @__PURE__ */ jsx306(AxisLabels, { labels, count, chartW, height }),
|
|
6378
6438
|
entries.map(([key], di) => {
|
|
6379
6439
|
const palette = getPalette(LINE_BAR_PALETTES, di, key);
|
|
6380
6440
|
const color = palette[2];
|
|
@@ -6384,15 +6444,15 @@ var LineChart = React5.memo(({ data, labels, width, height, animate, onHover, on
|
|
|
6384
6444
|
const polyPoints = points.map((p) => `${p.x},${p.y}`).join(" ");
|
|
6385
6445
|
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`;
|
|
6386
6446
|
return /* @__PURE__ */ jsxs196("g", { children: [
|
|
6387
|
-
/* @__PURE__ */
|
|
6388
|
-
/* @__PURE__ */
|
|
6389
|
-
/* @__PURE__ */
|
|
6447
|
+
/* @__PURE__ */ jsx306("defs", { children: /* @__PURE__ */ jsxs196("linearGradient", { id: gradientId, x1: "0", y1: "0", x2: "0", y2: "1", children: [
|
|
6448
|
+
/* @__PURE__ */ jsx306("stop", { offset: "0%", stopColor: areaColor, stopOpacity: "0.2" }),
|
|
6449
|
+
/* @__PURE__ */ jsx306("stop", { offset: "100%", stopColor: areaColor, stopOpacity: "0" })
|
|
6390
6450
|
] }) }),
|
|
6391
6451
|
/* @__PURE__ */ jsxs196("g", { clipPath: animate ? `url(#${lineClipId})` : void 0, children: [
|
|
6392
|
-
/* @__PURE__ */
|
|
6393
|
-
/* @__PURE__ */
|
|
6452
|
+
/* @__PURE__ */ jsx306("path", { d: areaD, fill: `url(#${gradientId})` }),
|
|
6453
|
+
/* @__PURE__ */ jsx306("polyline", { points: polyPoints, fill: "none", stroke: color, strokeWidth: "2" })
|
|
6394
6454
|
] }),
|
|
6395
|
-
activeIndex !== null && points[activeIndex] && /* @__PURE__ */
|
|
6455
|
+
activeIndex !== null && points[activeIndex] && /* @__PURE__ */ jsx306(
|
|
6396
6456
|
"circle",
|
|
6397
6457
|
{
|
|
6398
6458
|
cx: points[activeIndex].x,
|
|
@@ -6404,7 +6464,7 @@ var LineChart = React5.memo(({ data, labels, width, height, animate, onHover, on
|
|
|
6404
6464
|
)
|
|
6405
6465
|
] }, di);
|
|
6406
6466
|
}),
|
|
6407
|
-
activeX !== null && /* @__PURE__ */
|
|
6467
|
+
activeX !== null && /* @__PURE__ */ jsx306(
|
|
6408
6468
|
"line",
|
|
6409
6469
|
{
|
|
6410
6470
|
x1: activeX,
|
|
@@ -6414,7 +6474,7 @@ var LineChart = React5.memo(({ data, labels, width, height, animate, onHover, on
|
|
|
6414
6474
|
className: "chart-crosshair"
|
|
6415
6475
|
}
|
|
6416
6476
|
),
|
|
6417
|
-
/* @__PURE__ */
|
|
6477
|
+
/* @__PURE__ */ jsx306(
|
|
6418
6478
|
"rect",
|
|
6419
6479
|
{
|
|
6420
6480
|
x: PADDING.left,
|
|
@@ -6430,16 +6490,16 @@ var LineChart = React5.memo(({ data, labels, width, height, animate, onHover, on
|
|
|
6430
6490
|
);
|
|
6431
6491
|
});
|
|
6432
6492
|
LineChart.displayName = "LineChart";
|
|
6433
|
-
var CurveChart =
|
|
6434
|
-
const entries =
|
|
6435
|
-
const maxVal =
|
|
6493
|
+
var CurveChart = React6.memo(({ data, labels, width, height, animate, onHover, onMove, onLeave }) => {
|
|
6494
|
+
const entries = React6.useMemo(() => Object.entries(data), [data]);
|
|
6495
|
+
const maxVal = React6.useMemo(() => {
|
|
6436
6496
|
const allValues = entries.flatMap(([, v]) => v);
|
|
6437
6497
|
return Math.max(...allValues) * 1.2 || 1;
|
|
6438
6498
|
}, [entries]);
|
|
6439
6499
|
const count = labels.length;
|
|
6440
6500
|
const chartW = width - PADDING.left - PADDING.right;
|
|
6441
6501
|
const chartH = height - PADDING.top - PADDING.bottom;
|
|
6442
|
-
const seriesPoints =
|
|
6502
|
+
const seriesPoints = React6.useMemo(
|
|
6443
6503
|
() => entries.map(
|
|
6444
6504
|
([, values]) => values.map((v, i) => ({
|
|
6445
6505
|
x: PADDING.left + i / (count - 1 || 1) * chartW,
|
|
@@ -6449,9 +6509,9 @@ var CurveChart = React5.memo(({ data, labels, width, height, animate, onHover, o
|
|
|
6449
6509
|
),
|
|
6450
6510
|
[entries, count, chartW, chartH, maxVal]
|
|
6451
6511
|
);
|
|
6452
|
-
const curveClipRef =
|
|
6512
|
+
const curveClipRef = React6.useRef(null);
|
|
6453
6513
|
const { activeIndex, handleMouseMove, handleMouseLeave, getTooltipAt } = useCrosshair(seriesPoints, entries, labels, chartH);
|
|
6454
|
-
|
|
6514
|
+
React6.useEffect(() => {
|
|
6455
6515
|
if (!animate || !curveClipRef.current) return;
|
|
6456
6516
|
curveClipRef.current.setAttribute("width", "0");
|
|
6457
6517
|
requestAnimationFrame(() => {
|
|
@@ -6482,9 +6542,9 @@ var CurveChart = React5.memo(({ data, labels, width, height, animate, onHover, o
|
|
|
6482
6542
|
onLeave();
|
|
6483
6543
|
},
|
|
6484
6544
|
children: [
|
|
6485
|
-
animate && /* @__PURE__ */
|
|
6486
|
-
/* @__PURE__ */
|
|
6487
|
-
/* @__PURE__ */
|
|
6545
|
+
animate && /* @__PURE__ */ jsx306("defs", { children: /* @__PURE__ */ jsx306("clipPath", { id: curveClipId, children: /* @__PURE__ */ jsx306("rect", { ref: curveClipRef, x: "0", y: "0", width: animate ? 0 : width, height }) }) }),
|
|
6546
|
+
/* @__PURE__ */ jsx306(GridLines, { width, height, chartH, maxVal }),
|
|
6547
|
+
/* @__PURE__ */ jsx306(AxisLabels, { labels, count, chartW, height }),
|
|
6488
6548
|
entries.map(([key], di) => {
|
|
6489
6549
|
const palette = getPalette(LINE_BAR_PALETTES, di, key);
|
|
6490
6550
|
const color = palette[2];
|
|
@@ -6494,15 +6554,15 @@ var CurveChart = React5.memo(({ data, labels, width, height, animate, onHover, o
|
|
|
6494
6554
|
const linePath = toSmoothPath(points);
|
|
6495
6555
|
const areaPath = linePath + ` L ${points[points.length - 1].x} ${PADDING.top + chartH} L ${points[0].x} ${PADDING.top + chartH} Z`;
|
|
6496
6556
|
return /* @__PURE__ */ jsxs196("g", { children: [
|
|
6497
|
-
/* @__PURE__ */
|
|
6498
|
-
/* @__PURE__ */
|
|
6499
|
-
/* @__PURE__ */
|
|
6557
|
+
/* @__PURE__ */ jsx306("defs", { children: /* @__PURE__ */ jsxs196("linearGradient", { id: gradientId, x1: "0", y1: "0", x2: "0", y2: "1", children: [
|
|
6558
|
+
/* @__PURE__ */ jsx306("stop", { offset: "0%", stopColor: areaColor, stopOpacity: "0.4" }),
|
|
6559
|
+
/* @__PURE__ */ jsx306("stop", { offset: "100%", stopColor: areaColor, stopOpacity: "0.02" })
|
|
6500
6560
|
] }) }),
|
|
6501
6561
|
/* @__PURE__ */ jsxs196("g", { clipPath: animate ? `url(#${curveClipId})` : void 0, children: [
|
|
6502
|
-
/* @__PURE__ */
|
|
6503
|
-
/* @__PURE__ */
|
|
6562
|
+
/* @__PURE__ */ jsx306("path", { d: areaPath, fill: `url(#${gradientId})` }),
|
|
6563
|
+
/* @__PURE__ */ jsx306("path", { d: linePath, fill: "none", stroke: color, strokeWidth: "2" })
|
|
6504
6564
|
] }),
|
|
6505
|
-
activeIndex !== null && points[activeIndex] && /* @__PURE__ */
|
|
6565
|
+
activeIndex !== null && points[activeIndex] && /* @__PURE__ */ jsx306(
|
|
6506
6566
|
"circle",
|
|
6507
6567
|
{
|
|
6508
6568
|
cx: points[activeIndex].x,
|
|
@@ -6514,7 +6574,7 @@ var CurveChart = React5.memo(({ data, labels, width, height, animate, onHover, o
|
|
|
6514
6574
|
)
|
|
6515
6575
|
] }, di);
|
|
6516
6576
|
}),
|
|
6517
|
-
activeX !== null && /* @__PURE__ */
|
|
6577
|
+
activeX !== null && /* @__PURE__ */ jsx306(
|
|
6518
6578
|
"line",
|
|
6519
6579
|
{
|
|
6520
6580
|
x1: activeX,
|
|
@@ -6524,7 +6584,7 @@ var CurveChart = React5.memo(({ data, labels, width, height, animate, onHover, o
|
|
|
6524
6584
|
className: "chart-crosshair"
|
|
6525
6585
|
}
|
|
6526
6586
|
),
|
|
6527
|
-
/* @__PURE__ */
|
|
6587
|
+
/* @__PURE__ */ jsx306(
|
|
6528
6588
|
"rect",
|
|
6529
6589
|
{
|
|
6530
6590
|
x: PADDING.left,
|
|
@@ -6540,9 +6600,9 @@ var CurveChart = React5.memo(({ data, labels, width, height, animate, onHover, o
|
|
|
6540
6600
|
);
|
|
6541
6601
|
});
|
|
6542
6602
|
CurveChart.displayName = "CurveChart";
|
|
6543
|
-
var BarChart =
|
|
6544
|
-
const entries =
|
|
6545
|
-
const maxVal =
|
|
6603
|
+
var BarChart = React6.memo(({ data, labels, width, height, animate, onHover, onMove, onLeave }) => {
|
|
6604
|
+
const entries = React6.useMemo(() => Object.entries(data), [data]);
|
|
6605
|
+
const maxVal = React6.useMemo(() => {
|
|
6546
6606
|
const allValues = entries.flatMap(([, v]) => v);
|
|
6547
6607
|
return Math.max(...allValues) * 1.2 || 1;
|
|
6548
6608
|
}, [entries]);
|
|
@@ -6554,7 +6614,7 @@ var BarChart = React5.memo(({ data, labels, width, height, animate, onHover, onM
|
|
|
6554
6614
|
const barGap = groupCount > 1 ? 2 : 0;
|
|
6555
6615
|
const barW = Math.max(1, Math.min(32, (groupW * 0.7 - barGap * (groupCount - 1)) / groupCount));
|
|
6556
6616
|
const baseline = PADDING.top + chartH;
|
|
6557
|
-
const bars =
|
|
6617
|
+
const bars = React6.useMemo(
|
|
6558
6618
|
() => entries.map(
|
|
6559
6619
|
([, values], di) => values.map((v, i) => {
|
|
6560
6620
|
const totalBarsW = barW * groupCount + barGap * (groupCount - 1);
|
|
@@ -6568,10 +6628,10 @@ var BarChart = React5.memo(({ data, labels, width, height, animate, onHover, onM
|
|
|
6568
6628
|
);
|
|
6569
6629
|
const barLabelStep = getLabelStep(count, chartW);
|
|
6570
6630
|
return /* @__PURE__ */ jsxs196("svg", { viewBox: `0 0 ${width} ${height}`, className: "chart-svg", children: [
|
|
6571
|
-
/* @__PURE__ */
|
|
6631
|
+
/* @__PURE__ */ jsx306(GridLines, { width, height, chartH, maxVal }),
|
|
6572
6632
|
labels.map((label, i) => {
|
|
6573
6633
|
if (i % barLabelStep !== 0) return null;
|
|
6574
|
-
return /* @__PURE__ */
|
|
6634
|
+
return /* @__PURE__ */ jsx306("text", { x: PADDING.left + groupW * i + groupW / 2, y: height - 8, className: "chart-axis-label", textAnchor: "middle", children: label }, i);
|
|
6575
6635
|
}),
|
|
6576
6636
|
entries.map(([key], di) => {
|
|
6577
6637
|
const palette = getPalette(LINE_BAR_PALETTES, di, key);
|
|
@@ -6580,7 +6640,7 @@ var BarChart = React5.memo(({ data, labels, width, height, animate, onHover, onM
|
|
|
6580
6640
|
const r2 = Math.min(4, b.w / 2);
|
|
6581
6641
|
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`;
|
|
6582
6642
|
const delay = 100 + i * 80;
|
|
6583
|
-
return /* @__PURE__ */
|
|
6643
|
+
return /* @__PURE__ */ jsx306(
|
|
6584
6644
|
"path",
|
|
6585
6645
|
{
|
|
6586
6646
|
d,
|
|
@@ -6601,11 +6661,11 @@ var BarChart = React5.memo(({ data, labels, width, height, animate, onHover, onM
|
|
|
6601
6661
|
] });
|
|
6602
6662
|
});
|
|
6603
6663
|
BarChart.displayName = "BarChart";
|
|
6604
|
-
var PieDonutChart =
|
|
6664
|
+
var PieDonutChart = React6.memo(
|
|
6605
6665
|
({ data, labels, width, height, animate, isDoughnut, onHover, onMove, onLeave }) => {
|
|
6606
|
-
const entries =
|
|
6607
|
-
const values =
|
|
6608
|
-
const total =
|
|
6666
|
+
const entries = React6.useMemo(() => Object.entries(data), [data]);
|
|
6667
|
+
const values = React6.useMemo(() => entries.flatMap(([, v]) => v), [entries]);
|
|
6668
|
+
const total = React6.useMemo(() => values.reduce((a, b) => a + b, 0) || 1, [values]);
|
|
6609
6669
|
const size = Math.min(width, height);
|
|
6610
6670
|
const cx = size / 2;
|
|
6611
6671
|
const cy = size / 2;
|
|
@@ -6613,10 +6673,10 @@ var PieDonutChart = React5.memo(
|
|
|
6613
6673
|
const innerR = isDoughnut ? r2 * 0.5 : 0;
|
|
6614
6674
|
const firstKey = entries[0]?.[0] ?? "";
|
|
6615
6675
|
const colorOffset = hashString(firstKey);
|
|
6616
|
-
const maskRef =
|
|
6676
|
+
const maskRef = React6.useRef(null);
|
|
6617
6677
|
const maskR = r2 + 10;
|
|
6618
6678
|
const maskCircumference = 2 * Math.PI * maskR;
|
|
6619
|
-
|
|
6679
|
+
React6.useEffect(() => {
|
|
6620
6680
|
if (!animate || !maskRef.current) return;
|
|
6621
6681
|
const el = maskRef.current;
|
|
6622
6682
|
el.style.strokeDasharray = `${maskCircumference}`;
|
|
@@ -6626,7 +6686,7 @@ var PieDonutChart = React5.memo(
|
|
|
6626
6686
|
el.style.strokeDashoffset = "0";
|
|
6627
6687
|
});
|
|
6628
6688
|
}, [animate, maskCircumference]);
|
|
6629
|
-
const sliceData =
|
|
6689
|
+
const sliceData = React6.useMemo(() => {
|
|
6630
6690
|
let angle0 = -Math.PI / 2;
|
|
6631
6691
|
let cumulativeAngle = 0;
|
|
6632
6692
|
return values.map((v, i) => {
|
|
@@ -6661,7 +6721,7 @@ var PieDonutChart = React5.memo(
|
|
|
6661
6721
|
}, [values, total, cx, cy, r2, innerR, labels]);
|
|
6662
6722
|
const maskId = `pie-mask-${isDoughnut ? "d" : "p"}`;
|
|
6663
6723
|
return /* @__PURE__ */ jsxs196("svg", { viewBox: `0 0 ${size} ${size}`, className: "chart-svg chart-pie", children: [
|
|
6664
|
-
animate && /* @__PURE__ */
|
|
6724
|
+
animate && /* @__PURE__ */ jsx306("defs", { children: /* @__PURE__ */ jsx306("mask", { id: maskId, children: /* @__PURE__ */ jsx306(
|
|
6665
6725
|
"circle",
|
|
6666
6726
|
{
|
|
6667
6727
|
ref: maskRef,
|
|
@@ -6674,7 +6734,7 @@ var PieDonutChart = React5.memo(
|
|
|
6674
6734
|
transform: `rotate(-90 ${cx} ${cy})`
|
|
6675
6735
|
}
|
|
6676
6736
|
) }) }),
|
|
6677
|
-
/* @__PURE__ */
|
|
6737
|
+
/* @__PURE__ */ jsx306("g", { mask: animate ? `url(#${maskId})` : void 0, children: sliceData.map((s, i) => /* @__PURE__ */ jsx306("g", { children: /* @__PURE__ */ jsx306(
|
|
6678
6738
|
"path",
|
|
6679
6739
|
{
|
|
6680
6740
|
d: s.d,
|
|
@@ -6690,9 +6750,9 @@ var PieDonutChart = React5.memo(
|
|
|
6690
6750
|
);
|
|
6691
6751
|
PieDonutChart.displayName = "PieDonutChart";
|
|
6692
6752
|
var ChartTooltip = ({ x, y, containerWidth, containerHeight, tooltipType, children }) => {
|
|
6693
|
-
const ref =
|
|
6694
|
-
const [pos, setPos] =
|
|
6695
|
-
|
|
6753
|
+
const ref = React6.useRef(null);
|
|
6754
|
+
const [pos, setPos] = React6.useState({ left: 0, top: 0 });
|
|
6755
|
+
React6.useLayoutEffect(() => {
|
|
6696
6756
|
const el = ref.current;
|
|
6697
6757
|
if (!el) return;
|
|
6698
6758
|
const w = el.offsetWidth;
|
|
@@ -6716,8 +6776,8 @@ var ChartTooltip = ({ x, y, containerWidth, containerHeight, tooltipType, childr
|
|
|
6716
6776
|
className: `lib-xplat-tooltip ${tooltipType} chart-tooltip-pos`,
|
|
6717
6777
|
style: { left: pos.left, top: pos.top },
|
|
6718
6778
|
children: [
|
|
6719
|
-
title && /* @__PURE__ */
|
|
6720
|
-
desc && /* @__PURE__ */
|
|
6779
|
+
title && /* @__PURE__ */ jsx306("div", { className: "tooltip-title", children: title }),
|
|
6780
|
+
desc && /* @__PURE__ */ jsx306("div", { className: "tooltip-desc", children: desc })
|
|
6721
6781
|
]
|
|
6722
6782
|
}
|
|
6723
6783
|
);
|
|
@@ -6729,13 +6789,13 @@ var ChartLegend = ({ data, labels, type }) => {
|
|
|
6729
6789
|
const total = values.reduce((a, b) => a + b, 0) || 1;
|
|
6730
6790
|
const firstKey = entries[0]?.[0] ?? "";
|
|
6731
6791
|
const colorOffset = hashString(firstKey);
|
|
6732
|
-
return /* @__PURE__ */
|
|
6792
|
+
return /* @__PURE__ */ jsx306("div", { className: "chart-legend", children: values.map((v, i) => {
|
|
6733
6793
|
const pct = Math.round(v / total * 100);
|
|
6734
6794
|
const color = PIE_COLORS[(i + colorOffset) % PIE_COLORS.length];
|
|
6735
6795
|
return /* @__PURE__ */ jsxs196("div", { className: "chart-legend-item", children: [
|
|
6736
|
-
/* @__PURE__ */
|
|
6796
|
+
/* @__PURE__ */ jsx306("span", { className: "chart-legend-dot", style: { backgroundColor: color } }),
|
|
6737
6797
|
/* @__PURE__ */ jsxs196("div", { className: "chart-legend-text", children: [
|
|
6738
|
-
/* @__PURE__ */
|
|
6798
|
+
/* @__PURE__ */ jsx306("span", { className: "chart-legend-label", children: labels[i] || `${i + 1}` }),
|
|
6739
6799
|
/* @__PURE__ */ jsxs196("span", { className: "chart-legend-value", children: [
|
|
6740
6800
|
v.toLocaleString(),
|
|
6741
6801
|
"(",
|
|
@@ -6746,103 +6806,42 @@ var ChartLegend = ({ data, labels, type }) => {
|
|
|
6746
6806
|
] }, i);
|
|
6747
6807
|
}) });
|
|
6748
6808
|
}
|
|
6749
|
-
return /* @__PURE__ */
|
|
6809
|
+
return /* @__PURE__ */ jsx306("div", { className: "chart-legend", children: entries.map(([key], di) => {
|
|
6750
6810
|
const palette = getPalette(LINE_BAR_PALETTES, di, key);
|
|
6751
6811
|
const color = palette[2];
|
|
6752
6812
|
const values = entries[di][1];
|
|
6753
6813
|
const sum = values.reduce((a, b) => a + b, 0);
|
|
6754
6814
|
return /* @__PURE__ */ jsxs196("div", { className: "chart-legend-item", children: [
|
|
6755
|
-
/* @__PURE__ */
|
|
6815
|
+
/* @__PURE__ */ jsx306("span", { className: "chart-legend-dot", style: { backgroundColor: color } }),
|
|
6756
6816
|
/* @__PURE__ */ jsxs196("div", { className: "chart-legend-text", children: [
|
|
6757
|
-
/* @__PURE__ */
|
|
6758
|
-
/* @__PURE__ */
|
|
6817
|
+
/* @__PURE__ */ jsx306("span", { className: "chart-legend-label", children: key }),
|
|
6818
|
+
/* @__PURE__ */ jsx306("span", { className: "chart-legend-value", children: sum.toLocaleString() })
|
|
6759
6819
|
] })
|
|
6760
6820
|
] }, di);
|
|
6761
6821
|
}) });
|
|
6762
6822
|
};
|
|
6763
|
-
var Chart =
|
|
6823
|
+
var Chart = React6.memo((props) => {
|
|
6764
6824
|
const { type, data, labels, tooltip: showTooltip = true, tooltipType = "light" } = props;
|
|
6765
6825
|
const { tooltip, show, hide, move, containerRef } = useChartTooltip(showTooltip);
|
|
6766
6826
|
const { width, height } = useChartSize(containerRef);
|
|
6767
|
-
const stableData =
|
|
6768
|
-
const stableLabels =
|
|
6769
|
-
const dataKey =
|
|
6827
|
+
const stableData = React6.useMemo(() => data, [JSON.stringify(data)]);
|
|
6828
|
+
const stableLabels = React6.useMemo(() => labels, [JSON.stringify(labels)]);
|
|
6829
|
+
const dataKey = React6.useMemo(() => JSON.stringify(labels), [labels]);
|
|
6770
6830
|
const animate = useChartAnimation(containerRef, dataKey);
|
|
6771
6831
|
const ready = width > 0 && height > 0;
|
|
6772
6832
|
return /* @__PURE__ */ jsxs196("div", { className: "lib-xplat-chart", ref: containerRef, children: [
|
|
6773
|
-
ready && type === "line" && /* @__PURE__ */
|
|
6774
|
-
ready && type === "curve" && /* @__PURE__ */
|
|
6775
|
-
ready && type === "bar" && /* @__PURE__ */
|
|
6776
|
-
ready && type === "pie" && /* @__PURE__ */
|
|
6777
|
-
ready && type === "doughnut" && /* @__PURE__ */
|
|
6778
|
-
ready && (type === "pie" || type === "doughnut") && /* @__PURE__ */
|
|
6779
|
-
tooltip.visible && tooltip.content && /* @__PURE__ */
|
|
6833
|
+
ready && type === "line" && /* @__PURE__ */ jsx306(LineChart, { data: stableData, labels: stableLabels, width, height, animate, onHover: show, onMove: move, onLeave: hide }),
|
|
6834
|
+
ready && type === "curve" && /* @__PURE__ */ jsx306(CurveChart, { data: stableData, labels: stableLabels, width, height, animate, onHover: show, onMove: move, onLeave: hide }),
|
|
6835
|
+
ready && type === "bar" && /* @__PURE__ */ jsx306(BarChart, { data: stableData, labels: stableLabels, width, height, animate, onHover: show, onMove: move, onLeave: hide }),
|
|
6836
|
+
ready && type === "pie" && /* @__PURE__ */ jsx306(PieDonutChart, { data: stableData, labels: stableLabels, width, height, animate, onHover: show, onMove: move, onLeave: hide }),
|
|
6837
|
+
ready && type === "doughnut" && /* @__PURE__ */ jsx306(PieDonutChart, { data: stableData, labels: stableLabels, width, height, animate, isDoughnut: true, onHover: show, onMove: move, onLeave: hide }),
|
|
6838
|
+
ready && (type === "pie" || type === "doughnut") && /* @__PURE__ */ jsx306(ChartLegend, { data: stableData, labels: stableLabels, type }),
|
|
6839
|
+
tooltip.visible && tooltip.content && /* @__PURE__ */ jsx306(ChartTooltip, { x: tooltip.x, y: tooltip.y, containerWidth: width, containerHeight: height, tooltipType, children: tooltip.content })
|
|
6780
6840
|
] });
|
|
6781
6841
|
});
|
|
6782
6842
|
Chart.displayName = "Chart";
|
|
6783
6843
|
var Chart_default = Chart;
|
|
6784
6844
|
|
|
6785
|
-
// src/components/AutoResizeTextArea/AutoResizeTextArea.tsx
|
|
6786
|
-
import React6 from "react";
|
|
6787
|
-
import { jsx as jsx306 } from "react/jsx-runtime";
|
|
6788
|
-
var MAX_HEIGHT = 400;
|
|
6789
|
-
var AutoResizeTextArea = React6.forwardRef(
|
|
6790
|
-
(props, ref) => {
|
|
6791
|
-
const { value, className, onChange, disabled, bare = false, ...textareaProps } = props;
|
|
6792
|
-
const localRef = React6.useRef(null);
|
|
6793
|
-
const setRefs = (el) => {
|
|
6794
|
-
localRef.current = el;
|
|
6795
|
-
if (!ref) return;
|
|
6796
|
-
if (typeof ref === "function") ref(el);
|
|
6797
|
-
else if (ref && "current" in ref)
|
|
6798
|
-
ref.current = el;
|
|
6799
|
-
};
|
|
6800
|
-
const updateHeight = () => {
|
|
6801
|
-
const el = localRef.current;
|
|
6802
|
-
if (!el) return;
|
|
6803
|
-
el.style.height = "0px";
|
|
6804
|
-
el.style.height = `${Math.min(el.scrollHeight, MAX_HEIGHT)}px`;
|
|
6805
|
-
};
|
|
6806
|
-
const handleChange = (e) => {
|
|
6807
|
-
if (onChange) {
|
|
6808
|
-
const event = {
|
|
6809
|
-
...e,
|
|
6810
|
-
target: { value: e.target.value }
|
|
6811
|
-
};
|
|
6812
|
-
onChange(event);
|
|
6813
|
-
}
|
|
6814
|
-
};
|
|
6815
|
-
React6.useEffect(() => {
|
|
6816
|
-
updateHeight();
|
|
6817
|
-
}, [value]);
|
|
6818
|
-
if (bare) {
|
|
6819
|
-
return /* @__PURE__ */ jsx306(
|
|
6820
|
-
"textarea",
|
|
6821
|
-
{
|
|
6822
|
-
...textareaProps,
|
|
6823
|
-
ref: setRefs,
|
|
6824
|
-
className,
|
|
6825
|
-
disabled,
|
|
6826
|
-
value,
|
|
6827
|
-
onChange: handleChange
|
|
6828
|
-
}
|
|
6829
|
-
);
|
|
6830
|
-
}
|
|
6831
|
-
return /* @__PURE__ */ jsx306("div", { className: clsx_default("lib-xplat-auto-resize-textarea-wrapper", className), children: /* @__PURE__ */ jsx306("div", { className: clsx_default("lib-xplat-auto-resize-textarea", disabled && "disabled"), children: /* @__PURE__ */ jsx306(
|
|
6832
|
-
"textarea",
|
|
6833
|
-
{
|
|
6834
|
-
...textareaProps,
|
|
6835
|
-
ref: setRefs,
|
|
6836
|
-
disabled,
|
|
6837
|
-
value,
|
|
6838
|
-
onChange: handleChange
|
|
6839
|
-
}
|
|
6840
|
-
) }) });
|
|
6841
|
-
}
|
|
6842
|
-
);
|
|
6843
|
-
AutoResizeTextArea.displayName = "AutoResizeTextArea";
|
|
6844
|
-
var AutoResizeTextArea_default = AutoResizeTextArea;
|
|
6845
|
-
|
|
6846
6845
|
// src/components/ChatInput/ChatInput.tsx
|
|
6847
6846
|
import React7 from "react";
|
|
6848
6847
|
|
|
@@ -6851,7 +6850,6 @@ import { jsx as jsx307 } from "react/jsx-runtime";
|
|
|
6851
6850
|
var IconButton = (props) => {
|
|
6852
6851
|
const {
|
|
6853
6852
|
icon,
|
|
6854
|
-
className,
|
|
6855
6853
|
type = "primary",
|
|
6856
6854
|
size = "md",
|
|
6857
6855
|
disabled,
|
|
@@ -6860,7 +6858,7 @@ var IconButton = (props) => {
|
|
|
6860
6858
|
return /* @__PURE__ */ jsx307(
|
|
6861
6859
|
"button",
|
|
6862
6860
|
{
|
|
6863
|
-
className: clsx_default("lib-xplat-icon-button", type, size
|
|
6861
|
+
className: clsx_default("lib-xplat-icon-button", type, size),
|
|
6864
6862
|
disabled,
|
|
6865
6863
|
...rest,
|
|
6866
6864
|
children: icon
|
|
@@ -6948,7 +6946,7 @@ var gridColumns = {
|
|
|
6948
6946
|
};
|
|
6949
6947
|
|
|
6950
6948
|
// src/tokens/colors.ts
|
|
6951
|
-
import {
|
|
6949
|
+
import { semantic } from "@x-plat/tokens-core";
|
|
6952
6950
|
|
|
6953
6951
|
// src/tokens/index.ts
|
|
6954
6952
|
import { cssVar } from "@x-plat/tokens-core";
|
|
@@ -9381,12 +9379,12 @@ var Select_default = Select;
|
|
|
9381
9379
|
// src/components/Skeleton/Skeleton.tsx
|
|
9382
9380
|
import { jsx as jsx337 } from "react/jsx-runtime";
|
|
9383
9381
|
var SIZE_MAP = {
|
|
9384
|
-
xs: "var(--spacing-
|
|
9385
|
-
sm: "var(--spacing-
|
|
9386
|
-
md: "var(--spacing-
|
|
9387
|
-
lg: "var(--spacing-
|
|
9388
|
-
xl: "var(--spacing-
|
|
9389
|
-
"2xl": "var(--spacing-
|
|
9382
|
+
xs: "var(--spacing-space-1)",
|
|
9383
|
+
sm: "var(--spacing-space-2)",
|
|
9384
|
+
md: "var(--spacing-space-4)",
|
|
9385
|
+
lg: "var(--spacing-space-8)",
|
|
9386
|
+
xl: "var(--spacing-space-12)",
|
|
9387
|
+
"2xl": "var(--spacing-space-16)",
|
|
9390
9388
|
full: "100%"
|
|
9391
9389
|
};
|
|
9392
9390
|
var Skeleton = (props) => {
|
|
@@ -11116,7 +11114,6 @@ export {
|
|
|
11116
11114
|
gridColumns,
|
|
11117
11115
|
isInRange,
|
|
11118
11116
|
isSameDay,
|
|
11119
|
-
primitive,
|
|
11120
11117
|
semantic,
|
|
11121
11118
|
useCalendar,
|
|
11122
11119
|
useSideBarContext,
|