@bestow-ui/react 0.10.0 → 0.11.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/index.cjs CHANGED
@@ -6,9 +6,9 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
6
  var __getOwnPropNames = Object.getOwnPropertyNames;
7
7
  var __getProtoOf = Object.getPrototypeOf;
8
8
  var __hasOwnProp = Object.prototype.hasOwnProperty;
9
- var __export = (target, all) => {
10
- for (var name in all)
11
- __defProp(target, name, { get: all[name], enumerable: true });
9
+ var __export = (target, all2) => {
10
+ for (var name in all2)
11
+ __defProp(target, name, { get: all2[name], enumerable: true });
12
12
  };
13
13
  var __copyProps = (to, from, except, desc) => {
14
14
  if (from && typeof from === "object" || typeof from === "function") {
@@ -33,10 +33,14 @@ var index_exports = {};
33
33
  __export(index_exports, {
34
34
  Accordion: () => Accordion,
35
35
  AccordionItem: () => AccordionItem,
36
+ AddressInput: () => AddressInput,
37
+ AgreementGroup: () => AgreementGroup,
36
38
  Alert: () => Alert,
39
+ AmountInput: () => AmountInput,
37
40
  Avatar: () => Avatar,
38
41
  Badge: () => Badge,
39
42
  Breadcrumb: () => Breadcrumb,
43
+ BusinessNumberInput: () => BusinessNumberInput,
40
44
  Button: () => Button,
41
45
  Card: () => Card,
42
46
  CardBody: () => CardBody,
@@ -60,6 +64,7 @@ __export(index_exports, {
60
64
  Modal: () => Modal,
61
65
  ModalClose: () => ModalClose,
62
66
  Pagination: () => Pagination,
67
+ PhoneNumberInput: () => PhoneNumberInput,
63
68
  Popover: () => Popover2,
64
69
  PopoverClose: () => PopoverClose,
65
70
  Progress: () => Progress,
@@ -87,9 +92,17 @@ __export(index_exports, {
87
92
  ToastProvider: () => ToastProvider,
88
93
  Tooltip: () => Tooltip,
89
94
  Typography: () => Typography,
95
+ VerificationCodeInput: () => VerificationCodeInput,
96
+ composeExtraAddress: () => composeExtraAddress,
90
97
  contrastRatio: () => contrastRatio,
91
98
  createIntentColors: () => createIntentColors,
92
99
  createTheme: () => createTheme,
100
+ formatBusinessNumber: () => formatBusinessNumber,
101
+ formatKoreanAmount: () => formatKoreanAmount,
102
+ formatPhoneNumber: () => formatPhoneNumber,
103
+ hasAllRequiredAgreements: () => hasAllRequiredAgreements,
104
+ isValidBusinessNumber: () => isValidBusinessNumber,
105
+ kakaoPostcodeProvider: () => kakaoPostcodeProvider,
93
106
  themeClass: () => themeClass,
94
107
  usePortalClassName: () => usePortalClassName,
95
108
  usePortalProps: () => usePortalProps,
@@ -220,9 +233,12 @@ function createIntentColors(intent, color) {
220
233
  subtleHover: rgba(darkSolid, 0.26),
221
234
  text: findReadable(darkBase, Math.max(darkBase.l, 0.75), 0.02, [darkBg, darkSubtleOnBg, darkSubtleHoverOnBg])
222
235
  };
236
+ const focusOn = (candidate, fallback2, bg) => contrastRatio(candidate, bg) >= 3 ? candidate : fallback2;
223
237
  const focus = intent === "primary" ? {
224
- light: { border: { focus: light.solid } },
225
- dark: { border: { focus: withL(darkBase, Math.min(1, darkBase.l + 0.06)) } }
238
+ light: { border: { focus: focusOn(light.solid, light.text, import_tokens.lightColors.bg.default) } },
239
+ dark: {
240
+ border: { focus: focusOn(withL(darkBase, Math.min(1, darkBase.l + 0.06)), dark.text, darkBg) }
241
+ }
226
242
  } : void 0;
227
243
  return {
228
244
  light: { color: { [intent]: light, ...focus?.light } },
@@ -245,9 +261,9 @@ function deepMerge(target, source) {
245
261
  function createTheme(...inputs) {
246
262
  let light = {};
247
263
  let dark = {};
248
- for (const input3 of inputs) {
249
- light = deepMerge(deepMerge(light, input3.common), input3.light);
250
- dark = deepMerge(deepMerge(dark, input3.common), input3.dark);
264
+ for (const input5 of inputs) {
265
+ light = deepMerge(deepMerge(light, input5.common), input5.light);
266
+ dark = deepMerge(deepMerge(dark, input5.common), input5.dark);
251
267
  }
252
268
  return Object.freeze({ light, dark });
253
269
  }
@@ -350,111 +366,914 @@ var AccordionItem = /* @__PURE__ */ (0, import_react2.forwardRef)(function Accor
350
366
  ] });
351
367
  });
352
368
 
353
- // src/components/Alert/Alert.tsx
354
- var import_react3 = require("react");
369
+ // src/components/AddressInput/AddressInput.tsx
370
+ var import_react8 = require("react");
371
+
372
+ // src/components/Button/Button.tsx
373
+ var import_react4 = require("react");
374
+
375
+ // src/components/Spinner/Spinner.tsx
355
376
  var import_icons2 = require("@bestow-ui/icons");
377
+ var import_react3 = require("react");
356
378
 
357
- // src/components/Alert/Alert.css.ts
379
+ // src/styles/visuallyHidden.css.ts
380
+ var visuallyHidden = "_1kdtbw10";
381
+
382
+ // src/components/Spinner/Spinner.css.ts
358
383
  var import_createRuntimeFn = require("@vanilla-extract/recipes/createRuntimeFn");
384
+ var spinner = /* @__PURE__ */ (0, import_createRuntimeFn.createRuntimeFn)({ defaultClassName: "_4b5tg40", variantClassNames: { color: { current: "_4b5tg41", primary: "_4b5tg42", neutral: "_4b5tg43", danger: "_4b5tg44" }, size: { sm: "_4b5tg45", md: "_4b5tg46", lg: "_4b5tg47" } }, defaultVariants: { color: "current", size: "md" }, compoundVariants: [] });
385
+
386
+ // src/components/Spinner/Spinner.tsx
387
+ var import_jsx_runtime3 = require("react/jsx-runtime");
388
+ var Spinner = /* @__PURE__ */ (0, import_react3.forwardRef)(function Spinner2({ size, color, label: label6 = "\uB85C\uB529 \uC911", className, ...rest }, ref) {
389
+ const a11y = label6 ? { role: "status" } : { "aria-hidden": true };
390
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("span", { ref, className: cx(spinner({ size, color }), className), ...a11y, ...rest, children: [
391
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_icons2.LoaderIcon, { size: "100%" }),
392
+ label6 && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: visuallyHidden, children: label6 })
393
+ ] });
394
+ });
395
+
396
+ // src/components/Button/Button.css.ts
397
+ var import_createRuntimeFn2 = require("@vanilla-extract/recipes/createRuntimeFn");
398
+ var button = /* @__PURE__ */ (0, import_createRuntimeFn2.createRuntimeFn)({ defaultClassName: "xcekda6", variantClassNames: { variant: { solid: "xcekda7", soft: "xcekda8", outline: "xcekda9", ghost: "xcekdaa" }, color: { primary: "xcekdab", neutral: "xcekdac", danger: "xcekdad" }, size: { sm: "xcekdae", md: "xcekdaf", lg: "xcekdag" }, fullWidth: { true: "xcekdah" } }, defaultVariants: { variant: "solid", color: "primary", size: "md" }, compoundVariants: [] });
399
+ var icon = "xcekdai";
400
+
401
+ // src/components/Button/Button.tsx
402
+ var import_jsx_runtime4 = require("react/jsx-runtime");
403
+ var Button = /* @__PURE__ */ (0, import_react4.forwardRef)(function Button2({
404
+ variant,
405
+ color,
406
+ size,
407
+ fullWidth,
408
+ startIcon,
409
+ endIcon,
410
+ loading: loading2,
411
+ className,
412
+ type = "button",
413
+ onClick,
414
+ children,
415
+ ...rest
416
+ }, ref) {
417
+ const handleClick = (event) => {
418
+ if (loading2) {
419
+ event.preventDefault();
420
+ return;
421
+ }
422
+ onClick?.(event);
423
+ };
424
+ const leading = loading2 ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Spinner, { size: "sm", label: "" }) : startIcon;
425
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
426
+ "button",
427
+ {
428
+ ref,
429
+ type,
430
+ className: cx(button({ variant, color, size, fullWidth }), className),
431
+ "aria-busy": loading2 || void 0,
432
+ "aria-disabled": loading2 || void 0,
433
+ onClick: handleClick,
434
+ ...rest,
435
+ children: [
436
+ leading && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: icon, children: leading }),
437
+ children,
438
+ endIcon && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: icon, children: endIcon })
439
+ ]
440
+ }
441
+ );
442
+ });
443
+
444
+ // src/components/Input/Input.css.ts
445
+ var import_createRuntimeFn3 = require("@vanilla-extract/recipes/createRuntimeFn");
446
+ var adornment = "_19p5zvh6";
447
+ var field = "_19p5zvh7";
448
+ var fieldFullWidth = "_19p5zvh8";
449
+ var helperText = /* @__PURE__ */ (0, import_createRuntimeFn3.createRuntimeFn)({ defaultClassName: "_19p5zvhb", variantClassNames: { error: { true: "_19p5zvhc" } }, defaultVariants: {}, compoundVariants: [] });
450
+ var input = "_19p5zvh5";
451
+ var label = "_19p5zvh9";
452
+ var requiredMark = "_19p5zvha";
453
+ var root3 = /* @__PURE__ */ (0, import_createRuntimeFn3.createRuntimeFn)({ defaultClassName: "_19p5zvh0", variantClassNames: { size: { sm: "_19p5zvh1", md: "_19p5zvh2", lg: "_19p5zvh3" }, fullWidth: { true: "_19p5zvh4" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
454
+
455
+ // src/components/Input/Input.tsx
456
+ var import_react5 = require("react");
457
+ var import_jsx_runtime5 = require("react/jsx-runtime");
458
+ var Input = /* @__PURE__ */ (0, import_react5.forwardRef)(function Input2({ size, invalid, fullWidth, startAdornment, endAdornment, rootClassName, className, disabled, ...rest }, ref) {
459
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
460
+ "div",
461
+ {
462
+ className: cx(root3({ size, fullWidth }), rootClassName),
463
+ "data-invalid": invalid || void 0,
464
+ "data-disabled": disabled || void 0,
465
+ children: [
466
+ startAdornment && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: adornment, children: startAdornment }),
467
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
468
+ "input",
469
+ {
470
+ ref,
471
+ className: cx(input, className),
472
+ disabled,
473
+ "aria-invalid": invalid || void 0,
474
+ ...rest
475
+ }
476
+ ),
477
+ endAdornment && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: adornment, children: endAdornment })
478
+ ]
479
+ }
480
+ );
481
+ });
482
+
483
+ // src/components/Input/TextField.tsx
484
+ var import_react6 = require("react");
485
+ var import_jsx_runtime6 = require("react/jsx-runtime");
486
+ var TextField = /* @__PURE__ */ (0, import_react6.forwardRef)(function TextField2({ label: label6, helperText: helperText3, error, required, fullWidth, id, "aria-describedby": ariaDescribedBy, ...rest }, ref) {
487
+ const generatedId = (0, import_react6.useId)();
488
+ const inputId = id ?? generatedId;
489
+ const helperId = helperText3 ? `${inputId}-helper` : void 0;
490
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
491
+ label6 && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("label", { htmlFor: inputId, className: label, children: [
492
+ label6,
493
+ required && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: requiredMark, "aria-hidden": true, children: "*" })
494
+ ] }),
495
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
496
+ Input,
497
+ {
498
+ ref,
499
+ id: inputId,
500
+ invalid: error,
501
+ required,
502
+ fullWidth,
503
+ "aria-describedby": cx(helperId, ariaDescribedBy) || void 0,
504
+ ...rest
505
+ }
506
+ ),
507
+ helperText3 && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { id: helperId, className: helperText({ error }), children: helperText3 })
508
+ ] });
509
+ });
510
+
511
+ // src/components/Modal/Modal.tsx
512
+ var Dialog = __toESM(require("@radix-ui/react-dialog"), 1);
513
+ var import_icons3 = require("@bestow-ui/icons");
514
+
515
+ // src/utils/useReturnFocus.ts
516
+ var import_react7 = require("react");
517
+ function useReturnFocus(hasTrigger, onCloseAutoFocus) {
518
+ const returnTo = (0, import_react7.useRef)(null);
519
+ return {
520
+ onOpenAutoFocus: () => {
521
+ returnTo.current = document.activeElement instanceof HTMLElement ? document.activeElement : null;
522
+ },
523
+ onCloseAutoFocus: (event) => {
524
+ onCloseAutoFocus?.(event);
525
+ if (event.defaultPrevented || hasTrigger) return;
526
+ const target = returnTo.current;
527
+ if (target && target.isConnected && target !== document.body) {
528
+ event.preventDefault();
529
+ target.focus();
530
+ }
531
+ }
532
+ };
533
+ }
534
+
535
+ // src/components/Modal/Modal.css.ts
536
+ var import_createRuntimeFn4 = require("@vanilla-extract/recipes/createRuntimeFn");
537
+ var body = "_1pdsmv0a";
538
+ var closeButton = "_1pdsmv09";
539
+ var content2 = /* @__PURE__ */ (0, import_createRuntimeFn4.createRuntimeFn)({ defaultClassName: "_1pdsmv01", variantClassNames: { size: { sm: "_1pdsmv02", md: "_1pdsmv03", lg: "_1pdsmv04" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
540
+ var description = "_1pdsmv08";
541
+ var footer = "_1pdsmv0b";
542
+ var header2 = "_1pdsmv05";
543
+ var headings = "_1pdsmv06";
544
+ var overlay = "_1pdsmv00";
545
+ var title = "_1pdsmv07";
546
+
547
+ // src/components/Modal/Modal.tsx
548
+ var import_jsx_runtime7 = require("react/jsx-runtime");
549
+ function Modal({
550
+ open,
551
+ defaultOpen,
552
+ onOpenChange,
553
+ trigger: trigger4,
554
+ title: title6,
555
+ description: description6,
556
+ children,
557
+ footer: footer6,
558
+ size,
559
+ hideCloseButton = false,
560
+ closeOnOverlayClick = true,
561
+ className,
562
+ onCloseAutoFocus
563
+ }) {
564
+ const portal2 = usePortalProps();
565
+ const focus = useReturnFocus(Boolean(trigger4), onCloseAutoFocus);
566
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Dialog.Root, { open, defaultOpen, onOpenChange, children: [
567
+ trigger4 && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Dialog.Trigger, { asChild: true, children: trigger4 }),
568
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Dialog.Portal, { children: [
569
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Dialog.Overlay, { className: cx(portal2.className, overlay), style: portal2.style }),
570
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
571
+ Dialog.Content,
572
+ {
573
+ className: cx(portal2.className, content2({ size }), className),
574
+ style: portal2.style,
575
+ onPointerDownOutside: closeOnOverlayClick ? void 0 : (event) => event.preventDefault(),
576
+ onOpenAutoFocus: focus.onOpenAutoFocus,
577
+ onCloseAutoFocus: focus.onCloseAutoFocus,
578
+ ...description6 ? {} : { "aria-describedby": void 0 },
579
+ children: [
580
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: header2, children: [
581
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: headings, children: [
582
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Dialog.Title, { className: title, children: title6 }),
583
+ description6 && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Dialog.Description, { className: description, children: description6 })
584
+ ] }),
585
+ !hideCloseButton && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Dialog.Close, { className: closeButton, "aria-label": "\uB2EB\uAE30", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_icons3.XIcon, { size: 16 }) })
586
+ ] }),
587
+ children && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: body, children }),
588
+ footer6 && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: footer, children: footer6 })
589
+ ]
590
+ }
591
+ )
592
+ ] })
593
+ ] });
594
+ }
595
+ var ModalClose = Dialog.Close;
596
+
597
+ // src/components/AddressInput/addressProviders.ts
598
+ var KAKAO_POSTCODE_SRC = "https://t1.kakaocdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js";
599
+ var loading = null;
600
+ function loadKakaoPostcode() {
601
+ const w = window;
602
+ const existing = w.kakao?.Postcode ?? w.daum?.Postcode;
603
+ if (existing) return Promise.resolve(existing);
604
+ loading ?? (loading = new Promise((resolve, reject) => {
605
+ const script = document.createElement("script");
606
+ script.src = KAKAO_POSTCODE_SRC;
607
+ script.async = true;
608
+ script.onload = () => {
609
+ const ctor = w.kakao?.Postcode ?? w.daum?.Postcode;
610
+ if (ctor) resolve(ctor);
611
+ else reject(new Error("\uC6B0\uD3B8\uBC88\uD638 \uC11C\uBE44\uC2A4\uB97C \uCC3E\uC9C0 \uBABB\uD588\uC5B4\uC694"));
612
+ };
613
+ script.onerror = () => {
614
+ loading = null;
615
+ reject(new Error("\uC6B0\uD3B8\uBC88\uD638 \uC11C\uBE44\uC2A4\uB97C \uBD88\uB7EC\uC624\uC9C0 \uBABB\uD588\uC5B4\uC694"));
616
+ };
617
+ document.head.appendChild(script);
618
+ }));
619
+ return loading;
620
+ }
621
+ function composeExtraAddress(data) {
622
+ if (data.userSelectedType !== "R") return "";
623
+ const parts = [];
624
+ if (data.bname && /[동로가]$/.test(data.bname)) parts.push(data.bname);
625
+ if (data.buildingName && data.apartment === "Y") parts.push(data.buildingName);
626
+ return parts.length ? ` (${parts.join(", ")})` : "";
627
+ }
628
+ var kakaoPostcodeProvider = async (container2, onSelect) => {
629
+ const Postcode = await loadKakaoPostcode();
630
+ new Postcode({
631
+ width: "100%",
632
+ height: "100%",
633
+ oncomplete: (data) => {
634
+ const address = data.userSelectedType === "R" ? data.roadAddress : data.jibunAddress || data.autoJibunAddress || "";
635
+ onSelect({ zonecode: data.zonecode, address, extraAddress: composeExtraAddress(data) });
636
+ }
637
+ }).embed(container2);
638
+ };
639
+
640
+ // src/components/AddressInput/AddressInput.css.ts
641
+ var fieldset = "_16fi7uy0";
642
+ var legend = "_16fi7uy1";
643
+ var row = "_16fi7uy2";
644
+ var searchArea = "_16fi7uy4";
645
+ var searchStatus = "_16fi7uy5";
646
+ var zonecode = "_16fi7uy3";
647
+
648
+ // src/components/AddressInput/AddressInput.tsx
649
+ var import_jsx_runtime8 = require("react/jsx-runtime");
650
+ var EMPTY = { zonecode: "", address: "", extraAddress: "", detail: "" };
651
+ function SearchArea({
652
+ provider,
653
+ onSelect,
654
+ loadErrorText
655
+ }) {
656
+ const containerRef = (0, import_react8.useRef)(null);
657
+ const [status, setStatus] = (0, import_react8.useState)("loading");
658
+ const onSelectRef = (0, import_react8.useRef)(onSelect);
659
+ (0, import_react8.useEffect)(() => {
660
+ onSelectRef.current = onSelect;
661
+ });
662
+ (0, import_react8.useEffect)(() => {
663
+ const container2 = containerRef.current;
664
+ if (!container2) return;
665
+ let cleanup;
666
+ let cancelled = false;
667
+ Promise.resolve().then(() => provider(container2, (result) => onSelectRef.current(result))).then((fn) => {
668
+ if (cancelled) fn?.();
669
+ else {
670
+ cleanup = fn;
671
+ setStatus("ready");
672
+ }
673
+ }).catch(() => !cancelled && setStatus("error"));
674
+ return () => {
675
+ cancelled = true;
676
+ cleanup?.();
677
+ };
678
+ }, [provider]);
679
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: searchArea, children: [
680
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { ref: containerRef, style: { width: "100%", height: "100%" } }),
681
+ status !== "ready" && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: searchStatus, role: "status", children: status === "loading" ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Spinner, { label: "\uC8FC\uC18C \uAC80\uC0C9\uC744 \uBD88\uB7EC\uC624\uB294 \uC911" }) : loadErrorText })
682
+ ] });
683
+ }
684
+ var AddressInput = /* @__PURE__ */ (0, import_react8.forwardRef)(
685
+ function AddressInput2(props, ref) {
686
+ const {
687
+ value: value4,
688
+ defaultValue,
689
+ onValueChange,
690
+ label: label6 = "\uC8FC\uC18C",
691
+ required,
692
+ helperText: helperText3,
693
+ error,
694
+ disabled,
695
+ provider = kakaoPostcodeProvider,
696
+ searchLabel = "\uC8FC\uC18C \uAC80\uC0C9",
697
+ detailPlaceholder = "\uC0C1\uC138 \uC8FC\uC18C (\uB3D9\xB7\uD638\uC218 \uB4F1)",
698
+ loadErrorText = "\uC8FC\uC18C \uAC80\uC0C9\uC744 \uBD88\uB7EC\uC624\uC9C0 \uBABB\uD588\uC5B4\uC694. \uC7A0\uC2DC \uB4A4 \uB2E4\uC2DC \uC2DC\uB3C4\uD574 \uC8FC\uC138\uC694.",
699
+ name,
700
+ className
701
+ } = props;
702
+ const baseId = (0, import_react8.useId)();
703
+ const helperId = helperText3 ? `${baseId}-helper` : void 0;
704
+ const detailRef = (0, import_react8.useRef)(null);
705
+ const selectedRef = (0, import_react8.useRef)(false);
706
+ const [open, setOpen] = (0, import_react8.useState)(false);
707
+ const isControlled = "value" in props;
708
+ const [innerValue, setInnerValue] = (0, import_react8.useState)(defaultValue ?? EMPTY);
709
+ const current2 = isControlled ? value4 ?? EMPTY : innerValue;
710
+ const update = (next) => {
711
+ if (!isControlled) setInnerValue(next);
712
+ onValueChange?.(next);
713
+ };
714
+ const openSearch = () => {
715
+ if (disabled) return;
716
+ selectedRef.current = false;
717
+ setOpen(true);
718
+ };
719
+ const handleSelect = (result) => {
720
+ selectedRef.current = true;
721
+ update({
722
+ ...current2,
723
+ zonecode: result.zonecode,
724
+ address: result.address,
725
+ extraAddress: result.extraAddress ?? ""
726
+ });
727
+ setOpen(false);
728
+ };
729
+ const fullAddress = `${current2.address}${current2.extraAddress ?? ""}`;
730
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("fieldset", { ref, className: cx(fieldset, className), disabled, "aria-describedby": helperId, children: [
731
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("legend", { className: legend, children: [
732
+ label6,
733
+ required && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: requiredMark, "aria-hidden": true, children: "*" })
734
+ ] }),
735
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: row, children: [
736
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
737
+ TextField,
738
+ {
739
+ "aria-label": "\uC6B0\uD3B8\uBC88\uD638",
740
+ readOnly: true,
741
+ value: current2.zonecode,
742
+ placeholder: "\uC6B0\uD3B8\uBC88\uD638",
743
+ error: error && !current2.zonecode,
744
+ "aria-required": required || void 0,
745
+ rootClassName: zonecode,
746
+ onClick: openSearch
747
+ }
748
+ ),
749
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Button, { variant: "outline", color: "neutral", onClick: openSearch, disabled, children: searchLabel })
750
+ ] }),
751
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
752
+ TextField,
753
+ {
754
+ "aria-label": "\uAE30\uBCF8 \uC8FC\uC18C",
755
+ readOnly: true,
756
+ value: fullAddress,
757
+ placeholder: `${searchLabel}\uC744 \uB20C\uB7EC \uC8FC\uC18C\uB97C \uACE0\uB974\uC138\uC694`,
758
+ error: error && !current2.address,
759
+ "aria-required": required || void 0,
760
+ fullWidth: true,
761
+ onClick: openSearch
762
+ }
763
+ ),
764
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
765
+ TextField,
766
+ {
767
+ ref: detailRef,
768
+ "aria-label": "\uC0C1\uC138 \uC8FC\uC18C",
769
+ value: current2.detail,
770
+ placeholder: detailPlaceholder,
771
+ onChange: (event) => update({ ...current2, detail: event.target.value }),
772
+ autoComplete: "address-line2",
773
+ fullWidth: true
774
+ }
775
+ ),
776
+ helperText3 && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { id: helperId, className: helperText({ error }), children: helperText3 }),
777
+ name && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment, { children: [
778
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("input", { type: "hidden", name: `${name}[zonecode]`, value: current2.zonecode }),
779
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("input", { type: "hidden", name: `${name}[address]`, value: fullAddress }),
780
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("input", { type: "hidden", name: `${name}[detail]`, value: current2.detail })
781
+ ] }),
782
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
783
+ Modal,
784
+ {
785
+ open,
786
+ onOpenChange: setOpen,
787
+ title: searchLabel,
788
+ description: "\uB3C4\uB85C\uBA85, \uAC74\uBB3C\uBA85, \uC9C0\uBC88\uC73C\uB85C \uAC80\uC0C9\uD560 \uC218 \uC788\uC5B4\uC694.",
789
+ onCloseAutoFocus: (event) => {
790
+ if (selectedRef.current) {
791
+ event.preventDefault();
792
+ detailRef.current?.focus();
793
+ }
794
+ },
795
+ children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(SearchArea, { provider, onSelect: handleSelect, loadErrorText })
796
+ }
797
+ )
798
+ ] });
799
+ }
800
+ );
801
+
802
+ // src/components/AgreementGroup/AgreementGroup.tsx
803
+ var import_react10 = require("react");
804
+ var import_icons4 = require("@bestow-ui/icons");
805
+
806
+ // src/components/Checkbox/Checkbox.tsx
807
+ var import_react9 = require("react");
808
+
809
+ // src/utils/mergeRefs.ts
810
+ function mergeRefs(...refs) {
811
+ return (value4) => {
812
+ for (const ref of refs) {
813
+ if (typeof ref === "function") ref(value4);
814
+ else if (ref) ref.current = value4;
815
+ }
816
+ };
817
+ }
818
+
819
+ // src/components/Checkbox/Checkbox.css.ts
820
+ var import_createRuntimeFn5 = require("@vanilla-extract/recipes/createRuntimeFn");
821
+ var checkIcon = "_1y7mzsn8 _1y7mzsn7";
822
+ var control = /* @__PURE__ */ (0, import_createRuntimeFn5.createRuntimeFn)({ defaultClassName: "_1y7mzsn3", variantClassNames: { size: { sm: "_1y7mzsn4", md: "_1y7mzsn5" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
823
+ var indeterminateIcon = "_1y7mzsn9 _1y7mzsn7";
824
+ var input2 = "_1y7mzsn6";
825
+ var root4 = /* @__PURE__ */ (0, import_createRuntimeFn5.createRuntimeFn)({ defaultClassName: "_1y7mzsn0", variantClassNames: { size: { sm: "_1y7mzsn1", md: "_1y7mzsn2" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
826
+
827
+ // src/components/Checkbox/Checkbox.tsx
828
+ var import_jsx_runtime9 = require("react/jsx-runtime");
829
+ var Checkbox = /* @__PURE__ */ (0, import_react9.forwardRef)(function Checkbox2({ label: label6, size, indeterminate = false, invalid, disabled, className, ...rest }, ref) {
830
+ const innerRef = (0, import_react9.useRef)(null);
831
+ (0, import_react9.useEffect)(() => {
832
+ if (innerRef.current) innerRef.current.indeterminate = indeterminate;
833
+ }, [indeterminate]);
834
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("label", { className: cx(root4({ size }), className), "data-disabled": disabled || void 0, children: [
835
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { className: control({ size }), children: [
836
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
837
+ "input",
838
+ {
839
+ ref: mergeRefs(innerRef, ref),
840
+ type: "checkbox",
841
+ className: input2,
842
+ disabled,
843
+ "aria-invalid": invalid || void 0,
844
+ ...rest
845
+ }
846
+ ),
847
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("svg", { className: checkIcon, viewBox: "0 0 20 20", fill: "none", "aria-hidden": true, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
848
+ "path",
849
+ {
850
+ d: "M5 10.5l3.2 3L15 7",
851
+ stroke: "currentColor",
852
+ strokeWidth: "2",
853
+ strokeLinecap: "round",
854
+ strokeLinejoin: "round"
855
+ }
856
+ ) }),
857
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("svg", { className: indeterminateIcon, viewBox: "0 0 20 20", fill: "none", "aria-hidden": true, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { d: "M6 10h8", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }) })
858
+ ] }),
859
+ label6
860
+ ] });
861
+ });
862
+
863
+ // src/components/AgreementGroup/AgreementGroup.css.ts
864
+ var all = "j3uxdc3";
865
+ var box = "j3uxdc2";
866
+ var chevron2 = "j3uxdc9";
867
+ var content3 = "j3uxdca";
868
+ var fieldset2 = "j3uxdc0";
869
+ var item2 = "j3uxdc5";
870
+ var legend2 = "j3uxdc1";
871
+ var list = "j3uxdc4";
872
+ var row2 = "j3uxdc6";
873
+ var tag = "j3uxdc7";
874
+ var toggle = "j3uxdc8";
875
+
876
+ // src/components/AgreementGroup/AgreementGroup.tsx
877
+ var import_jsx_runtime10 = require("react/jsx-runtime");
878
+ function hasAllRequiredAgreements(items2, value4) {
879
+ return items2.every((item7) => !item7.required || value4.includes(item7.value));
880
+ }
881
+ var AgreementGroup = /* @__PURE__ */ (0, import_react10.forwardRef)(
882
+ function AgreementGroup2(props, ref) {
883
+ const {
884
+ items: items2,
885
+ value: value4,
886
+ defaultValue,
887
+ onValueChange,
888
+ label: label6,
889
+ allLabel = "\uC804\uCCB4 \uB3D9\uC758",
890
+ helperText: helperText3,
891
+ error,
892
+ disabled,
893
+ requiredText = "\uD544\uC218",
894
+ optionalText = "\uC120\uD0DD",
895
+ showText = "\uBCF4\uAE30",
896
+ hideText = "\uC811\uAE30",
897
+ name,
898
+ className
899
+ } = props;
900
+ const baseId = (0, import_react10.useId)();
901
+ const helperId = helperText3 ? `${baseId}-helper` : void 0;
902
+ const isControlled = "value" in props;
903
+ const [innerValue, setInnerValue] = (0, import_react10.useState)(defaultValue ?? []);
904
+ const agreed = isControlled ? value4 ?? [] : innerValue;
905
+ const [expanded, setExpanded] = (0, import_react10.useState)([]);
906
+ const update = (next) => {
907
+ if (!isControlled) setInnerValue(next);
908
+ onValueChange?.(next);
909
+ };
910
+ const allValues = items2.map((item7) => item7.value);
911
+ const agreedCount = allValues.filter((v) => agreed.includes(v)).length;
912
+ const allChecked = items2.length > 0 && agreedCount === items2.length;
913
+ const toggleItem = (itemValue, checked) => update(checked ? [...agreed.filter((v) => v !== itemValue), itemValue] : agreed.filter((v) => v !== itemValue));
914
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
915
+ "fieldset",
916
+ {
917
+ ref,
918
+ className: cx(fieldset2, className),
919
+ disabled,
920
+ "aria-describedby": helperId,
921
+ "data-invalid": error || void 0,
922
+ children: [
923
+ label6 && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("legend", { className: legend2, children: label6 }),
924
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: box, children: [
925
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: all, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
926
+ Checkbox,
927
+ {
928
+ label: allLabel,
929
+ checked: allChecked,
930
+ indeterminate: agreedCount > 0 && !allChecked,
931
+ onChange: (event) => update(event.target.checked ? allValues : [])
932
+ }
933
+ ) }),
934
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("ul", { className: list, children: items2.map((item7) => {
935
+ const labelId = `${baseId}-${item7.value}-label`;
936
+ const toggleTextId = `${baseId}-${item7.value}-toggle`;
937
+ const contentId = `${baseId}-${item7.value}-content`;
938
+ const isOpen = expanded.includes(item7.value);
939
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("li", { className: item2, children: [
940
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: row2, children: [
941
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
942
+ Checkbox,
943
+ {
944
+ size: "sm",
945
+ checked: agreed.includes(item7.value),
946
+ invalid: error && item7.required && !agreed.includes(item7.value),
947
+ onChange: (event) => toggleItem(item7.value, event.target.checked),
948
+ label: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("span", { id: labelId, children: [
949
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: tag, "data-required": item7.required || void 0, children: item7.required ? requiredText : optionalText }),
950
+ " ",
951
+ item7.label
952
+ ] })
953
+ }
954
+ ),
955
+ item7.content && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
956
+ "button",
957
+ {
958
+ type: "button",
959
+ className: toggle,
960
+ "aria-expanded": isOpen,
961
+ "aria-controls": contentId,
962
+ "aria-labelledby": `${labelId} ${toggleTextId}`,
963
+ onClick: () => setExpanded((prev) => isOpen ? prev.filter((v) => v !== item7.value) : [...prev, item7.value]),
964
+ children: [
965
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { id: toggleTextId, children: isOpen ? hideText : showText }),
966
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_icons4.ChevronDownIcon, { size: 14, className: chevron2 })
967
+ ]
968
+ }
969
+ )
970
+ ] }),
971
+ item7.content && isOpen && // 내용이 길면 스크롤된다 — 키보드로도 스크롤할 수 있게 포커스를 받는 이름 있는 영역으로 둔다
972
+ // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex
973
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { id: contentId, role: "region", "aria-labelledby": labelId, tabIndex: 0, className: content3, children: item7.content })
974
+ ] }, item7.value);
975
+ }) })
976
+ ] }),
977
+ name && agreed.map((v) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("input", { type: "hidden", name, value: v }, v)),
978
+ helperText3 && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("p", { id: helperId, className: helperText({ error }), children: helperText3 })
979
+ ]
980
+ }
981
+ );
982
+ }
983
+ );
984
+
985
+ // src/components/Alert/Alert.tsx
986
+ var import_react11 = require("react");
987
+ var import_icons5 = require("@bestow-ui/icons");
988
+
989
+ // src/components/Alert/Alert.css.ts
990
+ var import_createRuntimeFn6 = require("@vanilla-extract/recipes/createRuntimeFn");
359
991
  var action = "bsmpc0j";
