@bestow-ui/react 1.2.0 → 1.4.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
@@ -1,10 +1,12 @@
1
1
  "use client";
2
2
  import {
3
3
  KOREAN_WEEKDAYS,
4
+ Skeleton,
4
5
  addDays,
5
6
  addMonths,
6
7
  compareDays,
7
8
  cx,
9
+ focusField,
8
10
  formatBusinessNumber,
9
11
  formatKoreanAmount,
10
12
  formatPhoneNumber,
@@ -16,10 +18,12 @@ import {
16
18
  mergeThemes,
17
19
  parseISODate,
18
20
  phoneNumberMaxDigits,
21
+ presetRange,
19
22
  themeClass,
20
23
  themeToStyle,
21
- toISODate
22
- } from "./chunk-LHT64JDG.js";
24
+ toISODate,
25
+ visuallyHidden
26
+ } from "./chunk-TIFI6ZQU.js";
23
27
 
24
28
  // src/theme/ThemeProvider.tsx
25
29
  import { createContext, forwardRef, useContext, useMemo } from "react";
@@ -115,9 +119,6 @@ import { forwardRef as forwardRef4 } from "react";
115
119
  import { LoaderIcon } from "@bestow-ui/icons";
116
120
  import { forwardRef as forwardRef3 } from "react";
117
121
 
118
- // src/styles/visuallyHidden.css.ts
119
- var visuallyHidden = "_1kdtbw10";
120
-
121
122
  // src/components/Spinner/Spinner.css.ts
122
123
  import { createRuntimeFn as _7a468 } from "@vanilla-extract/recipes/createRuntimeFn";
123
124
  var spinner = /* @__PURE__ */ _7a468({ defaultClassName: "_4b5tg40", variantClassNames: { color: { inherit: "_4b5tg41", primary: "_4b5tg42", neutral: "_4b5tg43", danger: "_4b5tg44" }, size: { sm: "_4b5tg45", md: "_4b5tg46", lg: "_4b5tg47" } }, defaultVariants: { color: "inherit", size: "md" }, compoundVariants: [] });
