@bestow-ui/react 1.3.0 → 1.5.0

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/client.js CHANGED
@@ -18,11 +18,12 @@ import {
18
18
  mergeThemes,
19
19
  parseISODate,
20
20
  phoneNumberMaxDigits,
21
+ presetRange,
21
22
  themeClass,
22
23
  themeToStyle,
23
24
  toISODate,
24
25
  visuallyHidden
25
- } from "./chunk-VH7JW6N7.js";
26
+ } from "./chunk-VQ45DNC3.js";
26
27
 
27
28
  // src/theme/ThemeProvider.tsx
28
29
  import { createContext, forwardRef, useContext, useMemo } from "react";
@@ -863,7 +864,7 @@ var AmountInput = /* @__PURE__ */ forwardRef11(
863
864
  return digits;
864
865
  };
865
866
  const toRaw = (amount) => amount === null || amount === void 0 ? "" : String(Math.floor(Math.abs(amount)));
866
- const field3 = useFormattedInput({
867
+ const field4 = useFormattedInput({
867
868
  isControlled: "value" in props,
868
869
  value: toRaw(value3),
869
870
  defaultValue: toRaw(defaultValue),
@@ -873,7 +874,7 @@ var AmountInput = /* @__PURE__ */ forwardRef11(
873
874
  isMeaningful: isDigit,
874
875
  inputRef
875
876
  });
876
- const reading = showKoreanAmount && field3.raw !== "" ? formatKoreanAmount(Number(field3.raw), unit2) : null;
877
+ const reading = showKoreanAmount && field4.raw !== "" ? formatKoreanAmount(Number(field4.raw), unit2) : null;
877
878
  return /* @__PURE__ */ jsx13(
878
879
  TextField,
879
880
  {
@@ -881,10 +882,10 @@ var AmountInput = /* @__PURE__ */ forwardRef11(
881
882
  label: label6,
882
883
  placeholder,
883
884
  inputMode: "numeric",
884
- value: field3.display,
885
- onChange: field3.onChange,
885
+ value: field4.display,
886
+ onChange: field4.onChange,
886
887
  onKeyDown: (event) => {
887
- field3.onKeyDown(event);
888
+ field4.onKeyDown(event);
888
889
  onKeyDown?.(event);
889
890
  },
890
891
  endAdornment: unit2,
@@ -995,10 +996,10 @@ var separator = "_18t8ztt4";
995
996
 
996
997
  // src/components/Breadcrumb/Breadcrumb.tsx
997
998
  import { jsx as jsx16, jsxs as jsxs14 } from "react/jsx-runtime";
998
- var Breadcrumb = /* @__PURE__ */ forwardRef14(function Breadcrumb2({ items: items2, linkAs, separator: separator3, "aria-label": ariaLabelProp, className, ...rest }, ref) {
999
+ var Breadcrumb = /* @__PURE__ */ forwardRef14(function Breadcrumb2({ items: items2, linkAs, separator: separator4, "aria-label": ariaLabelProp, className, ...rest }, ref) {
999
1000
  const m = useMessages();
1000
1001
  const ariaLabel = ariaLabelProp ?? m.breadcrumb ?? "\uC774\uB3D9 \uACBD\uB85C";
1001
- const sep = separator3 ?? /* @__PURE__ */ jsx16(ChevronRightIcon, { size: 14 });
1002
+ const sep = separator4 ?? /* @__PURE__ */ jsx16(ChevronRightIcon, { size: 14 });
1002
1003
  return /* @__PURE__ */ jsx16("nav", { ref, "aria-label": ariaLabel, className, ...rest, children: /* @__PURE__ */ jsx16("ol", { className: list2, children: items2.map((item9, index) => {
1003
1004
  const isCurrent = index === items2.length - 1;
1004
1005
  return /* @__PURE__ */ jsxs14("li", { className: item3, children: [
@@ -1035,7 +1036,7 @@ var BusinessNumberInput = /* @__PURE__ */ forwardRef15(
1035
1036
  const label6 = labelProp ?? m.businessNumber ?? "\uC0AC\uC5C5\uC790\uB4F1\uB85D\uBC88\uD638";
1036
1037
  const incompleteText = m.businessNumberIncomplete ?? "10\uC790\uB9AC\uB97C \uBAA8\uB450 \uC785\uB825\uD574 \uC8FC\uC138\uC694.";
1037
1038
  const [touched, setTouched] = useState4(false);
1038
- const field3 = useFormattedInput({
1039
+ const field4 = useFormattedInput({
1039
1040
  isControlled: "value" in props,
1040
1041
  value: value3,
1041
1042
  defaultValue,
@@ -1045,8 +1046,8 @@ var BusinessNumberInput = /* @__PURE__ */ forwardRef15(
1045
1046
  isMeaningful: isDigit2,
1046
1047
  inputRef
1047
1048
  });
1048
- const complete = field3.raw.length === 10;
1049
- const autoInvalid = validate && field3.raw.length > 0 && (complete ? !isValidBusinessNumber(field3.raw) : touched);
1049
+ const complete = field4.raw.length === 10;
1050
+ const autoInvalid = validate && field4.raw.length > 0 && (complete ? !isValidBusinessNumber(field4.raw) : touched);
1050
1051
  const showAuto = autoInvalid && error === void 0;
1051
1052
  return /* @__PURE__ */ jsx17(
1052
1053
  TextField,
@@ -1055,10 +1056,10 @@ var BusinessNumberInput = /* @__PURE__ */ forwardRef15(
1055
1056
  label: label6,
1056
1057
  placeholder,
1057
1058
  inputMode: "numeric",
1058
- value: field3.display,
1059
- onChange: field3.onChange,
1059
+ value: field4.display,
1060
+ onChange: field4.onChange,
1060
1061
  onKeyDown: (event) => {
1061
- field3.onKeyDown(event);
1062
+ field4.onKeyDown(event);
1062
1063
  onKeyDown?.(event);
1063
1064
  },
1064
1065
  onBlur: (event) => {
@@ -1300,6 +1301,7 @@ var toggle2 = "c2pbq71 c2pbq70";
1300
1301
 
1301
1302
  // src/components/Combobox/Combobox.tsx
1302
1303
  import { jsx as jsx20, jsxs as jsxs16 } from "react/jsx-runtime";
1304
+ var NO_RESULTS_ANNOUNCE_DELAY = 800;
1303
1305
  var defaultFilter = (option2, query) => option2.label.toLowerCase().includes(query.trim().toLowerCase());
1304
1306
  var Combobox = /* @__PURE__ */ forwardRef18(function Combobox2(props, ref) {
1305
1307
  const {
@@ -1425,6 +1427,14 @@ var Combobox = /* @__PURE__ */ forwardRef18(function Combobox2(props, ref) {
1425
1427
  document.getElementById(optionId(activeIndex))?.scrollIntoView?.({ block: "nearest" });
1426
1428
  }, [open, activeIndex]);
1427
1429
  const hasOptions = filtered.length > 0;
1430
+ const noResults = open && !disabled && !hasOptions;
1431
+ const [announcedFor, setAnnouncedFor] = useState6(void 0);
1432
+ useEffect5(() => {
1433
+ if (!noResults) return;
1434
+ const timer2 = setTimeout(() => setAnnouncedFor(query), NO_RESULTS_ANNOUNCE_DELAY);
1435
+ return () => clearTimeout(timer2);
1436
+ }, [noResults, query]);
1437
+ const announceNoResults = noResults && announcedFor === query;
1428
1438
  return /* @__PURE__ */ jsxs16("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
1429
1439
  label6 && /* @__PURE__ */ jsxs16("label", { id: labelId, htmlFor: inputId, className: label, children: [
1430
1440
  label6,
@@ -1554,10 +1564,14 @@ var Combobox = /* @__PURE__ */ forwardRef18(function Combobox2(props, ref) {
1554
1564
  );
1555
1565
  })
1556
1566
  }
1557
- ) : /* @__PURE__ */ jsx20("div", { className: empty, role: "status", children: emptyMessage })
1567
+ ) : (
1568
+ // 스크린리더 알림은 아래의 항상 있는 status 영역이 맡는다 (여기는 화면 표시만)
1569
+ /* @__PURE__ */ jsx20("div", { className: empty, children: emptyMessage })
1570
+ )
1558
1571
  }
1559
1572
  ) })
1560
1573
  ] }),
1574
+ /* @__PURE__ */ jsx20("span", { role: "status", className: visuallyHidden, children: announceNoResults ? emptyMessage : "" }),
1561
1575
  name && /* @__PURE__ */ jsx20("input", { type: "hidden", name, value: selectedValue ?? "" }),
1562
1576
  helperText3 && /* @__PURE__ */ jsx20("p", { id: helperId, className: helperText({ error }), children: helperText3 })
1563
1577
  ] });
@@ -1680,7 +1694,7 @@ var DatePicker = /* @__PURE__ */ forwardRef19(
1680
1694
  lastEmitted.current = iso;
1681
1695
  onValueChange?.(iso);
1682
1696
  };
1683
- const field3 = useFormattedInput({
1697
+ const field4 = useFormattedInput({
1684
1698
  isControlled: false,
1685
1699
  value: void 0,
1686
1700
  defaultValue: (isControlled ? value3 : defaultValue)?.replace(/\D/g, ""),
@@ -1693,8 +1707,8 @@ var DatePicker = /* @__PURE__ */ forwardRef19(
1693
1707
  isMeaningful: isDigit3,
1694
1708
  inputRef
1695
1709
  });
1696
- const textIso = toIso(field3.raw);
1697
- const { setRaw } = field3;
1710
+ const textIso = toIso(field4.raw);
1711
+ const { setRaw } = field4;
1698
1712
  useEffect6(() => {
1699
1713
  if (!isControlled) return;
1700
1714
  const next = value3 ?? "";
@@ -1706,8 +1720,8 @@ var DatePicker = /* @__PURE__ */ forwardRef19(
1706
1720
  setRaw(next.replace(/\D/g, ""));
1707
1721
  }, [value3]);
1708
1722
  const date = parseISODate(textIso);
1709
- const complete = field3.raw.length === 8;
1710
- const autoError = complete ? !date ? invalidText : isUnavailable(date) ? unavailableText : null : touched && field3.raw.length > 0 ? incompleteText : null;
1723
+ const complete = field4.raw.length === 8;
1724
+ const autoError = complete ? !date ? invalidText : isUnavailable(date) ? unavailableText : null : touched && field4.raw.length > 0 ? incompleteText : null;
1711
1725
  const showAuto = autoError !== null && error === void 0;
1712
1726
  const selectedIso = date && !isUnavailable(date) ? textIso : "";
1713
1727
  return /* @__PURE__ */ jsxs18(Fragment4, { children: [
@@ -1720,9 +1734,9 @@ var DatePicker = /* @__PURE__ */ forwardRef19(
1720
1734
  placeholder,
1721
1735
  inputMode: "numeric",
1722
1736
  autoComplete: "off",
1723
- value: field3.display,
1724
- onChange: field3.onChange,
1725
- onKeyDown: field3.onKeyDown,
1737
+ value: field4.display,
1738
+ onChange: field4.onChange,
1739
+ onKeyDown: field4.onKeyDown,
1726
1740
  onBlur: () => setTouched(true),
1727
1741
  error: error ?? autoError !== null,
1728
1742
  helperText: showAuto ? autoError : helperText3,
@@ -1766,6 +1780,129 @@ var DatePicker = /* @__PURE__ */ forwardRef19(
1766
1780
  }
1767
1781
  );
1768
1782
 
1783
+ // src/components/DateRangePicker/DateRangePicker.tsx
1784
+ import { forwardRef as forwardRef20, useId as useId7, useState as useState8 } from "react";
1785
+
1786
+ // src/components/DateRangePicker/DateRangePicker.css.ts
1787
+ var field2 = "_17277dh3";
1788
+ var fields = "_17277dh2";
1789
+ var fieldset3 = "_17277dh0";
1790
+ var legend3 = "_17277dh1";
1791
+ var presets = "_17277dh5";
1792
+ var separator2 = "_17277dh4";
1793
+
1794
+ // src/components/DateRangePicker/DateRangePicker.tsx
1795
+ import { jsx as jsx23, jsxs as jsxs19 } from "react/jsx-runtime";
1796
+ var DateRangePicker = /* @__PURE__ */ forwardRef20(
1797
+ function DateRangePicker2(props, ref) {
1798
+ const {
1799
+ value: value3,
1800
+ defaultValue,
1801
+ onValueChange,
1802
+ label: label6,
1803
+ startLabel: startLabelProp,
1804
+ endLabel: endLabelProp,
1805
+ presets: presets2,
1806
+ min,
1807
+ max,
1808
+ isDateDisabled,
1809
+ isHoliday,
1810
+ today,
1811
+ helperText: helperText3,
1812
+ error,
1813
+ required,
1814
+ disabled,
1815
+ startName,
1816
+ endName,
1817
+ id,
1818
+ className
1819
+ } = props;
1820
+ const m = useMessages();
1821
+ const generatedId = useId7();
1822
+ const baseId = id ?? generatedId;
1823
+ const helperId = helperText3 ? `${baseId}-helper` : void 0;
1824
+ const isClient = useIsClient();
1825
+ const isControlled = "value" in props;
1826
+ const [inner, setInner] = useState8(defaultValue ?? { start: "", end: "" });
1827
+ const range3 = isControlled ? value3 ?? { start: "", end: "" } : inner;
1828
+ const update = (next) => {
1829
+ if (next.start === range3.start && next.end === range3.end) return;
1830
+ if (!isControlled) setInner(next);
1831
+ onValueChange?.(next);
1832
+ };
1833
+ const todayIso = () => today ?? toISODate(/* @__PURE__ */ new Date());
1834
+ const startLabel = startLabelProp ?? m.dateRangeStart ?? "\uC2DC\uC791\uC77C";
1835
+ const endLabel = endLabelProp ?? m.dateRangeEnd ?? "\uC885\uB8CC\uC77C";
1836
+ const common = { isDateDisabled, isHoliday, today, disabled, required, fullWidth: true };
1837
+ return /* @__PURE__ */ jsxs19(
1838
+ "fieldset",
1839
+ {
1840
+ ref,
1841
+ id,
1842
+ className: cx(fieldset3, className),
1843
+ "aria-describedby": helperId,
1844
+ "data-invalid": error || void 0,
1845
+ children: [
1846
+ label6 && /* @__PURE__ */ jsxs19("legend", { className: legend3, children: [
1847
+ label6,
1848
+ required && /* @__PURE__ */ jsx23("span", { className: requiredMark, "aria-hidden": true, children: "*" })
1849
+ ] }),
1850
+ /* @__PURE__ */ jsxs19("div", { className: fields, children: [
1851
+ /* @__PURE__ */ jsx23("div", { className: field2, children: /* @__PURE__ */ jsx23(
1852
+ DatePicker,
1853
+ {
1854
+ ...common,
1855
+ id: `${baseId}-start`,
1856
+ label: startLabel,
1857
+ value: range3.start,
1858
+ onValueChange: (start) => update({ ...range3, start }),
1859
+ min,
1860
+ max: range3.end || max,
1861
+ name: startName,
1862
+ error: error || void 0
1863
+ }
1864
+ ) }),
1865
+ /* @__PURE__ */ jsx23("span", { className: separator2, "aria-hidden": true, children: "~" }),
1866
+ /* @__PURE__ */ jsx23("div", { className: field2, children: /* @__PURE__ */ jsx23(
1867
+ DatePicker,
1868
+ {
1869
+ ...common,
1870
+ id: `${baseId}-end`,
1871
+ label: endLabel,
1872
+ value: range3.end,
1873
+ onValueChange: (end2) => update({ ...range3, end: end2 }),
1874
+ min: range3.start || min,
1875
+ max,
1876
+ name: endName,
1877
+ error: error || void 0
1878
+ }
1879
+ ) })
1880
+ ] }),
1881
+ presets2 && presets2.length > 0 && /* @__PURE__ */ jsx23("div", { role: "group", "aria-label": m.dateRangePresets ?? "\uBE60\uB978 \uC120\uD0DD", className: presets, children: presets2.map((preset) => {
1882
+ const target = isClient ? presetRange(preset, todayIso()) : null;
1883
+ const pressed = !!target && target.start === range3.start && target.end === range3.end;
1884
+ return /* @__PURE__ */ jsx23(
1885
+ Button,
1886
+ {
1887
+ type: "button",
1888
+ size: "sm",
1889
+ variant: pressed ? "soft" : "outline",
1890
+ color: pressed ? "primary" : "neutral",
1891
+ "aria-pressed": pressed,
1892
+ disabled,
1893
+ onClick: () => update(presetRange(preset, todayIso())),
1894
+ children: preset.label
1895
+ },
1896
+ preset.label
1897
+ );
1898
+ }) }),
1899
+ helperText3 && /* @__PURE__ */ jsx23("p", { id: helperId, className: helperText({ error }), children: helperText3 })
1900
+ ]
1901
+ }
1902
+ );
1903
+ }
1904
+ );
1905
+
1769
1906
  // src/components/Drawer/Drawer.tsx
1770
1907
  import * as Dialog2 from "@radix-ui/react-dialog";
1771
1908
  import { XIcon as XIcon5 } from "@bestow-ui/icons";
@@ -1783,7 +1920,7 @@ var overlay2 = "nmobyv0";
1783
1920
  var title4 = "nmobyvv";
1784
1921
 
1785
1922
  // src/components/Drawer/Drawer.tsx
1786
- import { jsx as jsx23, jsxs as jsxs19 } from "react/jsx-runtime";
1923
+ import { jsx as jsx24, jsxs as jsxs20 } from "react/jsx-runtime";
1787
1924
  function Drawer({
1788
1925
  open,
1789
1926
  defaultOpen,
@@ -1802,11 +1939,11 @@ function Drawer({
1802
1939
  const portal2 = usePortalProps();
1803
1940
  const m = useMessages();
1804
1941
  const focus = useReturnFocus(Boolean(trigger4));
1805
- return /* @__PURE__ */ jsxs19(Dialog2.Root, { open, defaultOpen, onOpenChange, children: [
1806
- trigger4 && /* @__PURE__ */ jsx23(Dialog2.Trigger, { asChild: true, children: trigger4 }),
1807
- /* @__PURE__ */ jsxs19(Dialog2.Portal, { children: [
1808
- /* @__PURE__ */ jsx23(Dialog2.Overlay, { className: cx(portal2.className, overlay2), style: portal2.style }),
1809
- /* @__PURE__ */ jsxs19(
1942
+ return /* @__PURE__ */ jsxs20(Dialog2.Root, { open, defaultOpen, onOpenChange, children: [
1943
+ trigger4 && /* @__PURE__ */ jsx24(Dialog2.Trigger, { asChild: true, children: trigger4 }),
1944
+ /* @__PURE__ */ jsxs20(Dialog2.Portal, { children: [
1945
+ /* @__PURE__ */ jsx24(Dialog2.Overlay, { className: cx(portal2.className, overlay2), style: portal2.style }),
1946
+ /* @__PURE__ */ jsxs20(
1810
1947
  Dialog2.Content,
1811
1948
  {
1812
1949
  className: cx(portal2.className, content8({ side, size }), className),
@@ -1817,15 +1954,15 @@ function Drawer({
1817
1954
  onCloseAutoFocus: focus.onCloseAutoFocus,
1818
1955
  ...description7 ? {} : { "aria-describedby": void 0 },
1819
1956
  children: [
1820
- /* @__PURE__ */ jsxs19("div", { className: header5, children: [
1821
- /* @__PURE__ */ jsxs19("div", { className: headings2, children: [
1822
- /* @__PURE__ */ jsx23(Dialog2.Title, { className: title4, children: title6 }),
1823
- description7 && /* @__PURE__ */ jsx23(Dialog2.Description, { className: description3, children: description7 })
1957
+ /* @__PURE__ */ jsxs20("div", { className: header5, children: [
1958
+ /* @__PURE__ */ jsxs20("div", { className: headings2, children: [
1959
+ /* @__PURE__ */ jsx24(Dialog2.Title, { className: title4, children: title6 }),
1960
+ description7 && /* @__PURE__ */ jsx24(Dialog2.Description, { className: description3, children: description7 })
1824
1961
  ] }),
1825
- !hideCloseButton && /* @__PURE__ */ jsx23(Dialog2.Close, { asChild: true, children: /* @__PURE__ */ jsx23(IconButton, { "aria-label": m.close ?? "\uB2EB\uAE30", size: "sm", className: closeButton4, children: /* @__PURE__ */ jsx23(XIcon5, {}) }) })
1962
+ !hideCloseButton && /* @__PURE__ */ jsx24(Dialog2.Close, { asChild: true, children: /* @__PURE__ */ jsx24(IconButton, { "aria-label": m.close ?? "\uB2EB\uAE30", size: "sm", className: closeButton4, children: /* @__PURE__ */ jsx24(XIcon5, {}) }) })
1826
1963
  ] }),
1827
- children && /* @__PURE__ */ jsx23("div", { className: body2, children }),
1828
- footer5 && /* @__PURE__ */ jsx23("div", { className: footer2, children: footer5 })
1964
+ children && /* @__PURE__ */ jsx24("div", { className: body2, children }),
1965
+ footer5 && /* @__PURE__ */ jsx24("div", { className: footer2, children: footer5 })
1829
1966
  ]
1830
1967
  }
1831
1968
  )
@@ -1835,7 +1972,7 @@ function Drawer({
1835
1972
  var DrawerClose = Dialog2.Close;
1836
1973
 
1837
1974
  // src/components/ErrorSummary/ErrorSummary.tsx
1838
- import { forwardRef as forwardRef20, useEffect as useEffect7, useId as useId7, useRef as useRef10 } from "react";
1975
+ import { forwardRef as forwardRef21, useEffect as useEffect7, useId as useId8, useRef as useRef10 } from "react";
1839
1976
 
1840
1977
  // src/components/ErrorSummary/ErrorSummary.css.ts
1841
1978
  var link3 = "_1cdophv2";
@@ -1843,17 +1980,17 @@ var list3 = "_1cdophv1";
1843
1980
  var root7 = "_1cdophv0";
1844
1981
 
1845
1982
  // src/components/ErrorSummary/ErrorSummary.tsx
1846
- import { jsx as jsx24 } from "react/jsx-runtime";
1847
- var ErrorSummary = /* @__PURE__ */ forwardRef20(function ErrorSummary2({ errors: errors2, title: title6, focusKey, className, ...rest }, ref) {
1983
+ import { jsx as jsx25 } from "react/jsx-runtime";
1984
+ var ErrorSummary = /* @__PURE__ */ forwardRef21(function ErrorSummary2({ errors: errors2, title: title6, focusKey, className, ...rest }, ref) {
1848
1985
  const m = useMessages();
1849
- const titleId = useId7();
1986
+ const titleId = useId8();
1850
1987
  const rootRef = useRef10(null);
1851
1988
  const hasErrors = errors2.length > 0;
1852
1989
  useEffect7(() => {
1853
1990
  if (hasErrors) rootRef.current?.focus();
1854
1991
  }, [focusKey, hasErrors]);
1855
1992
  if (!hasErrors) return null;
1856
- return /* @__PURE__ */ jsx24(
1993
+ return /* @__PURE__ */ jsx25(
1857
1994
  "div",
1858
1995
  {
1859
1996
  ref: mergeRefs(ref, rootRef),
@@ -1861,12 +1998,12 @@ var ErrorSummary = /* @__PURE__ */ forwardRef20(function ErrorSummary2({ errors:
1861
1998
  "aria-labelledby": titleId,
1862
1999
  className: cx(root7, className),
1863
2000
  ...rest,
1864
- children: /* @__PURE__ */ jsx24(
2001
+ children: /* @__PURE__ */ jsx25(
1865
2002
  Alert,
1866
2003
  {
1867
2004
  color: "danger",
1868
- title: /* @__PURE__ */ jsx24("span", { id: titleId, children: title6 ?? m.errorSummaryTitle?.(errors2.length) ?? `\uC785\uB825\uD55C \uB0B4\uC6A9\uC5D0 \uACE0\uCE60 \uACF3\uC774 ${errors2.length}\uAC1C \uC788\uC5B4\uC694` }),
1869
- children: /* @__PURE__ */ jsx24("ul", { className: list3, children: errors2.map((error) => /* @__PURE__ */ jsx24("li", { children: /* @__PURE__ */ jsx24(
2005
+ title: /* @__PURE__ */ jsx25("span", { id: titleId, children: title6 ?? m.errorSummaryTitle?.(errors2.length) ?? `\uC785\uB825\uD55C \uB0B4\uC6A9\uC5D0 \uACE0\uCE60 \uACF3\uC774 ${errors2.length}\uAC1C \uC788\uC5B4\uC694` }),
2006
+ children: /* @__PURE__ */ jsx25("ul", { className: list3, children: errors2.map((error) => /* @__PURE__ */ jsx25("li", { children: /* @__PURE__ */ jsx25(
1870
2007
  "a",
1871
2008
  {
1872
2009
  href: `#${error.id}`,
@@ -1884,7 +2021,7 @@ var ErrorSummary = /* @__PURE__ */ forwardRef20(function ErrorSummary2({ errors:
1884
2021
  });
1885
2022
 
1886
2023
  // src/components/FileUpload/FileUpload.tsx
1887
- import { forwardRef as forwardRef21, useEffect as useEffect8, useId as useId8, useRef as useRef11, useState as useState8 } from "react";
2024
+ import { forwardRef as forwardRef22, useEffect as useEffect8, useId as useId9, useRef as useRef11, useState as useState9 } from "react";
1888
2025
  import { FileIcon, UploadIcon, XIcon as XIcon6 } from "@bestow-ui/icons";
1889
2026
 
1890
2027
  // src/components/FileUpload/FileUpload.css.ts
@@ -1900,7 +2037,8 @@ var list4 = "r2jefr4";
1900
2037
  var root8 = "r2jefr0";
1901
2038
 
1902
2039
  // src/components/FileUpload/FileUpload.tsx
1903
- import { jsx as jsx25, jsxs as jsxs20 } from "react/jsx-runtime";
2040
+ import { jsx as jsx26, jsxs as jsxs21 } from "react/jsx-runtime";
2041
+ var REMOVED_ANNOUNCE_DELAY = 500;
1904
2042
  function formatSize(bytes) {
1905
2043
  if (bytes < 1024) return `${bytes} B`;
1906
2044
  if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(bytes < 10 * 1024 ? 1 : 0)} KB`;
@@ -1916,7 +2054,7 @@ function matchesAccept(file, accept) {
1916
2054
  }
1917
2055
  var NO_FILES = [];
1918
2056
  var sameFile = (a, b) => a.name === b.name && a.size === b.size && a.lastModified === b.lastModified;
1919
- var FileUpload = /* @__PURE__ */ forwardRef21(function FileUpload2(props, ref) {
2057
+ var FileUpload = /* @__PURE__ */ forwardRef22(function FileUpload2(props, ref) {
1920
2058
  const {
1921
2059
  value: value3,
1922
2060
  defaultValue,
@@ -1937,12 +2075,12 @@ var FileUpload = /* @__PURE__ */ forwardRef21(function FileUpload2(props, ref) {
1937
2075
  } = props;
1938
2076
  const m = useMessages();
1939
2077
  const isControlled = "value" in props;
1940
- const [innerFiles, setInnerFiles] = useState8(defaultValue ?? []);
2078
+ const [innerFiles, setInnerFiles] = useState9(defaultValue ?? []);
1941
2079
  const files = isControlled ? value3 ?? NO_FILES : innerFiles;
1942
- const [rejections, setRejections] = useState8([]);
1943
- const [announcement, setAnnouncement] = useState8("");
1944
- const [dragging, setDragging] = useState8(false);
1945
- const generatedId = useId8();
2080
+ const [rejections, setRejections] = useState9([]);
2081
+ const [announcement, setAnnouncement] = useState9("");
2082
+ const [dragging, setDragging] = useState9(false);
2083
+ const generatedId = useId9();
1946
2084
  const baseId = id ?? generatedId;
1947
2085
  const labelId = label6 ? `${baseId}-label` : void 0;
1948
2086
  const helperId = helperText3 ? `${baseId}-helper` : void 0;
@@ -1951,6 +2089,8 @@ var FileUpload = /* @__PURE__ */ forwardRef21(function FileUpload2(props, ref) {
1951
2089
  const selectButtonRef = useRef11(null);
1952
2090
  const removeButtonRefs = useRef11([]);
1953
2091
  const focusAfterRemove = useRef11(null);
2092
+ const announceTimer = useRef11(void 0);
2093
+ useEffect8(() => () => clearTimeout(announceTimer.current), []);
1954
2094
  const selectLabel = m.fileSelect ?? "\uD30C\uC77C \uC120\uD0DD";
1955
2095
  const reasonText = (rejection) => {
1956
2096
  const fileName2 = rejection.file.name;
@@ -1959,10 +2099,16 @@ var FileUpload = /* @__PURE__ */ forwardRef21(function FileUpload2(props, ref) {
1959
2099
  if (rejection.reason === "type") return m.fileTypeNotAllowed?.(fileName2) ?? `${fileName2}: \uC62C\uB9B4 \uC218 \uC5C6\uB294 \uD615\uC2DD\uC774\uC5D0\uC694.`;
1960
2100
  return m.fileTooMany?.(maxFiles ?? 0) ?? `\uD30C\uC77C\uC740 ${maxFiles}\uAC1C\uAE4C\uC9C0 \uC62C\uB9B4 \uC218 \uC788\uC5B4\uC694.`;
1961
2101
  };
1962
- const commit = (next, message) => {
2102
+ const announce = (message, delay = 0) => {
2103
+ clearTimeout(announceTimer.current);
2104
+ if (delay === 0) return setAnnouncement(message);
2105
+ setAnnouncement("");
2106
+ announceTimer.current = setTimeout(() => setAnnouncement(message), delay);
2107
+ };
2108
+ const commit = (next, message, delay = 0) => {
1963
2109
  if (!isControlled) setInnerFiles(next);
1964
2110
  onValueChange?.(next);
1965
- setAnnouncement(message);
2111
+ announce(message, delay);
1966
2112
  };
1967
2113
  const addFiles = (incoming) => {
1968
2114
  if (disabled || incoming.length === 0) return;
@@ -1983,14 +2129,14 @@ var FileUpload = /* @__PURE__ */ forwardRef21(function FileUpload2(props, ref) {
1983
2129
  const summary = m.filesSelected?.(next.length) ?? `\uD30C\uC77C ${next.length}\uAC1C \uC120\uD0DD\uB428`;
1984
2130
  const errors2 = [...new Set(rejected.map(reasonText))].join(" ");
1985
2131
  if (accepted.length > 0) commit(next, [summary, errors2].filter(Boolean).join(" "));
1986
- else setAnnouncement(errors2);
2132
+ else announce(errors2);
1987
2133
  };
1988
2134
  const removeAt = (index) => {
1989
2135
  const removed = files[index];
1990
2136
  const next = files.filter((_, i) => i !== index);
1991
2137
  focusAfterRemove.current = Math.min(index, next.length - 1);
1992
2138
  setRejections([]);
1993
- commit(next, m.fileRemoved?.(removed.name) ?? `${removed.name} \uC0AD\uC81C\uB428`);
2139
+ commit(next, m.fileRemoved?.(removed.name) ?? `${removed.name} \uC0AD\uC81C\uB428`, REMOVED_ANNOUNCE_DELAY);
1994
2140
  };
1995
2141
  useEffect8(() => {
1996
2142
  if (focusAfterRemove.current === null) return;
@@ -2013,12 +2159,12 @@ var FileUpload = /* @__PURE__ */ forwardRef21(function FileUpload2(props, ref) {
2013
2159
  event.preventDefault();
2014
2160
  setDragging(over);
2015
2161
  };
2016
- return /* @__PURE__ */ jsxs20("div", { ref, className: cx(field, root8, className), children: [
2017
- label6 && /* @__PURE__ */ jsxs20("span", { id: labelId, className: label, children: [
2162
+ return /* @__PURE__ */ jsxs21("div", { ref, className: cx(field, root8, className), children: [
2163
+ label6 && /* @__PURE__ */ jsxs21("span", { id: labelId, className: label, children: [
2018
2164
  label6,
2019
- required && /* @__PURE__ */ jsx25("span", { className: requiredMark, "aria-hidden": true, children: "*" })
2165
+ required && /* @__PURE__ */ jsx26("span", { className: requiredMark, "aria-hidden": true, children: "*" })
2020
2166
  ] }),
2021
- /* @__PURE__ */ jsxs20(
2167
+ /* @__PURE__ */ jsxs21(
2022
2168
  "div",
2023
2169
  {
2024
2170
  role: "group",
@@ -2038,8 +2184,8 @@ var FileUpload = /* @__PURE__ */ forwardRef21(function FileUpload2(props, ref) {
2038
2184
  if (!disabled) addFiles(Array.from(event.dataTransfer.files));
2039
2185
  },
2040
2186
  children: [
2041
- /* @__PURE__ */ jsx25("span", { className: dropIcon, "aria-hidden": true, children: /* @__PURE__ */ jsx25(UploadIcon, { size: 24 }) }),
2042
- /* @__PURE__ */ jsx25(
2187
+ /* @__PURE__ */ jsx26("span", { className: dropIcon, "aria-hidden": true, children: /* @__PURE__ */ jsx26(UploadIcon, { size: 24 }) }),
2188
+ /* @__PURE__ */ jsx26(
2043
2189
  Button,
2044
2190
  {
2045
2191
  ref: selectButtonRef,
@@ -2052,8 +2198,8 @@ var FileUpload = /* @__PURE__ */ forwardRef21(function FileUpload2(props, ref) {
2052
2198
  children: selectLabel
2053
2199
  }
2054
2200
  ),
2055
- /* @__PURE__ */ jsx25("span", { className: dropHint, children: m.fileDropHint ?? "\uB610\uB294 \uC5EC\uAE30\uB85C \uB04C\uC5B4\uB2E4 \uB193\uC73C\uC138\uC694" }),
2056
- /* @__PURE__ */ jsx25(
2201
+ /* @__PURE__ */ jsx26("span", { className: dropHint, children: m.fileDropHint ?? "\uB610\uB294 \uC5EC\uAE30\uB85C \uB04C\uC5B4\uB2E4 \uB193\uC73C\uC138\uC694" }),
2202
+ /* @__PURE__ */ jsx26(
2057
2203
  "input",
2058
2204
  {
2059
2205
  ref: inputRef,
@@ -2076,11 +2222,11 @@ var FileUpload = /* @__PURE__ */ forwardRef21(function FileUpload2(props, ref) {
2076
2222
  ]
2077
2223
  }
2078
2224
  ),
2079
- files.length > 0 && /* @__PURE__ */ jsx25("ul", { "aria-label": m.fileList ?? "\uC120\uD0DD\uD55C \uD30C\uC77C", className: list4, children: files.map((file, index) => /* @__PURE__ */ jsxs20("li", { className: item5, children: [
2080
- /* @__PURE__ */ jsx25("span", { className: fileIcon, "aria-hidden": true, children: /* @__PURE__ */ jsx25(FileIcon, { size: 16 }) }),
2081
- /* @__PURE__ */ jsx25("span", { className: fileName, children: file.name }),
2082
- /* @__PURE__ */ jsx25("span", { className: fileSize, children: formatSize(file.size) }),
2083
- /* @__PURE__ */ jsx25(
2225
+ files.length > 0 && /* @__PURE__ */ jsx26("ul", { "aria-label": m.fileList ?? "\uC120\uD0DD\uD55C \uD30C\uC77C", className: list4, children: files.map((file, index) => /* @__PURE__ */ jsxs21("li", { className: item5, children: [
2226
+ /* @__PURE__ */ jsx26("span", { className: fileIcon, "aria-hidden": true, children: /* @__PURE__ */ jsx26(FileIcon, { size: 16 }) }),
2227
+ /* @__PURE__ */ jsx26("span", { className: fileName, children: file.name }),
2228
+ /* @__PURE__ */ jsx26("span", { id: `${baseId}-size-${index}`, className: fileSize, children: formatSize(file.size) }),
2229
+ /* @__PURE__ */ jsx26(
2084
2230
  IconButton,
2085
2231
  {
2086
2232
  ref: (node) => {
@@ -2088,22 +2234,23 @@ var FileUpload = /* @__PURE__ */ forwardRef21(function FileUpload2(props, ref) {
2088
2234
  },
2089
2235
  size: "sm",
2090
2236
  "aria-label": m.fileRemove?.(file.name) ?? `${file.name} \uC0AD\uC81C`,
2237
+ "aria-describedby": `${baseId}-size-${index}`,
2091
2238
  disabled,
2092
2239
  onClick: () => removeAt(index),
2093
- children: /* @__PURE__ */ jsx25(XIcon6, {})
2240
+ children: /* @__PURE__ */ jsx26(XIcon6, {})
2094
2241
  }
2095
2242
  )
2096
2243
  ] }, `${file.name}-${file.size}-${file.lastModified}`)) }),
2097
- rejections.length > 0 && /* @__PURE__ */ jsx25("ul", { id: errorsId, className: errors, children: [...new Set(rejections.map(reasonText))].map((text3) => /* @__PURE__ */ jsx25("li", { children: text3 }, text3)) }),
2098
- helperText3 && /* @__PURE__ */ jsx25("p", { id: helperId, className: helperText({ error }), children: helperText3 }),
2099
- /* @__PURE__ */ jsx25("div", { role: "status", className: visuallyHidden, children: announcement })
2244
+ rejections.length > 0 && /* @__PURE__ */ jsx26("ul", { id: errorsId, className: errors, children: [...new Set(rejections.map(reasonText))].map((text3) => /* @__PURE__ */ jsx26("li", { children: text3 }, text3)) }),
2245
+ helperText3 && /* @__PURE__ */ jsx26("p", { id: helperId, className: helperText({ error }), children: helperText3 }),
2246
+ /* @__PURE__ */ jsx26("div", { role: "status", className: visuallyHidden, children: announcement })
2100
2247
  ] });
2101
2248
  });
2102
2249
 
2103
2250
  // src/components/DropdownMenu/DropdownMenu.tsx
2104
2251
  import * as RadixMenu from "@radix-ui/react-dropdown-menu";
2105
2252
  import { CheckIcon as CheckIcon2, ChevronRightIcon as ChevronRightIcon3, MinusIcon } from "@bestow-ui/icons";
2106
- import { forwardRef as forwardRef22 } from "react";
2253
+ import { forwardRef as forwardRef23 } from "react";
2107
2254
 
2108
2255
  // src/components/DropdownMenu/DropdownMenu.css.ts
2109
2256
  var content9 = "_1d7ahux0";
@@ -2114,20 +2261,20 @@ var indicatorInner = "_1d7ahux8";
2114
2261
  var item6 = "_1d7ahux1";
2115
2262
  var label2 = "_1d7ahux5";
2116
2263
  var radioDot = "_1d7ahux9";
2117
- var separator2 = "_1d7ahux6";
2264
+ var separator3 = "_1d7ahux6";
2118
2265
  var shortcut = "_1d7ahux4";
2119
2266
  var subChevron = "_1d7ahuxb";
2120
2267
  var subTrigger = "_1d7ahuxa";
2121
2268
 
2122
2269
  // src/components/DropdownMenu/DropdownMenu.tsx
2123
- import { jsx as jsx26, jsxs as jsxs21 } from "react/jsx-runtime";
2270
+ import { jsx as jsx27, jsxs as jsxs22 } from "react/jsx-runtime";
2124
2271
  var DropdownMenu = RadixMenu.Root;
2125
2272
  var DropdownMenuTrigger = RadixMenu.Trigger;
2126
2273
  var DropdownMenuGroup = RadixMenu.Group;
2127
- var DropdownMenuContent = /* @__PURE__ */ forwardRef22(
2274
+ var DropdownMenuContent = /* @__PURE__ */ forwardRef23(
2128
2275
  function DropdownMenuContent2({ className, style, side = "bottom", align = "start", sideOffset = 4, collisionPadding = 8, ...rest }, ref) {
2129
2276
  const portal2 = usePortalProps();
2130
- return /* @__PURE__ */ jsx26(RadixMenu.Portal, { children: /* @__PURE__ */ jsx26(
2277
+ return /* @__PURE__ */ jsx27(RadixMenu.Portal, { children: /* @__PURE__ */ jsx27(
2131
2278
  RadixMenu.Content,
2132
2279
  {
2133
2280
  ref,
@@ -2142,56 +2289,56 @@ var DropdownMenuContent = /* @__PURE__ */ forwardRef22(
2142
2289
  ) });
2143
2290
  }
2144
2291
  );
2145
- var DropdownMenuItem = /* @__PURE__ */ forwardRef22(
2292
+ var DropdownMenuItem = /* @__PURE__ */ forwardRef23(
2146
2293
  function DropdownMenuItem2({ icon: icon6, shortcut: shortcut2, color = "neutral", className, children, ...rest }, ref) {
2147
- return /* @__PURE__ */ jsxs21(RadixMenu.Item, { ref, className: cx(item6, color === "danger" && danger, className), ...rest, children: [
2148
- icon6 && /* @__PURE__ */ jsx26("span", { className: icon4, "aria-hidden": true, children: icon6 }),
2294
+ return /* @__PURE__ */ jsxs22(RadixMenu.Item, { ref, className: cx(item6, color === "danger" && danger, className), ...rest, children: [
2295
+ icon6 && /* @__PURE__ */ jsx27("span", { className: icon4, "aria-hidden": true, children: icon6 }),
2149
2296
  children,
2150
- shortcut2 && /* @__PURE__ */ jsx26("span", { className: shortcut, "aria-hidden": true, children: shortcut2 })
2297
+ shortcut2 && /* @__PURE__ */ jsx27("span", { className: shortcut, "aria-hidden": true, children: shortcut2 })
2151
2298
  ] });
2152
2299
  }
2153
2300
  );
2154
- var DropdownMenuLabel = /* @__PURE__ */ forwardRef22(
2301
+ var DropdownMenuLabel = /* @__PURE__ */ forwardRef23(
2155
2302
  function DropdownMenuLabel2({ className, ...rest }, ref) {
2156
- return /* @__PURE__ */ jsx26(RadixMenu.Label, { ref, className: cx(label2, className), ...rest });
2303
+ return /* @__PURE__ */ jsx27(RadixMenu.Label, { ref, className: cx(label2, className), ...rest });
2157
2304
  }
2158
2305
  );
2159
- var DropdownMenuSeparator = /* @__PURE__ */ forwardRef22(
2306
+ var DropdownMenuSeparator = /* @__PURE__ */ forwardRef23(
2160
2307
  function DropdownMenuSeparator2({ className, ...rest }, ref) {
2161
- return /* @__PURE__ */ jsx26(RadixMenu.Separator, { ref, className: cx(separator2, className), ...rest });
2308
+ return /* @__PURE__ */ jsx27(RadixMenu.Separator, { ref, className: cx(separator3, className), ...rest });
2162
2309
  }
2163
2310
  );
2164
- var DropdownMenuCheckboxItem = /* @__PURE__ */ forwardRef22(
2311
+ var DropdownMenuCheckboxItem = /* @__PURE__ */ forwardRef23(
2165
2312
  function DropdownMenuCheckboxItem2({ className, children, ...rest }, ref) {
2166
- return /* @__PURE__ */ jsxs21(RadixMenu.CheckboxItem, { ref, className: cx(item6, className), ...rest, children: [
2167
- /* @__PURE__ */ jsx26("span", { className: indicator, "aria-hidden": true, children: /* @__PURE__ */ jsx26(RadixMenu.ItemIndicator, { className: indicatorInner, children: rest.checked === "indeterminate" ? /* @__PURE__ */ jsx26(MinusIcon, { size: 16 }) : /* @__PURE__ */ jsx26(CheckIcon2, { size: 16 }) }) }),
2313
+ return /* @__PURE__ */ jsxs22(RadixMenu.CheckboxItem, { ref, className: cx(item6, className), ...rest, children: [
2314
+ /* @__PURE__ */ jsx27("span", { className: indicator, "aria-hidden": true, children: /* @__PURE__ */ jsx27(RadixMenu.ItemIndicator, { className: indicatorInner, children: rest.checked === "indeterminate" ? /* @__PURE__ */ jsx27(MinusIcon, { size: 16 }) : /* @__PURE__ */ jsx27(CheckIcon2, { size: 16 }) }) }),
2168
2315
  children
2169
2316
  ] });
2170
2317
  }
2171
2318
  );
2172
2319
  var DropdownMenuRadioGroup = RadixMenu.RadioGroup;
2173
- var DropdownMenuRadioItem = /* @__PURE__ */ forwardRef22(
2320
+ var DropdownMenuRadioItem = /* @__PURE__ */ forwardRef23(
2174
2321
  function DropdownMenuRadioItem2({ className, children, ...rest }, ref) {
2175
- return /* @__PURE__ */ jsxs21(RadixMenu.RadioItem, { ref, className: cx(item6, className), ...rest, children: [
2176
- /* @__PURE__ */ jsx26("span", { className: indicator, "aria-hidden": true, children: /* @__PURE__ */ jsx26(RadixMenu.ItemIndicator, { className: indicatorInner, children: /* @__PURE__ */ jsx26("span", { className: radioDot }) }) }),
2322
+ return /* @__PURE__ */ jsxs22(RadixMenu.RadioItem, { ref, className: cx(item6, className), ...rest, children: [
2323
+ /* @__PURE__ */ jsx27("span", { className: indicator, "aria-hidden": true, children: /* @__PURE__ */ jsx27(RadixMenu.ItemIndicator, { className: indicatorInner, children: /* @__PURE__ */ jsx27("span", { className: radioDot }) }) }),
2177
2324
  children
2178
2325
  ] });
2179
2326
  }
2180
2327
  );
2181
2328
  var DropdownMenuSub = RadixMenu.Sub;
2182
- var DropdownMenuSubTrigger = /* @__PURE__ */ forwardRef22(
2329
+ var DropdownMenuSubTrigger = /* @__PURE__ */ forwardRef23(
2183
2330
  function DropdownMenuSubTrigger2({ icon: icon6, className, children, ...rest }, ref) {
2184
- return /* @__PURE__ */ jsxs21(RadixMenu.SubTrigger, { ref, className: cx(item6, subTrigger, className), ...rest, children: [
2185
- icon6 && /* @__PURE__ */ jsx26("span", { className: icon4, "aria-hidden": true, children: icon6 }),
2331
+ return /* @__PURE__ */ jsxs22(RadixMenu.SubTrigger, { ref, className: cx(item6, subTrigger, className), ...rest, children: [
2332
+ icon6 && /* @__PURE__ */ jsx27("span", { className: icon4, "aria-hidden": true, children: icon6 }),
2186
2333
  children,
2187
- /* @__PURE__ */ jsx26("span", { className: subChevron, "aria-hidden": true, children: /* @__PURE__ */ jsx26(ChevronRightIcon3, { size: 16 }) })
2334
+ /* @__PURE__ */ jsx27("span", { className: subChevron, "aria-hidden": true, children: /* @__PURE__ */ jsx27(ChevronRightIcon3, { size: 16 }) })
2188
2335
  ] });
2189
2336
  }
2190
2337
  );
2191
- var DropdownMenuSubContent = /* @__PURE__ */ forwardRef22(
2338
+ var DropdownMenuSubContent = /* @__PURE__ */ forwardRef23(
2192
2339
  function DropdownMenuSubContent2({ className, style, sideOffset = 4, alignOffset = -5, collisionPadding = 8, ...rest }, ref) {
2193
2340
  const portal2 = usePortalProps();
2194
- return /* @__PURE__ */ jsx26(RadixMenu.Portal, { children: /* @__PURE__ */ jsx26(
2341
+ return /* @__PURE__ */ jsx27(RadixMenu.Portal, { children: /* @__PURE__ */ jsx27(
2195
2342
  RadixMenu.SubContent,
2196
2343
  {
2197
2344
  ref,
@@ -2207,7 +2354,7 @@ var DropdownMenuSubContent = /* @__PURE__ */ forwardRef22(
2207
2354
  );
2208
2355
 
2209
2356
  // src/components/NumberInput/NumberInput.tsx
2210
- import { forwardRef as forwardRef23, useEffect as useEffect9, useId as useId9, useRef as useRef12 } from "react";
2357
+ import { forwardRef as forwardRef24, useEffect as useEffect9, useId as useId10, useRef as useRef12, useState as useState10 } from "react";
2211
2358
  import { MinusIcon as MinusIcon2, PlusIcon } from "@bestow-ui/icons";
2212
2359
 
2213
2360
  // src/components/NumberInput/NumberInput.css.ts
@@ -2218,12 +2365,12 @@ var stepper = /* @__PURE__ */ _7a46811({ defaultClassName: "_1vq2qhv3", variantC
2218
2365
  var unit = "_1vq2qhv2";
2219
2366
 
2220
2367
  // src/components/NumberInput/NumberInput.tsx
2221
- import { Fragment as Fragment5, jsx as jsx27, jsxs as jsxs22 } from "react/jsx-runtime";
2368
+ import { Fragment as Fragment5, jsx as jsx28, jsxs as jsxs23 } from "react/jsx-runtime";
2222
2369
  var MAX_DIGITS2 = 15;
2223
2370
  var isMeaningful = (char) => /[\d.-]/.test(char);
2224
2371
  var decimalsOf = (n) => Number.isFinite(n) ? String(n).split(".")[1]?.length ?? 0 : 0;
2225
2372
  var parse = (raw) => /\d/.test(raw) ? Number(raw) : null;
2226
- var NumberInput = /* @__PURE__ */ forwardRef23(
2373
+ var NumberInput = /* @__PURE__ */ forwardRef24(
2227
2374
  function NumberInput2(props, ref) {
2228
2375
  const {
2229
2376
  value: value3,
@@ -2250,7 +2397,7 @@ var NumberInput = /* @__PURE__ */ forwardRef23(
2250
2397
  const isControlled = "value" in props;
2251
2398
  const m = useMessages();
2252
2399
  const inputRef = useRef12(null);
2253
- const generatedId = useId9();
2400
+ const generatedId = useId10();
2254
2401
  const inputId = id ?? generatedId;
2255
2402
  const precision = Math.max(0, precisionProp ?? decimalsOf(step2));
2256
2403
  const allowNegative = min === void 0 || min < 0;
@@ -2276,7 +2423,7 @@ var NumberInput = /* @__PURE__ */ forwardRef23(
2276
2423
  lastEmitted.current = next;
2277
2424
  onValueChange?.(next);
2278
2425
  };
2279
- const field3 = useFormattedInput({
2426
+ const field4 = useFormattedInput({
2280
2427
  isControlled: false,
2281
2428
  value: void 0,
2282
2429
  defaultValue: toRaw(isControlled ? value3 : defaultValue),
@@ -2286,17 +2433,20 @@ var NumberInput = /* @__PURE__ */ forwardRef23(
2286
2433
  isMeaningful,
2287
2434
  inputRef
2288
2435
  });
2289
- const { setRaw } = field3;
2436
+ const { setRaw } = field4;
2290
2437
  useEffect9(() => {
2291
2438
  if (!isControlled) return;
2292
2439
  const next = value3 ?? null;
2293
2440
  lastEmitted.current = next;
2294
- if (parse(field3.raw) !== next) setRaw(toRaw(next));
2441
+ if (parse(field4.raw) !== next) setRaw(toRaw(next));
2295
2442
  }, [value3]);
2296
- const current2 = parse(field3.raw);
2297
- const setValue = (next) => {
2443
+ const current2 = parse(field4.raw);
2444
+ const valueText = (n) => `${format2(toRaw(n))}${unit2 ?? ""}`;
2445
+ const [announcement, setAnnouncement] = useState10("");
2446
+ const setValue = (next, announce = true) => {
2298
2447
  setRaw(toRaw(next));
2299
2448
  emit(next);
2449
+ if (announce) setAnnouncement(valueText(next));
2300
2450
  };
2301
2451
  const stepBy = (delta) => {
2302
2452
  if (disabled || readOnly) return;
@@ -2323,10 +2473,10 @@ var NumberInput = /* @__PURE__ */ forwardRef23(
2323
2473
  event.preventDefault();
2324
2474
  setValue(max);
2325
2475
  } else {
2326
- field3.onKeyDown(event);
2476
+ field4.onKeyDown(event);
2327
2477
  }
2328
2478
  };
2329
- const stepper2 = (direction) => /* @__PURE__ */ jsx27(
2479
+ const stepper2 = (direction) => /* @__PURE__ */ jsx28(
2330
2480
  IconButton,
2331
2481
  {
2332
2482
  size: "sm",
@@ -2337,11 +2487,11 @@ var NumberInput = /* @__PURE__ */ forwardRef23(
2337
2487
  onMouseDown: (event) => event.preventDefault(),
2338
2488
  onClick: () => stepBy(direction * step2),
2339
2489
  className: stepper({ size }),
2340
- children: direction < 0 ? /* @__PURE__ */ jsx27(MinusIcon2, {}) : /* @__PURE__ */ jsx27(PlusIcon, {})
2490
+ children: direction < 0 ? /* @__PURE__ */ jsx28(MinusIcon2, {}) : /* @__PURE__ */ jsx28(PlusIcon, {})
2341
2491
  }
2342
2492
  );
2343
- return /* @__PURE__ */ jsxs22(Fragment5, { children: [
2344
- /* @__PURE__ */ jsx27(
2493
+ return /* @__PURE__ */ jsxs23(Fragment5, { children: [
2494
+ /* @__PURE__ */ jsx28(
2345
2495
  TextField,
2346
2496
  {
2347
2497
  ref: mergeRefs(ref, inputRef),
@@ -2352,35 +2502,40 @@ var NumberInput = /* @__PURE__ */ forwardRef23(
2352
2502
  "aria-valuenow": current2 ?? void 0,
2353
2503
  "aria-valuemin": min,
2354
2504
  "aria-valuemax": max,
2355
- "aria-valuetext": current2 === null ? void 0 : `${field3.display}${unit2 ?? ""}`,
2356
- value: field3.display,
2357
- onChange: field3.onChange,
2505
+ "aria-valuetext": current2 === null ? void 0 : valueText(current2),
2506
+ value: field4.display,
2507
+ onChange: (event) => {
2508
+ setAnnouncement("");
2509
+ field4.onChange(event);
2510
+ },
2358
2511
  onKeyDown: handleKeyDown,
2359
2512
  onBlur: (event) => {
2360
- if (current2 !== null && clamp(current2) !== current2) setValue(clamp(current2));
2361
- else if (current2 === null && field3.raw !== "") setRaw("");
2513
+ if (current2 !== null && clamp(current2) !== current2) setValue(clamp(current2), false);
2514
+ else if (current2 === null && field4.raw !== "") setRaw("");
2515
+ setAnnouncement("");
2362
2516
  onBlur?.(event);
2363
2517
  },
2364
2518
  size,
2365
2519
  disabled,
2366
2520
  readOnly,
2367
2521
  startAdornment: hideStepper ? void 0 : stepper2(-1),
2368
- endAdornment: unit2 || !hideStepper ? /* @__PURE__ */ jsxs22("span", { className: end, children: [
2369
- unit2 && /* @__PURE__ */ jsx27("span", { className: unit, children: unit2 }),
2522
+ endAdornment: unit2 || !hideStepper ? /* @__PURE__ */ jsxs23("span", { className: end, children: [
2523
+ unit2 && /* @__PURE__ */ jsx28("span", { className: unit, children: unit2 }),
2370
2524
  !hideStepper && stepper2(1)
2371
2525
  ] }) : void 0,
2372
2526
  className: cx(input4, className),
2373
2527
  ...rest
2374
2528
  }
2375
2529
  ),
2376
- name && /* @__PURE__ */ jsx27("input", { type: "hidden", name, value: current2 === null ? "" : String(current2) })
2530
+ name && /* @__PURE__ */ jsx28("input", { type: "hidden", name, value: current2 === null ? "" : String(current2) }),
2531
+ /* @__PURE__ */ jsx28("span", { "aria-live": "assertive", "aria-atomic": "true", className: visuallyHidden, children: announcement })
2377
2532
  ] });
2378
2533
  }
2379
2534
  );
2380
2535
 
2381
2536
  // src/components/Pagination/Pagination.tsx
2382
2537
  import { ChevronLeftIcon as ChevronLeftIcon2, ChevronRightIcon as ChevronRightIcon4 } from "@bestow-ui/icons";
2383
- import { forwardRef as forwardRef24, useState as useState9 } from "react";
2538
+ import { forwardRef as forwardRef25, useState as useState11 } from "react";
2384
2539
 
2385
2540
  // src/components/Pagination/getPaginationItems.ts
2386
2541
  var range = (start, end2) => end2 < start ? [] : Array.from({ length: end2 - start + 1 }, (_, i) => start + i);
@@ -2413,8 +2568,8 @@ var item7 = /* @__PURE__ */ _7a46812({ defaultClassName: "_1iraoak1", variantCla
2413
2568
  var list5 = "_1iraoak0";
2414
2569
 
2415
2570
  // src/components/Pagination/Pagination.tsx
2416
- import { jsx as jsx28, jsxs as jsxs23 } from "react/jsx-runtime";
2417
- var Pagination = /* @__PURE__ */ forwardRef24(function Pagination2({
2571
+ import { jsx as jsx29, jsxs as jsxs24 } from "react/jsx-runtime";
2572
+ var Pagination = /* @__PURE__ */ forwardRef25(function Pagination2({
2418
2573
  totalPages,
2419
2574
  page: pageProp,
2420
2575
  defaultPage = 1,
@@ -2427,7 +2582,7 @@ var Pagination = /* @__PURE__ */ forwardRef24(function Pagination2({
2427
2582
  "aria-label": ariaLabelProp,
2428
2583
  ...rest
2429
2584
  }, ref) {
2430
- const [uncontrolledPage, setUncontrolledPage] = useState9(defaultPage);
2585
+ const [uncontrolledPage, setUncontrolledPage] = useState11(defaultPage);
2431
2586
  const m = useMessages();
2432
2587
  const ariaLabel = ariaLabelProp ?? m.pagination ?? "\uD398\uC774\uC9C0 \uD0D0\uC0C9";
2433
2588
  const getItemLabel = getItemLabelProp ?? ((type, n) => type === "previous" ? m.paginationPrevious ?? "\uC774\uC804 \uD398\uC774\uC9C0" : type === "next" ? m.paginationNext ?? "\uB2E4\uC74C \uD398\uC774\uC9C0" : m.paginationPage?.(n) ?? `${n} \uD398\uC774\uC9C0`);
@@ -2439,8 +2594,8 @@ var Pagination = /* @__PURE__ */ forwardRef24(function Pagination2({
2439
2594
  onPageChange?.(next);
2440
2595
  };
2441
2596
  const itemClass = item7({ size });
2442
- return /* @__PURE__ */ jsx28("nav", { ref, "aria-label": ariaLabel, className, ...rest, children: /* @__PURE__ */ jsxs23("ul", { className: list5, children: [
2443
- /* @__PURE__ */ jsx28("li", { children: /* @__PURE__ */ jsx28(
2597
+ return /* @__PURE__ */ jsx29("nav", { ref, "aria-label": ariaLabel, className, ...rest, children: /* @__PURE__ */ jsxs24("ul", { className: list5, children: [
2598
+ /* @__PURE__ */ jsx29("li", { children: /* @__PURE__ */ jsx29(
2444
2599
  "button",
2445
2600
  {
2446
2601
  type: "button",
@@ -2448,11 +2603,11 @@ var Pagination = /* @__PURE__ */ forwardRef24(function Pagination2({
2448
2603
  "aria-label": getItemLabel("previous", page - 1),
2449
2604
  disabled: page <= 1,
2450
2605
  onClick: () => goTo(page - 1),
2451
- children: /* @__PURE__ */ jsx28(ChevronLeftIcon2, { size: 16 })
2606
+ children: /* @__PURE__ */ jsx29(ChevronLeftIcon2, { size: 16 })
2452
2607
  }
2453
2608
  ) }),
2454
2609
  getPaginationItems(page, totalPages, siblingCount, boundaryCount).map(
2455
- (item9) => typeof item9 === "number" ? /* @__PURE__ */ jsx28("li", { children: /* @__PURE__ */ jsx28(
2610
+ (item9) => typeof item9 === "number" ? /* @__PURE__ */ jsx29("li", { children: /* @__PURE__ */ jsx29(
2456
2611
  "button",
2457
2612
  {
2458
2613
  type: "button",
@@ -2462,9 +2617,9 @@ var Pagination = /* @__PURE__ */ forwardRef24(function Pagination2({
2462
2617
  onClick: () => goTo(item9),
2463
2618
  children: item9
2464
2619
  }
2465
- ) }, item9) : /* @__PURE__ */ jsx28("li", { "aria-hidden": true, className: cx(itemClass, ellipsis), children: "\u2026" }, item9)
2620
+ ) }, item9) : /* @__PURE__ */ jsx29("li", { "aria-hidden": true, className: cx(itemClass, ellipsis), children: "\u2026" }, item9)
2466
2621
  ),
2467
- /* @__PURE__ */ jsx28("li", { children: /* @__PURE__ */ jsx28(
2622
+ /* @__PURE__ */ jsx29("li", { children: /* @__PURE__ */ jsx29(
2468
2623
  "button",
2469
2624
  {
2470
2625
  type: "button",
@@ -2472,21 +2627,21 @@ var Pagination = /* @__PURE__ */ forwardRef24(function Pagination2({
2472
2627
  "aria-label": getItemLabel("next", page + 1),
2473
2628
  disabled: page >= totalPages,
2474
2629
  onClick: () => goTo(page + 1),
2475
- children: /* @__PURE__ */ jsx28(ChevronRightIcon4, { size: 16 })
2630
+ children: /* @__PURE__ */ jsx29(ChevronRightIcon4, { size: 16 })
2476
2631
  }
2477
2632
  ) })
2478
2633
  ] }) });
2479
2634
  });
2480
2635
 
2481
2636
  // src/components/PhoneNumberInput/PhoneNumberInput.tsx
2482
- import { forwardRef as forwardRef25, useRef as useRef13 } from "react";
2483
- import { jsx as jsx29 } from "react/jsx-runtime";
2637
+ import { forwardRef as forwardRef26, useRef as useRef13 } from "react";
2638
+ import { jsx as jsx30 } from "react/jsx-runtime";
2484
2639
  var sanitize3 = (input6) => {
2485
2640
  const digits = input6.replace(/\D/g, "");
2486
2641
  return digits.slice(0, phoneNumberMaxDigits(digits));
2487
2642
  };
2488
2643
  var isDigit4 = (char) => /\d/.test(char);
2489
- var PhoneNumberInput = /* @__PURE__ */ forwardRef25(
2644
+ var PhoneNumberInput = /* @__PURE__ */ forwardRef26(
2490
2645
  function PhoneNumberInput2(props, ref) {
2491
2646
  const {
2492
2647
  value: value3,
@@ -2500,7 +2655,7 @@ var PhoneNumberInput = /* @__PURE__ */ forwardRef25(
2500
2655
  const inputRef = useRef13(null);
2501
2656
  const m = useMessages();
2502
2657
  const label6 = labelProp ?? m.phoneNumber ?? "\uD734\uB300\uD3F0 \uBC88\uD638";
2503
- const field3 = useFormattedInput({
2658
+ const field4 = useFormattedInput({
2504
2659
  isControlled: "value" in props,
2505
2660
  value: value3,
2506
2661
  defaultValue,
@@ -2510,7 +2665,7 @@ var PhoneNumberInput = /* @__PURE__ */ forwardRef25(
2510
2665
  isMeaningful: isDigit4,
2511
2666
  inputRef
2512
2667
  });
2513
- return /* @__PURE__ */ jsx29(
2668
+ return /* @__PURE__ */ jsx30(
2514
2669
  TextField,
2515
2670
  {
2516
2671
  ref: mergeRefs(ref, inputRef),
@@ -2519,10 +2674,10 @@ var PhoneNumberInput = /* @__PURE__ */ forwardRef25(
2519
2674
  type: "tel",
2520
2675
  inputMode: "tel",
2521
2676
  autoComplete: "tel-national",
2522
- value: field3.display,
2523
- onChange: field3.onChange,
2677
+ value: field4.display,
2678
+ onChange: field4.onChange,
2524
2679
  onKeyDown: (event) => {
2525
- field3.onKeyDown(event);
2680
+ field4.onKeyDown(event);
2526
2681
  onKeyDown?.(event);
2527
2682
  },
2528
2683
  ...rest
@@ -2532,7 +2687,7 @@ var PhoneNumberInput = /* @__PURE__ */ forwardRef25(
2532
2687
  );
2533
2688
 
2534
2689
  // src/components/RadioGroup/RadioGroup.tsx
2535
- import { forwardRef as forwardRef26, useId as useId10, useState as useState10 } from "react";
2690
+ import { forwardRef as forwardRef27, useId as useId11, useState as useState12 } from "react";
2536
2691
 
2537
2692
  // src/components/RadioGroup/RadioGroup.css.ts
2538
2693
  import { createRuntimeFn as _7a46813 } from "@vanilla-extract/recipes/createRuntimeFn";
@@ -2545,8 +2700,8 @@ var radio = /* @__PURE__ */ _7a46813({ defaultClassName: "_1w9iwjm7", variantCla
2545
2700
  var text = "_1w9iwjma";
2546
2701
 
2547
2702
  // src/components/RadioGroup/RadioGroup.tsx
2548
- import { jsx as jsx30, jsxs as jsxs24 } from "react/jsx-runtime";
2549
- var RadioGroup2 = /* @__PURE__ */ forwardRef26(function RadioGroup3(props, ref) {
2703
+ import { jsx as jsx31, jsxs as jsxs25 } from "react/jsx-runtime";
2704
+ var RadioGroup2 = /* @__PURE__ */ forwardRef27(function RadioGroup3(props, ref) {
2550
2705
  const {
2551
2706
  options,
2552
2707
  value: value3,
@@ -2565,9 +2720,9 @@ var RadioGroup2 = /* @__PURE__ */ forwardRef26(function RadioGroup3(props, ref)
2565
2720
  className
2566
2721
  } = props;
2567
2722
  const isControlled = "value" in props;
2568
- const [innerValue, setInnerValue] = useState10(defaultValue ?? "");
2723
+ const [innerValue, setInnerValue] = useState12(defaultValue ?? "");
2569
2724
  const current2 = isControlled ? value3 ?? "" : innerValue;
2570
- const generatedId = useId10();
2725
+ const generatedId = useId11();
2571
2726
  const baseId = id ?? generatedId;
2572
2727
  const labelId = label6 ? `${baseId}-label` : void 0;
2573
2728
  const helperId = helperText3 ? `${baseId}-helper` : void 0;
@@ -2578,12 +2733,12 @@ var RadioGroup2 = /* @__PURE__ */ forwardRef26(function RadioGroup3(props, ref)
2578
2733
  if (!isControlled) setInnerValue(next);
2579
2734
  onValueChange?.(next);
2580
2735
  };
2581
- return /* @__PURE__ */ jsxs24("div", { className: cx(field, className), children: [
2582
- label6 && /* @__PURE__ */ jsxs24("span", { id: labelId, className: cx(label, groupLabel), children: [
2736
+ return /* @__PURE__ */ jsxs25("div", { className: cx(field, className), children: [
2737
+ label6 && /* @__PURE__ */ jsxs25("span", { id: labelId, className: cx(label, groupLabel), children: [
2583
2738
  label6,
2584
- required && /* @__PURE__ */ jsx30("span", { className: requiredMark, "aria-hidden": true, children: "*" })
2739
+ required && /* @__PURE__ */ jsx31("span", { className: requiredMark, "aria-hidden": true, children: "*" })
2585
2740
  ] }),
2586
- /* @__PURE__ */ jsx30(
2741
+ /* @__PURE__ */ jsx31(
2587
2742
  "div",
2588
2743
  {
2589
2744
  ref,
@@ -2601,8 +2756,8 @@ var RadioGroup2 = /* @__PURE__ */ forwardRef26(function RadioGroup3(props, ref)
2601
2756
  const descriptionId = option2.description ? `${itemId}-description` : void 0;
2602
2757
  const itemDisabled = disabled || option2.disabled;
2603
2758
  const checked = option2.value === current2;
2604
- return /* @__PURE__ */ jsxs24("div", { className: option({ size }), "data-disabled": itemDisabled || void 0, children: [
2605
- /* @__PURE__ */ jsx30(
2759
+ return /* @__PURE__ */ jsxs25("div", { className: option({ size }), "data-disabled": itemDisabled || void 0, children: [
2760
+ /* @__PURE__ */ jsx31(
2606
2761
  "input",
2607
2762
  {
2608
2763
  type: "radio",
@@ -2619,20 +2774,20 @@ var RadioGroup2 = /* @__PURE__ */ forwardRef26(function RadioGroup3(props, ref)
2619
2774
  className: radio({ size })
2620
2775
  }
2621
2776
  ),
2622
- /* @__PURE__ */ jsxs24("span", { className: text, children: [
2623
- /* @__PURE__ */ jsx30("label", { htmlFor: itemId, className: labelText, children: option2.label }),
2624
- option2.description && /* @__PURE__ */ jsx30("span", { id: descriptionId, className: description4, children: option2.description })
2777
+ /* @__PURE__ */ jsxs25("span", { className: text, children: [
2778
+ /* @__PURE__ */ jsx31("label", { htmlFor: itemId, className: labelText, children: option2.label }),
2779
+ option2.description && /* @__PURE__ */ jsx31("span", { id: descriptionId, className: description4, children: option2.description })
2625
2780
  ] })
2626
2781
  ] }, option2.value);
2627
2782
  })
2628
2783
  }
2629
2784
  ),
2630
- helperText3 && /* @__PURE__ */ jsx30("p", { id: helperId, className: helperText({ error }), children: helperText3 })
2785
+ helperText3 && /* @__PURE__ */ jsx31("p", { id: helperId, className: helperText({ error }), children: helperText3 })
2631
2786
  ] });
2632
2787
  });
2633
2788
 
2634
2789
  // src/components/SegmentedControl/SegmentedControl.tsx
2635
- import { forwardRef as forwardRef27, useId as useId11, useRef as useRef14, useState as useState11 } from "react";
2790
+ import { forwardRef as forwardRef28, useId as useId12, useRef as useRef14, useState as useState13 } from "react";
2636
2791
 
2637
2792
  // src/components/SegmentedControl/SegmentedControl.css.ts
2638
2793
  import { createRuntimeFn as _7a46814 } from "@vanilla-extract/recipes/createRuntimeFn";
@@ -2641,9 +2796,9 @@ var item8 = /* @__PURE__ */ _7a46814({ defaultClassName: "_1h65mmo2", variantCla
2641
2796
  var root9 = /* @__PURE__ */ _7a46814({ defaultClassName: "_1h65mmo0", variantClassNames: { fullWidth: { true: "_1h65mmo1" } }, defaultVariants: {}, compoundVariants: [] });
2642
2797
 
2643
2798
  // src/components/SegmentedControl/SegmentedControl.tsx
2644
- import { jsx as jsx31, jsxs as jsxs25 } from "react/jsx-runtime";
2799
+ import { jsx as jsx32, jsxs as jsxs26 } from "react/jsx-runtime";
2645
2800
  var NEXT_KEYS = { ArrowRight: 1, ArrowDown: 1, ArrowLeft: -1, ArrowUp: -1 };
2646
- var SegmentedControl = /* @__PURE__ */ forwardRef27(
2801
+ var SegmentedControl = /* @__PURE__ */ forwardRef28(
2647
2802
  function SegmentedControl2(props, ref) {
2648
2803
  const {
2649
2804
  options,
@@ -2660,9 +2815,9 @@ var SegmentedControl = /* @__PURE__ */ forwardRef27(
2660
2815
  className
2661
2816
  } = props;
2662
2817
  const isControlled = "value" in props;
2663
- const [innerValue, setInnerValue] = useState11(defaultValue ?? "");
2818
+ const [innerValue, setInnerValue] = useState13(defaultValue ?? "");
2664
2819
  const current2 = isControlled ? value3 ?? "" : innerValue;
2665
- const generatedId = useId11();
2820
+ const generatedId = useId12();
2666
2821
  const labelId = label6 ? `${id ?? generatedId}-label` : void 0;
2667
2822
  const itemRefs = useRef14([]);
2668
2823
  const isEnabled = (index) => !disabled && !options[index]?.disabled;
@@ -2695,7 +2850,7 @@ var SegmentedControl = /* @__PURE__ */ forwardRef27(
2695
2850
  itemRefs.current[target]?.focus();
2696
2851
  select(target);
2697
2852
  };
2698
- const group = /* @__PURE__ */ jsxs25(
2853
+ const group = /* @__PURE__ */ jsxs26(
2699
2854
  "div",
2700
2855
  {
2701
2856
  ref,
@@ -2708,7 +2863,7 @@ var SegmentedControl = /* @__PURE__ */ forwardRef27(
2708
2863
  children: [
2709
2864
  options.map((option2, index) => {
2710
2865
  const checked = index === checkedIndex;
2711
- return /* @__PURE__ */ jsxs25(
2866
+ return /* @__PURE__ */ jsxs26(
2712
2867
  "button",
2713
2868
  {
2714
2869
  ref: (node) => {
@@ -2725,20 +2880,20 @@ var SegmentedControl = /* @__PURE__ */ forwardRef27(
2725
2880
  onClick: () => select(index),
2726
2881
  onKeyDown: (event) => handleKeyDown(event, index),
2727
2882
  children: [
2728
- option2.icon && /* @__PURE__ */ jsx31("span", { "aria-hidden": true, className: icon5, children: option2.icon }),
2883
+ option2.icon && /* @__PURE__ */ jsx32("span", { "aria-hidden": true, className: icon5, children: option2.icon }),
2729
2884
  option2.label
2730
2885
  ]
2731
2886
  },
2732
2887
  option2.value
2733
2888
  );
2734
2889
  }),
2735
- name && /* @__PURE__ */ jsx31("input", { type: "hidden", name, value: current2 })
2890
+ name && /* @__PURE__ */ jsx32("input", { type: "hidden", name, value: current2 })
2736
2891
  ]
2737
2892
  }
2738
2893
  );
2739
2894
  if (!label6) return group;
2740
- return /* @__PURE__ */ jsxs25("div", { className: cx(field, className), children: [
2741
- /* @__PURE__ */ jsx31("span", { id: labelId, className: label, children: label6 }),
2895
+ return /* @__PURE__ */ jsxs26("div", { className: cx(field, className), children: [
2896
+ /* @__PURE__ */ jsx32("span", { id: labelId, className: label, children: label6 }),
2742
2897
  group
2743
2898
  ] });
2744
2899
  }
@@ -2746,10 +2901,10 @@ var SegmentedControl = /* @__PURE__ */ forwardRef27(
2746
2901
 
2747
2902
  // src/components/Select/Select.tsx
2748
2903
  import * as RadixSelect from "@radix-ui/react-select";
2749
- import { forwardRef as forwardRef28, useId as useId12 } from "react";
2904
+ import { forwardRef as forwardRef29, useId as useId13 } from "react";
2750
2905
  import { CheckIcon as CheckIcon3, ChevronDownIcon as ChevronDownIcon4 } from "@bestow-ui/icons";
2751
- import { jsx as jsx32, jsxs as jsxs26 } from "react/jsx-runtime";
2752
- var Select = /* @__PURE__ */ forwardRef28(function Select2(props, ref) {
2906
+ import { jsx as jsx33, jsxs as jsxs27 } from "react/jsx-runtime";
2907
+ var Select = /* @__PURE__ */ forwardRef29(function Select2(props, ref) {
2753
2908
  const {
2754
2909
  options,
2755
2910
  value: value3,
@@ -2769,16 +2924,16 @@ var Select = /* @__PURE__ */ forwardRef28(function Select2(props, ref) {
2769
2924
  className
2770
2925
  } = props;
2771
2926
  const isControlled = "value" in props;
2772
- const generatedId = useId12();
2927
+ const generatedId = useId13();
2773
2928
  const triggerId = id ?? generatedId;
2774
2929
  const helperId = helperText3 ? `${triggerId}-helper` : void 0;
2775
2930
  const portal2 = usePortalProps();
2776
- return /* @__PURE__ */ jsxs26("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
2777
- label6 && /* @__PURE__ */ jsxs26("label", { htmlFor: triggerId, className: label, children: [
2931
+ return /* @__PURE__ */ jsxs27("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
2932
+ label6 && /* @__PURE__ */ jsxs27("label", { htmlFor: triggerId, className: label, children: [
2778
2933
  label6,
2779
- required && /* @__PURE__ */ jsx32("span", { className: requiredMark, "aria-hidden": true, children: "*" })
2934
+ required && /* @__PURE__ */ jsx33("span", { className: requiredMark, "aria-hidden": true, children: "*" })
2780
2935
  ] }),
2781
- /* @__PURE__ */ jsxs26(
2936
+ /* @__PURE__ */ jsxs27(
2782
2937
  RadixSelect.Root,
2783
2938
  {
2784
2939
  value: isControlled ? value3 ?? "" : void 0,
@@ -2788,7 +2943,7 @@ var Select = /* @__PURE__ */ forwardRef28(function Select2(props, ref) {
2788
2943
  required,
2789
2944
  name,
2790
2945
  children: [
2791
- /* @__PURE__ */ jsxs26(
2946
+ /* @__PURE__ */ jsxs27(
2792
2947
  RadixSelect.Trigger,
2793
2948
  {
2794
2949
  ref,
@@ -2799,12 +2954,12 @@ var Select = /* @__PURE__ */ forwardRef28(function Select2(props, ref) {
2799
2954
  "data-invalid": error || void 0,
2800
2955
  className: cx(root3({ size, fullWidth }), trigger2, className),
2801
2956
  children: [
2802
- /* @__PURE__ */ jsx32("span", { className: value, children: /* @__PURE__ */ jsx32(RadixSelect.Value, { placeholder }) }),
2803
- /* @__PURE__ */ jsx32(RadixSelect.Icon, { className: icon3, children: /* @__PURE__ */ jsx32(ChevronDownIcon4, { size: 16 }) })
2957
+ /* @__PURE__ */ jsx33("span", { className: value, children: /* @__PURE__ */ jsx33(RadixSelect.Value, { placeholder }) }),
2958
+ /* @__PURE__ */ jsx33(RadixSelect.Icon, { className: icon3, children: /* @__PURE__ */ jsx33(ChevronDownIcon4, { size: 16 }) })
2804
2959
  ]
2805
2960
  }
2806
2961
  ),
2807
- /* @__PURE__ */ jsx32(RadixSelect.Portal, { children: /* @__PURE__ */ jsx32(
2962
+ /* @__PURE__ */ jsx33(RadixSelect.Portal, { children: /* @__PURE__ */ jsx33(
2808
2963
  RadixSelect.Content,
2809
2964
  {
2810
2965
  position: "popper",
@@ -2812,15 +2967,15 @@ var Select = /* @__PURE__ */ forwardRef28(function Select2(props, ref) {
2812
2967
  collisionPadding: 8,
2813
2968
  className: cx(portal2.className, content5),
2814
2969
  style: portal2.style,
2815
- children: /* @__PURE__ */ jsx32(RadixSelect.Viewport, { className: viewport, children: options.map((option2) => /* @__PURE__ */ jsxs26(
2970
+ children: /* @__PURE__ */ jsx33(RadixSelect.Viewport, { className: viewport, children: options.map((option2) => /* @__PURE__ */ jsxs27(
2816
2971
  RadixSelect.Item,
2817
2972
  {
2818
2973
  value: option2.value,
2819
2974
  disabled: option2.disabled,
2820
2975
  className: item4,
2821
2976
  children: [
2822
- /* @__PURE__ */ jsx32(RadixSelect.ItemText, { children: option2.label }),
2823
- /* @__PURE__ */ jsx32(RadixSelect.ItemIndicator, { className: itemIndicator, children: /* @__PURE__ */ jsx32(CheckIcon3, { size: 16 }) })
2977
+ /* @__PURE__ */ jsx33(RadixSelect.ItemText, { children: option2.label }),
2978
+ /* @__PURE__ */ jsx33(RadixSelect.ItemIndicator, { className: itemIndicator, children: /* @__PURE__ */ jsx33(CheckIcon3, { size: 16 }) })
2824
2979
  ]
2825
2980
  },
2826
2981
  option2.value
@@ -2830,19 +2985,19 @@ var Select = /* @__PURE__ */ forwardRef28(function Select2(props, ref) {
2830
2985
  ]
2831
2986
  }
2832
2987
  ),
2833
- helperText3 && /* @__PURE__ */ jsx32("p", { id: helperId, className: helperText({ error }), children: helperText3 })
2988
+ helperText3 && /* @__PURE__ */ jsx33("p", { id: helperId, className: helperText({ error }), children: helperText3 })
2834
2989
  ] });
2835
2990
  });
2836
2991
 
2837
2992
  // src/components/SkipLink/SkipLink.tsx
2838
- import { forwardRef as forwardRef29 } from "react";
2993
+ import { forwardRef as forwardRef30 } from "react";
2839
2994
 
2840
2995
  // src/components/SkipLink/SkipLink.css.ts
2841
2996
  var skipLink = "_1t9jaar0";
2842
2997
 
2843
2998
  // src/components/SkipLink/SkipLink.tsx
2844
- import { jsx as jsx33 } from "react/jsx-runtime";
2845
- var SkipLink = /* @__PURE__ */ forwardRef29(function SkipLink2({ href = "#main", className, children, onClick, ...rest }, ref) {
2999
+ import { jsx as jsx34 } from "react/jsx-runtime";
3000
+ var SkipLink = /* @__PURE__ */ forwardRef30(function SkipLink2({ href = "#main", className, children, onClick, ...rest }, ref) {
2846
3001
  const m = useMessages();
2847
3002
  const handleClick = (event) => {
2848
3003
  onClick?.(event);
@@ -2854,16 +3009,16 @@ var SkipLink = /* @__PURE__ */ forwardRef29(function SkipLink2({ href = "#main",
2854
3009
  target.focus();
2855
3010
  target.scrollIntoView?.({ block: "start" });
2856
3011
  };
2857
- return /* @__PURE__ */ jsx33("a", { ref, href, className: cx(skipLink, className), onClick: handleClick, ...rest, children: children ?? m.skipToContent ?? "\uBCF8\uBB38 \uBC14\uB85C\uAC00\uAE30" });
3012
+ return /* @__PURE__ */ jsx34("a", { ref, href, className: cx(skipLink, className), onClick: handleClick, ...rest, children: children ?? m.skipToContent ?? "\uBCF8\uBB38 \uBC14\uB85C\uAC00\uAE30" });
2858
3013
  });
2859
3014
 
2860
3015
  // src/components/Slider/Slider.tsx
2861
3016
  import * as RadixSlider from "@radix-ui/react-slider";
2862
- import { forwardRef as forwardRef30, useId as useId13, useState as useState12 } from "react";
3017
+ import { forwardRef as forwardRef31, useId as useId14, useState as useState14 } from "react";
2863
3018
 
2864
3019
  // src/components/Slider/Slider.css.ts
2865
3020
  import { createRuntimeFn as _7a46815 } from "@vanilla-extract/recipes/createRuntimeFn";
2866
- var field2 = "_126mzjm0";
3021
+ var field3 = "_126mzjm0";
2867
3022
  var header6 = "_126mzjm1";
2868
3023
  var helperText2 = "_126mzjm4";
2869
3024
  var label3 = "_126mzjm2";
@@ -2874,8 +3029,8 @@ var track = /* @__PURE__ */ _7a46815({ defaultClassName: "_126mzjm8", variantCla
2874
3029
  var value2 = "_126mzjm3";
2875
3030
 
2876
3031
  // src/components/Slider/Slider.tsx
2877
- import { jsx as jsx34, jsxs as jsxs27 } from "react/jsx-runtime";
2878
- var Slider = /* @__PURE__ */ forwardRef30(function Slider2(props, ref) {
3032
+ import { jsx as jsx35, jsxs as jsxs28 } from "react/jsx-runtime";
3033
+ var Slider = /* @__PURE__ */ forwardRef31(function Slider2(props, ref) {
2879
3034
  const {
2880
3035
  value: value3,
2881
3036
  defaultValue,
@@ -2896,12 +3051,12 @@ var Slider = /* @__PURE__ */ forwardRef30(function Slider2(props, ref) {
2896
3051
  } = props;
2897
3052
  const m = useMessages();
2898
3053
  const thumbLabels = thumbLabelsProp ?? [m.rangeStart ?? "\uCD5C\uC18C", m.rangeEnd ?? "\uCD5C\uB300"];
2899
- const generatedId = useId13();
3054
+ const generatedId = useId14();
2900
3055
  const baseId = id ?? generatedId;
2901
3056
  const labelId = `${baseId}-label`;
2902
3057
  const helperId = `${baseId}-helper`;
2903
3058
  const isControlled = "value" in props;
2904
- const [innerValue, setInnerValue] = useState12(defaultValue ?? [min]);
3059
+ const [innerValue, setInnerValue] = useState14(defaultValue ?? [min]);
2905
3060
  const current2 = isControlled ? value3 ?? [min] : innerValue;
2906
3061
  const isRange = current2.length > 1;
2907
3062
  const handleChange = (next) => {
@@ -2909,12 +3064,12 @@ var Slider = /* @__PURE__ */ forwardRef30(function Slider2(props, ref) {
2909
3064
  onValueChange?.(next);
2910
3065
  };
2911
3066
  const valueText = current2.map(formatValue).join(" \u2013 ");
2912
- return /* @__PURE__ */ jsxs27("div", { className: cx(field2, className), children: [
2913
- (label6 || showValue) && /* @__PURE__ */ jsxs27("div", { className: header6, children: [
2914
- label6 && /* @__PURE__ */ jsx34("span", { id: labelId, className: label3, children: label6 }),
2915
- showValue && /* @__PURE__ */ jsx34("span", { className: value2, "aria-hidden": true, children: valueText })
3067
+ return /* @__PURE__ */ jsxs28("div", { className: cx(field3, className), children: [
3068
+ (label6 || showValue) && /* @__PURE__ */ jsxs28("div", { className: header6, children: [
3069
+ label6 && /* @__PURE__ */ jsx35("span", { id: labelId, className: label3, children: label6 }),
3070
+ showValue && /* @__PURE__ */ jsx35("span", { className: value2, "aria-hidden": true, children: valueText })
2916
3071
  ] }),
2917
- /* @__PURE__ */ jsxs27(
3072
+ /* @__PURE__ */ jsxs28(
2918
3073
  RadixSlider.Root,
2919
3074
  {
2920
3075
  ref,
@@ -2927,10 +3082,10 @@ var Slider = /* @__PURE__ */ forwardRef30(function Slider2(props, ref) {
2927
3082
  className: root10({ size }),
2928
3083
  ...rest,
2929
3084
  children: [
2930
- /* @__PURE__ */ jsx34(RadixSlider.Track, { className: track({ size }), children: /* @__PURE__ */ jsx34(RadixSlider.Range, { className: range2 }) }),
3085
+ /* @__PURE__ */ jsx35(RadixSlider.Track, { className: track({ size }), children: /* @__PURE__ */ jsx35(RadixSlider.Range, { className: range2 }) }),
2931
3086
  current2.map((thumbValue, index) => {
2932
3087
  const thumbLabelId = `${baseId}-thumb-${index}`;
2933
- return /* @__PURE__ */ jsx34(
3088
+ return /* @__PURE__ */ jsx35(
2934
3089
  RadixSlider.Thumb,
2935
3090
  {
2936
3091
  className: thumb({ size }),
@@ -2945,16 +3100,16 @@ var Slider = /* @__PURE__ */ forwardRef30(function Slider2(props, ref) {
2945
3100
  ]
2946
3101
  }
2947
3102
  ),
2948
- isRange && current2.map((_, index) => /* @__PURE__ */ jsxs27("span", { id: `${baseId}-thumb-${index}`, hidden: true, children: [
3103
+ isRange && current2.map((_, index) => /* @__PURE__ */ jsxs28("span", { id: `${baseId}-thumb-${index}`, hidden: true, children: [
2949
3104
  label6 ? "" : ariaLabel ? `${ariaLabel} ` : "",
2950
3105
  thumbLabels[index] ?? `${index + 1}`
2951
3106
  ] }, index)),
2952
- helperText3 && /* @__PURE__ */ jsx34("span", { id: helperId, className: helperText2, children: helperText3 })
3107
+ helperText3 && /* @__PURE__ */ jsx35("span", { id: helperId, className: helperText2, children: helperText3 })
2953
3108
  ] });
2954
3109
  });
2955
3110
 
2956
3111
  // src/components/Stepper/Stepper.tsx
2957
- import { forwardRef as forwardRef31 } from "react";
3112
+ import { forwardRef as forwardRef32 } from "react";
2958
3113
  import { CheckIcon as CheckIcon4 } from "@bestow-ui/icons";
2959
3114
 
2960
3115
  // src/components/Stepper/Stepper.css.ts
@@ -2967,10 +3122,10 @@ var step = /* @__PURE__ */ _7a46816({ defaultClassName: "kervhm3", variantClassN
2967
3122
  var text2 = /* @__PURE__ */ _7a46816({ defaultClassName: "kervhma", variantClassNames: { orientation: { horizontal: "kervhmb", vertical: "kervhmc" } }, defaultVariants: {}, compoundVariants: [] });
2968
3123
 
2969
3124
  // src/components/Stepper/Stepper.tsx
2970
- import { jsx as jsx35, jsxs as jsxs28 } from "react/jsx-runtime";
2971
- var Stepper = /* @__PURE__ */ forwardRef31(function Stepper2({ steps, current: current2, orientation = "horizontal", "aria-label": ariaLabel, className, ...rest }, ref) {
3125
+ import { jsx as jsx36, jsxs as jsxs29 } from "react/jsx-runtime";
3126
+ var Stepper = /* @__PURE__ */ forwardRef32(function Stepper2({ steps, current: current2, orientation = "horizontal", "aria-label": ariaLabel, className, ...rest }, ref) {
2972
3127
  const m = useMessages();
2973
- return /* @__PURE__ */ jsx35(
3128
+ return /* @__PURE__ */ jsx36(
2974
3129
  "ol",
2975
3130
  {
2976
3131
  ref,
@@ -2979,24 +3134,24 @@ var Stepper = /* @__PURE__ */ forwardRef31(function Stepper2({ steps, current: c
2979
3134
  ...rest,
2980
3135
  children: steps.map((step2, index) => {
2981
3136
  const status = index < current2 ? "complete" : index === current2 ? "current" : "upcoming";
2982
- return /* @__PURE__ */ jsxs28(
3137
+ return /* @__PURE__ */ jsxs29(
2983
3138
  "li",
2984
3139
  {
2985
3140
  className: step({ orientation }),
2986
3141
  "data-status": status,
2987
3142
  "aria-current": status === "current" ? "step" : void 0,
2988
3143
  children: [
2989
- /* @__PURE__ */ jsx35("span", { className: indicator2({ status }), "aria-hidden": true, children: status === "complete" ? /* @__PURE__ */ jsx35(CheckIcon4, { size: 16, strokeWidth: 2.5 }) : index + 1 }),
2990
- /* @__PURE__ */ jsxs28("span", { className: text2({ orientation }), children: [
2991
- /* @__PURE__ */ jsxs28("span", { className: label4({ status }), children: [
3144
+ /* @__PURE__ */ jsx36("span", { className: indicator2({ status }), "aria-hidden": true, children: status === "complete" ? /* @__PURE__ */ jsx36(CheckIcon4, { size: 16, strokeWidth: 2.5 }) : index + 1 }),
3145
+ /* @__PURE__ */ jsxs29("span", { className: text2({ orientation }), children: [
3146
+ /* @__PURE__ */ jsxs29("span", { className: label4({ status }), children: [
2992
3147
  step2.label,
2993
- status === "complete" && /* @__PURE__ */ jsxs28("span", { className: visuallyHidden, children: [
3148
+ status === "complete" && /* @__PURE__ */ jsxs29("span", { className: visuallyHidden, children: [
2994
3149
  " (",
2995
3150
  m.stepCompleted ?? "\uC644\uB8CC",
2996
3151
  ")"
2997
3152
  ] })
2998
3153
  ] }),
2999
- step2.description && /* @__PURE__ */ jsx35("span", { className: description5, children: step2.description })
3154
+ step2.description && /* @__PURE__ */ jsx36("span", { className: description5, children: step2.description })
3000
3155
  ] })
3001
3156
  ]
3002
3157
  },
@@ -3009,7 +3164,7 @@ var Stepper = /* @__PURE__ */ forwardRef31(function Stepper2({ steps, current: c
3009
3164
 
3010
3165
  // src/components/Switch/Switch.tsx
3011
3166
  import * as RadixSwitch from "@radix-ui/react-switch";
3012
- import { forwardRef as forwardRef32, useId as useId14 } from "react";
3167
+ import { forwardRef as forwardRef33, useId as useId15 } from "react";
3013
3168
 
3014
3169
  // src/components/Switch/Switch.css.ts
3015
3170
  import { createRuntimeFn as _7a46817 } from "@vanilla-extract/recipes/createRuntimeFn";
@@ -3019,12 +3174,12 @@ var thumb2 = /* @__PURE__ */ _7a46817({ defaultClassName: "o33ul26", variantClas
3019
3174
  var track2 = /* @__PURE__ */ _7a46817({ defaultClassName: "o33ul23", variantClassNames: { size: { sm: "o33ul24", md: "o33ul25" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
3020
3175
 
3021
3176
  // src/components/Switch/Switch.tsx
3022
- import { jsx as jsx36, jsxs as jsxs29 } from "react/jsx-runtime";
3023
- var Switch = /* @__PURE__ */ forwardRef32(function Switch2({ label: label6, size, id, className, disabled, "aria-label": ariaLabel, ...rest }, ref) {
3024
- const generatedId = useId14();
3177
+ import { jsx as jsx37, jsxs as jsxs30 } from "react/jsx-runtime";
3178
+ var Switch = /* @__PURE__ */ forwardRef33(function Switch2({ label: label6, size, id, className, disabled, "aria-label": ariaLabel, ...rest }, ref) {
3179
+ const generatedId = useId15();
3025
3180
  const switchId = id ?? generatedId;
3026
- return /* @__PURE__ */ jsxs29("span", { className: cx(root12({ size }), className), "data-disabled": disabled || void 0, children: [
3027
- /* @__PURE__ */ jsx36(
3181
+ return /* @__PURE__ */ jsxs30("span", { className: cx(root12({ size }), className), "data-disabled": disabled || void 0, children: [
3182
+ /* @__PURE__ */ jsx37(
3028
3183
  RadixSwitch.Root,
3029
3184
  {
3030
3185
  ref,
@@ -3033,19 +3188,19 @@ var Switch = /* @__PURE__ */ forwardRef32(function Switch2({ label: label6, size
3033
3188
  "aria-label": ariaLabel,
3034
3189
  className: track2({ size }),
3035
3190
  ...rest,
3036
- children: /* @__PURE__ */ jsx36(RadixSwitch.Thumb, { className: thumb2({ size }) })
3191
+ children: /* @__PURE__ */ jsx37(RadixSwitch.Thumb, { className: thumb2({ size }) })
3037
3192
  }
3038
3193
  ),
3039
- label6 && /* @__PURE__ */ jsx36("label", { htmlFor: switchId, className: label5, children: label6 })
3194
+ label6 && /* @__PURE__ */ jsx37("label", { htmlFor: switchId, className: label5, children: label6 })
3040
3195
  ] });
3041
3196
  });
3042
3197
 
3043
3198
  // src/components/Table/Table.tsx
3044
3199
  import {
3045
3200
  createContext as createContext3,
3046
- forwardRef as forwardRef33,
3201
+ forwardRef as forwardRef34,
3047
3202
  useContext as useContext3,
3048
- useId as useId15
3203
+ useId as useId16
3049
3204
  } from "react";
3050
3205
  import { ArrowDownIcon, ArrowUpIcon } from "@bestow-ui/icons";
3051
3206
 
@@ -3069,10 +3224,10 @@ var striped = "l3ploy6";
3069
3224
  var table = "l3ploy1";
3070
3225
 
3071
3226
  // src/components/Table/Table.tsx
3072
- import { Fragment as Fragment6, jsx as jsx37, jsxs as jsxs30 } from "react/jsx-runtime";
3227
+ import { Fragment as Fragment6, jsx as jsx38, jsxs as jsxs31 } from "react/jsx-runtime";
3073
3228
  var TableSizeContext = /* @__PURE__ */ createContext3("md");
3074
3229
  var TableSectionContext = /* @__PURE__ */ createContext3("body");
3075
- var Table = /* @__PURE__ */ forwardRef33(function Table2({
3230
+ var Table = /* @__PURE__ */ forwardRef34(function Table2({
3076
3231
  size = "md",
3077
3232
  striped: striped2,
3078
3233
  stickyHeader: stickyHeader2,
@@ -3084,8 +3239,8 @@ var Table = /* @__PURE__ */ forwardRef33(function Table2({
3084
3239
  children,
3085
3240
  ...rest
3086
3241
  }, ref) {
3087
- const captionId = useId15();
3088
- return /* @__PURE__ */ jsx37(TableSizeContext.Provider, { value: size, children: /* @__PURE__ */ jsx37(
3242
+ const captionId = useId16();
3243
+ return /* @__PURE__ */ jsx38(TableSizeContext.Provider, { value: size, children: /* @__PURE__ */ jsx38(
3089
3244
  "div",
3090
3245
  {
3091
3246
  className: cx(container, containerClassName),
@@ -3094,7 +3249,7 @@ var Table = /* @__PURE__ */ forwardRef33(function Table2({
3094
3249
  role: "region",
3095
3250
  "aria-labelledby": caption2 ? captionId : void 0,
3096
3251
  "aria-label": caption2 ? void 0 : ariaLabel,
3097
- children: /* @__PURE__ */ jsxs30(
3252
+ children: /* @__PURE__ */ jsxs31(
3098
3253
  "table",
3099
3254
  {
3100
3255
  ref,
@@ -3102,7 +3257,7 @@ var Table = /* @__PURE__ */ forwardRef33(function Table2({
3102
3257
  "aria-label": caption2 ? void 0 : ariaLabel,
3103
3258
  ...rest,
3104
3259
  children: [
3105
- caption2 && /* @__PURE__ */ jsx37("caption", { id: captionId, className: caption, children: caption2 }),
3260
+ caption2 && /* @__PURE__ */ jsx38("caption", { id: captionId, className: caption, children: caption2 }),
3106
3261
  children
3107
3262
  ]
3108
3263
  }
@@ -3110,31 +3265,31 @@ var Table = /* @__PURE__ */ forwardRef33(function Table2({
3110
3265
  }
3111
3266
  ) });
3112
3267
  });
3113
- var TableHeader = /* @__PURE__ */ forwardRef33(
3268
+ var TableHeader = /* @__PURE__ */ forwardRef34(
3114
3269
  function TableHeader2({ className, ...rest }, ref) {
3115
- return /* @__PURE__ */ jsx37(TableSectionContext.Provider, { value: "header", children: /* @__PURE__ */ jsx37("thead", { ref, className: cx(header7, className), ...rest }) });
3270
+ return /* @__PURE__ */ jsx38(TableSectionContext.Provider, { value: "header", children: /* @__PURE__ */ jsx38("thead", { ref, className: cx(header7, className), ...rest }) });
3116
3271
  }
3117
3272
  );
3118
- var TableBody = /* @__PURE__ */ forwardRef33(
3273
+ var TableBody = /* @__PURE__ */ forwardRef34(
3119
3274
  function TableBody2({ className, ...rest }, ref) {
3120
- return /* @__PURE__ */ jsx37(TableSectionContext.Provider, { value: "body", children: /* @__PURE__ */ jsx37("tbody", { ref, className: cx(body3, className), ...rest }) });
3275
+ return /* @__PURE__ */ jsx38(TableSectionContext.Provider, { value: "body", children: /* @__PURE__ */ jsx38("tbody", { ref, className: cx(body3, className), ...rest }) });
3121
3276
  }
3122
3277
  );
3123
- var TableFooter = /* @__PURE__ */ forwardRef33(
3278
+ var TableFooter = /* @__PURE__ */ forwardRef34(
3124
3279
  function TableFooter2({ className, ...rest }, ref) {
3125
- return /* @__PURE__ */ jsx37(TableSectionContext.Provider, { value: "footer", children: /* @__PURE__ */ jsx37("tfoot", { ref, className: cx(footer3, className), ...rest }) });
3280
+ return /* @__PURE__ */ jsx38(TableSectionContext.Provider, { value: "footer", children: /* @__PURE__ */ jsx38("tfoot", { ref, className: cx(footer3, className), ...rest }) });
3126
3281
  }
3127
3282
  );
3128
- var TableRow = /* @__PURE__ */ forwardRef33(function TableRow2({ selected, className, ...rest }, ref) {
3129
- return /* @__PURE__ */ jsx37("tr", { ref, className: cx(row3, className), "data-state": selected ? "selected" : void 0, ...rest });
3283
+ var TableRow = /* @__PURE__ */ forwardRef34(function TableRow2({ selected, className, ...rest }, ref) {
3284
+ return /* @__PURE__ */ jsx38("tr", { ref, className: cx(row3, className), "data-state": selected ? "selected" : void 0, ...rest });
3130
3285
  });
3131
- var TableHead = /* @__PURE__ */ forwardRef33(function TableHead2({ align, sortDirection, onSort, scope, className, children, ...rest }, ref) {
3286
+ var TableHead = /* @__PURE__ */ forwardRef34(function TableHead2({ align, sortDirection, onSort, scope, className, children, ...rest }, ref) {
3132
3287
  const size = useContext3(TableSizeContext);
3133
3288
  const section = useContext3(TableSectionContext);
3134
3289
  const sortable = onSort !== void 0;
3135
3290
  const direction = sortDirection ?? "none";
3136
3291
  const SortIcon = direction === "descending" ? ArrowDownIcon : ArrowUpIcon;
3137
- return /* @__PURE__ */ jsx37(
3292
+ return /* @__PURE__ */ jsx38(
3138
3293
  "th",
3139
3294
  {
3140
3295
  ref,
@@ -3146,17 +3301,17 @@ var TableHead = /* @__PURE__ */ forwardRef33(function TableHead2({ align, sortDi
3146
3301
  className
3147
3302
  ),
3148
3303
  ...rest,
3149
- children: sortable ? /* @__PURE__ */ jsxs30("button", { type: "button", className: sortButton, onClick: onSort, children: [
3304
+ children: sortable ? /* @__PURE__ */ jsxs31("button", { type: "button", className: sortButton, onClick: onSort, children: [
3150
3305
  children,
3151
- /* @__PURE__ */ jsx37(SortIcon, { size: 14, className: sortIcon, "data-active": direction !== "none", "aria-hidden": true })
3306
+ /* @__PURE__ */ jsx38(SortIcon, { size: 14, className: sortIcon, "data-active": direction !== "none", "aria-hidden": true })
3152
3307
  ] }) : children
3153
3308
  }
3154
3309
  );
3155
3310
  });
3156
- var TableCell = /* @__PURE__ */ forwardRef33(function TableCell2({ align, className, ...rest }, ref) {
3311
+ var TableCell = /* @__PURE__ */ forwardRef34(function TableCell2({ align, className, ...rest }, ref) {
3157
3312
  const size = useContext3(TableSizeContext);
3158
3313
  const section = useContext3(TableSectionContext);
3159
- return /* @__PURE__ */ jsx37(
3314
+ return /* @__PURE__ */ jsx38(
3160
3315
  "td",
3161
3316
  {
3162
3317
  ref,
@@ -3165,17 +3320,17 @@ var TableCell = /* @__PURE__ */ forwardRef33(function TableCell2({ align, classN
3165
3320
  }
3166
3321
  );
3167
3322
  });
3168
- var TableEmpty = /* @__PURE__ */ forwardRef33(function TableEmpty2({ colSpan, className, children, ...rest }, ref) {
3169
- return /* @__PURE__ */ jsx37(TableRow, { children: /* @__PURE__ */ jsx37(TableCell, { ref, colSpan, className: cx(emptyCell, className), ...rest, children: /* @__PURE__ */ jsx37("div", { className: emptyContent, children }) }) });
3323
+ var TableEmpty = /* @__PURE__ */ forwardRef34(function TableEmpty2({ colSpan, className, children, ...rest }, ref) {
3324
+ return /* @__PURE__ */ jsx38(TableRow, { children: /* @__PURE__ */ jsx38(TableCell, { ref, colSpan, className: cx(emptyCell, className), ...rest, children: /* @__PURE__ */ jsx38("div", { className: emptyContent, children }) }) });
3170
3325
  });
3171
3326
  function TableSkeleton({ rows = 5, columns }) {
3172
- return /* @__PURE__ */ jsx37(Fragment6, { children: Array.from({ length: rows }, (_, row5) => /* @__PURE__ */ jsx37(TableRow, { "aria-hidden": true, children: Array.from({ length: columns }, (_2, column) => /* @__PURE__ */ jsx37(TableCell, { children: /* @__PURE__ */ jsx37(Skeleton, { width: column === 0 ? "60%" : "80%" }) }, column)) }, row5)) });
3327
+ return /* @__PURE__ */ jsx38(Fragment6, { children: Array.from({ length: rows }, (_, row5) => /* @__PURE__ */ jsx38(TableRow, { "aria-hidden": true, children: Array.from({ length: columns }, (_2, column) => /* @__PURE__ */ jsx38(TableCell, { children: /* @__PURE__ */ jsx38(Skeleton, { width: column === 0 ? "60%" : "80%" }) }, column)) }, row5)) });
3173
3328
  }
3174
3329
 
3175
3330
  // src/components/Table/useTableSelection.ts
3176
- import { useCallback, useState as useState13 } from "react";
3331
+ import { useCallback, useState as useState15 } from "react";
3177
3332
  function useTableSelection(initial = []) {
3178
- const [selected, setSelected] = useState13(initial);
3333
+ const [selected, setSelected] = useState15(initial);
3179
3334
  const isSelected = useCallback((id) => selected.includes(id), [selected]);
3180
3335
  const toggle3 = useCallback((id, checked) => {
3181
3336
  setSelected((prev) => {
@@ -3205,7 +3360,7 @@ function useTableSelection(initial = []) {
3205
3360
 
3206
3361
  // src/components/Tabs/Tabs.tsx
3207
3362
  import * as RadixTabs from "@radix-ui/react-tabs";
3208
- import { createContext as createContext4, forwardRef as forwardRef34, useContext as useContext4 } from "react";
3363
+ import { createContext as createContext4, forwardRef as forwardRef35, useContext as useContext4 } from "react";
3209
3364
 
3210
3365
  // src/components/Tabs/Tabs.css.ts
3211
3366
  import { createRuntimeFn as _7a46819 } from "@vanilla-extract/recipes/createRuntimeFn";
@@ -3215,31 +3370,31 @@ var root13 = "fvhbtd0";
3215
3370
  var trigger3 = /* @__PURE__ */ _7a46819({ defaultClassName: "fvhbtd4", variantClassNames: { variant: { line: "fvhbtd5", soft: "fvhbtd6" }, size: { sm: "fvhbtd7", md: "fvhbtd8" } }, defaultVariants: { variant: "line", size: "md" }, compoundVariants: [[{ variant: "soft", size: "sm" }, "fvhbtd9"], [{ variant: "soft", size: "md" }, "fvhbtda"]] });
3216
3371
 
3217
3372
  // src/components/Tabs/Tabs.tsx
3218
- import { jsx as jsx38 } from "react/jsx-runtime";
3373
+ import { jsx as jsx39 } from "react/jsx-runtime";
3219
3374
  var TabsStyleContext = /* @__PURE__ */ createContext4({ variant: "line", size: "md" });
3220
- var Tabs = /* @__PURE__ */ forwardRef34(function Tabs2({ variant = "line", size = "md", className, ...props }, ref) {
3375
+ var Tabs = /* @__PURE__ */ forwardRef35(function Tabs2({ variant = "line", size = "md", className, ...props }, ref) {
3221
3376
  const controlled = "value" in props ? { value: props.value ?? "" } : {};
3222
- return /* @__PURE__ */ jsx38(TabsStyleContext.Provider, { value: { variant, size }, children: /* @__PURE__ */ jsx38(RadixTabs.Root, { ref, className: cx(root13, className), ...props, ...controlled }) });
3377
+ return /* @__PURE__ */ jsx39(TabsStyleContext.Provider, { value: { variant, size }, children: /* @__PURE__ */ jsx39(RadixTabs.Root, { ref, className: cx(root13, className), ...props, ...controlled }) });
3223
3378
  });
3224
- var TabsList = /* @__PURE__ */ forwardRef34(function TabsList2({ className, ...rest }, ref) {
3379
+ var TabsList = /* @__PURE__ */ forwardRef35(function TabsList2({ className, ...rest }, ref) {
3225
3380
  const { variant } = useContext4(TabsStyleContext);
3226
- return /* @__PURE__ */ jsx38(RadixTabs.List, { ref, className: cx(list6({ variant }), className), ...rest });
3381
+ return /* @__PURE__ */ jsx39(RadixTabs.List, { ref, className: cx(list6({ variant }), className), ...rest });
3227
3382
  });
3228
- var TabsTrigger = /* @__PURE__ */ forwardRef34(function TabsTrigger2({ className, ...rest }, ref) {
3383
+ var TabsTrigger = /* @__PURE__ */ forwardRef35(function TabsTrigger2({ className, ...rest }, ref) {
3229
3384
  const { variant, size } = useContext4(TabsStyleContext);
3230
- return /* @__PURE__ */ jsx38(RadixTabs.Trigger, { ref, className: cx(trigger3({ variant, size }), className), ...rest });
3385
+ return /* @__PURE__ */ jsx39(RadixTabs.Trigger, { ref, className: cx(trigger3({ variant, size }), className), ...rest });
3231
3386
  });
3232
- var TabsContent = /* @__PURE__ */ forwardRef34(function TabsContent2({ className, ...rest }, ref) {
3233
- return /* @__PURE__ */ jsx38(RadixTabs.Content, { ref, className: cx(content10, className), ...rest });
3387
+ var TabsContent = /* @__PURE__ */ forwardRef35(function TabsContent2({ className, ...rest }, ref) {
3388
+ return /* @__PURE__ */ jsx39(RadixTabs.Content, { ref, className: cx(content10, className), ...rest });
3234
3389
  });
3235
3390
 
3236
3391
  // src/components/Textarea/Textarea.tsx
3237
3392
  import {
3238
- forwardRef as forwardRef35,
3393
+ forwardRef as forwardRef36,
3239
3394
  useCallback as useCallback2,
3240
- useId as useId16,
3395
+ useId as useId17,
3241
3396
  useRef as useRef15,
3242
- useState as useState14
3397
+ useState as useState16
3243
3398
  } from "react";
3244
3399
 
3245
3400
  // src/components/Textarea/Textarea.css.ts
@@ -3251,8 +3406,8 @@ var footer4 = "_1koawa8";
3251
3406
  var textarea = /* @__PURE__ */ _7a46820({ defaultClassName: "_1koawa0", variantClassNames: { size: { sm: "_1koawa1", md: "_1koawa2", lg: "_1koawa3" }, resize: { none: "_1koawa4", vertical: "_1koawa5", both: "_1koawa6" } }, defaultVariants: { size: "md", resize: "vertical" }, compoundVariants: [] });
3252
3407
 
3253
3408
  // src/components/Textarea/Textarea.tsx
3254
- import { jsx as jsx39, jsxs as jsxs31 } from "react/jsx-runtime";
3255
- var Textarea = /* @__PURE__ */ forwardRef35(function Textarea2({
3409
+ import { jsx as jsx40, jsxs as jsxs32 } from "react/jsx-runtime";
3410
+ var Textarea = /* @__PURE__ */ forwardRef36(function Textarea2({
3256
3411
  label: label6,
3257
3412
  helperText: helperText3,
3258
3413
  error,
@@ -3273,11 +3428,11 @@ var Textarea = /* @__PURE__ */ forwardRef35(function Textarea2({
3273
3428
  "aria-describedby": ariaDescribedBy,
3274
3429
  ...rest
3275
3430
  }, ref) {
3276
- const generatedId = useId16();
3431
+ const generatedId = useId17();
3277
3432
  const textareaId = id ?? generatedId;
3278
3433
  const helperId = helperText3 ? `${textareaId}-helper` : void 0;
3279
3434
  const innerRef = useRef15(null);
3280
- const [uncontrolledLength, setUncontrolledLength] = useState14(() => String(defaultValue ?? "").length);
3435
+ const [uncontrolledLength, setUncontrolledLength] = useState16(() => String(defaultValue ?? "").length);
3281
3436
  const length = value3 !== void 0 ? String(value3).length : uncontrolledLength;
3282
3437
  const fitHeight = useCallback2(() => {
3283
3438
  const el = innerRef.current;
@@ -3292,12 +3447,12 @@ var Textarea = /* @__PURE__ */ forwardRef35(function Textarea2({
3292
3447
  fitHeight();
3293
3448
  onChange?.(event);
3294
3449
  };
3295
- return /* @__PURE__ */ jsxs31("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
3296
- label6 && /* @__PURE__ */ jsxs31("label", { htmlFor: textareaId, className: label, children: [
3450
+ return /* @__PURE__ */ jsxs32("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
3451
+ label6 && /* @__PURE__ */ jsxs32("label", { htmlFor: textareaId, className: label, children: [
3297
3452
  label6,
3298
- required && /* @__PURE__ */ jsx39("span", { className: requiredMark, "aria-hidden": true, children: "*" })
3453
+ required && /* @__PURE__ */ jsx40("span", { className: requiredMark, "aria-hidden": true, children: "*" })
3299
3454
  ] }),
3300
- /* @__PURE__ */ jsx39(
3455
+ /* @__PURE__ */ jsx40(
3301
3456
  "textarea",
3302
3457
  {
3303
3458
  ref: mergeRefs(innerRef, ref),
@@ -3319,16 +3474,16 @@ var Textarea = /* @__PURE__ */ forwardRef35(function Textarea2({
3319
3474
  ...rest
3320
3475
  }
3321
3476
  ),
3322
- (helperText3 || showCount) && /* @__PURE__ */ jsxs31("div", { className: footer4, children: [
3323
- helperText3 && /* @__PURE__ */ jsx39("p", { id: helperId, className: helperText({ error }), children: helperText3 }),
3324
- showCount && /* @__PURE__ */ jsx39("span", { className: cx(count, maxLength !== void 0 && length >= maxLength && countOver), children: maxLength !== void 0 ? `${length}/${maxLength}` : length })
3477
+ (helperText3 || showCount) && /* @__PURE__ */ jsxs32("div", { className: footer4, children: [
3478
+ helperText3 && /* @__PURE__ */ jsx40("p", { id: helperId, className: helperText({ error }), children: helperText3 }),
3479
+ showCount && /* @__PURE__ */ jsx40("span", { className: cx(count, maxLength !== void 0 && length >= maxLength && countOver), children: maxLength !== void 0 ? `${length}/${maxLength}` : length })
3325
3480
  ] })
3326
3481
  ] });
3327
3482
  });
3328
3483
 
3329
3484
  // src/components/Toast/Toast.tsx
3330
3485
  import * as RadixToast from "@radix-ui/react-toast";
3331
- import { createContext as createContext5, useCallback as useCallback3, useContext as useContext5, useMemo as useMemo4, useRef as useRef16, useState as useState15 } from "react";
3486
+ import { createContext as createContext5, useCallback as useCallback3, useContext as useContext5, useMemo as useMemo4, useRef as useRef16, useState as useState17 } from "react";
3332
3487
  import { XIcon as XIcon7 } from "@bestow-ui/icons";
3333
3488
 
3334
3489
  // src/components/Toast/Toast.css.ts
@@ -3341,13 +3496,13 @@ var toast = /* @__PURE__ */ _7a46821({ defaultClassName: "_1g11zvx1", variantCla
3341
3496
  var viewport2 = "_1g11zvx0";
3342
3497
 
3343
3498
  // src/components/Toast/Toast.tsx
3344
- import { jsx as jsx40, jsxs as jsxs32 } from "react/jsx-runtime";
3499
+ import { jsx as jsx41, jsxs as jsxs33 } from "react/jsx-runtime";
3345
3500
  var REMOVE_DELAY = 500;
3346
3501
  var ToastContext = /* @__PURE__ */ createContext5(null);
3347
3502
  function ToastProvider({ children, duration = 5e3, label: labelProp }) {
3348
3503
  const m = useMessages();
3349
3504
  const label6 = labelProp ?? m.notifications ?? "\uC54C\uB9BC";
3350
- const [toasts, setToasts] = useState15([]);
3505
+ const [toasts, setToasts] = useState17([]);
3351
3506
  const nextId = useRef16(0);
3352
3507
  const portal2 = usePortalProps();
3353
3508
  const toast2 = useCallback3((options) => {
@@ -3361,9 +3516,9 @@ function ToastProvider({ children, duration = 5e3, label: labelProp }) {
3361
3516
  setTimeout(() => setToasts((prev) => prev.filter((t) => t.open || !isTarget(t))), REMOVE_DELAY);
3362
3517
  }, []);
3363
3518
  const value3 = useMemo4(() => ({ toast: toast2, dismiss }), [toast2, dismiss]);
3364
- return /* @__PURE__ */ jsx40(ToastContext.Provider, { value: value3, children: /* @__PURE__ */ jsxs32(RadixToast.Provider, { duration, label: label6, swipeDirection: "right", children: [
3519
+ return /* @__PURE__ */ jsx41(ToastContext.Provider, { value: value3, children: /* @__PURE__ */ jsxs33(RadixToast.Provider, { duration, label: label6, swipeDirection: "right", children: [
3365
3520
  children,
3366
- toasts.map(({ id, open, title: title6, description: description7, color, duration: itemDuration, action: action3 }) => /* @__PURE__ */ jsxs32(
3521
+ toasts.map(({ id, open, title: title6, description: description7, color, duration: itemDuration, action: action3 }) => /* @__PURE__ */ jsxs33(
3367
3522
  RadixToast.Root,
3368
3523
  {
3369
3524
  open,
@@ -3373,15 +3528,15 @@ function ToastProvider({ children, duration = 5e3, label: labelProp }) {
3373
3528
  },
3374
3529
  className: toast({ color }),
3375
3530
  children: [
3376
- /* @__PURE__ */ jsx40(RadixToast.Title, { className: title5, children: title6 }),
3377
- description7 && /* @__PURE__ */ jsx40(RadixToast.Description, { className: description6, children: description7 }),
3378
- action3 && /* @__PURE__ */ jsx40(RadixToast.Action, { asChild: true, altText: action3.altText ?? action3.label, className: action2, children: /* @__PURE__ */ jsx40(Button, { size: "sm", variant: "soft", color: "neutral", onClick: action3.onClick, children: action3.label }) }),
3379
- /* @__PURE__ */ jsx40(RadixToast.Close, { className: close, "aria-label": m.close ?? "\uB2EB\uAE30", children: /* @__PURE__ */ jsx40(XIcon7, { size: 16 }) })
3531
+ /* @__PURE__ */ jsx41(RadixToast.Title, { className: title5, children: title6 }),
3532
+ description7 && /* @__PURE__ */ jsx41(RadixToast.Description, { className: description6, children: description7 }),
3533
+ action3 && /* @__PURE__ */ jsx41(RadixToast.Action, { asChild: true, altText: action3.altText ?? action3.label, className: action2, children: /* @__PURE__ */ jsx41(Button, { size: "sm", variant: "soft", color: "neutral", onClick: action3.onClick, children: action3.label }) }),
3534
+ /* @__PURE__ */ jsx41(RadixToast.Close, { className: close, "aria-label": m.close ?? "\uB2EB\uAE30", children: /* @__PURE__ */ jsx41(XIcon7, { size: 16 }) })
3380
3535
  ]
3381
3536
  },
3382
3537
  id
3383
3538
  )),
3384
- /* @__PURE__ */ jsx40(RadixToast.Viewport, { className: cx(portal2.className, viewport2), style: portal2.style })
3539
+ /* @__PURE__ */ jsx41(RadixToast.Viewport, { className: cx(portal2.className, viewport2), style: portal2.style })
3385
3540
  ] }) });
3386
3541
  }
3387
3542
  function useToast() {
@@ -3398,7 +3553,7 @@ var arrow2 = "z7rufs1";
3398
3553
  var content11 = "z7rufs0";
3399
3554
 
3400
3555
  // src/components/Tooltip/Tooltip.tsx
3401
- import { jsx as jsx41, jsxs as jsxs33 } from "react/jsx-runtime";
3556
+ import { jsx as jsx42, jsxs as jsxs34 } from "react/jsx-runtime";
3402
3557
  function Tooltip({
3403
3558
  content: content12,
3404
3559
  children,
@@ -3413,9 +3568,9 @@ function Tooltip({
3413
3568
  }) {
3414
3569
  const portal2 = usePortalProps();
3415
3570
  if (disabled || content12 == null || content12 === "") return children;
3416
- return /* @__PURE__ */ jsx41(RadixTooltip.Provider, { delayDuration: delay, children: /* @__PURE__ */ jsxs33(RadixTooltip.Root, { open, defaultOpen, onOpenChange, children: [
3417
- /* @__PURE__ */ jsx41(RadixTooltip.Trigger, { asChild: true, children }),
3418
- /* @__PURE__ */ jsx41(RadixTooltip.Portal, { children: /* @__PURE__ */ jsxs33(
3571
+ return /* @__PURE__ */ jsx42(RadixTooltip.Provider, { delayDuration: delay, children: /* @__PURE__ */ jsxs34(RadixTooltip.Root, { open, defaultOpen, onOpenChange, children: [
3572
+ /* @__PURE__ */ jsx42(RadixTooltip.Trigger, { asChild: true, children }),
3573
+ /* @__PURE__ */ jsx42(RadixTooltip.Portal, { children: /* @__PURE__ */ jsxs34(
3419
3574
  RadixTooltip.Content,
3420
3575
  {
3421
3576
  side,
@@ -3426,7 +3581,7 @@ function Tooltip({
3426
3581
  style: portal2.style,
3427
3582
  children: [
3428
3583
  content12,
3429
- /* @__PURE__ */ jsx41(RadixTooltip.Arrow, { className: arrow2, width: 10, height: 5 })
3584
+ /* @__PURE__ */ jsx42(RadixTooltip.Arrow, { className: arrow2, width: 10, height: 5 })
3430
3585
  ]
3431
3586
  }
3432
3587
  ) })
@@ -3434,7 +3589,7 @@ function Tooltip({
3434
3589
  }
3435
3590
 
3436
3591
  // src/components/VerificationCodeInput/VerificationCodeInput.tsx
3437
- import { forwardRef as forwardRef36, useEffect as useEffect10, useId as useId17, useRef as useRef17, useState as useState16 } from "react";
3592
+ import { forwardRef as forwardRef37, useEffect as useEffect10, useId as useId18, useRef as useRef17, useState as useState18 } from "react";
3438
3593
 
3439
3594
  // src/components/VerificationCodeInput/VerificationCodeInput.css.ts
3440
3595
  var input5 = "ea01812";
@@ -3444,9 +3599,9 @@ var slots = "ea01811";
3444
3599
  var timer = "ea01814";
3445
3600
 
3446
3601
  // src/components/VerificationCodeInput/VerificationCodeInput.tsx
3447
- import { jsx as jsx42, jsxs as jsxs34 } from "react/jsx-runtime";
3602
+ import { jsx as jsx43, jsxs as jsxs35 } from "react/jsx-runtime";
3448
3603
  var formatTime = (seconds) => `${String(Math.floor(seconds / 60)).padStart(2, "0")}:${String(seconds % 60).padStart(2, "0")}`;
3449
- var VerificationCodeInput = /* @__PURE__ */ forwardRef36(
3604
+ var VerificationCodeInput = /* @__PURE__ */ forwardRef37(
3450
3605
  function VerificationCodeInput2(props, ref) {
3451
3606
  const {
3452
3607
  length = 6,
@@ -3473,17 +3628,17 @@ var VerificationCodeInput = /* @__PURE__ */ forwardRef36(
3473
3628
  const label6 = labelProp ?? m.verificationCode ?? "\uC778\uC99D\uBC88\uD638";
3474
3629
  const resendText = resendTextProp ?? m.resend ?? "\uC7AC\uC804\uC1A1";
3475
3630
  const expiredText = expiredTextProp ?? m.verificationExpired ?? "\uC778\uC99D \uC2DC\uAC04\uC774 \uC9C0\uB0AC\uC5B4\uC694. \uC7AC\uC804\uC1A1\uD574 \uC8FC\uC138\uC694.";
3476
- const generatedId = useId17();
3631
+ const generatedId = useId18();
3477
3632
  const inputId = id ?? generatedId;
3478
3633
  const helperId = `${inputId}-helper`;
3479
3634
  const statusId = `${inputId}-status`;
3480
3635
  const inputRef = useRef17(null);
3481
3636
  const isControlled = "value" in props;
3482
- const [innerValue, setInnerValue] = useState16(defaultValue ?? "");
3637
+ const [innerValue, setInnerValue] = useState18(defaultValue ?? "");
3483
3638
  const code = (isControlled ? value3 ?? "" : innerValue).slice(0, length);
3484
- const [focused, setFocused] = useState16(false);
3485
- const [endAt, setEndAt] = useState16(() => expiresIn ? Date.now() + expiresIn * 1e3 : null);
3486
- const [remaining, setRemaining] = useState16(expiresIn ?? 0);
3639
+ const [focused, setFocused] = useState18(false);
3640
+ const [endAt, setEndAt] = useState18(() => expiresIn ? Date.now() + expiresIn * 1e3 : null);
3641
+ const [remaining, setRemaining] = useState18(expiresIn ?? 0);
3487
3642
  const expired = expiresIn !== void 0 && remaining <= 0;
3488
3643
  const onExpireRef = useRef17(onExpire);
3489
3644
  useEffect10(() => {
@@ -3524,17 +3679,17 @@ var VerificationCodeInput = /* @__PURE__ */ forwardRef36(
3524
3679
  };
3525
3680
  const description7 = helperText3 ?? m.verificationCodeHint?.(length, type) ?? `${length}\uC790\uB9AC ${type === "numeric" ? "\uC22B\uC790" : "\uBB38\uC790"}\uB97C \uC785\uB825\uD558\uC138\uC694.`;
3526
3681
  const activeIndex = Math.min(code.length, length - 1);
3527
- return /* @__PURE__ */ jsxs34(
3682
+ return /* @__PURE__ */ jsxs35(
3528
3683
  "div",
3529
3684
  {
3530
3685
  className: cx(field, className),
3531
3686
  "data-invalid": error || void 0,
3532
3687
  "data-disabled": disabled || void 0,
3533
3688
  children: [
3534
- /* @__PURE__ */ jsx42("label", { htmlFor: inputId, className: label, children: label6 }),
3535
- /* @__PURE__ */ jsxs34("div", { className: row4, children: [
3536
- /* @__PURE__ */ jsxs34("div", { className: slots, children: [
3537
- /* @__PURE__ */ jsx42(
3689
+ /* @__PURE__ */ jsx43("label", { htmlFor: inputId, className: label, children: label6 }),
3690
+ /* @__PURE__ */ jsxs35("div", { className: row4, children: [
3691
+ /* @__PURE__ */ jsxs35("div", { className: slots, children: [
3692
+ /* @__PURE__ */ jsx43(
3538
3693
  "input",
3539
3694
  {
3540
3695
  ref: mergeRefs(ref, inputRef),
@@ -3554,7 +3709,7 @@ var VerificationCodeInput = /* @__PURE__ */ forwardRef36(
3554
3709
  className: input5
3555
3710
  }
3556
3711
  ),
3557
- Array.from({ length }, (_, index) => /* @__PURE__ */ jsx42(
3712
+ Array.from({ length }, (_, index) => /* @__PURE__ */ jsx43(
3558
3713
  "div",
3559
3714
  {
3560
3715
  className: slot,
@@ -3565,12 +3720,12 @@ var VerificationCodeInput = /* @__PURE__ */ forwardRef36(
3565
3720
  index
3566
3721
  ))
3567
3722
  ] }),
3568
- expiresIn !== void 0 && /* @__PURE__ */ jsx42("span", { role: "timer", className: timer, children: formatTime(remaining) }),
3569
- onResend && /* @__PURE__ */ jsx42(Button, { size: "sm", variant: "outline", color: "neutral", onClick: resend, disabled, children: resendText })
3723
+ expiresIn !== void 0 && /* @__PURE__ */ jsx43("span", { role: "timer", className: timer, children: formatTime(remaining) }),
3724
+ onResend && /* @__PURE__ */ jsx43(Button, { size: "sm", variant: "outline", color: "neutral", onClick: resend, disabled, children: resendText })
3570
3725
  ] }),
3571
- /* @__PURE__ */ jsx42("p", { id: helperId, className: helperText({ error }), children: description7 }),
3572
- /* @__PURE__ */ jsx42("p", { id: statusId, role: "status", className: helperText({ error: true }), children: expired ? expiredText : "" }),
3573
- name && /* @__PURE__ */ jsx42("input", { type: "hidden", name, value: code })
3726
+ /* @__PURE__ */ jsx43("p", { id: helperId, className: helperText({ error }), children: description7 }),
3727
+ /* @__PURE__ */ jsx43("p", { id: statusId, role: "status", className: helperText({ error: true }), children: expired ? expiredText : "" }),
3728
+ name && /* @__PURE__ */ jsx43("input", { type: "hidden", name, value: code })
3574
3729
  ]
3575
3730
  }
3576
3731
  );
@@ -3591,6 +3746,7 @@ export {
3591
3746
  Checkbox,
3592
3747
  Combobox,
3593
3748
  DatePicker,
3749
+ DateRangePicker,
3594
3750
  Drawer,
3595
3751
  DrawerClose,
3596
3752
  DropdownMenu,