360
- var alert = /* @__PURE__ */ (0, import_createRuntimeFn.createRuntimeFn)({ defaultClassName: "bsmpc06", variantClassNames: { variant: { soft: "bsmpc07", outline: "bsmpc08", solid: "bsmpc09" }, color: { primary: "bsmpc0a", neutral: "bsmpc0b", danger: "bsmpc0c", success: "bsmpc0d", warning: "bsmpc0e" } }, defaultVariants: { variant: "soft", color: "primary" }, compoundVariants: [] });
361
- var closeButton = "bsmpc0k";
362
- var content2 = "bsmpc0g";
363
- var description = "bsmpc0i";
364
- var icon = "bsmpc0f";
365
- var title = "bsmpc0h";
992
+ var alert = /* @__PURE__ */ (0, import_createRuntimeFn6.createRuntimeFn)({ defaultClassName: "bsmpc06", variantClassNames: { variant: { soft: "bsmpc07", outline: "bsmpc08", solid: "bsmpc09" }, color: { primary: "bsmpc0a", neutral: "bsmpc0b", danger: "bsmpc0c", success: "bsmpc0d", warning: "bsmpc0e" } }, defaultVariants: { variant: "soft", color: "primary" }, compoundVariants: [] });
993
+ var closeButton2 = "bsmpc0k";
994
+ var content4 = "bsmpc0g";
995
+ var description2 = "bsmpc0i";
996
+ var icon2 = "bsmpc0f";
997
+ var title2 = "bsmpc0h";
366
998
 
367
999
  // src/components/Alert/Alert.tsx
368
- var import_jsx_runtime3 = require("react/jsx-runtime");
1000
+ var import_jsx_runtime11 = require("react/jsx-runtime");
369
1001
  var defaultIcons = {
370
- primary: import_icons2.InfoIcon,
371
- neutral: import_icons2.InfoIcon,
372
- success: import_icons2.CircleCheckIcon,
373
- warning: import_icons2.TriangleAlertIcon,
374
- danger: import_icons2.CircleAlertIcon
1002
+ primary: import_icons5.InfoIcon,
1003
+ neutral: import_icons5.InfoIcon,
1004
+ success: import_icons5.CircleCheckIcon,
1005
+ warning: import_icons5.TriangleAlertIcon,
1006
+ danger: import_icons5.CircleAlertIcon
375
1007
  };
376
- var Alert = /* @__PURE__ */ (0, import_react3.forwardRef)(function Alert2({ variant, color = "primary", title: title6, icon: icon6, action: action3, onClose, closeLabel = "\uB2EB\uAE30", className, children, ...rest }, ref) {
1008
+ var Alert = /* @__PURE__ */ (0, import_react11.forwardRef)(function Alert2({ variant, color = "primary", title: title6, icon: icon6, action: action3, onClose, closeLabel = "\uB2EB\uAE30", className, children, ...rest }, ref) {
377
1009
  const DefaultIcon = defaultIcons[color];
378
- const iconNode = icon6 === void 0 ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(DefaultIcon, { size: 18 }) : icon6;
379
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { ref, className: cx(alert({ variant, color }), className), ...rest, children: [
380
- iconNode !== false && iconNode !== null && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: icon, "aria-hidden": true, children: iconNode }),
381
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: content2, children: [
382
- title6 && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: title, children: title6 }),
383
- children && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: description, children })
1010
+ const iconNode = icon6 === void 0 ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(DefaultIcon, { size: 18 }) : icon6;
1011
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { ref, className: cx(alert({ variant, color }), className), ...rest, children: [
1012
+ iconNode !== false && iconNode !== null && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: icon2, "aria-hidden": true, children: iconNode }),
1013
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: content4, children: [
1014
+ title6 && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: title2, children: title6 }),
1015
+ children && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: description2, children })
384
1016
  ] }),
385
- action3 && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: action, children: action3 }),
386
- onClose && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("button", { type: "button", className: closeButton, "aria-label": closeLabel, onClick: onClose, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_icons2.XIcon, { size: 16 }) })
1017
+ action3 && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: action, children: action3 }),
1018
+ onClose && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("button", { type: "button", className: closeButton2, "aria-label": closeLabel, onClick: onClose, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_icons5.XIcon, { size: 16 }) })
387
1019
  ] });
388
1020
  });
389
1021
 
1022
+ // src/components/AmountInput/AmountInput.tsx
1023
+ var import_react13 = require("react");
1024
+
1025
+ // src/utils/koreanFormat.ts
1026
+ var onlyDigits = (input5) => input5.replace(/\D/g, "");
1027
+ function phoneNumberMaxDigits(digits) {
1028
+ if (digits.startsWith("02")) return 10;
1029
+ if (/^1[568]/.test(digits)) return 8;
1030
+ return 11;
1031
+ }
1032
+ function formatPhoneNumber(input5) {
1033
+ const d = onlyDigits(input5).slice(0, phoneNumberMaxDigits(onlyDigits(input5)));
1034
+ if (d.startsWith("02")) {
1035
+ if (d.length <= 2) return d;
1036
+ if (d.length <= 5) return `${d.slice(0, 2)}-${d.slice(2)}`;
1037
+ if (d.length <= 9) return `${d.slice(0, 2)}-${d.slice(2, 5)}-${d.slice(5)}`;
1038
+ return `${d.slice(0, 2)}-${d.slice(2, 6)}-${d.slice(6)}`;
1039
+ }
1040
+ if (/^1[568]/.test(d)) {
1041
+ return d.length <= 4 ? d : `${d.slice(0, 4)}-${d.slice(4)}`;
1042
+ }
1043
+ if (d.length <= 3) return d;
1044
+ if (d.length <= 6) return `${d.slice(0, 3)}-${d.slice(3)}`;
1045
+ if (d.length <= 10) return `${d.slice(0, 3)}-${d.slice(3, 6)}-${d.slice(6)}`;
1046
+ return `${d.slice(0, 3)}-${d.slice(3, 7)}-${d.slice(7)}`;
1047
+ }
1048
+ function formatBusinessNumber(input5) {
1049
+ const d = onlyDigits(input5).slice(0, 10);
1050
+ if (d.length <= 3) return d;
1051
+ if (d.length <= 5) return `${d.slice(0, 3)}-${d.slice(3)}`;
1052
+ return `${d.slice(0, 3)}-${d.slice(3, 5)}-${d.slice(5)}`;
1053
+ }
1054
+ function isValidBusinessNumber(input5) {
1055
+ const d = onlyDigits(input5);
1056
+ if (d.length !== 10) return false;
1057
+ const weights = [1, 3, 7, 1, 3, 7, 1, 3, 5];
1058
+ const digits = [...d].map(Number);
1059
+ let sum = weights.reduce((acc, w, i) => acc + w * digits[i], 0);
1060
+ sum += Math.floor(digits[8] * 5 / 10);
1061
+ return (10 - sum % 10) % 10 === digits[9];
1062
+ }
1063
+ function formatKoreanAmount(amount, unit = "\uC6D0") {
1064
+ const n = Math.floor(Math.abs(amount));
1065
+ if (n === 0) return `0${unit}`;
1066
+ const units = [
1067
+ { value: 1e12, label: "\uC870" },
1068
+ { value: 1e8, label: "\uC5B5" },
1069
+ { value: 1e4, label: "\uB9CC" },
1070
+ { value: 1, label: "" }
1071
+ ];
1072
+ let rest = n;
1073
+ const parts = [];
1074
+ for (const u of units) {
1075
+ const q = Math.floor(rest / u.value);
1076
+ rest %= u.value;
1077
+ if (q > 0) parts.push(`${q.toLocaleString("ko-KR")}${u.label}`);
1078
+ }
1079
+ return `${amount < 0 ? "-" : ""}${parts.join(" ")}${unit}`;
1080
+ }
1081
+
1082
+ // src/utils/useFormattedInput.ts
1083
+ var import_react12 = require("react");
1084
+ function caretAfter(display, count2, isMeaningful) {
1085
+ if (count2 <= 0) return 0;
1086
+ let seen = 0;
1087
+ for (let i = 0; i < display.length; i++) {
1088
+ if (isMeaningful(display[i])) seen++;
1089
+ if (seen === count2) return i + 1;
1090
+ }
1091
+ return display.length;
1092
+ }
1093
+ function useFormattedInput({
1094
+ isControlled,
1095
+ value: value4,
1096
+ defaultValue,
1097
+ onValueChange,
1098
+ sanitize: sanitize3,
1099
+ format,
1100
+ isMeaningful,
1101
+ inputRef
1102
+ }) {
1103
+ const [innerValue, setInnerValue] = (0, import_react12.useState)(() => sanitize3(defaultValue ?? ""));
1104
+ const raw = isControlled ? sanitize3(value4 ?? "") : innerValue;
1105
+ const display = format(raw);
1106
+ const pendingCaret = (0, import_react12.useRef)(null);
1107
+ (0, import_react12.useLayoutEffect)(() => {
1108
+ const input5 = inputRef.current;
1109
+ if (pendingCaret.current === null || !input5 || document.activeElement !== input5) return;
1110
+ const position = caretAfter(input5.value, pendingCaret.current, isMeaningful);
1111
+ input5.setSelectionRange(position, position);
1112
+ pendingCaret.current = null;
1113
+ });
1114
+ const commit = (next, caretCount) => {
1115
+ pendingCaret.current = caretCount;
1116
+ if (!isControlled) setInnerValue(next);
1117
+ if (next !== raw) onValueChange?.(next);
1118
+ };
1119
+ const onChange = (event) => {
1120
+ const { value: typed, selectionStart } = event.target;
1121
+ const next = sanitize3(typed);
1122
+ const before = sanitize3(typed.slice(0, selectionStart ?? typed.length));
1123
+ commit(next, Math.min(before.length, next.length));
1124
+ };
1125
+ const onKeyDown = (event) => {
1126
+ const input5 = event.currentTarget;
1127
+ const { selectionStart: start, selectionEnd: end } = input5;
1128
+ if (start === null || start !== end) return;
1129
+ const countBefore = (text2) => [...text2].filter(isMeaningful).length;
1130
+ if (event.key === "Backspace" && start > 0 && !isMeaningful(input5.value[start - 1])) {
1131
+ const index = countBefore(input5.value.slice(0, start)) - 1;
1132
+ if (index < 0) return;
1133
+ event.preventDefault();
1134
+ commit(raw.slice(0, index) + raw.slice(index + 1), index);
1135
+ } else if (event.key === "Delete" && start < input5.value.length && !isMeaningful(input5.value[start])) {
1136
+ const index = countBefore(input5.value.slice(0, start));
1137
+ if (index >= raw.length) return;
1138
+ event.preventDefault();
1139
+ commit(raw.slice(0, index) + raw.slice(index + 1), index);
1140
+ }
1141
+ };
1142
+ return { raw, display, onChange, onKeyDown };
1143
+ }
1144
+
1145
+ // src/components/AmountInput/AmountInput.css.ts
1146
+ var input3 = "_70qkav0";
1147
+
1148
+ // src/components/AmountInput/AmountInput.tsx
1149
+ var import_jsx_runtime12 = require("react/jsx-runtime");
1150
+ var MAX_DIGITS = 15;
1151
+ var isDigit = (char) => /\d/.test(char);
1152
+ var AmountInput = /* @__PURE__ */ (0, import_react13.forwardRef)(
1153
+ function AmountInput2(props, ref) {
1154
+ const {
1155
+ value: value4,
1156
+ defaultValue,
1157
+ onValueChange,
1158
+ max,
1159
+ unit = "\uC6D0",
1160
+ showKoreanAmount = true,
1161
+ label: label6 = "\uAE08\uC561",
1162
+ placeholder = "0",
1163
+ helperText: helperText3,
1164
+ onKeyDown,
1165
+ className,
1166
+ ...rest
1167
+ } = props;
1168
+ const inputRef = (0, import_react13.useRef)(null);
1169
+ const sanitize3 = (input5) => {
1170
+ let digits = input5.replace(/\D/g, "").replace(/^0+(?=\d)/, "").slice(0, MAX_DIGITS);
1171
+ if (max !== void 0 && digits && Number(digits) > max) digits = String(Math.floor(max));
1172
+ return digits;
1173
+ };
1174
+ const toRaw = (amount) => amount === null || amount === void 0 ? "" : String(Math.floor(Math.abs(amount)));
1175
+ const field3 = useFormattedInput({
1176
+ isControlled: "value" in props,
1177
+ value: toRaw(value4),
1178
+ defaultValue: toRaw(defaultValue),
1179
+ onValueChange: (digits) => onValueChange?.(digits === "" ? null : Number(digits)),
1180
+ sanitize: sanitize3,
1181
+ format: (digits) => digits === "" ? "" : Number(digits).toLocaleString("ko-KR"),
1182
+ isMeaningful: isDigit,
1183
+ inputRef
1184
+ });
1185
+ const reading = showKoreanAmount && field3.raw !== "" ? formatKoreanAmount(Number(field3.raw), unit) : null;
1186
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1187
+ TextField,
1188
+ {
1189
+ ref: mergeRefs(ref, inputRef),
1190
+ label: label6,
1191
+ placeholder,
1192
+ inputMode: "numeric",
1193
+ value: field3.display,
1194
+ onChange: field3.onChange,
1195
+ onKeyDown: (event) => {
1196
+ field3.onKeyDown(event);
1197
+ onKeyDown?.(event);
1198
+ },
1199
+ endAdornment: unit,
1200
+ helperText: reading && helperText3 ? /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_jsx_runtime12.Fragment, { children: [
1201
+ reading,
1202
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("br", {}),
1203
+ helperText3
1204
+ ] }) : reading ?? helperText3,
1205
+ className: cx(input3, className),
1206
+ ...rest
1207
+ }
1208
+ );
1209
+ }
1210
+ );
1211
+
390
1212
  // src/components/Avatar/Avatar.tsx