@@ -126,11 +127,11 @@ var spinner = /* @__PURE__ */ _7a468({ defaultClassName: "_4b5tg40", variantClas
126
127
  import { jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
127
128
  var Spinner = /* @__PURE__ */ forwardRef3(function Spinner2({ size, color, label: labelProp, className, ...rest }, ref) {
128
129
  const m = useMessages();
129
- const label5 = labelProp ?? m.loading ?? "\uB85C\uB529 \uC911";
130
- const a11y = label5 ? { role: "status" } : { "aria-hidden": true };
130
+ const label6 = labelProp ?? m.loading ?? "\uB85C\uB529 \uC911";
131
+ const a11y = label6 ? { role: "status" } : { "aria-hidden": true };
131
132
  return /* @__PURE__ */ jsxs2("span", { ref, className: cx(spinner({ size, color }), className), ...a11y, ...rest, children: [
132
133
  /* @__PURE__ */ jsx4(LoaderIcon, { size: "100%" }),
133
- label5 && /* @__PURE__ */ jsx4("span", { className: visuallyHidden, children: label5 })
134
+ label6 && /* @__PURE__ */ jsx4("span", { className: visuallyHidden, children: label6 })
134
135
  ] });
135
136
  });
136
137
 
@@ -224,13 +225,13 @@ var Input = /* @__PURE__ */ forwardRef5(function Input2({ size, invalid, fullWid
224
225
  // src/components/Input/TextField.tsx
225
226
  import { forwardRef as forwardRef6, useId } from "react";
226
227
  import { jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
227
- var TextField = /* @__PURE__ */ forwardRef6(function TextField2({ label: label5, helperText: helperText3, error, required, fullWidth, id, "aria-describedby": ariaDescribedBy, ...rest }, ref) {
228
+ var TextField = /* @__PURE__ */ forwardRef6(function TextField2({ label: label6, helperText: helperText3, error, required, fullWidth, id, "aria-describedby": ariaDescribedBy, ...rest }, ref) {
228
229
  const generatedId = useId();
229
230
  const inputId = id ?? generatedId;
230
231
  const helperId = helperText3 ? `${inputId}-helper` : void 0;
231
232
  return /* @__PURE__ */ jsxs5("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
232
- label5 && /* @__PURE__ */ jsxs5("label", { htmlFor: inputId, className: label, children: [
233
- label5,
233
+ label6 && /* @__PURE__ */ jsxs5("label", { htmlFor: inputId, className: label, children: [
234
+ label6,
234
235
  required && /* @__PURE__ */ jsx7("span", { className: requiredMark, "aria-hidden": true, children: "*" })
235
236
  ] }),
236
237
  /* @__PURE__ */ jsx7(
@@ -259,7 +260,10 @@ function useReturnFocus(hasTrigger, onCloseAutoFocus) {
259
260
  const returnTo = useRef(null);
260
261
  return {
261
262
  onOpenAutoFocus: () => {
262
- returnTo.current = document.activeElement instanceof HTMLElement ? document.activeElement : null;
263
+ const active = document.activeElement instanceof HTMLElement ? document.activeElement : null;
264
+ const menu = active?.closest('[role="menu"]');
265
+ const menuTrigger = menu?.getAttribute("aria-labelledby");
266
+ returnTo.current = menuTrigger && document.getElementById(menuTrigger) || active;
263
267
  },
264
268
  onCloseAutoFocus: (event) => {
265
269
  onCloseAutoFocus?.(event);
@@ -293,7 +297,7 @@ function Modal({
293
297
  onOpenChange,
294
298
  trigger: trigger4,
295
299
  title: title6,
296
- description: description6,
300
+ description: description7,
297
301
  children,
298
302
  footer: footer5,
299
303
  size,
@@ -317,12 +321,12 @@ function Modal({
317
321
  onPointerDownOutside: closeOnOverlayClick ? void 0 : (event) => event.preventDefault(),
318
322
  onOpenAutoFocus: focus.onOpenAutoFocus,
319
323
  onCloseAutoFocus: focus.onCloseAutoFocus,
320
- ...description6 ? {} : { "aria-describedby": void 0 },
324
+ ...description7 ? {} : { "aria-describedby": void 0 },
321
325
  children: [
322
326
  /* @__PURE__ */ jsxs6("div", { className: header2, children: [
323
327
  /* @__PURE__ */ jsxs6("div", { className: headings, children: [
324
328
  /* @__PURE__ */ jsx8(Dialog.Title, { className: title, children: title6 }),
325
- description6 && /* @__PURE__ */ jsx8(Dialog.Description, { className: description, children: description6 })
329
+ description7 && /* @__PURE__ */ jsx8(Dialog.Description, { className: description, children: description7 })
326
330
  ] }),
327
331
  !hideCloseButton && /* @__PURE__ */ jsx8(Dialog.Close, { className: closeButton, "aria-label": m.close ?? "\uB2EB\uAE30", children: /* @__PURE__ */ jsx8(XIcon, { size: 16 }) })
328
332
  ] }),
@@ -400,7 +404,7 @@ var AddressInput = /* @__PURE__ */ forwardRef7(
400
404
  className
401
405
  } = props;
402
406
  const m = useMessages();
403
- const label5 = labelProp ?? m.address ?? "\uC8FC\uC18C";
407
+ const label6 = labelProp ?? m.address ?? "\uC8FC\uC18C";
404
408
  const searchLabel = searchLabelProp ?? m.addressSearch ?? "\uC8FC\uC18C \uAC80\uC0C9";
405
409
  const detailPlaceholder = detailPlaceholderProp ?? m.detailAddressPlaceholder ?? "\uC0C1\uC138 \uC8FC\uC18C (\uB3D9\xB7\uD638\uC218 \uB4F1)";
406
410
  const loadErrorText = loadErrorTextProp ?? m.addressLoadError ?? "\uC8FC\uC18C \uAC80\uC0C9\uC744 \uBD88\uB7EC\uC624\uC9C0 \uBABB\uD588\uC5B4\uC694. \uC7A0\uC2DC \uB4A4 \uB2E4\uC2DC \uC2DC\uB3C4\uD574 \uC8FC\uC138\uC694.";
@@ -434,7 +438,7 @@ var AddressInput = /* @__PURE__ */ forwardRef7(
434
438
  const fullAddress = `${current2.address}${current2.extraAddress ?? ""}`;
435
439
  return /* @__PURE__ */ jsxs7("fieldset", { ref, className: cx(fieldset, className), disabled, "aria-describedby": helperId, children: [
436
440
  /* @__PURE__ */ jsxs7("legend", { className: legend, children: [
437
- label5,
441
+ label6,
438
442
  required && /* @__PURE__ */ jsx9("span", { className: requiredMark, "aria-hidden": true, children: "*" })
439
443
  ] }),
440
444
  /* @__PURE__ */ jsxs7("div", { className: row, children: [
@@ -539,7 +543,7 @@ var root4 = /* @__PURE__ */ _7a4685({ defaultClassName: "_1y7mzsn0", variantClas
539
543
 
540
544
  // src/components/Checkbox/Checkbox.tsx
541
545
  import { jsx as jsx10, jsxs as jsxs8 } from "react/jsx-runtime";
542
- var Checkbox = /* @__PURE__ */ forwardRef8(function Checkbox2({ label: label5, size, indeterminate = false, invalid, disabled, onChange, onCheckedChange, className, ...rest }, ref) {
546
+ var Checkbox = /* @__PURE__ */ forwardRef8(function Checkbox2({ label: label6, size, indeterminate = false, invalid, disabled, onChange, onCheckedChange, className, ...rest }, ref) {
543
547
  const innerRef = useRef3(null);
544
548
  useEffect2(() => {
545
549
  if (innerRef.current) innerRef.current.indeterminate = indeterminate;
@@ -573,7 +577,7 @@ var Checkbox = /* @__PURE__ */ forwardRef8(function Checkbox2({ label: label5, s
573
577
  ) }),
574
578
  /* @__PURE__ */ jsx10("svg", { className: indeterminateIcon, viewBox: "0 0 20 20", fill: "none", "aria-hidden": true, children: /* @__PURE__ */ jsx10("path", { d: "M6 10h8", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }) })
575
579
  ] }),
576
- label5
580
+ label6
577
581
  ] });
578
582
  });
579
583
 
@@ -599,7 +603,7 @@ var AgreementGroup = /* @__PURE__ */ forwardRef9(
599
603
  value: value3,
600
604
  defaultValue,
601
605
  onValueChange,
602
- label: label5,
606
+ label: label6,
603
607
  allLabel: allLabelProp,
604
608
  helperText: helperText3,
605
609
  error,
@@ -609,6 +613,7 @@ var AgreementGroup = /* @__PURE__ */ forwardRef9(
609
613
  showText: showTextProp,
610
614
  hideText: hideTextProp,
611
615
  name,
616
+ id,
612
617
  className
613
618
  } = props;
614
619
  const m = useMessages();
@@ -627,7 +632,7 @@ var AgreementGroup = /* @__PURE__ */ forwardRef9(
627
632
  if (!isControlled) setInnerValue(next);
628
633
  onValueChange?.(next);
629
634
  };
630
- const allValues = items2.map((item8) => item8.value);
635
+ const allValues = items2.map((item9) => item9.value);
631
636
  const agreedCount = allValues.filter((v) => agreed.includes(v)).length;
632
637
  const allChecked = items2.length > 0 && agreedCount === items2.length;
633
638
  const toggleItem = (itemValue, checked) => update(checked ? [...agreed.filter((v) => v !== itemValue), itemValue] : agreed.filter((v) => v !== itemValue));
@@ -635,12 +640,13 @@ var AgreementGroup = /* @__PURE__ */ forwardRef9(
635
640
  "fieldset",
636
641
  {
637
642
  ref,
643
+ id,
638
644
  className: cx(fieldset2, className),
639
645
  disabled,
640
646
  "aria-describedby": helperId,
641
647
  "data-invalid": error || void 0,
642
648
  children: [
643
- label5 && /* @__PURE__ */ jsx11("legend", { className: legend2, children: label5 }),
649
+ label6 && /* @__PURE__ */ jsx11("legend", { className: legend2, children: label6 }),
644
650
  /* @__PURE__ */ jsxs9("div", { className: box, children: [
645
651
  /* @__PURE__ */ jsx11("div", { className: all, children: /* @__PURE__ */ jsx11(
646
652
  Checkbox,
@@ -651,28 +657,28 @@ var AgreementGroup = /* @__PURE__ */ forwardRef9(
651
657
  onChange: (event) => update(event.target.checked ? allValues : [])
652
658
  }
653
659
  ) }),
654
- /* @__PURE__ */ jsx11("ul", { className: list, children: items2.map((item8) => {
655
- const labelId = `${baseId}-${item8.value}-label`;
656
- const toggleTextId = `${baseId}-${item8.value}-toggle`;
657
- const contentId = `${baseId}-${item8.value}-content`;
658
- const isOpen = expanded.includes(item8.value);
660
+ /* @__PURE__ */ jsx11("ul", { className: list, children: items2.map((item9) => {
661
+ const labelId = `${baseId}-${item9.value}-label`;
662
+ const toggleTextId = `${baseId}-${item9.value}-toggle`;
663
+ const contentId = `${baseId}-${item9.value}-content`;
664
+ const isOpen = expanded.includes(item9.value);
659
665
  return /* @__PURE__ */ jsxs9("li", { className: item2, children: [
660
666
  /* @__PURE__ */ jsxs9("div", { className: row2, children: [
661
667
  /* @__PURE__ */ jsx11(
662
668
  Checkbox,
663
669
  {
664
670
  size: "sm",
665
- checked: agreed.includes(item8.value),
666
- invalid: error && item8.required && !agreed.includes(item8.value),
667
- onChange: (event) => toggleItem(item8.value, event.target.checked),
671
+ checked: agreed.includes(item9.value),
672
+ invalid: error && item9.required && !agreed.includes(item9.value),
673
+ onChange: (event) => toggleItem(item9.value, event.target.checked),
668
674
  label: /* @__PURE__ */ jsxs9("span", { id: labelId, children: [
669
- /* @__PURE__ */ jsx11("span", { className: tag, "data-required": item8.required || void 0, children: item8.required ? requiredText : optionalText }),
675
+ /* @__PURE__ */ jsx11("span", { className: tag, "data-required": item9.required || void 0, children: item9.required ? requiredText : optionalText }),
670
676
  " ",
671
- item8.label
677
+ item9.label
672
678
  ] })
673
679
  }
674
680
  ),
675
- item8.content && /* @__PURE__ */ jsxs9(
681
+ item9.content && /* @__PURE__ */ jsxs9(
676
682
  "button",
677
683
  {
678
684
  type: "button",
@@ -680,7 +686,7 @@ var AgreementGroup = /* @__PURE__ */ forwardRef9(
680
686
  "aria-expanded": isOpen,
681
687
  "aria-controls": contentId,
682
688
  "aria-labelledby": `${labelId} ${toggleTextId}`,
683
- onClick: () => setExpanded((prev) => isOpen ? prev.filter((v) => v !== item8.value) : [...prev, item8.value]),
689
+ onClick: () => setExpanded((prev) => isOpen ? prev.filter((v) => v !== item9.value) : [...prev, item9.value]),
684
690
  children: [
685
691
  /* @__PURE__ */ jsx11("span", { id: toggleTextId, children: isOpen ? hideText : showText }),
686
692
  /* @__PURE__ */ jsx11(ChevronDownIcon2, { size: 14, className: chevron2 })
@@ -688,10 +694,10 @@ var AgreementGroup = /* @__PURE__ */ forwardRef9(
688
694
  }
689
695
  )
690
696
  ] }),
691
- item8.content && isOpen && // 내용이 길면 스크롤된다 — 키보드로도 스크롤할 수 있게 포커스를 받는 이름 있는 영역으로 둔다
697
+ item9.content && isOpen && // 내용이 길면 스크롤된다 — 키보드로도 스크롤할 수 있게 포커스를 받는 이름 있는 영역으로 둔다
692
698
  // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex
693
- /* @__PURE__ */ jsx11("div", { id: contentId, role: "region", "aria-labelledby": labelId, tabIndex: 0, className: content3, children: item8.content })
694
- ] }, item8.value);
699
+ /* @__PURE__ */ jsx11("div", { id: contentId, role: "region", "aria-labelledby": labelId, tabIndex: 0, className: content3, children: item9.content })
700
+ ] }, item9.value);
695
701
  }) })
696
702
  ] }),
697
703
  name && agreed.map((v) => /* @__PURE__ */ jsx11("input", { type: "hidden", name, value: v }, v)),
@@ -808,7 +814,7 @@ function useFormattedInput({
808
814
  const input6 = event.currentTarget;
809
815
  const { selectionStart: start, selectionEnd: end2 } = input6;
810
816
  if (start === null || start !== end2) return;
811
- const countBefore = (text2) => [...text2].filter(isMeaningful2).length;
817
+ const countBefore = (text3) => [...text3].filter(isMeaningful2).length;
812
818
  if (event.key === "Backspace" && start > 0 && !isMeaningful2(input6.value[start - 1])) {
813
819
  const index = countBefore(input6.value.slice(0, start)) - 1;
814
820
  if (index < 0) return;
@@ -851,14 +857,14 @@ var AmountInput = /* @__PURE__ */ forwardRef11(
851
857
  const inputRef = useRef5(null);
852
858
  const m = useMessages();
853
859
  const unit2 = unitProp ?? m.currencyUnit ?? "\uC6D0";
854
- const label5 = labelProp ?? m.amount ?? "\uAE08\uC561";
860
+ const label6 = labelProp ?? m.amount ?? "\uAE08\uC561";
855
861
  const sanitize4 = (input6) => {
856
862
  let digits = input6.replace(/\D/g, "").replace(/^0+(?=\d)/, "").slice(0, MAX_DIGITS);
857
863
  if (max !== void 0 && digits && Number(digits) > max) digits = String(Math.floor(max));
858
864
  return digits;
859
865
  };
860
866
  const toRaw = (amount) => amount === null || amount === void 0 ? "" : String(Math.floor(Math.abs(amount)));
861
- const field3 = useFormattedInput({
867
+ const field4 = useFormattedInput({
862
868
  isControlled: "value" in props,
863
869
  value: toRaw(value3),
864
870
  defaultValue: toRaw(defaultValue),
@@ -868,18 +874,18 @@ var AmountInput = /* @__PURE__ */ forwardRef11(
868
874
  isMeaningful: isDigit,
869
875
  inputRef
870
876
  });
871
- const reading = showKoreanAmount && field3.raw !== "" ? formatKoreanAmount(Number(field3.raw), unit2) : null;
877
+ const reading = showKoreanAmount && field4.raw !== "" ? formatKoreanAmount(Number(field4.raw), unit2) : null;
872
878
  return /* @__PURE__ */ jsx13(
873
879
  TextField,
874
880
  {
875
881
  ref: mergeRefs(ref, inputRef),
876
- label: label5,
882
+ label: label6,
877
883
  placeholder,
878
884
  inputMode: "numeric",
879
- value: field3.display,
880
- onChange: field3.onChange,
885
+ value: field4.display,
886
+ onChange: field4.onChange,
881
887
  onKeyDown: (event) => {
882
- field3.onKeyDown(event);
888
+ field4.onKeyDown(event);
883
889
  onKeyDown?.(event);
884
890
  },
885
891
  endAdornment: unit2,
@@ -914,8 +920,8 @@ function getInitials(name) {
914
920
  return (first(a) + first(b)).toUpperCase();
915
921
  }
916
922
  var Avatar = /* @__PURE__ */ forwardRef12(function Avatar2({ src, alt, name, fallback: fallback2, size, shape, className, ...rest }, ref) {
917
- const label5 = alt ?? name;
918
- const a11y = label5 ? { role: "img", "aria-label": label5 } : { "aria-hidden": true };
923
+ const label6 = alt ?? name;
924
+ const a11y = label6 ? { role: "img", "aria-label": label6 } : { "aria-hidden": true };
919
925
  const initials = name ? getInitials(name) : "";
920
926
  return /* @__PURE__ */ jsxs12(RadixAvatar.Root, { ref, className: cx(root5({ size, shape }), className), ...a11y, ...rest, children: [
921
927
  src && /* @__PURE__ */ jsx14(RadixAvatar.Image, { src, alt: "", className: image }),
@@ -990,15 +996,15 @@ var separator = "_18t8ztt4";
990
996
 
991
997
  // src/components/Breadcrumb/Breadcrumb.tsx
992
998
  import { jsx as jsx16, jsxs as jsxs14 } from "react/jsx-runtime";
993
- 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) {
994
1000
  const m = useMessages();
995
1001
  const ariaLabel = ariaLabelProp ?? m.breadcrumb ?? "\uC774\uB3D9 \uACBD\uB85C";
996
- const sep = separator3 ?? /* @__PURE__ */ jsx16(ChevronRightIcon, { size: 14 });
997
- return /* @__PURE__ */ jsx16("nav", { ref, "aria-label": ariaLabel, className, ...rest, children: /* @__PURE__ */ jsx16("ol", { className: list2, children: items2.map((item8, index) => {
1002
+ const sep = separator4 ?? /* @__PURE__ */ jsx16(ChevronRightIcon, { size: 14 });
1003
+ return /* @__PURE__ */ jsx16("nav", { ref, "aria-label": ariaLabel, className, ...rest, children: /* @__PURE__ */ jsx16("ol", { className: list2, children: items2.map((item9, index) => {
998
1004
  const isCurrent = index === items2.length - 1;
999
1005
  return /* @__PURE__ */ jsxs14("li", { className: item3, children: [
1000
1006
  index > 0 && /* @__PURE__ */ jsx16("span", { className: separator, "aria-hidden": true, children: sep }),
1001
- isCurrent || item8.href === void 0 ? /* @__PURE__ */ jsx16("span", { className: isCurrent ? current : void 0, "aria-current": isCurrent ? "page" : void 0, children: item8.label }) : /* @__PURE__ */ jsx16(Link, { as: linkAs, href: item8.href, color: "neutral", underline: "hover", className: link2, children: item8.label })
1007
+ isCurrent || item9.href === void 0 ? /* @__PURE__ */ jsx16("span", { className: isCurrent ? current : void 0, "aria-current": isCurrent ? "page" : void 0, children: item9.label }) : /* @__PURE__ */ jsx16(Link, { as: linkAs, href: item9.href, color: "neutral", underline: "hover", className: link2, children: item9.label })
1002
1008
  ] }, index);
1003
1009
  }) }) });
1004
1010
  });
@@ -1027,10 +1033,10 @@ var BusinessNumberInput = /* @__PURE__ */ forwardRef15(
1027
1033
  const inputRef = useRef6(null);
1028
1034
  const m = useMessages();
1029
1035
  const invalidText = invalidTextProp ?? m.businessNumberInvalid ?? "\uC62C\uBC14\uB978 \uC0AC\uC5C5\uC790\uB4F1\uB85D\uBC88\uD638\uAC00 \uC544\uB2C8\uC5D0\uC694. \uBC88\uD638\uB97C \uB2E4\uC2DC \uD655\uC778\uD574 \uC8FC\uC138\uC694.";
1030
- const label5 = labelProp ?? m.businessNumber ?? "\uC0AC\uC5C5\uC790\uB4F1\uB85D\uBC88\uD638";
1036
+ const label6 = labelProp ?? m.businessNumber ?? "\uC0AC\uC5C5\uC790\uB4F1\uB85D\uBC88\uD638";
1031
1037
  const incompleteText = m.businessNumberIncomplete ?? "10\uC790\uB9AC\uB97C \uBAA8\uB450 \uC785\uB825\uD574 \uC8FC\uC138\uC694.";
1032
1038
  const [touched, setTouched] = useState4(false);
1033
- const field3 = useFormattedInput({
1039
+ const field4 = useFormattedInput({
1034
1040
  isControlled: "value" in props,
1035
1041
  value: value3,
1036
1042
  defaultValue,
@@ -1040,20 +1046,20 @@ var BusinessNumberInput = /* @__PURE__ */ forwardRef15(
1040
1046
  isMeaningful: isDigit2,
1041
1047
  inputRef
1042
1048
  });
1043
- const complete = field3.raw.length === 10;
1044
- 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);
1045
1051
  const showAuto = autoInvalid && error === void 0;
1046
1052
  return /* @__PURE__ */ jsx17(
1047
1053
  TextField,
1048
1054
  {
1049
1055
  ref: mergeRefs(ref, inputRef),
1050
- label: label5,
1056
+ label: label6,
1051
1057
  placeholder,
1052
1058
  inputMode: "numeric",
1053
- value: field3.display,
1054
- onChange: field3.onChange,
1059
+ value: field4.display,
1060
+ onChange: field4.onChange,
1055
1061
  onKeyDown: (event) => {
1056
- field3.onKeyDown(event);
1062
+ field4.onKeyDown(event);
1057
1063
  onKeyDown?.(event);
1058
1064
  },
1059
1065
  onBlur: (event) => {
@@ -1238,7 +1244,7 @@ var Calendar = /* @__PURE__ */ forwardRef17(function Calendar2(props, ref) {
1238
1244
  const isToday = isSameDay(date, today);
1239
1245
  const holiday = !!isHoliday?.(date);
1240
1246
  const disabled = isDisabled(date);
1241
- const label5 = [
1247
+ const label6 = [
1242
1248
  m.dayLabel?.(date, weekdaysLong[date.getDay()]) ?? `${date.getDate()}, ${date.getFullYear()}\uB144 ${date.getMonth() + 1}\uC6D4 ${weekdaysLong[date.getDay()]}`,
1243
1249
  holiday && (m.holiday ?? "\uACF5\uD734\uC77C"),
1244
1250
  isToday && (m.today ?? "\uC624\uB298")
@@ -1253,7 +1259,7 @@ var Calendar = /* @__PURE__ */ forwardRef17(function Calendar2(props, ref) {
1253
1259
  "data-holiday": holiday || void 0,
1254
1260
  "data-selected": isSelected || void 0,
1255
1261
  tabIndex: isSameDay(date, focused) ? 0 : -1,
1256
- "aria-label": label5,
1262
+ "aria-label": label6,
1257
1263
  "aria-current": isToday ? "date" : void 0,
1258
1264
  "aria-disabled": disabled || void 0,
1259
1265
  onClick: () => select(date),
@@ -1305,7 +1311,7 @@ var Combobox = /* @__PURE__ */ forwardRef18(function Combobox2(props, ref) {
1305
1311
  filter = defaultFilter,
1306
1312
  emptyMessage: emptyMessageProp,
1307
1313
  placeholder,
1308
- label: label5,
1314
+ label: label6,
1309
1315
  helperText: helperText3,
1310
1316
  error,
1311
1317
  size,
@@ -1342,15 +1348,15 @@ var Combobox = /* @__PURE__ */ forwardRef18(function Combobox2(props, ref) {
1342
1348
  const [activeIndex, setActiveIndex] = useState6(-1);
1343
1349
  const filtered = useMemo3(() => query ? options.filter((o) => filter(o, query)) : options, [options, filter, query]);
1344
1350
  const inputText = query ?? selectedOption?.label ?? "";
1345
- const firstEnabled = (list5, from = 0, step = 1) => {
1346
- for (let i = from; i >= 0 && i < list5.length; i += step) if (!list5[i].disabled) return i;
1351
+ const firstEnabled = (list7, from = 0, step2 = 1) => {
1352
+ for (let i = from; i >= 0 && i < list7.length; i += step2) if (!list7[i].disabled) return i;
1347
1353
  return -1;
1348
1354
  };
1349
- const openList = (list5 = filtered, preferLast = false) => {
1355
+ const openList = (list7 = filtered, preferLast = false) => {
1350
1356
  setOpen(true);
1351
- const selectedIndex = list5.findIndex((o) => o.value === selectedValue);
1357
+ const selectedIndex = list7.findIndex((o) => o.value === selectedValue);
1352
1358
  setActiveIndex(
1353
- selectedIndex >= 0 && !list5[selectedIndex].disabled ? selectedIndex : preferLast ? firstEnabled(list5, list5.length - 1, -1) : firstEnabled(list5)
1359
+ selectedIndex >= 0 && !list7[selectedIndex].disabled ? selectedIndex : preferLast ? firstEnabled(list7, list7.length - 1, -1) : firstEnabled(list7)
1354
1360
  );
1355
1361
  };
1356
1362
  const reset = () => {
@@ -1372,9 +1378,9 @@ var Combobox = /* @__PURE__ */ forwardRef18(function Combobox2(props, ref) {
1372
1378
  if (option2.value !== selectedValue) onValueChange?.(option2.value);
1373
1379
  reset();
1374
1380
  };
1375
- const move = (step) => {
1376
- const start = activeIndex < 0 ? step === 1 ? 0 : filtered.length - 1 : activeIndex + step;
1377
- const next = firstEnabled(filtered, start, step);
1381
+ const move = (step2) => {
1382
+ const start = activeIndex < 0 ? step2 === 1 ? 0 : filtered.length - 1 : activeIndex + step2;
1383
+ const next = firstEnabled(filtered, start, step2);
1378
1384
  if (next >= 0) setActiveIndex(next);
1379
1385
  };
1380
1386
  const handleChange = (event) => {
@@ -1421,8 +1427,8 @@ var Combobox = /* @__PURE__ */ forwardRef18(function Combobox2(props, ref) {
1421
1427
  }, [open, activeIndex]);
1422
1428
  const hasOptions = filtered.length > 0;
1423
1429
  return /* @__PURE__ */ jsxs16("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
1424
- label5 && /* @__PURE__ */ jsxs16("label", { id: labelId, htmlFor: inputId, className: label, children: [
1425
- label5,
1430
+ label6 && /* @__PURE__ */ jsxs16("label", { id: labelId, htmlFor: inputId, className: label, children: [
1431
+ label6,
1426
1432
  required && /* @__PURE__ */ jsx20("span", { className: requiredMark, "aria-hidden": true, children: "*" })
1427
1433
  ] }),
1428
1434
  /* @__PURE__ */ jsxs16(Popover.Root, { open: open && !disabled, onOpenChange: (next) => next ? openList() : close2(), children: [
@@ -1445,7 +1451,7 @@ var Combobox = /* @__PURE__ */ forwardRef18(function Combobox2(props, ref) {
1445
1451
  "aria-controls": open && hasOptions ? listId : void 0,
1446
1452
  "aria-autocomplete": "list",
1447
1453
  "aria-activedescendant": open && activeIndex >= 0 ? optionId(activeIndex) : void 0,
1448
- "aria-label": label5 ? void 0 : ariaLabel,
1454
+ "aria-label": label6 ? void 0 : ariaLabel,
1449
1455
  "aria-invalid": error || void 0,
1450
1456
  "aria-required": required || void 0,
1451
1457
  "aria-describedby": helperId,
@@ -1518,8 +1524,8 @@ var Combobox = /* @__PURE__ */ forwardRef18(function Combobox2(props, ref) {
1518
1524
  {
1519
1525
  id: listId,
1520
1526
  role: "listbox",
1521
- "aria-labelledby": label5 ? labelId : void 0,
1522
- "aria-label": label5 ? void 0 : ariaLabel,
1527
+ "aria-labelledby": label6 ? labelId : void 0,
1528
+ "aria-label": label6 ? void 0 : ariaLabel,
1523
1529
  children: filtered.map((option2, index) => {
1524
1530
  const isSelected = option2.value === selectedValue;
1525
1531
  return (
@@ -1657,7 +1663,7 @@ var DatePicker = /* @__PURE__ */ forwardRef19(
1657
1663
  } = props;
1658
1664
  const inputRef = useRef9(null);
1659
1665
  const m = useMessages();
1660
- const label5 = labelProp ?? m.date ?? "\uB0A0\uC9DC";
1666
+ const label6 = labelProp ?? m.date ?? "\uB0A0\uC9DC";
1661
1667
  const calendarLabel = calendarLabelProp ?? m.openCalendar ?? "\uB2EC\uB825 \uC5F4\uAE30";
1662
1668
  const invalidText = invalidTextProp ?? m.dateInvalid ?? "\uC62C\uBC14\uB978 \uB0A0\uC9DC\uAC00 \uC544\uB2C8\uC5D0\uC694.";
1663
1669
  const unavailableText = unavailableTextProp ?? m.dateUnavailable ?? "\uACE0\uB97C \uC218 \uC5C6\uB294 \uB0A0\uC9DC\uC608\uC694.";
@@ -1675,7 +1681,7 @@ var DatePicker = /* @__PURE__ */ forwardRef19(
1675
1681
  lastEmitted.current = iso;
1676
1682
  onValueChange?.(iso);
1677
1683
  };
1678
- const field3 = useFormattedInput({
1684
+ const field4 = useFormattedInput({
1679
1685
  isControlled: false,
1680
1686
  value: void 0,
1681
1687
  defaultValue: (isControlled ? value3 : defaultValue)?.replace(/\D/g, ""),
@@ -1688,8 +1694,8 @@ var DatePicker = /* @__PURE__ */ forwardRef19(
1688
1694
  isMeaningful: isDigit3,
1689
1695
  inputRef
1690
1696
  });
1691
- const textIso = toIso(field3.raw);
1692
- const { setRaw } = field3;
1697
+ const textIso = toIso(field4.raw);
1698
+ const { setRaw } = field4;
1693
1699
  useEffect6(() => {
1694
1700
  if (!isControlled) return;
1695
1701
  const next = value3 ?? "";
@@ -1701,8 +1707,8 @@ var DatePicker = /* @__PURE__ */ forwardRef19(
1701
1707
  setRaw(next.replace(/\D/g, ""));
1702
1708
  }, [value3]);
1703
1709
  const date = parseISODate(textIso);
1704
- const complete = field3.raw.length === 8;
1705
- const autoError = complete ? !date ? invalidText : isUnavailable(date) ? unavailableText : null : touched && field3.raw.length > 0 ? incompleteText : null;
1710
+ const complete = field4.raw.length === 8;
1711
+ const autoError = complete ? !date ? invalidText : isUnavailable(date) ? unavailableText : null : touched && field4.raw.length > 0 ? incompleteText : null;
1706
1712
  const showAuto = autoError !== null && error === void 0;
1707
1713
  const selectedIso = date && !isUnavailable(date) ? textIso : "";
1708
1714
  return /* @__PURE__ */ jsxs18(Fragment4, { children: [
@@ -1711,13 +1717,13 @@ var DatePicker = /* @__PURE__ */ forwardRef19(
1711
1717
  {
1712
1718
  ref: mergeRefs(ref, inputRef),
1713
1719
  id,
1714
- label: label5,
1720
+ label: label6,
1715
1721
  placeholder,
1716
1722
  inputMode: "numeric",
1717
1723
  autoComplete: "off",
1718
- value: field3.display,
1719
- onChange: field3.onChange,
1720
- onKeyDown: field3.onKeyDown,
1724
+ value: field4.display,
1725
+ onChange: field4.onChange,
1726
+ onKeyDown: field4.onKeyDown,
1721
1727
  onBlur: () => setTouched(true),
1722
1728
  error: error ?? autoError !== null,
1723
1729
  helperText: showAuto ? autoError : helperText3,
@@ -1761,6 +1767,129 @@ var DatePicker = /* @__PURE__ */ forwardRef19(
1761
1767
  }
1762
1768
  );
1763
1769
 
1770
+ // src/components/DateRangePicker/DateRangePicker.tsx
1771
+ import { forwardRef as forwardRef20, useId as useId7, useState as useState8 } from "react";
1772
+
1773
+ // src/components/DateRangePicker/DateRangePicker.css.ts
1774
+ var field2 = "_17277dh3";
1775
+ var fields = "_17277dh2";
1776
+ var fieldset3 = "_17277dh0";
1777
+ var legend3 = "_17277dh1";
1778
+ var presets = "_17277dh5";
1779
+ var separator2 = "_17277dh4";
1780
+
1781
+ // src/components/DateRangePicker/DateRangePicker.tsx
1782
+ import { jsx as jsx23, jsxs as jsxs19 } from "react/jsx-runtime";
1783
+ var DateRangePicker = /* @__PURE__ */ forwardRef20(
1784
+ function DateRangePicker2(props, ref) {
1785
+ const {
1786
+ value: value3,
1787
+ defaultValue,
1788
+ onValueChange,
1789
+ label: label6,
1790
+ startLabel: startLabelProp,
1791
+ endLabel: endLabelProp,
1792
+ presets: presets2,
1793
+ min,
1794
+ max,
1795
+ isDateDisabled,
1796
+ isHoliday,
1797
+ today,
1798
+ helperText: helperText3,
1799
+ error,
1800
+ required,
1801
+ disabled,
1802
+ startName,
1803
+ endName,
1804
+ id,
1805
+ className
1806
+ } = props;
1807
+ const m = useMessages();
1808
+ const generatedId = useId7();
1809
+ const baseId = id ?? generatedId;
1810
+ const helperId = helperText3 ? `${baseId}-helper` : void 0;
1811
+ const isClient = useIsClient();
1812
+ const isControlled = "value" in props;
1813
+ const [inner, setInner] = useState8(defaultValue ?? { start: "", end: "" });
1814
+ const range3 = isControlled ? value3 ?? { start: "", end: "" } : inner;
1815
+ const update = (next) => {
1816
+ if (next.start === range3.start && next.end === range3.end) return;
1817
+ if (!isControlled) setInner(next);
1818
+ onValueChange?.(next);
1819
+ };
1820
+ const todayIso = () => today ?? toISODate(/* @__PURE__ */ new Date());
1821
+ const startLabel = startLabelProp ?? m.dateRangeStart ?? "\uC2DC\uC791\uC77C";
1822
+ const endLabel = endLabelProp ?? m.dateRangeEnd ?? "\uC885\uB8CC\uC77C";
1823
+ const common = { isDateDisabled, isHoliday, today, disabled, required, fullWidth: true };
1824
+ return /* @__PURE__ */ jsxs19(
1825
+ "fieldset",
1826
+ {
1827
+ ref,
1828
+ id,
1829
+ className: cx(fieldset3, className),
1830
+ "aria-describedby": helperId,
1831
+ "data-invalid": error || void 0,
1832
+ children: [
1833
+ label6 && /* @__PURE__ */ jsxs19("legend", { className: legend3, children: [
1834
+ label6,
1835
+ required && /* @__PURE__ */ jsx23("span", { className: requiredMark, "aria-hidden": true, children: "*" })
1836
+ ] }),
1837
+ /* @__PURE__ */ jsxs19("div", { className: fields, children: [
1838
+ /* @__PURE__ */ jsx23("div", { className: field2, children: /* @__PURE__ */ jsx23(
1839
+ DatePicker,
1840
+ {
1841
+ ...common,
1842
+ id: `${baseId}-start`,
1843
+ label: startLabel,
1844
+ value: range3.start,
1845
+ onValueChange: (start) => update({ ...range3, start }),
1846
+ min,
1847
+ max: range3.end || max,
1848
+ name: startName,
1849
+ error: error || void 0
1850
+ }
1851
+ ) }),
1852
+ /* @__PURE__ */ jsx23("span", { className: separator2, "aria-hidden": true, children: "~" }),
1853
+ /* @__PURE__ */ jsx23("div", { className: field2, children: /* @__PURE__ */ jsx23(
1854
+ DatePicker,
1855
+ {
1856
+ ...common,
1857
+ id: `${baseId}-end`,
1858
+ label: endLabel,
1859
+ value: range3.end,
1860
+ onValueChange: (end2) => update({ ...range3, end: end2 }),
1861
+ min: range3.start || min,
1862
+ max,
1863
+ name: endName,
1864
+ error: error || void 0
1865
+ }
1866
+ ) })
1867
+ ] }),
1868
+ presets2 && presets2.length > 0 && /* @__PURE__ */ jsx23("div", { role: "group", "aria-label": m.dateRangePresets ?? "\uBE60\uB978 \uC120\uD0DD", className: presets, children: presets2.map((preset) => {
1869
+ const target = isClient ? presetRange(preset, todayIso()) : null;
1870
+ const pressed = !!target && target.start === range3.start && target.end === range3.end;
1871
+ return /* @__PURE__ */ jsx23(
1872
+ Button,
1873
+ {
1874
+ type: "button",
1875
+ size: "sm",
1876
+ variant: pressed ? "soft" : "outline",
1877
+ color: pressed ? "primary" : "neutral",
1878
+ "aria-pressed": pressed,
1879
+ disabled,
1880
+ onClick: () => update(presetRange(preset, todayIso())),
1881
+ children: preset.label
1882
+ },
1883
+ preset.label
1884
+ );
1885
+ }) }),
1886
+ helperText3 && /* @__PURE__ */ jsx23("p", { id: helperId, className: helperText({ error }), children: helperText3 })
1887
+ ]
1888
+ }
1889
+ );
1890
+ }
1891
+ );
1892
+
1764
1893
  // src/components/Drawer/Drawer.tsx
1765
1894
  import * as Dialog2 from "@radix-ui/react-dialog";
1766
1895
  import { XIcon as XIcon5 } from "@bestow-ui/icons";
@@ -1778,14 +1907,14 @@ var overlay2 = "nmobyv0";
1778
1907
  var title4 = "nmobyvv";
1779
1908
 
1780
1909
  // src/components/Drawer/Drawer.tsx
1781
- import { jsx as jsx23, jsxs as jsxs19 } from "react/jsx-runtime";
1910
+ import { jsx as jsx24, jsxs as jsxs20 } from "react/jsx-runtime";
1782
1911
  function Drawer({
1783
1912
  open,
1784
1913
  defaultOpen,
1785
1914
  onOpenChange,
1786
1915
  trigger: trigger4,
1787
1916
  title: title6,
1788
- description: description6,
1917
+ description: description7,
1789
1918
  children,
1790
1919
  footer: footer5,
1791
1920
  side,
@@ -1797,11 +1926,11 @@ function Drawer({
1797
1926
  const portal2 = usePortalProps();
1798
1927
  const m = useMessages();
1799
1928
  const focus = useReturnFocus(Boolean(trigger4));
1800
- return /* @__PURE__ */ jsxs19(Dialog2.Root, { open, defaultOpen, onOpenChange, children: [
1801
- trigger4 && /* @__PURE__ */ jsx23(Dialog2.Trigger, { asChild: true, children: trigger4 }),
1802
- /* @__PURE__ */ jsxs19(Dialog2.Portal, { children: [
1803
- /* @__PURE__ */ jsx23(Dialog2.Overlay, { className: cx(portal2.className, overlay2), style: portal2.style }),
1804
- /* @__PURE__ */ jsxs19(
1929
+ return /* @__PURE__ */ jsxs20(Dialog2.Root, { open, defaultOpen, onOpenChange, children: [
1930
+ trigger4 && /* @__PURE__ */ jsx24(Dialog2.Trigger, { asChild: true, children: trigger4 }),
1931
+ /* @__PURE__ */ jsxs20(Dialog2.Portal, { children: [
1932
+ /* @__PURE__ */ jsx24(Dialog2.Overlay, { className: cx(portal2.className, overlay2), style: portal2.style }),
1933
+ /* @__PURE__ */ jsxs20(
1805
1934
  Dialog2.Content,
1806
1935
  {
1807
1936
  className: cx(portal2.className, content8({ side, size }), className),
@@ -1810,17 +1939,17 @@ function Drawer({
1810
1939
  onPointerDownOutside: closeOnOverlayClick ? void 0 : (event) => event.preventDefault(),
1811
1940
  onOpenAutoFocus: focus.onOpenAutoFocus,
1812
1941
  onCloseAutoFocus: focus.onCloseAutoFocus,
1813
- ...description6 ? {} : { "aria-describedby": void 0 },
1942
+ ...description7 ? {} : { "aria-describedby": void 0 },
1814
1943
  children: [
1815
- /* @__PURE__ */ jsxs19("div", { className: header5, children: [
1816
- /* @__PURE__ */ jsxs19("div", { className: headings2, children: [
1817
- /* @__PURE__ */ jsx23(Dialog2.Title, { className: title4, children: title6 }),
1818
- description6 && /* @__PURE__ */ jsx23(Dialog2.Description, { className: description3, children: description6 })
1944
+ /* @__PURE__ */ jsxs20("div", { className: header5, children: [
1945
+ /* @__PURE__ */ jsxs20("div", { className: headings2, children: [
1946
+ /* @__PURE__ */ jsx24(Dialog2.Title, { className: title4, children: title6 }),
1947
+ description7 && /* @__PURE__ */ jsx24(Dialog2.Description, { className: description3, children: description7 })
1819
1948
  ] }),
1820
- !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, {}) }) })
1949
+ !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, {}) }) })
1821
1950
  ] }),
1822
- children && /* @__PURE__ */ jsx23("div", { className: body2, children }),
1823
- footer5 && /* @__PURE__ */ jsx23("div", { className: footer2, children: footer5 })
1951
+ children && /* @__PURE__ */ jsx24("div", { className: body2, children }),
1952
+ footer5 && /* @__PURE__ */ jsx24("div", { className: footer2, children: footer5 })
1824
1953
  ]
1825
1954
  }
1826
1955
  )
@@ -1829,10 +1958,276 @@ function Drawer({
1829
1958
  }
1830
1959
  var DrawerClose = Dialog2.Close;
1831
1960
 
1961
+ // src/components/ErrorSummary/ErrorSummary.tsx
1962
+ import { forwardRef as forwardRef21, useEffect as useEffect7, useId as useId8, useRef as useRef10 } from "react";
1963
+
1964
+ // src/components/ErrorSummary/ErrorSummary.css.ts
1965
+ var link3 = "_1cdophv2";
1966
+ var list3 = "_1cdophv1";
1967
+ var root7 = "_1cdophv0";
1968
+
1969
+ // src/components/ErrorSummary/ErrorSummary.tsx
1970
+ import { jsx as jsx25 } from "react/jsx-runtime";
1971
+ var ErrorSummary = /* @__PURE__ */ forwardRef21(function ErrorSummary2({ errors: errors2, title: title6, focusKey, className, ...rest }, ref) {
1972
+ const m = useMessages();
1973
+ const titleId = useId8();
1974
+ const rootRef = useRef10(null);
1975
+ const hasErrors = errors2.length > 0;
1976
+ useEffect7(() => {
1977
+ if (hasErrors) rootRef.current?.focus();
1978
+ }, [focusKey, hasErrors]);
1979
+ if (!hasErrors) return null;
1980
+ return /* @__PURE__ */ jsx25(
1981
+ "div",
1982
+ {
1983
+ ref: mergeRefs(ref, rootRef),
1984
+ tabIndex: -1,
1985
+ "aria-labelledby": titleId,
1986
+ className: cx(root7, className),
1987
+ ...rest,
1988
+ children: /* @__PURE__ */ jsx25(
1989
+ Alert,
1990
+ {
1991
+ color: "danger",
1992
+ 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` }),
1993
+ children: /* @__PURE__ */ jsx25("ul", { className: list3, children: errors2.map((error) => /* @__PURE__ */ jsx25("li", { children: /* @__PURE__ */ jsx25(
1994
+ "a",
1995
+ {
1996
+ href: `#${error.id}`,
1997
+ className: link3,
1998
+ onClick: (event) => {
1999
+ if (focusField(error.id)) event.preventDefault();
2000
+ },
2001
+ children: error.message
2002
+ }
2003
+ ) }, error.id)) })
2004
+ }
2005
+ )
2006
+ }
2007
+ );
2008
+ });
2009
+
2010
+ // src/components/FileUpload/FileUpload.tsx
2011
+ import { forwardRef as forwardRef22, useEffect as useEffect8, useId as useId9, useRef as useRef11, useState as useState9 } from "react";
2012
+ import { FileIcon, UploadIcon, XIcon as XIcon6 } from "@bestow-ui/icons";
2013
+
2014
+ // src/components/FileUpload/FileUpload.css.ts
2015
+ var dropHint = "r2jefr3";
2016
+ var dropIcon = "r2jefr2";
2017
+ var dropzone = "r2jefr1";
2018
+ var errors = "r2jefr9";
2019
+ var fileIcon = "r2jefr6";
2020
+ var fileName = "r2jefr7";
2021
+ var fileSize = "r2jefr8";
2022
+ var item5 = "r2jefr5";
2023
+ var list4 = "r2jefr4";
2024
+ var root8 = "r2jefr0";
2025
+
2026
+ // src/components/FileUpload/FileUpload.tsx
2027
+ import { jsx as jsx26, jsxs as jsxs21 } from "react/jsx-runtime";
2028
+ function formatSize(bytes) {
2029
+ if (bytes < 1024) return `${bytes} B`;
2030
+ if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(bytes < 10 * 1024 ? 1 : 0)} KB`;
2031
+ return `${(bytes / 1024 / 1024).toFixed(1)} MB`;
2032
+ }
2033
+ function matchesAccept(file, accept) {
2034
+ if (!accept) return true;
2035
+ const name = file.name.toLowerCase();
2036
+ const type = file.type.toLowerCase();
2037
+ return accept.split(",").map((token) => token.trim().toLowerCase()).filter(Boolean).some(
2038
+ (token) => token.startsWith(".") ? name.endsWith(token) : token.endsWith("/*") ? type.startsWith(token.slice(0, -1)) : type === token
2039
+ );
2040
+ }
2041
+ var NO_FILES = [];
2042
+ var sameFile = (a, b) => a.name === b.name && a.size === b.size && a.lastModified === b.lastModified;
2043
+ var FileUpload = /* @__PURE__ */ forwardRef22(function FileUpload2(props, ref) {
2044
+ const {
2045
+ value: value3,
2046
+ defaultValue,
2047
+ onValueChange,
2048
+ onReject,
2049
+ accept,
2050
+ multiple = false,
2051
+ maxSize,
2052
+ maxFiles,
2053
+ label: label6,
2054
+ helperText: helperText3,
2055
+ error,
2056
+ required,
2057
+ disabled,
2058
+ name,
2059
+ id,
2060
+ className
2061
+ } = props;
2062
+ const m = useMessages();
2063
+ const isControlled = "value" in props;
2064
+ const [innerFiles, setInnerFiles] = useState9(defaultValue ?? []);
2065
+ const files = isControlled ? value3 ?? NO_FILES : innerFiles;
2066
+ const [rejections, setRejections] = useState9([]);
2067
+ const [announcement, setAnnouncement] = useState9("");
2068
+ const [dragging, setDragging] = useState9(false);
2069
+ const generatedId = useId9();
2070
+ const baseId = id ?? generatedId;
2071
+ const labelId = label6 ? `${baseId}-label` : void 0;
2072
+ const helperId = helperText3 ? `${baseId}-helper` : void 0;
2073
+ const errorsId = rejections.length > 0 ? `${baseId}-errors` : void 0;
2074
+ const inputRef = useRef11(null);
2075
+ const selectButtonRef = useRef11(null);
2076
+ const removeButtonRefs = useRef11([]);
2077
+ const focusAfterRemove = useRef11(null);
2078
+ const selectLabel = m.fileSelect ?? "\uD30C\uC77C \uC120\uD0DD";
2079
+ const reasonText = (rejection) => {
2080
+ const fileName2 = rejection.file.name;
2081
+ if (rejection.reason === "size")
2082
+ return m.fileTooLarge?.(fileName2, formatSize(maxSize ?? 0)) ?? `${fileName2}: ${formatSize(maxSize ?? 0)} \uC774\uD558\uB9CC \uC62C\uB9B4 \uC218 \uC788\uC5B4\uC694.`;
2083
+ if (rejection.reason === "type") return m.fileTypeNotAllowed?.(fileName2) ?? `${fileName2}: \uC62C\uB9B4 \uC218 \uC5C6\uB294 \uD615\uC2DD\uC774\uC5D0\uC694.`;
2084
+ return m.fileTooMany?.(maxFiles ?? 0) ?? `\uD30C\uC77C\uC740 ${maxFiles}\uAC1C\uAE4C\uC9C0 \uC62C\uB9B4 \uC218 \uC788\uC5B4\uC694.`;
2085
+ };
2086
+ const commit = (next, message) => {
2087
+ if (!isControlled) setInnerFiles(next);
2088
+ onValueChange?.(next);
2089
+ setAnnouncement(message);
2090
+ };
2091
+ const addFiles = (incoming) => {
2092
+ if (disabled || incoming.length === 0) return;
2093
+ const accepted = [];
2094
+ const rejected = [];
2095
+ const base = multiple ? files : [];
2096
+ for (const file of incoming) {
2097
+ if (!matchesAccept(file, accept)) rejected.push({ file, reason: "type" });
2098
+ else if (maxSize !== void 0 && file.size > maxSize) rejected.push({ file, reason: "size" });
2099
+ else if (!multiple && accepted.length >= 1) rejected.push({ file, reason: "count" });
2100
+ else if (maxFiles !== void 0 && base.length + accepted.length >= maxFiles)
2101
+ rejected.push({ file, reason: "count" });
2102
+ else if (![...base, ...accepted].some((existing) => sameFile(existing, file))) accepted.push(file);
2103
+ }
2104
+ setRejections(rejected);
2105
+ if (rejected.length > 0) onReject?.(rejected);
2106
+ const next = [...base, ...accepted];
2107
+ const summary = m.filesSelected?.(next.length) ?? `\uD30C\uC77C ${next.length}\uAC1C \uC120\uD0DD\uB428`;
2108
+ const errors2 = [...new Set(rejected.map(reasonText))].join(" ");
2109
+ if (accepted.length > 0) commit(next, [summary, errors2].filter(Boolean).join(" "));
2110
+ else setAnnouncement(errors2);
2111
+ };
2112
+ const removeAt = (index) => {
2113
+ const removed = files[index];
2114
+ const next = files.filter((_, i) => i !== index);
2115
+ focusAfterRemove.current = Math.min(index, next.length - 1);
2116
+ setRejections([]);
2117
+ commit(next, m.fileRemoved?.(removed.name) ?? `${removed.name} \uC0AD\uC81C\uB428`);
2118
+ };
2119
+ useEffect8(() => {
2120
+ if (focusAfterRemove.current === null) return;
2121
+ const target = focusAfterRemove.current;
2122
+ focusAfterRemove.current = null;
2123
+ (target >= 0 ? removeButtonRefs.current[target] : selectButtonRef.current)?.focus();
2124
+ }, [files]);
2125
+ useEffect8(() => {
2126
+ const input6 = inputRef.current;
2127
+ if (!name || !input6 || typeof DataTransfer === "undefined") return;
2128
+ try {
2129
+ const transfer = new DataTransfer();
2130
+ files.forEach((file) => transfer.items.add(file));
2131
+ input6.files = transfer.files;
2132
+ } catch {
2133
+ }
2134
+ }, [files, name]);
2135
+ const onDrag = (event, over) => {
2136
+ if (disabled) return;
2137
+ event.preventDefault();
2138
+ setDragging(over);
2139
+ };
2140
+ return /* @__PURE__ */ jsxs21("div", { ref, className: cx(field, root8, className), children: [
2141
+ label6 && /* @__PURE__ */ jsxs21("span", { id: labelId, className: label, children: [
2142
+ label6,
2143
+ required && /* @__PURE__ */ jsx26("span", { className: requiredMark, "aria-hidden": true, children: "*" })
2144
+ ] }),
2145
+ /* @__PURE__ */ jsxs21(
2146
+ "div",
2147
+ {
2148
+ role: "group",
2149
+ "aria-labelledby": labelId,
2150
+ "aria-describedby": cx(helperId, errorsId) || void 0,
2151
+ className: dropzone,
2152
+ "data-dragging": dragging || void 0,
2153
+ "data-disabled": disabled || void 0,
2154
+ "data-invalid": error || rejections.length > 0 || void 0,
2155
+ onDragEnter: (event) => onDrag(event, true),
2156
+ onDragOver: (event) => onDrag(event, true),
2157
+ onDragLeave: (event) => {
2158
+ if (!event.currentTarget.contains(event.relatedTarget)) setDragging(false);
2159
+ },
2160
+ onDrop: (event) => {
2161
+ onDrag(event, false);
2162
+ if (!disabled) addFiles(Array.from(event.dataTransfer.files));
2163
+ },
2164
+ children: [
2165
+ /* @__PURE__ */ jsx26("span", { className: dropIcon, "aria-hidden": true, children: /* @__PURE__ */ jsx26(UploadIcon, { size: 24 }) }),
2166
+ /* @__PURE__ */ jsx26(
2167
+ Button,
2168
+ {
2169
+ ref: selectButtonRef,
2170
+ type: "button",
2171
+ variant: "outline",
2172
+ color: "neutral",
2173
+ size: "sm",
2174
+ disabled,
2175
+ onClick: () => inputRef.current?.click(),
2176
+ children: selectLabel
2177
+ }
2178
+ ),
2179
+ /* @__PURE__ */ jsx26("span", { className: dropHint, children: m.fileDropHint ?? "\uB610\uB294 \uC5EC\uAE30\uB85C \uB04C\uC5B4\uB2E4 \uB193\uC73C\uC138\uC694" }),
2180
+ /* @__PURE__ */ jsx26(
2181
+ "input",
2182
+ {
2183
+ ref: inputRef,
2184
+ type: "file",
2185
+ id: baseId,
2186
+ name,
2187
+ accept,
2188
+ multiple,
2189
+ required: required && files.length === 0,
2190
+ disabled,
2191
+ tabIndex: -1,
2192
+ "aria-hidden": true,
2193
+ className: visuallyHidden,
2194
+ onChange: (event) => {
2195
+ addFiles(Array.from(event.target.files ?? []));
2196
+ if (!name) event.target.value = "";
2197
+ }
2198
+ }
2199
+ )
2200
+ ]
2201
+ }
2202
+ ),
2203
+ 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: [
2204
+ /* @__PURE__ */ jsx26("span", { className: fileIcon, "aria-hidden": true, children: /* @__PURE__ */ jsx26(FileIcon, { size: 16 }) }),
2205
+ /* @__PURE__ */ jsx26("span", { className: fileName, children: file.name }),
2206
+ /* @__PURE__ */ jsx26("span", { className: fileSize, children: formatSize(file.size) }),
2207
+ /* @__PURE__ */ jsx26(
2208
+ IconButton,
2209
+ {
2210
+ ref: (node) => {
2211
+ removeButtonRefs.current[index] = node;
2212
+ },
2213
+ size: "sm",
2214
+ "aria-label": m.fileRemove?.(file.name) ?? `${file.name} \uC0AD\uC81C`,
2215
+ disabled,
2216
+ onClick: () => removeAt(index),
2217
+ children: /* @__PURE__ */ jsx26(XIcon6, {})
2218
+ }
2219
+ )
2220
+ ] }, `${file.name}-${file.size}-${file.lastModified}`)) }),
2221
+ rejections.length > 0 && /* @__PURE__ */ jsx26("ul", { id: errorsId, className: errors, children: [...new Set(rejections.map(reasonText))].map((text3) => /* @__PURE__ */ jsx26("li", { children: text3 }, text3)) }),
2222
+ helperText3 && /* @__PURE__ */ jsx26("p", { id: helperId, className: helperText({ error }), children: helperText3 }),
2223
+ /* @__PURE__ */ jsx26("div", { role: "status", className: visuallyHidden, children: announcement })
2224
+ ] });
2225
+ });
2226
+
1832
2227
  // src/components/DropdownMenu/DropdownMenu.tsx
1833
2228
  import * as RadixMenu from "@radix-ui/react-dropdown-menu";
1834
2229
  import { CheckIcon as CheckIcon2, ChevronRightIcon as ChevronRightIcon3, MinusIcon } from "@bestow-ui/icons";
1835
- import { forwardRef as forwardRef20 } from "react";
2230
+ import { forwardRef as forwardRef23 } from "react";
1836
2231
 
1837
2232
  // src/components/DropdownMenu/DropdownMenu.css.ts
1838
2233
  var content9 = "_1d7ahux0";
@@ -1840,23 +2235,23 @@ var danger = "_1d7ahux2";
1840
2235
  var icon4 = "_1d7ahux3";
1841
2236
  var indicator = "_1d7ahux7";
1842
2237
  var indicatorInner = "_1d7ahux8";
1843
- var item5 = "_1d7ahux1";
2238
+ var item6 = "_1d7ahux1";
1844
2239
  var label2 = "_1d7ahux5";
1845
2240
  var radioDot = "_1d7ahux9";
1846
- var separator2 = "_1d7ahux6";
2241
+ var separator3 = "_1d7ahux6";
1847
2242
  var shortcut = "_1d7ahux4";
1848
2243
  var subChevron = "_1d7ahuxb";
1849
2244
  var subTrigger = "_1d7ahuxa";
1850
2245
 
1851
2246
  // src/components/DropdownMenu/DropdownMenu.tsx
1852
- import { jsx as jsx24, jsxs as jsxs20 } from "react/jsx-runtime";
2247
+ import { jsx as jsx27, jsxs as jsxs22 } from "react/jsx-runtime";
1853
2248
  var DropdownMenu = RadixMenu.Root;
1854
2249
  var DropdownMenuTrigger = RadixMenu.Trigger;
1855
2250
  var DropdownMenuGroup = RadixMenu.Group;
1856
- var DropdownMenuContent = /* @__PURE__ */ forwardRef20(
2251
+ var DropdownMenuContent = /* @__PURE__ */ forwardRef23(
1857
2252
  function DropdownMenuContent2({ className, style, side = "bottom", align = "start", sideOffset = 4, collisionPadding = 8, ...rest }, ref) {
1858
2253
  const portal2 = usePortalProps();
1859
- return /* @__PURE__ */ jsx24(RadixMenu.Portal, { children: /* @__PURE__ */ jsx24(
2254
+ return /* @__PURE__ */ jsx27(RadixMenu.Portal, { children: /* @__PURE__ */ jsx27(
1860
2255
  RadixMenu.Content,
1861
2256
  {
1862
2257
  ref,
@@ -1871,56 +2266,56 @@ var DropdownMenuContent = /* @__PURE__ */ forwardRef20(
1871
2266
  ) });
1872
2267
  }
1873
2268
  );
1874
- var DropdownMenuItem = /* @__PURE__ */ forwardRef20(
2269
+ var DropdownMenuItem = /* @__PURE__ */ forwardRef23(
1875
2270
  function DropdownMenuItem2({ icon: icon6, shortcut: shortcut2, color = "neutral", className, children, ...rest }, ref) {
1876
- return /* @__PURE__ */ jsxs20(RadixMenu.Item, { ref, className: cx(item5, color === "danger" && danger, className), ...rest, children: [
1877
- icon6 && /* @__PURE__ */ jsx24("span", { className: icon4, "aria-hidden": true, children: icon6 }),
2271
+ return /* @__PURE__ */ jsxs22(RadixMenu.Item, { ref, className: cx(item6, color === "danger" && danger, className), ...rest, children: [
2272
+ icon6 && /* @__PURE__ */ jsx27("span", { className: icon4, "aria-hidden": true, children: icon6 }),
1878
2273
  children,
1879
- shortcut2 && /* @__PURE__ */ jsx24("span", { className: shortcut, "aria-hidden": true, children: shortcut2 })
2274
+ shortcut2 && /* @__PURE__ */ jsx27("span", { className: shortcut, "aria-hidden": true, children: shortcut2 })
1880
2275
  ] });
1881
2276
  }
1882
2277
  );
1883
- var DropdownMenuLabel = /* @__PURE__ */ forwardRef20(
2278
+ var DropdownMenuLabel = /* @__PURE__ */ forwardRef23(
1884
2279
  function DropdownMenuLabel2({ className, ...rest }, ref) {
1885
- return /* @__PURE__ */ jsx24(RadixMenu.Label, { ref, className: cx(label2, className), ...rest });
2280
+ return /* @__PURE__ */ jsx27(RadixMenu.Label, { ref, className: cx(label2, className), ...rest });
1886
2281
  }
1887
2282
  );
1888
- var DropdownMenuSeparator = /* @__PURE__ */ forwardRef20(
2283
+ var DropdownMenuSeparator = /* @__PURE__ */ forwardRef23(
1889
2284
  function DropdownMenuSeparator2({ className, ...rest }, ref) {
1890
- return /* @__PURE__ */ jsx24(RadixMenu.Separator, { ref, className: cx(separator2, className), ...rest });
2285
+ return /* @__PURE__ */ jsx27(RadixMenu.Separator, { ref, className: cx(separator3, className), ...rest });
1891
2286
  }
1892
2287
  );
1893
- var DropdownMenuCheckboxItem = /* @__PURE__ */ forwardRef20(
2288
+ var DropdownMenuCheckboxItem = /* @__PURE__ */ forwardRef23(
1894
2289
  function DropdownMenuCheckboxItem2({ className, children, ...rest }, ref) {
1895
- return /* @__PURE__ */ jsxs20(RadixMenu.CheckboxItem, { ref, className: cx(item5, className), ...rest, children: [
1896
- /* @__PURE__ */ jsx24("span", { className: indicator, "aria-hidden": true, children: /* @__PURE__ */ jsx24(RadixMenu.ItemIndicator, { className: indicatorInner, children: rest.checked === "indeterminate" ? /* @__PURE__ */ jsx24(MinusIcon, { size: 16 }) : /* @__PURE__ */ jsx24(CheckIcon2, { size: 16 }) }) }),
2290
+ return /* @__PURE__ */ jsxs22(RadixMenu.CheckboxItem, { ref, className: cx(item6, className), ...rest, children: [
2291
+ /* @__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 }) }) }),
1897
2292
  children
1898
2293
  ] });
1899
2294
  }
1900
2295
  );
1901
2296
  var DropdownMenuRadioGroup = RadixMenu.RadioGroup;
1902
- var DropdownMenuRadioItem = /* @__PURE__ */ forwardRef20(
2297
+ var DropdownMenuRadioItem = /* @__PURE__ */ forwardRef23(
1903
2298
  function DropdownMenuRadioItem2({ className, children, ...rest }, ref) {
1904
- return /* @__PURE__ */ jsxs20(RadixMenu.RadioItem, { ref, className: cx(item5, className), ...rest, children: [
1905
- /* @__PURE__ */ jsx24("span", { className: indicator, "aria-hidden": true, children: /* @__PURE__ */ jsx24(RadixMenu.ItemIndicator, { className: indicatorInner, children: /* @__PURE__ */ jsx24("span", { className: radioDot }) }) }),
2299
+ return /* @__PURE__ */ jsxs22(RadixMenu.RadioItem, { ref, className: cx(item6, className), ...rest, children: [
2300
+ /* @__PURE__ */ jsx27("span", { className: indicator, "aria-hidden": true, children: /* @__PURE__ */ jsx27(RadixMenu.ItemIndicator, { className: indicatorInner, children: /* @__PURE__ */ jsx27("span", { className: radioDot }) }) }),
1906
2301
  children
1907
2302
  ] });
1908
2303
  }
1909
2304
  );
1910
2305
  var DropdownMenuSub = RadixMenu.Sub;
1911
- var DropdownMenuSubTrigger = /* @__PURE__ */ forwardRef20(
2306
+ var DropdownMenuSubTrigger = /* @__PURE__ */ forwardRef23(
1912
2307
  function DropdownMenuSubTrigger2({ icon: icon6, className, children, ...rest }, ref) {
1913
- return /* @__PURE__ */ jsxs20(RadixMenu.SubTrigger, { ref, className: cx(item5, subTrigger, className), ...rest, children: [
1914
- icon6 && /* @__PURE__ */ jsx24("span", { className: icon4, "aria-hidden": true, children: icon6 }),
2308
+ return /* @__PURE__ */ jsxs22(RadixMenu.SubTrigger, { ref, className: cx(item6, subTrigger, className), ...rest, children: [
2309
+ icon6 && /* @__PURE__ */ jsx27("span", { className: icon4, "aria-hidden": true, children: icon6 }),
1915
2310
  children,
1916
- /* @__PURE__ */ jsx24("span", { className: subChevron, "aria-hidden": true, children: /* @__PURE__ */ jsx24(ChevronRightIcon3, { size: 16 }) })
2311
+ /* @__PURE__ */ jsx27("span", { className: subChevron, "aria-hidden": true, children: /* @__PURE__ */ jsx27(ChevronRightIcon3, { size: 16 }) })
1917
2312
  ] });
1918
2313
  }
1919
2314
  );
1920
- var DropdownMenuSubContent = /* @__PURE__ */ forwardRef20(
2315
+ var DropdownMenuSubContent = /* @__PURE__ */ forwardRef23(
1921
2316
  function DropdownMenuSubContent2({ className, style, sideOffset = 4, alignOffset = -5, collisionPadding = 8, ...rest }, ref) {
1922
2317
  const portal2 = usePortalProps();
1923
- return /* @__PURE__ */ jsx24(RadixMenu.Portal, { children: /* @__PURE__ */ jsx24(
2318
+ return /* @__PURE__ */ jsx27(RadixMenu.Portal, { children: /* @__PURE__ */ jsx27(
1924
2319
  RadixMenu.SubContent,
1925
2320
  {
1926
2321
  ref,
@@ -1936,7 +2331,7 @@ var DropdownMenuSubContent = /* @__PURE__ */ forwardRef20(
1936
2331
  );
1937
2332
 
1938
2333
  // src/components/NumberInput/NumberInput.tsx
1939
- import { forwardRef as forwardRef21, useEffect as useEffect7, useId as useId7, useRef as useRef10 } from "react";
2334
+ import { forwardRef as forwardRef24, useEffect as useEffect9, useId as useId10, useRef as useRef12 } from "react";
1940
2335
  import { MinusIcon as MinusIcon2, PlusIcon } from "@bestow-ui/icons";
1941
2336
 
1942
2337
  // src/components/NumberInput/NumberInput.css.ts
@@ -1947,12 +2342,12 @@ var stepper = /* @__PURE__ */ _7a46811({ defaultClassName: "_1vq2qhv3", variantC
1947
2342
  var unit = "_1vq2qhv2";
1948
2343
 
1949
2344
  // src/components/NumberInput/NumberInput.tsx
1950
- import { Fragment as Fragment5, jsx as jsx25, jsxs as jsxs21 } from "react/jsx-runtime";
2345
+ import { Fragment as Fragment5, jsx as jsx28, jsxs as jsxs23 } from "react/jsx-runtime";
1951
2346
  var MAX_DIGITS2 = 15;
1952
2347
  var isMeaningful = (char) => /[\d.-]/.test(char);
1953
2348
  var decimalsOf = (n) => Number.isFinite(n) ? String(n).split(".")[1]?.length ?? 0 : 0;
1954
2349
  var parse = (raw) => /\d/.test(raw) ? Number(raw) : null;
1955
- var NumberInput = /* @__PURE__ */ forwardRef21(
2350
+ var NumberInput = /* @__PURE__ */ forwardRef24(
1956
2351
  function NumberInput2(props, ref) {
1957
2352
  const {
1958
2353
  value: value3,
@@ -1960,8 +2355,8 @@ var NumberInput = /* @__PURE__ */ forwardRef21(
1960
2355
  onValueChange,
1961
2356
  min,
1962
2357
  max,
1963
- step = 1,
1964
- largeStep = step * 10,
2358
+ step: step2 = 1,
2359
+ largeStep = step2 * 10,
1965
2360
  precision: precisionProp,
1966
2361
  unit: unit2,
1967
2362
  thousandSeparator = true,
@@ -1978,10 +2373,10 @@ var NumberInput = /* @__PURE__ */ forwardRef21(
1978
2373
  } = props;
1979
2374
  const isControlled = "value" in props;
1980
2375
  const m = useMessages();
1981
- const inputRef = useRef10(null);
1982
- const generatedId = useId7();
2376
+ const inputRef = useRef12(null);
2377
+ const generatedId = useId10();
1983
2378
  const inputId = id ?? generatedId;
1984
- const precision = Math.max(0, precisionProp ?? decimalsOf(step));
2379
+ const precision = Math.max(0, precisionProp ?? decimalsOf(step2));
1985
2380
  const allowNegative = min === void 0 || min < 0;
1986
2381
  const round = (n) => Number(n.toFixed(precision));
1987
2382
  const clamp = (n) => Math.min(max ?? Infinity, Math.max(min ?? -Infinity, round(n)));
@@ -1999,13 +2394,13 @@ var NumberInput = /* @__PURE__ */ forwardRef21(
1999
2394
  const [, sign = "", int = "", rest2 = ""] = raw.match(/^(-?)(\d*)(.*)$/) ?? [];
2000
2395
  return `${sign}${int ? Number(int).toLocaleString("ko-KR") : ""}${rest2}`;
2001
2396
  };
2002
- const lastEmitted = useRef10(parse(toRaw(isControlled ? value3 : defaultValue)));
2397
+ const lastEmitted = useRef12(parse(toRaw(isControlled ? value3 : defaultValue)));
2003
2398
  const emit = (next) => {
2004
2399
  if (next === lastEmitted.current) return;
2005
2400
  lastEmitted.current = next;
2006
2401
  onValueChange?.(next);
2007
2402
  };
2008
- const field3 = useFormattedInput({
2403
+ const field4 = useFormattedInput({
2009
2404
  isControlled: false,
2010
2405
  value: void 0,
2011
2406
  defaultValue: toRaw(isControlled ? value3 : defaultValue),
@@ -2015,14 +2410,14 @@ var NumberInput = /* @__PURE__ */ forwardRef21(
2015
2410
  isMeaningful,
2016
2411
  inputRef
2017
2412
  });
2018
- const { setRaw } = field3;
2019
- useEffect7(() => {
2413
+ const { setRaw } = field4;
2414
+ useEffect9(() => {
2020
2415
  if (!isControlled) return;
2021
2416
  const next = value3 ?? null;
2022
2417
  lastEmitted.current = next;
2023
- if (parse(field3.raw) !== next) setRaw(toRaw(next));
2418
+ if (parse(field4.raw) !== next) setRaw(toRaw(next));
2024
2419
  }, [value3]);
2025
- const current2 = parse(field3.raw);
2420
+ const current2 = parse(field4.raw);
2026
2421
  const setValue = (next) => {
2027
2422
  setRaw(toRaw(next));
2028
2423
  emit(next);
@@ -2037,8 +2432,8 @@ var NumberInput = /* @__PURE__ */ forwardRef21(
2037
2432
  onKeyDown?.(event);
2038
2433
  if (event.defaultPrevented) return;
2039
2434
  const deltas = {
2040
- ArrowUp: step,
2041
- ArrowDown: -step,
2435
+ ArrowUp: step2,
2436
+ ArrowDown: -step2,
2042
2437
  PageUp: largeStep,
2043
2438
  PageDown: -largeStep
2044
2439
  };
@@ -2052,10 +2447,10 @@ var NumberInput = /* @__PURE__ */ forwardRef21(
2052
2447
  event.preventDefault();
2053
2448
  setValue(max);
2054
2449
  } else {
2055
- field3.onKeyDown(event);
2450
+ field4.onKeyDown(event);
2056
2451
  }
2057
2452
  };
2058
- const stepper2 = (direction) => /* @__PURE__ */ jsx25(
2453
+ const stepper2 = (direction) => /* @__PURE__ */ jsx28(
2059
2454
  IconButton,
2060
2455
  {
2061
2456
  size: "sm",
@@ -2064,13 +2459,13 @@ var NumberInput = /* @__PURE__ */ forwardRef21(
2064
2459
  tabIndex: -1,
2065
2460
  disabled: direction < 0 ? !canDecrement : !canIncrement,
2066
2461
  onMouseDown: (event) => event.preventDefault(),
2067
- onClick: () => stepBy(direction * step),
2462
+ onClick: () => stepBy(direction * step2),
2068
2463
  className: stepper({ size }),
2069
- children: direction < 0 ? /* @__PURE__ */ jsx25(MinusIcon2, {}) : /* @__PURE__ */ jsx25(PlusIcon, {})
2464
+ children: direction < 0 ? /* @__PURE__ */ jsx28(MinusIcon2, {}) : /* @__PURE__ */ jsx28(PlusIcon, {})
2070
2465
  }
2071
2466
  );
2072
- return /* @__PURE__ */ jsxs21(Fragment5, { children: [
2073
- /* @__PURE__ */ jsx25(
2467
+ return /* @__PURE__ */ jsxs23(Fragment5, { children: [
2468
+ /* @__PURE__ */ jsx28(
2074
2469
  TextField,
2075
2470
  {
2076
2471
  ref: mergeRefs(ref, inputRef),
@@ -2081,35 +2476,35 @@ var NumberInput = /* @__PURE__ */ forwardRef21(
2081
2476
  "aria-valuenow": current2 ?? void 0,
2082
2477
  "aria-valuemin": min,
2083
2478
  "aria-valuemax": max,
2084
- "aria-valuetext": current2 === null ? void 0 : `${field3.display}${unit2 ?? ""}`,
2085
- value: field3.display,
2086
- onChange: field3.onChange,
2479
+ "aria-valuetext": current2 === null ? void 0 : `${field4.display}${unit2 ?? ""}`,
2480
+ value: field4.display,
2481
+ onChange: field4.onChange,
2087
2482
  onKeyDown: handleKeyDown,
2088
2483
  onBlur: (event) => {
2089
2484
  if (current2 !== null && clamp(current2) !== current2) setValue(clamp(current2));
2090
- else if (current2 === null && field3.raw !== "") setRaw("");
2485
+ else if (current2 === null && field4.raw !== "") setRaw("");
2091
2486
  onBlur?.(event);
2092
2487
  },
2093
2488
  size,
2094
2489
  disabled,
2095
2490
  readOnly,
2096
2491
  startAdornment: hideStepper ? void 0 : stepper2(-1),
2097
- endAdornment: unit2 || !hideStepper ? /* @__PURE__ */ jsxs21("span", { className: end, children: [
2098
- unit2 && /* @__PURE__ */ jsx25("span", { className: unit, children: unit2 }),
2492
+ endAdornment: unit2 || !hideStepper ? /* @__PURE__ */ jsxs23("span", { className: end, children: [
2493
+ unit2 && /* @__PURE__ */ jsx28("span", { className: unit, children: unit2 }),
2099
2494
  !hideStepper && stepper2(1)
2100
2495
  ] }) : void 0,
2101
2496
  className: cx(input4, className),
2102
2497
  ...rest
2103
2498
  }
2104
2499
  ),
2105
- name && /* @__PURE__ */ jsx25("input", { type: "hidden", name, value: current2 === null ? "" : String(current2) })
2500
+ name && /* @__PURE__ */ jsx28("input", { type: "hidden", name, value: current2 === null ? "" : String(current2) })
2106
2501
  ] });
2107
2502
  }
2108
2503
  );
2109
2504
 
2110
2505
  // src/components/Pagination/Pagination.tsx
2111
2506
  import { ChevronLeftIcon as ChevronLeftIcon2, ChevronRightIcon as ChevronRightIcon4 } from "@bestow-ui/icons";
2112
- import { forwardRef as forwardRef22, useState as useState8 } from "react";
2507
+ import { forwardRef as forwardRef25, useState as useState10 } from "react";
2113
2508
 
2114
2509
  // src/components/Pagination/getPaginationItems.ts
2115
2510
  var range = (start, end2) => end2 < start ? [] : Array.from({ length: end2 - start + 1 }, (_, i) => start + i);
@@ -2138,12 +2533,12 @@ function getPaginationItems(page, totalPages, siblingCount = 1, boundaryCount =
2138
2533
  // src/components/Pagination/Pagination.css.ts
2139
2534
  import { createRuntimeFn as _7a46812 } from "@vanilla-extract/recipes/createRuntimeFn";
2140
2535
  var ellipsis = "_1iraoak4";
2141
- var item6 = /* @__PURE__ */ _7a46812({ defaultClassName: "_1iraoak1", variantClassNames: { size: { sm: "_1iraoak2", md: "_1iraoak3" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
2142
- var list3 = "_1iraoak0";
2536
+ var item7 = /* @__PURE__ */ _7a46812({ defaultClassName: "_1iraoak1", variantClassNames: { size: { sm: "_1iraoak2", md: "_1iraoak3" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
2537
+ var list5 = "_1iraoak0";
2143
2538
 
2144
2539
  // src/components/Pagination/Pagination.tsx
2145
- import { jsx as jsx26, jsxs as jsxs22 } from "react/jsx-runtime";
2146
- var Pagination = /* @__PURE__ */ forwardRef22(function Pagination2({
2540
+ import { jsx as jsx29, jsxs as jsxs24 } from "react/jsx-runtime";
2541
+ var Pagination = /* @__PURE__ */ forwardRef25(function Pagination2({
2147
2542
  totalPages,
2148
2543
  page: pageProp,
2149
2544
  defaultPage = 1,
@@ -2156,7 +2551,7 @@ var Pagination = /* @__PURE__ */ forwardRef22(function Pagination2({
2156
2551
  "aria-label": ariaLabelProp,
2157
2552
  ...rest
2158
2553
  }, ref) {
2159
- const [uncontrolledPage, setUncontrolledPage] = useState8(defaultPage);
2554
+ const [uncontrolledPage, setUncontrolledPage] = useState10(defaultPage);
2160
2555
  const m = useMessages();
2161
2556
  const ariaLabel = ariaLabelProp ?? m.pagination ?? "\uD398\uC774\uC9C0 \uD0D0\uC0C9";
2162
2557
  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`);
@@ -2167,9 +2562,9 @@ var Pagination = /* @__PURE__ */ forwardRef22(function Pagination2({
2167
2562
  if (pageProp === void 0) setUncontrolledPage(next);
2168
2563
  onPageChange?.(next);
2169
2564
  };
2170
- const itemClass = item6({ size });
2171
- return /* @__PURE__ */ jsx26("nav", { ref, "aria-label": ariaLabel, className, ...rest, children: /* @__PURE__ */ jsxs22("ul", { className: list3, children: [
2172
- /* @__PURE__ */ jsx26("li", { children: /* @__PURE__ */ jsx26(
2565
+ const itemClass = item7({ size });
2566
+ return /* @__PURE__ */ jsx29("nav", { ref, "aria-label": ariaLabel, className, ...rest, children: /* @__PURE__ */ jsxs24("ul", { className: list5, children: [
2567
+ /* @__PURE__ */ jsx29("li", { children: /* @__PURE__ */ jsx29(
2173
2568
  "button",
2174
2569
  {
2175
2570
  type: "button",
@@ -2177,23 +2572,23 @@ var Pagination = /* @__PURE__ */ forwardRef22(function Pagination2({
2177
2572
  "aria-label": getItemLabel("previous", page - 1),
2178
2573
  disabled: page <= 1,
2179
2574
  onClick: () => goTo(page - 1),
2180
- children: /* @__PURE__ */ jsx26(ChevronLeftIcon2, { size: 16 })
2575
+ children: /* @__PURE__ */ jsx29(ChevronLeftIcon2, { size: 16 })
2181
2576
  }
2182
2577
  ) }),
2183
2578
  getPaginationItems(page, totalPages, siblingCount, boundaryCount).map(
2184
- (item8) => typeof item8 === "number" ? /* @__PURE__ */ jsx26("li", { children: /* @__PURE__ */ jsx26(
2579
+ (item9) => typeof item9 === "number" ? /* @__PURE__ */ jsx29("li", { children: /* @__PURE__ */ jsx29(
2185
2580
  "button",
2186
2581
  {
2187
2582
  type: "button",
2188
2583
  className: itemClass,
2189
- "aria-label": getItemLabel("page", item8),
2190
- "aria-current": item8 === page ? "page" : void 0,
2191
- onClick: () => goTo(item8),
2192
- children: item8
2584
+ "aria-label": getItemLabel("page", item9),
2585
+ "aria-current": item9 === page ? "page" : void 0,
2586
+ onClick: () => goTo(item9),
2587
+ children: item9
2193
2588
  }
2194
- ) }, item8) : /* @__PURE__ */ jsx26("li", { "aria-hidden": true, className: cx(itemClass, ellipsis), children: "\u2026" }, item8)
2589
+ ) }, item9) : /* @__PURE__ */ jsx29("li", { "aria-hidden": true, className: cx(itemClass, ellipsis), children: "\u2026" }, item9)
2195
2590
  ),
2196
- /* @__PURE__ */ jsx26("li", { children: /* @__PURE__ */ jsx26(
2591
+ /* @__PURE__ */ jsx29("li", { children: /* @__PURE__ */ jsx29(
2197
2592
  "button",
2198
2593
  {
2199
2594
  type: "button",
@@ -2201,21 +2596,21 @@ var Pagination = /* @__PURE__ */ forwardRef22(function Pagination2({
2201
2596
  "aria-label": getItemLabel("next", page + 1),
2202
2597
  disabled: page >= totalPages,
2203
2598
  onClick: () => goTo(page + 1),
2204
- children: /* @__PURE__ */ jsx26(ChevronRightIcon4, { size: 16 })
2599
+ children: /* @__PURE__ */ jsx29(ChevronRightIcon4, { size: 16 })
2205
2600
  }
2206
2601
  ) })
2207
2602
  ] }) });
2208
2603
  });
2209
2604
 
2210
2605
  // src/components/PhoneNumberInput/PhoneNumberInput.tsx
2211
- import { forwardRef as forwardRef23, useRef as useRef11 } from "react";
2212
- import { jsx as jsx27 } from "react/jsx-runtime";
2606
+ import { forwardRef as forwardRef26, useRef as useRef13 } from "react";
2607
+ import { jsx as jsx30 } from "react/jsx-runtime";
2213
2608
  var sanitize3 = (input6) => {
2214
2609
  const digits = input6.replace(/\D/g, "");
2215
2610
  return digits.slice(0, phoneNumberMaxDigits(digits));
2216
2611
  };
2217
2612
  var isDigit4 = (char) => /\d/.test(char);
2218
- var PhoneNumberInput = /* @__PURE__ */ forwardRef23(
2613
+ var PhoneNumberInput = /* @__PURE__ */ forwardRef26(
2219
2614
  function PhoneNumberInput2(props, ref) {
2220
2615
  const {
2221
2616
  value: value3,
@@ -2226,10 +2621,10 @@ var PhoneNumberInput = /* @__PURE__ */ forwardRef23(
2226
2621
  onKeyDown,
2227
2622
  ...rest
2228
2623
  } = props;
2229
- const inputRef = useRef11(null);
2624
+ const inputRef = useRef13(null);
2230
2625
  const m = useMessages();
2231
- const label5 = labelProp ?? m.phoneNumber ?? "\uD734\uB300\uD3F0 \uBC88\uD638";
2232
- const field3 = useFormattedInput({
2626
+ const label6 = labelProp ?? m.phoneNumber ?? "\uD734\uB300\uD3F0 \uBC88\uD638";
2627
+ const field4 = useFormattedInput({
2233
2628
  isControlled: "value" in props,
2234
2629
  value: value3,
2235
2630
  defaultValue,
@@ -2239,19 +2634,19 @@ var PhoneNumberInput = /* @__PURE__ */ forwardRef23(
2239
2634
  isMeaningful: isDigit4,
2240
2635
  inputRef
2241
2636
  });
2242
- return /* @__PURE__ */ jsx27(
2637
+ return /* @__PURE__ */ jsx30(
2243
2638
  TextField,
2244
2639
  {
2245
2640
  ref: mergeRefs(ref, inputRef),
2246
- label: label5,
2641
+ label: label6,
2247
2642
  placeholder,
2248
2643
  type: "tel",
2249
2644
  inputMode: "tel",
2250
2645
  autoComplete: "tel-national",
2251
- value: field3.display,
2252
- onChange: field3.onChange,
2646
+ value: field4.display,
2647
+ onChange: field4.onChange,
2253
2648
  onKeyDown: (event) => {
2254
- field3.onKeyDown(event);
2649
+ field4.onKeyDown(event);
2255
2650
  onKeyDown?.(event);
2256
2651
  },
2257
2652
  ...rest
@@ -2261,7 +2656,7 @@ var PhoneNumberInput = /* @__PURE__ */ forwardRef23(
2261
2656
  );
2262
2657
 
2263
2658
  // src/components/RadioGroup/RadioGroup.tsx
2264
- import { forwardRef as forwardRef24, useId as useId8, useState as useState9 } from "react";
2659
+ import { forwardRef as forwardRef27, useId as useId11, useState as useState11 } from "react";
2265
2660
 
2266
2661
  // src/components/RadioGroup/RadioGroup.css.ts
2267
2662
  import { createRuntimeFn as _7a46813 } from "@vanilla-extract/recipes/createRuntimeFn";
@@ -2274,14 +2669,14 @@ var radio = /* @__PURE__ */ _7a46813({ defaultClassName: "_1w9iwjm7", variantCla
2274
2669
  var text = "_1w9iwjma";
2275
2670
 
2276
2671
  // src/components/RadioGroup/RadioGroup.tsx
2277
- import { jsx as jsx28, jsxs as jsxs23 } from "react/jsx-runtime";
2278
- var RadioGroup2 = /* @__PURE__ */ forwardRef24(function RadioGroup3(props, ref) {
2672
+ import { jsx as jsx31, jsxs as jsxs25 } from "react/jsx-runtime";
2673
+ var RadioGroup2 = /* @__PURE__ */ forwardRef27(function RadioGroup3(props, ref) {
2279
2674
  const {
2280
2675
  options,
2281
2676
  value: value3,
2282
2677
  defaultValue,
2283
2678
  onValueChange,
2284
- label: label5,
2679
+ label: label6,
2285
2680
  helperText: helperText3,
2286
2681
  error,
2287
2682
  orientation = "vertical",
@@ -2294,11 +2689,11 @@ var RadioGroup2 = /* @__PURE__ */ forwardRef24(function RadioGroup3(props, ref)
2294
2689
  className
2295
2690
  } = props;
2296
2691
  const isControlled = "value" in props;
2297
- const [innerValue, setInnerValue] = useState9(defaultValue ?? "");
2692
+ const [innerValue, setInnerValue] = useState11(defaultValue ?? "");
2298
2693
  const current2 = isControlled ? value3 ?? "" : innerValue;
2299
- const generatedId = useId8();
2694
+ const generatedId = useId11();
2300
2695
  const baseId = id ?? generatedId;
2301
- const labelId = label5 ? `${baseId}-label` : void 0;
2696
+ const labelId = label6 ? `${baseId}-label` : void 0;
2302
2697
  const helperId = helperText3 ? `${baseId}-helper` : void 0;
2303
2698
  const groupName = name ?? `${baseId}-radio`;
2304
2699
  const detachedForm = name ? void 0 : `${baseId}-no-form`;
@@ -2307,12 +2702,12 @@ var RadioGroup2 = /* @__PURE__ */ forwardRef24(function RadioGroup3(props, ref)
2307
2702
  if (!isControlled) setInnerValue(next);
2308
2703
  onValueChange?.(next);
2309
2704
  };
2310
- return /* @__PURE__ */ jsxs23("div", { className: cx(field, className), children: [
2311
- label5 && /* @__PURE__ */ jsxs23("span", { id: labelId, className: cx(label, groupLabel), children: [
2312
- label5,
2313
- required && /* @__PURE__ */ jsx28("span", { className: requiredMark, "aria-hidden": true, children: "*" })
2705
+ return /* @__PURE__ */ jsxs25("div", { className: cx(field, className), children: [
2706
+ label6 && /* @__PURE__ */ jsxs25("span", { id: labelId, className: cx(label, groupLabel), children: [
2707
+ label6,
2708
+ required && /* @__PURE__ */ jsx31("span", { className: requiredMark, "aria-hidden": true, children: "*" })
2314
2709
  ] }),
2315
- /* @__PURE__ */ jsx28(
2710
+ /* @__PURE__ */ jsx31(
2316
2711
  "div",
2317
2712
  {
2318
2713
  ref,
@@ -2330,8 +2725,8 @@ var RadioGroup2 = /* @__PURE__ */ forwardRef24(function RadioGroup3(props, ref)
2330
2725
  const descriptionId = option2.description ? `${itemId}-description` : void 0;
2331
2726
  const itemDisabled = disabled || option2.disabled;
2332
2727
  const checked = option2.value === current2;
2333
- return /* @__PURE__ */ jsxs23("div", { className: option({ size }), "data-disabled": itemDisabled || void 0, children: [
2334
- /* @__PURE__ */ jsx28(
2728
+ return /* @__PURE__ */ jsxs25("div", { className: option({ size }), "data-disabled": itemDisabled || void 0, children: [
2729
+ /* @__PURE__ */ jsx31(
2335
2730
  "input",
2336
2731
  {
2337
2732
  type: "radio",
@@ -2348,38 +2743,38 @@ var RadioGroup2 = /* @__PURE__ */ forwardRef24(function RadioGroup3(props, ref)
2348
2743
  className: radio({ size })
2349
2744
  }
2350
2745
  ),
2351
- /* @__PURE__ */ jsxs23("span", { className: text, children: [
2352
- /* @__PURE__ */ jsx28("label", { htmlFor: itemId, className: labelText, children: option2.label }),
2353
- option2.description && /* @__PURE__ */ jsx28("span", { id: descriptionId, className: description4, children: option2.description })
2746
+ /* @__PURE__ */ jsxs25("span", { className: text, children: [
2747
+ /* @__PURE__ */ jsx31("label", { htmlFor: itemId, className: labelText, children: option2.label }),
2748
+ option2.description && /* @__PURE__ */ jsx31("span", { id: descriptionId, className: description4, children: option2.description })
2354
2749
  ] })
2355
2750
  ] }, option2.value);
2356
2751
  })
2357
2752
  }
2358
2753
  ),
2359
- helperText3 && /* @__PURE__ */ jsx28("p", { id: helperId, className: helperText({ error }), children: helperText3 })
2754
+ helperText3 && /* @__PURE__ */ jsx31("p", { id: helperId, className: helperText({ error }), children: helperText3 })
2360
2755
  ] });
2361
2756
  });
2362
2757
 
2363
2758
  // src/components/SegmentedControl/SegmentedControl.tsx
2364
- import { forwardRef as forwardRef25, useId as useId9, useRef as useRef12, useState as useState10 } from "react";
2759
+ import { forwardRef as forwardRef28, useId as useId12, useRef as useRef14, useState as useState12 } from "react";
2365
2760
 
2366
2761
  // src/components/SegmentedControl/SegmentedControl.css.ts
2367
2762
  import { createRuntimeFn as _7a46814 } from "@vanilla-extract/recipes/createRuntimeFn";
2368
2763
  var icon5 = "_1h65mmo7";
2369
- var item7 = /* @__PURE__ */ _7a46814({ defaultClassName: "_1h65mmo2", variantClassNames: { size: { sm: "_1h65mmo3", md: "_1h65mmo4", lg: "_1h65mmo5" }, fullWidth: { true: "_1h65mmo6" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
2370
- var root7 = /* @__PURE__ */ _7a46814({ defaultClassName: "_1h65mmo0", variantClassNames: { fullWidth: { true: "_1h65mmo1" } }, defaultVariants: {}, compoundVariants: [] });
2764
+ var item8 = /* @__PURE__ */ _7a46814({ defaultClassName: "_1h65mmo2", variantClassNames: { size: { sm: "_1h65mmo3", md: "_1h65mmo4", lg: "_1h65mmo5" }, fullWidth: { true: "_1h65mmo6" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
2765
+ var root9 = /* @__PURE__ */ _7a46814({ defaultClassName: "_1h65mmo0", variantClassNames: { fullWidth: { true: "_1h65mmo1" } }, defaultVariants: {}, compoundVariants: [] });
2371
2766
 
2372
2767
  // src/components/SegmentedControl/SegmentedControl.tsx
2373
- import { jsx as jsx29, jsxs as jsxs24 } from "react/jsx-runtime";
2768
+ import { jsx as jsx32, jsxs as jsxs26 } from "react/jsx-runtime";
2374
2769
  var NEXT_KEYS = { ArrowRight: 1, ArrowDown: 1, ArrowLeft: -1, ArrowUp: -1 };
2375
- var SegmentedControl = /* @__PURE__ */ forwardRef25(
2770
+ var SegmentedControl = /* @__PURE__ */ forwardRef28(
2376
2771
  function SegmentedControl2(props, ref) {
2377
2772
  const {
2378
2773
  options,
2379
2774
  value: value3,
2380
2775
  defaultValue,
2381
2776
  onValueChange,
2382
- label: label5,
2777
+ label: label6,
2383
2778
  "aria-label": ariaLabel,
2384
2779
  size,
2385
2780
  fullWidth,
@@ -2389,11 +2784,11 @@ var SegmentedControl = /* @__PURE__ */ forwardRef25(
2389
2784
  className
2390
2785
  } = props;
2391
2786
  const isControlled = "value" in props;
2392
- const [innerValue, setInnerValue] = useState10(defaultValue ?? "");
2787
+ const [innerValue, setInnerValue] = useState12(defaultValue ?? "");
2393
2788
  const current2 = isControlled ? value3 ?? "" : innerValue;
2394
- const generatedId = useId9();
2395
- const labelId = label5 ? `${id ?? generatedId}-label` : void 0;
2396
- const itemRefs = useRef12([]);
2789
+ const generatedId = useId12();
2790
+ const labelId = label6 ? `${id ?? generatedId}-label` : void 0;
2791
+ const itemRefs = useRef14([]);
2397
2792
  const isEnabled = (index) => !disabled && !options[index]?.disabled;
2398
2793
  const select = (index) => {
2399
2794
  const next = options[index].value;
@@ -2405,10 +2800,10 @@ var SegmentedControl = /* @__PURE__ */ forwardRef25(
2405
2800
  const tabStop = checkedIndex >= 0 && isEnabled(checkedIndex) ? checkedIndex : options.findIndex((_, i) => isEnabled(i));
2406
2801
  const handleKeyDown = (event, index) => {
2407
2802
  let target = -1;
2408
- const step = NEXT_KEYS[event.key];
2409
- if (step) {
2803
+ const step2 = NEXT_KEYS[event.key];
2804
+ if (step2) {
2410
2805
  for (let i = 1; i <= options.length; i++) {
2411
- const candidate = (index + step * i + options.length) % options.length;
2806
+ const candidate = (index + step2 * i + options.length) % options.length;
2412
2807
  if (isEnabled(candidate)) {
2413
2808
  target = candidate;
2414
2809
  break;
@@ -2424,20 +2819,20 @@ var SegmentedControl = /* @__PURE__ */ forwardRef25(
2424
2819
  itemRefs.current[target]?.focus();
2425
2820
  select(target);
2426
2821
  };
2427
- const group = /* @__PURE__ */ jsxs24(
2822
+ const group = /* @__PURE__ */ jsxs26(
2428
2823
  "div",
2429
2824
  {
2430
2825
  ref,
2431
2826
  id,
2432
2827
  role: "radiogroup",
2433
2828
  "aria-labelledby": labelId,
2434
- "aria-label": label5 ? void 0 : ariaLabel,
2829
+ "aria-label": label6 ? void 0 : ariaLabel,
2435
2830
  "aria-disabled": disabled || void 0,
2436
- className: cx(root7({ fullWidth }), !label5 && className),
2831
+ className: cx(root9({ fullWidth }), !label6 && className),
2437
2832
  children: [
2438
2833
  options.map((option2, index) => {
2439
2834
  const checked = index === checkedIndex;
2440
- return /* @__PURE__ */ jsxs24(
2835
+ return /* @__PURE__ */ jsxs26(
2441
2836
  "button",
2442
2837
  {
2443
2838
  ref: (node) => {
@@ -2450,24 +2845,24 @@ var SegmentedControl = /* @__PURE__ */ forwardRef25(
2450
2845
  disabled: !isEnabled(index),
2451
2846
  "data-state": checked ? "checked" : "unchecked",
2452
2847
  "data-disabled": isEnabled(index) ? void 0 : "",
2453
- className: item7({ size, fullWidth }),
2848
+ className: item8({ size, fullWidth }),
2454
2849
  onClick: () => select(index),
2455
2850
  onKeyDown: (event) => handleKeyDown(event, index),
2456
2851
  children: [
2457
- option2.icon && /* @__PURE__ */ jsx29("span", { "aria-hidden": true, className: icon5, children: option2.icon }),
2852
+ option2.icon && /* @__PURE__ */ jsx32("span", { "aria-hidden": true, className: icon5, children: option2.icon }),
2458
2853
  option2.label
2459
2854
  ]
2460
2855
  },
2461
2856
  option2.value
2462
2857
  );
2463
2858
  }),
2464
- name && /* @__PURE__ */ jsx29("input", { type: "hidden", name, value: current2 })
2859
+ name && /* @__PURE__ */ jsx32("input", { type: "hidden", name, value: current2 })
2465
2860
  ]
2466
2861
  }
2467
2862
  );
2468
- if (!label5) return group;
2469
- return /* @__PURE__ */ jsxs24("div", { className: cx(field, className), children: [
2470
- /* @__PURE__ */ jsx29("span", { id: labelId, className: label, children: label5 }),
2863
+ if (!label6) return group;
2864
+ return /* @__PURE__ */ jsxs26("div", { className: cx(field, className), children: [
2865
+ /* @__PURE__ */ jsx32("span", { id: labelId, className: label, children: label6 }),
2471
2866
  group
2472
2867
  ] });
2473
2868
  }
@@ -2475,17 +2870,17 @@ var SegmentedControl = /* @__PURE__ */ forwardRef25(
2475
2870
 
2476
2871
  // src/components/Select/Select.tsx
2477
2872
  import * as RadixSelect from "@radix-ui/react-select";
2478
- import { forwardRef as forwardRef26, useId as useId10 } from "react";
2873
+ import { forwardRef as forwardRef29, useId as useId13 } from "react";
2479
2874
  import { CheckIcon as CheckIcon3, ChevronDownIcon as ChevronDownIcon4 } from "@bestow-ui/icons";
2480
- import { jsx as jsx30, jsxs as jsxs25 } from "react/jsx-runtime";
2481
- var Select = /* @__PURE__ */ forwardRef26(function Select2(props, ref) {
2875
+ import { jsx as jsx33, jsxs as jsxs27 } from "react/jsx-runtime";
2876
+ var Select = /* @__PURE__ */ forwardRef29(function Select2(props, ref) {
2482
2877
  const {
2483
2878
  options,
2484
2879
  value: value3,
2485
2880
  defaultValue,
2486
2881
  onValueChange,
2487
2882
  placeholder,
2488
- label: label5,
2883
+ label: label6,
2489
2884
  helperText: helperText3,
2490
2885
  error,
2491
2886
  size,
@@ -2498,16 +2893,16 @@ var Select = /* @__PURE__ */ forwardRef26(function Select2(props, ref) {
2498
2893
  className
2499
2894
  } = props;
2500
2895
  const isControlled = "value" in props;
2501
- const generatedId = useId10();
2896
+ const generatedId = useId13();
2502
2897
  const triggerId = id ?? generatedId;
2503
2898
  const helperId = helperText3 ? `${triggerId}-helper` : void 0;
2504
2899
  const portal2 = usePortalProps();
2505
- return /* @__PURE__ */ jsxs25("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
2506
- label5 && /* @__PURE__ */ jsxs25("label", { htmlFor: triggerId, className: label, children: [
2507
- label5,
2508
- required && /* @__PURE__ */ jsx30("span", { className: requiredMark, "aria-hidden": true, children: "*" })
2900
+ return /* @__PURE__ */ jsxs27("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
2901
+ label6 && /* @__PURE__ */ jsxs27("label", { htmlFor: triggerId, className: label, children: [
2902
+ label6,
2903
+ required && /* @__PURE__ */ jsx33("span", { className: requiredMark, "aria-hidden": true, children: "*" })
2509
2904
  ] }),
2510
- /* @__PURE__ */ jsxs25(
2905
+ /* @__PURE__ */ jsxs27(
2511
2906
  RadixSelect.Root,
2512
2907
  {
2513
2908
  value: isControlled ? value3 ?? "" : void 0,
@@ -2517,7 +2912,7 @@ var Select = /* @__PURE__ */ forwardRef26(function Select2(props, ref) {
2517
2912
  required,
2518
2913
  name,
2519
2914
  children: [
2520
- /* @__PURE__ */ jsxs25(
2915
+ /* @__PURE__ */ jsxs27(
2521
2916
  RadixSelect.Trigger,
2522
2917
  {
2523
2918
  ref,
@@ -2528,12 +2923,12 @@ var Select = /* @__PURE__ */ forwardRef26(function Select2(props, ref) {
2528
2923
  "data-invalid": error || void 0,
2529
2924
  className: cx(root3({ size, fullWidth }), trigger2, className),
2530
2925
  children: [
2531
- /* @__PURE__ */ jsx30("span", { className: value, children: /* @__PURE__ */ jsx30(RadixSelect.Value, { placeholder }) }),
2532
- /* @__PURE__ */ jsx30(RadixSelect.Icon, { className: icon3, children: /* @__PURE__ */ jsx30(ChevronDownIcon4, { size: 16 }) })
2926
+ /* @__PURE__ */ jsx33("span", { className: value, children: /* @__PURE__ */ jsx33(RadixSelect.Value, { placeholder }) }),
2927
+ /* @__PURE__ */ jsx33(RadixSelect.Icon, { className: icon3, children: /* @__PURE__ */ jsx33(ChevronDownIcon4, { size: 16 }) })
2533
2928
  ]
2534
2929
  }
2535
2930
  ),
2536
- /* @__PURE__ */ jsx30(RadixSelect.Portal, { children: /* @__PURE__ */ jsx30(
2931
+ /* @__PURE__ */ jsx33(RadixSelect.Portal, { children: /* @__PURE__ */ jsx33(
2537
2932
  RadixSelect.Content,
2538
2933
  {
2539
2934
  position: "popper",
@@ -2541,15 +2936,15 @@ var Select = /* @__PURE__ */ forwardRef26(function Select2(props, ref) {
2541
2936
  collisionPadding: 8,
2542
2937
  className: cx(portal2.className, content5),
2543
2938
  style: portal2.style,
2544
- children: /* @__PURE__ */ jsx30(RadixSelect.Viewport, { className: viewport, children: options.map((option2) => /* @__PURE__ */ jsxs25(
2939
+ children: /* @__PURE__ */ jsx33(RadixSelect.Viewport, { className: viewport, children: options.map((option2) => /* @__PURE__ */ jsxs27(
2545
2940
  RadixSelect.Item,
2546
2941
  {
2547
2942
  value: option2.value,
2548
2943
  disabled: option2.disabled,
2549
2944
  className: item4,
2550
2945
  children: [
2551
- /* @__PURE__ */ jsx30(RadixSelect.ItemText, { children: option2.label }),
2552
- /* @__PURE__ */ jsx30(RadixSelect.ItemIndicator, { className: itemIndicator, children: /* @__PURE__ */ jsx30(CheckIcon3, { size: 16 }) })
2946
+ /* @__PURE__ */ jsx33(RadixSelect.ItemText, { children: option2.label }),
2947
+ /* @__PURE__ */ jsx33(RadixSelect.ItemIndicator, { className: itemIndicator, children: /* @__PURE__ */ jsx33(CheckIcon3, { size: 16 }) })
2553
2948
  ]
2554
2949
  },
2555
2950
  option2.value
@@ -2559,19 +2954,19 @@ var Select = /* @__PURE__ */ forwardRef26(function Select2(props, ref) {
2559
2954
  ]
2560
2955
  }
2561
2956
  ),
2562
- helperText3 && /* @__PURE__ */ jsx30("p", { id: helperId, className: helperText({ error }), children: helperText3 })
2957
+ helperText3 && /* @__PURE__ */ jsx33("p", { id: helperId, className: helperText({ error }), children: helperText3 })
2563
2958
  ] });
2564
2959
  });
2565
2960
 
2566
2961
  // src/components/SkipLink/SkipLink.tsx
2567
- import { forwardRef as forwardRef27 } from "react";
2962
+ import { forwardRef as forwardRef30 } from "react";
2568
2963
 
2569
2964
  // src/components/SkipLink/SkipLink.css.ts
2570
2965
  var skipLink = "_1t9jaar0";
2571
2966
 
2572
2967
  // src/components/SkipLink/SkipLink.tsx
2573
- import { jsx as jsx31 } from "react/jsx-runtime";
2574
- var SkipLink = /* @__PURE__ */ forwardRef27(function SkipLink2({ href = "#main", className, children, onClick, ...rest }, ref) {
2968
+ import { jsx as jsx34 } from "react/jsx-runtime";
2969
+ var SkipLink = /* @__PURE__ */ forwardRef30(function SkipLink2({ href = "#main", className, children, onClick, ...rest }, ref) {
2575
2970
  const m = useMessages();
2576
2971
  const handleClick = (event) => {
2577
2972
  onClick?.(event);
@@ -2583,35 +2978,35 @@ var SkipLink = /* @__PURE__ */ forwardRef27(function SkipLink2({ href = "#main",
2583
2978
  target.focus();
2584
2979
  target.scrollIntoView?.({ block: "start" });
2585
2980
  };
2586
- return /* @__PURE__ */ jsx31("a", { ref, href, className: cx(skipLink, className), onClick: handleClick, ...rest, children: children ?? m.skipToContent ?? "\uBCF8\uBB38 \uBC14\uB85C\uAC00\uAE30" });
2981
+ return /* @__PURE__ */ jsx34("a", { ref, href, className: cx(skipLink, className), onClick: handleClick, ...rest, children: children ?? m.skipToContent ?? "\uBCF8\uBB38 \uBC14\uB85C\uAC00\uAE30" });
2587
2982
  });
2588
2983
 
2589
2984
  // src/components/Slider/Slider.tsx
2590
2985
  import * as RadixSlider from "@radix-ui/react-slider";
2591
- import { forwardRef as forwardRef28, useId as useId11, useState as useState11 } from "react";
2986
+ import { forwardRef as forwardRef31, useId as useId14, useState as useState13 } from "react";
2592
2987
 
2593
2988
  // src/components/Slider/Slider.css.ts
2594
2989
  import { createRuntimeFn as _7a46815 } from "@vanilla-extract/recipes/createRuntimeFn";
2595
- var field2 = "_126mzjm0";
2990
+ var field3 = "_126mzjm0";
2596
2991
  var header6 = "_126mzjm1";
2597
2992
  var helperText2 = "_126mzjm4";
2598
2993
  var label3 = "_126mzjm2";
2599
2994
  var range2 = "_126mzjmb";
2600
- var root8 = /* @__PURE__ */ _7a46815({ defaultClassName: "_126mzjm5", variantClassNames: { size: { sm: "_126mzjm6", md: "_126mzjm7" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
2995
+ var root10 = /* @__PURE__ */ _7a46815({ defaultClassName: "_126mzjm5", variantClassNames: { size: { sm: "_126mzjm6", md: "_126mzjm7" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
2601
2996
  var thumb = /* @__PURE__ */ _7a46815({ defaultClassName: "_126mzjmc", variantClassNames: { size: { sm: "_126mzjmd", md: "_126mzjme" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
2602
2997
  var track = /* @__PURE__ */ _7a46815({ defaultClassName: "_126mzjm8", variantClassNames: { size: { sm: "_126mzjm9", md: "_126mzjma" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
2603
2998
  var value2 = "_126mzjm3";
2604
2999
 
2605
3000
  // src/components/Slider/Slider.tsx
2606
- import { jsx as jsx32, jsxs as jsxs26 } from "react/jsx-runtime";
2607
- var Slider = /* @__PURE__ */ forwardRef28(function Slider2(props, ref) {
3001
+ import { jsx as jsx35, jsxs as jsxs28 } from "react/jsx-runtime";
3002
+ var Slider = /* @__PURE__ */ forwardRef31(function Slider2(props, ref) {
2608
3003
  const {
2609
3004
  value: value3,
2610
3005
  defaultValue,
2611
3006
  onValueChange,
2612
3007
  min = 0,
2613
3008
  max = 100,
2614
- label: label5,
3009
+ label: label6,
2615
3010
  "aria-label": ariaLabel,
2616
3011
  helperText: helperText3,
2617
3012
  showValue,
@@ -2625,12 +3020,12 @@ var Slider = /* @__PURE__ */ forwardRef28(function Slider2(props, ref) {
2625
3020
  } = props;
2626
3021
  const m = useMessages();
2627
3022
  const thumbLabels = thumbLabelsProp ?? [m.rangeStart ?? "\uCD5C\uC18C", m.rangeEnd ?? "\uCD5C\uB300"];
2628
- const generatedId = useId11();
3023
+ const generatedId = useId14();
2629
3024
  const baseId = id ?? generatedId;
2630
3025
  const labelId = `${baseId}-label`;
2631
3026
  const helperId = `${baseId}-helper`;
2632
3027
  const isControlled = "value" in props;
2633
- const [innerValue, setInnerValue] = useState11(defaultValue ?? [min]);
3028
+ const [innerValue, setInnerValue] = useState13(defaultValue ?? [min]);
2634
3029
  const current2 = isControlled ? value3 ?? [min] : innerValue;
2635
3030
  const isRange = current2.length > 1;
2636
3031
  const handleChange = (next) => {
@@ -2638,12 +3033,12 @@ var Slider = /* @__PURE__ */ forwardRef28(function Slider2(props, ref) {
2638
3033
  onValueChange?.(next);
2639
3034
  };
2640
3035
  const valueText = current2.map(formatValue).join(" \u2013 ");
2641
- return /* @__PURE__ */ jsxs26("div", { className: cx(field2, className), children: [
2642
- (label5 || showValue) && /* @__PURE__ */ jsxs26("div", { className: header6, children: [
2643
- label5 && /* @__PURE__ */ jsx32("span", { id: labelId, className: label3, children: label5 }),
2644
- showValue && /* @__PURE__ */ jsx32("span", { className: value2, "aria-hidden": true, children: valueText })
3036
+ return /* @__PURE__ */ jsxs28("div", { className: cx(field3, className), children: [
3037
+ (label6 || showValue) && /* @__PURE__ */ jsxs28("div", { className: header6, children: [
3038
+ label6 && /* @__PURE__ */ jsx35("span", { id: labelId, className: label3, children: label6 }),
3039
+ showValue && /* @__PURE__ */ jsx35("span", { className: value2, "aria-hidden": true, children: valueText })
2645
3040
  ] }),
2646
- /* @__PURE__ */ jsxs26(
3041
+ /* @__PURE__ */ jsxs28(
2647
3042
  RadixSlider.Root,
2648
3043
  {
2649
3044
  ref,
@@ -2653,18 +3048,18 @@ var Slider = /* @__PURE__ */ forwardRef28(function Slider2(props, ref) {
2653
3048
  disabled,
2654
3049
  value: current2,
2655
3050
  onValueChange: handleChange,
2656
- className: root8({ size }),
3051
+ className: root10({ size }),
2657
3052
  ...rest,
2658
3053
  children: [
2659
- /* @__PURE__ */ jsx32(RadixSlider.Track, { className: track({ size }), children: /* @__PURE__ */ jsx32(RadixSlider.Range, { className: range2 }) }),
3054
+ /* @__PURE__ */ jsx35(RadixSlider.Track, { className: track({ size }), children: /* @__PURE__ */ jsx35(RadixSlider.Range, { className: range2 }) }),
2660
3055
  current2.map((thumbValue, index) => {
2661
3056
  const thumbLabelId = `${baseId}-thumb-${index}`;
2662
- return /* @__PURE__ */ jsx32(
3057
+ return /* @__PURE__ */ jsx35(
2663
3058
  RadixSlider.Thumb,
2664
3059
  {
2665
3060
  className: thumb({ size }),
2666
- "aria-labelledby": label5 ? isRange ? `${labelId} ${thumbLabelId}` : labelId : isRange ? thumbLabelId : void 0,
2667
- "aria-label": label5 ? void 0 : isRange ? void 0 : ariaLabel,
3061
+ "aria-labelledby": label6 ? isRange ? `${labelId} ${thumbLabelId}` : labelId : isRange ? thumbLabelId : void 0,
3062
+ "aria-label": label6 ? void 0 : isRange ? void 0 : ariaLabel,
2668
3063
  "aria-valuetext": formatValue(thumbValue),
2669
3064
  "aria-describedby": helperText3 ? helperId : void 0
2670
3065
  },
@@ -2674,32 +3069,86 @@ var Slider = /* @__PURE__ */ forwardRef28(function Slider2(props, ref) {
2674
3069
  ]
2675
3070
  }
2676
3071
  ),
2677
- isRange && current2.map((_, index) => /* @__PURE__ */ jsxs26("span", { id: `${baseId}-thumb-${index}`, hidden: true, children: [
2678
- label5 ? "" : ariaLabel ? `${ariaLabel} ` : "",
3072
+ isRange && current2.map((_, index) => /* @__PURE__ */ jsxs28("span", { id: `${baseId}-thumb-${index}`, hidden: true, children: [
3073
+ label6 ? "" : ariaLabel ? `${ariaLabel} ` : "",
2679
3074
  thumbLabels[index] ?? `${index + 1}`
2680
3075
  ] }, index)),
2681
- helperText3 && /* @__PURE__ */ jsx32("span", { id: helperId, className: helperText2, children: helperText3 })
3076
+ helperText3 && /* @__PURE__ */ jsx35("span", { id: helperId, className: helperText2, children: helperText3 })
2682
3077
  ] });
2683
3078
  });
2684
3079
 
3080
+ // src/components/Stepper/Stepper.tsx
3081
+ import { forwardRef as forwardRef32 } from "react";
3082
+ import { CheckIcon as CheckIcon4 } from "@bestow-ui/icons";
3083
+
3084
+ // src/components/Stepper/Stepper.css.ts
3085
+ import { createRuntimeFn as _7a46816 } from "@vanilla-extract/recipes/createRuntimeFn";
3086
+ var description5 = "kervhmh";
3087
+ var indicator2 = /* @__PURE__ */ _7a46816({ defaultClassName: "kervhm6", variantClassNames: { status: { complete: "kervhm7", current: "kervhm8", upcoming: "kervhm9" } }, defaultVariants: {}, compoundVariants: [] });
3088
+ var label4 = /* @__PURE__ */ _7a46816({ defaultClassName: "kervhmd", variantClassNames: { status: { complete: "kervhme", current: "kervhmf", upcoming: "kervhmg" } }, defaultVariants: {}, compoundVariants: [] });
3089
+ var root11 = /* @__PURE__ */ _7a46816({ defaultClassName: "kervhm0", variantClassNames: { orientation: { horizontal: "kervhm1", vertical: "kervhm2" } }, defaultVariants: { orientation: "horizontal" }, compoundVariants: [] });
3090
+ var step = /* @__PURE__ */ _7a46816({ defaultClassName: "kervhm3", variantClassNames: { orientation: { horizontal: "kervhm4", vertical: "kervhm5" } }, defaultVariants: { orientation: "horizontal" }, compoundVariants: [] });
3091
+ var text2 = /* @__PURE__ */ _7a46816({ defaultClassName: "kervhma", variantClassNames: { orientation: { horizontal: "kervhmb", vertical: "kervhmc" } }, defaultVariants: {}, compoundVariants: [] });
3092
+
3093
+ // src/components/Stepper/Stepper.tsx
3094
+ import { jsx as jsx36, jsxs as jsxs29 } from "react/jsx-runtime";
3095
+ var Stepper = /* @__PURE__ */ forwardRef32(function Stepper2({ steps, current: current2, orientation = "horizontal", "aria-label": ariaLabel, className, ...rest }, ref) {
3096
+ const m = useMessages();
3097
+ return /* @__PURE__ */ jsx36(
3098
+ "ol",
3099
+ {
3100
+ ref,
3101
+ "aria-label": ariaLabel ?? m.steps ?? "\uC9C4\uD589 \uB2E8\uACC4",
3102
+ className: cx(root11({ orientation }), className),
3103
+ ...rest,
3104
+ children: steps.map((step2, index) => {
3105
+ const status = index < current2 ? "complete" : index === current2 ? "current" : "upcoming";
3106
+ return /* @__PURE__ */ jsxs29(
3107
+ "li",
3108
+ {
3109
+ className: step({ orientation }),
3110
+ "data-status": status,
3111
+ "aria-current": status === "current" ? "step" : void 0,
3112
+ children: [
3113
+ /* @__PURE__ */ jsx36("span", { className: indicator2({ status }), "aria-hidden": true, children: status === "complete" ? /* @__PURE__ */ jsx36(CheckIcon4, { size: 16, strokeWidth: 2.5 }) : index + 1 }),
3114
+ /* @__PURE__ */ jsxs29("span", { className: text2({ orientation }), children: [
3115
+ /* @__PURE__ */ jsxs29("span", { className: label4({ status }), children: [
3116
+ step2.label,
3117
+ status === "complete" && /* @__PURE__ */ jsxs29("span", { className: visuallyHidden, children: [
3118
+ " (",
3119
+ m.stepCompleted ?? "\uC644\uB8CC",
3120
+ ")"
3121
+ ] })
3122
+ ] }),
3123
+ step2.description && /* @__PURE__ */ jsx36("span", { className: description5, children: step2.description })
3124
+ ] })
3125
+ ]
3126
+ },
3127
+ index
3128
+ );
3129
+ })
3130
+ }
3131
+ );
3132
+ });
3133
+
2685
3134
  // src/components/Switch/Switch.tsx
2686
3135
  import * as RadixSwitch from "@radix-ui/react-switch";
2687
- import { forwardRef as forwardRef29, useId as useId12 } from "react";
3136
+ import { forwardRef as forwardRef33, useId as useId15 } from "react";
2688
3137
 
2689
3138
  // src/components/Switch/Switch.css.ts
2690
- import { createRuntimeFn as _7a46816 } from "@vanilla-extract/recipes/createRuntimeFn";
2691
- var label4 = "o33ul29";
2692
- var root9 = /* @__PURE__ */ _7a46816({ defaultClassName: "o33ul20", variantClassNames: { size: { sm: "o33ul21", md: "o33ul22" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
2693
- var thumb2 = /* @__PURE__ */ _7a46816({ defaultClassName: "o33ul26", variantClassNames: { size: { sm: "o33ul27", md: "o33ul28" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
2694
- var track2 = /* @__PURE__ */ _7a46816({ defaultClassName: "o33ul23", variantClassNames: { size: { sm: "o33ul24", md: "o33ul25" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
3139
+ import { createRuntimeFn as _7a46817 } from "@vanilla-extract/recipes/createRuntimeFn";
3140
+ var label5 = "o33ul29";
3141
+ var root12 = /* @__PURE__ */ _7a46817({ defaultClassName: "o33ul20", variantClassNames: { size: { sm: "o33ul21", md: "o33ul22" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
3142
+ var thumb2 = /* @__PURE__ */ _7a46817({ defaultClassName: "o33ul26", variantClassNames: { size: { sm: "o33ul27", md: "o33ul28" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
3143
+ var track2 = /* @__PURE__ */ _7a46817({ defaultClassName: "o33ul23", variantClassNames: { size: { sm: "o33ul24", md: "o33ul25" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
2695
3144
 
2696
3145
  // src/components/Switch/Switch.tsx
2697
- import { jsx as jsx33, jsxs as jsxs27 } from "react/jsx-runtime";
2698
- var Switch = /* @__PURE__ */ forwardRef29(function Switch2({ label: label5, size, id, className, disabled, "aria-label": ariaLabel, ...rest }, ref) {
2699
- const generatedId = useId12();
3146
+ import { jsx as jsx37, jsxs as jsxs30 } from "react/jsx-runtime";
3147
+ var Switch = /* @__PURE__ */ forwardRef33(function Switch2({ label: label6, size, id, className, disabled, "aria-label": ariaLabel, ...rest }, ref) {
3148
+ const generatedId = useId15();
2700
3149
  const switchId = id ?? generatedId;
2701
- return /* @__PURE__ */ jsxs27("span", { className: cx(root9({ size }), className), "data-disabled": disabled || void 0, children: [
2702
- /* @__PURE__ */ jsx33(
3150
+ return /* @__PURE__ */ jsxs30("span", { className: cx(root12({ size }), className), "data-disabled": disabled || void 0, children: [
3151
+ /* @__PURE__ */ jsx37(
2703
3152
  RadixSwitch.Root,
2704
3153
  {
2705
3154
  ref,
@@ -2708,28 +3157,30 @@ var Switch = /* @__PURE__ */ forwardRef29(function Switch2({ label: label5, size
2708
3157
  "aria-label": ariaLabel,
2709
3158
  className: track2({ size }),
2710
3159
  ...rest,
2711
- children: /* @__PURE__ */ jsx33(RadixSwitch.Thumb, { className: thumb2({ size }) })
3160
+ children: /* @__PURE__ */ jsx37(RadixSwitch.Thumb, { className: thumb2({ size }) })
2712
3161
  }
2713
3162
  ),
2714
- label5 && /* @__PURE__ */ jsx33("label", { htmlFor: switchId, className: label4, children: label5 })
3163
+ label6 && /* @__PURE__ */ jsx37("label", { htmlFor: switchId, className: label5, children: label6 })
2715
3164
  ] });
2716
3165
  });
2717
3166
 
2718
3167
  // src/components/Table/Table.tsx
2719
3168
  import {
2720
3169
  createContext as createContext3,
2721
- forwardRef as forwardRef30,
3170
+ forwardRef as forwardRef34,
2722
3171
  useContext as useContext3,
2723
- useId as useId13
3172
+ useId as useId16
2724
3173
  } from "react";
2725
3174
  import { ArrowDownIcon, ArrowUpIcon } from "@bestow-ui/icons";
2726
3175
 
2727
3176
  // src/components/Table/Table.css.ts
2728
- import { createRuntimeFn as _7a46817 } from "@vanilla-extract/recipes/createRuntimeFn";
3177
+ import { createRuntimeFn as _7a46818 } from "@vanilla-extract/recipes/createRuntimeFn";
2729
3178
  var body3 = "l3ploy5";
2730
3179
  var caption = "l3ploy2";
2731
- var cell2 = /* @__PURE__ */ _7a46817({ defaultClassName: "l3ploy9", variantClassNames: { size: { sm: "l3ploya", md: "l3ployb" }, align: { left: "l3ployc", center: "l3ployd", right: "l3ploye" } }, defaultVariants: { size: "md", align: "left" }, compoundVariants: [] });
3180
+ var cell2 = /* @__PURE__ */ _7a46818({ defaultClassName: "l3ploy9", variantClassNames: { size: { sm: "l3ploya", md: "l3ployb" }, align: { left: "l3ployc", center: "l3ployd", right: "l3ploye" } }, defaultVariants: { size: "md", align: "left" }, compoundVariants: [] });
2732
3181
  var container = "l3ploy0";
3182
+ var emptyCell = "l3ployj";
3183
+ var emptyContent = "l3ployk";
2733
3184
  var footer3 = "l3ploy7";
2734
3185
  var footerCell = "l3ployg";
2735
3186
  var head = "l3ployf";
@@ -2742,10 +3193,10 @@ var striped = "l3ploy6";
2742
3193
  var table = "l3ploy1";
2743
3194
 
2744
3195
  // src/components/Table/Table.tsx
2745
- import { jsx as jsx34, jsxs as jsxs28 } from "react/jsx-runtime";
3196
+ import { Fragment as Fragment6, jsx as jsx38, jsxs as jsxs31 } from "react/jsx-runtime";
2746
3197
  var TableSizeContext = /* @__PURE__ */ createContext3("md");
2747
3198
  var TableSectionContext = /* @__PURE__ */ createContext3("body");
2748
- var Table = /* @__PURE__ */ forwardRef30(function Table2({
3199
+ var Table = /* @__PURE__ */ forwardRef34(function Table2({
2749
3200
  size = "md",
2750
3201
  striped: striped2,
2751
3202
  stickyHeader: stickyHeader2,
@@ -2757,8 +3208,8 @@ var Table = /* @__PURE__ */ forwardRef30(function Table2({
2757
3208
  children,
2758
3209
  ...rest
2759
3210
  }, ref) {
2760
- const captionId = useId13();
2761
- return /* @__PURE__ */ jsx34(TableSizeContext.Provider, { value: size, children: /* @__PURE__ */ jsx34(
3211
+ const captionId = useId16();
3212
+ return /* @__PURE__ */ jsx38(TableSizeContext.Provider, { value: size, children: /* @__PURE__ */ jsx38(
2762
3213
  "div",
2763
3214
  {
2764
3215
  className: cx(container, containerClassName),
@@ -2767,7 +3218,7 @@ var Table = /* @__PURE__ */ forwardRef30(function Table2({
2767
3218
  role: "region",
2768
3219
  "aria-labelledby": caption2 ? captionId : void 0,
2769
3220
  "aria-label": caption2 ? void 0 : ariaLabel,
2770
- children: /* @__PURE__ */ jsxs28(
3221
+ children: /* @__PURE__ */ jsxs31(
2771
3222
  "table",
2772
3223
  {
2773
3224
  ref,
@@ -2775,7 +3226,7 @@ var Table = /* @__PURE__ */ forwardRef30(function Table2({
2775
3226
  "aria-label": caption2 ? void 0 : ariaLabel,
2776
3227
  ...rest,
2777
3228
  children: [
2778
- caption2 && /* @__PURE__ */ jsx34("caption", { id: captionId, className: caption, children: caption2 }),
3229
+ caption2 && /* @__PURE__ */ jsx38("caption", { id: captionId, className: caption, children: caption2 }),
2779
3230
  children
2780
3231
  ]
2781
3232
  }
@@ -2783,31 +3234,31 @@ var Table = /* @__PURE__ */ forwardRef30(function Table2({
2783
3234
  }
2784
3235
  ) });
2785
3236
  });
2786
- var TableHeader = /* @__PURE__ */ forwardRef30(
3237
+ var TableHeader = /* @__PURE__ */ forwardRef34(
2787
3238
  function TableHeader2({ className, ...rest }, ref) {
2788
- return /* @__PURE__ */ jsx34(TableSectionContext.Provider, { value: "header", children: /* @__PURE__ */ jsx34("thead", { ref, className: cx(header7, className), ...rest }) });
3239
+ return /* @__PURE__ */ jsx38(TableSectionContext.Provider, { value: "header", children: /* @__PURE__ */ jsx38("thead", { ref, className: cx(header7, className), ...rest }) });
2789
3240
  }
2790
3241
  );
2791
- var TableBody = /* @__PURE__ */ forwardRef30(
3242
+ var TableBody = /* @__PURE__ */ forwardRef34(
2792
3243
  function TableBody2({ className, ...rest }, ref) {
2793
- return /* @__PURE__ */ jsx34(TableSectionContext.Provider, { value: "body", children: /* @__PURE__ */ jsx34("tbody", { ref, className: cx(body3, className), ...rest }) });
3244
+ return /* @__PURE__ */ jsx38(TableSectionContext.Provider, { value: "body", children: /* @__PURE__ */ jsx38("tbody", { ref, className: cx(body3, className), ...rest }) });
2794
3245
  }
2795
3246
  );
2796
- var TableFooter = /* @__PURE__ */ forwardRef30(
3247
+ var TableFooter = /* @__PURE__ */ forwardRef34(
2797
3248
  function TableFooter2({ className, ...rest }, ref) {
2798
- return /* @__PURE__ */ jsx34(TableSectionContext.Provider, { value: "footer", children: /* @__PURE__ */ jsx34("tfoot", { ref, className: cx(footer3, className), ...rest }) });
3249
+ return /* @__PURE__ */ jsx38(TableSectionContext.Provider, { value: "footer", children: /* @__PURE__ */ jsx38("tfoot", { ref, className: cx(footer3, className), ...rest }) });
2799
3250
  }
2800
3251
  );
2801
- var TableRow = /* @__PURE__ */ forwardRef30(function TableRow2({ selected, className, ...rest }, ref) {
2802
- return /* @__PURE__ */ jsx34("tr", { ref, className: cx(row3, className), "data-state": selected ? "selected" : void 0, ...rest });
3252
+ var TableRow = /* @__PURE__ */ forwardRef34(function TableRow2({ selected, className, ...rest }, ref) {
3253
+ return /* @__PURE__ */ jsx38("tr", { ref, className: cx(row3, className), "data-state": selected ? "selected" : void 0, ...rest });
2803
3254
  });
2804
- var TableHead = /* @__PURE__ */ forwardRef30(function TableHead2({ align, sortDirection, onSort, scope, className, children, ...rest }, ref) {
3255
+ var TableHead = /* @__PURE__ */ forwardRef34(function TableHead2({ align, sortDirection, onSort, scope, className, children, ...rest }, ref) {
2805
3256
  const size = useContext3(TableSizeContext);
2806
3257
  const section = useContext3(TableSectionContext);
2807
3258
  const sortable = onSort !== void 0;
2808
3259
  const direction = sortDirection ?? "none";
2809
3260
  const SortIcon = direction === "descending" ? ArrowDownIcon : ArrowUpIcon;
2810
- return /* @__PURE__ */ jsx34(
3261
+ return /* @__PURE__ */ jsx38(
2811
3262
  "th",
2812
3263
  {
2813
3264
  ref,
@@ -2819,17 +3270,17 @@ var TableHead = /* @__PURE__ */ forwardRef30(function TableHead2({ align, sortDi
2819
3270
  className
2820
3271
  ),
2821
3272
  ...rest,
2822
- children: sortable ? /* @__PURE__ */ jsxs28("button", { type: "button", className: sortButton, onClick: onSort, children: [
3273
+ children: sortable ? /* @__PURE__ */ jsxs31("button", { type: "button", className: sortButton, onClick: onSort, children: [
2823
3274
  children,
2824
- /* @__PURE__ */ jsx34(SortIcon, { size: 14, className: sortIcon, "data-active": direction !== "none", "aria-hidden": true })
3275
+ /* @__PURE__ */ jsx38(SortIcon, { size: 14, className: sortIcon, "data-active": direction !== "none", "aria-hidden": true })
2825
3276
  ] }) : children
2826
3277
  }
2827
3278
  );
2828
3279
  });
2829
- var TableCell = /* @__PURE__ */ forwardRef30(function TableCell2({ align, className, ...rest }, ref) {
3280
+ var TableCell = /* @__PURE__ */ forwardRef34(function TableCell2({ align, className, ...rest }, ref) {
2830
3281
  const size = useContext3(TableSizeContext);
2831
3282
  const section = useContext3(TableSectionContext);
2832
- return /* @__PURE__ */ jsx34(
3283
+ return /* @__PURE__ */ jsx38(
2833
3284
  "td",
2834
3285
  {
2835
3286
  ref,
@@ -2838,58 +3289,95 @@ var TableCell = /* @__PURE__ */ forwardRef30(function TableCell2({ align, classN
2838
3289
  }
2839
3290
  );
2840
3291
  });
3292
+ var TableEmpty = /* @__PURE__ */ forwardRef34(function TableEmpty2({ colSpan, className, children, ...rest }, ref) {
3293
+ return /* @__PURE__ */ jsx38(TableRow, { children: /* @__PURE__ */ jsx38(TableCell, { ref, colSpan, className: cx(emptyCell, className), ...rest, children: /* @__PURE__ */ jsx38("div", { className: emptyContent, children }) }) });
3294
+ });
3295
+ function TableSkeleton({ rows = 5, columns }) {
3296
+ 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)) });
3297
+ }
3298
+
3299
+ // src/components/Table/useTableSelection.ts
3300
+ import { useCallback, useState as useState14 } from "react";
3301
+ function useTableSelection(initial = []) {
3302
+ const [selected, setSelected] = useState14(initial);
3303
+ const isSelected = useCallback((id) => selected.includes(id), [selected]);
3304
+ const toggle3 = useCallback((id, checked) => {
3305
+ setSelected((prev) => {
3306
+ const on = checked ?? !prev.includes(id);
3307
+ if (on) return prev.includes(id) ? prev : [...prev, id];
3308
+ return prev.filter((value3) => value3 !== id);
3309
+ });
3310
+ }, []);
3311
+ const clear2 = useCallback(() => setSelected([]), []);
3312
+ const selectAllProps = (pageIds) => {
3313
+ const all2 = pageIds.length > 0 && pageIds.every((id) => selected.includes(id));
3314
+ const some = pageIds.some((id) => selected.includes(id));
3315
+ return {
3316
+ checked: all2,
3317
+ indeterminate: !all2 && some,
3318
+ onChange: () => setSelected(
3319
+ (prev) => all2 ? prev.filter((id) => !pageIds.includes(id)) : [...prev, ...pageIds.filter((id) => !prev.includes(id))]
3320
+ )
3321
+ };
3322
+ };
3323
+ const rowProps = (id) => ({
3324
+ checked: selected.includes(id),
3325
+ onChange: (event) => toggle3(id, event.target.checked)
3326
+ });
3327
+ return { selected, setSelected, isSelected, toggle: toggle3, clear: clear2, selectAllProps, rowProps };
3328
+ }
2841
3329
 
2842
3330
  // src/components/Tabs/Tabs.tsx
2843
3331
  import * as RadixTabs from "@radix-ui/react-tabs";
2844
- import { createContext as createContext4, forwardRef as forwardRef31, useContext as useContext4 } from "react";
3332
+ import { createContext as createContext4, forwardRef as forwardRef35, useContext as useContext4 } from "react";
2845
3333
 
2846
3334
  // src/components/Tabs/Tabs.css.ts
2847
- import { createRuntimeFn as _7a46818 } from "@vanilla-extract/recipes/createRuntimeFn";
3335
+ import { createRuntimeFn as _7a46819 } from "@vanilla-extract/recipes/createRuntimeFn";
2848
3336
  var content10 = "fvhbtdb";
2849
- var list4 = /* @__PURE__ */ _7a46818({ defaultClassName: "fvhbtd1", variantClassNames: { variant: { line: "fvhbtd2", soft: "fvhbtd3" } }, defaultVariants: { variant: "line" }, compoundVariants: [] });
2850
- var root10 = "fvhbtd0";
2851
- var trigger3 = /* @__PURE__ */ _7a46818({ 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"]] });
3337
+ var list6 = /* @__PURE__ */ _7a46819({ defaultClassName: "fvhbtd1", variantClassNames: { variant: { line: "fvhbtd2", soft: "fvhbtd3" } }, defaultVariants: { variant: "line" }, compoundVariants: [] });
3338
+ var root13 = "fvhbtd0";
3339
+ 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"]] });
2852
3340
 
2853
3341
  // src/components/Tabs/Tabs.tsx
2854
- import { jsx as jsx35 } from "react/jsx-runtime";
3342
+ import { jsx as jsx39 } from "react/jsx-runtime";
2855
3343
  var TabsStyleContext = /* @__PURE__ */ createContext4({ variant: "line", size: "md" });
2856
- var Tabs = /* @__PURE__ */ forwardRef31(function Tabs2({ variant = "line", size = "md", className, ...props }, ref) {
3344
+ var Tabs = /* @__PURE__ */ forwardRef35(function Tabs2({ variant = "line", size = "md", className, ...props }, ref) {
2857
3345
  const controlled = "value" in props ? { value: props.value ?? "" } : {};
2858
- return /* @__PURE__ */ jsx35(TabsStyleContext.Provider, { value: { variant, size }, children: /* @__PURE__ */ jsx35(RadixTabs.Root, { ref, className: cx(root10, className), ...props, ...controlled }) });
3346
+ return /* @__PURE__ */ jsx39(TabsStyleContext.Provider, { value: { variant, size }, children: /* @__PURE__ */ jsx39(RadixTabs.Root, { ref, className: cx(root13, className), ...props, ...controlled }) });
2859
3347
  });
2860
- var TabsList = /* @__PURE__ */ forwardRef31(function TabsList2({ className, ...rest }, ref) {
3348
+ var TabsList = /* @__PURE__ */ forwardRef35(function TabsList2({ className, ...rest }, ref) {
2861
3349
  const { variant } = useContext4(TabsStyleContext);
2862
- return /* @__PURE__ */ jsx35(RadixTabs.List, { ref, className: cx(list4({ variant }), className), ...rest });
3350
+ return /* @__PURE__ */ jsx39(RadixTabs.List, { ref, className: cx(list6({ variant }), className), ...rest });
2863
3351
  });
2864
- var TabsTrigger = /* @__PURE__ */ forwardRef31(function TabsTrigger2({ className, ...rest }, ref) {
3352
+ var TabsTrigger = /* @__PURE__ */ forwardRef35(function TabsTrigger2({ className, ...rest }, ref) {
2865
3353
  const { variant, size } = useContext4(TabsStyleContext);
2866
- return /* @__PURE__ */ jsx35(RadixTabs.Trigger, { ref, className: cx(trigger3({ variant, size }), className), ...rest });
3354
+ return /* @__PURE__ */ jsx39(RadixTabs.Trigger, { ref, className: cx(trigger3({ variant, size }), className), ...rest });
2867
3355
  });
2868
- var TabsContent = /* @__PURE__ */ forwardRef31(function TabsContent2({ className, ...rest }, ref) {
2869
- return /* @__PURE__ */ jsx35(RadixTabs.Content, { ref, className: cx(content10, className), ...rest });
3356
+ var TabsContent = /* @__PURE__ */ forwardRef35(function TabsContent2({ className, ...rest }, ref) {
3357
+ return /* @__PURE__ */ jsx39(RadixTabs.Content, { ref, className: cx(content10, className), ...rest });
2870
3358
  });
2871
3359
 
2872
3360
  // src/components/Textarea/Textarea.tsx
2873
3361
  import {
2874
- forwardRef as forwardRef32,
2875
- useCallback,
2876
- useId as useId14,
2877
- useRef as useRef13,
2878
- useState as useState12
3362
+ forwardRef as forwardRef36,
3363
+ useCallback as useCallback2,
3364
+ useId as useId17,
3365
+ useRef as useRef15,
3366
+ useState as useState15
2879
3367
  } from "react";
2880
3368
 
2881
3369
  // src/components/Textarea/Textarea.css.ts
2882
- import { createRuntimeFn as _7a46819 } from "@vanilla-extract/recipes/createRuntimeFn";
3370
+ import { createRuntimeFn as _7a46820 } from "@vanilla-extract/recipes/createRuntimeFn";
2883
3371
  var count = "_1koawa9";
2884
3372
  var countOver = "_1koawaa";
2885
3373
  var defaultWidth = "_1koawa7";
2886
3374
  var footer4 = "_1koawa8";
2887
- var textarea = /* @__PURE__ */ _7a46819({ defaultClassName: "_1koawa0", variantClassNames: { size: { sm: "_1koawa1", md: "_1koawa2", lg: "_1koawa3" }, resize: { none: "_1koawa4", vertical: "_1koawa5", both: "_1koawa6" } }, defaultVariants: { size: "md", resize: "vertical" }, compoundVariants: [] });
3375
+ 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: [] });
2888
3376
 
2889
3377
  // src/components/Textarea/Textarea.tsx
2890
- import { jsx as jsx36, jsxs as jsxs29 } from "react/jsx-runtime";
2891
- var Textarea = /* @__PURE__ */ forwardRef32(function Textarea2({
2892
- label: label5,
3378
+ import { jsx as jsx40, jsxs as jsxs32 } from "react/jsx-runtime";
3379
+ var Textarea = /* @__PURE__ */ forwardRef36(function Textarea2({
3380
+ label: label6,
2893
3381
  helperText: helperText3,
2894
3382
  error,
2895
3383
  size,
@@ -2909,13 +3397,13 @@ var Textarea = /* @__PURE__ */ forwardRef32(function Textarea2({
2909
3397
  "aria-describedby": ariaDescribedBy,
2910
3398
  ...rest
2911
3399
  }, ref) {
2912
- const generatedId = useId14();
3400
+ const generatedId = useId17();
2913
3401
  const textareaId = id ?? generatedId;
2914
3402
  const helperId = helperText3 ? `${textareaId}-helper` : void 0;
2915
- const innerRef = useRef13(null);
2916
- const [uncontrolledLength, setUncontrolledLength] = useState12(() => String(defaultValue ?? "").length);
3403
+ const innerRef = useRef15(null);
3404
+ const [uncontrolledLength, setUncontrolledLength] = useState15(() => String(defaultValue ?? "").length);
2917
3405
  const length = value3 !== void 0 ? String(value3).length : uncontrolledLength;
2918
- const fitHeight = useCallback(() => {
3406
+ const fitHeight = useCallback2(() => {
2919
3407
  const el = innerRef.current;
2920
3408
  if (!autoResize || !el) return;
2921
3409
  el.style.height = "auto";
@@ -2928,12 +3416,12 @@ var Textarea = /* @__PURE__ */ forwardRef32(function Textarea2({
2928
3416
  fitHeight();
2929
3417
  onChange?.(event);
2930
3418
  };
2931
- return /* @__PURE__ */ jsxs29("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
2932
- label5 && /* @__PURE__ */ jsxs29("label", { htmlFor: textareaId, className: label, children: [
2933
- label5,
2934
- required && /* @__PURE__ */ jsx36("span", { className: requiredMark, "aria-hidden": true, children: "*" })
3419
+ return /* @__PURE__ */ jsxs32("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
3420
+ label6 && /* @__PURE__ */ jsxs32("label", { htmlFor: textareaId, className: label, children: [
3421
+ label6,
3422
+ required && /* @__PURE__ */ jsx40("span", { className: requiredMark, "aria-hidden": true, children: "*" })
2935
3423
  ] }),
2936
- /* @__PURE__ */ jsx36(
3424
+ /* @__PURE__ */ jsx40(
2937
3425
  "textarea",
2938
3426
  {
2939
3427
  ref: mergeRefs(innerRef, ref),
@@ -2955,51 +3443,51 @@ var Textarea = /* @__PURE__ */ forwardRef32(function Textarea2({
2955
3443
  ...rest
2956
3444
  }
2957
3445
  ),
2958
- (helperText3 || showCount) && /* @__PURE__ */ jsxs29("div", { className: footer4, children: [
2959
- helperText3 && /* @__PURE__ */ jsx36("p", { id: helperId, className: helperText({ error }), children: helperText3 }),
2960
- showCount && /* @__PURE__ */ jsx36("span", { className: cx(count, maxLength !== void 0 && length >= maxLength && countOver), children: maxLength !== void 0 ? `${length}/${maxLength}` : length })
3446
+ (helperText3 || showCount) && /* @__PURE__ */ jsxs32("div", { className: footer4, children: [
3447
+ helperText3 && /* @__PURE__ */ jsx40("p", { id: helperId, className: helperText({ error }), children: helperText3 }),
3448
+ showCount && /* @__PURE__ */ jsx40("span", { className: cx(count, maxLength !== void 0 && length >= maxLength && countOver), children: maxLength !== void 0 ? `${length}/${maxLength}` : length })
2961
3449
  ] })
2962
3450
  ] });
2963
3451
  });
2964
3452
 
2965
3453
  // src/components/Toast/Toast.tsx
2966
3454
  import * as RadixToast from "@radix-ui/react-toast";
2967
- import { createContext as createContext5, useCallback as useCallback2, useContext as useContext5, useMemo as useMemo4, useRef as useRef14, useState as useState13 } from "react";
2968
- import { XIcon as XIcon6 } from "@bestow-ui/icons";
3455
+ import { createContext as createContext5, useCallback as useCallback3, useContext as useContext5, useMemo as useMemo4, useRef as useRef16, useState as useState16 } from "react";
3456
+ import { XIcon as XIcon7 } from "@bestow-ui/icons";
2969
3457
 
2970
3458
  // src/components/Toast/Toast.css.ts
2971
- import { createRuntimeFn as _7a46820 } from "@vanilla-extract/recipes/createRuntimeFn";
3459
+ import { createRuntimeFn as _7a46821 } from "@vanilla-extract/recipes/createRuntimeFn";
2972
3460
  var action2 = "_1g11zvx9";
2973
3461
  var close = "_1g11zvxa";
2974
- var description5 = "_1g11zvx8";
3462
+ var description6 = "_1g11zvx8";
2975
3463
  var title5 = "_1g11zvx7";
2976
- var toast = /* @__PURE__ */ _7a46820({ defaultClassName: "_1g11zvx1", variantClassNames: { color: { primary: "_1g11zvx2", neutral: "_1g11zvx3", success: "_1g11zvx4", warning: "_1g11zvx5", danger: "_1g11zvx6" } }, defaultVariants: { color: "neutral" }, compoundVariants: [] });
3464
+ var toast = /* @__PURE__ */ _7a46821({ defaultClassName: "_1g11zvx1", variantClassNames: { color: { primary: "_1g11zvx2", neutral: "_1g11zvx3", success: "_1g11zvx4", warning: "_1g11zvx5", danger: "_1g11zvx6" } }, defaultVariants: { color: "neutral" }, compoundVariants: [] });
2977
3465
  var viewport2 = "_1g11zvx0";
2978
3466
 
2979
3467
  // src/components/Toast/Toast.tsx
2980
- import { jsx as jsx37, jsxs as jsxs30 } from "react/jsx-runtime";
3468
+ import { jsx as jsx41, jsxs as jsxs33 } from "react/jsx-runtime";
2981
3469
  var REMOVE_DELAY = 500;
2982
3470
  var ToastContext = /* @__PURE__ */ createContext5(null);
2983
3471
  function ToastProvider({ children, duration = 5e3, label: labelProp }) {
2984
3472
  const m = useMessages();
2985
- const label5 = labelProp ?? m.notifications ?? "\uC54C\uB9BC";
2986
- const [toasts, setToasts] = useState13([]);
2987
- const nextId = useRef14(0);
3473
+ const label6 = labelProp ?? m.notifications ?? "\uC54C\uB9BC";
3474
+ const [toasts, setToasts] = useState16([]);
3475
+ const nextId = useRef16(0);
2988
3476
  const portal2 = usePortalProps();
2989
- const toast2 = useCallback2((options) => {
3477
+ const toast2 = useCallback3((options) => {
2990
3478
  const id = nextId.current++;
2991
3479
  setToasts((prev) => [...prev, { ...options, id, open: true }]);
2992
3480
  return id;
2993
3481
  }, []);
2994
- const dismiss = useCallback2((id) => {
3482
+ const dismiss = useCallback3((id) => {
2995
3483
  const isTarget = (t) => id === void 0 || t.id === id;
2996
3484
  setToasts((prev) => prev.map((t) => isTarget(t) ? { ...t, open: false } : t));
2997
3485
  setTimeout(() => setToasts((prev) => prev.filter((t) => t.open || !isTarget(t))), REMOVE_DELAY);
2998
3486
  }, []);
2999
3487
  const value3 = useMemo4(() => ({ toast: toast2, dismiss }), [toast2, dismiss]);
3000
- return /* @__PURE__ */ jsx37(ToastContext.Provider, { value: value3, children: /* @__PURE__ */ jsxs30(RadixToast.Provider, { duration, label: label5, swipeDirection: "right", children: [
3488
+ return /* @__PURE__ */ jsx41(ToastContext.Provider, { value: value3, children: /* @__PURE__ */ jsxs33(RadixToast.Provider, { duration, label: label6, swipeDirection: "right", children: [
3001
3489
  children,
3002
- toasts.map(({ id, open, title: title6, description: description6, color, duration: itemDuration, action: action3 }) => /* @__PURE__ */ jsxs30(
3490
+ toasts.map(({ id, open, title: title6, description: description7, color, duration: itemDuration, action: action3 }) => /* @__PURE__ */ jsxs33(
3003
3491
  RadixToast.Root,
3004
3492
  {
3005
3493
  open,
@@ -3009,15 +3497,15 @@ function ToastProvider({ children, duration = 5e3, label: labelProp }) {
3009
3497
  },
3010
3498
  className: toast({ color }),
3011
3499
  children: [
3012
- /* @__PURE__ */ jsx37(RadixToast.Title, { className: title5, children: title6 }),
3013
- description6 && /* @__PURE__ */ jsx37(RadixToast.Description, { className: description5, children: description6 }),
3014
- action3 && /* @__PURE__ */ jsx37(RadixToast.Action, { asChild: true, altText: action3.altText ?? action3.label, className: action2, children: /* @__PURE__ */ jsx37(Button, { size: "sm", variant: "soft", color: "neutral", onClick: action3.onClick, children: action3.label }) }),
3015
- /* @__PURE__ */ jsx37(RadixToast.Close, { className: close, "aria-label": m.close ?? "\uB2EB\uAE30", children: /* @__PURE__ */ jsx37(XIcon6, { size: 16 }) })
3500
+ /* @__PURE__ */ jsx41(RadixToast.Title, { className: title5, children: title6 }),
3501
+ description7 && /* @__PURE__ */ jsx41(RadixToast.Description, { className: description6, children: description7 }),
3502
+ 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 }) }),
3503
+ /* @__PURE__ */ jsx41(RadixToast.Close, { className: close, "aria-label": m.close ?? "\uB2EB\uAE30", children: /* @__PURE__ */ jsx41(XIcon7, { size: 16 }) })
3016
3504
  ]
3017
3505
  },
3018
3506
  id
3019
3507
  )),
3020
- /* @__PURE__ */ jsx37(RadixToast.Viewport, { className: cx(portal2.className, viewport2), style: portal2.style })
3508
+ /* @__PURE__ */ jsx41(RadixToast.Viewport, { className: cx(portal2.className, viewport2), style: portal2.style })
3021
3509
  ] }) });
3022
3510
  }
3023
3511
  function useToast() {
@@ -3034,7 +3522,7 @@ var arrow2 = "z7rufs1";
3034
3522
  var content11 = "z7rufs0";
3035
3523
 
3036
3524
  // src/components/Tooltip/Tooltip.tsx
3037
- import { jsx as jsx38, jsxs as jsxs31 } from "react/jsx-runtime";
3525
+ import { jsx as jsx42, jsxs as jsxs34 } from "react/jsx-runtime";
3038
3526
  function Tooltip({
3039
3527
  content: content12,
3040
3528
  children,
@@ -3049,9 +3537,9 @@ function Tooltip({
3049
3537
  }) {
3050
3538
  const portal2 = usePortalProps();
3051
3539
  if (disabled || content12 == null || content12 === "") return children;
3052
- return /* @__PURE__ */ jsx38(RadixTooltip.Provider, { delayDuration: delay, children: /* @__PURE__ */ jsxs31(RadixTooltip.Root, { open, defaultOpen, onOpenChange, children: [
3053
- /* @__PURE__ */ jsx38(RadixTooltip.Trigger, { asChild: true, children }),
3054
- /* @__PURE__ */ jsx38(RadixTooltip.Portal, { children: /* @__PURE__ */ jsxs31(
3540
+ return /* @__PURE__ */ jsx42(RadixTooltip.Provider, { delayDuration: delay, children: /* @__PURE__ */ jsxs34(RadixTooltip.Root, { open, defaultOpen, onOpenChange, children: [
3541
+ /* @__PURE__ */ jsx42(RadixTooltip.Trigger, { asChild: true, children }),
3542
+ /* @__PURE__ */ jsx42(RadixTooltip.Portal, { children: /* @__PURE__ */ jsxs34(
3055
3543
  RadixTooltip.Content,
3056
3544
  {
3057
3545
  side,
@@ -3062,7 +3550,7 @@ function Tooltip({
3062
3550
  style: portal2.style,
3063
3551
  children: [
3064
3552
  content12,
3065
- /* @__PURE__ */ jsx38(RadixTooltip.Arrow, { className: arrow2, width: 10, height: 5 })
3553
+ /* @__PURE__ */ jsx42(RadixTooltip.Arrow, { className: arrow2, width: 10, height: 5 })
3066
3554
  ]
3067
3555
  }
3068
3556
  ) })
@@ -3070,7 +3558,7 @@ function Tooltip({
3070
3558
  }
3071
3559
 
3072
3560
  // src/components/VerificationCodeInput/VerificationCodeInput.tsx
3073
- import { forwardRef as forwardRef33, useEffect as useEffect8, useId as useId15, useRef as useRef15, useState as useState14 } from "react";
3561
+ import { forwardRef as forwardRef37, useEffect as useEffect10, useId as useId18, useRef as useRef17, useState as useState17 } from "react";
3074
3562
 
3075
3563
  // src/components/VerificationCodeInput/VerificationCodeInput.css.ts
3076
3564
  var input5 = "ea01812";
@@ -3080,9 +3568,9 @@ var slots = "ea01811";
3080
3568
  var timer = "ea01814";
3081
3569
 
3082
3570
  // src/components/VerificationCodeInput/VerificationCodeInput.tsx
3083
- import { jsx as jsx39, jsxs as jsxs32 } from "react/jsx-runtime";
3571
+ import { jsx as jsx43, jsxs as jsxs35 } from "react/jsx-runtime";
3084
3572
  var formatTime = (seconds) => `${String(Math.floor(seconds / 60)).padStart(2, "0")}:${String(seconds % 60).padStart(2, "0")}`;
3085
- var VerificationCodeInput = /* @__PURE__ */ forwardRef33(
3573
+ var VerificationCodeInput = /* @__PURE__ */ forwardRef37(
3086
3574
  function VerificationCodeInput2(props, ref) {
3087
3575
  const {
3088
3576
  length = 6,
@@ -3106,26 +3594,26 @@ var VerificationCodeInput = /* @__PURE__ */ forwardRef33(
3106
3594
  className
3107
3595
  } = props;
3108
3596
  const m = useMessages();
3109
- const label5 = labelProp ?? m.verificationCode ?? "\uC778\uC99D\uBC88\uD638";
3597
+ const label6 = labelProp ?? m.verificationCode ?? "\uC778\uC99D\uBC88\uD638";
3110
3598
  const resendText = resendTextProp ?? m.resend ?? "\uC7AC\uC804\uC1A1";
3111
3599
  const expiredText = expiredTextProp ?? m.verificationExpired ?? "\uC778\uC99D \uC2DC\uAC04\uC774 \uC9C0\uB0AC\uC5B4\uC694. \uC7AC\uC804\uC1A1\uD574 \uC8FC\uC138\uC694.";
3112
- const generatedId = useId15();
3600
+ const generatedId = useId18();
3113
3601
  const inputId = id ?? generatedId;
3114
3602
  const helperId = `${inputId}-helper`;
3115
3603
  const statusId = `${inputId}-status`;
3116
- const inputRef = useRef15(null);
3604
+ const inputRef = useRef17(null);
3117
3605
  const isControlled = "value" in props;
3118
- const [innerValue, setInnerValue] = useState14(defaultValue ?? "");
3606
+ const [innerValue, setInnerValue] = useState17(defaultValue ?? "");
3119
3607
  const code = (isControlled ? value3 ?? "" : innerValue).slice(0, length);
3120
- const [focused, setFocused] = useState14(false);
3121
- const [endAt, setEndAt] = useState14(() => expiresIn ? Date.now() + expiresIn * 1e3 : null);
3122
- const [remaining, setRemaining] = useState14(expiresIn ?? 0);
3608
+ const [focused, setFocused] = useState17(false);
3609
+ const [endAt, setEndAt] = useState17(() => expiresIn ? Date.now() + expiresIn * 1e3 : null);
3610
+ const [remaining, setRemaining] = useState17(expiresIn ?? 0);
3123
3611
  const expired = expiresIn !== void 0 && remaining <= 0;
3124
- const onExpireRef = useRef15(onExpire);
3125
- useEffect8(() => {
3612
+ const onExpireRef = useRef17(onExpire);
3613
+ useEffect10(() => {
3126
3614
  onExpireRef.current = onExpire;
3127
3615
  });
3128
- useEffect8(() => {
3616
+ useEffect10(() => {
3129
3617
  if (endAt === null) return;
3130
3618
  const tick = () => {
3131
3619
  const left = Math.max(0, Math.ceil((endAt - Date.now()) / 1e3));
@@ -3158,19 +3646,19 @@ var VerificationCodeInput = /* @__PURE__ */ forwardRef33(
3158
3646
  }
3159
3647
  inputRef.current?.focus();
3160
3648
  };
3161
- const description6 = helperText3 ?? m.verificationCodeHint?.(length, type) ?? `${length}\uC790\uB9AC ${type === "numeric" ? "\uC22B\uC790" : "\uBB38\uC790"}\uB97C \uC785\uB825\uD558\uC138\uC694.`;
3649
+ const description7 = helperText3 ?? m.verificationCodeHint?.(length, type) ?? `${length}\uC790\uB9AC ${type === "numeric" ? "\uC22B\uC790" : "\uBB38\uC790"}\uB97C \uC785\uB825\uD558\uC138\uC694.`;
3162
3650
  const activeIndex = Math.min(code.length, length - 1);
3163
- return /* @__PURE__ */ jsxs32(
3651
+ return /* @__PURE__ */ jsxs35(
3164
3652
  "div",
3165
3653
  {
3166
3654
  className: cx(field, className),
3167
3655
  "data-invalid": error || void 0,
3168
3656
  "data-disabled": disabled || void 0,
3169
3657
  children: [
3170
- /* @__PURE__ */ jsx39("label", { htmlFor: inputId, className: label, children: label5 }),
3171
- /* @__PURE__ */ jsxs32("div", { className: row4, children: [
3172
- /* @__PURE__ */ jsxs32("div", { className: slots, children: [
3173
- /* @__PURE__ */ jsx39(
3658
+ /* @__PURE__ */ jsx43("label", { htmlFor: inputId, className: label, children: label6 }),
3659
+ /* @__PURE__ */ jsxs35("div", { className: row4, children: [
3660
+ /* @__PURE__ */ jsxs35("div", { className: slots, children: [
3661
+ /* @__PURE__ */ jsx43(
3174
3662
  "input",
3175
3663
  {
3176
3664
  ref: mergeRefs(ref, inputRef),
@@ -3190,7 +3678,7 @@ var VerificationCodeInput = /* @__PURE__ */ forwardRef33(
3190
3678
  className: input5
3191
3679
  }
3192
3680
  ),
3193
- Array.from({ length }, (_, index) => /* @__PURE__ */ jsx39(
3681
+ Array.from({ length }, (_, index) => /* @__PURE__ */ jsx43(
3194
3682
  "div",
3195
3683
  {
3196
3684
  className: slot,
@@ -3201,12 +3689,12 @@ var VerificationCodeInput = /* @__PURE__ */ forwardRef33(
3201
3689
  index
3202
3690
  ))
3203
3691
  ] }),
3204
- expiresIn !== void 0 && /* @__PURE__ */ jsx39("span", { role: "timer", className: timer, children: formatTime(remaining) }),
3205
- onResend && /* @__PURE__ */ jsx39(Button, { size: "sm", variant: "outline", color: "neutral", onClick: resend, disabled, children: resendText })
3692
+ expiresIn !== void 0 && /* @__PURE__ */ jsx43("span", { role: "timer", className: timer, children: formatTime(remaining) }),
3693
+ onResend && /* @__PURE__ */ jsx43(Button, { size: "sm", variant: "outline", color: "neutral", onClick: resend, disabled, children: resendText })
3206
3694
  ] }),
3207
- /* @__PURE__ */ jsx39("p", { id: helperId, className: helperText({ error }), children: description6 }),
3208
- /* @__PURE__ */ jsx39("p", { id: statusId, role: "status", className: helperText({ error: true }), children: expired ? expiredText : "" }),
3209
- name && /* @__PURE__ */ jsx39("input", { type: "hidden", name, value: code })
3695
+ /* @__PURE__ */ jsx43("p", { id: helperId, className: helperText({ error }), children: description7 }),
3696
+ /* @__PURE__ */ jsx43("p", { id: statusId, role: "status", className: helperText({ error: true }), children: expired ? expiredText : "" }),
3697
+ name && /* @__PURE__ */ jsx43("input", { type: "hidden", name, value: code })
3210
3698
  ]
3211
3699
  }
3212
3700
  );
@@ -3227,6 +3715,7 @@ export {
3227
3715
  Checkbox,
3228
3716
  Combobox,
3229
3717
  DatePicker,
3718
+ DateRangePicker,
3230
3719
  Drawer,
3231
3720
  DrawerClose,
3232
3721
  DropdownMenu,
@@ -3242,6 +3731,8 @@ export {
3242
3731
  DropdownMenuSubContent,
3243
3732
  DropdownMenuSubTrigger,
3244
3733
  DropdownMenuTrigger,
3734
+ ErrorSummary,
3735
+ FileUpload,
3245
3736
  IconButton,
3246
3737
  Input,
3247
3738
  Link,
@@ -3259,14 +3750,17 @@ export {
3259
3750
  SkipLink,
3260
3751
  Slider,
3261
3752
  Spinner,
3753
+ Stepper,
3262
3754
  Switch,
3263
3755
  Table,
3264
3756
  TableBody,
3265
3757
  TableCell,
3758
+ TableEmpty,
3266
3759
  TableFooter,
3267
3760
  TableHead,
3268
3761
  TableHeader,
3269
3762
  TableRow,
3763
+ TableSkeleton,
3270
3764
  Tabs,
3271
3765
  TabsContent,
3272
3766
  TabsList,
@@ -3279,6 +3773,7 @@ export {
3279
3773
  VerificationCodeInput,
3280
3774
  useMessages,
3281
3775
  usePortalProps,
3776
+ useTableSelection,
3282
3777
  useTheme,
3283
3778
  useToast
3284
3779
  };