@canvas-components/react-components 0.1.4 → 0.1.5

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/index.cjs CHANGED
@@ -1,9 +1,29 @@
1
1
  'use strict';
2
2
 
3
- var react = require('react');
3
+ var React = require('react');
4
4
  var jsxRuntime = require('react/jsx-runtime');
5
5
  var reactDom = require('react-dom');
6
6
 
7
+ function _interopNamespace(e) {
8
+ if (e && e.__esModule) return e;
9
+ var n = Object.create(null);
10
+ if (e) {
11
+ Object.keys(e).forEach(function (k) {
12
+ if (k !== 'default') {
13
+ var d = Object.getOwnPropertyDescriptor(e, k);
14
+ Object.defineProperty(n, k, d.get ? d : {
15
+ enumerable: true,
16
+ get: function () { return e[k]; }
17
+ });
18
+ }
19
+ });
20
+ }
21
+ n.default = e;
22
+ return Object.freeze(n);
23
+ }
24
+
25
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
26
+
7
27
  // #style-inject:#style-inject
8
28
  function styleInject(css, { insertAt } = {}) {
9
29
  if (!css || typeof document === "undefined") return;
@@ -39,7 +59,7 @@ var REACT_COMPONENT_PREFIX = "canvas-react";
39
59
 
40
60
  // src/components/checkbox/style.css
41
61
  styleInject('@import "../../styles/variables.css";\n.canvas-react-checkbox {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n min-width: 0;\n color: var(--canvas-react-color-text);\n font-size: var(--canvas-react-font-size);\n cursor: pointer;\n user-select: none;\n}\n.canvas-react-checkbox-disabled {\n opacity: 0.56;\n cursor: not-allowed;\n}\n.canvas-react-checkbox-input {\n position: absolute;\n opacity: 0;\n pointer-events: none;\n}\n.canvas-react-checkbox-box {\n position: relative;\n flex: none;\n width: 16px;\n height: 16px;\n box-sizing: border-box;\n border: 1px solid var(--canvas-react-color-border-strong);\n border-radius: 4px;\n background: var(--canvas-react-color-bg);\n transition:\n border-color 0.2s ease,\n background-color 0.2s ease,\n box-shadow 0.2s ease;\n}\n.canvas-react-checkbox:hover .canvas-react-checkbox-box {\n border-color: var(--canvas-react-color-primary-hover);\n}\n.canvas-react-checkbox-input:focus-visible + .canvas-react-checkbox-box {\n border-color: var(--canvas-react-color-primary);\n box-shadow: var(--canvas-react-shadow-focus);\n}\n.canvas-react-checkbox-checked .canvas-react-checkbox-box,\n.canvas-react-checkbox-indeterminate .canvas-react-checkbox-box {\n border-color: var(--canvas-react-color-primary);\n background: var(--canvas-react-color-primary);\n}\n.canvas-react-checkbox-box::after {\n position: absolute;\n content: "";\n opacity: 0;\n box-sizing: border-box;\n transform: scale(0);\n transition: opacity 0.2s ease, transform 0.2s ease;\n}\n.canvas-react-checkbox-checked .canvas-react-checkbox-box::after {\n top: 50%;\n left: 22%;\n width: 5.5px;\n height: 9px;\n border-right: 2px solid #fff;\n border-bottom: 2px solid #fff;\n transform: translateY(-58%) rotate(45deg) scale(1);\n transform-origin: center;\n opacity: 1;\n}\n.canvas-react-checkbox-indeterminate .canvas-react-checkbox-box::after {\n top: 50%;\n left: 50%;\n width: 8px;\n border-bottom: 2px solid #fff;\n transform: translate(-50%, -50%);\n opacity: 1;\n}\n.canvas-react-checkbox-label {\n min-width: 0;\n}\n');
42
- var ReactCheckbox = react.forwardRef(
62
+ var ReactCheckbox = React.forwardRef(
43
63
  function ReactCheckbox2(props, ref) {
44
64
  const {
45
65
  checked,
@@ -50,14 +70,14 @@ var ReactCheckbox = react.forwardRef(
50
70
  style,
51
71
  ...restProps
52
72
  } = props;
53
- const inputRef = react.useRef(null);
54
- react.useEffect(() => {
73
+ const inputRef = React.useRef(null);
74
+ React.useEffect(() => {
55
75
  if (!inputRef.current) {
56
76
  return;
57
77
  }
58
78
  inputRef.current.indeterminate = indeterminate;
59
79
  }, [indeterminate]);
60
- react.useImperativeHandle(ref, () => ({
80
+ React.useImperativeHandle(ref, () => ({
61
81
  focus: () => inputRef.current?.focus(),
62
82
  blur: () => inputRef.current?.blur(),
63
83
  input: inputRef.current
@@ -95,7 +115,7 @@ var ReactCheckbox = react.forwardRef(
95
115
 
96
116
  // src/components/input/style.css
97
117
  styleInject('@import "../../styles/variables.css";\n.canvas-react-input-affix-wrapper {\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n width: 100%;\n min-width: 0;\n height: var(--canvas-react-control-height);\n border: 1px solid var(--canvas-react-color-border);\n border-radius: var(--canvas-react-radius-sm);\n background: var(--canvas-react-color-bg);\n color: var(--canvas-react-color-text);\n font-size: var(--canvas-react-font-size);\n outline: none;\n transition:\n border-color 0.2s ease,\n box-shadow 0.2s ease,\n background-color 0.2s ease;\n}\n.canvas-react-input-affix-wrapper:hover {\n border-color: var(--canvas-react-color-primary-hover);\n}\n.canvas-react-input-affix-wrapper:focus-within {\n border-color: var(--canvas-react-color-primary);\n box-shadow: var(--canvas-react-shadow-focus);\n}\n.canvas-react-input-affix-wrapper-disabled {\n background: #fafafa;\n color: #9ca3af;\n cursor: not-allowed;\n}\n.canvas-react-input {\n box-sizing: border-box;\n flex: 1 1 auto;\n width: 100%;\n min-width: 0;\n height: 100%;\n padding: var(--canvas-react-control-padding-block, 0px) var(--canvas-react-control-padding-inline, 11px);\n border: none;\n background: transparent;\n color: inherit;\n font-size: inherit;\n outline: none;\n}\n.canvas-react-input::placeholder {\n color: #9ca3af;\n}\n.canvas-react-input-suffix {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding-right: var(--canvas-react-control-padding-inline, 11px);\n}\n.canvas-react-input-clear {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 12px;\n height: 12px;\n padding: 0;\n border: none;\n background: transparent;\n color: #9ca3af;\n opacity: 0;\n pointer-events: none;\n cursor: pointer;\n transition:\n color 0.2s ease,\n opacity 0.2s ease,\n transform 0.18s ease;\n}\n.canvas-react-input-affix-wrapper:hover .canvas-react-input-clear,\n.canvas-react-input-affix-wrapper:focus-within .canvas-react-input-clear {\n opacity: 1;\n pointer-events: auto;\n}\n.canvas-react-input-clear:hover {\n color: #6b7280;\n transform: rotate(90deg);\n}\n.canvas-react-input-clear-icon,\n.canvas-react-input-clear-icon::before {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 8px;\n height: 1.25px;\n margin-top: -0.625px;\n margin-left: -4px;\n border-radius: 999px;\n background: currentColor;\n content: "";\n}\n.canvas-react-input-clear-icon {\n transform: rotate(45deg);\n}\n.canvas-react-input-clear-icon::before {\n transform: rotate(90deg);\n}\n');
98
- var ReactInput = react.forwardRef(
118
+ var ReactInput = React.forwardRef(
99
119
  function ReactInput2(props, ref) {
100
120
  const {
101
121
  allowClear = true,
@@ -179,17 +199,17 @@ var ReactInput = react.forwardRef(
179
199
  var DEFAULT_CONTENT_SCALE = {
180
200
  scale: 1
181
201
  };
182
- var ReactContentScaleContext = react.createContext(DEFAULT_CONTENT_SCALE);
202
+ var ReactContentScaleContext = React.createContext(DEFAULT_CONTENT_SCALE);
183
203
  function ReactContentScaleProvider(props) {
184
204
  const { children, scale = 1 } = props;
185
- const value = react.useMemo(() => {
205
+ const value = React.useMemo(() => {
186
206
  const nextScale = typeof scale === "number" && Number.isFinite(scale) && scale > 0 ? scale : 1;
187
207
  return { scale: nextScale };
188
208
  }, [scale]);
189
209
  return /* @__PURE__ */ jsxRuntime.jsx(ReactContentScaleContext.Provider, { value, children });
190
210
  }
191
211
  function useReactContentScale() {
192
- return react.useContext(ReactContentScaleContext);
212
+ return React.useContext(ReactContentScaleContext);
193
213
  }
194
214
  function toContentLayoutSize(size, scale) {
195
215
  const nextScale = typeof scale === "number" && Number.isFinite(scale) && scale > 0 ? scale : 1;
@@ -207,15 +227,15 @@ function useReactTransition(options) {
207
227
  } = options;
208
228
  const enterDuration = resolveDuration(duration, "enter");
209
229
  const leaveDuration = resolveDuration(duration, "leave");
210
- const previousShowRef = react.useRef(show);
211
- const [rendered, setRendered] = react.useState(show);
212
- const [phase, setPhase] = react.useState(() => {
230
+ const previousShowRef = React.useRef(show);
231
+ const [rendered, setRendered] = React.useState(show);
232
+ const [phase, setPhase] = React.useState(() => {
213
233
  if (!show) {
214
234
  return "leave-to";
215
235
  }
216
236
  return appear ? "enter-from" : "entered";
217
237
  });
218
- react.useLayoutEffect(() => {
238
+ React.useLayoutEffect(() => {
219
239
  if (previousShowRef.current === show) {
220
240
  return;
221
241
  }
@@ -227,7 +247,7 @@ function useReactTransition(options) {
227
247
  }
228
248
  setPhase("leave-from");
229
249
  }, [show]);
230
- react.useLayoutEffect(() => {
250
+ React.useLayoutEffect(() => {
231
251
  let firstFrameId = null;
232
252
  let secondFrameId = null;
233
253
  let timerId = null;
@@ -308,9 +328,9 @@ function ReactPopup(props) {
308
328
  show: open
309
329
  });
310
330
  const { rendered } = transition;
311
- const [position, setPosition] = react.useState(null);
312
- const surfaceRef = react.useRef(null);
313
- react.useLayoutEffect(() => {
331
+ const [position, setPosition] = React.useState(null);
332
+ const surfaceRef = React.useRef(null);
333
+ React.useLayoutEffect(() => {
314
334
  if (!rendered) {
315
335
  return;
316
336
  }
@@ -362,7 +382,7 @@ function ReactPopup(props) {
362
382
  rendered,
363
383
  placement
364
384
  ]);
365
- react.useLayoutEffect(() => {
385
+ React.useLayoutEffect(() => {
366
386
  if (!rendered || !position || !surfaceRef.current) {
367
387
  return;
368
388
  }
@@ -406,7 +426,7 @@ function ReactPopup(props) {
406
426
  placement,
407
427
  position
408
428
  ]);
409
- react.useEffect(() => {
429
+ React.useEffect(() => {
410
430
  if (!rendered) {
411
431
  return;
412
432
  }
@@ -621,7 +641,7 @@ var PRESET_COLORS = [
621
641
  "#8c8c8c",
622
642
  "#ffffff"
623
643
  ];
624
- var ReactColorPicker = react.forwardRef(function ReactColorPicker2(props, ref) {
644
+ var ReactColorPicker = React.forwardRef(function ReactColorPicker2(props, ref) {
625
645
  const {
626
646
  autoFocus,
627
647
  className,
@@ -638,20 +658,20 @@ var ReactColorPicker = react.forwardRef(function ReactColorPicker2(props, ref) {
638
658
  showArrow = true,
639
659
  ...restProps
640
660
  } = props;
641
- const triggerRef = react.useRef(null);
642
- const inputRef = react.useRef(null);
643
- const popupRef = react.useRef(null);
661
+ const triggerRef = React.useRef(null);
662
+ const inputRef = React.useRef(null);
663
+ const popupRef = React.useRef(null);
644
664
  const resolvedValue = normalizeHexColor(value) ?? DEFAULT_COLOR;
645
- const [open, setOpen] = react.useState(false);
646
- const [draftValue, setDraftValue] = react.useState(resolvedValue);
647
- const [hexText, setHexText] = react.useState(resolvedValue.toUpperCase());
648
- const hsv = react.useMemo(() => hexToHsv(draftValue), [draftValue]);
649
- react.useImperativeHandle(ref, () => inputRef.current);
650
- react.useEffect(() => {
665
+ const [open, setOpen] = React.useState(false);
666
+ const [draftValue, setDraftValue] = React.useState(resolvedValue);
667
+ const [hexText, setHexText] = React.useState(resolvedValue.toUpperCase());
668
+ const hsv = React.useMemo(() => hexToHsv(draftValue), [draftValue]);
669
+ React.useImperativeHandle(ref, () => inputRef.current);
670
+ React.useEffect(() => {
651
671
  setDraftValue(resolvedValue);
652
672
  setHexText(resolvedValue.toUpperCase());
653
673
  }, [resolvedValue]);
654
- react.useEffect(() => {
674
+ React.useEffect(() => {
655
675
  if (autoFocus) {
656
676
  inputRef.current?.focus();
657
677
  }
@@ -905,7 +925,7 @@ var MONTHS = Array.from(
905
925
  (_, index) => String(index + 1).padStart(2, "0")
906
926
  );
907
927
  var WEEKDAY_LABELS = ["\u65E5", "\u4E00", "\u4E8C", "\u4E09", "\u56DB", "\u4E94", "\u516D"];
908
- var ReactDatePicker = react.forwardRef(
928
+ var ReactDatePicker = React.forwardRef(
909
929
  function ReactDatePicker2(props, ref) {
910
930
  const {
911
931
  autoFocus,
@@ -923,47 +943,47 @@ var ReactDatePicker = react.forwardRef(
923
943
  value,
924
944
  ...restProps
925
945
  } = props;
926
- const triggerRef = react.useRef(null);
927
- const inputRef = react.useRef(null);
928
- const popupRef = react.useRef(null);
929
- const skipFocusOpenRef = react.useRef(false);
930
- const [open, setOpen] = react.useState(false);
931
- const [mode, setMode] = react.useState("date");
932
- const parsedValue = react.useMemo(() => parseDateValue(value), [value]);
933
- const [panelDate, setPanelDate] = react.useState(() => ({
946
+ const triggerRef = React.useRef(null);
947
+ const inputRef = React.useRef(null);
948
+ const popupRef = React.useRef(null);
949
+ const skipFocusOpenRef = React.useRef(false);
950
+ const [open, setOpen] = React.useState(false);
951
+ const [mode, setMode] = React.useState("date");
952
+ const parsedValue = React.useMemo(() => parseDateValue(value), [value]);
953
+ const [panelDate, setPanelDate] = React.useState(() => ({
934
954
  day: parsedValue?.day ?? 1,
935
955
  month: parsedValue?.month ?? (/* @__PURE__ */ new Date()).getMonth() + 1,
936
956
  year: parsedValue?.year ?? (/* @__PURE__ */ new Date()).getFullYear()
937
957
  }));
938
- const yearPanelStart = react.useMemo(
958
+ const yearPanelStart = React.useMemo(
939
959
  () => resolveDecadeStart(panelDate.year),
940
960
  [panelDate.year]
941
961
  );
942
- const decadePanelStart = react.useMemo(
962
+ const decadePanelStart = React.useMemo(
943
963
  () => Math.floor(yearPanelStart / 100) * 100,
944
964
  [yearPanelStart]
945
965
  );
946
- const yearItems = react.useMemo(
966
+ const yearItems = React.useMemo(
947
967
  () => Array.from({ length: 12 }, (_, index) => yearPanelStart - 1 + index),
948
968
  [yearPanelStart]
949
969
  );
950
- const decadeItems = react.useMemo(
970
+ const decadeItems = React.useMemo(
951
971
  () => Array.from({ length: 12 }, (_, index) => decadePanelStart - 10 + index * 10),
952
972
  [decadePanelStart]
953
973
  );
954
- const calendarDays = react.useMemo(
974
+ const calendarDays = React.useMemo(
955
975
  () => buildCalendarDays(panelDate.year, panelDate.month),
956
976
  [panelDate.month, panelDate.year]
957
977
  );
958
978
  const displayValue = parsedValue == null ? "" : `${parsedValue.year}-${String(parsedValue.month).padStart(2, "0")}-${String(parsedValue.day).padStart(2, "0")}`;
959
979
  const showClear = allowClear && !disabled && displayValue.length > 0;
960
- react.useImperativeHandle(ref, () => inputRef.current);
961
- react.useEffect(() => {
980
+ React.useImperativeHandle(ref, () => inputRef.current);
981
+ React.useEffect(() => {
962
982
  if (autoFocus) {
963
983
  inputRef.current?.focus();
964
984
  }
965
985
  }, [autoFocus]);
966
- react.useEffect(() => {
986
+ React.useEffect(() => {
967
987
  if (!open) {
968
988
  return;
969
989
  }
@@ -1420,7 +1440,7 @@ function resolveDecadeStart(year) {
1420
1440
  // src/components/date-range/style.css
1421
1441
  styleInject('@import "../../styles/variables.css";\n@import "../date/style.css";\n@import "../time/style.css";\n.canvas-react-date-range-wrap {\n position: relative;\n display: inline-flex;\n width: 100%;\n height: 100%;\n}\n.canvas-react-date-range {\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n width: 100%;\n min-width: 0;\n height: var(--canvas-react-control-height);\n padding: var(--canvas-react-control-padding-block, 0px) var(--canvas-react-control-padding-inline, 11px);\n border: 1px solid var(--canvas-react-color-border);\n border-radius: var(--canvas-react-radius-sm);\n background: var(--canvas-react-color-bg);\n color: var(--canvas-react-color-text);\n font-size: var(--canvas-react-font-size);\n outline: none;\n cursor: pointer;\n transition:\n border-color 0.2s ease,\n box-shadow 0.2s ease,\n background-color 0.2s ease;\n}\n.canvas-react-date-range-control {\n position: relative;\n}\n.canvas-react-date-range:hover {\n border-color: var(--canvas-react-color-primary-hover);\n}\n.canvas-react-date-range-open {\n border-color: var(--canvas-react-color-primary);\n box-shadow: var(--canvas-react-shadow-focus);\n}\n.canvas-react-date-range-disabled {\n color: #9ca3af;\n background: #fafafa;\n cursor: not-allowed;\n}\n.canvas-react-date-range-input-wrap {\n flex: 1 1 auto;\n width: 100%;\n height: 100%;\n border: none;\n background: transparent;\n box-shadow: none;\n}\n.canvas-react-date-range .canvas-react-input-affix-wrapper {\n height: 100%;\n min-height: 0;\n}\n.canvas-react-date-range-input-wrap:hover,\n.canvas-react-date-range-input-wrap:focus-within {\n border-color: transparent;\n box-shadow: none;\n}\n.canvas-react-date-range-hidden-input {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n border: 0;\n opacity: 0;\n pointer-events: none;\n}\n.canvas-react-date-range-input {\n width: 100%;\n min-width: 0;\n height: 100%;\n padding: 0;\n line-height: 1;\n}\n.canvas-react-date-range-values {\n display: flex;\n flex: 1 1 auto;\n align-items: center;\n min-width: 0;\n height: 100%;\n}\n.canvas-react-date-range-value {\n position: relative;\n display: flex;\n flex: 1 1 0;\n flex-direction: row;\n justify-content: flex-start;\n align-items: center;\n min-width: 0;\n height: 100%;\n padding: 0;\n border: none;\n background: transparent;\n color: inherit;\n font: inherit;\n line-height: 1;\n text-align: left;\n box-sizing: border-box;\n cursor: pointer;\n}\n.canvas-react-date-range-value::after {\n position: absolute;\n right: 0;\n bottom: -1px;\n left: 0;\n height: 2px;\n border-radius: 999px;\n background: transparent;\n content: "";\n transition: background-color 0.18s ease;\n}\n.canvas-react-date-range-value-active::after {\n background: var(--canvas-react-color-primary);\n}\n.canvas-react-date-range-value-text {\n display: block;\n width: 100%;\n min-width: 0;\n height: auto;\n padding: 0;\n border: none;\n outline: none;\n overflow: hidden;\n background: transparent;\n color: inherit;\n font: inherit;\n line-height: normal;\n text-overflow: ellipsis;\n white-space: nowrap;\n cursor: pointer;\n}\n@supports (height: 1lh) {\n .canvas-react-date-range-value-text {\n height: 1lh;\n }\n}\n.canvas-react-date-range-value-text::placeholder {\n color: inherit;\n opacity: 1;\n}\n.canvas-react-date-range-separator {\n display: inline-flex;\n flex: 0 0 auto;\n align-items: center;\n justify-content: center;\n padding: 0 8px;\n color: var(--canvas-react-color-text-muted);\n font-size: 12px;\n}\n.canvas-react-date-range-actions {\n position: relative;\n display: inline-flex;\n flex: 0 0 auto;\n align-items: center;\n justify-content: center;\n width: 1em;\n min-width: 12px;\n height: 1em;\n min-height: 12px;\n margin-left: max(6px, calc(var(--canvas-react-control-padding-inline, 11px) * 0.5));\n}\n.canvas-react-date-range-arrow {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 0.5em;\n height: 0.5em;\n min-width: 6px;\n min-height: 6px;\n border-right: 1.5px solid var(--canvas-react-color-text-muted);\n border-bottom: 1.5px solid var(--canvas-react-color-text-muted);\n transform: translate(-50%, -58%) rotate(45deg);\n transition:\n opacity 0.18s ease,\n transform 0.18s ease,\n border-color 0.18s ease;\n}\n.canvas-react-date-range:hover .canvas-react-date-range-arrow,\n.canvas-react-date-range-open .canvas-react-date-range-arrow {\n border-color: #6b7280;\n}\n.canvas-react-date-range-arrow-open {\n border-color: #6b7280;\n transform: translate(-50%, -42%) rotate(225deg);\n}\n.canvas-react-date-range-clear {\n position: absolute;\n top: 50%;\n left: 50%;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 12px;\n height: 12px;\n padding: 0;\n border: none;\n background: transparent;\n color: #9ca3af;\n opacity: 0;\n pointer-events: none;\n cursor: pointer;\n transform: translate(-50%, -50%) rotate(0deg);\n transition:\n color 0.2s ease,\n opacity 0.2s ease,\n transform 0.18s ease;\n}\n.canvas-react-date-range:hover .canvas-react-date-range-clear,\n.canvas-react-date-range-open .canvas-react-date-range-clear,\n.canvas-react-date-range:focus-within .canvas-react-date-range-clear {\n opacity: 1;\n pointer-events: auto;\n}\n.canvas-react-date-range-clear-icon,\n.canvas-react-date-range-clear-icon::before {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 8px;\n height: 1.25px;\n margin-top: -0.625px;\n margin-left: -4px;\n border-radius: 999px;\n background: currentColor;\n content: "";\n}\n.canvas-react-date-range-clear-icon {\n transform: rotate(45deg);\n}\n.canvas-react-date-range-clear-icon::before {\n transform: rotate(90deg);\n}\n.canvas-react-date-range-dropdown {\n padding: 4px;\n}\n.canvas-react-date-range-panel {\n display: flex;\n flex-direction: column;\n height: 400px;\n box-sizing: border-box;\n}\n.canvas-react-date-range-calendars {\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n flex: 1 1 auto;\n min-height: 0;\n}\n.canvas-react-date-range-calendar {\n display: flex;\n flex-direction: column;\n min-width: 0;\n min-height: 0;\n}\n.canvas-react-date-range-calendar + .canvas-react-date-range-calendar {\n border-left: 1px solid var(--canvas-react-color-split, #f0f0f0);\n}\n.canvas-react-date-range-calendar .canvas-react-year-title {\n cursor: default;\n}\n.canvas-react-date-range-calendar .canvas-react-year-nav:disabled {\n cursor: default;\n opacity: 0;\n}\n.canvas-react-date-range-calendar .canvas-react-date-grid {\n flex: 1 1 auto;\n min-height: 0;\n}\n.canvas-react-date-range-cell {\n position: relative;\n border-radius: 0;\n}\n.canvas-react-date-range-cell.canvas-react-year-cell-selected {\n background: rgba(22, 119, 255, 0.12);\n color: var(--canvas-react-color-primary);\n font-weight: 600;\n}\n.canvas-react-date-range-cell::before {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background: transparent;\n content: "";\n}\n.canvas-react-date-range-cell-in-range {\n background: rgba(22, 119, 255, 0.12);\n}\n.canvas-react-date-range-cell-in-range::before {\n background: transparent;\n}\n.canvas-react-date-range-cell-range-start {\n border-top-left-radius: var(--canvas-react-radius-sm);\n border-bottom-left-radius: var(--canvas-react-radius-sm);\n}\n.canvas-react-date-range-cell-range-start::before {\n left: 0;\n}\n.canvas-react-date-range-cell-range-end {\n border-top-right-radius: var(--canvas-react-radius-sm);\n border-bottom-right-radius: var(--canvas-react-radius-sm);\n}\n.canvas-react-date-range-cell-range-end::before {\n right: 0;\n}\n.canvas-react-date-range-cell-range-start.canvas-react-date-range-cell-range-end {\n border-radius: var(--canvas-react-radius-sm);\n}\n.canvas-react-date-range-cell-range-start.canvas-react-date-range-cell-range-end::before {\n left: 0;\n right: 0;\n}\n.canvas-react-date-range-cell-text {\n position: relative;\n z-index: 1;\n}\n.canvas-react-date-range-footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n padding: 8px 4px 4px;\n border-top: 1px solid var(--canvas-react-color-border);\n}\n');
1422
1442
  var WEEKDAY_LABELS2 = ["\u65E5", "\u4E00", "\u4E8C", "\u4E09", "\u56DB", "\u4E94", "\u516D"];
1423
- var ReactDateRangePicker = react.forwardRef(function ReactDateRangePicker2(props, ref) {
1443
+ var ReactDateRangePicker = React.forwardRef(function ReactDateRangePicker2(props, ref) {
1424
1444
  const {
1425
1445
  autoFocus,
1426
1446
  className,
@@ -1438,37 +1458,37 @@ var ReactDateRangePicker = react.forwardRef(function ReactDateRangePicker2(props
1438
1458
  value,
1439
1459
  ...restProps
1440
1460
  } = props;
1441
- const triggerRef = react.useRef(null);
1442
- const startInputRef = react.useRef(null);
1443
- const endInputRef = react.useRef(null);
1444
- const popupRef = react.useRef(null);
1445
- const skipFocusOpenRef = react.useRef(false);
1446
- const [open, setOpen] = react.useState(false);
1447
- const [activePart, setActivePart] = react.useState("start");
1448
- const [draftRange, setDraftRange] = react.useState(
1461
+ const triggerRef = React.useRef(null);
1462
+ const startInputRef = React.useRef(null);
1463
+ const endInputRef = React.useRef(null);
1464
+ const popupRef = React.useRef(null);
1465
+ const skipFocusOpenRef = React.useRef(false);
1466
+ const [open, setOpen] = React.useState(false);
1467
+ const [activePart, setActivePart] = React.useState("start");
1468
+ const [draftRange, setDraftRange] = React.useState(
1449
1469
  () => parseDateRangeValue(value)
1450
1470
  );
1451
- const [hoverDate, setHoverDate] = react.useState(null);
1452
- const [leftPanel, setLeftPanel] = react.useState(
1471
+ const [hoverDate, setHoverDate] = React.useState(null);
1472
+ const [leftPanel, setLeftPanel] = React.useState(
1453
1473
  () => resolveInitialPanelMonth(parseDateRangeValue(value))
1454
1474
  );
1455
- const rightPanel = react.useMemo(() => shiftMonth2(leftPanel, 1), [leftPanel]);
1456
- const leftCalendarDays = react.useMemo(
1475
+ const rightPanel = React.useMemo(() => shiftMonth2(leftPanel, 1), [leftPanel]);
1476
+ const leftCalendarDays = React.useMemo(
1457
1477
  () => buildCalendarDays2(leftPanel.year, leftPanel.month),
1458
1478
  [leftPanel.month, leftPanel.year]
1459
1479
  );
1460
- const rightCalendarDays = react.useMemo(
1480
+ const rightCalendarDays = React.useMemo(
1461
1481
  () => buildCalendarDays2(rightPanel.year, rightPanel.month),
1462
1482
  [rightPanel.month, rightPanel.year]
1463
1483
  );
1464
1484
  const showClear = allowClear && !disabled && (draftRange.start.length > 0 || draftRange.end.length > 0);
1465
- react.useImperativeHandle(ref, () => startInputRef.current);
1466
- react.useEffect(() => {
1485
+ React.useImperativeHandle(ref, () => startInputRef.current);
1486
+ React.useEffect(() => {
1467
1487
  if (autoFocus) {
1468
1488
  startInputRef.current?.focus();
1469
1489
  }
1470
1490
  }, [autoFocus]);
1471
- react.useEffect(() => {
1491
+ React.useEffect(() => {
1472
1492
  const nextRange = parseDateRangeValue(value);
1473
1493
  setDraftRange(nextRange);
1474
1494
  setLeftPanel(resolveInitialPanelMonth(nextRange));
@@ -2155,9 +2175,9 @@ function TimeSelectionPanel(props) {
2155
2175
  }
2156
2176
  function TimeColumn(props) {
2157
2177
  const { onSelect, options, selectedValue } = props;
2158
- const listRef = react.useRef(null);
2159
- const scrollTimerRef = react.useRef(null);
2160
- const ignoreScrollRef = react.useRef(false);
2178
+ const listRef = React.useRef(null);
2179
+ const scrollTimerRef = React.useRef(null);
2180
+ const ignoreScrollRef = React.useRef(false);
2161
2181
  const scrollToValue = (nextValue, behavior) => {
2162
2182
  const listElement = listRef.current;
2163
2183
  if (!listElement) {
@@ -2194,14 +2214,14 @@ function TimeColumn(props) {
2194
2214
  ignoreScrollRef.current = false;
2195
2215
  }, behavior === "smooth" ? 180 : 120);
2196
2216
  };
2197
- react.useEffect(() => {
2217
+ React.useEffect(() => {
2198
2218
  return () => {
2199
2219
  if (scrollTimerRef.current != null) {
2200
2220
  window.clearTimeout(scrollTimerRef.current);
2201
2221
  }
2202
2222
  };
2203
2223
  }, []);
2204
- react.useEffect(() => {
2224
+ React.useEffect(() => {
2205
2225
  const listElement = listRef.current;
2206
2226
  if (!listElement) {
2207
2227
  return;
@@ -2322,7 +2342,7 @@ var MONTHS2 = Array.from(
2322
2342
  (_, index) => String(index + 1).padStart(2, "0")
2323
2343
  );
2324
2344
  var WEEKDAY_LABELS3 = ["\u65E5", "\u4E00", "\u4E8C", "\u4E09", "\u56DB", "\u4E94", "\u516D"];
2325
- var ReactDateTimePicker = react.forwardRef(function ReactDateTimePicker2(props, ref) {
2345
+ var ReactDateTimePicker = React.forwardRef(function ReactDateTimePicker2(props, ref) {
2326
2346
  const {
2327
2347
  autoFocus,
2328
2348
  className,
@@ -2339,45 +2359,45 @@ var ReactDateTimePicker = react.forwardRef(function ReactDateTimePicker2(props,
2339
2359
  value,
2340
2360
  ...restProps
2341
2361
  } = props;
2342
- const triggerRef = react.useRef(null);
2343
- const inputRef = react.useRef(null);
2344
- const popupRef = react.useRef(null);
2345
- const skipFocusOpenRef = react.useRef(false);
2346
- const [open, setOpen] = react.useState(false);
2347
- const [mode, setMode] = react.useState("date");
2348
- const parsedValue = react.useMemo(() => parseDateTimeValue(value), [value]);
2349
- const [draftDateTime, setDraftDateTime] = react.useState(
2362
+ const triggerRef = React.useRef(null);
2363
+ const inputRef = React.useRef(null);
2364
+ const popupRef = React.useRef(null);
2365
+ const skipFocusOpenRef = React.useRef(false);
2366
+ const [open, setOpen] = React.useState(false);
2367
+ const [mode, setMode] = React.useState("date");
2368
+ const parsedValue = React.useMemo(() => parseDateTimeValue(value), [value]);
2369
+ const [draftDateTime, setDraftDateTime] = React.useState(
2350
2370
  () => createDraftDateTime(parsedValue)
2351
2371
  );
2352
- const yearPanelStart = react.useMemo(
2372
+ const yearPanelStart = React.useMemo(
2353
2373
  () => resolveDecadeStart2(draftDateTime.year),
2354
2374
  [draftDateTime.year]
2355
2375
  );
2356
- const decadePanelStart = react.useMemo(
2376
+ const decadePanelStart = React.useMemo(
2357
2377
  () => Math.floor(yearPanelStart / 100) * 100,
2358
2378
  [yearPanelStart]
2359
2379
  );
2360
- const yearItems = react.useMemo(
2380
+ const yearItems = React.useMemo(
2361
2381
  () => Array.from({ length: 12 }, (_, index) => yearPanelStart - 1 + index),
2362
2382
  [yearPanelStart]
2363
2383
  );
2364
- const decadeItems = react.useMemo(
2384
+ const decadeItems = React.useMemo(
2365
2385
  () => Array.from({ length: 12 }, (_, index) => decadePanelStart - 10 + index * 10),
2366
2386
  [decadePanelStart]
2367
2387
  );
2368
- const calendarDays = react.useMemo(
2388
+ const calendarDays = React.useMemo(
2369
2389
  () => buildCalendarDays3(draftDateTime.year, draftDateTime.month),
2370
2390
  [draftDateTime.month, draftDateTime.year]
2371
2391
  );
2372
2392
  const displayValue = parsedValue == null ? "" : `${formatDateValue(parsedValue)} ${formatTimeValue(parsedValue)}`;
2373
2393
  const showClear = allowClear && !disabled && displayValue.length > 0;
2374
- react.useImperativeHandle(ref, () => inputRef.current);
2375
- react.useEffect(() => {
2394
+ React.useImperativeHandle(ref, () => inputRef.current);
2395
+ React.useEffect(() => {
2376
2396
  if (autoFocus) {
2377
2397
  inputRef.current?.focus();
2378
2398
  }
2379
2399
  }, [autoFocus]);
2380
- react.useEffect(() => {
2400
+ React.useEffect(() => {
2381
2401
  if (!open) {
2382
2402
  return;
2383
2403
  }
@@ -2960,7 +2980,7 @@ var MONTHS3 = Array.from(
2960
2980
  (_, index) => String(index + 1).padStart(2, "0")
2961
2981
  );
2962
2982
  var WEEKDAY_LABELS4 = ["\u65E5", "\u4E00", "\u4E8C", "\u4E09", "\u56DB", "\u4E94", "\u516D"];
2963
- var ReactDateTimeRangePicker = react.forwardRef(function ReactDateTimeRangePicker2(props, ref) {
2983
+ var ReactDateTimeRangePicker = React.forwardRef(function ReactDateTimeRangePicker2(props, ref) {
2964
2984
  const {
2965
2985
  autoFocus,
2966
2986
  className,
@@ -2978,64 +2998,64 @@ var ReactDateTimeRangePicker = react.forwardRef(function ReactDateTimeRangePicke
2978
2998
  value,
2979
2999
  ...restProps
2980
3000
  } = props;
2981
- const triggerRef = react.useRef(null);
2982
- const startInputRef = react.useRef(null);
2983
- const endInputRef = react.useRef(null);
2984
- const popupRef = react.useRef(null);
2985
- const skipFocusOpenRef = react.useRef(false);
2986
- const [open, setOpen] = react.useState(false);
2987
- const [activePart, setActivePart] = react.useState("start");
2988
- const [mode, setMode] = react.useState(
3001
+ const triggerRef = React.useRef(null);
3002
+ const startInputRef = React.useRef(null);
3003
+ const endInputRef = React.useRef(null);
3004
+ const popupRef = React.useRef(null);
3005
+ const skipFocusOpenRef = React.useRef(false);
3006
+ const [open, setOpen] = React.useState(false);
3007
+ const [activePart, setActivePart] = React.useState("start");
3008
+ const [mode, setMode] = React.useState(
2989
3009
  "date"
2990
3010
  );
2991
- const [draftRange, setDraftRange] = react.useState(
3011
+ const [draftRange, setDraftRange] = React.useState(
2992
3012
  () => parseDateTimeRangeValue(value)
2993
3013
  );
2994
- const activeValue = react.useMemo(
3014
+ const activeValue = React.useMemo(
2995
3015
  () => activePart === "start" ? draftRange.start : draftRange.end,
2996
3016
  [activePart, draftRange.end, draftRange.start]
2997
3017
  );
2998
- const parsedActiveValue = react.useMemo(
3018
+ const parsedActiveValue = React.useMemo(
2999
3019
  () => parseDateTimeValue2(activeValue),
3000
3020
  [activeValue]
3001
3021
  );
3002
- const [draftDateTime, setDraftDateTime] = react.useState(
3022
+ const [draftDateTime, setDraftDateTime] = React.useState(
3003
3023
  () => createDraftDateTime2(parsedActiveValue)
3004
3024
  );
3005
3025
  const showClear = allowClear && !disabled && (draftRange.start.length > 0 || draftRange.end.length > 0);
3006
- const yearPanelStart = react.useMemo(
3026
+ const yearPanelStart = React.useMemo(
3007
3027
  () => resolveDecadeStart3(draftDateTime.year),
3008
3028
  [draftDateTime.year]
3009
3029
  );
3010
- const decadePanelStart = react.useMemo(
3030
+ const decadePanelStart = React.useMemo(
3011
3031
  () => Math.floor(yearPanelStart / 100) * 100,
3012
3032
  [yearPanelStart]
3013
3033
  );
3014
- const yearItems = react.useMemo(
3034
+ const yearItems = React.useMemo(
3015
3035
  () => Array.from({ length: 12 }, (_, index) => yearPanelStart - 1 + index),
3016
3036
  [yearPanelStart]
3017
3037
  );
3018
- const decadeItems = react.useMemo(
3038
+ const decadeItems = React.useMemo(
3019
3039
  () => Array.from(
3020
3040
  { length: 12 },
3021
3041
  (_, index) => decadePanelStart - 10 + index * 10
3022
3042
  ),
3023
3043
  [decadePanelStart]
3024
3044
  );
3025
- const calendarDays = react.useMemo(
3045
+ const calendarDays = React.useMemo(
3026
3046
  () => buildCalendarDays4(draftDateTime.year, draftDateTime.month),
3027
3047
  [draftDateTime.month, draftDateTime.year]
3028
3048
  );
3029
- react.useImperativeHandle(ref, () => startInputRef.current);
3030
- react.useEffect(() => {
3049
+ React.useImperativeHandle(ref, () => startInputRef.current);
3050
+ React.useEffect(() => {
3031
3051
  if (autoFocus) {
3032
3052
  startInputRef.current?.focus();
3033
3053
  }
3034
3054
  }, [autoFocus]);
3035
- react.useEffect(() => {
3055
+ React.useEffect(() => {
3036
3056
  setDraftRange(parseDateTimeRangeValue(value));
3037
3057
  }, [rangeSeparator, value]);
3038
- react.useEffect(() => {
3058
+ React.useEffect(() => {
3039
3059
  if (!open) {
3040
3060
  return;
3041
3061
  }
@@ -3769,20 +3789,20 @@ function compareDateTimeValue(left, right) {
3769
3789
  styleInject(".canvas-react-image-preview {\n position: fixed;\n inset: 0;\n z-index: 1100;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 48px;\n background: rgba(0, 0, 0, 0.72);\n backdrop-filter: blur(2px);\n opacity: 0;\n transition: opacity 0.2s ease;\n}\n.canvas-react-image-preview-entered {\n opacity: 1;\n}\n.canvas-react-image-preview-leave {\n opacity: 0;\n}\n.canvas-react-image-preview-image {\n max-width: 90vw;\n max-height: 86vh;\n object-fit: contain;\n border-radius: 4px;\n box-shadow: 0 12px 48px rgba(0, 0, 0, 0.32);\n opacity: 0;\n transition: transform 0.2s ease, opacity 0.2s ease;\n user-select: none;\n}\n.canvas-react-image-preview-entered .canvas-react-image-preview-image {\n opacity: 1;\n}\n.canvas-react-image-preview-leave .canvas-react-image-preview-image {\n opacity: 0;\n}\n.canvas-react-image-preview-close {\n position: fixed;\n top: 20px;\n right: 24px;\n width: 40px;\n height: 40px;\n padding: 0;\n border: 0;\n border-radius: 50%;\n color: #fff;\n background: rgba(255, 255, 255, 0.14);\n font: 30px/38px sans-serif;\n cursor: pointer;\n}\n.canvas-react-image-preview-toolbar {\n position: fixed;\n bottom: 28px;\n left: 50%;\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 6px 10px;\n color: #fff;\n background: rgba(0, 0, 0, 0.64);\n border-radius: 22px;\n box-shadow: 0 6px 24px rgba(0, 0, 0, 0.24);\n transform: translateX(-50%);\n opacity: 0;\n transition: opacity 0.2s ease;\n}\n.canvas-react-image-preview-entered .canvas-react-image-preview-toolbar {\n opacity: 1;\n}\n.canvas-react-image-preview-tool {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n border: 0;\n border-radius: 6px;\n color: inherit;\n background: transparent;\n font: 20px/1 sans-serif;\n cursor: pointer;\n}\n.canvas-react-image-preview-tool:hover:not(:disabled) {\n background: rgba(255, 255, 255, 0.16);\n}\n.canvas-react-image-preview-tool:disabled {\n color: rgba(255, 255, 255, 0.35);\n cursor: not-allowed;\n}\n.canvas-react-image-preview-scale {\n min-width: 48px;\n color: rgba(255, 255, 255, 0.88);\n font-size: 12px;\n text-align: center;\n}\n");
3770
3790
  function ReactImagePreview(props) {
3771
3791
  const { open, src, alt = "preview", onClose } = props;
3772
- const [scale, setScale] = react.useState(1);
3773
- const [rotation, setRotation] = react.useState(0);
3774
- const [flipX, setFlipX] = react.useState(false);
3775
- const [flipY, setFlipY] = react.useState(false);
3776
- const [motionState, setMotionState] = react.useState(
3792
+ const [scale, setScale] = React.useState(1);
3793
+ const [rotation, setRotation] = React.useState(0);
3794
+ const [flipX, setFlipX] = React.useState(false);
3795
+ const [flipY, setFlipY] = React.useState(false);
3796
+ const [motionState, setMotionState] = React.useState(
3777
3797
  "enter"
3778
3798
  );
3779
- const closeTimerRef = react.useRef(null);
3799
+ const closeTimerRef = React.useRef(null);
3780
3800
  const requestClose = () => {
3781
3801
  if (motionState === "leave") return;
3782
3802
  setMotionState("leave");
3783
3803
  closeTimerRef.current = window.setTimeout(onClose, 200);
3784
3804
  };
3785
- react.useEffect(() => {
3805
+ React.useEffect(() => {
3786
3806
  if (!open) return;
3787
3807
  setScale(1);
3788
3808
  setRotation(0);
@@ -3792,7 +3812,7 @@ function ReactImagePreview(props) {
3792
3812
  const frame = requestAnimationFrame(() => setMotionState("entered"));
3793
3813
  return () => cancelAnimationFrame(frame);
3794
3814
  }, [open, src]);
3795
- react.useEffect(() => {
3815
+ React.useEffect(() => {
3796
3816
  if (!open) return;
3797
3817
  const handleKeyDown = (event) => {
3798
3818
  if (event.key === "Escape") requestClose();
@@ -3800,7 +3820,7 @@ function ReactImagePreview(props) {
3800
3820
  window.addEventListener("keydown", handleKeyDown);
3801
3821
  return () => window.removeEventListener("keydown", handleKeyDown);
3802
3822
  }, [open, motionState]);
3803
- react.useEffect(
3823
+ React.useEffect(
3804
3824
  () => () => {
3805
3825
  if (closeTimerRef.current != null) {
3806
3826
  window.clearTimeout(closeTimerRef.current);
@@ -3929,7 +3949,7 @@ var MONTHS4 = Array.from(
3929
3949
  { length: 12 },
3930
3950
  (_, index) => String(index + 1).padStart(2, "0")
3931
3951
  );
3932
- var ReactMonthPicker = react.forwardRef(
3952
+ var ReactMonthPicker = React.forwardRef(
3933
3953
  function ReactMonthPicker2(props, ref) {
3934
3954
  const {
3935
3955
  autoFocus,
@@ -3947,36 +3967,36 @@ var ReactMonthPicker = react.forwardRef(
3947
3967
  value,
3948
3968
  ...restProps
3949
3969
  } = props;
3950
- const triggerRef = react.useRef(null);
3951
- const inputRef = react.useRef(null);
3952
- const popupRef = react.useRef(null);
3953
- const skipFocusOpenRef = react.useRef(false);
3954
- const [open, setOpen] = react.useState(false);
3955
- const [mode, setMode] = react.useState("month");
3956
- const parsedValue = react.useMemo(() => parseMonthValue(value), [value]);
3957
- const [panelYear, setPanelYear] = react.useState(
3970
+ const triggerRef = React.useRef(null);
3971
+ const inputRef = React.useRef(null);
3972
+ const popupRef = React.useRef(null);
3973
+ const skipFocusOpenRef = React.useRef(false);
3974
+ const [open, setOpen] = React.useState(false);
3975
+ const [mode, setMode] = React.useState("month");
3976
+ const parsedValue = React.useMemo(() => parseMonthValue(value), [value]);
3977
+ const [panelYear, setPanelYear] = React.useState(
3958
3978
  () => parsedValue?.year ?? (/* @__PURE__ */ new Date()).getFullYear()
3959
3979
  );
3960
- const yearPanelStart = react.useMemo(() => resolveDecadeStart4(panelYear), [panelYear]);
3961
- const decadePanelStart = react.useMemo(
3980
+ const yearPanelStart = React.useMemo(() => resolveDecadeStart4(panelYear), [panelYear]);
3981
+ const decadePanelStart = React.useMemo(
3962
3982
  () => Math.floor(yearPanelStart / 100) * 100,
3963
3983
  [yearPanelStart]
3964
3984
  );
3965
- const yearItems = react.useMemo(() => {
3985
+ const yearItems = React.useMemo(() => {
3966
3986
  return Array.from({ length: 12 }, (_, index) => yearPanelStart - 1 + index);
3967
3987
  }, [yearPanelStart]);
3968
- const decadeItems = react.useMemo(() => {
3988
+ const decadeItems = React.useMemo(() => {
3969
3989
  return Array.from({ length: 12 }, (_, index) => decadePanelStart - 10 + index * 10);
3970
3990
  }, [decadePanelStart]);
3971
3991
  const displayValue = parsedValue == null ? "" : `${parsedValue.year}-${parsedValue.month}`;
3972
3992
  const showClear = allowClear && !disabled && displayValue.length > 0;
3973
- react.useImperativeHandle(ref, () => inputRef.current);
3974
- react.useEffect(() => {
3993
+ React.useImperativeHandle(ref, () => inputRef.current);
3994
+ React.useEffect(() => {
3975
3995
  if (autoFocus) {
3976
3996
  inputRef.current?.focus();
3977
3997
  }
3978
3998
  }, [autoFocus]);
3979
- react.useEffect(() => {
3999
+ React.useEffect(() => {
3980
4000
  if (!open) {
3981
4001
  return;
3982
4002
  }
@@ -4321,7 +4341,7 @@ function resolveDecadeStart4(year) {
4321
4341
 
4322
4342
  // src/components/number-input/style.css
4323
4343
  styleInject('@import "../../styles/variables.css";\n.canvas-react-number-input-affix-wrapper {\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n width: 100%;\n min-width: 0;\n height: var(--canvas-react-control-height);\n border: 1px solid var(--canvas-react-color-border);\n border-radius: var(--canvas-react-radius-sm);\n background: var(--canvas-react-color-bg);\n color: var(--canvas-react-color-text);\n font-size: var(--canvas-react-font-size);\n outline: none;\n transition:\n border-color 0.2s ease,\n box-shadow 0.2s ease,\n background-color 0.2s ease;\n}\n.canvas-react-number-input-affix-wrapper:hover {\n border-color: var(--canvas-react-color-primary-hover);\n}\n.canvas-react-number-input-affix-wrapper:focus-within {\n border-color: var(--canvas-react-color-primary);\n box-shadow: var(--canvas-react-shadow-focus);\n}\n.canvas-react-number-input-affix-wrapper-disabled {\n background: #fafafa;\n color: #9ca3af;\n cursor: not-allowed;\n}\n.canvas-react-number-input {\n box-sizing: border-box;\n flex: 1 1 auto;\n width: 100%;\n min-width: 0;\n height: 100%;\n padding: var(--canvas-react-control-padding-block, 0px) var(--canvas-react-control-padding-inline, 11px);\n border: none;\n background: transparent;\n color: inherit;\n font-size: inherit;\n outline: none;\n appearance: textfield;\n -moz-appearance: textfield;\n}\n.canvas-react-number-input::placeholder {\n color: #9ca3af;\n}\n.canvas-react-number-input::-webkit-outer-spin-button,\n.canvas-react-number-input::-webkit-inner-spin-button {\n margin: 0;\n -webkit-appearance: none;\n}\n.canvas-react-number-input-suffix {\n display: inline-flex;\n align-items: center;\n padding-right: var(--canvas-react-control-padding-inline, 11px);\n}\n.canvas-react-number-input-clear {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 12px;\n height: 12px;\n padding: 0;\n border: none;\n background: transparent;\n color: #9ca3af;\n opacity: 0;\n pointer-events: none;\n cursor: pointer;\n transition:\n color 0.2s ease,\n opacity 0.2s ease,\n transform 0.18s ease;\n}\n.canvas-react-number-input-affix-wrapper:hover .canvas-react-number-input-clear,\n.canvas-react-number-input-affix-wrapper:focus-within .canvas-react-number-input-clear {\n opacity: 1;\n pointer-events: auto;\n}\n.canvas-react-number-input-clear:hover {\n color: #6b7280;\n transform: rotate(90deg);\n}\n.canvas-react-number-input-clear-icon,\n.canvas-react-number-input-clear-icon::before {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 8px;\n height: 1.25px;\n margin-top: -0.625px;\n margin-left: -4px;\n border-radius: 999px;\n background: currentColor;\n content: "";\n}\n.canvas-react-number-input-clear-icon {\n transform: rotate(45deg);\n}\n.canvas-react-number-input-clear-icon::before {\n transform: rotate(90deg);\n}\n');
4324
- var ReactNumberInput = react.forwardRef(
4344
+ var ReactNumberInput = React.forwardRef(
4325
4345
  function ReactNumberInput2(props, ref) {
4326
4346
  const {
4327
4347
  className,
@@ -4334,8 +4354,8 @@ var ReactNumberInput = react.forwardRef(
4334
4354
  value,
4335
4355
  ...restProps
4336
4356
  } = props;
4337
- const [inputValue, setInputValue] = react.useState(toDisplayValue(value));
4338
- react.useEffect(() => {
4357
+ const [inputValue, setInputValue] = React.useState(toDisplayValue(value));
4358
+ React.useEffect(() => {
4339
4359
  setInputValue(toDisplayValue(value));
4340
4360
  }, [value]);
4341
4361
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -4392,7 +4412,7 @@ function toDisplayValue(value) {
4392
4412
 
4393
4413
  // src/components/input-number/style.css
4394
4414
  styleInject('@import "../../styles/variables.css";\n.canvas-react-input-number {\n box-sizing: border-box;\n display: inline-flex;\n align-items: stretch;\n width: 100%;\n min-width: 0;\n height: var(--canvas-react-control-height);\n border: 1px solid var(--canvas-react-color-border);\n border-radius: var(--canvas-react-radius-sm);\n background: var(--canvas-react-color-bg);\n color: var(--canvas-react-color-text);\n font-size: var(--canvas-react-font-size);\n overflow: hidden;\n transition:\n border-color 0.2s ease,\n box-shadow 0.2s ease,\n background-color 0.2s ease;\n}\n.canvas-react-input-number:hover {\n border-color: var(--canvas-react-color-primary-hover);\n}\n.canvas-react-input-number-focused {\n border-color: var(--canvas-react-color-primary);\n box-shadow: var(--canvas-react-shadow-focus);\n}\n.canvas-react-input-number-disabled {\n background: #fafafa;\n color: #9ca3af;\n cursor: not-allowed;\n}\n.canvas-react-input-number-handler {\n position: relative;\n display: flex;\n flex: 0 0 28px;\n align-items: center;\n justify-content: center;\n margin: 0;\n padding: 0;\n border: none;\n background: transparent;\n color: var(--canvas-react-color-text-muted);\n cursor: pointer;\n transition: color 0.16s ease, background-color 0.16s ease;\n}\n.canvas-react-input-number-handler-down {\n border-right: 1px solid var(--canvas-react-color-border);\n}\n.canvas-react-input-number-handler-up {\n border-left: 1px solid var(--canvas-react-color-border);\n}\n.canvas-react-input-number-handler:hover:not(:disabled) {\n color: var(--canvas-react-color-primary);\n background: rgba(22, 119, 255, 0.06);\n}\n.canvas-react-input-number-handler:disabled {\n color: #c4c7cf;\n cursor: not-allowed;\n}\n.canvas-react-input-number-handler-icon {\n position: relative;\n display: block;\n width: 10px;\n height: 10px;\n}\n.canvas-react-input-number-handler-icon::before,\n.canvas-react-input-number-handler-icon::after {\n content: "";\n position: absolute;\n top: 50%;\n left: 50%;\n background: currentColor;\n border-radius: 1px;\n transform: translate(-50%, -50%);\n}\n.canvas-react-input-number-handler-icon::before {\n width: 10px;\n height: 1.5px;\n}\n.canvas-react-input-number-handler-up .canvas-react-input-number-handler-icon::after {\n width: 1.5px;\n height: 10px;\n}\n.canvas-react-input-number-input-wrap {\n display: flex;\n flex: 1 1 auto;\n align-items: center;\n min-width: 0;\n height: 100%;\n}\n.canvas-react-input-number-input {\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n height: 100%;\n padding: 0 8px;\n border: none;\n background: transparent;\n color: inherit;\n font-size: inherit;\n outline: none;\n text-align: center;\n appearance: textfield;\n -moz-appearance: textfield;\n}\n.canvas-react-input-number-input::placeholder {\n color: #9ca3af;\n}\n.canvas-react-input-number-input::-webkit-outer-spin-button,\n.canvas-react-input-number-input::-webkit-inner-spin-button {\n margin: 0;\n -webkit-appearance: none;\n}\n.canvas-react-input-number-addon {\n flex: 0 0 auto;\n padding-right: 8px;\n color: var(--canvas-react-color-text-muted);\n font-size: 12px;\n line-height: 1;\n user-select: none;\n}\n');
4395
- var ReactInputNumber = react.forwardRef(
4415
+ var ReactInputNumber = React.forwardRef(
4396
4416
  function ReactInputNumber2(props, ref) {
4397
4417
  const {
4398
4418
  addonAfter,
@@ -4415,11 +4435,11 @@ var ReactInputNumber = react.forwardRef(
4415
4435
  ...restProps
4416
4436
  } = props;
4417
4437
  const isControlled = value !== void 0;
4418
- const [innerValue, setInnerValue] = react.useState(
4438
+ const [innerValue, setInnerValue] = React.useState(
4419
4439
  isControlled ? value ?? null : defaultValue
4420
4440
  );
4421
4441
  const currentValue = isControlled ? value ?? null : innerValue;
4422
- const [draftText, setDraftText] = react.useState(
4442
+ const [draftText, setDraftText] = React.useState(
4423
4443
  formatDisplayValue(
4424
4444
  currentValue,
4425
4445
  formatter,
@@ -4427,12 +4447,12 @@ var ReactInputNumber = react.forwardRef(
4427
4447
  step
4428
4448
  )
4429
4449
  );
4430
- const [focused, setFocused] = react.useState(false);
4431
- const resolvedPrecision = react.useMemo(
4450
+ const [focused, setFocused] = React.useState(false);
4451
+ const resolvedPrecision = React.useMemo(
4432
4452
  () => resolvePrecision(precision, step),
4433
4453
  [precision, step]
4434
4454
  );
4435
- react.useEffect(() => {
4455
+ React.useEffect(() => {
4436
4456
  if (!focused) {
4437
4457
  setDraftText(
4438
4458
  formatDisplayValue(currentValue, formatter, resolvedPrecision, step)
@@ -4624,7 +4644,7 @@ function formatDisplayValue(value, formatter, precision, step) {
4624
4644
 
4625
4645
  // src/components/virtual-list/style.css
4626
4646
  styleInject('@import "../../styles/variables.css";\n.canvas-react-virtual-list {\n position: relative;\n overflow-y: auto;\n}\n.canvas-react-virtual-list-inner {\n position: relative;\n min-width: 100%;\n}\n.canvas-react-virtual-list-empty {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n padding: 0 11px;\n color: #9ca3af;\n font-size: var(--canvas-react-font-size);\n}\n');
4627
- var ReactVirtualList = react.forwardRef(function ReactVirtualListInner(props, ref) {
4647
+ var ReactVirtualList = React.forwardRef(function ReactVirtualListInner(props, ref) {
4628
4648
  const {
4629
4649
  className,
4630
4650
  empty,
@@ -4638,19 +4658,19 @@ var ReactVirtualList = react.forwardRef(function ReactVirtualListInner(props, re
4638
4658
  style,
4639
4659
  virtual = true
4640
4660
  } = props;
4641
- const hostRef = react.useRef(null);
4642
- const [scrollTop, setScrollTop] = react.useState(0);
4661
+ const hostRef = React.useRef(null);
4662
+ const [scrollTop, setScrollTop] = React.useState(0);
4643
4663
  const useVirtual = virtual && items.length * itemHeight > height;
4644
4664
  const startIndex = useVirtual ? Math.max(0, Math.floor(scrollTop / itemHeight) - overscan) : 0;
4645
4665
  const endIndex = useVirtual ? Math.min(
4646
4666
  items.length - 1,
4647
4667
  Math.ceil((scrollTop + height) / itemHeight) + overscan
4648
4668
  ) : items.length - 1;
4649
- const visibleItems = react.useMemo(
4669
+ const visibleItems = React.useMemo(
4650
4670
  () => items.slice(startIndex, endIndex + 1),
4651
4671
  [endIndex, items, startIndex]
4652
4672
  );
4653
- react.useImperativeHandle(ref, () => ({
4673
+ React.useImperativeHandle(ref, () => ({
4654
4674
  scrollToIndex: (index) => {
4655
4675
  const element = hostRef.current;
4656
4676
  if (!element || index < 0) {
@@ -4709,7 +4729,7 @@ var ReactVirtualList = react.forwardRef(function ReactVirtualListInner(props, re
4709
4729
 
4710
4730
  // src/components/select/style.css
4711
4731
  styleInject('@import "../../styles/variables.css";\n.canvas-react-select-wrap {\n position: relative;\n display: inline-flex;\n width: 100%;\n height: 100%;\n}\n.canvas-react-select {\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n width: 100%;\n min-width: 0;\n height: var(--canvas-react-control-height);\n padding: var(--canvas-react-control-padding-block, 0px) var(--canvas-react-control-padding-inline, 11px);\n border: 1px solid var(--canvas-react-color-border);\n border-radius: var(--canvas-react-radius-sm);\n background: var(--canvas-react-color-bg);\n color: var(--canvas-react-color-text);\n font-size: var(--canvas-react-font-size);\n outline: none;\n cursor: pointer;\n transition:\n border-color 0.2s ease,\n box-shadow 0.2s ease,\n background-color 0.2s ease;\n}\n.canvas-react-select-input-wrap {\n flex: 1 1 auto;\n width: 100%;\n height: 100%;\n border: none;\n background: transparent;\n box-shadow: none;\n}\n.canvas-react-select .canvas-react-input-affix-wrapper {\n height: 100%;\n min-height: 0;\n}\n.canvas-react-select-input-wrap:hover,\n.canvas-react-select-input-wrap:focus-within {\n border-color: transparent;\n box-shadow: none;\n}\n.canvas-react-select-input {\n width: 100%;\n min-width: 0;\n height: 100%;\n padding: 0;\n line-height: normal;\n}\n.canvas-react-select-input::placeholder {\n color: #9ca3af;\n}\n.canvas-react-select:hover {\n border-color: var(--canvas-react-color-primary-hover);\n}\n.canvas-react-select:focus {\n border-color: var(--canvas-react-color-primary);\n box-shadow: var(--canvas-react-shadow-focus);\n}\n.canvas-react-select-open {\n border-color: var(--canvas-react-color-primary);\n box-shadow: var(--canvas-react-shadow-focus);\n}\n.canvas-react-select-disabled {\n color: #9ca3af;\n background: #fafafa;\n cursor: not-allowed;\n}\n.canvas-react-select-actions {\n position: relative;\n display: inline-flex;\n flex: 0 0 auto;\n align-items: center;\n justify-content: center;\n width: 1em;\n min-width: 12px;\n height: 1em;\n min-height: 12px;\n margin-left: max(6px, calc(var(--canvas-react-control-padding-inline, 11px) * 0.5));\n}\n.canvas-react-select-arrow {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 0.5em;\n height: 0.5em;\n min-width: 6px;\n min-height: 6px;\n border-right: 1.5px solid var(--canvas-react-color-text-muted);\n border-bottom: 1.5px solid var(--canvas-react-color-text-muted);\n transform: translate(-50%, -58%) rotate(45deg);\n opacity: 1;\n transition:\n opacity 0.18s ease,\n transform 0.18s ease,\n border-color 0.18s ease;\n}\n.canvas-react-select:hover .canvas-react-select-arrow,\n.canvas-react-select-open .canvas-react-select-arrow {\n border-color: #6b7280;\n}\n.canvas-react-select-arrow-open {\n border-color: #6b7280;\n transform: translate(-50%, -42%) rotate(225deg);\n}\n.canvas-react-select-clear {\n position: absolute;\n top: 50%;\n left: 50%;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 12px;\n height: 12px;\n padding: 0;\n border: none;\n background: transparent;\n color: #9ca3af;\n opacity: 0;\n pointer-events: none;\n cursor: pointer;\n transform: translate(-50%, -50%) rotate(0deg);\n transition:\n color 0.2s ease,\n opacity 0.2s ease,\n transform 0.18s ease;\n}\n.canvas-react-select-clear:hover {\n color: #6b7280;\n transform: translate(-50%, -50%) rotate(90deg);\n}\n.canvas-react-select:hover .canvas-react-select-clear,\n.canvas-react-select-open .canvas-react-select-clear,\n.canvas-react-select:focus-within .canvas-react-select-clear {\n opacity: 1;\n pointer-events: auto;\n}\n.canvas-react-select:hover .canvas-react-select-actions-clearable .canvas-react-select-arrow,\n.canvas-react-select-open .canvas-react-select-actions-clearable .canvas-react-select-arrow,\n.canvas-react-select:focus-within .canvas-react-select-actions-clearable .canvas-react-select-arrow {\n opacity: 0;\n}\n.canvas-react-select-clear-icon,\n.canvas-react-select-clear-icon::before {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 8px;\n height: 1.25px;\n margin-top: -0.625px;\n margin-left: -4px;\n border-radius: 999px;\n background: currentColor;\n content: "";\n}\n.canvas-react-select-clear-icon {\n transform: rotate(45deg);\n}\n.canvas-react-select-clear-icon::before {\n transform: rotate(90deg);\n}\n.canvas-react-select-dropdown {\n padding: 4px;\n}\n.canvas-react-select-list {\n position: relative;\n overflow-y: auto;\n}\n.canvas-react-select-list-inner {\n position: relative;\n}\n.canvas-react-select-option {\n display: flex;\n align-items: center;\n box-sizing: border-box;\n width: 100%;\n padding: 0 11px;\n border-radius: var(--canvas-react-radius-sm);\n color: var(--canvas-react-color-text);\n font-size: var(--canvas-react-font-size);\n cursor: pointer;\n}\n.canvas-react-select-option:hover,\n.canvas-react-select-option-active {\n background: var(--canvas-react-color-bg-hover);\n}\n.canvas-react-select-option-selected {\n background: var(--canvas-react-color-bg-active);\n color: var(--canvas-react-color-primary);\n}\n.canvas-react-select-option-disabled {\n color: #9ca3af;\n cursor: not-allowed;\n}\n.canvas-react-select-empty {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n padding: 0 11px;\n color: #9ca3af;\n font-size: var(--canvas-react-font-size);\n}\n');
4712
- var ReactSelect = react.forwardRef(
4732
+ var ReactSelect = React.forwardRef(
4713
4733
  function ReactSelect2(props, ref) {
4714
4734
  const {
4715
4735
  autoFocus,
@@ -4732,18 +4752,18 @@ var ReactSelect = react.forwardRef(
4732
4752
  virtual = true,
4733
4753
  ...restProps
4734
4754
  } = props;
4735
- const triggerRef = react.useRef(null);
4736
- const inputRef = react.useRef(null);
4737
- const listRef = react.useRef(null);
4738
- const skipFocusOpenRef = react.useRef(false);
4739
- const [open, setOpen] = react.useState(false);
4740
- const selectedIndex = react.useMemo(
4755
+ const triggerRef = React.useRef(null);
4756
+ const inputRef = React.useRef(null);
4757
+ const listRef = React.useRef(null);
4758
+ const skipFocusOpenRef = React.useRef(false);
4759
+ const [open, setOpen] = React.useState(false);
4760
+ const selectedIndex = React.useMemo(
4741
4761
  () => options.findIndex((option) => String(option.value) === String(value ?? "")),
4742
4762
  [options, value]
4743
4763
  );
4744
4764
  const selectedOption = selectedIndex >= 0 ? options[selectedIndex] : void 0;
4745
- const [keyword, setKeyword] = react.useState(selectedOption?.label ?? "");
4746
- const filteredOptions = react.useMemo(() => {
4765
+ const [keyword, setKeyword] = React.useState(selectedOption?.label ?? "");
4766
+ const filteredOptions = React.useMemo(() => {
4747
4767
  if (!showSearch) {
4748
4768
  return options;
4749
4769
  }
@@ -4755,27 +4775,27 @@ var ReactSelect = react.forwardRef(
4755
4775
  return option.label.toLowerCase().includes(search) || String(option.value).toLowerCase().includes(search);
4756
4776
  });
4757
4777
  }, [keyword, options]);
4758
- const [activeIndex, setActiveIndex] = react.useState(() => {
4778
+ const [activeIndex, setActiveIndex] = React.useState(() => {
4759
4779
  return selectedIndex >= 0 ? selectedIndex : 0;
4760
4780
  });
4761
- react.useImperativeHandle(ref, () => inputRef.current);
4762
- react.useEffect(() => {
4781
+ React.useImperativeHandle(ref, () => inputRef.current);
4782
+ React.useEffect(() => {
4763
4783
  if (autoFocus) {
4764
4784
  inputRef.current?.focus();
4765
4785
  }
4766
4786
  }, [autoFocus]);
4767
- react.useEffect(() => {
4787
+ React.useEffect(() => {
4768
4788
  if (!open) {
4769
4789
  setKeyword(selectedOption?.label ?? "");
4770
4790
  }
4771
4791
  }, [open, selectedOption]);
4772
- react.useEffect(() => {
4792
+ React.useEffect(() => {
4773
4793
  const nextIndex = filteredOptions.findIndex(
4774
4794
  (option) => String(option.value) === String(value ?? "")
4775
4795
  );
4776
4796
  setActiveIndex(nextIndex >= 0 ? nextIndex : 0);
4777
4797
  }, [filteredOptions, value]);
4778
- react.useEffect(() => {
4798
+ React.useEffect(() => {
4779
4799
  if (!open) {
4780
4800
  return;
4781
4801
  }
@@ -5041,14 +5061,14 @@ function ReactPagination(props) {
5041
5061
  simple,
5042
5062
  total
5043
5063
  } = props;
5044
- const [quickValue, setQuickValue] = react.useState("");
5064
+ const [quickValue, setQuickValue] = React.useState("");
5045
5065
  const totalPages = Math.max(1, Math.ceil(total / pageSize));
5046
5066
  const safeCurrent = clampPage(current, totalPages);
5047
5067
  const range = total === 0 ? [0, 0] : [
5048
5068
  (safeCurrent - 1) * pageSize + 1,
5049
5069
  Math.min(safeCurrent * pageSize, total)
5050
5070
  ];
5051
- const pages = react.useMemo(
5071
+ const pages = React.useMemo(
5052
5072
  () => buildPageItems(safeCurrent, totalPages, showLessItems),
5053
5073
  [safeCurrent, totalPages, showLessItems]
5054
5074
  );
@@ -5195,6 +5215,16 @@ function clampPage(page, totalPages) {
5195
5215
  }
5196
5216
  return Math.min(Math.max(1, Math.trunc(page)), totalPages);
5197
5217
  }
5218
+ var compatibleIdSeed = 0;
5219
+ function useCompatibleId(prefix = "canvas-react-id") {
5220
+ const nativeUseId = React__namespace.useId;
5221
+ const fallbackIdRef = React__namespace.useRef();
5222
+ if (!fallbackIdRef.current) {
5223
+ compatibleIdSeed += 1;
5224
+ fallbackIdRef.current = `${prefix}-${compatibleIdSeed}`;
5225
+ }
5226
+ return nativeUseId ? nativeUseId() : fallbackIdRef.current;
5227
+ }
5198
5228
 
5199
5229
  // src/components/popconfirm/style.css
5200
5230
  styleInject('@import "../../styles/variables.css";\n.canvas-react-popconfirm-trigger {\n display: inline-flex;\n max-width: 100%;\n}\n.canvas-react-popconfirm-trigger-disabled {\n cursor: not-allowed;\n}\n.canvas-react-popconfirm-popup {\n overflow: visible;\n}\n.canvas-react-popconfirm {\n position: relative;\n box-sizing: border-box;\n width: max-content;\n min-width: 180px;\n max-width: 320px;\n padding: 12px;\n color: var(--canvas-react-color-text);\n font-size: var(--canvas-react-font-size);\n line-height: 1.5;\n}\n.canvas-react-popconfirm-arrow {\n position: absolute;\n z-index: 1;\n box-sizing: border-box;\n width: 10px;\n height: 10px;\n border: 0;\n background: var(--canvas-react-color-bg, #ffffff);\n pointer-events: none;\n transform: rotate(45deg);\n}\n.canvas-react-popup[data-placement^=bottom] .canvas-react-popconfirm-arrow {\n top: -5px;\n border-top: 1px solid var(--canvas-react-color-border, #d9d9d9);\n border-left: 1px solid var(--canvas-react-color-border, #d9d9d9);\n}\n.canvas-react-popup[data-placement^=top] .canvas-react-popconfirm-arrow {\n bottom: -5px;\n border-right: 1px solid var(--canvas-react-color-border, #d9d9d9);\n border-bottom: 1px solid var(--canvas-react-color-border, #d9d9d9);\n}\n.canvas-react-popup[data-placement$=Left] .canvas-react-popconfirm-arrow {\n left: 24px;\n}\n.canvas-react-popup[data-placement$=Right] .canvas-react-popconfirm-arrow {\n right: 24px;\n}\n.canvas-react-popup[data-placement^=left] .canvas-react-popconfirm-arrow {\n right: -5px;\n border-top: 1px solid var(--canvas-react-color-border, #d9d9d9);\n border-right: 1px solid var(--canvas-react-color-border, #d9d9d9);\n}\n.canvas-react-popup[data-placement^=right] .canvas-react-popconfirm-arrow {\n left: -5px;\n border-bottom: 1px solid var(--canvas-react-color-border, #d9d9d9);\n border-left: 1px solid var(--canvas-react-color-border, #d9d9d9);\n}\n.canvas-react-popup[data-placement$=Top] .canvas-react-popconfirm-arrow {\n top: 18px;\n}\n.canvas-react-popup[data-placement$=Bottom] .canvas-react-popconfirm-arrow {\n bottom: 18px;\n}\n.canvas-react-popconfirm-message {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n.canvas-react-popconfirm-icon {\n display: inline-flex;\n flex: 0 0 auto;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n margin-top: 2px;\n color: #faad14;\n font-size: 12px;\n line-height: 1;\n}\n.canvas-react-popconfirm-default-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 14px;\n height: 14px;\n border-radius: 50%;\n background: #faad14;\n color: #ffffff;\n font-size: 11px;\n font-weight: 700;\n line-height: 1;\n}\n.canvas-react-popconfirm-text {\n min-width: 0;\n}\n.canvas-react-popconfirm-title {\n color: var(--canvas-react-color-text);\n font-weight: 500;\n word-break: break-word;\n}\n.canvas-react-popconfirm-description {\n margin-top: 4px;\n color: var(--canvas-react-color-text-muted);\n word-break: break-word;\n}\n.canvas-react-popconfirm-actions {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 8px;\n margin-top: 12px;\n}\n.canvas-react-popconfirm-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n height: 26px;\n min-width: 48px;\n padding: 0 10px;\n border: 1px solid var(--canvas-react-color-border);\n border-radius: var(--canvas-react-radius-sm);\n background: var(--canvas-react-color-bg);\n color: var(--canvas-react-color-text);\n font-size: 12px;\n line-height: 1;\n white-space: nowrap;\n cursor: pointer;\n transition:\n border-color 0.18s ease,\n background-color 0.18s ease,\n color 0.18s ease,\n opacity 0.18s ease;\n}\n.canvas-react-popconfirm-button:hover {\n border-color: var(--canvas-react-color-primary-hover);\n color: var(--canvas-react-color-primary-hover);\n}\n.canvas-react-popconfirm-button-primary {\n border-color: var(--canvas-react-color-primary);\n background: var(--canvas-react-color-primary);\n color: #ffffff;\n}\n.canvas-react-popconfirm-button-primary:hover {\n border-color: var(--canvas-react-color-primary-hover);\n background: var(--canvas-react-color-primary-hover);\n color: #ffffff;\n}\n.canvas-react-popconfirm-button:disabled {\n opacity: 0.56;\n cursor: not-allowed;\n}\n.canvas-react-popconfirm-button:disabled:hover {\n border-color: var(--canvas-react-color-border);\n color: var(--canvas-react-color-text);\n}\n.canvas-react-popconfirm-button-primary:disabled:hover {\n border-color: var(--canvas-react-color-primary);\n background: var(--canvas-react-color-primary);\n color: #ffffff;\n}\n.canvas-react-popconfirm-loading {\n width: 12px;\n height: 12px;\n border: 2px solid rgba(255, 255, 255, 0.45);\n border-top-color: #ffffff;\n border-radius: 50%;\n animation: canvas-react-popconfirm-loading 0.8s linear infinite;\n}\n@keyframes canvas-react-popconfirm-loading {\n to {\n transform: rotate(360deg);\n }\n}\n');
@@ -5224,11 +5254,11 @@ function ReactPopconfirm(props) {
5224
5254
  title,
5225
5255
  zIndex
5226
5256
  } = props;
5227
- const triggerRef = react.useRef(null);
5228
- const [innerOpen, setInnerOpen] = react.useState(defaultOpen);
5229
- const [innerConfirmLoading, setInnerConfirmLoading] = react.useState(false);
5230
- const titleId = react.useId();
5231
- const descriptionId = react.useId();
5257
+ const triggerRef = React.useRef(null);
5258
+ const [innerOpen, setInnerOpen] = React.useState(defaultOpen);
5259
+ const [innerConfirmLoading, setInnerConfirmLoading] = React.useState(false);
5260
+ const titleId = useCompatibleId("canvas-react-popconfirm-title");
5261
+ const descriptionId = useCompatibleId("canvas-react-popconfirm-description");
5232
5262
  const controlled = open !== void 0;
5233
5263
  const mergedOpen = controlled ? Boolean(open) : innerOpen;
5234
5264
  const popupOpen = mergedOpen && !disabled;
@@ -5245,7 +5275,7 @@ function ReactPopconfirm(props) {
5245
5275
  disabled: cancelButtonDisabled,
5246
5276
  ...restCancelButtonProps
5247
5277
  } = cancelButtonProps ?? {};
5248
- react.useEffect(() => {
5278
+ React.useEffect(() => {
5249
5279
  if (!disabled || !mergedOpen) {
5250
5280
  return;
5251
5281
  }
@@ -5423,7 +5453,7 @@ function isPromiseLike(value) {
5423
5453
  // src/components/quarter/style.css
5424
5454
  styleInject('@import "../year/style.css";\n.canvas-react-quarter-grid {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: 12px 8px;\n}\n.canvas-react-quarter-cell {\n height: 56px;\n font-size: 16px;\n font-weight: 600;\n}\n');
5425
5455
  var QUARTERS = ["Q1", "Q2", "Q3", "Q4"];
5426
- var ReactQuarterPicker = react.forwardRef(
5456
+ var ReactQuarterPicker = React.forwardRef(
5427
5457
  function ReactQuarterPicker2(props, ref) {
5428
5458
  const {
5429
5459
  autoFocus,
@@ -5441,35 +5471,35 @@ var ReactQuarterPicker = react.forwardRef(
5441
5471
  value,
5442
5472
  ...restProps
5443
5473
  } = props;
5444
- const triggerRef = react.useRef(null);
5445
- const inputRef = react.useRef(null);
5446
- const popupRef = react.useRef(null);
5447
- const skipFocusOpenRef = react.useRef(false);
5448
- const [open, setOpen] = react.useState(false);
5449
- const [mode, setMode] = react.useState("quarter");
5450
- const parsedValue = react.useMemo(() => parseQuarterValue(value), [value]);
5451
- const [panelYear, setPanelYear] = react.useState(
5474
+ const triggerRef = React.useRef(null);
5475
+ const inputRef = React.useRef(null);
5476
+ const popupRef = React.useRef(null);
5477
+ const skipFocusOpenRef = React.useRef(false);
5478
+ const [open, setOpen] = React.useState(false);
5479
+ const [mode, setMode] = React.useState("quarter");
5480
+ const parsedValue = React.useMemo(() => parseQuarterValue(value), [value]);
5481
+ const [panelYear, setPanelYear] = React.useState(
5452
5482
  () => parsedValue?.year ?? (/* @__PURE__ */ new Date()).getFullYear()
5453
5483
  );
5454
- const yearPanelStart = react.useMemo(() => resolveDecadeStart5(panelYear), [panelYear]);
5455
- const decadePanelStart = react.useMemo(() => {
5484
+ const yearPanelStart = React.useMemo(() => resolveDecadeStart5(panelYear), [panelYear]);
5485
+ const decadePanelStart = React.useMemo(() => {
5456
5486
  return Math.floor(yearPanelStart / 100) * 100;
5457
5487
  }, [yearPanelStart]);
5458
- const yearItems = react.useMemo(() => {
5488
+ const yearItems = React.useMemo(() => {
5459
5489
  return Array.from({ length: 12 }, (_, index) => yearPanelStart - 1 + index);
5460
5490
  }, [yearPanelStart]);
5461
- const decadeItems = react.useMemo(() => {
5491
+ const decadeItems = React.useMemo(() => {
5462
5492
  return Array.from({ length: 12 }, (_, index) => decadePanelStart - 10 + index * 10);
5463
5493
  }, [decadePanelStart]);
5464
5494
  const displayValue = parsedValue == null ? "" : `${parsedValue.year}-${parsedValue.quarter}`;
5465
5495
  const showClear = allowClear && !disabled && displayValue.length > 0;
5466
- react.useImperativeHandle(ref, () => inputRef.current);
5467
- react.useEffect(() => {
5496
+ React.useImperativeHandle(ref, () => inputRef.current);
5497
+ React.useEffect(() => {
5468
5498
  if (autoFocus) {
5469
5499
  inputRef.current?.focus();
5470
5500
  }
5471
5501
  }, [autoFocus]);
5472
- react.useEffect(() => {
5502
+ React.useEffect(() => {
5473
5503
  if (!open) {
5474
5504
  return;
5475
5505
  }
@@ -5804,7 +5834,7 @@ function parseQuarterValue(value) {
5804
5834
  function resolveDecadeStart5(year) {
5805
5835
  return Math.floor(year / 10) * 10;
5806
5836
  }
5807
- var ReactTimePicker = react.forwardRef(
5837
+ var ReactTimePicker = React.forwardRef(
5808
5838
  function ReactTimePicker2(props, ref) {
5809
5839
  const {
5810
5840
  autoFocus,
@@ -5822,22 +5852,22 @@ var ReactTimePicker = react.forwardRef(
5822
5852
  value,
5823
5853
  ...restProps
5824
5854
  } = props;
5825
- const triggerRef = react.useRef(null);
5826
- const inputRef = react.useRef(null);
5827
- const popupRef = react.useRef(null);
5828
- const skipFocusOpenRef = react.useRef(false);
5829
- const [open, setOpen] = react.useState(false);
5830
- const [draftValue, setDraftValue] = react.useState(value ?? "");
5831
- const parsedValue = react.useMemo(() => parseTimeValue(value), [value]);
5855
+ const triggerRef = React.useRef(null);
5856
+ const inputRef = React.useRef(null);
5857
+ const popupRef = React.useRef(null);
5858
+ const skipFocusOpenRef = React.useRef(false);
5859
+ const [open, setOpen] = React.useState(false);
5860
+ const [draftValue, setDraftValue] = React.useState(value ?? "");
5861
+ const parsedValue = React.useMemo(() => parseTimeValue(value), [value]);
5832
5862
  const displayValue = parsedValue ? formatTimeValue(parsedValue) : value ?? "";
5833
5863
  const showClear = allowClear && !disabled && typeof value === "string" && value.trim().length > 0;
5834
- react.useImperativeHandle(ref, () => inputRef.current);
5835
- react.useEffect(() => {
5864
+ React.useImperativeHandle(ref, () => inputRef.current);
5865
+ React.useEffect(() => {
5836
5866
  if (autoFocus) {
5837
5867
  inputRef.current?.focus();
5838
5868
  }
5839
5869
  }, [autoFocus]);
5840
- react.useEffect(() => {
5870
+ React.useEffect(() => {
5841
5871
  setDraftValue(value ?? "");
5842
5872
  }, [value]);
5843
5873
  return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: `${REACT_COMPONENT_PREFIX}-time-wrap`, children: [
@@ -6042,7 +6072,7 @@ function handleInputBlur4(params) {
6042
6072
  setOpen(false);
6043
6073
  onBlur?.(event);
6044
6074
  }
6045
- var ReactTimeRangePicker = react.forwardRef(function ReactTimeRangePicker2(props, ref) {
6075
+ var ReactTimeRangePicker = React.forwardRef(function ReactTimeRangePicker2(props, ref) {
6046
6076
  const {
6047
6077
  autoFocus,
6048
6078
  className,
@@ -6059,23 +6089,23 @@ var ReactTimeRangePicker = react.forwardRef(function ReactTimeRangePicker2(props
6059
6089
  showArrow = true,
6060
6090
  ...restProps
6061
6091
  } = props;
6062
- const triggerRef = react.useRef(null);
6063
- const startInputRef = react.useRef(null);
6064
- const endInputRef = react.useRef(null);
6065
- const popupRef = react.useRef(null);
6066
- const [open, setOpen] = react.useState(false);
6067
- const [activePart, setActivePart] = react.useState("start");
6068
- const skipFocusOpenRef = react.useRef(false);
6069
- const [draftRange, setDraftRange] = react.useState(
6092
+ const triggerRef = React.useRef(null);
6093
+ const startInputRef = React.useRef(null);
6094
+ const endInputRef = React.useRef(null);
6095
+ const popupRef = React.useRef(null);
6096
+ const [open, setOpen] = React.useState(false);
6097
+ const [activePart, setActivePart] = React.useState("start");
6098
+ const skipFocusOpenRef = React.useRef(false);
6099
+ const [draftRange, setDraftRange] = React.useState(
6070
6100
  () => parseTimeRangeValue(value)
6071
6101
  );
6072
- react.useImperativeHandle(ref, () => startInputRef.current);
6073
- react.useEffect(() => {
6102
+ React.useImperativeHandle(ref, () => startInputRef.current);
6103
+ React.useEffect(() => {
6074
6104
  if (autoFocus) {
6075
6105
  startInputRef.current?.focus();
6076
6106
  }
6077
6107
  }, [autoFocus]);
6078
- react.useEffect(() => {
6108
+ React.useEffect(() => {
6079
6109
  setDraftRange(parseTimeRangeValue(value));
6080
6110
  }, [rangeSeparator, value]);
6081
6111
  return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: `${REACT_COMPONENT_PREFIX}-time-wrap`, children: [
@@ -6362,7 +6392,7 @@ function compareTimeValue(left, right) {
6362
6392
  const rightSeconds = Number(rightValue.hour) * 3600 + Number(rightValue.minute) * 60 + Number(rightValue.second);
6363
6393
  return leftSeconds - rightSeconds;
6364
6394
  }
6365
- var ReactYearPicker = react.forwardRef(
6395
+ var ReactYearPicker = React.forwardRef(
6366
6396
  function ReactYearPicker2(props, ref) {
6367
6397
  const {
6368
6398
  autoFocus,
@@ -6380,34 +6410,34 @@ var ReactYearPicker = react.forwardRef(
6380
6410
  value,
6381
6411
  ...restProps
6382
6412
  } = props;
6383
- const triggerRef = react.useRef(null);
6384
- const inputRef = react.useRef(null);
6385
- const popupRef = react.useRef(null);
6386
- const skipFocusOpenRef = react.useRef(false);
6387
- const [open, setOpen] = react.useState(false);
6388
- const [mode, setMode] = react.useState("year");
6389
- const selectedYear = react.useMemo(() => parseYearValue(value), [value]);
6390
- const [panelStartYear, setPanelStartYear] = react.useState(
6413
+ const triggerRef = React.useRef(null);
6414
+ const inputRef = React.useRef(null);
6415
+ const popupRef = React.useRef(null);
6416
+ const skipFocusOpenRef = React.useRef(false);
6417
+ const [open, setOpen] = React.useState(false);
6418
+ const [mode, setMode] = React.useState("year");
6419
+ const selectedYear = React.useMemo(() => parseYearValue(value), [value]);
6420
+ const [panelStartYear, setPanelStartYear] = React.useState(
6391
6421
  () => resolveDecadeStart6(selectedYear ?? (/* @__PURE__ */ new Date()).getFullYear())
6392
6422
  );
6393
6423
  const displayValue = selectedYear == null ? "" : String(selectedYear);
6394
6424
  const showClear = allowClear && !disabled && displayValue.length > 0;
6395
- const yearItems = react.useMemo(() => {
6425
+ const yearItems = React.useMemo(() => {
6396
6426
  return Array.from({ length: 12 }, (_, index) => panelStartYear - 1 + index);
6397
6427
  }, [panelStartYear]);
6398
- const decadePanelStart = react.useMemo(() => {
6428
+ const decadePanelStart = React.useMemo(() => {
6399
6429
  return Math.floor(panelStartYear / 100) * 100;
6400
6430
  }, [panelStartYear]);
6401
- const decadeItems = react.useMemo(() => {
6431
+ const decadeItems = React.useMemo(() => {
6402
6432
  return Array.from({ length: 12 }, (_, index) => decadePanelStart - 10 + index * 10);
6403
6433
  }, [decadePanelStart]);
6404
- react.useImperativeHandle(ref, () => inputRef.current);
6405
- react.useEffect(() => {
6434
+ React.useImperativeHandle(ref, () => inputRef.current);
6435
+ React.useEffect(() => {
6406
6436
  if (autoFocus) {
6407
6437
  inputRef.current?.focus();
6408
6438
  }
6409
6439
  }, [autoFocus]);
6410
- react.useEffect(() => {
6440
+ React.useEffect(() => {
6411
6441
  if (!open) {
6412
6442
  return;
6413
6443
  }