391
1213
  var RadixAvatar = __toESM(require("@radix-ui/react-avatar"), 1);
392
- var import_icons3 = require("@bestow-ui/icons");
393
- var import_react4 = require("react");
1214
+ var import_icons6 = require("@bestow-ui/icons");
1215
+ var import_react14 = require("react");
394
1216
 
395
1217
  // src/components/Avatar/Avatar.css.ts
396
- var import_createRuntimeFn2 = require("@vanilla-extract/recipes/createRuntimeFn");
1218
+ var import_createRuntimeFn7 = require("@vanilla-extract/recipes/createRuntimeFn");
397
1219
  var fallback = "_1fd2kp27";
398
1220
  var image = "_1fd2kp26";
399
- var root3 = /* @__PURE__ */ (0, import_createRuntimeFn2.createRuntimeFn)({ defaultClassName: "_1fd2kp20", variantClassNames: { size: { sm: "_1fd2kp21", md: "_1fd2kp22", lg: "_1fd2kp23" }, shape: { circle: "_1fd2kp24", square: "_1fd2kp25" } }, defaultVariants: { size: "md", shape: "circle" }, compoundVariants: [] });
1221
+ var root5 = /* @__PURE__ */ (0, import_createRuntimeFn7.createRuntimeFn)({ defaultClassName: "_1fd2kp20", variantClassNames: { size: { sm: "_1fd2kp21", md: "_1fd2kp22", lg: "_1fd2kp23" }, shape: { circle: "_1fd2kp24", square: "_1fd2kp25" } }, defaultVariants: { size: "md", shape: "circle" }, compoundVariants: [] });
400
1222
 
401
1223
  // src/components/Avatar/Avatar.tsx
402
- var import_jsx_runtime4 = require("react/jsx-runtime");
1224
+ var import_jsx_runtime13 = require("react/jsx-runtime");
403
1225
  function getInitials(name) {
404
1226
  const [a = "", b = ""] = name.trim().split(/\s+/);
405
1227
  const first = (word) => Array.from(word)[0] ?? "";
406
1228
  return (first(a) + first(b)).toUpperCase();
407
1229
  }
408
- var Avatar = /* @__PURE__ */ (0, import_react4.forwardRef)(function Avatar2({ src, alt, name, fallback: fallback2, size, shape, className, ...rest }, ref) {
1230
+ var Avatar = /* @__PURE__ */ (0, import_react14.forwardRef)(function Avatar2({ src, alt, name, fallback: fallback2, size, shape, className, ...rest }, ref) {
409
1231
  const label6 = alt ?? name;
410
1232
  const a11y = label6 ? { role: "img", "aria-label": label6 } : { "aria-hidden": true };
411
1233
  const initials = name ? getInitials(name) : "";
412
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(RadixAvatar.Root, { ref, className: cx(root3({ size, shape }), className), ...a11y, ...rest, children: [
413
- src && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(RadixAvatar.Image, { src, alt: "", className: image }),
414
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(RadixAvatar.Fallback, { className: fallback, children: fallback2 ?? (initials || /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_icons3.UserIcon, { size: "60%" })) })
1234
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(RadixAvatar.Root, { ref, className: cx(root5({ size, shape }), className), ...a11y, ...rest, children: [
1235
+ src && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(RadixAvatar.Image, { src, alt: "", className: image }),
1236
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(RadixAvatar.Fallback, { className: fallback, children: fallback2 ?? (initials || /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_icons6.UserIcon, { size: "60%" })) })
415
1237
  ] });
416
1238
  });
417
1239
 
418
1240
  // src/components/Badge/Badge.tsx
419
- var import_react5 = require("react");
1241
+ var import_react15 = require("react");
420
1242
 
421
1243
  // src/components/Badge/Badge.css.ts
422
- var import_createRuntimeFn3 = require("@vanilla-extract/recipes/createRuntimeFn");
423
- var badge = /* @__PURE__ */ (0, import_createRuntimeFn3.createRuntimeFn)({ defaultClassName: "_1295cfn4", variantClassNames: { variant: { solid: "_1295cfn5", soft: "_1295cfn6", outline: "_1295cfn7" }, color: { primary: "_1295cfn8", neutral: "_1295cfn9", danger: "_1295cfna", success: "_1295cfnb", warning: "_1295cfnc" }, size: { sm: "_1295cfnd", md: "_1295cfne", lg: "_1295cfnf" } }, defaultVariants: { variant: "soft", color: "neutral", size: "md" }, compoundVariants: [] });
424
- var icon2 = "_1295cfng";
1244
+ var import_createRuntimeFn8 = require("@vanilla-extract/recipes/createRuntimeFn");
1245
+ var badge = /* @__PURE__ */ (0, import_createRuntimeFn8.createRuntimeFn)({ defaultClassName: "_1295cfn4", variantClassNames: { variant: { solid: "_1295cfn5", soft: "_1295cfn6", outline: "_1295cfn7" }, color: { primary: "_1295cfn8", neutral: "_1295cfn9", danger: "_1295cfna", success: "_1295cfnb", warning: "_1295cfnc" }, size: { sm: "_1295cfnd", md: "_1295cfne", lg: "_1295cfnf" } }, defaultVariants: { variant: "soft", color: "neutral", size: "md" }, compoundVariants: [] });
1246
+ var icon3 = "_1295cfng";
425
1247
 
426
1248
  // src/components/Badge/Badge.tsx
427
- var import_jsx_runtime5 = require("react/jsx-runtime");
428
- var Badge = /* @__PURE__ */ (0, import_react5.forwardRef)(function Badge2({ variant, color, size, startIcon, className, children, ...rest }, ref) {
429
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("span", { ref, className: cx(badge({ variant, color, size }), className), ...rest, children: [
430
- startIcon && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: icon2, children: startIcon }),
1249
+ var import_jsx_runtime14 = require("react/jsx-runtime");
1250
+ var Badge = /* @__PURE__ */ (0, import_react15.forwardRef)(function Badge2({ variant, color, size, startIcon, className, children, ...rest }, ref) {
1251
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("span", { ref, className: cx(badge({ variant, color, size }), className), ...rest, children: [
1252
+ startIcon && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: icon3, children: startIcon }),
431
1253
  children
432
1254
  ] });
433
1255
  });
434
1256
 
435
1257
  // src/components/Breadcrumb/Breadcrumb.tsx
436
- var import_react7 = require("react");
437
- var import_icons5 = require("@bestow-ui/icons");
1258
+ var import_react17 = require("react");
1259
+ var import_icons8 = require("@bestow-ui/icons");
438
1260
 
439
1261
  // src/components/Link/Link.tsx
440
1262
  var import_react_slot = require("@radix-ui/react-slot");
441
- var import_react6 = require("react");
442
- var import_icons4 = require("@bestow-ui/icons");
443
-
444
- // src/styles/visuallyHidden.css.ts
445
- var visuallyHidden = "_1kdtbw10";
1263
+ var import_react16 = require("react");
1264
+ var import_icons7 = require("@bestow-ui/icons");
446
1265
 
447
1266
  // src/components/Link/Link.css.ts
448
- var import_createRuntimeFn4 = require("@vanilla-extract/recipes/createRuntimeFn");
1267
+ var import_createRuntimeFn9 = require("@vanilla-extract/recipes/createRuntimeFn");
449
1268
  var externalIcon = "_1t4hlp6";
450
- var link = /* @__PURE__ */ (0, import_createRuntimeFn4.createRuntimeFn)({ defaultClassName: "_1t4hlp0", variantClassNames: { color: { primary: "_1t4hlp1", neutral: "_1t4hlp2", inherit: "_1t4hlp3" }, underline: { always: "_1t4hlp4", hover: "_1t4hlp5" } }, defaultVariants: { color: "primary", underline: "always" }, compoundVariants: [] });
1269
+ var link = /* @__PURE__ */ (0, import_createRuntimeFn9.createRuntimeFn)({ defaultClassName: "_1t4hlp0", variantClassNames: { color: { primary: "_1t4hlp1", neutral: "_1t4hlp2", inherit: "_1t4hlp3" }, underline: { always: "_1t4hlp4", hover: "_1t4hlp5" } }, defaultVariants: { color: "primary", underline: "always" }, compoundVariants: [] });
451
1270
 
452
1271
  // src/components/Link/Link.tsx
453
- var import_jsx_runtime6 = (
1272
+ var import_jsx_runtime15 = (
454
1273
  // Slot 의 props 타입은 HTMLElement 기준이라 <a> 전용 속성(target·rel 등)은 그대로 넘기도록 단언한다
455
1274
  require("react/jsx-runtime")
456
1275
  );
457
- var Link = /* @__PURE__ */ (0, import_react6.forwardRef)(function Link2({
1276
+ var Link = /* @__PURE__ */ (0, import_react16.forwardRef)(function Link2({
458
1277
  as: Component = "a",
459
1278
  asChild,
460
1279
  color,
@@ -469,9 +1288,9 @@ var Link = /* @__PURE__ */ (0, import_react6.forwardRef)(function Link2({
469
1288
  }, ref) {
470
1289
  const linkClassName = cx(link({ color, underline }), className);
471
1290
  if (asChild) {
472
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_react_slot.Slot, { ref, className: linkClassName, ...{ target, rel, ...rest }, children });
1291
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_react_slot.Slot, { ref, className: linkClassName, ...{ target, rel, ...rest }, children });
473
1292
  }
474
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
1293
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
475
1294
  Component,
476
1295
  {
477
1296
  ref,
@@ -481,10 +1300,10 @@ var Link = /* @__PURE__ */ (0, import_react6.forwardRef)(function Link2({
481
1300
  ...rest,
482
1301
  children: [
483
1302
  children,
484
- external && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
1303
+ external && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_jsx_runtime15.Fragment, { children: [
485
1304
  " ",
486
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_icons4.ExternalLinkIcon, { className: externalIcon }),
487
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: visuallyHidden, children: externalLabel })
1305
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_icons7.ExternalLinkIcon, { className: externalIcon }),
1306
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: visuallyHidden, children: externalLabel })
488
1307
  ] })
489
1308
  ]
490
1309
  }
@@ -493,209 +1312,133 @@ var Link = /* @__PURE__ */ (0, import_react6.forwardRef)(function Link2({
493
1312
 
494
1313
  // src/components/Breadcrumb/Breadcrumb.css.ts
495
1314
  var current = "_18t8ztt3";
496
- var item2 = "_18t8ztt1";
1315
+ var item3 = "_18t8ztt1";
497
1316
  var link2 = "_18t8ztt2";
498
- var list = "_18t8ztt0";
1317
+ var list2 = "_18t8ztt0";
499
1318
  var separator = "_18t8ztt4";
500
1319
 
501
1320
  // src/components/Breadcrumb/Breadcrumb.tsx
502
- var import_jsx_runtime7 = require("react/jsx-runtime");
503
- var Breadcrumb = /* @__PURE__ */ (0, import_react7.forwardRef)(function Breadcrumb2({ items: items2, linkAs, separator: separator3, "aria-label": ariaLabel = "\uC774\uB3D9 \uACBD\uB85C", className, ...rest }, ref) {
504
- const sep = separator3 ?? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_icons5.ChevronRightIcon, { size: 14 });
505
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("nav", { ref, "aria-label": ariaLabel, className, ...rest, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("ol", { className: list, children: items2.map((item6, index) => {
1321
+ var import_jsx_runtime16 = require("react/jsx-runtime");
1322
+ var Breadcrumb = /* @__PURE__ */ (0, import_react17.forwardRef)(function Breadcrumb2({ items: items2, linkAs, separator: separator3, "aria-label": ariaLabel = "\uC774\uB3D9 \uACBD\uB85C", className, ...rest }, ref) {
1323
+ const sep = separator3 ?? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_icons8.ChevronRightIcon, { size: 14 });
1324
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("nav", { ref, "aria-label": ariaLabel, className, ...rest, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("ol", { className: list2, children: items2.map((item7, index) => {
506
1325
  const isCurrent = index === items2.length - 1;
507
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("li", { className: item2, children: [
508
- index > 0 && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: separator, "aria-hidden": true, children: sep }),
509
- isCurrent || item6.href === void 0 ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: isCurrent ? current : void 0, "aria-current": isCurrent ? "page" : void 0, children: item6.label }) : /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Link, { as: linkAs, href: item6.href, color: "neutral", underline: "hover", className: link2, children: item6.label })
1326
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("li", { className: item3, children: [
1327
+ index > 0 && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: separator, "aria-hidden": true, children: sep }),
1328
+ isCurrent || item7.href === void 0 ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: isCurrent ? current : void 0, "aria-current": isCurrent ? "page" : void 0, children: item7.label }) : /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Link, { as: linkAs, href: item7.href, color: "neutral", underline: "hover", className: link2, children: item7.label })
510
1329
  ] }, index);
511
1330
  }) }) });
512
1331
  });
513
1332
 
514
- // src/components/Button/Button.tsx
515
- var import_react9 = require("react");
516
-
517
- // src/components/Spinner/Spinner.tsx
518
- var import_icons6 = require("@bestow-ui/icons");
519
- var import_react8 = require("react");
520
-
521
- // src/components/Spinner/Spinner.css.ts
522
- var import_createRuntimeFn5 = require("@vanilla-extract/recipes/createRuntimeFn");
523
- var spinner = /* @__PURE__ */ (0, import_createRuntimeFn5.createRuntimeFn)({ defaultClassName: "_4b5tg40", variantClassNames: { color: { current: "_4b5tg41", primary: "_4b5tg42", neutral: "_4b5tg43", danger: "_4b5tg44" }, size: { sm: "_4b5tg45", md: "_4b5tg46", lg: "_4b5tg47" } }, defaultVariants: { color: "current", size: "md" }, compoundVariants: [] });
524
-
525
- // src/components/Spinner/Spinner.tsx
526
- var import_jsx_runtime8 = require("react/jsx-runtime");
527
- var Spinner = /* @__PURE__ */ (0, import_react8.forwardRef)(function Spinner2({ size, color, label: label6 = "\uB85C\uB529 \uC911", className, ...rest }, ref) {
528
- const a11y = label6 ? { role: "status" } : { "aria-hidden": true };
529
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("span", { ref, className: cx(spinner({ size, color }), className), ...a11y, ...rest, children: [
530
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_icons6.LoaderIcon, { size: "100%" }),
531
- label6 && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: visuallyHidden, children: label6 })
532
- ] });
533
- });
534
-
535
- // src/components/Button/Button.css.ts
536
- var import_createRuntimeFn6 = require("@vanilla-extract/recipes/createRuntimeFn");
537
- var button = /* @__PURE__ */ (0, import_createRuntimeFn6.createRuntimeFn)({ defaultClassName: "xcekda6", variantClassNames: { variant: { solid: "xcekda7", soft: "xcekda8", outline: "xcekda9", ghost: "xcekdaa" }, color: { primary: "xcekdab", neutral: "xcekdac", danger: "xcekdad" }, size: { sm: "xcekdae", md: "xcekdaf", lg: "xcekdag" }, fullWidth: { true: "xcekdah" } }, defaultVariants: { variant: "solid", color: "primary", size: "md" }, compoundVariants: [] });
538
- var icon3 = "xcekdai";
539
-
540
- // src/components/Button/Button.tsx
541
- var import_jsx_runtime9 = require("react/jsx-runtime");
542
- var Button = /* @__PURE__ */ (0, import_react9.forwardRef)(function Button2({
543
- variant,
544
- color,
545
- size,
546
- fullWidth,
547
- startIcon,
548
- endIcon,
549
- loading,
550
- className,
551
- type = "button",
552
- onClick,
553
- children,
554
- ...rest
555
- }, ref) {
556
- const handleClick = (event) => {
557
- if (loading) {
558
- event.preventDefault();
559
- return;
560
- }
561
- onClick?.(event);
562
- };
563
- const leading = loading ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Spinner, { size: "sm", label: "" }) : startIcon;
564
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
565
- "button",
566
- {
567
- ref,
568
- type,
569
- className: cx(button({ variant, color, size, fullWidth }), className),
570
- "aria-busy": loading || void 0,
571
- "aria-disabled": loading || void 0,
572
- onClick: handleClick,
573
- ...rest,
574
- children: [
575
- leading && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: icon3, children: leading }),
576
- children,
577
- endIcon && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: icon3, children: endIcon })
578
- ]
579
- }
580
- );
581
- });
582
-
583
- // src/components/Card/Card.tsx
584
- var import_react10 = require("react");
585
-
586
- // src/components/Card/Card.css.ts
587
- var import_createRuntimeFn7 = require("@vanilla-extract/recipes/createRuntimeFn");
588
- var body = "dnuf1u9";
589
- var card = /* @__PURE__ */ (0, import_createRuntimeFn7.createRuntimeFn)({ defaultClassName: "dnuf1u0", variantClassNames: { variant: { outline: "dnuf1u1", elevated: "dnuf1u2", soft: "dnuf1u3" }, padding: { none: "dnuf1u4", sm: "dnuf1u5", md: "dnuf1u6", lg: "dnuf1u7" } }, defaultVariants: { variant: "outline", padding: "md" }, compoundVariants: [] });
590
- var footer = "dnuf1ua";
591
- var header2 = "dnuf1u8";
592
-
593
- // src/components/Card/Card.tsx
594
- var import_jsx_runtime10 = require("react/jsx-runtime");
595
- var Card = /* @__PURE__ */ (0, import_react10.forwardRef)(function Card2({ variant, padding, as: Component = "div", className, ...rest }, ref) {
596
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Component, { ref, className: cx(card({ variant, padding }), className), ...rest });
597
- });
598
- var CardHeader = /* @__PURE__ */ (0, import_react10.forwardRef)(function CardHeader2({ className, ...rest }, ref) {
599
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { ref, className: cx(header2, className), ...rest });
600
- });
601
- var CardBody = /* @__PURE__ */ (0, import_react10.forwardRef)(function CardBody2({ className, ...rest }, ref) {
602
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { ref, className: cx(body, className), ...rest });
603
- });
604
- var CardFooter = /* @__PURE__ */ (0, import_react10.forwardRef)(function CardFooter2({ className, ...rest }, ref) {
605
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { ref, className: cx(footer, className), ...rest });
606
- });
607
-
608
- // src/components/Checkbox/Checkbox.tsx
609
- var import_react11 = require("react");
610
-
611
- // src/utils/mergeRefs.ts
612
- function mergeRefs(...refs) {
613
- return (value4) => {
614
- for (const ref of refs) {
615
- if (typeof ref === "function") ref(value4);
616
- else if (ref) ref.current = value4;
617
- }
618
- };
619
- }
1333
+ // src/components/BusinessNumberInput/BusinessNumberInput.tsx
1334
+ var import_react18 = require("react");
1335
+ var import_jsx_runtime17 = require("react/jsx-runtime");
1336
+ var sanitize = (input5) => input5.replace(/\D/g, "").slice(0, 10);
1337
+ var isDigit2 = (char) => /\d/.test(char);
1338
+ var BusinessNumberInput = /* @__PURE__ */ (0, import_react18.forwardRef)(
1339
+ function BusinessNumberInput2(props, ref) {
1340
+ const {
1341
+ value: value4,
1342
+ defaultValue,
1343
+ onValueChange,
1344
+ validate = true,
1345
+ invalidText = "\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.",
1346
+ label: label6 = "\uC0AC\uC5C5\uC790\uB4F1\uB85D\uBC88\uD638",
1347
+ placeholder = "000-00-00000",
1348
+ error,
1349
+ helperText: helperText3,
1350
+ onBlur,
1351
+ onKeyDown,
1352
+ ...rest
1353
+ } = props;
1354
+ const inputRef = (0, import_react18.useRef)(null);
1355
+ const [touched, setTouched] = (0, import_react18.useState)(false);
1356
+ const field3 = useFormattedInput({
1357
+ isControlled: "value" in props,
1358
+ value: value4,
1359
+ defaultValue,
1360
+ onValueChange: (digits) => onValueChange?.(digits, digits.length === 10 ? isValidBusinessNumber(digits) : null),
1361
+ sanitize,
1362
+ format: formatBusinessNumber,
1363
+ isMeaningful: isDigit2,
1364
+ inputRef
1365
+ });
1366
+ const complete = field3.raw.length === 10;
1367
+ const autoInvalid = validate && field3.raw.length > 0 && (complete ? !isValidBusinessNumber(field3.raw) : touched);
1368
+ const showAuto = autoInvalid && error === void 0;
1369
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1370
+ TextField,
1371
+ {
1372
+ ref: mergeRefs(ref, inputRef),
1373
+ label: label6,
1374
+ placeholder,
1375
+ inputMode: "numeric",
1376
+ value: field3.display,
1377
+ onChange: field3.onChange,
1378
+ onKeyDown: (event) => {
1379
+ field3.onKeyDown(event);
1380
+ onKeyDown?.(event);
1381
+ },
1382
+ onBlur: (event) => {
1383
+ setTouched(true);
1384
+ onBlur?.(event);
1385
+ },
1386
+ error: error ?? autoInvalid,
1387
+ helperText: showAuto ? complete ? invalidText : "10\uC790\uB9AC\uB97C \uBAA8\uB450 \uC785\uB825\uD574 \uC8FC\uC138\uC694." : helperText3,
1388
+ ...rest
1389
+ }
1390
+ );
1391
+ }
1392
+ );
620
1393
 
