@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.
Files changed (80) hide show
  1. package/dist/components/Accordion/index.css +6 -6
  2. package/dist/components/AutoResizeTextArea/index.css +5 -5
  3. package/dist/components/Avatar/index.css +2 -2
  4. package/dist/components/Badge/index.css +1 -1
  5. package/dist/components/Box/index.css +5 -5
  6. package/dist/components/Breadcrumb/index.css +4 -4
  7. package/dist/components/Button/index.cjs +1 -2
  8. package/dist/components/Button/index.css +6 -6
  9. package/dist/components/Button/index.d.cts +1 -1
  10. package/dist/components/Button/index.d.ts +1 -1
  11. package/dist/components/Button/index.js +1 -2
  12. package/dist/components/Calendar/index.cjs +1 -1
  13. package/dist/components/Calendar/index.css +18 -18
  14. package/dist/components/Calendar/index.js +1 -1
  15. package/dist/components/CardTab/index.css +8 -8
  16. package/dist/components/Chart/index.css +11 -11
  17. package/dist/components/ChatInput/index.cjs +1 -2
  18. package/dist/components/ChatInput/index.css +16 -16
  19. package/dist/components/ChatInput/index.js +1 -2
  20. package/dist/components/CheckBox/index.css +2 -2
  21. package/dist/components/CheckBox/index.js +1 -1
  22. package/dist/components/Chip/index.css +5 -5
  23. package/dist/components/DatePicker/index.cjs +1 -2
  24. package/dist/components/DatePicker/index.css +36 -36
  25. package/dist/components/DatePicker/index.js +1 -2
  26. package/dist/components/Divider/index.css +2 -2
  27. package/dist/components/Drawer/index.css +5 -5
  28. package/dist/components/Dropdown/index.css +4 -4
  29. package/dist/components/Editor/index.css +36 -36
  30. package/dist/components/EmptyState/index.css +2 -2
  31. package/dist/components/FileUpload/index.css +4 -4
  32. package/dist/components/HtmlTypeWriter/index.css +1 -1
  33. package/dist/components/IconButton/index.cjs +1 -2
  34. package/dist/components/IconButton/index.css +5 -5
  35. package/dist/components/IconButton/index.d.cts +1 -1
  36. package/dist/components/IconButton/index.d.ts +1 -1
  37. package/dist/components/IconButton/index.js +1 -2
  38. package/dist/components/ImageSelector/index.css +7 -7
  39. package/dist/components/Input/index.css +7 -7
  40. package/dist/components/Modal/index.css +1 -1
  41. package/dist/components/Pagination/index.css +3 -3
  42. package/dist/components/PopOver/index.css +1 -1
  43. package/dist/components/Progress/index.css +1 -1
  44. package/dist/components/Radio/index.css +5 -5
  45. package/dist/components/Select/index.css +9 -9
  46. package/dist/components/Skeleton/index.cjs +6 -6
  47. package/dist/components/Skeleton/index.js +6 -6
  48. package/dist/components/Spinner/index.css +1 -1
  49. package/dist/components/Steps/index.css +3 -3
  50. package/dist/components/Swiper/index.css +3 -3
  51. package/dist/components/Switch/index.css +3 -3
  52. package/dist/components/Tab/index.css +4 -4
  53. package/dist/components/Table/index.css +10 -10
  54. package/dist/components/Tag/index.css +3 -3
  55. package/dist/components/TextArea/index.css +5 -5
  56. package/dist/components/Tooltip/index.css +4 -4
  57. package/dist/components/Video/index.css +2 -2
  58. package/dist/components/index.cjs +249 -251
  59. package/dist/components/index.css +667 -1059
  60. package/dist/components/index.d.cts +2 -2
  61. package/dist/components/index.d.ts +2 -2
  62. package/dist/components/index.js +224 -226
  63. package/dist/index.cjs +249 -253
  64. package/dist/index.css +670 -1062
  65. package/dist/index.d.cts +3 -3
  66. package/dist/index.d.ts +3 -3
  67. package/dist/index.js +224 -227
  68. package/dist/layout/Header/index.css +2 -2
  69. package/dist/layout/Layout/index.css +1 -1
  70. package/dist/layout/index.css +404 -796
  71. package/dist/tokens/index.cjs +0 -2
  72. package/dist/tokens/index.d.cts +9 -10
  73. package/dist/tokens/index.d.ts +9 -10
  74. package/dist/tokens/index.js +1 -2
  75. package/guidelines/AGENT_PROMPT.md +8 -9
  76. package/guidelines/Guidelines.md +1 -1
  77. package/guidelines/components/chart.md +1 -1
  78. package/guidelines/foundations/color.md +22 -23
  79. package/guidelines/foundations/typography.md +86 -36
  80. 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/Avatar/Avatar.tsx
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__ */ jsx297("div", { className: clsx_default("lib-xplat-avatar", size), children: src ? /* @__PURE__ */ jsx297("img", { src, alt: alt || name || "avatar" }) : /* @__PURE__ */ jsx297("div", { className: clsx_default("fallback", `cat-${catIndex}`), children: initials || /* @__PURE__ */ jsx297("svg", { viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsx297("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" }) }) }) });
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 jsx298, jsxs as jsxs191 } from "react/jsx-runtime";
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__ */ jsx298("span", { className: clsx_default("badge-indicator", type, { dot }), children: !dot && displayCount })
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 jsx299, jsxs as jsxs192 } from "react/jsx-runtime";
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__ */ jsx299("div", { className: "box-title", children: title }),
5650
- /* @__PURE__ */ jsx299("div", { className: "box-content", children })
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 jsx300, jsxs as jsxs193 } from "react/jsx-runtime";
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__ */ jsx300("nav", { className: "lib-xplat-breadcrumb", "aria-label": "\uACBD\uB85C", children: /* @__PURE__ */ jsx300("ol", { children: items.map((item, index) => {
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__ */ jsx300("span", { className: "current", "aria-current": "page", children: item.label }) : item.href ? /* @__PURE__ */ jsx300("a", { href: item.href, className: "link", children: item.label }) : /* @__PURE__ */ jsx300("button", { className: "link", onClick: item.onClick, children: item.label }),
5664
- !isLast && /* @__PURE__ */ jsx300("span", { className: "separator", children: separator })
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 jsx301 } from "react/jsx-runtime";
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__ */ jsx301(
5742
+ return /* @__PURE__ */ jsx302(
5683
5743
  "button",
5684
5744
  {
5685
- className: clsx_default("lib-xplat-button", type, size, className),
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 React3 from "react";
5756
+ import React4 from "react";
5697
5757
 
5698
5758
  // src/components/Calendar/useCalendar.ts
5699
- import React2 from "react";
5759
+ import React3 from "react";
5700
5760
  var useCalendar = (initialYear, initialMonth) => {
5701
5761
  const today = /* @__PURE__ */ new Date();
5702
- const [year, setYear] = React2.useState(initialYear ?? today.getFullYear());
5703
- const [month, setMonth] = React2.useState(initialMonth ?? today.getMonth());
5704
- const days = React2.useMemo(() => {
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 = React2.useCallback(() => {
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 = React2.useCallback(() => {
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 = React2.useCallback(() => {
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 jsx302, jsxs as jsxs194 } from "react/jsx-runtime";
5800
- var DayCell = React3.memo(
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__ */ jsx302(
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__ */ jsx302("span", { className: "calendar-day-number", children: day.day }),
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__ */ jsx302(
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(--xplat-blue-500)" },
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] = React3.useState("days");
5897
- const [yearRangeStart, setYearRangeStart] = React3.useState(
5956
+ const [pickerMode, setPickerMode] = React4.useState("days");
5957
+ const [yearRangeStart, setYearRangeStart] = React4.useState(
5898
5958
  Math.floor(year / 12) * 12
5899
5959
  );
5900
- React3.useEffect(() => {
5960
+ React4.useEffect(() => {
5901
5961
  if (yearProp !== void 0) setYear(yearProp);
5902
5962
  }, [yearProp, setYear]);
5903
- React3.useEffect(() => {
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 = React3.useMemo(
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 = React3.useMemo(
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 = React3.useMemo(() => {
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 = React3.useCallback(
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__ */ jsx302("button", { className: "calendar-nav", onClick: handlePrev, "aria-label": "\uC774\uC804", children: /* @__PURE__ */ jsx302(ChevronLeftIcon_default, {}) }),
5988
- /* @__PURE__ */ jsx302("button", { className: "calendar-title", onClick: handleTitleClick, type: "button", children: titleText }),
5989
- /* @__PURE__ */ jsx302("button", { className: "calendar-nav", onClick: handleNext, "aria-label": "\uB2E4\uC74C", children: /* @__PURE__ */ jsx302(ChevronRightIcon_default, {}) }),
5990
- showToday && /* @__PURE__ */ jsx302("button", { className: "calendar-today-btn", onClick: handleToday, children: locale === "ko" ? "\uC624\uB298" : "Today" })
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__ */ jsx302("div", { className: "calendar-picker-grid", children: Array.from({ length: 12 }, (_, i) => {
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__ */ jsx302(
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__ */ jsx302("div", { className: "calendar-picker-grid", children: monthLabels.map((label, i) => /* @__PURE__ */ jsx302(
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__ */ jsx302("div", { className: "calendar-weekdays", children: weekdays.map((label, i) => /* @__PURE__ */ jsx302(
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__ */ jsx302("div", { className: "calendar-grid", children: days.map((day, idx) => {
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__ */ jsx302(
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 React4 from "react";
6116
+ import React5 from "react";
6057
6117
 
6058
6118
  // src/components/CardTab/CardTabPanel.tsx
6059
- import { jsx as jsx303 } from "react/jsx-runtime";
6119
+ import { jsx as jsx304 } from "react/jsx-runtime";
6060
6120
  var CardTabPanel = (props) => {
6061
6121
  const { children, columns = 3 } = props;
6062
- return /* @__PURE__ */ jsx303(
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 jsx304, jsxs as jsxs195 } from "react/jsx-runtime";
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] = React4.useState(tabs[0]?.value ?? "");
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 = React4.Children.toArray(children).filter(
6094
- (child) => React4.isValidElement(child) && child.type === CardTabPanel_default
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__ */ jsx304("div", { className: "card-tab-bar", children: tabs.map((tab) => {
6160
+ /* @__PURE__ */ jsx305("div", { className: "card-tab-bar", children: tabs.map((tab) => {
6101
6161
  const isActive2 = tab.value === activeValue;
6102
- return /* @__PURE__ */ jsx304(
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__ */ jsx304("div", { className: "card-tab-body", children: activePanel })
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 React5 from "react";
6125
- import { Fragment as Fragment2, jsx as jsx305, jsxs as jsxs196 } from "react/jsx-runtime";
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] = React5.useState({ width: 0, height: 0 });
6171
- React5.useEffect(() => {
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] = React5.useState(false);
6198
- const prevDataKey = React5.useRef(dataKey);
6199
- const hasAnimated = React5.useRef(false);
6200
- React5.useEffect(() => {
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
- React5.useEffect(() => {
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] = React5.useState({
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 = React5.useRef(null);
6237
- const rafRef = React5.useRef(0);
6238
- const move = React5.useCallback((e) => {
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 = React5.useCallback((e, content) => {
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 = React5.useCallback(() => {
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 = React5.memo(({ width, height, chartH, maxVal }) => /* @__PURE__ */ jsx305(Fragment2, { children: [0, 0.25, 0.5, 0.75, 1].map((ratio) => {
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__ */ jsx305("line", { x1: PADDING.left, y1: y, x2: width - PADDING.right, y2: y, className: "chart-grid" }),
6266
- /* @__PURE__ */ jsx305("text", { x: PADDING.left - 8, y: y + 4, className: "chart-axis-label", textAnchor: "end", children: val })
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 = React5.memo(({ labels, count, chartW, height }) => {
6336
+ var AxisLabels = React6.memo(({ labels, count, chartW, height }) => {
6277
6337
  const step = getLabelStep(count, chartW);
6278
- return /* @__PURE__ */ jsx305(Fragment2, { children: labels.map((label, i) => {
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__ */ jsx305("text", { x, y: height - 8, className: "chart-axis-label", textAnchor: "middle", children: label }, i);
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] = React5.useState(null);
6287
- const handleMouseMove = React5.useCallback((e) => {
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 = React5.useCallback(() => {
6366
+ const handleMouseLeave = React6.useCallback(() => {
6307
6367
  setActiveIndex(null);
6308
6368
  }, []);
6309
- const tooltipContent = React5.useMemo(() => {
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 = React5.useCallback((idx) => {
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 = React5.memo(({ data, labels, width, height, animate, onHover, onMove, onLeave }) => {
6325
- const entries = React5.useMemo(() => Object.entries(data), [data]);
6326
- const maxVal = React5.useMemo(() => {
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 = React5.useMemo(
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 = React5.useRef(null);
6403
+ const clipRef = React6.useRef(null);
6344
6404
  const { activeIndex, handleMouseMove, handleMouseLeave, getTooltipAt } = useCrosshair(seriesPoints, entries, labels, chartH);
6345
- React5.useEffect(() => {
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__ */ jsx305("defs", { children: /* @__PURE__ */ jsx305("clipPath", { id: lineClipId, children: /* @__PURE__ */ jsx305("rect", { ref: clipRef, x: "0", y: "0", width: animate ? 0 : width, height }) }) }),
6376
- /* @__PURE__ */ jsx305(GridLines, { width, height, chartH, maxVal }),
6377
- /* @__PURE__ */ jsx305(AxisLabels, { labels, count, chartW, height }),
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__ */ jsx305("defs", { children: /* @__PURE__ */ jsxs196("linearGradient", { id: gradientId, x1: "0", y1: "0", x2: "0", y2: "1", children: [
6388
- /* @__PURE__ */ jsx305("stop", { offset: "0%", stopColor: areaColor, stopOpacity: "0.2" }),
6389
- /* @__PURE__ */ jsx305("stop", { offset: "100%", stopColor: areaColor, stopOpacity: "0" })
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__ */ jsx305("path", { d: areaD, fill: `url(#${gradientId})` }),
6393
- /* @__PURE__ */ jsx305("polyline", { points: polyPoints, fill: "none", stroke: color, strokeWidth: "2" })
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__ */ jsx305(
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__ */ jsx305(
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__ */ jsx305(
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 = React5.memo(({ data, labels, width, height, animate, onHover, onMove, onLeave }) => {
6434
- const entries = React5.useMemo(() => Object.entries(data), [data]);
6435
- const maxVal = React5.useMemo(() => {
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 = React5.useMemo(
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 = React5.useRef(null);
6512
+ const curveClipRef = React6.useRef(null);
6453
6513
  const { activeIndex, handleMouseMove, handleMouseLeave, getTooltipAt } = useCrosshair(seriesPoints, entries, labels, chartH);
6454
- React5.useEffect(() => {
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__ */ jsx305("defs", { children: /* @__PURE__ */ jsx305("clipPath", { id: curveClipId, children: /* @__PURE__ */ jsx305("rect", { ref: curveClipRef, x: "0", y: "0", width: animate ? 0 : width, height }) }) }),
6486
- /* @__PURE__ */ jsx305(GridLines, { width, height, chartH, maxVal }),
6487
- /* @__PURE__ */ jsx305(AxisLabels, { labels, count, chartW, height }),
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__ */ jsx305("defs", { children: /* @__PURE__ */ jsxs196("linearGradient", { id: gradientId, x1: "0", y1: "0", x2: "0", y2: "1", children: [
6498
- /* @__PURE__ */ jsx305("stop", { offset: "0%", stopColor: areaColor, stopOpacity: "0.4" }),
6499
- /* @__PURE__ */ jsx305("stop", { offset: "100%", stopColor: areaColor, stopOpacity: "0.02" })
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__ */ jsx305("path", { d: areaPath, fill: `url(#${gradientId})` }),
6503
- /* @__PURE__ */ jsx305("path", { d: linePath, fill: "none", stroke: color, strokeWidth: "2" })
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__ */ jsx305(
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__ */ jsx305(
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__ */ jsx305(
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 = React5.memo(({ data, labels, width, height, animate, onHover, onMove, onLeave }) => {
6544
- const entries = React5.useMemo(() => Object.entries(data), [data]);
6545
- const maxVal = React5.useMemo(() => {
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 = React5.useMemo(
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__ */ jsx305(GridLines, { width, height, chartH, maxVal }),
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__ */ jsx305("text", { x: PADDING.left + groupW * i + groupW / 2, y: height - 8, className: "chart-axis-label", textAnchor: "middle", children: label }, i);
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__ */ jsx305(
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 = React5.memo(
6664
+ var PieDonutChart = React6.memo(
6605
6665
  ({ data, labels, width, height, animate, isDoughnut, onHover, onMove, onLeave }) => {
6606
- const entries = React5.useMemo(() => Object.entries(data), [data]);
6607
- const values = React5.useMemo(() => entries.flatMap(([, v]) => v), [entries]);
6608
- const total = React5.useMemo(() => values.reduce((a, b) => a + b, 0) || 1, [values]);
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 = React5.useRef(null);
6676
+ const maskRef = React6.useRef(null);
6617
6677
  const maskR = r2 + 10;
6618
6678
  const maskCircumference = 2 * Math.PI * maskR;
6619
- React5.useEffect(() => {
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 = React5.useMemo(() => {
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__ */ jsx305("defs", { children: /* @__PURE__ */ jsx305("mask", { id: maskId, children: /* @__PURE__ */ jsx305(
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__ */ jsx305("g", { mask: animate ? `url(#${maskId})` : void 0, children: sliceData.map((s, i) => /* @__PURE__ */ jsx305("g", { children: /* @__PURE__ */ jsx305(
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 = React5.useRef(null);
6694
- const [pos, setPos] = React5.useState({ left: 0, top: 0 });
6695
- React5.useLayoutEffect(() => {
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__ */ jsx305("div", { className: "tooltip-title", children: title }),
6720
- desc && /* @__PURE__ */ jsx305("div", { className: "tooltip-desc", children: desc })
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__ */ jsx305("div", { className: "chart-legend", children: values.map((v, i) => {
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__ */ jsx305("span", { className: "chart-legend-dot", style: { backgroundColor: color } }),
6796
+ /* @__PURE__ */ jsx306("span", { className: "chart-legend-dot", style: { backgroundColor: color } }),
6737
6797
  /* @__PURE__ */ jsxs196("div", { className: "chart-legend-text", children: [
6738
- /* @__PURE__ */ jsx305("span", { className: "chart-legend-label", children: labels[i] || `${i + 1}` }),
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__ */ jsx305("div", { className: "chart-legend", children: entries.map(([key], di) => {
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__ */ jsx305("span", { className: "chart-legend-dot", style: { backgroundColor: color } }),
6815
+ /* @__PURE__ */ jsx306("span", { className: "chart-legend-dot", style: { backgroundColor: color } }),
6756
6816
  /* @__PURE__ */ jsxs196("div", { className: "chart-legend-text", children: [
6757
- /* @__PURE__ */ jsx305("span", { className: "chart-legend-label", children: key }),
6758
- /* @__PURE__ */ jsx305("span", { className: "chart-legend-value", children: sum.toLocaleString() })
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 = React5.memo((props) => {
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 = React5.useMemo(() => data, [JSON.stringify(data)]);
6768
- const stableLabels = React5.useMemo(() => labels, [JSON.stringify(labels)]);
6769
- const dataKey = React5.useMemo(() => JSON.stringify(labels), [labels]);
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__ */ jsx305(LineChart, { data: stableData, labels: stableLabels, width, height, animate, onHover: show, onMove: move, onLeave: hide }),
6774
- ready && type === "curve" && /* @__PURE__ */ jsx305(CurveChart, { data: stableData, labels: stableLabels, width, height, animate, onHover: show, onMove: move, onLeave: hide }),
6775
- ready && type === "bar" && /* @__PURE__ */ jsx305(BarChart, { data: stableData, labels: stableLabels, width, height, animate, onHover: show, onMove: move, onLeave: hide }),
6776
- ready && type === "pie" && /* @__PURE__ */ jsx305(PieDonutChart, { data: stableData, labels: stableLabels, width, height, animate, onHover: show, onMove: move, onLeave: hide }),
6777
- ready && type === "doughnut" && /* @__PURE__ */ jsx305(PieDonutChart, { data: stableData, labels: stableLabels, width, height, animate, isDoughnut: true, onHover: show, onMove: move, onLeave: hide }),
6778
- ready && (type === "pie" || type === "doughnut") && /* @__PURE__ */ jsx305(ChartLegend, { data: stableData, labels: stableLabels, type }),
6779
- tooltip.visible && tooltip.content && /* @__PURE__ */ jsx305(ChartTooltip, { x: tooltip.x, y: tooltip.y, containerWidth: width, containerHeight: height, tooltipType, children: tooltip.content })
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, className),
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 { primitive, semantic } from "@x-plat/tokens-core";
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-size-1)",
9385
- sm: "var(--spacing-size-2)",
9386
- md: "var(--spacing-size-4)",
9387
- lg: "var(--spacing-size-8)",
9388
- xl: "var(--spacing-size-12)",
9389
- "2xl": "var(--spacing-size-16)",
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,