621
- // src/components/Checkbox/Checkbox.css.ts
622
- var import_createRuntimeFn8 = require("@vanilla-extract/recipes/createRuntimeFn");
623
- var checkIcon = "_1y7mzsn8 _1y7mzsn7";
624
- var control = /* @__PURE__ */ (0, import_createRuntimeFn8.createRuntimeFn)({ defaultClassName: "_1y7mzsn3", variantClassNames: { size: { sm: "_1y7mzsn4", md: "_1y7mzsn5" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
625
- var indeterminateIcon = "_1y7mzsn9 _1y7mzsn7";
626
- var input = "_1y7mzsn6";
627
- var root4 = /* @__PURE__ */ (0, import_createRuntimeFn8.createRuntimeFn)({ defaultClassName: "_1y7mzsn0", variantClassNames: { size: { sm: "_1y7mzsn1", md: "_1y7mzsn2" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
1394
+ // src/components/Card/Card.tsx
1395
+ var import_react19 = require("react");
628
1396
 
629
- // src/components/Checkbox/Checkbox.tsx
630
- var import_jsx_runtime11 = require("react/jsx-runtime");
631
- var Checkbox = /* @__PURE__ */ (0, import_react11.forwardRef)(function Checkbox2({ label: label6, size, indeterminate = false, invalid, disabled, className, ...rest }, ref) {
632
- const innerRef = (0, import_react11.useRef)(null);
633
- (0, import_react11.useEffect)(() => {
634
- if (innerRef.current) innerRef.current.indeterminate = indeterminate;
635
- }, [indeterminate]);
636
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("label", { className: cx(root4({ size }), className), "data-disabled": disabled || void 0, children: [
637
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("span", { className: control({ size }), children: [
638
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
639
- "input",
640
- {
641
- ref: mergeRefs(innerRef, ref),
642
- type: "checkbox",
643
- className: input,
644
- disabled,
645
- "aria-invalid": invalid || void 0,
646
- ...rest
647
- }
648
- ),
649
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("svg", { className: checkIcon, viewBox: "0 0 20 20", fill: "none", "aria-hidden": true, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
650
- "path",
651
- {
652
- d: "M5 10.5l3.2 3L15 7",
653
- stroke: "currentColor",
654
- strokeWidth: "2",
655
- strokeLinecap: "round",
656
- strokeLinejoin: "round"
657
- }
658
- ) }),
659
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("svg", { className: indeterminateIcon, viewBox: "0 0 20 20", fill: "none", "aria-hidden": true, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("path", { d: "M6 10h8", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }) })
660
- ] }),
661
- label6
662
- ] });
1397
+ // src/components/Card/Card.css.ts
1398
+ var import_createRuntimeFn10 = require("@vanilla-extract/recipes/createRuntimeFn");
1399
+ var body2 = "dnuf1u9";
1400
+ var card = /* @__PURE__ */ (0, import_createRuntimeFn10.createRuntimeFn)({ defaultClassName: "dnuf1u0", variantClassNames: { variant: { outline: "dnuf1u1", elevated: "dnuf1u2", soft: "dnuf1u3" }, padding: { none: "dnuf1u4", sm: "dnuf1u5", md: "dnuf1u6", lg: "dnuf1u7" } }, defaultVariants: { variant: "outline", padding: "md" }, compoundVariants: [] });
1401
+ var footer2 = "dnuf1ua";
1402
+ var header3 = "dnuf1u8";
1403
+
1404
+ // src/components/Card/Card.tsx
1405
+ var import_jsx_runtime18 = require("react/jsx-runtime");
1406
+ var Card = /* @__PURE__ */ (0, import_react19.forwardRef)(function Card2({ variant, padding, as: Component = "div", className, ...rest }, ref) {
1407
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Component, { ref, className: cx(card({ variant, padding }), className), ...rest });
1408
+ });
1409
+ var CardHeader = /* @__PURE__ */ (0, import_react19.forwardRef)(function CardHeader2({ className, ...rest }, ref) {
1410
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { ref, className: cx(header3, className), ...rest });
1411
+ });
1412
+ var CardBody = /* @__PURE__ */ (0, import_react19.forwardRef)(function CardBody2({ className, ...rest }, ref) {
1413
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { ref, className: cx(body2, className), ...rest });
1414
+ });
1415
+ var CardFooter = /* @__PURE__ */ (0, import_react19.forwardRef)(function CardFooter2({ className, ...rest }, ref) {
1416
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { ref, className: cx(footer2, className), ...rest });
663
1417
  });
664
1418
 
665
1419
  // src/components/Combobox/Combobox.tsx
666
1420
  var Popover = __toESM(require("@radix-ui/react-popover"), 1);
667
- var import_react12 = require("react");
668
- var import_icons7 = require("@bestow-ui/icons");
669
-
670
- // src/components/Input/Input.css.ts
671
- var import_createRuntimeFn9 = require("@vanilla-extract/recipes/createRuntimeFn");
672
- var adornment = "_19p5zvh6";
673
- var field = "_19p5zvh7";
674
- var fieldFullWidth = "_19p5zvh8";
675
- var helperText = /* @__PURE__ */ (0, import_createRuntimeFn9.createRuntimeFn)({ defaultClassName: "_19p5zvhb", variantClassNames: { error: { true: "_19p5zvhc" } }, defaultVariants: {}, compoundVariants: [] });
676
- var input2 = "_19p5zvh5";
677
- var label = "_19p5zvh9";
678
- var requiredMark = "_19p5zvha";
679
- var root5 = /* @__PURE__ */ (0, import_createRuntimeFn9.createRuntimeFn)({ defaultClassName: "_19p5zvh0", variantClassNames: { size: { sm: "_19p5zvh1", md: "_19p5zvh2", lg: "_19p5zvh3" }, fullWidth: { true: "_19p5zvh4" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
1421
+ var import_react20 = require("react");
1422
+ var import_icons9 = require("@bestow-ui/icons");
680
1423
 
681
1424
  // src/components/Select/Select.css.ts
682
- var content3 = "_1kx81e83";
1425
+ var content5 = "_1kx81e83";
683
1426
  var icon4 = "_1kx81e82";
684
- var item3 = "_1kx81e85";
1427
+ var item4 = "_1kx81e85";
685
1428
  var itemIndicator = "_1kx81e86";
686
1429
  var trigger2 = "_1kx81e80";
687
1430
  var value = "_1kx81e81";
688
1431
  var viewport = "_1kx81e84";
689
1432
 
690
1433
  // src/components/Combobox/Combobox.css.ts
691
- var content4 = "c2pbq71";
1434
+ var content6 = "c2pbq71";
692
1435
  var empty = "c2pbq72";
693
- var toggle = "c2pbq70";
1436
+ var toggle2 = "c2pbq70";
694
1437
 
695
1438
  // src/components/Combobox/Combobox.tsx
696
- var import_jsx_runtime12 = require("react/jsx-runtime");
1439
+ var import_jsx_runtime19 = require("react/jsx-runtime");
697
1440
  var defaultFilter = (option2, query) => option2.label.toLowerCase().includes(query.trim().toLowerCase());
698
- var Combobox = /* @__PURE__ */ (0, import_react12.forwardRef)(function Combobox2(props, ref) {
1441
+ var Combobox = /* @__PURE__ */ (0, import_react20.forwardRef)(function Combobox2(props, ref) {
699
1442
  const {
700
1443
  options,
701
1444
  value: value4,
@@ -717,33 +1460,33 @@ var Combobox = /* @__PURE__ */ (0, import_react12.forwardRef)(function Combobox2
717
1460
  toggleLabel = "\uBAA9\uB85D \uC5F4\uAE30",
718
1461
  className
719
1462
  } = props;
720
- const generatedId = (0, import_react12.useId)();
1463
+ const generatedId = (0, import_react20.useId)();
721
1464
  const inputId = id ?? generatedId;
722
1465
  const labelId = `${inputId}-label`;
723
1466
  const listId = `${inputId}-listbox`;
724
1467
  const helperId = helperText3 ? `${inputId}-helper` : void 0;
725
1468
  const optionId = (index) => `${inputId}-option-${index}`;
726
1469
  const portal2 = usePortalProps();
727
- const inputRef = (0, import_react12.useRef)(null);
728
- const anchorRef = (0, import_react12.useRef)(null);
1470
+ const inputRef = (0, import_react20.useRef)(null);
1471
+ const anchorRef = (0, import_react20.useRef)(null);
729
1472
  const isControlled = "value" in props;
730
- const [innerValue, setInnerValue] = (0, import_react12.useState)(defaultValue);
1473
+ const [innerValue, setInnerValue] = (0, import_react20.useState)(defaultValue);
731
1474
  const selectedValue = isControlled ? value4 : innerValue;
732
1475
  const selectedOption = options.find((o) => o.value === selectedValue);
733
- const [open, setOpen] = (0, import_react12.useState)(false);
734
- const [query, setQuery] = (0, import_react12.useState)(null);
735
- const [activeIndex, setActiveIndex] = (0, import_react12.useState)(-1);
736
- const filtered = (0, import_react12.useMemo)(() => query ? options.filter((o) => filter(o, query)) : options, [options, filter, query]);
1476
+ const [open, setOpen] = (0, import_react20.useState)(false);
1477
+ const [query, setQuery] = (0, import_react20.useState)(null);
1478
+ const [activeIndex, setActiveIndex] = (0, import_react20.useState)(-1);
1479
+ const filtered = (0, import_react20.useMemo)(() => query ? options.filter((o) => filter(o, query)) : options, [options, filter, query]);
737
1480
  const inputText = query ?? selectedOption?.label ?? "";
738
- const firstEnabled = (list4, from = 0, step = 1) => {
739
- for (let i = from; i >= 0 && i < list4.length; i += step) if (!list4[i].disabled) return i;
1481
+ const firstEnabled = (list5, from = 0, step = 1) => {
1482
+ for (let i = from; i >= 0 && i < list5.length; i += step) if (!list5[i].disabled) return i;
740
1483
  return -1;
741
1484
  };
742
- const openList = (list4 = filtered, preferLast = false) => {
1485
+ const openList = (list5 = filtered, preferLast = false) => {
743
1486
  setOpen(true);
744
- const selectedIndex = list4.findIndex((o) => o.value === selectedValue);
1487
+ const selectedIndex = list5.findIndex((o) => o.value === selectedValue);
745
1488
  setActiveIndex(
746
- selectedIndex >= 0 && !list4[selectedIndex].disabled ? selectedIndex : preferLast ? firstEnabled(list4, list4.length - 1, -1) : firstEnabled(list4)
1489
+ selectedIndex >= 0 && !list5[selectedIndex].disabled ? selectedIndex : preferLast ? firstEnabled(list5, list5.length - 1, -1) : firstEnabled(list5)
747
1490
  );
748
1491
  };
749
1492
  const close2 = () => {
@@ -799,26 +1542,26 @@ var Combobox = /* @__PURE__ */ (0, import_react12.forwardRef)(function Combobox2
799
1542
  break;
800
1543
  }
801
1544
  };
802
- (0, import_react12.useEffect)(() => {
1545
+ (0, import_react20.useEffect)(() => {
803
1546
  if (!open || activeIndex < 0) return;
804
1547
  document.getElementById(optionId(activeIndex))?.scrollIntoView?.({ block: "nearest" });
805
1548
  }, [open, activeIndex]);
806
1549
  const hasOptions = filtered.length > 0;
807
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
808
- label6 && /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("label", { id: labelId, htmlFor: inputId, className: label, children: [
1550
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
1551
+ label6 && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("label", { id: labelId, htmlFor: inputId, className: label, children: [
809
1552
  label6,
810
- required && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: requiredMark, "aria-hidden": true, children: "*" })
1553
+ required && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: requiredMark, "aria-hidden": true, children: "*" })
811
1554
  ] }),
812
- /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(Popover.Root, { open: open && !disabled, onOpenChange: (next) => next ? openList() : close2(), children: [
813
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Popover.Anchor, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
1555
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(Popover.Root, { open: open && !disabled, onOpenChange: (next) => next ? openList() : close2(), children: [
1556
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Popover.Anchor, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
814
1557
  "div",
815
1558
  {
816
1559
  ref: anchorRef,
817
- className: cx(root5({ size, fullWidth }), className),
1560
+ className: cx(root3({ size, fullWidth }), className),
818
1561
  "data-invalid": error || void 0,
819
1562
  "data-disabled": disabled || void 0,
820
1563
  children: [
821
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1564
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
822
1565
  "input",
823
1566
  {
824
1567
  ref: mergeRefs(ref, inputRef),
@@ -842,10 +1585,10 @@ var Combobox = /* @__PURE__ */ (0, import_react12.forwardRef)(function Combobox2
842
1585
  onBlur: () => {
843
1586
  if (open) close2();
844
1587
  },
845
- className: input2
1588
+ className: input
846
1589
  }
847
1590
  ),
848
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1591
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
849
1592
  "button",
850
1593
  {
851
1594
  type: "button",
@@ -853,27 +1596,27 @@ var Combobox = /* @__PURE__ */ (0, import_react12.forwardRef)(function Combobox2
853
1596
  "aria-label": toggleLabel,
854
1597
  "aria-expanded": open,
855
1598
  disabled,
856
- className: toggle,
1599
+ className: toggle2,
857
1600
  onMouseDown: (event) => event.preventDefault(),
858
1601
  onClick: () => {
859
1602
  if (open) close2();
860
1603
  else openList(options);
861
1604
  inputRef.current?.focus();
862
1605
  },
863
- children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_icons7.ChevronDownIcon, { size: 16 })
1606
+ children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_icons9.ChevronDownIcon, { size: 16 })
864
1607
  }
865
1608
  )
866
1609
  ]
867
1610
  }
868
1611
  ) }),
869
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Popover.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1612
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Popover.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
870
1613
  Popover.Content,
871
1614
  {
872
1615
  role: "presentation",
873
1616
  align: "start",
874
1617
  sideOffset: 4,
875
1618
  collisionPadding: 8,
876
- className: cx(portal2.className, content4),
1619
+ className: cx(portal2.className, content6),
877
1620
  style: portal2.style,
878
1621
  onOpenAutoFocus: (event) => event.preventDefault(),
879
1622
  onCloseAutoFocus: (event) => event.preventDefault(),
@@ -881,7 +1624,7 @@ var Combobox = /* @__PURE__ */ (0, import_react12.forwardRef)(function Combobox2
881
1624
  onInteractOutside: (event) => {
882
1625
  if (anchorRef.current?.contains(event.target)) event.preventDefault();
883
1626
  },
884
- children: hasOptions ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1627
+ children: hasOptions ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
885
1628
  "div",
886
1629
  {
887
1630
  id: listId,
@@ -893,7 +1636,7 @@ var Combobox = /* @__PURE__ */ (0, import_react12.forwardRef)(function Combobox2
893
1636
  return (
894
1637
  // aria-activedescendant 패턴: 포커스·키보드는 입력창이 맡고 항목은 포커스를 받지 않는다 (WAI-ARIA combobox)
895
1638
  // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/interactive-supports-focus
896
- /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
1639
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
897
1640
  "div",
898
1641
  {
899
1642
  id: optionId(index),
@@ -903,13 +1646,13 @@ var Combobox = /* @__PURE__ */ (0, import_react12.forwardRef)(function Combobox2
903
1646
  "data-highlighted": index === activeIndex ? "" : void 0,
904
1647
  "data-state": isSelected ? "checked" : "unchecked",
905
1648
  "data-disabled": option2.disabled ? "" : void 0,
906
- className: item3,
1649
+ className: item4,
907
1650
  onMouseDown: (event) => event.preventDefault(),
908
1651
  onMouseMove: () => !option2.disabled && setActiveIndex(index),
909
1652
  onClick: () => select(option2),
910
1653
  children: [
911
1654
  option2.label,
912
- isSelected && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: itemIndicator, "aria-hidden": true, children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_icons7.CheckIcon, { size: 16 }) })
1655
+ isSelected && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: itemIndicator, "aria-hidden": true, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_icons9.CheckIcon, { size: 16 }) })
913
1656
  ]
914
1657
  },
915
1658
  option2.value
@@ -917,81 +1660,81 @@ var Combobox = /* @__PURE__ */ (0, import_react12.forwardRef)(function Combobox2
917
1660
  );
918
1661
  })
919
1662
  }
920
- ) : /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: empty, role: "status", children: emptyMessage })
1663
+ ) : /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: empty, role: "status", children: emptyMessage })
921
1664
  }
922
1665
  ) })
923
1666
  ] }),
924
- name && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("input", { type: "hidden", name, value: selectedValue ?? "" }),
925
- helperText3 && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("p", { id: helperId, className: helperText({ error }), children: helperText3 })
1667
+ name && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("input", { type: "hidden", name, value: selectedValue ?? "" }),
1668
+ helperText3 && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { id: helperId, className: helperText({ error }), children: helperText3 })
926
1669
  ] });
927
1670
  });
928
1671
 
929
1672
  // src/components/Divider/Divider.tsx
930
- var import_react13 = require("react");
1673
+ var import_react21 = require("react");
931
1674
 
932
1675
  // src/components/Divider/Divider.css.ts
933
- var import_createRuntimeFn10 = require("@vanilla-extract/recipes/createRuntimeFn");
934
- var divider = /* @__PURE__ */ (0, import_createRuntimeFn10.createRuntimeFn)({ defaultClassName: "_1t3gq8v0", variantClassNames: { orientation: { horizontal: "_1t3gq8v1", vertical: "_1t3gq8v2" } }, defaultVariants: { orientation: "horizontal" }, compoundVariants: [] });
1676
+ var import_createRuntimeFn11 = require("@vanilla-extract/recipes/createRuntimeFn");
1677
+ var divider = /* @__PURE__ */ (0, import_createRuntimeFn11.createRuntimeFn)({ defaultClassName: "_1t3gq8v0", variantClassNames: { orientation: { horizontal: "_1t3gq8v1", vertical: "_1t3gq8v2" } }, defaultVariants: { orientation: "horizontal" }, compoundVariants: [] });
935
1678
  var labeled = "_1t3gq8v3";
936
1679
  var line = "_1t3gq8v4";
937
1680
 
938
1681
  // src/components/Divider/Divider.tsx
939
- var import_jsx_runtime13 = require("react/jsx-runtime");
940
- var Divider = /* @__PURE__ */ (0, import_react13.forwardRef)(function Divider2({ orientation = "horizontal", decorative, className, children, ...rest }, ref) {
1682
+ var import_jsx_runtime20 = require("react/jsx-runtime");
1683
+ var Divider = /* @__PURE__ */ (0, import_react21.forwardRef)(function Divider2({ orientation = "horizontal", decorative, className, children, ...rest }, ref) {
941
1684
  if (children && orientation === "horizontal") {
942
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { ref, className: cx(labeled, className), ...rest, children: [
943
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: line, "aria-hidden": true }),
1685
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { ref, className: cx(labeled, className), ...rest, children: [
1686
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: line, "aria-hidden": true }),
944
1687
  children,
945
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: line, "aria-hidden": true })
1688
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: line, "aria-hidden": true })
946
1689
  ] });
947
1690
  }
948
1691
  const a11y = decorative ? { role: "none" } : { role: "separator", "aria-orientation": orientation === "vertical" ? "vertical" : void 0 };
949
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { ref, className: cx(divider({ orientation }), className), ...a11y, ...rest });
1692
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { ref, className: cx(divider({ orientation }), className), ...a11y, ...rest });
950
1693
  });
951
1694
 
952
1695
  // src/components/Drawer/Drawer.tsx
953
- var Dialog = __toESM(require("@radix-ui/react-dialog"), 1);
954
- var import_icons8 = require("@bestow-ui/icons");
1696
+ var Dialog2 = __toESM(require("@radix-ui/react-dialog"), 1);
1697
+ var import_icons10 = require("@bestow-ui/icons");
955
1698
 
956
1699
  // src/components/IconButton/IconButton.tsx
957
- var import_react14 = require("react");
1700
+ var import_react22 = require("react");
958
1701
 
959
1702
  // src/components/IconButton/IconButton.css.ts
960
- var import_createRuntimeFn11 = require("@vanilla-extract/recipes/createRuntimeFn");
961
- var iconButton = /* @__PURE__ */ (0, import_createRuntimeFn11.createRuntimeFn)({ defaultClassName: "ip9et20", variantClassNames: { size: { sm: "ip9et21", md: "ip9et22", lg: "ip9et23" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
1703
+ var import_createRuntimeFn12 = require("@vanilla-extract/recipes/createRuntimeFn");
1704
+ var iconButton = /* @__PURE__ */ (0, import_createRuntimeFn12.createRuntimeFn)({ defaultClassName: "ip9et20", variantClassNames: { size: { sm: "ip9et21", md: "ip9et22", lg: "ip9et23" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
962
1705
 
963
1706
  // src/components/IconButton/IconButton.tsx
964
- var import_jsx_runtime14 = require("react/jsx-runtime");
965
- var IconButton = /* @__PURE__ */ (0, import_react14.forwardRef)(function IconButton2({ variant = "ghost", color = "neutral", size, loading, className, children, ...rest }, ref) {
966
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1707
+ var import_jsx_runtime21 = require("react/jsx-runtime");
1708
+ var IconButton = /* @__PURE__ */ (0, import_react22.forwardRef)(function IconButton2({ variant = "ghost", color = "neutral", size, loading: loading2, className, children, ...rest }, ref) {
1709
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
967
1710
  Button,
968
1711
  {
969
1712
  ref,
970
1713
  variant,
971
1714
  color,
972
1715
  size,
973
- loading,
1716
+ loading: loading2,
974
1717
  className: cx(iconButton({ size }), className),
975
1718
  ...rest,
976
- children: !loading && children
1719
+ children: !loading2 && children
977
1720
  }
978
1721
  );
979
1722
  });
980
1723
 
981
1724
  // src/components/Drawer/Drawer.css.ts
982
- var import_createRuntimeFn12 = require("@vanilla-extract/recipes/createRuntimeFn");
983
- var body2 = "nmobyvy";
984
- var closeButton2 = "nmobyvx";
985
- var content5 = /* @__PURE__ */ (0, import_createRuntimeFn12.createRuntimeFn)({ defaultClassName: "nmobyv9", variantClassNames: { side: { right: "nmobyva", left: "nmobyvb", top: "nmobyvc", bottom: "nmobyvd" }, size: { sm: "nmobyve", md: "nmobyvf", lg: "nmobyvg" } }, defaultVariants: { side: "right", size: "md" }, compoundVariants: [[{ side: "right", size: "sm" }, "nmobyvh"], [{ side: "right", size: "md" }, "nmobyvi"], [{ side: "right", size: "lg" }, "nmobyvj"], [{ side: "left", size: "sm" }, "nmobyvk"], [{ side: "left", size: "md" }, "nmobyvl"], [{ side: "left", size: "lg" }, "nmobyvm"], [{ side: "top", size: "sm" }, "nmobyvn"], [{ side: "top", size: "md" }, "nmobyvo"], [{ side: "top", size: "lg" }, "nmobyvp"], [{ side: "bottom", size: "sm" }, "nmobyvq"], [{ side: "bottom", size: "md" }, "nmobyvr"], [{ side: "bottom", size: "lg" }, "nmobyvs"]] });
986
- var description2 = "nmobyvw";
987
- var footer2 = "nmobyvz";
988
- var header3 = "nmobyvt";
989
- var headings = "nmobyvu";
990
- var overlay = "nmobyv0";
991
- var title2 = "nmobyvv";
1725
+ var import_createRuntimeFn13 = require("@vanilla-extract/recipes/createRuntimeFn");
1726
+ var body3 = "nmobyvy";
1727
+ var closeButton3 = "nmobyvx";
1728
+ var content7 = /* @__PURE__ */ (0, import_createRuntimeFn13.createRuntimeFn)({ defaultClassName: "nmobyv9", variantClassNames: { side: { right: "nmobyva", left: "nmobyvb", top: "nmobyvc", bottom: "nmobyvd" }, size: { sm: "nmobyve", md: "nmobyvf", lg: "nmobyvg" } }, defaultVariants: { side: "right", size: "md" }, compoundVariants: [[{ side: "right", size: "sm" }, "nmobyvh"], [{ side: "right", size: "md" }, "nmobyvi"], [{ side: "right", size: "lg" }, "nmobyvj"], [{ side: "left", size: "sm" }, "nmobyvk"], [{ side: "left", size: "md" }, "nmobyvl"], [{ side: "left", size: "lg" }, "nmobyvm"], [{ side: "top", size: "sm" }, "nmobyvn"], [{ side: "top", size: "md" }, "nmobyvo"], [{ side: "top", size: "lg" }, "nmobyvp"], [{ side: "bottom", size: "sm" }, "nmobyvq"], [{ side: "bottom", size: "md" }, "nmobyvr"], [{ side: "bottom", size: "lg" }, "nmobyvs"]] });
1729
+ var description3 = "nmobyvw";
1730
+ var footer3 = "nmobyvz";
1731
+ var header4 = "nmobyvt";
1732
+ var headings2 = "nmobyvu";
1733
+ var overlay2 = "nmobyv0";
1734
+ var title3 = "nmobyvv";
992
1735
 
993
1736
  // src/components/Drawer/Drawer.tsx
994
- var import_jsx_runtime15 = require("react/jsx-runtime");
1737
+ var import_jsx_runtime22 = require("react/jsx-runtime");
995
1738
  function Drawer({
996
1739
  open,
997
1740
  defaultOpen,
@@ -1008,58 +1751,61 @@ function Drawer({
1008
1751
  className
1009
1752
  }) {
1010
1753
  const portal2 = usePortalProps();
1011
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(Dialog.Root, { open, defaultOpen, onOpenChange, children: [
1012
- trigger4 && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Dialog.Trigger, { asChild: true, children: trigger4 }),
1013
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(Dialog.Portal, { children: [
1014
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Dialog.Overlay, { className: cx(portal2.className, overlay), style: portal2.style }),
1015
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
1016
- Dialog.Content,
1754
+ const focus = useReturnFocus(Boolean(trigger4));
1755
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(Dialog2.Root, { open, defaultOpen, onOpenChange, children: [
1756
+ trigger4 && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Dialog2.Trigger, { asChild: true, children: trigger4 }),
1757
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(Dialog2.Portal, { children: [
1758
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Dialog2.Overlay, { className: cx(portal2.className, overlay2), style: portal2.style }),
1759
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
1760
+ Dialog2.Content,
1017
1761
  {
1018
- className: cx(portal2.className, content5({ side, size }), className),
1762
+ className: cx(portal2.className, content7({ side, size }), className),
1019
1763
  style: portal2.style,
1020
1764
  "data-side": side ?? "right",
1021
1765
  onPointerDownOutside: closeOnOverlayClick ? void 0 : (event) => event.preventDefault(),
1766
+ onOpenAutoFocus: focus.onOpenAutoFocus,
1767
+ onCloseAutoFocus: focus.onCloseAutoFocus,
1022
1768
  ...description6 ? {} : { "aria-describedby": void 0 },
1023
1769
  children: [
1024
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: header3, children: [
1025
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: headings, children: [
1026
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Dialog.Title, { className: title2, children: title6 }),
1027
- description6 && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Dialog.Description, { className: description2, children: description6 })
1770
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: header4, children: [
1771
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: headings2, children: [
1772
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Dialog2.Title, { className: title3, children: title6 }),
1773
+ description6 && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Dialog2.Description, { className: description3, children: description6 })
1028
1774
  ] }),
1029
- !hideCloseButton && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Dialog.Close, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(IconButton, { "aria-label": "\uB2EB\uAE30", size: "sm", className: closeButton2, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_icons8.XIcon, {}) }) })
1775
+ !hideCloseButton && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Dialog2.Close, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(IconButton, { "aria-label": "\uB2EB\uAE30", size: "sm", className: closeButton3, children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_icons10.XIcon, {}) }) })
1030
1776
  ] }),
1031
- children && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: body2, children }),
1032
- footer6 && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: footer2, children: footer6 })
1777
+ children && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: body3, children }),
1778
+ footer6 && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: footer3, children: footer6 })
1033
1779
  ]
1034
1780
  }
1035
1781
  )
1036
1782
  ] })
1037
1783
  ] });
1038
1784
  }
1039
- var DrawerClose = Dialog.Close;
1785
+ var DrawerClose = Dialog2.Close;
1040
1786
 
1041
1787
  // src/components/DropdownMenu/DropdownMenu.tsx
1042
1788
  var RadixMenu = __toESM(require("@radix-ui/react-dropdown-menu"), 1);
1043
- var import_react15 = require("react");
1789
+ var import_react23 = require("react");
1044
1790
 
1045
1791
  // src/components/DropdownMenu/DropdownMenu.css.ts
1046
- var content6 = "_1d7ahux0";
1792
+ var content8 = "_1d7ahux0";
1047
1793
  var danger = "_1d7ahux2";
1048
1794
  var icon5 = "_1d7ahux3";
1049
- var item4 = "_1d7ahux1";
1795
+ var item5 = "_1d7ahux1";
1050
1796
  var label2 = "_1d7ahux5";
1051
1797
  var separator2 = "_1d7ahux6";
1052
1798
  var shortcut = "_1d7ahux4";
1053
1799
 
1054
1800
  // src/components/DropdownMenu/DropdownMenu.tsx
1055
- var import_jsx_runtime16 = require("react/jsx-runtime");
1801
+ var import_jsx_runtime23 = require("react/jsx-runtime");
1056
1802
  var DropdownMenu = RadixMenu.Root;
1057
1803
  var DropdownMenuTrigger = RadixMenu.Trigger;
1058
1804
  var DropdownMenuGroup = RadixMenu.Group;
1059
- var DropdownMenuContent = /* @__PURE__ */ (0, import_react15.forwardRef)(
1805
+ var DropdownMenuContent = /* @__PURE__ */ (0, import_react23.forwardRef)(
1060
1806
  function DropdownMenuContent2({ className, style, side = "bottom", align = "start", sideOffset = 4, collisionPadding = 8, ...rest }, ref) {
1061
1807
  const portal2 = usePortalProps();
1062
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(RadixMenu.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1808
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(RadixMenu.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1063
1809
  RadixMenu.Content,
1064
1810
  {
1065
1811
  ref,
@@ -1067,154 +1813,36 @@ var DropdownMenuContent = /* @__PURE__ */ (0, import_react15.forwardRef)(
1067
1813
  align,
1068
1814
  sideOffset,
1069
1815
  collisionPadding,
1070
- className: cx(portal2.className, content6, className),
1816
+ className: cx(portal2.className, content8, className),
1071
1817
  style: { ...portal2.style, ...style },
1072
1818
  ...rest
1073
1819
  }
1074
1820
  ) });
1075
1821
  }
1076
1822
  );
1077
- var DropdownMenuItem = /* @__PURE__ */ (0, import_react15.forwardRef)(
1823
+ var DropdownMenuItem = /* @__PURE__ */ (0, import_react23.forwardRef)(
1078
1824
  function DropdownMenuItem2({ icon: icon6, shortcut: shortcut2, color = "default", className, children, ...rest }, ref) {
1079
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(RadixMenu.Item, { ref, className: cx(item4, color === "danger" && danger, className), ...rest, children: [
1080
- icon6 && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: icon5, "aria-hidden": true, children: icon6 }),
1825
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(RadixMenu.Item, { ref, className: cx(item5, color === "danger" && danger, className), ...rest, children: [
1826
+ icon6 && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: icon5, "aria-hidden": true, children: icon6 }),
1081
1827
  children,
1082
- shortcut2 && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: shortcut, "aria-hidden": true, children: shortcut2 })
1828
+ shortcut2 && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: shortcut, "aria-hidden": true, children: shortcut2 })
1083
1829
  ] });
1084
1830
  }
1085
1831
  );
1086
- var DropdownMenuLabel = /* @__PURE__ */ (0, import_react15.forwardRef)(
1832
+ var DropdownMenuLabel = /* @__PURE__ */ (0, import_react23.forwardRef)(
1087
1833
  function DropdownMenuLabel2({ className, ...rest }, ref) {
1088
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(RadixMenu.Label, { ref, className: cx(label2, className), ...rest });
1834
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(RadixMenu.Label, { ref, className: cx(label2, className), ...rest });
1089
1835
  }
1090
1836
  );
1091
- var DropdownMenuSeparator = /* @__PURE__ */ (0, import_react15.forwardRef)(
1837
+ var DropdownMenuSeparator = /* @__PURE__ */ (0, import_react23.forwardRef)(
1092
1838
  function DropdownMenuSeparator2({ className, ...rest }, ref) {
1093
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(RadixMenu.Separator, { ref, className: cx(separator2, className), ...rest });
1839
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(RadixMenu.Separator, { ref, className: cx(separator2, className), ...rest });
1094
1840
  }
1095
1841
  );
1096
1842
 
1097
- // src/components/Input/Input.tsx
1098
- var import_react16 = require("react");
1099
- var import_jsx_runtime17 = require("react/jsx-runtime");
1100
- var Input = /* @__PURE__ */ (0, import_react16.forwardRef)(function Input2({ size, invalid, fullWidth, startAdornment, endAdornment, rootClassName, className, disabled, ...rest }, ref) {
1101
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
1102
- "div",
1103
- {
1104
- className: cx(root5({ size, fullWidth }), rootClassName),
1105
- "data-invalid": invalid || void 0,
1106
- "data-disabled": disabled || void 0,
1107
- children: [
1108
- startAdornment && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: adornment, children: startAdornment }),
1109
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1110
- "input",
1111
- {
1112
- ref,
1113
- className: cx(input2, className),
1114
- disabled,
1115
- "aria-invalid": invalid || void 0,
1116
- ...rest
1117
- }
1118
- ),
1119
- endAdornment && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: adornment, children: endAdornment })
1120
- ]
1121
- }
1122
- );
1123
- });
1124
-
1125
- // src/components/Input/TextField.tsx
1126
- var import_react17 = require("react");
1127
- var import_jsx_runtime18 = require("react/jsx-runtime");
1128
- var TextField = /* @__PURE__ */ (0, import_react17.forwardRef)(function TextField2({ label: label6, helperText: helperText3, error, required, fullWidth, id, "aria-describedby": ariaDescribedBy, ...rest }, ref) {
1129
- const generatedId = (0, import_react17.useId)();
1130
- const inputId = id ?? generatedId;
1131
- const helperId = helperText3 ? `${inputId}-helper` : void 0;
1132
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
1133
- label6 && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("label", { htmlFor: inputId, className: label, children: [
1134
- label6,
1135
- required && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: requiredMark, "aria-hidden": true, children: "*" })
1136
- ] }),
1137
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1138
- Input,
1139
- {
1140
- ref,
1141
- id: inputId,
1142
- invalid: error,
1143
- required,
1144
- fullWidth,
1145
- "aria-describedby": cx(helperId, ariaDescribedBy) || void 0,
1146
- ...rest
1147
- }
1148
- ),
1149
- helperText3 && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { id: helperId, className: helperText({ error }), children: helperText3 })
1150
- ] });
1151
- });
1152
-
1153
- // src/components/Modal/Modal.tsx
1154
- var Dialog2 = __toESM(require("@radix-ui/react-dialog"), 1);
1155
- var import_icons9 = require("@bestow-ui/icons");
1156
-
1157
- // src/components/Modal/Modal.css.ts
1158
- var import_createRuntimeFn13 = require("@vanilla-extract/recipes/createRuntimeFn");
1159
- var body3 = "_1pdsmv0a";
1160
- var closeButton3 = "_1pdsmv09";
1161
- var content7 = /* @__PURE__ */ (0, import_createRuntimeFn13.createRuntimeFn)({ defaultClassName: "_1pdsmv01", variantClassNames: { size: { sm: "_1pdsmv02", md: "_1pdsmv03", lg: "_1pdsmv04" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
1162
- var description3 = "_1pdsmv08";
1163
- var footer3 = "_1pdsmv0b";
1164
- var header4 = "_1pdsmv05";
1165
- var headings2 = "_1pdsmv06";
1166
- var overlay2 = "_1pdsmv00";
1167
- var title3 = "_1pdsmv07";
1168
-
1169
- // src/components/Modal/Modal.tsx
1170
- var import_jsx_runtime19 = require("react/jsx-runtime");
1171
- function Modal({
1172
- open,
1173
- defaultOpen,
1174
- onOpenChange,
1175
- trigger: trigger4,
1176
- title: title6,
1177
- description: description6,
1178
- children,
1179
- footer: footer6,
1180
- size,
1181
- hideCloseButton = false,
1182
- closeOnOverlayClick = true,
1183
- className
1184
- }) {
1185
- const portal2 = usePortalProps();
1186
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(Dialog2.Root, { open, defaultOpen, onOpenChange, children: [
1187
- trigger4 && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Dialog2.Trigger, { asChild: true, children: trigger4 }),
1188
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(Dialog2.Portal, { children: [
1189
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Dialog2.Overlay, { className: cx(portal2.className, overlay2), style: portal2.style }),
1190
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
1191
- Dialog2.Content,
1192
- {
1193
- className: cx(portal2.className, content7({ size }), className),
1194
- style: portal2.style,
1195
- onPointerDownOutside: closeOnOverlayClick ? void 0 : (event) => event.preventDefault(),
1196
- ...description6 ? {} : { "aria-describedby": void 0 },
1197
- children: [
1198
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: header4, children: [
1199
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: headings2, children: [
1200
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Dialog2.Title, { className: title3, children: title6 }),
1201
- description6 && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Dialog2.Description, { className: description3, children: description6 })
1202
- ] }),
1203
- !hideCloseButton && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Dialog2.Close, { className: closeButton3, "aria-label": "\uB2EB\uAE30", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_icons9.XIcon, { size: 16 }) })
1204
- ] }),
1205
- children && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: body3, children }),
1206
- footer6 && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: footer3, children: footer6 })
1207
- ]
1208
- }
1209
- )
1210
- ] })
1211
- ] });
1212
- }
1213
- var ModalClose = Dialog2.Close;
1214
-
1215
1843
  // src/components/Pagination/Pagination.tsx
1216
- var import_icons10 = require("@bestow-ui/icons");
1217
- var import_react18 = require("react");
1844
+ var import_icons11 = require("@bestow-ui/icons");
1845
+ var import_react24 = require("react");
1218
1846
 
1219
1847
  // src/components/Pagination/getPaginationItems.ts
1220
1848
  var range = (start, end) => end < start ? [] : Array.from({ length: end - start + 1 }, (_, i) => start + i);
@@ -1243,13 +1871,13 @@ function getPaginationItems(page, totalPages, siblingCount = 1, boundaryCount =
1243
1871
  // src/components/Pagination/Pagination.css.ts
1244
1872
  var import_createRuntimeFn14 = require("@vanilla-extract/recipes/createRuntimeFn");
1245
1873
  var ellipsis = "_1iraoak4";
1246
- var item5 = /* @__PURE__ */ (0, import_createRuntimeFn14.createRuntimeFn)({ defaultClassName: "_1iraoak1", variantClassNames: { size: { sm: "_1iraoak2", md: "_1iraoak3" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
1247
- var list2 = "_1iraoak0";
1874
+ var item6 = /* @__PURE__ */ (0, import_createRuntimeFn14.createRuntimeFn)({ defaultClassName: "_1iraoak1", variantClassNames: { size: { sm: "_1iraoak2", md: "_1iraoak3" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
1875
+ var list3 = "_1iraoak0";
1248
1876
 
1249
1877
  // src/components/Pagination/Pagination.tsx
1250
- var import_jsx_runtime20 = require("react/jsx-runtime");
1878
+ var import_jsx_runtime24 = require("react/jsx-runtime");
1251
1879
  var defaultItemLabel = (type, page) => type === "previous" ? "\uC774\uC804 \uD398\uC774\uC9C0" : type === "next" ? "\uB2E4\uC74C \uD398\uC774\uC9C0" : `${page} \uD398\uC774\uC9C0`;
1252
- var Pagination = /* @__PURE__ */ (0, import_react18.forwardRef)(function Pagination2({
1880
+ var Pagination = /* @__PURE__ */ (0, import_react24.forwardRef)(function Pagination2({
1253
1881
  totalPages,
1254
1882
  page: pageProp,
1255
1883
  defaultPage = 1,
@@ -1262,7 +1890,7 @@ var Pagination = /* @__PURE__ */ (0, import_react18.forwardRef)(function Paginat
1262
1890
  "aria-label": ariaLabel = "\uD398\uC774\uC9C0 \uD0D0\uC0C9",
1263
1891
  ...rest
1264
1892
  }, ref) {
1265
- const [uncontrolledPage, setUncontrolledPage] = (0, import_react18.useState)(defaultPage);
1893
+ const [uncontrolledPage, setUncontrolledPage] = (0, import_react24.useState)(defaultPage);
1266
1894
  if (totalPages < 1) return null;
1267
1895
  const page = Math.min(Math.max(pageProp ?? uncontrolledPage, 1), totalPages);
1268
1896
  const goTo = (next) => {
@@ -1270,9 +1898,9 @@ var Pagination = /* @__PURE__ */ (0, import_react18.forwardRef)(function Paginat
1270
1898
  if (pageProp === void 0) setUncontrolledPage(next);
1271
1899
  onPageChange?.(next);
1272
1900
  };
1273
- const itemClass = item5({ size });
1274
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("nav", { ref, "aria-label": ariaLabel, className, ...rest, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("ul", { className: list2, children: [
1275
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1901
+ const itemClass = item6({ size });
1902
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("nav", { ref, "aria-label": ariaLabel, className, ...rest, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("ul", { className: list3, children: [
1903
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
1276
1904
  "button",
1277
1905
  {
1278
1906
  type: "button",
@@ -1280,23 +1908,23 @@ var Pagination = /* @__PURE__ */ (0, import_react18.forwardRef)(function Paginat
1280
1908
  "aria-label": getItemLabel("previous", page - 1),
1281
1909
  disabled: page <= 1,
1282
1910
  onClick: () => goTo(page - 1),
1283
- children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_icons10.ChevronLeftIcon, { size: 16 })
1911
+ children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_icons11.ChevronLeftIcon, { size: 16 })
1284
1912
  }
1285
1913
  ) }),
1286
1914
  getPaginationItems(page, totalPages, siblingCount, boundaryCount).map(
1287
- (item6) => typeof item6 === "number" ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1915
+ (item7) => typeof item7 === "number" ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
1288
1916
  "button",
1289
1917
  {
1290
1918
  type: "button",
1291
1919
  className: itemClass,
1292
- "aria-label": getItemLabel("page", item6),
1293
- "aria-current": item6 === page ? "page" : void 0,
1294
- onClick: () => goTo(item6),
1295
- children: item6
1920
+ "aria-label": getItemLabel("page", item7),
1921
+ "aria-current": item7 === page ? "page" : void 0,
1922
+ onClick: () => goTo(item7),
1923
+ children: item7
1296
1924
  }
1297
- ) }, item6) : /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("li", { "aria-hidden": true, className: cx(itemClass, ellipsis), children: "\u2026" }, item6)
1925
+ ) }, item7) : /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("li", { "aria-hidden": true, className: cx(itemClass, ellipsis), children: "\u2026" }, item7)
1298
1926
  ),
1299
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1927
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
1300
1928
  "button",
1301
1929
  {
1302
1930
  type: "button",
@@ -1304,28 +1932,79 @@ var Pagination = /* @__PURE__ */ (0, import_react18.forwardRef)(function Paginat
1304
1932
  "aria-label": getItemLabel("next", page + 1),
1305
1933
  disabled: page >= totalPages,
1306
1934
  onClick: () => goTo(page + 1),
1307
- children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_icons10.ChevronRightIcon, { size: 16 })
1935
+ children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_icons11.ChevronRightIcon, { size: 16 })
1308
1936
  }
1309
1937
  ) })
1310
1938
  ] }) });
1311
1939
  });
1312
1940
 
1941
+ // src/components/PhoneNumberInput/PhoneNumberInput.tsx
1942
+ var import_react25 = require("react");
1943
+ var import_jsx_runtime25 = require("react/jsx-runtime");
1944
+ var sanitize2 = (input5) => {
1945
+ const digits = input5.replace(/\D/g, "");
1946
+ return digits.slice(0, phoneNumberMaxDigits(digits));
1947
+ };
1948
+ var isDigit3 = (char) => /\d/.test(char);
1949
+ var PhoneNumberInput = /* @__PURE__ */ (0, import_react25.forwardRef)(
1950
+ function PhoneNumberInput2(props, ref) {
1951
+ const {
1952
+ value: value4,
1953
+ defaultValue,
1954
+ onValueChange,
1955
+ label: label6 = "\uD734\uB300\uD3F0 \uBC88\uD638",
1956
+ placeholder = "010-0000-0000",
1957
+ onKeyDown,
1958
+ ...rest
1959
+ } = props;
1960
+ const inputRef = (0, import_react25.useRef)(null);
1961
+ const field3 = useFormattedInput({
1962
+ isControlled: "value" in props,
1963
+ value: value4,
1964
+ defaultValue,
1965
+ onValueChange,
1966
+ sanitize: sanitize2,
1967
+ format: formatPhoneNumber,
1968
+ isMeaningful: isDigit3,
1969
+ inputRef
1970
+ });
1971
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
1972
+ TextField,
1973
+ {
1974
+ ref: mergeRefs(ref, inputRef),
1975
+ label: label6,
1976
+ placeholder,
1977
+ type: "tel",
1978
+ inputMode: "tel",
1979
+ autoComplete: "tel-national",
1980
+ value: field3.display,
1981
+ onChange: field3.onChange,
1982
+ onKeyDown: (event) => {
1983
+ field3.onKeyDown(event);
1984
+ onKeyDown?.(event);
1985
+ },
1986
+ ...rest
1987
+ }
1988
+ );
1989
+ }
1990
+ );
1991
+
1313
1992
  // src/components/Popover/Popover.tsx
1314
1993
  var RadixPopover = __toESM(require("@radix-ui/react-popover"), 1);
1315
- var import_icons11 = require("@bestow-ui/icons");
1316
- var import_react19 = require("react");
1994
+ var import_icons12 = require("@bestow-ui/icons");
1995
+ var import_react26 = require("react");
1317
1996
 
1318
1997
  // src/components/Popover/Popover.css.ts
1319
1998
  var arrow = "_1j99p8x4";
1320
1999
  var closeButton4 = "_1j99p8x3";
1321
- var content8 = "_1j99p8x0";
2000
+ var content9 = "_1j99p8x0";
1322
2001
  var header5 = "_1j99p8x1";
1323
2002
  var title4 = "_1j99p8x2";
1324
2003
 
1325
2004
  // src/components/Popover/Popover.tsx
1326
- var import_jsx_runtime21 = require("react/jsx-runtime");
2005
+ var import_jsx_runtime26 = require("react/jsx-runtime");
1327
2006
  function Popover2({
1328
- content: content11,
2007
+ content: content12,
1329
2008
  children,
1330
2009
  title: title6,
1331
2010
  "aria-label": ariaLabel,
@@ -1341,10 +2020,10 @@ function Popover2({
1341
2020
  style
1342
2021
  }) {
1343
2022
  const portal2 = usePortalProps();
1344
- const titleId = (0, import_react19.useId)();
1345
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(RadixPopover.Root, { open, defaultOpen, onOpenChange, modal, children: [
1346
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(RadixPopover.Trigger, { asChild: true, children }),
1347
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(RadixPopover.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
2023
+ const titleId = (0, import_react26.useId)();
2024
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(RadixPopover.Root, { open, defaultOpen, onOpenChange, modal, children: [
2025
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(RadixPopover.Trigger, { asChild: true, children }),
2026
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(RadixPopover.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
1348
2027
  RadixPopover.Content,
1349
2028
  {
1350
2029
  side,
@@ -1353,15 +2032,15 @@ function Popover2({
1353
2032
  collisionPadding: 8,
1354
2033
  "aria-labelledby": title6 ? titleId : void 0,
1355
2034
  "aria-label": title6 ? void 0 : ariaLabel,
1356
- className: cx(portal2.className, content8, className),
2035
+ className: cx(portal2.className, content9, className),
1357
2036
  style: { ...portal2.style, ...style },
1358
2037
  children: [
1359
- (title6 || showClose) && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: header5, children: [
1360
- title6 && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("h2", { id: titleId, className: title4, children: title6 }),
1361
- showClose && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(RadixPopover.Close, { className: closeButton4, "aria-label": "\uB2EB\uAE30", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_icons11.XIcon, { size: 16 }) })
2038
+ (title6 || showClose) && /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: header5, children: [
2039
+ title6 && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("h2", { id: titleId, className: title4, children: title6 }),
2040
+ showClose && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(RadixPopover.Close, { className: closeButton4, "aria-label": "\uB2EB\uAE30", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_icons12.XIcon, { size: 16 }) })
1362
2041
  ] }),
1363
- content11,
1364
- showArrow && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(RadixPopover.Arrow, { className: arrow, width: 12, height: 6 })
2042
+ content12,
2043
+ showArrow && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(RadixPopover.Arrow, { className: arrow, width: 12, height: 6 })
1365
2044
  ]
1366
2045
  }
1367
2046
  ) })
@@ -1370,7 +2049,7 @@ function Popover2({
1370
2049
  var PopoverClose = RadixPopover.Close;
1371
2050
 
1372
2051
  // src/components/Progress/Progress.tsx
1373
- var import_react20 = require("react");
2052
+ var import_react27 = require("react");
1374
2053
 
1375
2054
  // src/components/Progress/Progress.css.ts
1376
2055
  var import_createRuntimeFn15 = require("@vanilla-extract/recipes/createRuntimeFn");
@@ -1382,9 +2061,9 @@ var track = /* @__PURE__ */ (0, import_createRuntimeFn15.createRuntimeFn)({ defa
1382
2061
  var value2 = "_1tvkq003";
1383
2062
 
1384
2063
  // src/components/Progress/Progress.tsx
1385
- var import_jsx_runtime22 = require("react/jsx-runtime");
2064
+ var import_jsx_runtime27 = require("react/jsx-runtime");
1386
2065
  var defaultFormat = (value4, max) => `${Math.round(value4 / max * 100)}%`;
1387
- var Progress = /* @__PURE__ */ (0, import_react20.forwardRef)(function Progress2({
2066
+ var Progress = /* @__PURE__ */ (0, import_react27.forwardRef)(function Progress2({
1388
2067
  value: value4,
1389
2068
  max = 100,
1390
2069
  label: label6,
@@ -1396,17 +2075,17 @@ var Progress = /* @__PURE__ */ (0, import_react20.forwardRef)(function Progress2
1396
2075
  className,
1397
2076
  ...rest
1398
2077
  }, ref) {
1399
- const labelId = (0, import_react20.useId)();
2078
+ const labelId = (0, import_react27.useId)();
1400
2079
  const isIndeterminate = value4 === void 0 || value4 === null;
1401
2080
  const safeMax = max > 0 ? max : 100;
1402
2081
  const clamped = isIndeterminate ? 0 : Math.min(safeMax, Math.max(0, value4));
1403
2082
  const valueText = isIndeterminate ? void 0 : formatValue(clamped, safeMax);
1404
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { ref, className: cx(root6, className), ...rest, children: [
1405
- (label6 || showValue && valueText) && /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: header6, children: [
1406
- label6 && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { id: labelId, className: label3, children: label6 }),
1407
- showValue && valueText && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: value2, "aria-hidden": true, children: valueText })
2083
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { ref, className: cx(root6, className), ...rest, children: [
2084
+ (label6 || showValue && valueText) && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: header6, children: [
2085
+ label6 && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { id: labelId, className: label3, children: label6 }),
2086
+ showValue && valueText && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: value2, "aria-hidden": true, children: valueText })
1408
2087
  ] }),
1409
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2088
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
1410
2089
  "div",
1411
2090
  {
1412
2091
  role: "progressbar",
@@ -1417,7 +2096,7 @@ var Progress = /* @__PURE__ */ (0, import_react20.forwardRef)(function Progress2
1417
2096
  "aria-valuenow": isIndeterminate ? void 0 : clamped,
1418
2097
  "aria-valuetext": valueText,
1419
2098
  className: track({ size }),
1420
- children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2099
+ children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
1421
2100
  "div",
1422
2101
  {
1423
2102
  className: indicator({ color }),
@@ -1432,7 +2111,7 @@ var Progress = /* @__PURE__ */ (0, import_react20.forwardRef)(function Progress2
1432
2111
 
1433
2112
  // src/components/RadioGroup/RadioGroup.tsx
1434
2113
  var RadixRadioGroup = __toESM(require("@radix-ui/react-radio-group"), 1);
1435
- var import_react21 = require("react");
2114
+ var import_react28 = require("react");
1436
2115
 
1437
2116
  // src/components/RadioGroup/RadioGroup.css.ts
1438
2117
  var import_createRuntimeFn16 = require("@vanilla-extract/recipes/createRuntimeFn");
@@ -1446,8 +2125,8 @@ var radio = /* @__PURE__ */ (0, import_createRuntimeFn16.createRuntimeFn)({ defa
1446
2125
  var text = "_1w9iwjmb";
1447
2126
 
1448
2127
  // src/components/RadioGroup/RadioGroup.tsx
1449
- var import_jsx_runtime23 = require("react/jsx-runtime");
1450
- var RadioGroup = /* @__PURE__ */ (0, import_react21.forwardRef)(function RadioGroup2(props, ref) {
2128
+ var import_jsx_runtime28 = require("react/jsx-runtime");
2129
+ var RadioGroup = /* @__PURE__ */ (0, import_react28.forwardRef)(function RadioGroup2(props, ref) {
1451
2130
  const {
1452
2131
  options,
1453
2132
  value: value4,
@@ -1466,16 +2145,16 @@ var RadioGroup = /* @__PURE__ */ (0, import_react21.forwardRef)(function RadioGr
1466
2145
  className
1467
2146
  } = props;
1468
2147
  const isControlled = "value" in props;
1469
- const generatedId = (0, import_react21.useId)();
2148
+ const generatedId = (0, import_react28.useId)();
1470
2149
  const baseId = id ?? generatedId;
1471
2150
  const labelId = label6 ? `${baseId}-label` : void 0;
1472
2151
  const helperId = helperText3 ? `${baseId}-helper` : void 0;
1473
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: cx(field, className), children: [
1474
- label6 && /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("span", { id: labelId, className: cx(label, groupLabel), children: [
2152
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: cx(field, className), children: [
2153
+ label6 && /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("span", { id: labelId, className: cx(label, groupLabel), children: [
1475
2154
  label6,
1476
- required && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: requiredMark, "aria-hidden": true, children: "*" })
2155
+ required && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: requiredMark, "aria-hidden": true, children: "*" })
1477
2156
  ] }),
1478
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
2157
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
1479
2158
  RadixRadioGroup.Root,
1480
2159
  {
1481
2160
  ref,
@@ -1496,8 +2175,8 @@ var RadioGroup = /* @__PURE__ */ (0, import_react21.forwardRef)(function RadioGr
1496
2175
  const itemId = `${baseId}-${option2.value}`;
1497
2176
  const descriptionId = option2.description ? `${itemId}-description` : void 0;
1498
2177
  const itemDisabled = disabled || option2.disabled;
1499
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: option({ size }), "data-disabled": itemDisabled || void 0, children: [
1500
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
2178
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: option({ size }), "data-disabled": itemDisabled || void 0, children: [
2179
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
1501
2180
  RadixRadioGroup.Item,
1502
2181
  {
1503
2182
  id: itemId,
@@ -1505,27 +2184,27 @@ var RadioGroup = /* @__PURE__ */ (0, import_react21.forwardRef)(function RadioGr
1505
2184
  disabled: option2.disabled,
1506
2185
  "aria-describedby": descriptionId,
1507
2186
  className: radio({ size }),
1508
- children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(RadixRadioGroup.Indicator, { className: indicator2 })
2187
+ children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(RadixRadioGroup.Indicator, { className: indicator2 })
1509
2188
  }
1510
2189
  ),
1511
- /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("span", { className: text, children: [
1512
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("label", { htmlFor: itemId, className: labelText, children: option2.label }),
1513
- option2.description && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { id: descriptionId, className: description4, children: option2.description })
2190
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("span", { className: text, children: [
2191
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("label", { htmlFor: itemId, className: labelText, children: option2.label }),
2192
+ option2.description && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { id: descriptionId, className: description4, children: option2.description })
1514
2193
  ] })
1515
2194
  ] }, option2.value);
1516
2195
  })
1517
2196
  }
1518
2197
  ),
1519
- helperText3 && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("p", { id: helperId, className: helperText({ error }), children: helperText3 })
2198
+ helperText3 && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("p", { id: helperId, className: helperText({ error }), children: helperText3 })
1520
2199
  ] });
1521
2200
  });
1522
2201
 
1523
2202
  // src/components/Select/Select.tsx
1524
2203
  var RadixSelect = __toESM(require("@radix-ui/react-select"), 1);
1525
- var import_react22 = require("react");
1526
- var import_icons12 = require("@bestow-ui/icons");
1527
- var import_jsx_runtime24 = require("react/jsx-runtime");
1528
- var Select = /* @__PURE__ */ (0, import_react22.forwardRef)(function Select2(props, ref) {
2204
+ var import_react29 = require("react");
2205
+ var import_icons13 = require("@bestow-ui/icons");
2206
+ var import_jsx_runtime29 = require("react/jsx-runtime");
2207
+ var Select = /* @__PURE__ */ (0, import_react29.forwardRef)(function Select2(props, ref) {
1529
2208
  const {
1530
2209
  options,
1531
2210
  value: value4,
@@ -1545,16 +2224,16 @@ var Select = /* @__PURE__ */ (0, import_react22.forwardRef)(function Select2(pro
1545
2224
  className
1546
2225
  } = props;
1547
2226
  const isControlled = "value" in props;
1548
- const generatedId = (0, import_react22.useId)();
2227
+ const generatedId = (0, import_react29.useId)();
1549
2228
  const triggerId = id ?? generatedId;
1550
2229
  const helperId = helperText3 ? `${triggerId}-helper` : void 0;
1551
2230
  const portal2 = usePortalProps();
1552
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
1553
- label6 && /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("label", { htmlFor: triggerId, className: label, children: [
2231
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
2232
+ label6 && /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("label", { htmlFor: triggerId, className: label, children: [
1554
2233
  label6,
1555
- required && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: requiredMark, "aria-hidden": true, children: "*" })
2234
+ required && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: requiredMark, "aria-hidden": true, children: "*" })
1556
2235
  ] }),
1557
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
2236
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
1558
2237
  RadixSelect.Root,
1559
2238
  {
1560
2239
  value: isControlled ? value4 ?? "" : void 0,
@@ -1564,7 +2243,7 @@ var Select = /* @__PURE__ */ (0, import_react22.forwardRef)(function Select2(pro
1564
2243
  required,
1565
2244
  name,
1566
2245
  children: [
1567
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
2246
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
1568
2247
  RadixSelect.Trigger,
1569
2248
  {
1570
2249
  ref,
@@ -1573,30 +2252,30 @@ var Select = /* @__PURE__ */ (0, import_react22.forwardRef)(function Select2(pro
1573
2252
  "aria-invalid": error || void 0,
1574
2253
  "aria-describedby": helperId,
1575
2254
  "data-invalid": error || void 0,
1576
- className: cx(root5({ size, fullWidth }), trigger2, className),
2255
+ className: cx(root3({ size, fullWidth }), trigger2, className),
1577
2256
  children: [
1578
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: value, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(RadixSelect.Value, { placeholder }) }),
1579
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(RadixSelect.Icon, { className: icon4, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_icons12.ChevronDownIcon, { size: 16 }) })
2257
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: value, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(RadixSelect.Value, { placeholder }) }),
2258
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(RadixSelect.Icon, { className: icon4, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_icons13.ChevronDownIcon, { size: 16 }) })
1580
2259
  ]
1581
2260
  }
1582
2261
  ),
1583
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(RadixSelect.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
2262
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(RadixSelect.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
1584
2263
  RadixSelect.Content,
1585
2264
  {
1586
2265
  position: "popper",
1587
2266
  sideOffset: 4,
1588
2267
  collisionPadding: 8,
1589
- className: cx(portal2.className, content3),
2268
+ className: cx(portal2.className, content5),
1590
2269
  style: portal2.style,
1591
- children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(RadixSelect.Viewport, { className: viewport, children: options.map((option2) => /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
2270
+ children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(RadixSelect.Viewport, { className: viewport, children: options.map((option2) => /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
1592
2271
  RadixSelect.Item,
1593
2272
  {
1594
2273
  value: option2.value,
1595
2274
  disabled: option2.disabled,
1596
- className: item3,
2275
+ className: item4,
1597
2276
  children: [
1598
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(RadixSelect.ItemText, { children: option2.label }),
1599
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(RadixSelect.ItemIndicator, { className: itemIndicator, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_icons12.CheckIcon, { size: 16 }) })
2277
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(RadixSelect.ItemText, { children: option2.label }),
2278
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(RadixSelect.ItemIndicator, { className: itemIndicator, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_icons13.CheckIcon, { size: 16 }) })
1600
2279
  ]
1601
2280
  },
1602
2281
  option2.value
@@ -1606,13 +2285,13 @@ var Select = /* @__PURE__ */ (0, import_react22.forwardRef)(function Select2(pro
1606
2285
  ]
1607
2286
  }
1608
2287
  ),
1609
- helperText3 && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("p", { id: helperId, className: helperText({ error }), children: helperText3 })
2288
+ helperText3 && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("p", { id: helperId, className: helperText({ error }), children: helperText3 })
1610
2289
  ] });
1611
2290
  });
1612
2291
 
1613
2292
  // src/components/Skeleton/Skeleton.tsx
1614
2293
  var import_dynamic2 = require("@vanilla-extract/dynamic");
1615
- var import_react23 = require("react");
2294
+ var import_react30 = require("react");
1616
2295
 
1617
2296
  // src/components/Skeleton/Skeleton.css.ts
1618
2297
  var import_createRuntimeFn17 = require("@vanilla-extract/recipes/createRuntimeFn");
@@ -1622,13 +2301,13 @@ var skeleton = /* @__PURE__ */ (0, import_createRuntimeFn17.createRuntimeFn)({ d
1622
2301
  var width = "var(--_1s8datd0)";
1623
2302
 
1624
2303
  // src/components/Skeleton/Skeleton.tsx
1625
- var import_jsx_runtime25 = require("react/jsx-runtime");
2304
+ var import_jsx_runtime30 = require("react/jsx-runtime");
1626
2305
  var toCss = (value4) => typeof value4 === "number" ? `${value4}px` : value4;
1627
- var Skeleton = /* @__PURE__ */ (0, import_react23.forwardRef)(function Skeleton2({ variant = "text", width: width2, height: height2, lines: lines2 = 1, className, style, ...rest }, ref) {
2306
+ var Skeleton = /* @__PURE__ */ (0, import_react30.forwardRef)(function Skeleton2({ variant = "text", width: width2, height: height2, lines: lines2 = 1, className, style, ...rest }, ref) {
1628
2307
  const w = toCss(width2 ?? (variant === "circle" ? 40 : "100%"));
1629
2308
  const h = toCss(height2 ?? (variant === "circle" ? w : variant === "rect" ? 100 : "1em"));
1630
2309
  if (variant === "text" && lines2 > 1) {
1631
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2310
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
1632
2311
  "span",
1633
2312
  {
1634
2313
  ref,
@@ -1636,7 +2315,7 @@ var Skeleton = /* @__PURE__ */ (0, import_react23.forwardRef)(function Skeleton2
1636
2315
  className: cx(lines, className),
1637
2316
  style: { ...(0, import_dynamic2.assignInlineVars)({ [width]: w }), ...style },
1638
2317
  ...rest,
1639
- children: Array.from({ length: lines2 }, (_, i) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2318
+ children: Array.from({ length: lines2 }, (_, i) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
1640
2319
  "span",
1641
2320
  {
1642
2321
  className: skeleton({ variant }),
@@ -1647,7 +2326,7 @@ var Skeleton = /* @__PURE__ */ (0, import_react23.forwardRef)(function Skeleton2
1647
2326
  }
1648
2327
  );
1649
2328
  }
1650
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2329
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
1651
2330
  "span",
1652
2331
  {
1653
2332
  ref,
@@ -1661,7 +2340,7 @@ var Skeleton = /* @__PURE__ */ (0, import_react23.forwardRef)(function Skeleton2
1661
2340
 
1662
2341
  // src/components/Slider/Slider.tsx
1663
2342
  var RadixSlider = __toESM(require("@radix-ui/react-slider"), 1);
1664
- var import_react24 = require("react");
2343
+ var import_react31 = require("react");
1665
2344
 
1666
2345
  // src/components/Slider/Slider.css.ts
1667
2346
  var import_createRuntimeFn18 = require("@vanilla-extract/recipes/createRuntimeFn");
@@ -1676,8 +2355,8 @@ var track2 = /* @__PURE__ */ (0, import_createRuntimeFn18.createRuntimeFn)({ def
1676
2355
  var value3 = "_126mzjm3";
1677
2356
 
1678
2357
  // src/components/Slider/Slider.tsx
1679
- var import_jsx_runtime26 = require("react/jsx-runtime");
1680
- var Slider = /* @__PURE__ */ (0, import_react24.forwardRef)(function Slider2(props, ref) {
2358
+ var import_jsx_runtime31 = require("react/jsx-runtime");
2359
+ var Slider = /* @__PURE__ */ (0, import_react31.forwardRef)(function Slider2(props, ref) {
1681
2360
  const {
1682
2361
  value: value4,
1683
2362
  defaultValue,
@@ -1696,12 +2375,12 @@ var Slider = /* @__PURE__ */ (0, import_react24.forwardRef)(function Slider2(pro
1696
2375
  disabled,
1697
2376
  ...rest
1698
2377
  } = props;
1699
- const generatedId = (0, import_react24.useId)();
2378
+ const generatedId = (0, import_react31.useId)();
1700
2379
  const baseId = id ?? generatedId;
1701
2380
  const labelId = `${baseId}-label`;
1702
2381
  const helperId = `${baseId}-helper`;
1703
2382
  const isControlled = "value" in props;
1704
- const [innerValue, setInnerValue] = (0, import_react24.useState)(defaultValue ?? [min]);
2383
+ const [innerValue, setInnerValue] = (0, import_react31.useState)(defaultValue ?? [min]);
1705
2384
  const current2 = isControlled ? value4 ?? [min] : innerValue;
1706
2385
  const isRange = current2.length > 1;
1707
2386
  const handleChange = (next) => {
@@ -1709,12 +2388,12 @@ var Slider = /* @__PURE__ */ (0, import_react24.forwardRef)(function Slider2(pro
1709
2388
  onValueChange?.(next);
1710
2389
  };
1711
2390
  const valueText = current2.map(formatValue).join(" \u2013 ");
1712
- return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: cx(field2, className), children: [
1713
- (label6 || showValue) && /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: header7, children: [
1714
- label6 && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { id: labelId, className: label4, children: label6 }),
1715
- showValue && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: value3, "aria-hidden": true, children: valueText })
2391
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: cx(field2, className), children: [
2392
+ (label6 || showValue) && /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: header7, children: [
2393
+ label6 && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { id: labelId, className: label4, children: label6 }),
2394
+ showValue && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { className: value3, "aria-hidden": true, children: valueText })
1716
2395
  ] }),
1717
- /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
2396
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
1718
2397
  RadixSlider.Root,
1719
2398
  {
1720
2399
  ref,
@@ -1727,10 +2406,10 @@ var Slider = /* @__PURE__ */ (0, import_react24.forwardRef)(function Slider2(pro
1727
2406
  className: root7({ size }),
1728
2407
  ...rest,
1729
2408
  children: [
1730
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(RadixSlider.Track, { className: track2({ size }), children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(RadixSlider.Range, { className: range2 }) }),
2409
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(RadixSlider.Track, { className: track2({ size }), children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(RadixSlider.Range, { className: range2 }) }),
1731
2410
  current2.map((thumbValue, index) => {
1732
2411
  const thumbLabelId = `${baseId}-thumb-${index}`;
1733
- return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2412
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
1734
2413
  RadixSlider.Thumb,
1735
2414
  {
1736
2415
  className: thumb({ size }),
@@ -1745,30 +2424,30 @@ var Slider = /* @__PURE__ */ (0, import_react24.forwardRef)(function Slider2(pro
1745
2424
  ]
1746
2425
  }
1747
2426
  ),
1748
- isRange && current2.map((_, index) => /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("span", { id: `${baseId}-thumb-${index}`, hidden: true, children: [
2427
+ isRange && current2.map((_, index) => /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("span", { id: `${baseId}-thumb-${index}`, hidden: true, children: [
1749
2428
  label6 ? "" : ariaLabel ? `${ariaLabel} ` : "",
1750
2429
  thumbLabels[index] ?? `${index + 1}`
1751
2430
  ] }, index)),
1752
- helperText3 && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { id: helperId, className: helperText2, children: helperText3 })
2431
+ helperText3 && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { id: helperId, className: helperText2, children: helperText3 })
1753
2432
  ] });
1754
2433
  });
1755
2434
 
1756
2435
  // src/components/Stack/Stack.tsx
1757
- var import_react25 = require("react");
2436
+ var import_react32 = require("react");
1758
2437
 
1759
2438
  // src/components/Stack/Stack.css.ts
1760
2439
  var import_createRuntimeFn19 = require("@vanilla-extract/recipes/createRuntimeFn");
1761
2440
  var stack = /* @__PURE__ */ (0, import_createRuntimeFn19.createRuntimeFn)({ defaultClassName: "_1jz9hj90", variantClassNames: { direction: { row: "_1jz9hj91", column: "_1jz9hj92", "row-reverse": "_1jz9hj93", "column-reverse": "_1jz9hj94" }, gap: { "0": "_1jz9hj95", "1": "_1jz9hj96", "2": "_1jz9hj97", "3": "_1jz9hj98", "4": "_1jz9hj99", "5": "_1jz9hj9a", "6": "_1jz9hj9b", "8": "_1jz9hj9c", "10": "_1jz9hj9d", "12": "_1jz9hj9e", "16": "_1jz9hj9f" }, align: { start: "_1jz9hj9g", center: "_1jz9hj9h", end: "_1jz9hj9i", stretch: "_1jz9hj9j", baseline: "_1jz9hj9k" }, justify: { start: "_1jz9hj9l", center: "_1jz9hj9m", end: "_1jz9hj9n", between: "_1jz9hj9o", around: "_1jz9hj9p", evenly: "_1jz9hj9q" }, wrap: { true: "_1jz9hj9r" } }, defaultVariants: { direction: "column" }, compoundVariants: [] });
1762
2441
 
1763
2442
  // src/components/Stack/Stack.tsx
1764
- var import_jsx_runtime27 = require("react/jsx-runtime");
1765
- var Stack = /* @__PURE__ */ (0, import_react25.forwardRef)(function Stack2({ as: Component = "div", direction, gap, align, justify, wrap, className, ...rest }, ref) {
1766
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Component, { ref, className: cx(stack({ direction, gap, align, justify, wrap }), className), ...rest });
2443
+ var import_jsx_runtime32 = require("react/jsx-runtime");
2444
+ var Stack = /* @__PURE__ */ (0, import_react32.forwardRef)(function Stack2({ as: Component = "div", direction, gap, align, justify, wrap, className, ...rest }, ref) {
2445
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Component, { ref, className: cx(stack({ direction, gap, align, justify, wrap }), className), ...rest });
1767
2446
  });
1768
2447
 
1769
2448
  // src/components/Switch/Switch.tsx
1770
2449
  var RadixSwitch = __toESM(require("@radix-ui/react-switch"), 1);
1771
- var import_react26 = require("react");
2450
+ var import_react33 = require("react");
1772
2451
 
1773
2452
  // src/components/Switch/Switch.css.ts
1774
2453
  var import_createRuntimeFn20 = require("@vanilla-extract/recipes/createRuntimeFn");
@@ -1778,12 +2457,12 @@ var thumb2 = /* @__PURE__ */ (0, import_createRuntimeFn20.createRuntimeFn)({ def
1778
2457
  var track3 = /* @__PURE__ */ (0, import_createRuntimeFn20.createRuntimeFn)({ defaultClassName: "o33ul23", variantClassNames: { size: { sm: "o33ul24", md: "o33ul25" } }, defaultVariants: { size: "md" }, compoundVariants: [] });
1779
2458
 
1780
2459
  // src/components/Switch/Switch.tsx
1781
- var import_jsx_runtime28 = require("react/jsx-runtime");
1782
- var Switch = /* @__PURE__ */ (0, import_react26.forwardRef)(function Switch2({ label: label6, size, id, className, disabled, "aria-label": ariaLabel, ...rest }, ref) {
1783
- const generatedId = (0, import_react26.useId)();
2460
+ var import_jsx_runtime33 = require("react/jsx-runtime");
2461
+ var Switch = /* @__PURE__ */ (0, import_react33.forwardRef)(function Switch2({ label: label6, size, id, className, disabled, "aria-label": ariaLabel, ...rest }, ref) {
2462
+ const generatedId = (0, import_react33.useId)();
1784
2463
  const switchId = id ?? generatedId;
1785
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("span", { className: cx(root8({ size }), className), "data-disabled": disabled || void 0, children: [
1786
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2464
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("span", { className: cx(root8({ size }), className), "data-disabled": disabled || void 0, children: [
2465
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
1787
2466
  RadixSwitch.Root,
1788
2467
  {
1789
2468
  ref,
@@ -1792,16 +2471,16 @@ var Switch = /* @__PURE__ */ (0, import_react26.forwardRef)(function Switch2({ l
1792
2471
  "aria-label": ariaLabel,
1793
2472
  className: track3({ size }),
1794
2473
  ...rest,
1795
- children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(RadixSwitch.Thumb, { className: thumb2({ size }) })
2474
+ children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(RadixSwitch.Thumb, { className: thumb2({ size }) })
1796
2475
  }
1797
2476
  ),
1798
- label6 && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("label", { htmlFor: switchId, className: label5, children: label6 })
2477
+ label6 && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("label", { htmlFor: switchId, className: label5, children: label6 })
1799
2478
  ] });
1800
2479
  });
1801
2480
 
1802
2481
  // src/components/Table/Table.tsx
1803
- var import_react27 = require("react");
1804
- var import_icons13 = require("@bestow-ui/icons");
2482
+ var import_react34 = require("react");
2483
+ var import_icons14 = require("@bestow-ui/icons");
1805
2484
 
1806
2485
  // src/components/Table/Table.css.ts
1807
2486
  var import_createRuntimeFn21 = require("@vanilla-extract/recipes/createRuntimeFn");
@@ -1813,7 +2492,7 @@ var footer4 = "l3ploy7";
1813
2492
  var footerCell = "l3ployg";
1814
2493
  var head = "l3ployf";
1815
2494
  var header8 = "l3ploy3";
1816
- var row = "l3ploy8";
2495
+ var row3 = "l3ploy8";
1817
2496
  var sortButton = "l3ployh";
1818
2497
  var sortIcon = "l3ployi";
1819
2498
  var stickyHeader = "l3ploy4";
@@ -1821,10 +2500,10 @@ var striped = "l3ploy6";
1821
2500
  var table = "l3ploy1";
1822
2501
 
1823
2502
  // src/components/Table/Table.tsx
1824
- var import_jsx_runtime29 = require("react/jsx-runtime");
1825
- var TableSizeContext = /* @__PURE__ */ (0, import_react27.createContext)("md");
1826
- var TableSectionContext = /* @__PURE__ */ (0, import_react27.createContext)("body");
1827
- var Table = /* @__PURE__ */ (0, import_react27.forwardRef)(function Table2({
2503
+ var import_jsx_runtime34 = require("react/jsx-runtime");
2504
+ var TableSizeContext = /* @__PURE__ */ (0, import_react34.createContext)("md");
2505
+ var TableSectionContext = /* @__PURE__ */ (0, import_react34.createContext)("body");
2506
+ var Table = /* @__PURE__ */ (0, import_react34.forwardRef)(function Table2({
1828
2507
  size = "md",
1829
2508
  striped: striped2,
1830
2509
  stickyHeader: stickyHeader2,
@@ -1836,8 +2515,8 @@ var Table = /* @__PURE__ */ (0, import_react27.forwardRef)(function Table2({
1836
2515
  children,
1837
2516
  ...rest
1838
2517
  }, ref) {
1839
- const captionId = (0, import_react27.useId)();
1840
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(TableSizeContext.Provider, { value: size, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2518
+ const captionId = (0, import_react34.useId)();
2519
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(TableSizeContext.Provider, { value: size, children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
1841
2520
  "div",
1842
2521
  {
1843
2522
  className: cx(container, containerClassName),
@@ -1846,7 +2525,7 @@ var Table = /* @__PURE__ */ (0, import_react27.forwardRef)(function Table2({
1846
2525
  role: "region",
1847
2526
  "aria-labelledby": caption2 ? captionId : void 0,
1848
2527
  "aria-label": caption2 ? void 0 : ariaLabel,
1849
- children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
2528
+ children: /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(
1850
2529
  "table",
1851
2530
  {
1852
2531
  ref,
@@ -1854,7 +2533,7 @@ var Table = /* @__PURE__ */ (0, import_react27.forwardRef)(function Table2({
1854
2533
  "aria-label": caption2 ? void 0 : ariaLabel,
1855
2534
  ...rest,
1856
2535
  children: [
1857
- caption2 && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("caption", { id: captionId, className: caption, children: caption2 }),
2536
+ caption2 && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("caption", { id: captionId, className: caption, children: caption2 }),
1858
2537
  children
1859
2538
  ]
1860
2539
  }
@@ -1862,31 +2541,31 @@ var Table = /* @__PURE__ */ (0, import_react27.forwardRef)(function Table2({
1862
2541
  }
1863
2542
  ) });
1864
2543
  });
1865
- var TableHeader = /* @__PURE__ */ (0, import_react27.forwardRef)(
2544
+ var TableHeader = /* @__PURE__ */ (0, import_react34.forwardRef)(
1866
2545
  function TableHeader2({ className, ...rest }, ref) {
1867
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(TableSectionContext.Provider, { value: "header", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("thead", { ref, className: cx(header8, className), ...rest }) });
2546
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(TableSectionContext.Provider, { value: "header", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("thead", { ref, className: cx(header8, className), ...rest }) });
1868
2547
  }
1869
2548
  );
1870
- var TableBody = /* @__PURE__ */ (0, import_react27.forwardRef)(
2549
+ var TableBody = /* @__PURE__ */ (0, import_react34.forwardRef)(
1871
2550
  function TableBody2({ className, ...rest }, ref) {
1872
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(TableSectionContext.Provider, { value: "body", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("tbody", { ref, className: cx(body4, className), ...rest }) });
2551
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(TableSectionContext.Provider, { value: "body", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("tbody", { ref, className: cx(body4, className), ...rest }) });
1873
2552
  }
1874
2553
  );
1875
- var TableFooter = /* @__PURE__ */ (0, import_react27.forwardRef)(
2554
+ var TableFooter = /* @__PURE__ */ (0, import_react34.forwardRef)(
1876
2555
  function TableFooter2({ className, ...rest }, ref) {
1877
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(TableSectionContext.Provider, { value: "footer", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("tfoot", { ref, className: cx(footer4, className), ...rest }) });
2556
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(TableSectionContext.Provider, { value: "footer", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("tfoot", { ref, className: cx(footer4, className), ...rest }) });
1878
2557
  }
1879
2558
  );
1880
- var TableRow = /* @__PURE__ */ (0, import_react27.forwardRef)(function TableRow2({ selected, className, ...rest }, ref) {
1881
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("tr", { ref, className: cx(row, className), "data-state": selected ? "selected" : void 0, ...rest });
2559
+ var TableRow = /* @__PURE__ */ (0, import_react34.forwardRef)(function TableRow2({ selected, className, ...rest }, ref) {
2560
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("tr", { ref, className: cx(row3, className), "data-state": selected ? "selected" : void 0, ...rest });
1882
2561
  });
1883
- var TableHead = /* @__PURE__ */ (0, import_react27.forwardRef)(function TableHead2({ align, sortDirection, onSort, scope, className, children, ...rest }, ref) {
1884
- const size = (0, import_react27.useContext)(TableSizeContext);
1885
- const section = (0, import_react27.useContext)(TableSectionContext);
2562
+ var TableHead = /* @__PURE__ */ (0, import_react34.forwardRef)(function TableHead2({ align, sortDirection, onSort, scope, className, children, ...rest }, ref) {
2563
+ const size = (0, import_react34.useContext)(TableSizeContext);
2564
+ const section = (0, import_react34.useContext)(TableSectionContext);
1886
2565
  const sortable = onSort !== void 0;
1887
2566
  const direction = sortDirection ?? "none";
1888
- const SortIcon = direction === "descending" ? import_icons13.ArrowDownIcon : import_icons13.ArrowUpIcon;
1889
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2567
+ const SortIcon = direction === "descending" ? import_icons14.ArrowDownIcon : import_icons14.ArrowUpIcon;
2568
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
1890
2569
  "th",
1891
2570
  {
1892
2571
  ref,
@@ -1898,17 +2577,17 @@ var TableHead = /* @__PURE__ */ (0, import_react27.forwardRef)(function TableHea
1898
2577
  className
1899
2578
  ),
1900
2579
  ...rest,
1901
- children: sortable ? /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("button", { type: "button", className: sortButton, onClick: onSort, children: [
2580
+ children: sortable ? /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("button", { type: "button", className: sortButton, onClick: onSort, children: [
1902
2581
  children,
1903
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(SortIcon, { size: 14, className: sortIcon, "data-active": direction !== "none", "aria-hidden": true })
2582
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(SortIcon, { size: 14, className: sortIcon, "data-active": direction !== "none", "aria-hidden": true })
1904
2583
  ] }) : children
1905
2584
  }
1906
2585
  );
1907
2586
  });
1908
- var TableCell = /* @__PURE__ */ (0, import_react27.forwardRef)(function TableCell2({ align, className, ...rest }, ref) {
1909
- const size = (0, import_react27.useContext)(TableSizeContext);
1910
- const section = (0, import_react27.useContext)(TableSectionContext);
1911
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2587
+ var TableCell = /* @__PURE__ */ (0, import_react34.forwardRef)(function TableCell2({ align, className, ...rest }, ref) {
2588
+ const size = (0, import_react34.useContext)(TableSizeContext);
2589
+ const section = (0, import_react34.useContext)(TableSectionContext);
2590
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
1912
2591
  "td",
1913
2592
  {
1914
2593
  ref,
@@ -1920,35 +2599,35 @@ var TableCell = /* @__PURE__ */ (0, import_react27.forwardRef)(function TableCel
1920
2599
 
1921
2600
  // src/components/Tabs/Tabs.tsx
1922
2601
  var RadixTabs = __toESM(require("@radix-ui/react-tabs"), 1);
1923
- var import_react28 = require("react");
2602
+ var import_react35 = require("react");
1924
2603
 
1925
2604
  // src/components/Tabs/Tabs.css.ts
1926
2605
  var import_createRuntimeFn22 = require("@vanilla-extract/recipes/createRuntimeFn");
1927
- var content9 = "fvhbtda";
1928
- var list3 = /* @__PURE__ */ (0, import_createRuntimeFn22.createRuntimeFn)({ defaultClassName: "fvhbtd0", variantClassNames: { variant: { line: "fvhbtd1", soft: "fvhbtd2" } }, defaultVariants: { variant: "line" }, compoundVariants: [] });
2606
+ var content10 = "fvhbtda";
2607
+ var list4 = /* @__PURE__ */ (0, import_createRuntimeFn22.createRuntimeFn)({ defaultClassName: "fvhbtd0", variantClassNames: { variant: { line: "fvhbtd1", soft: "fvhbtd2" } }, defaultVariants: { variant: "line" }, compoundVariants: [] });
1929
2608
  var trigger3 = /* @__PURE__ */ (0, import_createRuntimeFn22.createRuntimeFn)({ defaultClassName: "fvhbtd3", variantClassNames: { variant: { line: "fvhbtd4", soft: "fvhbtd5" }, size: { sm: "fvhbtd6", md: "fvhbtd7" } }, defaultVariants: { variant: "line", size: "md" }, compoundVariants: [[{ variant: "soft", size: "sm" }, "fvhbtd8"], [{ variant: "soft", size: "md" }, "fvhbtd9"]] });
1930
2609
 
1931
2610
  // src/components/Tabs/Tabs.tsx
1932
- var import_jsx_runtime30 = require("react/jsx-runtime");
1933
- var TabsStyleContext = /* @__PURE__ */ (0, import_react28.createContext)({ variant: "line", size: "md" });
1934
- var Tabs = /* @__PURE__ */ (0, import_react28.forwardRef)(function Tabs2({ variant = "line", size = "md", ...props }, ref) {
2611
+ var import_jsx_runtime35 = require("react/jsx-runtime");
2612
+ var TabsStyleContext = /* @__PURE__ */ (0, import_react35.createContext)({ variant: "line", size: "md" });
2613
+ var Tabs = /* @__PURE__ */ (0, import_react35.forwardRef)(function Tabs2({ variant = "line", size = "md", ...props }, ref) {
1935
2614
  const controlled = "value" in props ? { value: props.value ?? "" } : {};
1936
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(TabsStyleContext.Provider, { value: { variant, size }, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(RadixTabs.Root, { ref, ...props, ...controlled }) });
2615
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(TabsStyleContext.Provider, { value: { variant, size }, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(RadixTabs.Root, { ref, ...props, ...controlled }) });
1937
2616
  });
1938
- var TabsList = /* @__PURE__ */ (0, import_react28.forwardRef)(function TabsList2({ className, ...rest }, ref) {
1939
- const { variant } = (0, import_react28.useContext)(TabsStyleContext);
1940
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(RadixTabs.List, { ref, className: cx(list3({ variant }), className), ...rest });
2617
+ var TabsList = /* @__PURE__ */ (0, import_react35.forwardRef)(function TabsList2({ className, ...rest }, ref) {
2618
+ const { variant } = (0, import_react35.useContext)(TabsStyleContext);
2619
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(RadixTabs.List, { ref, className: cx(list4({ variant }), className), ...rest });
1941
2620
  });
1942
- var TabsTrigger = /* @__PURE__ */ (0, import_react28.forwardRef)(function TabsTrigger2({ className, ...rest }, ref) {
1943
- const { variant, size } = (0, import_react28.useContext)(TabsStyleContext);
1944
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(RadixTabs.Trigger, { ref, className: cx(trigger3({ variant, size }), className), ...rest });
2621
+ var TabsTrigger = /* @__PURE__ */ (0, import_react35.forwardRef)(function TabsTrigger2({ className, ...rest }, ref) {
2622
+ const { variant, size } = (0, import_react35.useContext)(TabsStyleContext);
2623
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(RadixTabs.Trigger, { ref, className: cx(trigger3({ variant, size }), className), ...rest });
1945
2624
  });
1946
- var TabsContent = /* @__PURE__ */ (0, import_react28.forwardRef)(function TabsContent2({ className, ...rest }, ref) {
1947
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(RadixTabs.Content, { ref, className: cx(content9, className), ...rest });
2625
+ var TabsContent = /* @__PURE__ */ (0, import_react35.forwardRef)(function TabsContent2({ className, ...rest }, ref) {
2626
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(RadixTabs.Content, { ref, className: cx(content10, className), ...rest });
1948
2627
  });
1949
2628
 
1950
2629
  // src/components/Textarea/Textarea.tsx
1951
- var import_react29 = require("react");
2630
+ var import_react36 = require("react");
1952
2631
 
1953
2632
  // src/components/Textarea/Textarea.css.ts
1954
2633
  var import_createRuntimeFn23 = require("@vanilla-extract/recipes/createRuntimeFn");
@@ -1959,9 +2638,9 @@ var footer5 = "_1koawa8";
1959
2638
  var textarea = /* @__PURE__ */ (0, import_createRuntimeFn23.createRuntimeFn)({ defaultClassName: "_1koawa0", variantClassNames: { size: { sm: "_1koawa1", md: "_1koawa2", lg: "_1koawa3" }, resize: { none: "_1koawa4", vertical: "_1koawa5", both: "_1koawa6" } }, defaultVariants: { size: "md", resize: "vertical" }, compoundVariants: [] });
1960
2639
 
1961
2640
  // src/components/Textarea/Textarea.tsx
1962
- var import_jsx_runtime31 = require("react/jsx-runtime");
1963
- var useIsomorphicLayoutEffect = typeof window !== "undefined" ? import_react29.useLayoutEffect : import_react29.useEffect;
1964
- var Textarea = /* @__PURE__ */ (0, import_react29.forwardRef)(function Textarea2({
2641
+ var import_jsx_runtime36 = require("react/jsx-runtime");
2642
+ var useIsomorphicLayoutEffect = typeof window !== "undefined" ? import_react36.useLayoutEffect : import_react36.useEffect;
2643
+ var Textarea = /* @__PURE__ */ (0, import_react36.forwardRef)(function Textarea2({
1965
2644
  label: label6,
1966
2645
  helperText: helperText3,
1967
2646
  error,
@@ -1982,13 +2661,13 @@ var Textarea = /* @__PURE__ */ (0, import_react29.forwardRef)(function Textarea2
1982
2661
  "aria-describedby": ariaDescribedBy,
1983
2662
  ...rest
1984
2663
  }, ref) {
1985
- const generatedId = (0, import_react29.useId)();
2664
+ const generatedId = (0, import_react36.useId)();
1986
2665
  const textareaId = id ?? generatedId;
1987
2666
  const helperId = helperText3 ? `${textareaId}-helper` : void 0;
1988
- const innerRef = (0, import_react29.useRef)(null);
1989
- const [uncontrolledLength, setUncontrolledLength] = (0, import_react29.useState)(() => String(defaultValue ?? "").length);
2667
+ const innerRef = (0, import_react36.useRef)(null);
2668
+ const [uncontrolledLength, setUncontrolledLength] = (0, import_react36.useState)(() => String(defaultValue ?? "").length);
1990
2669
  const length = value4 !== void 0 ? String(value4).length : uncontrolledLength;
1991
- const fitHeight = (0, import_react29.useCallback)(() => {
2670
+ const fitHeight = (0, import_react36.useCallback)(() => {
1992
2671
  const el = innerRef.current;
1993
2672
  if (!autoResize || !el) return;
1994
2673
  el.style.height = "auto";
@@ -2001,12 +2680,12 @@ var Textarea = /* @__PURE__ */ (0, import_react29.forwardRef)(function Textarea2
2001
2680
  fitHeight();
2002
2681
  onChange?.(event);
2003
2682
  };
2004
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
2005
- label6 && /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("label", { htmlFor: textareaId, className: label, children: [
2683
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: cx(field, fullWidth && fieldFullWidth), children: [
2684
+ label6 && /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("label", { htmlFor: textareaId, className: label, children: [
2006
2685
  label6,
2007
- required && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { className: requiredMark, "aria-hidden": true, children: "*" })
2686
+ required && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: requiredMark, "aria-hidden": true, children: "*" })
2008
2687
  ] }),
2009
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2688
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
2010
2689
  "textarea",
2011
2690
  {
2012
2691
  ref: mergeRefs(innerRef, ref),
@@ -2028,17 +2707,17 @@ var Textarea = /* @__PURE__ */ (0, import_react29.forwardRef)(function Textarea2
2028
2707
  ...rest
2029
2708
  }
2030
2709
  ),
2031
- (helperText3 || showCount) && /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: footer5, children: [
2032
- helperText3 && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("p", { id: helperId, className: helperText({ error }), children: helperText3 }),
2033
- showCount && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { className: cx(count, maxLength !== void 0 && length >= maxLength && countOver), children: maxLength !== void 0 ? `${length}/${maxLength}` : length })
2710
+ (helperText3 || showCount) && /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: footer5, children: [
2711
+ helperText3 && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("p", { id: helperId, className: helperText({ error }), children: helperText3 }),
2712
+ showCount && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: cx(count, maxLength !== void 0 && length >= maxLength && countOver), children: maxLength !== void 0 ? `${length}/${maxLength}` : length })
2034
2713
  ] })
2035
2714
  ] });
2036
2715
  });
2037
2716
 
2038
2717
  // src/components/Toast/Toast.tsx
2039
2718
  var RadixToast = __toESM(require("@radix-ui/react-toast"), 1);
2040
- var import_react30 = require("react");
2041
- var import_icons14 = require("@bestow-ui/icons");
2719
+ var import_react37 = require("react");
2720
+ var import_icons15 = require("@bestow-ui/icons");
2042
2721
 
2043
2722
  // src/components/Toast/Toast.css.ts
2044
2723
  var import_createRuntimeFn24 = require("@vanilla-extract/recipes/createRuntimeFn");
@@ -2050,27 +2729,27 @@ var toast = /* @__PURE__ */ (0, import_createRuntimeFn24.createRuntimeFn)({ defa
2050
2729
  var viewport2 = "_1g11zvx0";
2051
2730
 
2052
2731
  // src/components/Toast/Toast.tsx
2053
- var import_jsx_runtime32 = require("react/jsx-runtime");
2732
+ var import_jsx_runtime37 = require("react/jsx-runtime");
2054
2733
  var REMOVE_DELAY = 500;
2055
- var ToastContext = /* @__PURE__ */ (0, import_react30.createContext)(null);
2734
+ var ToastContext = /* @__PURE__ */ (0, import_react37.createContext)(null);
2056
2735
  function ToastProvider({ children, duration = 5e3, label: label6 = "\uC54C\uB9BC" }) {
2057
- const [toasts, setToasts] = (0, import_react30.useState)([]);
2058
- const nextId = (0, import_react30.useRef)(0);
2736
+ const [toasts, setToasts] = (0, import_react37.useState)([]);
2737
+ const nextId = (0, import_react37.useRef)(0);
2059
2738
  const portal2 = usePortalProps();
2060
- const toast2 = (0, import_react30.useCallback)((options) => {
2739
+ const toast2 = (0, import_react37.useCallback)((options) => {
2061
2740
  const id = nextId.current++;
2062
2741
  setToasts((prev) => [...prev, { ...options, id, open: true }]);
2063
2742
  return id;
2064
2743
  }, []);
2065
- const dismiss = (0, import_react30.useCallback)((id) => {
2744
+ const dismiss = (0, import_react37.useCallback)((id) => {
2066
2745
  const isTarget = (t) => id === void 0 || t.id === id;
2067
2746
  setToasts((prev) => prev.map((t) => isTarget(t) ? { ...t, open: false } : t));
2068
2747
  setTimeout(() => setToasts((prev) => prev.filter((t) => t.open || !isTarget(t))), REMOVE_DELAY);
2069
2748
  }, []);
2070
- const value4 = (0, import_react30.useMemo)(() => ({ toast: toast2, dismiss }), [toast2, dismiss]);
2071
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(ToastContext.Provider, { value: value4, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(RadixToast.Provider, { duration, label: label6, swipeDirection: "right", children: [
2749
+ const value4 = (0, import_react37.useMemo)(() => ({ toast: toast2, dismiss }), [toast2, dismiss]);
2750
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(ToastContext.Provider, { value: value4, children: /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(RadixToast.Provider, { duration, label: label6, swipeDirection: "right", children: [
2072
2751
  children,
2073
- toasts.map(({ id, open, title: title6, description: description6, variant, duration: itemDuration, action: action3 }) => /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
2752
+ toasts.map(({ id, open, title: title6, description: description6, variant, duration: itemDuration, action: action3 }) => /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
2074
2753
  RadixToast.Root,
2075
2754
  {
2076
2755
  open,
@@ -2080,19 +2759,19 @@ function ToastProvider({ children, duration = 5e3, label: label6 = "\uC54C\uB9BC
2080
2759
  },
2081
2760
  className: toast({ variant }),
2082
2761
  children: [
2083
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(RadixToast.Title, { className: title5, children: title6 }),
2084
- description6 && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(RadixToast.Description, { className: description5, children: description6 }),
2085
- action3 && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(RadixToast.Action, { asChild: true, altText: action3.altText ?? action3.label, className: action2, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Button, { size: "sm", variant: "soft", color: "neutral", onClick: action3.onClick, children: action3.label }) }),
2086
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(RadixToast.Close, { className: close, "aria-label": "\uB2EB\uAE30", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_icons14.XIcon, { size: 16 }) })
2762
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(RadixToast.Title, { className: title5, children: title6 }),
2763
+ description6 && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(RadixToast.Description, { className: description5, children: description6 }),
2764
+ action3 && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(RadixToast.Action, { asChild: true, altText: action3.altText ?? action3.label, className: action2, children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Button, { size: "sm", variant: "soft", color: "neutral", onClick: action3.onClick, children: action3.label }) }),
2765
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(RadixToast.Close, { className: close, "aria-label": "\uB2EB\uAE30", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_icons15.XIcon, { size: 16 }) })
2087
2766
  ]
2088
2767
  },
2089
2768
  id
2090
2769
  )),
2091
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(RadixToast.Viewport, { className: cx(portal2.className, viewport2), style: portal2.style })
2770
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(RadixToast.Viewport, { className: cx(portal2.className, viewport2), style: portal2.style })
2092
2771
  ] }) });
2093
2772
  }
2094
2773
  function useToast() {
2095
- const context = (0, import_react30.useContext)(ToastContext);
2774
+ const context = (0, import_react37.useContext)(ToastContext);
2096
2775
  if (!context) throw new Error("useToast \uB294 ToastProvider \uC548\uC5D0\uC11C \uC0AC\uC6A9\uD574\uC57C \uD569\uB2C8\uB2E4.");
2097
2776
  return context;
2098
2777
  }
@@ -2102,12 +2781,12 @@ var RadixTooltip = __toESM(require("@radix-ui/react-tooltip"), 1);
2102
2781
 
2103
2782
  // src/components/Tooltip/Tooltip.css.ts
2104
2783
  var arrow2 = "z7rufs1";
2105
- var content10 = "z7rufs0";
2784
+ var content11 = "z7rufs0";
2106
2785
 
2107
2786
  // src/components/Tooltip/Tooltip.tsx
2108
- var import_jsx_runtime33 = require("react/jsx-runtime");
2787
+ var import_jsx_runtime38 = require("react/jsx-runtime");
2109
2788
  function Tooltip({
2110
- content: content11,
2789
+ content: content12,
2111
2790
  children,
2112
2791
  side = "top",
2113
2792
  align = "center",
@@ -2119,21 +2798,21 @@ function Tooltip({
2119
2798
  className
2120
2799
  }) {
2121
2800
  const portal2 = usePortalProps();
2122
- if (disabled || content11 == null || content11 === "") return children;
2123
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(RadixTooltip.Provider, { delayDuration: delay, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(RadixTooltip.Root, { open, defaultOpen, onOpenChange, children: [
2124
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(RadixTooltip.Trigger, { asChild: true, children }),
2125
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(RadixTooltip.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
2801
+ if (disabled || content12 == null || content12 === "") return children;
2802
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(RadixTooltip.Provider, { delayDuration: delay, children: /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(RadixTooltip.Root, { open, defaultOpen, onOpenChange, children: [
2803
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(RadixTooltip.Trigger, { asChild: true, children }),
2804
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(RadixTooltip.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
2126
2805
  RadixTooltip.Content,
2127
2806
  {
2128
2807
  side,
2129
2808
  align,
2130
2809
  sideOffset: 6,
2131
2810
  collisionPadding: 8,
2132
- className: cx(portal2.className, content10, className),
2811
+ className: cx(portal2.className, content11, className),
2133
2812
  style: portal2.style,
2134
2813
  children: [
2135
- content11,
2136
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(RadixTooltip.Arrow, { className: arrow2, width: 10, height: 5 })
2814
+ content12,
2815
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(RadixTooltip.Arrow, { className: arrow2, width: 10, height: 5 })
2137
2816
  ]
2138
2817
  }
2139
2818
  ) })
@@ -2141,14 +2820,14 @@ function Tooltip({
2141
2820
  }
2142
2821
 
2143
2822
  // src/components/Typography/Typography.tsx
2144
- var import_react31 = require("react");
2823
+ var import_react38 = require("react");
2145
2824
 
2146
2825
  // src/components/Typography/Typography.css.ts
2147
2826
  var import_createRuntimeFn25 = require("@vanilla-extract/recipes/createRuntimeFn");
2148
2827
  var typography = /* @__PURE__ */ (0, import_createRuntimeFn25.createRuntimeFn)({ defaultClassName: "kiolio0", variantClassNames: { variant: { display: "kiolio1", h1: "kiolio2", h2: "kiolio3", h3: "kiolio4", h4: "kiolio5", "body-lg": "kiolio6", body: "kiolio7", "body-sm": "kiolio8", caption: "kiolio9" }, color: { "default": "kiolioa", muted: "kioliob", subtle: "kiolioc", primary: "kioliod", danger: "kiolioe", success: "kioliof", warning: "kioliog", inherit: "kiolioh" }, weight: { regular: "kiolioi", medium: "kiolioj", semibold: "kioliok", bold: "kioliol" }, align: { start: "kioliom", center: "kiolion", end: "kiolioo" }, truncate: { true: "kioliop" } }, defaultVariants: { variant: "body", color: "default" }, compoundVariants: [] });
2149
2828
 
2150
2829
  // src/components/Typography/Typography.tsx
2151
- var import_jsx_runtime34 = require("react/jsx-runtime");
2830
+ var import_jsx_runtime39 = require("react/jsx-runtime");
2152
2831
  var defaultElement = {
2153
2832
  display: "h1",
2154
2833
  h1: "h1",
@@ -2160,9 +2839,9 @@ var defaultElement = {
2160
2839
  "body-sm": "p",
2161
2840
  caption: "span"
2162
2841
  };
2163
- var Typography = /* @__PURE__ */ (0, import_react31.forwardRef)(function Typography2({ variant = "body", as, color, weight, align, truncate, className, ...rest }, ref) {
2842
+ var Typography = /* @__PURE__ */ (0, import_react38.forwardRef)(function Typography2({ variant = "body", as, color, weight, align, truncate, className, ...rest }, ref) {
2164
2843
  const Component = as ?? defaultElement[variant];
2165
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2844
+ return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
2166
2845
  Component,
2167
2846
  {
2168
2847
  ref,
@@ -2171,14 +2850,158 @@ var Typography = /* @__PURE__ */ (0, import_react31.forwardRef)(function Typogra
2171
2850
  }
2172
2851
  );
2173
2852
  });
2853
+
2854
+ // src/components/VerificationCodeInput/VerificationCodeInput.tsx
2855
+ var import_react39 = require("react");
2856
+
2857
+ // src/components/VerificationCodeInput/VerificationCodeInput.css.ts
2858
+ var input4 = "ea01812";
2859
+ var row4 = "ea01810";
2860
+ var slot = "ea01813";
2861
+ var slots = "ea01811";
2862
+ var timer = "ea01814";
2863
+
2864
+ // src/components/VerificationCodeInput/VerificationCodeInput.tsx
2865
+ var import_jsx_runtime40 = require("react/jsx-runtime");
2866
+ var formatTime = (seconds) => `${String(Math.floor(seconds / 60)).padStart(2, "0")}:${String(seconds % 60).padStart(2, "0")}`;
2867
+ var VerificationCodeInput = /* @__PURE__ */ (0, import_react39.forwardRef)(
2868
+ function VerificationCodeInput2(props, ref) {
2869
+ const {
2870
+ length = 6,
2871
+ value: value4,
2872
+ defaultValue,
2873
+ onValueChange,
2874
+ onComplete,
2875
+ type = "numeric",
2876
+ label: label6 = "\uC778\uC99D\uBC88\uD638",
2877
+ helperText: helperText3,
2878
+ error,
2879
+ disabled,
2880
+ autoFocus,
2881
+ expiresIn,
2882
+ onExpire,
2883
+ onResend,
2884
+ resendText = "\uC7AC\uC804\uC1A1",
2885
+ expiredText = "\uC778\uC99D \uC2DC\uAC04\uC774 \uC9C0\uB0AC\uC5B4\uC694. \uC7AC\uC804\uC1A1\uD574 \uC8FC\uC138\uC694.",
2886
+ name,
2887
+ id,
2888
+ className
2889
+ } = props;
2890
+ const generatedId = (0, import_react39.useId)();
2891
+ const inputId = id ?? generatedId;
2892
+ const helperId = `${inputId}-helper`;
2893
+ const statusId = `${inputId}-status`;
2894
+ const inputRef = (0, import_react39.useRef)(null);
2895
+ const isControlled = "value" in props;
2896
+ const [innerValue, setInnerValue] = (0, import_react39.useState)(defaultValue ?? "");
2897
+ const code = (isControlled ? value4 ?? "" : innerValue).slice(0, length);
2898
+ const [focused, setFocused] = (0, import_react39.useState)(false);
2899
+ const [endAt, setEndAt] = (0, import_react39.useState)(() => expiresIn ? Date.now() + expiresIn * 1e3 : null);
2900
+ const [remaining, setRemaining] = (0, import_react39.useState)(expiresIn ?? 0);
2901
+ const expired = expiresIn !== void 0 && remaining <= 0;
2902
+ const onExpireRef = (0, import_react39.useRef)(onExpire);
2903
+ (0, import_react39.useEffect)(() => {
2904
+ onExpireRef.current = onExpire;
2905
+ });
2906
+ (0, import_react39.useEffect)(() => {
2907
+ if (endAt === null) return;
2908
+ const tick = () => {
2909
+ const left = Math.max(0, Math.ceil((endAt - Date.now()) / 1e3));
2910
+ setRemaining(left);
2911
+ if (left === 0) {
2912
+ clearInterval(timer2);
2913
+ onExpireRef.current?.();
2914
+ }
2915
+ };
2916
+ const timer2 = setInterval(tick, 250);
2917
+ tick();
2918
+ return () => clearInterval(timer2);
2919
+ }, [endAt]);
2920
+ const setCode = (next) => {
2921
+ if (!isControlled) setInnerValue(next);
2922
+ onValueChange?.(next);
2923
+ if (next.length === length && code.length !== length) onComplete?.(next);
2924
+ };
2925
+ const handleChange = (event) => {
2926
+ const raw = event.target.value;
2927
+ const cleaned = (type === "numeric" ? raw.replace(/\D/g, "") : raw.replace(/[^0-9a-z]/gi, "").toUpperCase()).slice(0, length);
2928
+ setCode(cleaned);
2929
+ };
2930
+ const resend = () => {
2931
+ onResend?.();
2932
+ setCode("");
2933
+ if (expiresIn) {
2934
+ setEndAt(Date.now() + expiresIn * 1e3);
2935
+ setRemaining(expiresIn);
2936
+ }
2937
+ inputRef.current?.focus();
2938
+ };
2939
+ const description6 = helperText3 ?? `${length}\uC790\uB9AC ${type === "numeric" ? "\uC22B\uC790" : "\uBB38\uC790"}\uB97C \uC785\uB825\uD558\uC138\uC694.`;
2940
+ const activeIndex = Math.min(code.length, length - 1);
2941
+ return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
2942
+ "div",
2943
+ {
2944
+ className: cx(field, className),
2945
+ "data-invalid": error || void 0,
2946
+ "data-disabled": disabled || void 0,
2947
+ children: [
2948
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("label", { htmlFor: inputId, className: label, children: label6 }),
2949
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: row4, children: [
2950
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: slots, children: [
2951
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
2952
+ "input",
2953
+ {
2954
+ ref: mergeRefs(ref, inputRef),
2955
+ id: inputId,
2956
+ type: "text",
2957
+ inputMode: type === "numeric" ? "numeric" : "text",
2958
+ autoComplete: "one-time-code",
2959
+ pattern: type === "numeric" ? "[0-9]*" : void 0,
2960
+ value: code,
2961
+ onChange: handleChange,
2962
+ onFocus: () => setFocused(true),
2963
+ onBlur: () => setFocused(false),
2964
+ disabled,
2965
+ autoFocus,
2966
+ "aria-invalid": error || void 0,
2967
+ "aria-describedby": `${helperId} ${statusId}`,
2968
+ className: input4
2969
+ }
2970
+ ),
2971
+ Array.from({ length }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
2972
+ "div",
2973
+ {
2974
+ className: slot,
2975
+ "data-active": focused && index === activeIndex ? "" : void 0,
2976
+ "aria-hidden": true,
2977
+ children: code[index] ?? ""
2978
+ },
2979
+ index
2980
+ ))
2981
+ ] }),
2982
+ expiresIn !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { role: "timer", className: timer, children: formatTime(remaining) }),
2983
+ onResend && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(Button, { size: "sm", variant: "outline", color: "neutral", onClick: resend, disabled, children: resendText })
2984
+ ] }),
2985
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("p", { id: helperId, className: helperText({ error }), children: description6 }),
2986
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("p", { id: statusId, role: "status", className: helperText({ error: true }), children: expired ? expiredText : "" }),
2987
+ name && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("input", { type: "hidden", name, value: code })
2988
+ ]
2989
+ }
2990
+ );
2991
+ }
2992
+ );
2174
2993
  // Annotate the CommonJS export names for ESM import in node:
2175
2994
  0 && (module.exports = {
2176
2995
  Accordion,
2177
2996
  AccordionItem,
2997
+ AddressInput,
2998
+ AgreementGroup,
2178
2999
  Alert,
3000
+ AmountInput,
2179
3001
  Avatar,
2180
3002
  Badge,
2181
3003
  Breadcrumb,
3004
+ BusinessNumberInput,
2182
3005
  Button,
2183
3006
  Card,
2184
3007
  CardBody,
@@ -2202,6 +3025,7 @@ var Typography = /* @__PURE__ */ (0, import_react31.forwardRef)(function Typogra
2202
3025
  Modal,
2203
3026
  ModalClose,
2204
3027
  Pagination,
3028
+ PhoneNumberInput,
2205
3029
  Popover,
2206
3030
  PopoverClose,
2207
3031
  Progress,
@@ -2229,9 +3053,17 @@ var Typography = /* @__PURE__ */ (0, import_react31.forwardRef)(function Typogra
2229
3053
  ToastProvider,
2230
3054
  Tooltip,
2231
3055
  Typography,
3056
+ VerificationCodeInput,
3057
+ composeExtraAddress,
2232
3058
  contrastRatio,
2233
3059
  createIntentColors,
2234
3060
  createTheme,
3061
+ formatBusinessNumber,
3062
+ formatKoreanAmount,
3063
+ formatPhoneNumber,
3064
+ hasAllRequiredAgreements,
3065
+ isValidBusinessNumber,
3066
+ kakaoPostcodeProvider,
2235
3067
  themeClass,
2236
3068
  usePortalClassName,
2237
3069
  usePortalProps,